Embed Twitter videos, polls, and more on Discord and Telegram

Overview

FixTweet (formerly pxTwitter)

Embed Twitter videos, polls, translations, & more on Discord and Telegram!

Webpack

Inspired by RobinUniverse's TwitFix, but rewritten in TypeScript as a Cloudflare Worker to scale, while also being packed with even more features.

Add fx before your Twitter link to make it fxtwitter.com (Alternative: pxtwitter.com)

In a hurry? On Discord, send a Twitter link and type s/e/p to make twittpr.com.

Embed Videos

Let's face it — we all have videos of memes and other things from Twitter we want to quickly share with friends. With normal Twitter links, embedding videos is often broken on Discord and impossible on Telegram. But using FixTweet, we embed the raw mp4 file so it's compatible with just about anything supporting video embeds.

On Discord, we'll also automatically embed videos linked from other platforms, such as YouTube, so they can play without having to open a browser.

Embed Polls

If you want to share the results of a Twitter poll, you can do so by just linking the Tweet using FixTweet.

Embed Quote Tweets & Media

Quote tweets and their media can provide important context to a Tweet. So we'll automatically add said context, and even media if there isn't already media embedded in the quote.

Translate Tweets

You can translate a tweet into any other supported language, with the original and translated text displayed as space allows.

Just append a tweet with its 2-letter language code. So for English, add /en at the end.

Direct media links

Want to link directly to a Tweet's media without the embed? You can do easily do that using FixTweet.

Image demonstrating the feature

There's a few supported ways to do this:

  • Add d. or dl. before the domain (so, d.twittpr.com or dl.fxtwitter.com)
  • Add .mp4 to the end of videos or .jpg to the end of images, after the tweet ID
  • Add /dl or /dir between the domain and the username

Examples from above:

  • https://d.twittpr.com/dangeredwolf/status/1548119328498728960
  • https://fxtwitter.com/dangeredwolf/status/1548117889437208581.jpg
  • https://fxtwitter.com/dl/dangeredwolf/status/1548117889437208581

Tweets with multiple images are supported, so you can do something like this and it will pick the correct one:

https://d.twittpr.com/dangeredwolf/status/1547514042146865153/photo/3

Otherwise, it will default to the first image.

Replace t.co shorteners with original link

The default Twitter embeds include t.co link shorteners, which make it difficult to know where the link is heading. We automatically replace t.co links with their original links to make things clearer.

Color-matched embeds on Discord

We use Twitter's color data for either the first image/video of the tweet, or the author's profile picture. It makes the embed's appearance more aesthetic, as well as in line with the content of the Tweet.

Built with privacy in mind

FixTweet doesn't save logs of what tweets you're sending, nor do we have a public record of what tweets are being embedded by FixTweet.

In fact, because our core embedding and API service uses Cloudflare Workers, where FixTweet can only run when you send it a request and its memory doesn't stick around, and it doesn't have a file system or database to access at all. That is how we keep our privacy promise by building it into the architecture. My goal is always to provide a good public service, and FixTweet doesn't make any money.

Note: We use Cloudflare to cache FixTweet responses to make repeat access faster, which have a maximum TTL of 1 hour. Temporary real-time logging in the terminal (specifically wrangler tail) may be used only by the developer while the Worker is being serviced or debugged (to make sure things work as they should), however these logs are only shown in the terminal and are never saved or used for any other purpose.

On a different note, if the person who posted a FixTweet link forgot to strip tracking parameters (like ?s and &t), we strip it upon redirecting to the Tweet as they are only used for Twitter Telemetry and Marketing.


Why use FixTweet?

In many ways, FixTweet has richer embeds and does more. Here's a table comparing some of FixTweet's features compared to Twitter default embeds as well as other embedding services

