This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@cloudflare/workers-types](https://redirect.github.com/cloudflare/workerd) | [`4.20241106.0` -> `4.20241112.0`](https://renovatebot.com/diffs/npm/@cloudflare%2fworkers-types/4.20241106.0/4.20241112.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`8.13.0` -> `8.14.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.13.0/8.14.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.13.0` -> `8.14.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.13.0/8.14.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [postcss](https://postcss.org/) ([source](https://redirect.github.com/postcss/postcss)) | [`8.4.48` -> `8.4.49`](https://renovatebot.com/diffs/npm/postcss/8.4.48/8.4.49) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [tailwindcss](https://tailwindcss.com) ([source](https://redirect.github.com/tailwindlabs/tailwindcss)) | [`3.4.14` -> `3.4.15`](https://renovatebot.com/diffs/npm/tailwindcss/3.4.14/3.4.15) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [vite](https://vite.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`5.4.10` -> `5.4.11`](https://renovatebot.com/diffs/npm/vite/5.4.10/5.4.11) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [wrangler](https://redirect.github.com/cloudflare/workers-sdk) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler)) | [`3.86.0` -> `3.87.0`](https://renovatebot.com/diffs/npm/wrangler/3.86.0/3.87.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>cloudflare/workerd (@​cloudflare/workers-types)</summary> ### [`v4.20241112.0`](8bf3af4699...7b28eb5032) [Compare Source](8bf3af4699...7b28eb5032) </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.14.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8140-2024-11-11) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.13.0...v8.14.0) ##### 🚀 Features - **eslint-plugin:** \[await-thenable] report unnecessary `await using` statements ([#​10209](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10209)) - **eslint-plugin:** \[no-confusing-void-expression] add an option to ignore void<->void ([#​10067](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10067)) ##### 🩹 Fixes - **scope-manager:** fix asserted increments not being marked as write references ([#​10271](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10271)) - **eslint-plugin:** \[no-misused-promises] improve report loc for methods ([#​10216](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10216)) - **eslint-plugin:** \[no-unnecessary-condition] improve error message for literal comparisons ([#​10194](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10194)) ##### ❤️ Thank You - Gyumong [@​Gyumong](https://redirect.github.com/Gyumong) - Jan Ochwat [@​janek515](https://redirect.github.com/janek515) - Kirk Waiblinger [@​kirkwaiblinger](https://redirect.github.com/kirkwaiblinger) - Ronen Amiel You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v8.14.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8140-2024-11-11) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.13.0...v8.14.0) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>postcss/postcss (postcss)</summary> ### [`v8.4.49`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8449) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.4.48...8.4.49) - Fixed custom syntax without `source.offset` (by [@​romainmenke](https://redirect.github.com/romainmenke)). </details> <details> <summary>tailwindlabs/tailwindcss (tailwindcss)</summary> ### [`v3.4.15`](https://redirect.github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.15) [Compare Source](https://redirect.github.com/tailwindlabs/tailwindcss/compare/v3.4.14...v3.4.15) - Bump versions for security vulnerabilities ([#​14697](https://redirect.github.com/tailwindlabs/tailwindcss/pull/14697)) - Ensure the TypeScript types for the `boxShadow` theme configuration allows arrays ([#​14856](https://redirect.github.com/tailwindlabs/tailwindcss/pull/14856)) - Set fallback for opacity variables to ensure setting colors with the `selection:*` variant works in Chrome 131 ([#​15003](https://redirect.github.com/tailwindlabs/tailwindcss/pull/15003)) </details> <details> <summary>vitejs/vite (vite)</summary> ### [`v5.4.11`](https://redirect.github.com/vitejs/vite/releases/tag/v5.4.11) [Compare Source](https://redirect.github.com/vitejs/vite/compare/v5.4.10...v5.4.11) Please refer to [CHANGELOG.md](https://redirect.github.com/vitejs/vite/blob/v5.4.11/packages/vite/CHANGELOG.md) for details. </details> <details> <summary>cloudflare/workers-sdk (wrangler)</summary> ### [`v3.87.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#3870) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@3.86.1...wrangler@3.87.0) ##### Minor Changes - [#​7201](https://redirect.github.com/cloudflare/workers-sdk/pull/7201) [`beed72e`](beed72e7f3) Thanks [@​GregBrimble](https://redirect.github.com/GregBrimble)! - feat: Tail Consumers are now supported for Workers with assets. You can now configure `tail_consumers` in conjunction with `assets` in your `wrangler.toml` file. Read more about [Static Assets](https://developers.cloudflare.com/workers/static-assets/) and [Tail Consumers](https://developers.cloudflare.com/workers/observability/logs/tail-workers/) in the documentation. - [#​7212](https://redirect.github.com/cloudflare/workers-sdk/pull/7212) [`837f2f5`](837f2f569b) Thanks [@​jonesphillip](https://redirect.github.com/jonesphillip)! - Added r2 bucket info command to Wrangler. Improved formatting of r2 bucket list output ##### Patch Changes - [#​7210](https://redirect.github.com/cloudflare/workers-sdk/pull/7210) [`c12c0fe`](c12c0fed88) Thanks [@​taylorlee](https://redirect.github.com/taylorlee)! - Avoid an unnecessary GET request during `wrangler deploy`. - [#​7197](https://redirect.github.com/cloudflare/workers-sdk/pull/7197) [`4814455`](4814455717) Thanks [@​michelheusschen](https://redirect.github.com/michelheusschen)! - fix console output for `wrangler d1 migrations create` - [#​6795](https://redirect.github.com/cloudflare/workers-sdk/pull/6795) [`94f07ee`](94f07eec15) Thanks [@​benmccann](https://redirect.github.com/benmccann)! - chore: upgrade chokidar to v4 - [#​7133](https://redirect.github.com/cloudflare/workers-sdk/pull/7133) [`c46e02d`](c46e02dfd7) Thanks [@​gpanders](https://redirect.github.com/gpanders)! - Do not emit escape sequences when stdout is not a TTY ### [`v3.86.1`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#3861) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@3.86.0...wrangler@3.86.1) ##### Patch Changes - [#​7069](https://redirect.github.com/cloudflare/workers-sdk/pull/7069) [`b499b74`](b499b743e2) Thanks [@​penalosa](https://redirect.github.com/penalosa)! - Internal refactor to remove the non `--x-dev-env` flow from `wrangler dev` </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), 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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/astral-sh/ruff). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
playground
In-browser playground for Ruff. Available https://play.ruff.rs/.
Getting started
In order to build the WASM module install wasm-pack.
Next, build the WASM module by running npm run build:wasm (release build) or npm run dev:wasm (debug build) from the ./playground directory.
Finally, install TypeScript dependencies with npm install, and run the development server with npm run dev.
To run the datastore, which is based on Workers KV,
install the Wrangler CLI,
then run npx wrangler dev --local from the ./playground/api directory. Note that the datastore is
only required to generate shareable URLs for code snippets. The development datastore does not
require Cloudflare authentication or login, but in turn only persists data locally.
Architecture
The playground is implemented as a single-page React application powered by Vite, with the editor experience itself powered by Monaco.
The playground stores state in localStorage, but supports persisting code snippets to
a persistent datastore based on Workers KV
and exposed via a Cloudflare Worker.
The playground design is originally based on Tailwind Play, with additional inspiration from the Rome Tools Playground.