This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/react](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`19.0.6` -> `19.0.7`](https://renovatebot.com/diffs/npm/@types%2freact/19.0.6/19.0.7) | [](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.19.1` -> `8.20.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.19.1/8.20.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.19.1` -> `8.20.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.19.1/8.20.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/) | | [eslint-config-prettier](https://redirect.github.com/prettier/eslint-config-prettier) | [`^9.0.0` -> `^10.0.0`](https://renovatebot.com/diffs/npm/eslint-config-prettier/9.1.0/10.0.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [eslint-plugin-react](https://redirect.github.com/jsx-eslint/eslint-plugin-react) | [`7.37.3` -> `7.37.4`](https://renovatebot.com/diffs/npm/eslint-plugin-react/7.37.3/7.37.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [miniflare](https://redirect.github.com/cloudflare/workers-sdk/tree/main/packages/miniflare#readme) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/miniflare)) | [`3.20241230.1` -> `3.20241230.2`](https://renovatebot.com/diffs/npm/miniflare/3.20241230.1/3.20241230.2) | [](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.49` -> `8.5.1`](https://renovatebot.com/diffs/npm/postcss/8.4.49/8.5.1) | [](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.101.0` -> `3.103.2`](https://renovatebot.com/diffs/npm/wrangler/3.101.0/3.103.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.20.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8200-2025-01-13) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.19.1...v8.20.0) ##### 🚀 Features - **eslint-plugin:** \[consistent-type-assertions] add arrayLiteralTypeAssertions options ([#​10565](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10565)) - **eslint-plugin:** \[no-deprecated] add allow options ([#​10585](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10585)) - **eslint-plugin:** \[no-misused-spread] add new rule ([#​10551](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10551)) ##### 🩹 Fixes - **eslint-plugin:** \[no-unnecessary-condition] don't flag optional chaining for union types with an unconstrained type parameters ([#​10602](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10602)) - **eslint-plugin:** \[no-shadow] ignore ordering of type declarations ([#​10593](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10593)) ##### ❤️ Thank You - Josh Goldberg ✨ - Ronen Amiel - YeonJuan [@​yeonjuan](https://redirect.github.com/yeonjuan) 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.20.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8200-2025-01-13) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.19.1...v8.20.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>prettier/eslint-config-prettier (eslint-config-prettier)</summary> ### [`v10.0.1`](https://redirect.github.com/prettier/eslint-config-prettier/releases/tag/v10.0.1) [Compare Source](https://redirect.github.com/prettier/eslint-config-prettier/compare/v10.0.0...v10.0.1) ### eslint-config-prettier #### 10.0.1 #### What's Changed - chore: migrate to changeset for automatically releasing by [@​JounQin](https://redirect.github.com/JounQin) in [https://github.com/prettier/eslint-config-prettier/pull/278](https://redirect.github.com/prettier/eslint-config-prettier/pull/278) - add support for `@stylistic/eslint-plugin` by [@​abrahamguo](https://redirect.github.com/abrahamguo) in [https://github.com/prettier/eslint-config-prettier/pull/272](https://redirect.github.com/prettier/eslint-config-prettier/pull/272) #### New Contributors - [@​JounQin](https://redirect.github.com/JounQin) made their first contribution in [https://github.com/prettier/eslint-config-prettier/pull/278](https://redirect.github.com/prettier/eslint-config-prettier/pull/278) - [@​abrahamguo](https://redirect.github.com/abrahamguo) made their first contribution in [https://github.com/prettier/eslint-config-prettier/pull/272](https://redirect.github.com/prettier/eslint-config-prettier/pull/272) **Full Changelog**: https://github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.0.1 ### [`v10.0.0`](https://redirect.github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1000) [Compare Source](https://redirect.github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.0.0) ##### Major Changes - [#​272](https://redirect.github.com/prettier/eslint-config-prettier/pull/272) [`5be64be`](5be64bef68) Thanks [@​abrahamguo](https://redirect.github.com/abrahamguo)! - add support for [@​stylistic](https://redirect.github.com/stylistic) formatting rules </details> <details> <summary>jsx-eslint/eslint-plugin-react (eslint-plugin-react)</summary> ### [`v7.37.4`](https://redirect.github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7374---20250112) [Compare Source](https://redirect.github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4) ##### Fixed - \[`no-unknown-property`]: support `onBeforeToggle`, `popoverTarget`, `popoverTargetAction` attributes ([#​3865][] [@​acusti](https://redirect.github.com/acusti)) - \[types] fix types of flat configs ([#​3874][] [@​ljharb](https://redirect.github.com/ljharb)) [7.37.4]: https://redirect.github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4 [#​3874]: https://redirect.github.com/jsx-eslint/eslint-plugin-react/pull/3874 [#​3865]: https://redirect.github.com/jsx-eslint/eslint-plugin-react/pull/3865 </details> <details> <summary>cloudflare/workers-sdk (miniflare)</summary> ### [`v3.20241230.2`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/miniflare/CHANGELOG.md#3202412302) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/miniflare@3.20241230.1...miniflare@3.20241230.2) ##### Patch Changes - [#​7738](https://redirect.github.com/cloudflare/workers-sdk/pull/7738) [`8e9aa40`](8e9aa40a6c) Thanks [@​penalosa](https://redirect.github.com/penalosa)! - Use TEXT bindings for plain text values in Miniflare. This is an internal detail that should have no user facing impact. </details> <details> <summary>postcss/postcss (postcss)</summary> ### [`v8.5.1`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#851) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.0...8.5.1) - Fixed backwards compatibility for complex cases (by [@​romainmenke](https://redirect.github.com/romainmenke)). ### [`v8.5.0`](https://redirect.github.com/postcss/postcss/releases/tag/8.5.0): 8.5 “Duke Alloces” [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.4.49...8.5.0) <img src="https://github.com/user-attachments/assets/6ef654a0-d675-4ba0-a670-e28ef27062f5" align="right" width="200" height="200" alt="President Alloces seal"> PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS. [@​romainmenke](https://redirect.github.com/romainmenke) during [his work](https://redirect.github.com/postcss/postcss/issues/1995) on [Stylelint](https://stylelint.io) added `Input#document` in additional to `Input#css`. ```js root.source.input.document //=> "<p>Hello</p> // <style> // p { // color: green; // } // </style>" root.source.input.css //=> "p { // color: green; // }" ``` #### Thanks to Sponsors This release was possible thanks to our community. If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by: - [**Tidelift**](https://tidelift.com/) with a Spotify-like subscription model supporting all projects from your lock file. - Direct donations at [**GitHub Sponsors**](https://redirect.github.com/sponsors/ai) or [**Open Collective**](https://opencollective.com/postcss#section-contributors). </details> <details> <summary>cloudflare/workers-sdk (wrangler)</summary> ### [`v3.103.2`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#31032) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@3.103.1...wrangler@3.103.2) ##### Patch Changes - [#​7804](https://redirect.github.com/cloudflare/workers-sdk/pull/7804) [`16a9460`](16a9460ea6) Thanks [@​vicb](https://redirect.github.com/vicb)! - fix(wrangler): use require.resolve to resolve unenv path ### [`v3.103.1`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#31031) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@3.103.0...wrangler@3.103.1) ##### Patch Changes - [#​7798](https://redirect.github.com/cloudflare/workers-sdk/pull/7798) [`a1ff045`](a1ff045cfc) Thanks [@​CarmenPopoviciu](https://redirect.github.com/CarmenPopoviciu)! - Reverts [#​7720](https://redirect.github.com/cloudflare/workers-sdk/issues/7720) as it introduced breakage in some of the C3 templates (eg. Nuxt) ### [`v3.103.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#31030) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@3.102.0...wrangler@3.103.0) ##### Minor Changes - [#​5086](https://redirect.github.com/cloudflare/workers-sdk/pull/5086) [`8faf2c0`](8faf2c0741) Thanks [@​dario-piotrowicz](https://redirect.github.com/dario-piotrowicz)! - add `--strict-vars` option to `wrangler types` add a new `--strict-vars` option to `wrangler types` that developers can (by setting the flag to `false`) use to disable the default strict/literal types generation for their variables opting out of strict variables can be useful when developers change often their `vars` values, even more so when multiple environments are involved ### [`v3.102.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#31020) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@3.101.0...wrangler@3.102.0) ##### Minor Changes - [#​7592](https://redirect.github.com/cloudflare/workers-sdk/pull/7592) [`f613276`](f6132761c8) Thanks [@​garrettgu10](https://redirect.github.com/garrettgu10)! - New filter validation logic supporting set and range queries in Vectorize CLI ##### Patch Changes - [#​7750](https://redirect.github.com/cloudflare/workers-sdk/pull/7750) [`df0e5be`](df0e5bef81) Thanks [@​andyjessop](https://redirect.github.com/andyjessop)! - bug: Removes the (local) tag on Vectorize bindings in the console output of `wrangler dev`, and adds-in the same tag for Durable Objects (which are emulated locally in `wrangler dev`). - [#​7732](https://redirect.github.com/cloudflare/workers-sdk/pull/7732) [`d102b60`](d102b60238) Thanks [@​Ankcorn](https://redirect.github.com/Ankcorn)! - fix pages secret bulk copy - [#​7706](https://redirect.github.com/cloudflare/workers-sdk/pull/7706) [`c63f1b0`](c63f1b0790) Thanks [@​penalosa](https://redirect.github.com/penalosa)! - Remove the server-based dev registry in favour of the more stable file-based dev registry. There should be no user-facing impact. - Updated dependencies \[[`8e9aa40`](8e9aa40a6c)]: - miniflare@3.20241230.2 </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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==--> 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.