FixTweet Twitter default vxTwitter (BetterTwitFix) Twxtter (sixFix)
Embed Tweets / Images ✔️ ✔️ ✔️ ✔️
Embed profile pictures on text Tweets ✔️ ✔️ ✔️
Embed Twitter Videos ✔️ ¹ ✔️ ✔️
Embed External Videos (YouTube, etc.) ✔️
Embed Poll results ✔️
Embed Quote Tweets ✔️ ☑️ Without Media ☑️ Without Media
Embed Multiple Images ✔️ Discord Only³ ☑️ With c.vxtwitter.com
Translate Tweets ✔️
Publicly accessible embed index ² N/A ² ✔️
Replace t.co with original links ✔️
Media-based embed colors on Discord ✔️
Redirect to media file (wihout embed) ✔️ ✔️
Strip Twitter tracking info on redirect ✔️ ✔️ ✔️
Show retweet, like, reply counts ✔️ Discord Only³ ☑️ No replies ☑️ No replies
Discord sed replace (s/) friendly ☑️ twittpr.com N/A ✔️
Tweet fetch API for Developers ✔️ N/A ✔️

¹ Discord will attempt to embed Twitter's video player, but it is unreliable

² Neither FixTweet or vxTwitter have a public embed ledger, for privacy reasons. vxTwitter still stores all responses in a database / JSON file controlled by the owner. FixTweet by contrast relies on Cloudflare caching of responses: there is no link store accessible to the owner.

³ Discord uses a custom embed container for Twitter.com to enable multi-image, which is unfortunately not available to other websites.

⁴ On GitHub, BetterTwitFix (vxTwitter) claims to support this feature, however in my testing as of mid-July 2022, this does not seem to work.

⁵ Telegram does not support WebP in embeds. We use WebP for multi-image mosaic for its combination of smaller file size and better text readability which makes it overall a better format than JPG or PNG for this purpose. In the future we will likely add a compatibility mode for Telegram.

⁶ External media requiring web containers, such as YouTube, won't embed in Telegram because Telegram doesn't support it. Plain media will work in Telegram, and it works either way inside Discord.


Why FixTweet is nicer to develop for and deploy

TwitFix and its derivatives have quite a few dependencies you need to rely on. You need to set up a server somewhere, install Python, all its dependencies, then either set up youtube-dl (more resource intensive) or beg Twitter for API access, and optionally set up a database, otherwise it uses the file system to cache.

FixTweet was written from the start as a lightweight, TypeScript-based Cloudflare Worker. Cloudflare Workers are completely free for up to 100,000 requests per day, per account. Cloudflare Workers are fast to set up and your script is distributed in their datacenters around the world for lower latency.

FixTweet does not need a database nor a Twitter API key: It takes a similar approach to youtube-dl where it pretends to be a logged-out Twitter web user, fetching a guest token and making API requests from there. As far as I can tell, this basically means we have "unlimited" read-only access to Twitter's API, including things they don't expose in their public API, useful for polls and other features.

Deploy FixTweet yourself

Clone the repo, install Node.js and run npm install in the repo directory. Copy wrangler.example.toml to wrangler.toml and add your Cloudflare account ID, and change the name of your worker if you need to. Also copy .env.example to .env and change HOST_URL, DIRECT_MEDIA_DOMAINS to your desired domain and whatever else you need to do. Authenticate with Cloudflare with npx wrangler login, then do npx wrangler publish (or npm run publish).

If you have more questions about setting up Cloudflare Workers, check out their Getting Started guide.

Once you're set up with your worker on *.workers.dev, add your worker to your custom domain.


Licensed under the permissive MIT license. Feel free to send a pull request!

Things to tackle in the future

  • More reliable Multi-Image in Telegram
  • Discord bot

Bugs or issues?

Feel free to open an issue, or ping me on Twitter and I'll see what I can do.

Comments
  • Support for multimedia embeds

    Support for multimedia embeds

    CleanShot 2022-10-07 at 09 39 53@2x

    Does not display all media in the post https://twitter.com/punsandbunsgg/status/1578095299460943872

    This feature was added a few days ago, but I just wanted to make the issue so that you had a ticket to work off of

    opened by brookerose1312 7
  • Missing stats for nerds in /version

    Missing stats for nerds in /version

    I saw that the stats are available in the<head> tag but they are missing in the body when the page is rendered.

    Prob just needs a quick copy-paste. https://github.com/dangeredwolf/FixTweet/blob/8d59ff240e7e6905d427779d1047774e884e02d4/src/strings.ts#L119

    opened by sparkyfen 6
  • Multi-image still borked in Telegram

    Multi-image still borked in Telegram

    Certain images, mainly multiple larger ones, just are refused to be embedded by Telegram while Discord is fine. We've temporarily disabled multi-image for Telegram until we can figure out how to fix this properly.

    opened by dangeredwolf 5
  • More suggestions for comparison table

    More suggestions for comparison table

    Hey there, have you considered adding twitter64.com and ayytwitter.com to your comparison table? I'm not sure where the source code is for the former, but the latter is https://github.com/StormyDragon/TwitFix

    opened by Deer-Spangle 4
  • Multi-image direct link gets wrong image

    Multi-image direct link gets wrong image

    Using the https://d.twittpr.com/dangeredwolf/status/1547514042146865153/photo/3-style link (or any other formatting with the same functionality) gives the wrong image. Specifically, it gives the image one further into the post than requested (looping around to the start if you go past the end). The example link gives the fourth image in the post, where a plain Twitter link would give the third image.

    As /photo/0 gives the first image, this seems to be a simple off-by-one error, where Twitter uses 1-indexing for their links and the FixTweet system uses 0-indexing.

    opened by TrueHitoare 3
  • Thousand separators

    Thousand separators

    https://fxtwitter.com/elonmusk/status/1604617643973124097 image

    It's hard to get a sense of how many 16098545 votes is. 16 098 545 votes would be much easier to read. (Same for reply/retweet/like count.)

    enhancement 
    opened by Alcaro 2
  • Update dependency jest-environment-miniflare to ^2.8.1

    Update dependency jest-environment-miniflare to ^2.8.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | jest-environment-miniflare (source) | ^2.7.1 -> ^2.8.1 | age | adoption | passing | confidence |


    Release Notes

    cloudflare/miniflare

    v2.8.1

    Compare Source

    Fixes

    v2.8.0

    Compare Source

    Features

    • ⚡️ Add custom Vitest testing environment. This behaves almost identically to the Jest environment. However, isolated storage must be installed manually in each test file. Call the setupMiniflareIsolatedStorage() global function and use the returned describe function instead of the regular describe/suite functions imported from vitest. See ⚡️ Vitest Environment for more details.
    • 🌐 Populate Workers Sites __STATIC_CONTENT_MANIFEST with site files instead of an empty object. Miniflare will still disable caching of Workers Sites files to ensure the most up-to-date files are always returned. Closes issues #​233, #​326 and cloudflare/wrangler2#​1632. Thanks @​ItalyPaleAle, @​Skye-31, @​CraigglesO, @​Hexstream and @​PolariTOON.
    • Add global getMiniflareWaitUntil() method and ExecutionContext class to the Jest and Vitest testing environments. This can be used to await the results of waitUntiled Promises in tests. See 🤹️ Jest Environment and ⚡️ Vitest Environment for more details. Closes issue #​202, thanks @​jamesarosen and @​CraigglesO for the PR.
    • ⏳ Match Web Streams implementations with Workers runtime, closes issue #​168, thanks @​leviwolfe:
      • Add support for the non-standard IdentityTransformStream class.
      • Add support for the streams_enable_constructors compatibility flag. ReadableStream and WritableStream constructors will throw unless this flag is enabled. ReadableByteStreamController, ReadableStreamBYOBRequest, ReadableStreamDefaultController and WritableStreamDefaultController will only be included in the sandbox if this flag is enabled.
      • Add support for the transformstream_enable_standard_constructor compatibility flag. TransformStream will behave like IdentityTransformStream if this isn't enabled, ignoring custom transformers. If transformstream_enable_standard_constructor is set, but streams_enable_constructors isn't, the TransformStream constructor will throw. TransformStreamDefaultController will only be included in the sandbox if both flags are enabled.
      • Add support for BYOB reads to the non-standard FixedLengthStream class.
    • 🇬🇧 Add support for Queues. Docs coming soon™... 👀
    • 🙉 Allow calls to addEventListener, removeEventListener and dispatchEvent in modules mode. Please note, calling addEventListener with a special event type (e.g. fetch, scheduled) will log a warning prompting you to use the export default syntax. Closes issue #​207, thanks @​Electroid.
    • 🍟 Add experimental and highly-inaccurate request CPU time measurements. These are not representative of deployed worker performance, should only be used for relative comparisons, and may be removed in the future. Enable measurements with the --inaccurate-cpu/[miniflare] inaccurate_cpu/inaccurateCpu option. Closes issue #​161. Thanks @​alexandernst and @​y21.
    • 🦄 Automatically enable watch mode when live_reload = true is set in wrangler.toml.

    Fixes

    • Return Responses with immutable headers from fetches to Durable Objects and service bindings. Closes issue #​346, thanks @​Cherry.
    • Fix CryptoKey#algorithm.name property of NODE-ED25519 keys. Closes issue panva/jose#​446, thanks @​ItalyPaleAle.
    • Disable automatic insertion of Sec-WebSocket-Protocol header. Closes issue #​179, thanks @​aboodman and @​grgbkr.
    • Return Content-Length header is custom Content-Encoding is specified. Closes issue #​313, thanks @​vlovich.
    • Require "automatic" instead of "auto" for the encodeBody option when constructing Requests. Closes issue #​357, thanks @​GregBrimble for the PR.
    • Remove request.cf.cacheTtl/request.cf.cacheTtlByStatus support from the Cache API to match the behaviour of the Workers runtime, which only supports request.cf.cacheKey.

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Update jest monorepo to v29 (major)

    Update jest monorepo to v29 (major)

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @types/jest (source) | ^28.1.8 -> ^29.0.0 | age | adoption | passing | confidence | | jest (source) | ^28.1.3 -> ^29.0.2 | age | adoption | passing | confidence | | ts-jest (source) | ^28.0.8 -> ^29.0.0 | age | adoption | passing | confidence |


    Release Notes

    facebook/jest

    v29.0.2

    Compare Source

    Features
    • [jest-transform] Expose TransformFactory type (#​13184)
    Fixes
    • [babel-plugin-jest-hoist] Support imported jest in mock factory (#​13188)
    • [jest-mock] Align the behavior and return type of generateFromMetadata method (#​13207)
    • [jest-runtime] Support jest.resetModules() with ESM (#​13211)

    v29.0.1

    Compare Source

    Fixes
    • [jest-snapshot] Pass snapshotFormat through when diffing snapshots (#​13181)

    v29.0.0

    Compare Source

    Features
    • [expect] [BREAKING] Differentiate between MatcherContext MatcherUtils and MatcherState types (#​13141)
    • [jest-circus] Add support for test.failing.each (#​13142)
    • [jest-config] [BREAKING] Make snapshotFormat default to escapeString: false and printBasicPrototype: false (#​13036)
    • [jest-config] [BREAKING] Remove undocumented collectCoverageOnlyFrom option (#​13156)
    • [jest-environment-jsdom] [BREAKING] Upgrade to jsdom@20 (#​13037, #​13058)
    • [@jest/globals] Add jest.Mocked, jest.MockedClass, jest.MockedFunction and jest.MockedObject utility types (#​12727)
    • [jest-mock] [BREAKING] Refactor Mocked* utility types. MaybeMockedDeep and MaybeMocked became Mocked and MockedShallow respectively; only deep mocked variants of MockedClass, MockedFunction and MockedObject are exported (#​13123, #​13124)
    • [jest-mock] [BREAKING] Change the default jest.mocked helper’s behavior to deep mocked (#​13125)
    • [jest-snapshot] [BREAKING] Let babel find config when updating inline snapshots (#​13150)
    • [@jest/test-result, @&#8203;jest/types] [BREAKING] Replace Bytes and Milliseconds types with number (#​13155)
    • [jest-worker] Adds workerIdleMemoryLimit option which is used as a check for worker memory leaks >= Node 16.11.0 and recycles child workers as required (#​13056, #​13105, #​13106, #​13107)
    • [pretty-format] [BREAKING] Remove ConvertAnsi plugin in favour of jest-serializer-ansi-escapes (#​13040)
    • [pretty-format] Allow to opt out from sorting object keys with compareKeys: null (#​12443)
    Fixes
    • [jest-config] Fix testing multiple projects with TypeScript config files (#​13099)
    • [@jest/expect-utils] Fix deep equality of ImmutableJS Record (#​13055)
    • [jest-haste-map] Increase the maximum possible file size that jest-haste-map can handle (#​13094)
    • [jest-runtime] Properly support CJS re-exports from dual packages (#​13170)
    • [jest-snapshot] Make prettierPath optional in SnapshotState (#​13149)
    • [jest-snapshot] Fix parsing error from inline snapshot files with JSX (#​12760)
    • [jest-worker] When a process runs out of memory worker exits correctly and doesn't spin indefinitely (#​13054)
    Chore & Maintenance
    • [*] [BREAKING] Drop support for Node v12 and v17 (#​13033)
    • [docs] Fix webpack name (#​13049)
    • [docs] Explicit how to set n for --bail (#​13128)
    • [docs] Update Enzyme URL (#​13166)
    • [jest-leak-detector] Remove support for weak-napi (#​13035)
    • [jest-snapshot] [BREAKING] Require rootDir as argument to SnapshotState (#​13150)
    kulshekhar/ts-jest

    v29.0.0

    Compare Source

    Features
    DEPRECATIONS
    • Define ts-jest config under globals is now deprecated. Please define the config via transformer config instead.
    BREAKING CHANGES
    • Only Node 14, 16 and 18 are supported
    • Jest 29 is required.

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Allows users to request a semantic title for the embed with branding replaced

    Allows users to request a semantic title for the embed with branding replaced

    Changes

    URL parameter sem added (e.g. https://fxtwitter.com/jack/status/20?sem).

    If it's present in URL, the branding for FixTweet will be replaced with BRANDING_NAME_SEMANTIC.

    Additionally, if User Agent is TelegramBot, DOMAIN_SEMANTIC will be appended to the beginning of the twitter:title metatag.

    Purpose of change

    This change aims to make search in messengers better for willing users

    Tests

    According tests were written:

    • Branding semantic name
    • Tweet semantic title for Telegram
    • Tweet semantic title for Telegram only
    opened by Sominemo 2
  • Fix unit test failures

    Fix unit test failures

    352c970 introduced some new environment variables without adding them to the Jest config, which made the unit tests fail due to undefined globals.

    This adds the new globals into the Jest config so the unit tests will now pass.

    opened by plusreed 2
  • JSON API includes escaped html entities

    JSON API includes escaped html entities

    Example https://api.fxtwitter.com/RachelTobac/status/1554444909993607170

    {"code":200,"message":"OK","tweet":{"url":"https://twitter.com/RachelTobac/status/1554444909993607170",
    "id":"1554444909993607170",
    "text":"*ANNOUNCEMENT*\nPresenting: the trailer for our new 🎶MUSICAL🎶 &amp; spoken Security Awareness Videos! After the infosec sea shanty, dozens of teams DM’d me saying \"The song worked! MFA usage up, reporting way up, pls make more songs!\" So we got to work &amp; you all it's finally here!🤖","...":null}}
    

    I would expect the text to not include &amp; but &

    opened by cendyne 2
  • Update typescript-eslint monorepo to ^5.48.0

    Update typescript-eslint monorepo to ^5.48.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @typescript-eslint/eslint-plugin | ^5.47.1 -> ^5.48.0 | age | adoption | passing | confidence | | @typescript-eslint/parser | ^5.47.1 -> ^5.48.0 | age | adoption | passing | confidence |


    Release Notes

    typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

    v5.48.0

    Compare Source

    Features
    • eslint-plugin: specify which method is unbound and added test case (#​6281) (cf3ffdd)

    5.47.1 (2022-12-26)

    Bug Fixes
    • ast-spec: correct some incorrect ast types (#​6257) (0f3f645)
    • eslint-plugin: [member-ordering] correctly invert optionalityOrder (#​6256) (ccd45d4)
    typescript-eslint/typescript-eslint (@​typescript-eslint/parser)

    v5.48.0

    Compare Source

    Note: Version bump only for package @​typescript-eslint/parser

    5.47.1 (2022-12-26)

    Note: Version bump only for package @​typescript-eslint/parser


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency eslint-config-prettier to ^8.6.0

    Update dependency eslint-config-prettier to ^8.6.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | eslint-config-prettier | ^8.5.0 -> ^8.6.0 | age | adoption | passing | confidence |


    Release Notes

    prettier/eslint-config-prettier

    v8.6.0

    Compare Source

    • Added: [vue/multiline-ternary]. Thanks to @​xcatliu!

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency eslint to ^8.31.0

    Update dependency eslint to ^8.31.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | eslint (source) | ^8.30.0 -> ^8.31.0 | age | adoption | passing | confidence |


    Release Notes

    eslint/eslint

    v8.31.0

    Compare Source

    Features

    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#​16693) (Milos Djermanovic)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#​16006) (Morten Kaltoft)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#​16677) (Francesco Trotta)

    Bug Fixes

    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#​16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#​16608) (Milos Djermanovic)

    Documentation

    Chores


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency @types/jest to ^29.2.5

    Update dependency @types/jest to ^29.2.5

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @types/jest (source) | ^29.2.4 -> ^29.2.5 | age | adoption | passing | confidence |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency itty-router to v3

    Update dependency itty-router to v3

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | itty-router (source) | ^2.6.6 -> ^3.0.11 | age | adoption | passing | confidence |


    Release Notes

    kwhitley/itty-router

    v3.0.11

    Compare Source

    v3.0.10

    Compare Source

    v3.0.9

    Compare Source

    v3.0.8

    Compare Source

    v3.0.7

    Compare Source

    v3.0.6

    Compare Source

    v3.0.5

    Compare Source

    v3.0.4

    Compare Source

    v3.0.3

    Compare Source

    v3.0.2

    Compare Source

    v3.0.1

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update dependency toucan-js to v3

    Update dependency toucan-js to v3

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | toucan-js | ^2.7.0 -> ^3.1.0 | age | adoption | passing | confidence |


    Release Notes

    robertcepa/toucan-js

    v3.1.0

    Compare Source

    Minor Changes
    • 5f6cea5: Update Sentry dependencies to 7.28.1

    v3.0.0

    Compare Source

    This is a complete rewrite of toucan-js. The goal of this update is to reuse more components from @​sentry/core, fix long-standing issues with source maps, and provide starters using various bundlers (esbuild, rollup, vite, webpack).

    The good news is that toucan-js now supports pretty much all SDK options and methods provided in official Sentry SDKs for JavaScript that you all are used to and love.

    The bad news is that I may fail to document all breaking changes, because toucan-js now delegates to a lot of code written by someone else. So use this release with caution. :)

    Breaking changes

    • Toucan now uses Envelopes protocol with POST /api/<project_id>/envelope/ endpoint, instead of previously used POST /api/<project_id>/store/ endpoint.

    • Toucan client is no longer the default export. It is now a named export.

      Before:

      import Toucan from 'toucan-js';
      

      After:

      import { Toucan } from 'toucan-js';
      
    • setFingerprint is no longer a top level method. This method is now available on Scope. There are many ways to configure scope:

    Option 1:

    const sentry = new Toucan({
          dsn: env.SENTRY_DSN,
          context,
          request,
          initialScope: {
            fingerprint:  [...]
          }
        });
    

    Option 2:

    const sentry = new Toucan({...});
    
    sentry.configureScope(scope => scope.setFingerprint([...]))
    

    Option 3:

    const sentry = new Toucan({...});
    
    sentry.withScope((scope) => scope.setFingerprint([...]));
    
    • OtherOptions type has been removed. Use Options type instead. Options type isn't a discriminated union anymore and contains all types.

    • event option has been removed. Use context option instead.

    • context.request is no longer used to track request data. If you want to track request data, use top-level request option instead.

    • allowedCookies, allowedHeaders, allowedSearchParams are no longer top level options, but options on new RequestData integration that is exported from the SDK. The Toucan client provides a shortcut for these options as requestDataOptions top level option. To migrate, either move them to requestDataOptions, or pass them to RequestData integration.

      Before:

      import Toucan from 'toucan-js';
      
      const sentry = new Toucan({
        dsn: '...',
        context,
        allowedCookies: ['myCookie'],
        allowedHeaders: ['user-agent'],
        allowedSearchParams: ['utm-source'],
      });
      

      After (option 1):

      import { Toucan } from 'toucan-js';
      
      const sentry = new Toucan({
        dsn: '...',
        context,
        requestDataOptions: {
          allowedCookies: ['myCookie'],
          allowedHeaders: ['user-agent'],
          allowedSearchParams: ['utm-source'],
        },
      });
      

      After (option 2):

      import { Toucan, RequestData } from 'toucan-js';
      
      const sentry = new Toucan({
        dsn: '...',
        context,
        integrations: [new RequestData({{
          allowedCookies: ['myCookie'],
          allowedHeaders: ['user-agent'],
          allowedSearchParams: ['utm-source'],
        }})],
      });
      
    • allowed* options now support boolean values on top of lists and regexes. true allows everything, false denies everything.

    • tracesSampleRate and tracesSampler options no longer affect Sentry events. They only affect transactions. If you want to sample sentry events, use sampleRate option. Refer to https://docs.sentry.io/platforms/javascript/configuration/sampling/ for more information.

    • pkg option has been removed.

    • rewriteFrames option has been removed. To migrate, use RewriteFrames integration from @​sentry/integrations.

      Before

      import Toucan from 'toucan-js';
      
      const sentry = new Toucan({
        dsn: '...',
        context,
        rewriteFrames: {
          root: '/',
        },
      });
      

      After

      import { RewriteFrames } from '@&#8203;sentry/integrations';
      import { Toucan } from 'toucan-js';
      
      const sentry = new Toucan({
        dsn: '...',
        context,
        integrations: [new RewriteFrames({ root: '/' })],
      });
      

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
Owner
dangered wolf
furry wizard from the midwest
dangered wolf
App that allows you to control and watch YouTube videos using hand gestures. Additionally, app that allows you to search for videos, playlists, and channels.

YouTube Alternative Interaction App An app I made with Edward Wu that allows you to search and watch videos from YouTube. Leverages Google's YouTube D

Aaron Lam 2 Dec 28, 2021
🗳Nextjs app to create and share polls

Oh My Poll create and share polls privately or publicly -- its fast and free! Tech Stack Next.js TailwindCSS Prisma PlanetScale External Dependencies

ashish 15 Jan 4, 2023
🗳 nextjs app to create and share polls

Oh My Poll create and share polls privately or publicly -- its fast and free! Tech Stack Next.js TailwindCSS Prisma PlanetScale External Dependencies

ashish 16 Dec 19, 2022
Anonymous Polls for everyone!

Anonpoll Anonpoll allows you to ask and share your opinions anonymously, without being cancelled. Built with Angular and Firebase. See hosted version

null 5 Mar 24, 2022
This widget allows to conduct polls in Matrix rooms.

Matrix Poll This widget allows to conduct polls in Matrix rooms. But unlike MSC3381, it is designed for more complex scenarios, like polls with multip

Nordeck IT + Consulting GmbH 14 Dec 19, 2022
A framewok for building efficient and scalable, cross-platform bots (WhatsApp, Discord, Telegram and more) in a single codebase

project... An over-engineered all-in-one bot framewok for building efficient and scalable bots. Yep that's not a typo u heard it right "scalable bots"

Shubham Badgujar 6 Dec 24, 2022
A cloudflare worker to use the user-agent for ~~rickrolling~~ without a discord embed

nextcord.gay A cloudflare worker to use the user-agent for rickrolling without a discord embed Build npm run build Find the output in ./dist/worker.mj

Oliver Wilkes 10 Oct 4, 2022
Twitter Text Libraries. This code is used at Twitter to tokenize and parse text to meet the expectations for what can be used on the platform.

twitter-text This repository is a collection of libraries and conformance tests to standardize parsing of Tweet text. It synchronizes development, tes

Twitter 2.9k Jan 8, 2023
A Twitter filtered search to only get the live broadcasts hosted on Twitter itself, Built using Vanilla JS and Node.js

Twitter Broadcasts Search A Twitter filtered search to only get the live broadcasts hosted on Twitter itself, Built using Vanilla JS and Node.js. Live

Mohammad Mousad 2 Oct 6, 2022
Fuck Twitter NFTs - Userscript to delete or block all occurances of NFT Users on Twitter

FuckTwitterNFTs Fuck Twitter NFTs - Userscript to delete or block all occurances of NFT Users on Twitter Userscript will by default, attempt to delete

Blumlaut 1 Jan 20, 2022
Twitter bot to find what song is playing in a given uploaded twitter video.

what-song-is-this Twitter bot to find what song is playing in a given uploaded twitter video. How to setup. yarn install How to run. via npm script ya

Akinwande Akinboluwarin 17 Dec 11, 2022
Shortcode to embed proteins and trajectories with Mol*

Molstar (Mol*) Extension for Quarto This extension provides shortcodes for molstar in quarto. Molstar can display macro-molecules such as proteins as

Jannik Buhr 21 Nov 17, 2022
A simple class to embed a panoramic view in a website from six pictures

htmlcubemap A simple class to embed a panoramic view in a website from six pictures. It uses CSS with transforms. Demo here Usage Just call from javas

Javi Agenjo 6 Dec 17, 2022
Embed Luckysheet (spreadsheet) into Logseq.

logseq-plugin-luckysheet 在 Logseq 中嵌入电子表格 Luckysheet。你也可以用它来维护一张 markdown 表格。 Embed Luckysheet (spreadsheet) into Logseq. You can also use it to maint

Seth Yuan 49 Jan 1, 2023
A CLI tool to embed interactive PUML diagrams to your github markdown files.

puml-for-markdown Simple CLI Usage Just run puml-for-markdown in any directory where you have markdown files and it will render links to PlantUML file

Daniel 208 Jan 3, 2023
A custom element that aims to make it easier to embed Spring '83 boards

<spring-board> element A custom element that makes it simple to embed Spring '83 boards! Usage If you are using <spring-board> in a client-side framew

Ryan Murphy 11 Jan 1, 2023
Embed panorama photos on your website with Panorama Viewer

#Panorama Viewer by Pete R. Embed interactive Panorama Pictures on your site with this simple plugin. Created by Pete R., Founder of Travelistly and B

Pete R. 474 Oct 8, 2022