diff --git a/.changeset/config.json b/.changeset/config.json
index 927fda69..f6184d33 100644
--- a/.changeset/config.json
+++ b/.changeset/config.json
@@ -10,7 +10,7 @@
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
- "ignore": ["@sample/*"],
+ "ignore": ["@webpack-sample/*", "@rsbuild-sample/*", "@storybook-sample/*"],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true
}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 67146661..d32a45a5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -54,8 +54,8 @@ jobs:
- name: Build packages
run: pnpm build-pkg
- - name: Build sample
- run: pnpm build-sample
+ - name: Build webpack sample
+ run: pnpm build-webpack
- name: Test packages
run: pnpm test
diff --git a/.gitignore b/.gitignore
index 3b7fb980..542e4676 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
node_modules
dist
+storybook-static
.pnpm-debug.log*
.netlify
.turbo
diff --git a/README.md b/README.md
index 93f98388..f0b8d715 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,7 @@ Common configurations for building web apps at [Workleap](https://workleap.com/)
| [@workleap/tsup-configs](packages/tsup-configs/README.md) | [![npm version](https://img.shields.io/npm/v/@workleap/tsup-configs)](https://www.npmjs.com/package/@workleap/tsup-configs) |
| [@workleap/swc-configs](packages/swc-configs/README.md) | [![npm version](https://img.shields.io/npm/v/@workleap/swc-configs)](https://www.npmjs.com/package/@workleap/swc-configs) |
| [@workleap/webpack-configs](packages/webpack-configs/README.md) | [![npm version](https://img.shields.io/npm/v/@workleap/webpack-configs)](https://www.npmjs.com/package/@workleap/webpack-configs) |
+| [@workleap/rsbuild-configs](packages/rsbuild-configs/README.md) | [![npm version](https://img.shields.io/npm/v/@workleap/rsbuild-configs)](https://www.npmjs.com/package/@workleap/rsbuild-configs) |
## Have a question or found an issue?
diff --git a/docs/default.md b/docs/default.md
index 95a14395..bc3297a9 100644
--- a/docs/default.md
+++ b/docs/default.md
@@ -61,12 +61,13 @@ The majority of the shared tooling configurations targets [ESM](https://develope
| --- | --- | --- |
| ![](./static/browserslist.svg){ class="h-5 w-5 mr-2 -mt-1" }[Browserslist](https://browsersl.ist/) | [![npm version](https://img.shields.io/npm/v/@workleap/browserslist-config)](https://www.npmjs.com/package/@workleap/browserslist-config) | [Getting started](browserslist/default.md) |
| ![](./static/eslint.svg){ class="h-5 w-5 mr-2 -mt-1" }[ESLint](https://eslint.org/) | [![npm version](https://img.shields.io/npm/v/@workleap/eslint-plugin)](https://www.npmjs.com/package/@workleap/eslint-plugin) | [Getting started](eslint/default.md) |
-| ![](./static/postcss.svg){ class="h-5 w-5 mr-2 -mt-1" }[PostCSS](https://postcss.org/) | [![npm version](https://img.shields.io/npm/v/@workleap/postcss-configs)](https://www.npmjs.com/package/@workleap/postcss-configs) | [Getting started](postcss/default.md) |
| ![](./static/stylelint.svg){ class="h-5 w-5 mr-2 -mt-1" }[Stylelint](https://stylelint.io/) | [![npm version](https://img.shields.io/npm/v/@workleap/stylelint-configs)](https://www.npmjs.com/package/@workleap/stylelint-configs) | [Getting started](stylelint/default.md) |
+| ![](./static/typescript.svg){ class="h-5 w-5 mr-2 -mt-1" }[Typescript](https://www.typescriptlang.org/) | [![npm version](https://img.shields.io/npm/v/@workleap/typescript-configs)](https://www.npmjs.com/package/@workleap/typescript-configs) | [Getting started](typescript/default.md) |
| ![](./static/swc.svg){ class="h-5 w-5 mr-2 -mt-1" }[SWC](https://swc.rs/) | [![npm version](https://img.shields.io/npm/v/@workleap/swc-configs)](https://www.npmjs.com/package/@workleap/swc-configs) | [Getting started](swc/default.md) |
+| ![](./static/rsbuild.svg){ class="h-5 w-5 mr-2 -mt-1" }[Rsbuild](https://rsbuild.dev/) | [![npm version](https://img.shields.io/npm/v/@workleap/rsbuild-configs)](https://www.npmjs.com/package/@workleap/rsbuild-configs) | [Getting started](rsbuild/default.md) |
| ![](./static/tsup.svg){ class="h-5 w-5 mr-2 -mt-1" }[tsup](https://tsup.egoist.dev/) | [![npm version](https://img.shields.io/npm/v/@workleap/tsup-configs)](https://www.npmjs.com/package/@workleap/tsup-configs) | [Getting started](tsup/default.md) |
-| ![](./static/typescript.svg){ class="h-5 w-5 mr-2 -mt-1" }[Typescript](https://www.typescriptlang.org/) | [![npm version](https://img.shields.io/npm/v/@workleap/typescript-configs)](https://www.npmjs.com/package/@workleap/typescript-configs) | [Getting started](typescript/default.md) |
-| ![](./static/webpack.svg){ class="h-5 w-5 mr-2 -mt-1" }[webpack](https://webpack.js.org/) | [![npm version](https://img.shields.io/npm/v/@workleap/webpack-configs)](https://www.npmjs.com/package/@workleap/webpack-configs) | [Getting started](webpack/default.md) |
+| ![](./static/postcss.svg){ class="h-5 w-5 mr-2 -mt-1" }[PostCSS](https://postcss.org/) [!badge variant="secondary" size="s" text="in maintenance"] | [![npm version](https://img.shields.io/npm/v/@workleap/postcss-configs)](https://www.npmjs.com/package/@workleap/postcss-configs) | [Getting started](postcss/default.md) |
+| ![](./static/webpack.svg){ class="h-5 w-5 mr-2 -mt-1" }[webpack](https://webpack.js.org/) [!badge variant="secondary" size="s" text="in maintenance"] | [![npm version](https://img.shields.io/npm/v/@workleap/webpack-configs)](https://www.npmjs.com/package/@workleap/webpack-configs) | [Getting started](webpack/default.md) |
diff --git a/docs/eslint/setup-monorepo.md b/docs/eslint/setup-monorepo.md
index 304cdf41..21cc3212 100644
--- a/docs/eslint/setup-monorepo.md
+++ b/docs/eslint/setup-monorepo.md
@@ -13,7 +13,7 @@ toc:
This monorepo setup has been tested with [PNPM workspaces](https://pnpm.io/workspaces). You may need a different setup for [NPM workspaces](https://docs.npmjs.com/cli/v7/using-npm/workspaces) or [Yarn workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces/) because by default, those package managers **hoist dependencies** rather than installing them in isolation like PNPM.
!!!
-To lint a monorepo solution (**multiple projects** per repository), [ESLint](https://eslint.org/) must be setuped to lint the files at the root of the solution (the monorepo **workspace**) and the files of every project of the monorepo. Execute the following steps to setup ESLint for a monorepo solution.
+To lint a monorepo solution (**multiple projects** per repository), [ESLint](https://eslint.org/) must be setuped to lint the files at the root of the solution (the monorepo **workspace**) and the files of every project of the monorepo. Execute the following steps to setup ESLint for a monorepo solution :point_down:
## Setup the workspace
diff --git a/docs/eslint/setup-polyrepo.md b/docs/eslint/setup-polyrepo.md
index 90d242d6..e7c2cb73 100644
--- a/docs/eslint/setup-polyrepo.md
+++ b/docs/eslint/setup-polyrepo.md
@@ -9,7 +9,7 @@ toc:
# Setup a polyrepo
-Execute the following steps to setup [ESLint](https://eslint.org/) for a polyrepo solution (**single project** per repository).
+Execute the following steps to setup [ESLint](https://eslint.org/) for a polyrepo solution (**single project** per repository) :point_down:
## Install the packages
diff --git a/docs/postcss/configure-project.md b/docs/postcss/configure-project.md
index bb8b4177..40fe6a1e 100644
--- a/docs/postcss/configure-project.md
+++ b/docs/postcss/configure-project.md
@@ -8,7 +8,11 @@ toc:
# Configure a project
-Execute the following steps to setup [PostCSS](https://postcss.org/) for a single project.
+!!!warning
+`@workleap/postcss-configs` is now in maintenance mode. If you're starting a new project, consider using [@workleap/rsbuild-configs](../rsbuild/default.md) instead of [@workleap/webpack-configs](../webpack/default.md), which eliminates the need for PostCSS.
+!!!
+
+Execute the following steps to setup [PostCSS](https://postcss.org/) for a single project :point_down:
## Install the packages
@@ -158,7 +162,7 @@ export default defineConfig({
## Configure webpack
!!!info
-If your project is using `@workleap/wepack-config`, you don't have to configure `postcss-loader` as the [defineDevConfig](../webpack/configure-dev.md#definedevconfig) and [defineBuildConfig](../webpack/configure-build.md#definebuildconfig) functions already takes care of configuring PostCSS.
+If your project is using `@workleap/wepack-config`, you don't have to configure `postcss-loader` as the [defineDevConfig](../webpack/configure-dev.md#webpackdevjs) and [defineBuildConfig](../webpack/configure-build.md#webpackbuildjs) functions already takes care of configuring PostCSS.
!!!
To integrate with webpack, update your configuration file to include a [postcss-loader](https://www.npmjs.com/package/postcss-loader):
diff --git a/docs/postcss/default.md b/docs/postcss/default.md
index 26f1b3d2..2b87cb33 100644
--- a/docs/postcss/default.md
+++ b/docs/postcss/default.md
@@ -1,5 +1,5 @@
---
-order: 160
+order: 100
icon: /static/postcss.svg
label: PostCSS
expanded: true
@@ -9,6 +9,10 @@ toc:
# PostCSS
+!!!warning
+`@workleap/postcss-configs` is now in maintenance mode. If you're starting a new project, consider using [@workleap/rsbuild-configs](../rsbuild/default.md) instead of [@workleap/webpack-configs](../webpack/default.md), which eliminates the need for PostCSS.
+!!!
+
+
+[Rsbuild](https://lib.rsbuild.dev/index) is a high-performance build tool powered by [Rspack](https://rspack.dev/), a Rust-based port of [webpack](https://webpack.js.org/) designed for efficiency and speed. Those new Rsbuild shared configurations are a modern replacement for previous Workleap's shared [webpack configurations](../webpack//default.md).
+
+## Main features
+
+The shared configurations offered by `@workleap/rsbuild-configs` includes the following features :point_down:
+
+### Language support
+
+- JavaScript
+- TypeScript
+- CSS (with CSS modules and LightningCSS)
+
+### Framework support
+
+- React
+
+### Asset support
+
+- SVG as React components
+- PNG
+- JPEG
+- GIF
+
+### Development features
+
+- Development server
+- Fast Refresh or Hot Module Reload
+- Sourcemap
+
+### Production features
+
+- Minification
+- Output to `/dist`
+
+### Target environment
+
+As per the [Browserlist](../browserslist/default.md) configuration.
+
+## Getting started
+
+To get started, follow the quick start guide to configure Rsbuild for either a [development environment](./configure-dev.md), a [production environment](./configure-build.md) or [storybook](./configure-storybook.md).
+
+If your project is already using `@workleap/webpack-configs`, follow the [migration guide](./migrate-from-webpack.md).
diff --git a/docs/rsbuild/migrate-from-webpack.md b/docs/rsbuild/migrate-from-webpack.md
new file mode 100644
index 00000000..c0aaae92
--- /dev/null
+++ b/docs/rsbuild/migrate-from-webpack.md
@@ -0,0 +1,214 @@
+---
+order: 70
+label: Migrate from Webpack
+meta:
+ title: Migrate from Webpack - Rsbuild
+toc:
+ depth: 2-3
+---
+
+# Migrate from Webpack
+
+To migrate from [@squide/firefly-webpack-configs](https://www.npmjs.com/package/@squide/firefly-webpack-configs) to `@squide/firefly-rsbuild-configs`, execute the following steps :point_down:
+
+## Update packages
+
+Open a terminal at the root of the web application project and install the following packages:
+
++++ pnpm
+```bash
+pnpm add -D @workleap/rsbuild-configs @rsbuild/core @rspack/core
+```
++++ yarn
+```bash
+yarn add -D @workleap/rsbuild-configs @rsbuild/core @rspack/core
+```
++++ npm
+```bash
+npm install -D @workleap/rsbuild-configs @rsbuild/core @rspack/core
+```
++++
+
+Then, in the same terminal, remove the following packages:
+
++++ pnpm
+```bash
+pnpm remove @workleap/webpack-configs @swc/core @swc/helpers @workleap/swc-configs webpack webpack-cli webpack-dev-server @workleap/postcss-configs postcss
+```
++++ yarn
+```bash
+yarn remove @workleap/webpack-configs @swc/core @swc/helpers @workleap/swc-configs webpack webpack-cli webpack-dev-server @workleap/postcss-configs postcss
+```
++++ npm
+```bash
+npm uninstall @workleap/webpack-configs @swc/core @swc/helpers @workleap/swc-configs webpack webpack-cli webpack-dev-server @workleap/postcss-configs postcss
+```
++++
+
+!!!warning
+If your web application project uses SWC for tests, you may want to keep the `@swc/core` and `@workleap/swc-configs` packages.
+!!!
+
+## Update files
+
+```
+web-app
+├── public
+├──── index.html --> U
+├── webpack.dev.js --> rsbuild.dev.ts
+├── webpack.build.js --> rsbuild.build.ts
+├── postcss.config.ts --> X
+├── swc.build.js --> X
+├── swc.dev.js --> X
+├── package.json
+```
+
+### `webpack.build.js`
+
+Rename the file from `webpack.build.js` to `rsbuild.build.ts`.
+
+Then, open the `rsbuild.build.ts` file and apply the following changes:
+
+- Replace `"@workleap/webpack-configs"` for `"@workleap/rsbuild-configs"`.
+- Remove `import { swcConfig } from "./swc.build.js"`.
+- Remove the first argument of the `defineBuildHostConfig` function.
+- Remove `// @ts-check`.
+
+Before:
+
+```js webpack.build.js
+// @ts-check
+
+import { defineBuildHostConfig } from "@workleap/webpack-configs";
+import { swcConfig } from "./swc.build.js";
+
+export default defineBuildHostConfig(swcConfig);
+```
+
+After:
+
+```ts rsbuild.build.ts
+import { defineBuildHostConfig } from "@workleap/rsbuild-configs";
+
+export default defineBuildHostConfig();
+```
+
+### `webpack.dev.js`
+
+Rename the file from `webpack.dev.js` to `rsbuild.dev.ts`.
+
+Then, open the `rsbuild.build.ts` file and and apply the following changes:
+
+- Replace `"@workleap/webpack-configs"` for `"@workleap/rsbuild-configs"`.
+- Remove `import { swcConfig } from "./swc.build.js"`.
+- Remove the first argument of the `defineDevHostConfig` function.
+- Remove `// @ts-check`.
+
+Before:
+
+```js webpack.dev.js
+// @ts-check
+
+import { defineDevHostConfig } from "@workleap/webpack-configs";
+import { swcConfig } from "./swc.dev.js";
+
+export default defineDevHostConfig(swcConfig);
+```
+
+After:
+
+```ts rsbuild.dev.ts
+import { defineDevHostConfig } from "@workleap/rsbuild-configs";
+
+export default defineDevHostConfig(8080);
+```
+
+### `postcss.config.ts`
+
+Delete the `postcss.config.ts` file.
+
+### `swc.build.js`
+
+Delete the `swc.build.js` file.
+
+### `swc.dev.js`
+
+Delete the `swc.dev.js` file.
+
+### `index.html`
+
+Replace `<%=webpackConfig.output.publicPath%>` by `<%=assetPrefix%>/` (the `/` is important).
+
+Before:
+
+```html public/index.html
+
+
+
+
+
+
+
+
+
+```
+
+After:
+
+```html public/index.html
+
+
+
+
+
+
+
+
+
+```
+
+## Update scripts
+
+### `dev`
+
+Update the `dev` script to run Rsbuild instead of webpack.
+
+Before:
+
+```json package.json
+"scripts": {
+ "dev": "webpack serve --config webpack.dev.js"
+}
+```
+
+After:
+
+```json package.json
+"scripts": {
+ "dev": "rsbuild dev --config rsbuild.dev.ts"
+}
+```
+
+### `build`
+
+Update the `build` script to run Rsbuild instead of webpack.
+
+Before:
+
+```json package.json
+"scripts": {
+ "build": "webpack --config webpack.build.js"
+}
+```
+
+After:
+
+```json package.json
+"scripts": {
+ "build": "rsbuild build --config rsbuild.build.ts"
+}
+```
+
+### Try it :rocket:
+
+Start the application in a development environment using the `dev` and `build` script. Everything should run smoothly without any warnings or errors outputted in the terminal.
diff --git a/docs/samples.md b/docs/samples.md
index 98c6ae21..726998f2 100644
--- a/docs/samples.md
+++ b/docs/samples.md
@@ -5,13 +5,17 @@ icon: command-palette
# Samples
-## Web configs sample
+## Rsbuild sample
-- :icon-mark-github: [Web application](https://github.com/gsoft-inc/wl-web-configs/tree/main/sample/app)
-- :icon-mark-github: [Components library](https://github.com/gsoft-inc/wl-web-configs/tree/main/sample/components)
-- :icon-mark-github: [TypeScript library](https://github.com/gsoft-inc/wl-web-configs/tree/main/sample/utils)
-- :icon-mark-github: [Monorepo workspace](https://github.com/gsoft-inc/wl-web-configs/blob/main/tsconfig.json)
+- :icon-mark-github: [Web application](https://github.com/gsoft-inc/wl-web-configs/tree/main/samples/rsbuild/app)
+- :icon-mark-github: [Components library](https://github.com/gsoft-inc/wl-web-configs/tree/main/samples/rsbuild/components)
-## Foundy CLI templates
+## Webpack sample
-- :icon-mark-github: [Web application](https://github.com/gsoft-inc/wl-foundry-cli/tree/main/templates/web-application)
+- :icon-mark-github: [Web application](https://github.com/gsoft-inc/wl-web-configs/tree/main/samples/webpack/app)
+- :icon-mark-github: [Components library](https://github.com/gsoft-inc/wl-web-configs/tree/main/samples/webpack/components)
+- :icon-mark-github: [TypeScript library](https://github.com/gsoft-inc/wl-web-configs/tree/main/samples//webpack/tsup-lib)
+
+## Storybook sample
+
+- :icon-mark-github: [Storybook](https://github.com/gsoft-inc/wl-web-configs/tree/main/samples/storybook)
diff --git a/docs/static/rsbuild.svg b/docs/static/rsbuild.svg
new file mode 100644
index 00000000..2f1889bd
--- /dev/null
+++ b/docs/static/rsbuild.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/stylelint/default.md b/docs/stylelint/default.md
index a5f2d1f7..3e1059b9 100644
--- a/docs/stylelint/default.md
+++ b/docs/stylelint/default.md
@@ -1,5 +1,5 @@
---
-order: 150
+order: 160
icon: /static/stylelint.svg
label: Stylelint
expanded: true
diff --git a/docs/stylelint/setup-polyrepo.md b/docs/stylelint/setup-polyrepo.md
index 126c3f44..1bca19c9 100644
--- a/docs/stylelint/setup-polyrepo.md
+++ b/docs/stylelint/setup-polyrepo.md
@@ -9,7 +9,7 @@ toc:
# Setup a polyrepo
-Execute the following steps to setup [Stylelint](https://stylelint.io/) for a polyrepo solution (**single project** per repository).
+Execute the following steps to setup [Stylelint](https://stylelint.io/) for a polyrepo solution (**single project** per repository) :point_down:
## Install the packages
diff --git a/docs/swc/configure-build.md b/docs/swc/configure-build.md
index db8521ac..e23a3d30 100644
--- a/docs/swc/configure-build.md
+++ b/docs/swc/configure-build.md
@@ -9,7 +9,7 @@ toc:
# Configure for build
-To configure [SWC](https://swc.rs/) for a production environment, execute the following steps.
+To configure [SWC](https://swc.rs/) for a production environment, execute the following steps :point_down:
## Install the packages
diff --git a/docs/swc/configure-dev.md b/docs/swc/configure-dev.md
index 77a17ee5..ee4f4d32 100644
--- a/docs/swc/configure-dev.md
+++ b/docs/swc/configure-dev.md
@@ -9,7 +9,7 @@ toc:
# Configure for development
-To configure [SWC](https://swc.rs/) for a development environment, execute the following steps.
+To configure [SWC](https://swc.rs/) for a development environment, execute the following steps :point_down:
## Install the packages
diff --git a/docs/swc/configure-jest.md b/docs/swc/configure-jest.md
index 8797105f..d446ec4d 100644
--- a/docs/swc/configure-jest.md
+++ b/docs/swc/configure-jest.md
@@ -9,7 +9,7 @@ toc:
# Configure for Jest
-To configure [SWC](https://swc.rs/) for a [Jest](https://jestjs.io/) environment, execute the following steps.
+To configure [SWC](https://swc.rs/) for a [Jest](https://jestjs.io/) environment, execute the following steps :point_down:
## Install the packages
diff --git a/docs/tsup/configure-build.md b/docs/tsup/configure-build.md
index 187006bf..2b629caa 100644
--- a/docs/tsup/configure-build.md
+++ b/docs/tsup/configure-build.md
@@ -9,7 +9,7 @@ toc:
# Configure for build
-To configure [tsup](https://tsup.egoist.dev/) for a build environment, execute the following steps.
+To configure [tsup](https://tsup.egoist.dev/) for a build environment, execute the following steps :point_down:
## Install the packages
diff --git a/docs/tsup/configure-dev.md b/docs/tsup/configure-dev.md
index 21851f79..0af3ff62 100644
--- a/docs/tsup/configure-dev.md
+++ b/docs/tsup/configure-dev.md
@@ -9,7 +9,7 @@ toc:
# Configure for development
-To configure [tsup](https://tsup.egoist.dev/) for a development environment, execute the following steps.
+To configure [tsup](https://tsup.egoist.dev/) for a development environment, execute the following steps :point_down:
## Install the packages
diff --git a/docs/tsup/default.md b/docs/tsup/default.md
index 27cb6b7e..3767017d 100644
--- a/docs/tsup/default.md
+++ b/docs/tsup/default.md
@@ -1,5 +1,5 @@
---
-order: 130
+order: 110
icon: /static/tsup.svg
label: tsup
expanded: true
diff --git a/docs/typescript/default.md b/docs/typescript/default.md
index 3e6fe726..93488635 100644
--- a/docs/typescript/default.md
+++ b/docs/typescript/default.md
@@ -1,5 +1,5 @@
---
-order: 120
+order: 150
icon: /static/typescript.svg
label: Typescript
expanded: true
diff --git a/docs/typescript/setup-polyrepo.md b/docs/typescript/setup-polyrepo.md
index 9f47d9c8..f2fd5fc5 100644
--- a/docs/typescript/setup-polyrepo.md
+++ b/docs/typescript/setup-polyrepo.md
@@ -9,7 +9,7 @@ toc:
# Setup a polyrepo
-Execute the following steps to setup [TypeScript](https://www.typescriptlang.org/) for a polyrepo solution (**single project** per repository).
+Execute the following steps to setup [TypeScript](https://www.typescriptlang.org/) for a polyrepo solution (**single project** per repository) :point_down:
## Install the packages
diff --git a/docs/webpack/configure-build.md b/docs/webpack/configure-build.md
index 5ae719ea..9a2835ea 100644
--- a/docs/webpack/configure-build.md
+++ b/docs/webpack/configure-build.md
@@ -9,7 +9,11 @@ toc:
# Configure for build
-To configure [webpack](https://webpack.js.org/) for a production environment, execute the following steps.
+!!!warning
+`@workleap/webpack-configs` is now in maintenance mode. If you're starting a new project, consider using [@workleap/rsbuild-configs](../rsbuild/default.md) instead for better performance and modern tooling.
+!!!
+
+To configure [webpack](https://webpack.js.org/) for a production environment, execute the following steps :point_down:
## Install the packages
@@ -94,7 +98,7 @@ Then, add the assets to the `index.html` file:
If `output.publicPath` is set to `auto`, use `href="favicon.png"` instead.
!!!
-### `defineBuildConfig`
+### `webpack.build.js`
Next, create a configuration file named `webpack.build.js` at the root of the project:
@@ -117,7 +121,7 @@ import { swcConfig } from "./swc.build.js";
export default defineBuildConfig(swcConfig);
```
-### `swcConfig`
+### `swc.build.js`
In the previous code sample, the `defineBuildConfig(swcConfig, options)` function receive an SWC [configuration object](https://swc.rs/docs/configuration/swcrc) through the `swcConfig` parameter.
@@ -491,7 +495,7 @@ To deal with environment variables, the webpack documentation suggests using the
### cross-env
-We recommend instead to define environment variables using [cross-env](https://github.com/kentcdodds/cross-env). With `cross-env`, the environment variables will be made available to any Node.js files that are executed by the script process (`dev` in the example below :point_down:):
+We recommend instead to define environment variables using [cross-env](https://github.com/kentcdodds/cross-env). With `cross-env`, the environment variables will be made available to any Node.js files that are executed by the script process (`build` in the example below :point_down:):
```json package.json
{
@@ -538,7 +542,7 @@ export default defineBuildConfig(swcConfig, {
Then, use the variables in any application files:
-```tsx !#2 src/app.tsx
+```tsx !#2 src/App.tsx
export function App() {
if (process.env.DEBUG) {
console.log("The application has been bootstrapped in debug!");
diff --git a/docs/webpack/configure-dev.md b/docs/webpack/configure-dev.md
index 7d91a40c..4ebec050 100644
--- a/docs/webpack/configure-dev.md
+++ b/docs/webpack/configure-dev.md
@@ -9,7 +9,11 @@ toc:
# Configure for development
-To configure [webpack](https://webpack.js.org/) for a development environment, execute the following steps.
+!!!warning
+`@workleap/webpack-configs` is now in maintenance mode. If you're starting a new project, consider using [@workleap/rsbuild-configs](../rsbuild/default.md) instead for better performance and modern tooling.
+!!!
+
+To configure [webpack](https://webpack.js.org/) for a development environment, execute the following steps :point_down:
## Install the packages
@@ -61,7 +65,7 @@ The content of the `public/index.html` file is the default template that will be
#### Reference local assets
-To reference local assets such as a `favicon.png` in the default HTML template, it is recommended to preprend the **relative** path of every asset with the `publicPath` of the webpack config.
+To reference local assets such as a `favicon.png` in the default HTML template, it is recommended to preprend the **relative** path of every asset with the `publicPath` option of the webpack config.
First, add the asset to the `public` folder at the root of the project:
@@ -93,7 +97,7 @@ Then, add the assets to the `index.html` file:
If `output.publicPath` is set to `auto`, use `href="favicon.png"` instead.
!!!
-### `defineDevConfig`
+### `webpack.dev.js`
Next, create a configuration file named `webpack.dev.js` at the root of the project:
@@ -118,7 +122,7 @@ import { swcConfig } from "./swc.dev.js";
export default defineDevConfig(swcConfig);
```
-### `swcConfig`
+### `swc.dev.js`
In the previous code sample, the `defineDevConfig(swcConfig, options)` function receive an SWC [configuration object](https://swc.rs/docs/configuration/swcrc) through the `swcConfig` parameter.
@@ -204,7 +208,7 @@ export default defineDevConfig(swcConfig, {
### `publicPath`
-- **Type**: `boolean`
+- **Type**: `string`
- **Default**: `${https ? "https" : "http"}://${host}:${port}/`
Set webpack [public path](https://webpack.js.org/configuration/output/#outputpublicpath).
@@ -413,7 +417,7 @@ export default defineDevConfig(swcConfig, {
- **Type**: `boolean` or an object literal accepting any `@svgr/webpack` [option](https://react-svgr.com/docs/options/)
- **Default**: `true`
-Whether or not to handle `.svg` files with `@svgr/webpack`. If `@svgr/webpack` is desactived, the `.svg` files will are handled by the `asset/resource` rule.
+Whether or not to handle `.svg` files with `@svgr/webpack`. If `@svgr/webpack` is desactived, the `.svg` files will be handled by the `asset/resource` rule.
```js !#7 webpack.dev.js
// @ts-check
@@ -503,7 +507,7 @@ export default defineDevConfig(swcConfig, {
### Execution context
-Generic transformers can use the `context` parameter to gather additional information about their execution context, like the `environment` they are operating in:
+Generic transformers can use the `context` parameter to gather additional information about their execution context, like the `environment` they are operating in.
```ts !#7 transformer.js
// @ts-check
@@ -622,7 +626,7 @@ export default defineDevConfig(swcConfig, {
Then, use the variables in any application files:
-```tsx !#2 src/app.tsx
+```tsx !#2 src/App.tsx
export function App() {
if (process.env.DEBUG) {
console.log("The application has been bootstrapped in debug!");
diff --git a/docs/webpack/default.md b/docs/webpack/default.md
index dd4656f9..4e080dc5 100644
--- a/docs/webpack/default.md
+++ b/docs/webpack/default.md
@@ -1,5 +1,5 @@
---
-order: 110
+order: 90
icon: /static/webpack.svg
label: webpack
expanded: true
@@ -9,6 +9,10 @@ toc:
# Webpack
+!!!warning
+`@workleap/webpack-configs` is now in maintenance mode. If you're starting a new project, consider using [@workleap/rsbuild-configs](../rsbuild/default.md) instead for better performance and modern tooling.
+!!!
+
-## A word about Rspack
-
-[Rspack](https://www.rspack.dev/) is a partial rewrite of [webpack](https://webpack.js.org/) in Rust and will most likely be its successor once it's features complete and stable. Our goal is to migrate to Rspack somewhere in 2024 or 2025 when a `1.0` version is released and [Module Federation](https://module-federation.io/) support is available.
-
-Meanwhile, you can **confidently start a new project with webpack** as the **migration** process to Rspack is expected to be **seamless**; Rspack is committed to support the full webpack API and its massive plugin ecosystem.
-
## Main features
The shared configurations offered by `@workleap/webpack-configs` includes the following features :point_down:
diff --git a/docs/webpack/transformer-utilities.md b/docs/webpack/transformer-utilities.md
index 8a3893fa..b8e3eb2e 100644
--- a/docs/webpack/transformer-utilities.md
+++ b/docs/webpack/transformer-utilities.md
@@ -9,6 +9,10 @@ toc:
# Transformer utilities
+!!!warning
+`@workleap/webpack-configs` is now in maintenance mode. If you're starting a new project, consider using [@workleap/rsbuild-configs](../rsbuild/default.md) instead for better performance and modern tooling.
+!!!
+
!!!warning
We do not guarantee that your configuration transformers won't break after an update. It's your responsibility to keep them up to date with new releases.
!!!
diff --git a/knip.ts b/knip.ts
index ccf3ecba..91589705 100644
--- a/knip.ts
+++ b/knip.ts
@@ -27,7 +27,8 @@ const ignoreBrowserslist: KnipTransformer = ({ ignoreDependencies, ...config })
ignoreDependencies: [
...(ignoreDependencies as string[] ?? []),
// Browserlist isn't supported by plugins.
- "@workleap/browserslist-config"
+ "@workleap/browserslist-config",
+ "browserslist"
]
};
};
@@ -75,32 +76,28 @@ const configureWebpack: KnipTransformer = ({ ignoreDependencies, ...config }) =>
};
};
-const configureTsup: KnipTransformer = config => {
+const configureRsbuild: KnipTransformer = config => {
return {
...config,
- tsup: {
- config: ["tsup.*.ts"]
+ rsbuild: {
+ config: ["rsbuild.*.ts"]
}
};
};
-const configurePackage: KnipTransformer = config => {
+const configureTsup: KnipTransformer = config => {
return {
...config,
- eslint: true
+ tsup: {
+ config: ["tsup.*.ts"]
+ }
};
};
-const configureSample: KnipTransformer = ({ entry, ...config }) => {
+const configurePackage: KnipTransformer = config => {
return {
...config,
- entry: [
- ...(entry as string[] ?? []),
- "src/index.ts",
- "src/index.tsx"
- ],
- eslint: true,
- stylelint: true
+ eslint: true
};
};
@@ -142,33 +139,78 @@ const webpackConfig: KnipWorkspaceConfig = defineWorkspace({
configureTsup
]);
-const sampleAppConfig = defineWorkspace({}, [
- configureSample,
+const configureWebpackSample: KnipTransformer = ({ entry, ...config }) => {
+ return {
+ ...config,
+ entry: [
+ ...(entry as string[] ?? []),
+ "src/index.ts",
+ "src/index.tsx"
+ ],
+ eslint: true,
+ stylelint: true
+ };
+};
+
+const webpackSampleAppConfig = defineWorkspace({}, [
+ configureWebpackSample,
ignoreBrowserslist,
configurePostcss,
configureWebpack,
configureMsw
]);
-const sampleComponentsConfig = defineWorkspace({}, [
- configureSample,
+const webpackSampleComponentsConfig = defineWorkspace({}, [
+ configureWebpackSample,
configureTsup
]);
-const sampleUtilsConfig = defineWorkspace({}, [
- configureSample,
+const webpackSampleTsupLibConfig = defineWorkspace({}, [
+ configureWebpackSample,
configureTsup
]);
+const configureRsbuildSample: KnipTransformer = ({ entry, ...config }) => {
+ return {
+ ...config,
+ entry: [
+ ...(entry as string[] ?? []),
+ "src/index.ts",
+ "src/index.tsx"
+ ],
+ eslint: true,
+ stylelint: true
+ };
+};
+
+const rsbuildSampleAppConfig = defineWorkspace({}, [
+ configureRsbuildSample,
+ ignoreBrowserslist,
+ configureRsbuild,
+ configureMsw
+]);
+
+const rsbuildSampleComponentsConfig = defineWorkspace({}, [
+ configureRsbuildSample,
+ configureTsup
+]);
+
+const storybookSample = defineWorkspace({}, [
+ ignoreBrowserslist
+]);
+
const config: KnipConfig = {
workspaces: {
".": rootConfig,
"packages/*": packagesConfig,
"packages/swc-configs": swcConfig,
"packages/webpack-configs": webpackConfig,
- "sample/app": sampleAppConfig,
- "sample/components": sampleComponentsConfig,
- "sample/utils": sampleUtilsConfig
+ "samples/webpack/app": webpackSampleAppConfig,
+ "samples/webpack/components": webpackSampleComponentsConfig,
+ "samples/webpack/tsup-lib": webpackSampleTsupLibConfig,
+ "samples/rsbuild/app": rsbuildSampleAppConfig,
+ "samples/rsbuild/components": rsbuildSampleComponentsConfig,
+ "samples/storybook": storybookSample
},
ignoreWorkspaces: [
// Until it's migrated to ESLint 9.
diff --git a/package.json b/package.json
index 624ee13a..20a09d6e 100644
--- a/package.json
+++ b/package.json
@@ -10,15 +10,22 @@
"url": "git+https://github.com/gsoft-inc/wl-web-configs.git"
},
"scripts": {
- "dev-sample": "turbo run dev --filter=./sample/*",
- "dev-sample-msw": "turbo run dev-msw --filter=./sample/*",
+ "dev-webpack": "turbo run dev --filter=./samples/webpack/*",
+ "dev-webpack-msw": "turbo run dev-msw --filter=./samples/webpack/*",
+ "dev-rsbuild": "turbo run dev --filter=./samples/rsbuild/*",
+ "dev-rsbuild-msw": "turbo run dev-msw --filter=./samples/rsbuild/*",
+ "dev-storybook": "turbo run dev --filter=./samples/storybook",
"dev-docs": "retype start",
"build-pkg": "turbo run build --filter=./packages/*",
- "build-sample": "turbo run build --filter=./sample/*",
- "serve-sample": "turbo run serve-build --filter=./sample/*",
+ "build-webpack": "turbo run build --filter=./samples/webpack/*",
+ "build-rsbuild": "turbo run build --filter=./samples/rsbuild/*",
+ "build-storybook": "turbo run build --filter=./samples/storybook",
+ "serve-webpack": "turbo run serve-build --filter=./samples/webpack/*",
+ "serve-rsbuild": "turbo run serve-build --filter=./samples/rsbuild/*",
+ "serve-storybook": "turbo run serve-build --filter=./samples/storybook",
"prelint": "turbo run build --filter=./packages/*",
"lint": "turbo run lint --continue",
- "eslint": "eslint . --ignore-pattern packages --ignore-pattern sample --max-warnings=-0 --cache --cache-location node_modules/.cache/eslint",
+ "eslint": "eslint . --ignore-pattern packages --ignore-pattern samples --max-warnings=-0 --cache --cache-location node_modules/.cache/eslint",
"typecheck": "tsc",
"syncpack": "syncpack lint",
"knip": "knip --cache --cache-location ./node_modules/.cache/knip",
@@ -38,7 +45,7 @@
"@workleap/eslint-plugin": "workspace:*",
"@workleap/typescript-configs": "workspace:*",
"eslint": "8.57.0",
- "knip": "5.39.2",
+ "knip": "5.39.4",
"pkg-pr-new": "0.0.35",
"prettier": "3.4.2",
"retypeapp": "3.6.0",
@@ -46,11 +53,6 @@
"turbo": "2.3.3",
"typescript": "5.5.4"
},
- "pnpm": {
- "overrides": {
- "minimist": "^0.2.4"
- }
- },
"engines": {
"node": ">=22.0.0",
"pnpm": ">=9"
diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json
index cab56bd3..b18797a8 100644
--- a/packages/eslint-plugin/package.json
+++ b/packages/eslint-plugin/package.json
@@ -49,7 +49,7 @@
}
},
"dependencies": {
- "@stylistic/eslint-plugin-ts": "^2.12.0",
+ "@stylistic/eslint-plugin-ts": "^2.12.1",
"@typescript-eslint/eslint-plugin": "^8.18.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest": "^28.9.0",
@@ -71,7 +71,7 @@
"@types/eslint": "8.56.10",
"@types/estree": "1.0.6",
"@types/jest": "29.5.14",
- "@types/node": "22.10.1",
+ "@types/node": "22.10.2",
"@workleap/typescript-configs": "workspace:*",
"eslint": "8.57.0",
"jest": "29.7.0",
diff --git a/packages/postcss-configs/package.json b/packages/postcss-configs/package.json
index 9a021e37..77196583 100644
--- a/packages/postcss-configs/package.json
+++ b/packages/postcss-configs/package.json
@@ -43,7 +43,7 @@
"@swc/core": "1.10.1",
"@swc/jest": "0.2.37",
"@types/jest": "29.5.14",
- "@types/node": "22.10.1",
+ "@types/node": "22.10.2",
"@typescript-eslint/parser": "8.18.0",
"@workleap/eslint-plugin": "workspace:*",
"@workleap/swc-configs": "workspace:*",
diff --git a/sample/app/.eslintignore b/packages/rsbuild-configs/.eslintignore
similarity index 100%
rename from sample/app/.eslintignore
rename to packages/rsbuild-configs/.eslintignore
diff --git a/sample/tsup-lib/.eslintrc.json b/packages/rsbuild-configs/.eslintrc.json
similarity index 100%
rename from sample/tsup-lib/.eslintrc.json
rename to packages/rsbuild-configs/.eslintrc.json
diff --git a/packages/rsbuild-configs/README.md b/packages/rsbuild-configs/README.md
new file mode 100644
index 00000000..002bf5ce
--- /dev/null
+++ b/packages/rsbuild-configs/README.md
@@ -0,0 +1,16 @@
+# rsbuild-configs
+
+[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](../../LICENSE)
+[![npm version](https://img.shields.io/npm/v/@workleap/rsbuild-configs)](https://www.npmjs.com/package/@workleap/rsbuild-configs)
+
+## Usage
+
+View the [user's documentation](https://gsoft-inc.github.io/wl-web-configs/).
+
+## 🤝 Contributing
+
+View the [contributor's documentation](../../CONTRIBUTING.md).
+
+## License
+
+Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE.
diff --git a/packages/rsbuild-configs/jest.config.ts b/packages/rsbuild-configs/jest.config.ts
new file mode 100644
index 00000000..1142ff96
--- /dev/null
+++ b/packages/rsbuild-configs/jest.config.ts
@@ -0,0 +1,15 @@
+import type { Config } from "jest";
+import { swcConfig } from "./swc.jest.ts";
+
+const config: Config = {
+ testRegex: "/tests/*/.*\\.test\\.(ts|tsx)$",
+ testPathIgnorePatterns: ["/node_modules/", "/dist/"],
+ transform: {
+ "^.+\\.ts$": ["@swc/jest", swcConfig as Record]
+ },
+ cacheDirectory: "./node_modules/.cache/jest",
+ clearMocks: true,
+ verbose: true
+};
+
+export default config;
diff --git a/packages/rsbuild-configs/package.json b/packages/rsbuild-configs/package.json
new file mode 100644
index 00000000..f757d330
--- /dev/null
+++ b/packages/rsbuild-configs/package.json
@@ -0,0 +1,63 @@
+{
+ "name": "@workleap/rsbuild-configs",
+ "author": "Workleap",
+ "description": "Workleap recommended Rsbuild config.",
+ "version": "0.0.1",
+ "license": "Apache-2.0",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/gsoft-inc/wl-web-configs.git",
+ "directory": "packages/rsbuild-configs"
+ },
+ "type": "module",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "exports": {
+ ".": {
+ "import": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ }
+ },
+ "files": [
+ "dist",
+ "CHANGELOG.md",
+ "README.md"
+ ],
+ "scripts": {
+ "build": "tsup",
+ "eslint": "eslint . --max-warnings=-0 --cache --cache-location node_modules/.cache/eslint",
+ "typecheck": "tsc",
+ "test": "jest"
+ },
+ "peerDependencies": {
+ "@rsbuild/core": "*",
+ "@rspack/core": "*"
+ },
+ "dependencies": {
+ "@rsbuild/plugin-basic-ssl": "^1.1.1",
+ "@rsbuild/plugin-image-compress": "^1.1.0",
+ "@rsbuild/plugin-react": "^1.1.0",
+ "@rsbuild/plugin-svgr": "^1.0.6"
+ },
+ "devDependencies": {
+ "@rsbuild/core": "1.1.9",
+ "@rspack/core": "1.1.6",
+ "@swc/core": "1.10.1",
+ "@swc/jest": "0.2.37",
+ "@types/jest": "29.5.14",
+ "@types/node": "22.10.2",
+ "@typescript-eslint/parser": "8.18.0",
+ "@workleap/eslint-plugin": "workspace:*",
+ "@workleap/swc-configs": "workspace:*",
+ "@workleap/tsup-configs": "workspace:*",
+ "@workleap/typescript-configs": "workspace:*",
+ "eslint": "8.57.0",
+ "jest": "29.7.0",
+ "ts-node": "10.9.2",
+ "tsup": "8.3.5",
+ "typescript": "5.5.4"
+ }
+}
diff --git a/packages/rsbuild-configs/src/applyTransformers.ts b/packages/rsbuild-configs/src/applyTransformers.ts
new file mode 100644
index 00000000..26cf980c
--- /dev/null
+++ b/packages/rsbuild-configs/src/applyTransformers.ts
@@ -0,0 +1,12 @@
+import type { RsbuildConfig } from "@rsbuild/core";
+
+export interface RsbuildConfigTransformerContext {
+ environment: "dev" | "build" | "storybook";
+ verbose: boolean;
+}
+
+export type RsbuildConfigTransformer = (config: RsbuildConfig, context: RsbuildConfigTransformerContext) => RsbuildConfig;
+
+export function applyTransformers(config: RsbuildConfig, transformers: RsbuildConfigTransformer[], context: RsbuildConfigTransformerContext) {
+ return transformers.reduce((acc, transformer) => transformer(acc, context), config);
+}
diff --git a/packages/rsbuild-configs/src/build.ts b/packages/rsbuild-configs/src/build.ts
new file mode 100644
index 00000000..969fea21
--- /dev/null
+++ b/packages/rsbuild-configs/src/build.ts
@@ -0,0 +1,181 @@
+import { defineConfig, type DistPathConfig, type HtmlConfig, type Minify, type RsbuildConfig, type RsbuildEntry, type RsbuildPlugins, type SourceMap } from "@rsbuild/core";
+import { pluginImageCompress, type PluginImageCompressOptions } from "@rsbuild/plugin-image-compress";
+import { pluginReact, type PluginReactOptions } from "@rsbuild/plugin-react";
+import { pluginSvgr, type PluginSvgrOptions } from "@rsbuild/plugin-svgr";
+import { SwcJsMinimizerRspackPlugin, type Optimization } from "@rspack/core";
+import path from "node:path";
+import { applyTransformers, type RsbuildConfigTransformer } from "./applyTransformers.ts";
+
+export type OptimizeOption = boolean | "readable";
+
+export type DefineBuildHtmlPluginConfigFunction = (defaultOptions: HtmlConfig) => HtmlConfig;
+export type DefineBuildDefineReactPluginConfigFunction = (defaultOptions: PluginReactOptions) => PluginReactOptions;
+export type DefineBuildSvgrPluginConfigFunction = (defaultOptions: PluginSvgrOptions) => PluginSvgrOptions;
+export type DefineBuildImageCompressPluginConfigFunction = (defaultOptions: PluginImageCompressOptions) => PluginImageCompressOptions;
+
+export interface DefineBuildConfigOptions {
+ entry?: RsbuildEntry;
+ // Similar to webpack.output.path.
+ distPath?: DistPathConfig;
+ // Similar to webpack.publicPath.
+ assetPrefix?: string;
+ plugins?: RsbuildPlugins;
+ html?: false | DefineBuildHtmlPluginConfigFunction;
+ minify?: Minify;
+ optimize?: OptimizeOption;
+ sourceMap?: boolean | SourceMap;
+ react?: false | DefineBuildDefineReactPluginConfigFunction;
+ svgr? : false | DefineBuildSvgrPluginConfigFunction;
+ compressImage?: false | DefineBuildImageCompressPluginConfigFunction;
+ environmentVariables?: Record;
+ transformers?: RsbuildConfigTransformer[];
+ verbose?: boolean;
+}
+
+function defaultDefineHtmlPluginConfig(options: HtmlConfig) {
+ return options;
+}
+
+function defaultDefineReactPluginConfig(options: PluginReactOptions) {
+ return options;
+}
+
+function defineSvgrPluginConfig(options: PluginSvgrOptions) {
+ return options;
+}
+
+function defineImageCompressPluginConfig(options: PluginImageCompressOptions) {
+ return options;
+}
+
+export function getOptimizationConfig(optimize: OptimizeOption): Optimization {
+ if (optimize === true) {
+ return {
+ minimize: true
+ };
+ } else if (optimize === "readable") {
+ return {
+ minimize: true,
+ minimizer: [
+ new SwcJsMinimizerRspackPlugin({
+ minimizerOptions: {
+ mangle: false,
+ compress: {
+ toplevel: true,
+ hoist_props: false
+ }
+ }
+ })
+ ],
+ chunkIds: "named",
+ moduleIds: "named",
+ mangleExports: false
+ };
+ }
+
+ // Doesn't turnoff everything but is good enough to help with debugging scenarios.
+ return {
+ minimize: false,
+ chunkIds: "named",
+ moduleIds: "named",
+ concatenateModules: false,
+ mangleExports: false,
+ removeAvailableModules: false,
+ usedExports: false
+ };
+}
+
+export function defineBuildConfig(options: DefineBuildConfigOptions = {}) {
+ const {
+ entry = {
+ index: path.resolve("./src/index.tsx")
+ },
+ distPath = {
+ root: path.resolve("./dist")
+ },
+ assetPrefix = "http://localhost:8080",
+ plugins = [],
+ html = defaultDefineHtmlPluginConfig,
+ minify = true,
+ optimize = true,
+ sourceMap = {
+ js: "source-map",
+ css: true
+ },
+ react = defaultDefineReactPluginConfig,
+ svgr = defineSvgrPluginConfig,
+ compressImage = defineImageCompressPluginConfig,
+ // Using an empty object literal as the default value to ensure
+ // "process.env" is always available.
+ environmentVariables = {},
+ transformers = [],
+ verbose = false
+ } = options;
+
+ const config: RsbuildConfig = {
+ mode: "production",
+ source: {
+ entry,
+ // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
+ // after replacement and cause an undefined var error because the production var doesn't exist.
+ // For more information, view: https://rsbuild.dev/guide/advanced/env-vars#using-define.
+ define: {
+ "process.env": Object.keys(environmentVariables).reduce((acc, key) => {
+ acc[key] = JSON.stringify(environmentVariables[key]);
+
+ return acc;
+ }, {} as Record)
+ }
+ },
+ output: {
+ target: "web",
+ distPath,
+ cleanDistPath: true,
+ assetPrefix,
+ filename: {
+ html: "[name].html",
+ js: "[name].js",
+ css: "[name].css",
+ svg: "[name].[contenthash:8].svg",
+ font: "[name].[contenthash:8][ext]",
+ image: "[name].[contenthash:8][ext]",
+ media: "[name].[contenthash:8][ext]",
+ assets: "[name].[contenthash:8][ext]"
+ },
+ minify,
+ sourceMap
+ },
+ html: html
+ ? html({ template: path.resolve("./public/index.html") })
+ : undefined,
+ plugins: [
+ react && pluginReact(react({
+ fastRefresh: false
+ })),
+ svgr && pluginSvgr(svgr({
+ svgrOptions: {
+ exportType: "named"
+ }
+ })),
+ compressImage && pluginImageCompress(compressImage(["jpeg", "png", "ico", "svg"])),
+ ...plugins
+ ].filter(Boolean),
+ tools: {
+ rspack: {
+ optimization: getOptimizationConfig(optimize),
+ infrastructureLogging: verbose ? {
+ appendOnly: true,
+ level: "verbose",
+ debug: /PackFileCache/
+ } : undefined
+ }
+ }
+ };
+
+ const transformedConfig = applyTransformers(config, transformers, {
+ environment: "build",
+ verbose
+ });
+
+ return defineConfig(transformedConfig);
+}
diff --git a/packages/rsbuild-configs/src/dev.ts b/packages/rsbuild-configs/src/dev.ts
new file mode 100644
index 00000000..b6ab9fd4
--- /dev/null
+++ b/packages/rsbuild-configs/src/dev.ts
@@ -0,0 +1,143 @@
+import { defineConfig, type HtmlConfig, type RsbuildConfig, type RsbuildEntry, type RsbuildPlugins, type ServerConfig, type SourceMap } from "@rsbuild/core";
+import { pluginBasicSsl } from "@rsbuild/plugin-basic-ssl";
+import { pluginReact, type PluginReactOptions } from "@rsbuild/plugin-react";
+import { pluginSvgr, type PluginSvgrOptions } from "@rsbuild/plugin-svgr";
+import path from "node:path";
+import { applyTransformers, type RsbuildConfigTransformer } from "./applyTransformers.ts";
+
+export type DefineDevHtmlPluginConfigFunction = (defaultOptions: HtmlConfig) => HtmlConfig;
+export type DefineDevDefineReactPluginConfigFunction = (defaultOptions: PluginReactOptions) => PluginReactOptions;
+export type DefineDevSvgrPluginConfigFunction = (defaultOptions: PluginSvgrOptions) => PluginSvgrOptions;
+
+export interface DefineDevConfigOptions {
+ entry?: RsbuildEntry;
+ https?: boolean | ServerConfig["https"];
+ host?: string;
+ port?: number;
+ // Similar to webpack.publicPath.
+ assetPrefix?: string;
+ plugins?: RsbuildPlugins;
+ html?: false | DefineDevHtmlPluginConfigFunction;
+ lazyCompilation?: boolean;
+ hmr?: boolean;
+ fastRefresh?: boolean;
+ sourceMap?: false | SourceMap;
+ overlay?: false;
+ react?: false | DefineDevDefineReactPluginConfigFunction;
+ svgr? : false | DefineDevSvgrPluginConfigFunction;
+ environmentVariables?: Record;
+ transformers?: RsbuildConfigTransformer[];
+ verbose?: boolean;
+}
+
+function defaultDefineHtmlPluginConfig(options: HtmlConfig) {
+ return options;
+}
+
+function defaultDefineReactPluginConfig(options: PluginReactOptions) {
+ return options;
+}
+
+function defineSvgrPluginConfig(options: PluginSvgrOptions) {
+ return options;
+}
+
+export function defineDevConfig(options: DefineDevConfigOptions = {}) {
+ const {
+ entry = {
+ index: path.resolve("./src/index.tsx")
+ },
+ https = false,
+ host = "localhost",
+ port = 8080,
+ assetPrefix,
+ plugins = [],
+ html = defaultDefineHtmlPluginConfig,
+ lazyCompilation = true,
+ hmr = true,
+ fastRefresh = true,
+ sourceMap = {
+ js: "cheap-module-source-map",
+ css: true
+ },
+ overlay,
+ react = defaultDefineReactPluginConfig,
+ svgr = defineSvgrPluginConfig,
+ // Using an empty object literal as the default value to ensure
+ // "process.env" is always available.
+ environmentVariables = {},
+ transformers = [],
+ verbose = false
+ } = options;
+
+ const config: RsbuildConfig = {
+ mode: "development",
+ dev: {
+ assetPrefix: assetPrefix ?? `${https ? "https" : "http"}://${host}:${port}`,
+ lazyCompilation,
+ hmr: hmr || fastRefresh,
+ client: (overlay === false || fastRefresh) ? {
+ overlay: false
+ } : undefined
+ },
+ server: {
+ https: typeof https === "boolean" ? undefined : https,
+ host,
+ port,
+ historyApiFallback: true
+ },
+ source: {
+ entry,
+ // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
+ // after replacement and cause an undefined var error because the production var doesn't exist.
+ // For more information, view: https://rsbuild.dev/guide/advanced/env-vars#using-define.
+ define: {
+ "process.env": Object.keys(environmentVariables).reduce((acc, key) => {
+ acc[key] = JSON.stringify(environmentVariables[key]);
+
+ return acc;
+ }, {} as Record)
+ }
+ },
+ output: {
+ target: "web",
+ minify: false,
+ sourceMap
+ },
+ html: html
+ ? html({ template: path.resolve("./public/index.html") })
+ : undefined,
+ plugins: [
+ typeof https === "boolean" && https && pluginBasicSsl(),
+ react && pluginReact(react({
+ fastRefresh,
+ reactRefreshOptions: {
+ overlay: overlay !== false
+ }
+ })),
+ svgr && pluginSvgr(svgr({
+ svgrOptions: {
+ exportType: "named"
+ }
+ })),
+ ...plugins
+ ].filter(Boolean),
+ tools: {
+ rspack: {
+ infrastructureLogging: verbose ? {
+ appendOnly: true,
+ level: "verbose",
+ debug: /PackFileCache/
+ } : undefined
+ }
+ }
+ };
+
+ const transformedConfig = applyTransformers(config, transformers, {
+ environment: "dev",
+ verbose
+ });
+
+ return defineConfig(transformedConfig);
+}
+
diff --git a/packages/rsbuild-configs/src/index.ts b/packages/rsbuild-configs/src/index.ts
new file mode 100644
index 00000000..de0cc2b5
--- /dev/null
+++ b/packages/rsbuild-configs/src/index.ts
@@ -0,0 +1,4 @@
+export * from "./build.ts";
+export * from "./dev.ts";
+export * from "./storybook.ts";
+
diff --git a/packages/rsbuild-configs/src/storybook.ts b/packages/rsbuild-configs/src/storybook.ts
new file mode 100644
index 00000000..e5935cf6
--- /dev/null
+++ b/packages/rsbuild-configs/src/storybook.ts
@@ -0,0 +1,86 @@
+import { defineConfig, type RsbuildConfig, type RsbuildPlugins, type SourceMap } from "@rsbuild/core";
+import { pluginReact, type PluginReactOptions } from "@rsbuild/plugin-react";
+import { pluginSvgr, type PluginSvgrOptions } from "@rsbuild/plugin-svgr";
+import { applyTransformers, type RsbuildConfigTransformer } from "./applyTransformers.ts";
+
+export type DefineStorybookDefineReactPluginConfigFunction = (defaultOptions: PluginReactOptions) => PluginReactOptions;
+export type DefineStorybookSvgrPluginConfigFunction = (defaultOptions: PluginSvgrOptions) => PluginSvgrOptions;
+
+export interface DefineStorybookConfigOptions {
+ plugins?: RsbuildPlugins;
+ sourceMap?: boolean | SourceMap;
+ react?: false | DefineStorybookDefineReactPluginConfigFunction;
+ svgr? : false | DefineStorybookSvgrPluginConfigFunction;
+ environmentVariables?: Record;
+ transformers?: RsbuildConfigTransformer[];
+ verbose?: boolean;
+}
+
+function defaultDefineReactPluginConfig(options: PluginReactOptions) {
+ return options;
+}
+
+function defineSvgrPluginConfig(options: PluginSvgrOptions) {
+ return options;
+}
+
+export function defineStorybookConfig(options: DefineStorybookConfigOptions = {}) {
+ const {
+ plugins = [],
+ sourceMap = {
+ js: "cheap-module-source-map",
+ css: true
+ },
+ react = defaultDefineReactPluginConfig,
+ svgr = defineSvgrPluginConfig,
+ // Using an empty object literal as the default value to ensure
+ // "process.env" is always available.
+ environmentVariables = {},
+ transformers = [],
+ verbose = false
+ } = options;
+
+ const config: RsbuildConfig = {
+ source: {
+ // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
+ // after replacement and cause an undefined var error because the production var doesn't exist.
+ // For more information, view: https://rsbuild.dev/guide/advanced/env-vars#using-define.
+ define: {
+ "process.env": Object.keys(environmentVariables).reduce((acc, key) => {
+ acc[key] = JSON.stringify(environmentVariables[key]);
+
+ return acc;
+ }, {} as Record)
+ }
+ },
+ output: {
+ target: "web",
+ sourceMap
+ },
+ plugins: [
+ react && pluginReact(react({})),
+ svgr && pluginSvgr(svgr({
+ svgrOptions: {
+ exportType: "named"
+ }
+ })),
+ ...plugins
+ ].filter(Boolean),
+ tools: {
+ rspack: {
+ infrastructureLogging: verbose ? {
+ appendOnly: true,
+ level: "verbose",
+ debug: /PackFileCache/
+ } : undefined
+ }
+ }
+ };
+
+ const transformedConfig = applyTransformers(config, transformers, {
+ environment: "storybook",
+ verbose
+ });
+
+ return defineConfig(transformedConfig);
+}
diff --git a/packages/rsbuild-configs/swc.jest.ts b/packages/rsbuild-configs/swc.jest.ts
new file mode 100644
index 00000000..2e6bdb4c
--- /dev/null
+++ b/packages/rsbuild-configs/swc.jest.ts
@@ -0,0 +1,3 @@
+import { defineJestConfig } from "@workleap/swc-configs";
+
+export const swcConfig = defineJestConfig();
diff --git a/packages/rsbuild-configs/tests/build.test.ts b/packages/rsbuild-configs/tests/build.test.ts
new file mode 100644
index 00000000..a226f8a8
--- /dev/null
+++ b/packages/rsbuild-configs/tests/build.test.ts
@@ -0,0 +1,298 @@
+import type { RsbuildConfig, RsbuildPlugin, SourceMap } from "@rsbuild/core";
+import type { RsbuildConfigTransformer } from "../src/applyTransformers.ts";
+import { defineBuildConfig, getOptimizationConfig } from "../src/build.ts";
+
+test("when an entry prop is provided, the source.entry option is the provided value", () => {
+ const result = defineBuildConfig({
+ entry: {
+ index: "./a-new-entry.ts"
+ }
+ });
+
+ expect(result!.source!.entry!.index).toBe("./a-new-entry.ts");
+});
+
+test("when a dist path is provided, the output.distpath option is the provided value", () => {
+ const result = defineBuildConfig({
+ distPath: {
+ root: "./a-new-output-path"
+ }
+ });
+
+ expect(result.output!.distPath!.root).toBe("./a-new-output-path");
+});
+
+test("when an asset prefix is provided, the output.assetPrefix option is the provided value", () => {
+ const result = defineBuildConfig({
+ assetPrefix: "a-valid-public-path-ending-with-a-trailing-slash/"
+ });
+
+ expect(result.output!.assetPrefix).toBe("a-valid-public-path-ending-with-a-trailing-slash/");
+});
+
+test("when additional plugins are provided, append the provided plugins at the end of the plugins array", () => {
+ const plugin1: RsbuildPlugin = {
+ name: "plugin-1",
+ setup: () => {}
+ };
+
+ const plugin2: RsbuildPlugin = {
+ name: "plugin-2",
+ setup: () => {}
+ };
+
+ const result = defineBuildConfig({
+ plugins: [
+ plugin1,
+ plugin2
+ ]
+ });
+
+ const pluginsCount = result.plugins!.length;
+
+ expect(result.plugins![pluginsCount - 2]).toBe(plugin1);
+ expect(result.plugins![pluginsCount - 1]).toBe(plugin2);
+});
+
+test("when html is false, the html option is undefined", () => {
+ const result = defineBuildConfig({
+ html: false
+ });
+
+ expect(result.html).toBeUndefined();
+});
+
+test("when html is a function, the html option match the function return value", () => {
+ const html = {
+ title: "foo"
+ };
+
+ const result = defineBuildConfig({
+ html: () => {
+ return html;
+ }
+ });
+
+ expect(result.html).toBe(html);
+});
+
+test("when sourceMap is false, the output.sourceMap option is false", () => {
+ const result = defineBuildConfig({
+ sourceMap: false
+ });
+
+ expect(result.output?.sourceMap).toBeFalsy();
+});
+
+test("when sourceMap is an object, the output.sourceMap option is the object", () => {
+ const sourceMap: SourceMap = {
+ js: false,
+ css: false
+ };
+
+ const result = defineBuildConfig({
+ sourceMap
+ });
+
+ expect(result.output?.sourceMap).toBe(sourceMap);
+});
+
+test("when react is false, the react plugin is not included", () => {
+ const result = defineBuildConfig({
+ react: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:react");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when react is a function, the function is executed", () => {
+ const fct = jest.fn();
+
+ defineBuildConfig({
+ react: fct
+ });
+
+ expect(fct).toHaveBeenCalledTimes(1);
+});
+
+test("when svgr is false, the svgr plugin is not included", () => {
+ const result = defineBuildConfig({
+ svgr: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:svgr");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when svgr is a function, the function is executed", () => {
+ const fct = jest.fn();
+
+ defineBuildConfig({
+ svgr: fct
+ });
+
+ expect(fct).toHaveBeenCalledTimes(1);
+});
+
+test("when compressImage is false, the image compress plugin is not included", () => {
+ const result = defineBuildConfig({
+ compressImage: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:image-compress");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when compressImage is a function, the function is executed", () => {
+ const fct = jest.fn();
+
+ defineBuildConfig({
+ compressImage: fct
+ });
+
+ expect(fct).toHaveBeenCalledTimes(1);
+});
+
+test("when a transformer is provided, and the transformer update the existing configuration object, the transformer is applied on the Rsbuild config", () => {
+ const entryTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.source = config.source ?? {};
+ config.source.entry = {
+ index: "a-custom-value-in-a-transformer"
+ };
+
+ return config;
+ };
+
+ const result = defineBuildConfig({
+ transformers: [entryTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+});
+
+test("when a transformer is provided, and the transformer returns a new configuration object, the transformer is applied on the Rsbuild config", () => {
+ const entryTransformer: RsbuildConfigTransformer = () => {
+ return {
+ source: {
+ entry: {
+ index: "a-custom-value-in-a-transformer"
+ }
+ }
+ };
+ };
+
+ const result = defineBuildConfig({
+ transformers: [entryTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+});
+
+test("when multiple transformers are provided, all the transformers are applied on the webpack config", () => {
+ const entryTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.source = config.source ?? {};
+ config.source.entry = {
+ index: "a-custom-value-in-a-transformer"
+ };
+
+ return config;
+ };
+
+ const distPathTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.output = config.output ?? {};
+ config.output.distPath = config.output.distPath ?? {};
+ config.output.distPath.js = "a-custom-dist-path-in-a-tranformer";
+
+ return config;
+ };
+
+ const result = defineBuildConfig({
+ transformers: [entryTransformer, distPathTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+ expect(result.output!.distPath!.js).toBe("a-custom-dist-path-in-a-tranformer");
+});
+
+test("transformers context environment is \"dev\"", () => {
+ const mockTransformer = jest.fn();
+
+ defineBuildConfig({
+ transformers: [mockTransformer]
+ });
+
+ expect(mockTransformer).toHaveBeenCalledWith(expect.anything(), { environment: "build", verbose: false });
+});
+
+test("when the verbose option is true, the transformers context verbose value is \"true\"", () => {
+ const mockTransformer = jest.fn();
+
+ defineBuildConfig({
+ verbose: true,
+ transformers: [mockTransformer]
+ });
+
+ expect(mockTransformer).toHaveBeenCalledWith(expect.anything(), { environment: "build", verbose: true });
+});
+
+describe("getOptimizationConfig", () => {
+ test("when optimize is true, minimize is set to true", () => {
+ const result = getOptimizationConfig(true);
+
+ expect(result.minimize).toBeTruthy();
+ });
+
+ test("when optimize is false, minimize is set to false", () => {
+ const result = getOptimizationConfig(false);
+
+ expect(result.minimize).toBeFalsy();
+ });
+
+ test("when optimize is \"readable\", minimize is set to true", () => {
+ const result = getOptimizationConfig("readable");
+
+ expect(result.minimize).toBeTruthy();
+ });
+
+ test("when optimize is false, chunkIds is set to \"named\"", () => {
+ const result = getOptimizationConfig(false);
+
+ expect(result.chunkIds).toBe("named");
+ });
+
+ test("when optimize is false, moduleIds is set to \"named\"", () => {
+ const result = getOptimizationConfig(false);
+
+ expect(result.chunkIds).toBe("named");
+ });
+
+ test("when optimize is \"readable\", chunkIds is set to \"named\"", () => {
+ const result = getOptimizationConfig("readable");
+
+ expect(result.chunkIds).toBe("named");
+ });
+
+ test("when optimize is \"readable\", moduleIds is set to \"named\"", () => {
+ const result = getOptimizationConfig("readable");
+
+ expect(result.chunkIds).toBe("named");
+ });
+
+ test("when optimize is false, do not include minimizer configuration", () => {
+ const result = getOptimizationConfig(false);
+
+ expect(result.minimizer).toBeUndefined();
+ });
+
+ test("when optimize is \"readable\", include minify configuration", () => {
+ const result = getOptimizationConfig("readable");
+
+ expect(result.minimizer).toBeDefined();
+ });
+});
+
+
diff --git a/packages/rsbuild-configs/tests/dev.test.ts b/packages/rsbuild-configs/tests/dev.test.ts
new file mode 100644
index 00000000..9fb51d9c
--- /dev/null
+++ b/packages/rsbuild-configs/tests/dev.test.ts
@@ -0,0 +1,398 @@
+import type { RsbuildConfig, RsbuildPlugin, SourceMap } from "@rsbuild/core";
+import type { RsbuildConfigTransformer } from "../src/applyTransformers.ts";
+import { defineDevConfig } from "../src/dev.ts";
+
+test("when an entry prop is provided, the source.entry option is the provided value", () => {
+ const result = defineDevConfig({
+ entry: {
+ index: "./a-new-entry.ts"
+ }
+ });
+
+ expect(result.source?.entry!.index).toBe("./a-new-entry.ts");
+});
+
+test("when https is true, the server option is configured with a self signed certificate", () => {
+ const result = defineDevConfig({
+ https: true
+ });
+
+ expect(result.server?.https).toBeUndefined();
+ expect(result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:basic-ssl")).toBeDefined();
+});
+
+test("when https is true, the asset prefix option include \"https\"", () => {
+ const result = defineDevConfig({
+ https: true
+ });
+
+ expect(result.dev?.assetPrefix).toMatch(/(https)/i);
+});
+
+test("when https is a certificate, the server option is configured with the provided certificate", () => {
+ const cert = {
+ key: "foo",
+ cert: "bar"
+ };
+
+ const result = defineDevConfig({
+ https: cert
+ });
+
+ expect(result.server?.https).toBe(cert);
+});
+
+test("when https is a certificate, the dev.assetPrefix option include \"https\"", () => {
+ const result = defineDevConfig({
+ https: {
+ key: "foo",
+ cert: "bar"
+ }
+ });
+
+ expect(result.dev?.assetPrefix).toMatch(/(https)/i);
+});
+
+test("when https is false, the dev.assetPrefix option doesn't include \"https\"", () => {
+ const result = defineDevConfig({
+ https: false
+ });
+
+ expect(result.dev?.assetPrefix).not.toMatch(/(https)/i);
+});
+
+test("when https is false, the basic-ssl plugin is not included", () => {
+ const result = defineDevConfig({
+ https: false
+ });
+
+ expect(result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:basic-ssl")).toBeUndefined();
+});
+
+test("when https is false, the server.https option is undefined", () => {
+ const result = defineDevConfig({
+ https: true
+ });
+
+ expect(result.server?.https).toBeUndefined();
+});
+
+test("when an host is provided, the server.host option is the provided host value", () => {
+ const result = defineDevConfig({
+ host: "a-custom-host"
+ });
+
+ expect(result.server!.host).toBe("a-custom-host");
+});
+
+test("when an host is provided, the dev.assetPrefix option include the provided host value", () => {
+ const result = defineDevConfig({
+ host: "a-custom-host"
+ });
+
+ expect(result.dev?.assetPrefix).toMatch(/a-custom-host/);
+});
+
+test("when a port is provided, the server.port option is the provided port value", () => {
+ const result = defineDevConfig({
+ port: 1234
+ });
+
+ expect(result.server?.port).toBe(1234);
+});
+
+test("when a port is provided, the dev.assetPrefix option include the provided port", () => {
+ const result = defineDevConfig({
+ port: 1234
+ });
+
+ expect(result.dev?.assetPrefix).toMatch(/1234/);
+});
+
+test("when an asset prefix is provided, the dev.assetPrefix option is the provided value", () => {
+ const result = defineDevConfig({
+ assetPrefix: "http://my-dev-host.com/"
+ });
+
+ expect(result.dev?.assetPrefix).toBe("http://my-dev-host.com/");
+});
+
+test("when additional plugins are provided, append the provided plugins at the end of the plugins array", () => {
+ const plugin1: RsbuildPlugin = {
+ name: "plugin-1",
+ setup: () => {}
+ };
+
+ const plugin2: RsbuildPlugin = {
+ name: "plugin-2",
+ setup: () => {}
+ };
+
+ const result = defineDevConfig({
+ plugins: [
+ plugin1,
+ plugin2
+ ]
+ });
+
+ const pluginsCount = result.plugins!.length;
+
+ expect(result.plugins![pluginsCount - 2]).toBe(plugin1);
+ expect(result.plugins![pluginsCount - 1]).toBe(plugin2);
+});
+
+test("when html is false, the html option is undefined", () => {
+ const result = defineDevConfig({
+ html: false
+ });
+
+ expect(result.html).toBeUndefined();
+});
+
+test("when html is a function, the html option match the function return value", () => {
+ const html = {
+ title: "foo"
+ };
+
+ const result = defineDevConfig({
+ html: () => {
+ return html;
+ }
+ });
+
+ expect(result.html).toBe(html);
+});
+
+test("when lazyCompilation is true, the dev.lazyCompilation option is true", () => {
+ const result = defineDevConfig({
+ lazyCompilation: true
+ });
+
+ expect(result.dev?.lazyCompilation).toBeTruthy();
+});
+
+test("when lazyCompilation is false, the dev.lazyCompilation option is false", () => {
+ const result = defineDevConfig({
+ lazyCompilation: false
+ });
+
+ expect(result.dev?.lazyCompilation).toBeFalsy();
+});
+
+test("when hmr is true, the dev.hmr option is true", () => {
+ const result = defineDevConfig({
+ hmr: true
+ });
+
+ expect(result.dev?.hmr).toBeTruthy();
+});
+
+test("when hmr amd fastRefresh are false, the dev.hmr option is false", () => {
+ const result = defineDevConfig({
+ hmr: false,
+ fastRefresh: false
+ });
+
+ expect(result.dev?.hmr).toBeFalsy();
+});
+
+test("when hmr is false and fastRefresh is true, the dev.hmr option is true", () => {
+ const result = defineDevConfig({
+ hmr: false,
+ fastRefresh: true
+ });
+
+ expect(result.dev?.hmr).toBeTruthy();
+});
+
+test("when fastRefresh is true, the react plugin enable fast refresh", () => {
+ let isEnabled = false;
+
+ const result = defineDevConfig({
+ fastRefresh: true,
+ react: defaultOptions => {
+ isEnabled = defaultOptions.fastRefresh === true;
+
+ return defaultOptions;
+ }
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:react");
+
+ expect(plugin).toBeDefined();
+ expect(isEnabled).toBeTruthy();
+});
+
+test("when fastRefresh is true and the overlay is disable, disable the fast refresh overlay", () => {
+ let isOverlayDisabled = false;
+
+ const result = defineDevConfig({
+ fastRefresh: true,
+ overlay: false,
+ react: defaultOptions => {
+ isOverlayDisabled = defaultOptions.reactRefreshOptions?.overlay === false;
+
+ return defaultOptions;
+ }
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:react");
+
+ expect(plugin).toBeDefined();
+ expect(isOverlayDisabled).toBeTruthy();
+});
+
+test("when fastRefresh is true, disable the client overlay", () => {
+ const result = defineDevConfig({
+ fastRefresh: true
+ });
+
+ expect(result.dev?.client?.overlay).toBeFalsy();
+});
+
+test("when sourceMap is false, the output.sourceMap option is false", () => {
+ const result = defineDevConfig({
+ sourceMap: false
+ });
+
+ expect(result.output?.sourceMap).toBeFalsy();
+});
+
+test("when sourceMap is an object, the output.sourceMap option is the object", () => {
+ const sourceMap: SourceMap = {
+ js: false,
+ css: false
+ };
+
+ const result = defineDevConfig({
+ sourceMap
+ });
+
+ expect(result.output?.sourceMap).toBe(sourceMap);
+});
+
+test("when overlay is false, the dev.client.overlay option is false", () => {
+ const result = defineDevConfig({
+ overlay: false
+ });
+
+ expect(result.dev?.client?.overlay).toBeFalsy();
+});
+
+test("when overlay is false, react plugin fast refresh overlay is disabled", () => {
+ let isOverlayDisabled = false;
+
+ defineDevConfig({
+ overlay: false,
+ react: defaultOptions => {
+ isOverlayDisabled = defaultOptions.reactRefreshOptions?.overlay === false;
+
+ return defaultOptions;
+ }
+ });
+
+ expect(isOverlayDisabled).toBeTruthy();
+});
+
+test("when react is false, the react plugin is not included", () => {
+ const result = defineDevConfig({
+ react: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:react");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when svgr is false, the svgr plugin is not included", () => {
+ const result = defineDevConfig({
+ svgr: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:svgr");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when a transformer is provided, and the transformer update the existing configuration object, the transformer is applied on the Rsbuild config", () => {
+ const entryTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.source = config.source ?? {};
+ config.source.entry = {
+ index: "a-custom-value-in-a-transformer"
+ };
+
+ return config;
+ };
+
+ const result = defineDevConfig({
+ transformers: [entryTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+});
+
+test("when a transformer is provided, and the transformer returns a new configuration object, the transformer is applied on the Rsbuild config", () => {
+ const entryTransformer: RsbuildConfigTransformer = () => {
+ return {
+ source: {
+ entry: {
+ index: "a-custom-value-in-a-transformer"
+ }
+ }
+ };
+ };
+
+ const result = defineDevConfig({
+ transformers: [entryTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+});
+
+test("when multiple transformers are provided, all the transformers are applied on the webpack config", () => {
+ const entryTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.source = config.source ?? {};
+ config.source.entry = {
+ index: "a-custom-value-in-a-transformer"
+ };
+
+ return config;
+ };
+
+ const distPathTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.output = config.output ?? {};
+ config.output.distPath = config.output.distPath ?? {};
+ config.output.distPath.js = "a-custom-dist-path-in-a-tranformer";
+
+ return config;
+ };
+
+ const result = defineDevConfig({
+ transformers: [entryTransformer, distPathTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+ expect(result.output!.distPath!.js).toBe("a-custom-dist-path-in-a-tranformer");
+});
+
+test("transformers context environment is \"dev\"", () => {
+ const mockTransformer = jest.fn();
+
+ defineDevConfig({
+ transformers: [mockTransformer]
+ });
+
+ expect(mockTransformer).toHaveBeenCalledWith(expect.anything(), { environment: "dev", verbose: false });
+});
+
+test("when the verbose option is true, the transformers context verbose value is \"true\"", () => {
+ const mockTransformer = jest.fn();
+
+ defineDevConfig({
+ verbose: true,
+ transformers: [mockTransformer]
+ });
+
+ expect(mockTransformer).toHaveBeenCalledWith(expect.anything(), { environment: "dev", verbose: true });
+});
+
diff --git a/packages/rsbuild-configs/tests/storybook.test.ts b/packages/rsbuild-configs/tests/storybook.test.ts
new file mode 100644
index 00000000..d14baa70
--- /dev/null
+++ b/packages/rsbuild-configs/tests/storybook.test.ts
@@ -0,0 +1,170 @@
+import type { RsbuildConfig, RsbuildPlugin, SourceMap } from "@rsbuild/core";
+import type { RsbuildConfigTransformer } from "../src/applyTransformers.ts";
+import { defineStorybookConfig } from "../src/storybook.ts";
+
+test("when additional plugins are provided, append the provided plugins at the end of the plugins array", () => {
+ const plugin1: RsbuildPlugin = {
+ name: "plugin-1",
+ setup: () => {}
+ };
+
+ const plugin2: RsbuildPlugin = {
+ name: "plugin-2",
+ setup: () => {}
+ };
+
+ const result = defineStorybookConfig({
+ plugins: [
+ plugin1,
+ plugin2
+ ]
+ });
+
+ const pluginsCount = result.plugins!.length;
+
+ expect(result.plugins![pluginsCount - 2]).toBe(plugin1);
+ expect(result.plugins![pluginsCount - 1]).toBe(plugin2);
+});
+
+test("when sourceMap is false, the output.sourceMap option is false", () => {
+ const result = defineStorybookConfig({
+ sourceMap: false
+ });
+
+ expect(result.output?.sourceMap).toBeFalsy();
+});
+
+test("when sourceMap is an object, the output.sourceMap option is the object", () => {
+ const sourceMap: SourceMap = {
+ js: false,
+ css: false
+ };
+
+ const result = defineStorybookConfig({
+ sourceMap
+ });
+
+ expect(result.output?.sourceMap).toBe(sourceMap);
+});
+
+test("when react is false, the react plugin is not included", () => {
+ const result = defineStorybookConfig({
+ react: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:react");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when react is a function, the function is executed", () => {
+ const fct = jest.fn();
+
+ defineStorybookConfig({
+ react: fct
+ });
+
+ expect(fct).toHaveBeenCalledTimes(1);
+});
+
+test("when svgr is false, the svgr plugin is not included", () => {
+ const result = defineStorybookConfig({
+ svgr: false
+ });
+
+ const plugin = result.plugins?.find(x => (x as RsbuildPlugin).name === "rsbuild:svgr");
+
+ expect(plugin).toBeUndefined();
+});
+
+test("when svgr is a function, the function is executed", () => {
+ const fct = jest.fn();
+
+ defineStorybookConfig({
+ svgr: fct
+ });
+
+ expect(fct).toHaveBeenCalledTimes(1);
+});
+
+test("when a transformer is provided, and the transformer update the existing configuration object, the transformer is applied on the Rsbuild config", () => {
+ const entryTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.source = config.source ?? {};
+ config.source.entry = {
+ index: "a-custom-value-in-a-transformer"
+ };
+
+ return config;
+ };
+
+ const result = defineStorybookConfig({
+ transformers: [entryTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+});
+
+test("when a transformer is provided, and the transformer returns a new configuration object, the transformer is applied on the Rsbuild config", () => {
+ const entryTransformer: RsbuildConfigTransformer = () => {
+ return {
+ source: {
+ entry: {
+ index: "a-custom-value-in-a-transformer"
+ }
+ }
+ };
+ };
+
+ const result = defineStorybookConfig({
+ transformers: [entryTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+});
+
+test("when multiple transformers are provided, all the transformers are applied on the webpack config", () => {
+ const entryTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.source = config.source ?? {};
+ config.source.entry = {
+ index: "a-custom-value-in-a-transformer"
+ };
+
+ return config;
+ };
+
+ const distPathTransformer: RsbuildConfigTransformer = (config: RsbuildConfig) => {
+ config.output = config.output ?? {};
+ config.output.distPath = config.output.distPath ?? {};
+ config.output.distPath.js = "a-custom-dist-path-in-a-tranformer";
+
+ return config;
+ };
+
+ const result = defineStorybookConfig({
+ transformers: [entryTransformer, distPathTransformer]
+ });
+
+ expect(result.source!.entry!.index).toBe("a-custom-value-in-a-transformer");
+ expect(result.output!.distPath!.js).toBe("a-custom-dist-path-in-a-tranformer");
+});
+
+test("transformers context environment is \"dev\"", () => {
+ const mockTransformer = jest.fn();
+
+ defineStorybookConfig({
+ transformers: [mockTransformer]
+ });
+
+ expect(mockTransformer).toHaveBeenCalledWith(expect.anything(), { environment: "storybook", verbose: false });
+});
+
+test("when the verbose option is true, the transformers context verbose value is \"true\"", () => {
+ const mockTransformer = jest.fn();
+
+ defineStorybookConfig({
+ verbose: true,
+ transformers: [mockTransformer]
+ });
+
+ expect(mockTransformer).toHaveBeenCalledWith(expect.anything(), { environment: "storybook", verbose: true });
+});
diff --git a/sample/components/tsconfig.json b/packages/rsbuild-configs/tsconfig.json
similarity index 100%
rename from sample/components/tsconfig.json
rename to packages/rsbuild-configs/tsconfig.json
diff --git a/packages/rsbuild-configs/tsup.config.ts b/packages/rsbuild-configs/tsup.config.ts
new file mode 100644
index 00000000..fbbc7e07
--- /dev/null
+++ b/packages/rsbuild-configs/tsup.config.ts
@@ -0,0 +1,5 @@
+import { defineBuildConfig } from "@workleap/tsup-configs";
+
+export default defineBuildConfig({
+ platform: "node"
+});
diff --git a/packages/stylelint-configs/package.json b/packages/stylelint-configs/package.json
index 03506fad..292f4e9b 100644
--- a/packages/stylelint-configs/package.json
+++ b/packages/stylelint-configs/package.json
@@ -48,7 +48,7 @@
"stylelint-prettier": "^5.0.2"
},
"devDependencies": {
- "@types/node": "22.10.1",
+ "@types/node": "22.10.2",
"@typescript-eslint/parser": "8.18.0",
"@workleap/eslint-plugin": "workspace:*",
"@workleap/tsup-configs": "workspace:*",
diff --git a/packages/webpack-configs/package.json b/packages/webpack-configs/package.json
index 56660540..c09b7535 100644
--- a/packages/webpack-configs/package.json
+++ b/packages/webpack-configs/package.json
@@ -45,13 +45,25 @@
"optional": true
}
},
+ "dependencies": {
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
+ "@svgr/webpack": "^8.1.0",
+ "css-loader": "^7.1.2",
+ "html-webpack-plugin": "^5.6.3",
+ "mini-css-extract-plugin": "^2.9.2",
+ "postcss-loader": "^8.1.1",
+ "react-refresh": "^0.16.0",
+ "style-loader": "^4.0.0",
+ "swc-loader": "^0.2.6",
+ "terser-webpack-plugin": "^5.3.10"
+ },
"devDependencies": {
"@svgr/core": "8.1.0",
"@swc/core": "1.10.1",
"@swc/helpers": "0.5.15",
"@swc/jest": "0.2.37",
"@types/jest": "29.5.14",
- "@types/node": "22.10.1",
+ "@types/node": "22.10.2",
"@typescript-eslint/parser": "8.18.0",
"@workleap/eslint-plugin": "workspace:*",
"@workleap/swc-configs": "workspace:*",
@@ -62,17 +74,5 @@
"ts-node": "10.9.2",
"tsup": "8.3.5",
"typescript": "5.5.4"
- },
- "dependencies": {
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
- "@svgr/webpack": "^8.1.0",
- "css-loader": "^7.1.2",
- "html-webpack-plugin": "^5.6.3",
- "mini-css-extract-plugin": "^2.9.2",
- "postcss-loader": "^8.1.1",
- "react-refresh": "^0.16.0",
- "style-loader": "^4.0.0",
- "swc-loader": "^0.2.6",
- "terser-webpack-plugin": "^5.3.10"
}
}
diff --git a/packages/webpack-configs/tests/build.test.ts b/packages/webpack-configs/tests/build.test.ts
index 4928f72c..b6b34108 100644
--- a/packages/webpack-configs/tests/build.test.ts
+++ b/packages/webpack-configs/tests/build.test.ts
@@ -6,12 +6,12 @@ import type { WebpackConfigTransformer } from "../src/transformers/applyTransfor
import { findModuleRule, matchAssetModuleType, matchLoaderName } from "../src/transformers/moduleRules.ts";
import { findPlugin, matchConstructorName } from "../src/transformers/plugins.ts";
-const SwcConfig = defineSwcConfig({
+const DefaultSwcConfig = defineSwcConfig({
chrome: "116"
});
test("when an entry prop is provided, use the provided entry value", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
entry: "./a-new-entry.ts"
});
@@ -19,23 +19,23 @@ test("when an entry prop is provided, use the provided entry value", () => {
});
test("when an output path is provided, use the provided ouput path value", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
outputPath: "./a-new-output-path"
});
- expect(result.output?.path).toBe("./a-new-output-path");
+ expect(result.output!.path).toBe("./a-new-output-path");
});
test("when a public path is set to \"auto\", should not throw an error", () => {
- expect(() => defineBuildConfig(SwcConfig, { publicPath: "auto" })).not.toThrow();
+ expect(() => defineBuildConfig(DefaultSwcConfig, { publicPath: "auto" })).not.toThrow();
});
test("when a valid public path is provided, use the provided public path value", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
publicPath: "a-valid-public-path-ending-with-a-trailing-slash/"
});
- expect(result.output?.publicPath).toBe("a-valid-public-path-ending-with-a-trailing-slash/");
+ expect(result.output!.publicPath).toBe("a-valid-public-path-ending-with-a-trailing-slash/");
});
test("when additional module rules are provided, append the provided rules at the end of the module rules array", () => {
@@ -49,7 +49,7 @@ test("when additional module rules are provided, append the provided rules at th
type: "asset/inline"
};
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
moduleRules: [
newModuleRule1,
newModuleRule2
@@ -58,8 +58,8 @@ test("when additional module rules are provided, append the provided rules at th
const rulesCount = result.module!.rules!.length;
- expect(result.module?.rules![rulesCount - 2]).toBe(newModuleRule1);
- expect(result.module?.rules![rulesCount - 1]).toBe(newModuleRule2);
+ expect(result.module!.rules![rulesCount - 2]).toBe(newModuleRule1);
+ expect(result.module!.rules![rulesCount - 1]).toBe(newModuleRule2);
});
test("when additional plugins are provided, append the provided plugins at the end of the plugins array", () => {
@@ -78,7 +78,7 @@ test("when additional plugins are provided, append the provided plugins at the e
const newPlugin1 = new Plugin1();
const newPlugin2 = new Plugin2();
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
plugins: [
newPlugin1,
newPlugin2
@@ -92,23 +92,23 @@ test("when additional plugins are provided, append the provided plugins at the e
});
test("when optimize is true, minimize is set to true", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: true
});
- expect(result.optimization?.minimize).toBeTruthy();
+ expect(result.optimization!.minimize).toBeTruthy();
});
test("when optimize is false, minimize is set to false", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: false
});
- expect(result.optimization?.minimize).toBeFalsy();
+ expect(result.optimization!.minimize).toBeFalsy();
});
test("when optimize is \"readable\", minimize is set to true", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: "readable"
});
@@ -116,7 +116,7 @@ test("when optimize is \"readable\", minimize is set to true", () => {
});
test("when optimize is false, chunkIds is set to \"named\"", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: false
});
@@ -124,23 +124,23 @@ test("when optimize is false, chunkIds is set to \"named\"", () => {
});
test("when optimize is false, moduleIds is set to \"named\"", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: false
});
- expect(result.optimization?.chunkIds).toBe("named");
+ expect(result.optimization!.chunkIds).toBe("named");
});
test("when optimize is \"readable\", chunkIds is set to \"named\"", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: "readable"
});
- expect(result.optimization?.chunkIds).toBe("named");
+ expect(result.optimization!.chunkIds).toBe("named");
});
test("when optimize is \"readable\", moduleIds is set to \"named\"", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: "readable"
});
@@ -148,31 +148,31 @@ test("when optimize is \"readable\", moduleIds is set to \"named\"", () => {
});
test("when optimize is true, include minify configuration", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: true
});
- expect(result.optimization?.minimizer).toBeDefined();
+ expect(result.optimization!.minimizer).toBeDefined();
});
test("when optimize is false, do not include minify configuration", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: false
});
- expect(result.optimization?.minimizer).toBeUndefined();
+ expect(result.optimization!.minimizer).toBeUndefined();
});
test("when optimize is \"readable\", include minify configuration", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
optimize: "readable"
});
- expect(result.optimization?.minimizer).toBeDefined();
+ expect(result.optimization!.minimizer).toBeDefined();
});
test("when htmlWebpackPlugin is \"false\", no html-webpack-plugin instance is added to the plugin array", () => {
- const config = defineBuildConfig(SwcConfig, {
+ const config = defineBuildConfig(DefaultSwcConfig, {
htmlWebpackPlugin: false
});
@@ -182,7 +182,7 @@ test("when htmlWebpackPlugin is \"false\", no html-webpack-plugin instance is ad
});
test("when htmlWebpackPlugin is \"true\", an html-webpack-plugin instance is added to the plugin array", () => {
- const config = defineBuildConfig(SwcConfig, {
+ const config = defineBuildConfig(DefaultSwcConfig, {
htmlWebpackPlugin: true
});
@@ -192,7 +192,7 @@ test("when htmlWebpackPlugin is \"true\", an html-webpack-plugin instance is add
});
test("when css modules is enabled, include css modules configuration", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
cssModules: true
});
@@ -200,30 +200,30 @@ test("when css modules is enabled, include css modules configuration", () => {
// css-loader doesn't provide typings.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- expect(((cssLoader?.moduleRule as RuleSetRule).options as any).modules).toBeTruthy();
+ expect(((cssLoader!.moduleRule as RuleSetRule).options as any).modules).toBeTruthy();
// css-loader doesn't provide typings.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- expect(((cssLoader?.moduleRule as RuleSetRule).options as any).importLoaders).toBe(1);
+ expect(((cssLoader!.moduleRule as RuleSetRule).options as any).importLoaders).toBe(1);
});
test("when css modules is disabled, do not include css modules configuration", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
cssModules: false
});
const cssLoader = findModuleRule(result, matchLoaderName("css-loader"));
- expect((cssLoader?.moduleRule as RuleSetRule).options).toBeUndefined();
+ expect((cssLoader!.moduleRule as RuleSetRule).options).toBeUndefined();
});
test("the provided swc config object is set as the swc-loader options", () => {
- const swcConfig = SwcConfig;
+ const swcConfig = DefaultSwcConfig;
const result = defineBuildConfig(swcConfig);
const swcLoader = findModuleRule(result, matchLoaderName("swc-loader"));
- expect((swcLoader?.moduleRule as RuleSetRule).options).toBe(swcConfig);
+ expect((swcLoader!.moduleRule as RuleSetRule).options).toBe(swcConfig);
});
test("when a transformer is provided, and the transformer update the existing configuration object, the transformer is applied on the webpack config", () => {
@@ -233,7 +233,7 @@ test("when a transformer is provided, and the transformer update the existing co
return config;
};
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
transformers: [entryTransformer]
});
@@ -247,7 +247,7 @@ test("when a transformer is provided, and the transformer returns a new configur
};
};
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
transformers: [entryTransformer]
});
@@ -267,7 +267,7 @@ test("when multiple transformers are provided, all the transformers are applied
return config;
};
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
transformers: [entryTransformer, devToolTransformer]
});
@@ -278,7 +278,7 @@ test("when multiple transformers are provided, all the transformers are applied
test("transformers context environment is \"build\"", () => {
const mockTransformer = jest.fn();
- defineBuildConfig(SwcConfig, {
+ defineBuildConfig(DefaultSwcConfig, {
transformers: [mockTransformer]
});
@@ -288,7 +288,7 @@ test("transformers context environment is \"build\"", () => {
test("when the verbose option is true, the transformers context verbose value is \"true\"", () => {
const mockTransformer = jest.fn();
- defineBuildConfig(SwcConfig, {
+ defineBuildConfig(DefaultSwcConfig, {
verbose: true,
transformers: [mockTransformer]
});
@@ -309,7 +309,7 @@ test("when the verbose option is true, the transformers context verbose value is
// });
test("when the svgr option is false, do not add the svgr rule", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
svgr: false
});
@@ -319,13 +319,13 @@ test("when the svgr option is false, do not add the svgr rule", () => {
});
test("when the svgr option is false, add .svg to the default assets rule", () => {
- const result = defineBuildConfig(SwcConfig, {
+ const result = defineBuildConfig(DefaultSwcConfig, {
svgr: false
});
const assetsRule = findModuleRule(result, matchAssetModuleType("asset/resource"));
- expect((assetsRule?.moduleRule as RuleSetRule).test).toEqual(/\.(png|jpe?g|gif|svg)$/i);
+ expect((assetsRule!.moduleRule as RuleSetRule).test).toEqual(/\.(png|jpe?g|gif|svg)$/i);
});
describe("defineBuildHtmlWebpackPluginConfig", () => {
diff --git a/packages/webpack-configs/tests/dev.test.ts b/packages/webpack-configs/tests/dev.test.ts
index 4ec23b9a..f9d7fdf4 100644
--- a/packages/webpack-configs/tests/dev.test.ts
+++ b/packages/webpack-configs/tests/dev.test.ts
@@ -9,12 +9,12 @@ import type { WebpackConfigTransformer } from "../src/transformers/applyTransfor
import { findModuleRule, matchAssetModuleType, matchLoaderName } from "../src/transformers/moduleRules.ts";
import { findPlugin, matchConstructorName } from "../src/transformers/plugins.ts";
-const DefaultConfig = defineSwcConfig({
+const DefaultSwcConfig = defineSwcConfig({
chrome: "116"
});
test("when an entry prop is provided, use the provided entry value", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
entry: "./a-new-entry.ts"
});
@@ -22,7 +22,7 @@ test("when an entry prop is provided, use the provided entry value", () => {
});
test("when https is enabled, the dev server is configured for https", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
https: true
});
@@ -30,7 +30,7 @@ test("when https is enabled, the dev server is configured for https", () => {
});
test("when https is disabled, the dev server is not configured for https", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
https: false
});
@@ -38,7 +38,7 @@ test("when https is disabled, the dev server is not configured for https", () =>
});
test("when https is enabled, the public path starts with https", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
https: true
});
@@ -46,7 +46,7 @@ test("when https is enabled, the public path starts with https", () => {
});
test("when https is disabled, the public path starts with http", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
https: false
});
@@ -54,7 +54,7 @@ test("when https is disabled, the public path starts with http", () => {
});
test("when an host is provided, the dev server host is the provided host value", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
host: "a-custom-host"
});
@@ -62,7 +62,7 @@ test("when an host is provided, the dev server host is the provided host value",
});
test("when an host is provided, the public path include the provided host value", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
host: "a-custom-host"
});
@@ -70,7 +70,7 @@ test("when an host is provided, the public path include the provided host value"
});
test("when a port is provided, the dev server port is the provided port value", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
port: 1234
});
@@ -78,7 +78,7 @@ test("when a port is provided, the dev server port is the provided port value",
});
test("when a port is provided, the public path include the provided port", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
port: 1234
});
@@ -86,7 +86,7 @@ test("when a port is provided, the public path include the provided port", () =>
});
test("when a public path is provided, use the provided public path", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
publicPath: "http://my-dev-host.com/"
});
@@ -94,7 +94,7 @@ test("when a public path is provided, use the provided public path", () => {
});
test("when cache is enabled, the cache configuration is included", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
cache: true
});
@@ -102,7 +102,7 @@ test("when cache is enabled, the cache configuration is included", () => {
});
test("when cache is disabled, the cache prop is false", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
cache: false
});
@@ -120,7 +120,7 @@ test("when additional module rules are provided, append the provided rules at th
type: "asset/inline"
};
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
moduleRules: [
newModuleRule1,
newModuleRule2
@@ -149,7 +149,7 @@ test("when additional plugins are provided, append the provided plugins at the e
const newPlugin1 = new Plugin1();
const newPlugin2 = new Plugin2();
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
plugins: [
newPlugin1,
newPlugin2
@@ -163,7 +163,7 @@ test("when additional plugins are provided, append the provided plugins at the e
});
test("when htmlWebpackPlugin is \"false\", no html-webpack-plugin instance is added to the plugin array", () => {
- const config = defineDevConfig(DefaultConfig, {
+ const config = defineDevConfig(DefaultSwcConfig, {
htmlWebpackPlugin: false
});
@@ -173,7 +173,7 @@ test("when htmlWebpackPlugin is \"false\", no html-webpack-plugin instance is ad
});
test("when htmlWebpackPlugin is \"true\", an html-webpack-plugin instance is added to the plugin array", () => {
- const config = defineDevConfig(DefaultConfig, {
+ const config = defineDevConfig(DefaultSwcConfig, {
htmlWebpackPlugin: true
});
@@ -183,7 +183,7 @@ test("when htmlWebpackPlugin is \"true\", an html-webpack-plugin instance is add
});
test("when fast refresh is disabled, dev server hot module reload is enabled", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: false
});
@@ -191,7 +191,7 @@ test("when fast refresh is disabled, dev server hot module reload is enabled", (
});
test("when fast refresh is enabled, add the fast refresh plugin", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: true
});
@@ -199,7 +199,7 @@ test("when fast refresh is enabled, add the fast refresh plugin", () => {
});
test("when fast refresh is disabled, do not add the fast refresh plugin", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: false
});
@@ -207,7 +207,7 @@ test("when fast refresh is disabled, do not add the fast refresh plugin", () =>
});
test("when fast refresh is enabled, enable swc fast refresh", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: true
});
@@ -217,7 +217,7 @@ test("when fast refresh is enabled, enable swc fast refresh", () => {
});
test("when fast refresh is disabled, disable swc fast refresh", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: false
});
@@ -227,7 +227,7 @@ test("when fast refresh is disabled, disable swc fast refresh", () => {
});
test("when css modules is enabled, include css modules configuration", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
cssModules: true
});
@@ -242,7 +242,7 @@ test("when css modules is enabled, include css modules configuration", () => {
});
test("when css modules is disabled, do not include css modules configuration", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
cssModules: false
});
@@ -252,7 +252,7 @@ test("when css modules is disabled, do not include css modules configuration", (
});
test("when the overlay option is not provided and fast refresh is disabled, the devserver overlay option is undefined", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: false
});
@@ -260,7 +260,7 @@ test("when the overlay option is not provided and fast refresh is disabled, the
});
test("when fast refresh is enabled, the devserver overlay option is false", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
fastRefresh: true
});
@@ -268,7 +268,7 @@ test("when fast refresh is enabled, the devserver overlay option is false", () =
});
test("when the overlay is disabled, the devserver overlay option is false", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
overlay: false
});
@@ -276,7 +276,7 @@ test("when the overlay is disabled, the devserver overlay option is false", () =
});
test("the provided swc config object is set as the swc-loader options", () => {
- const config = DefaultConfig;
+ const config = DefaultSwcConfig;
const result = defineDevConfig(config);
@@ -292,7 +292,7 @@ test("when a transformer is provided, and the transformer update the existing co
return config;
};
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
transformers: [entryTransformer]
});
@@ -306,7 +306,7 @@ test("when a transformer is provided, and the transformer returns a new configur
};
};
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
transformers: [entryTransformer]
});
@@ -326,7 +326,7 @@ test("when multiple transformers are provided, all the transformers are applied
return config;
};
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
transformers: [entryTransformer, devToolTransformer]
});
@@ -337,7 +337,7 @@ test("when multiple transformers are provided, all the transformers are applied
test("transformers context environment is \"dev\"", () => {
const mockTransformer = jest.fn();
- defineDevConfig(DefaultConfig, {
+ defineDevConfig(DefaultSwcConfig, {
transformers: [mockTransformer]
});
@@ -347,7 +347,7 @@ test("transformers context environment is \"dev\"", () => {
test("when the verbose option is true, the transformers context verbose value is \"true\"", () => {
const mockTransformer = jest.fn();
- defineDevConfig(DefaultConfig, {
+ defineDevConfig(DefaultSwcConfig, {
verbose: true,
transformers: [mockTransformer]
});
@@ -368,7 +368,7 @@ test("when the verbose option is true, the transformers context verbose value is
// });
test("when the svgr option is false, do not add the svgr rule", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
svgr: false
});
@@ -378,7 +378,7 @@ test("when the svgr option is false, do not add the svgr rule", () => {
});
test("when the svgr option is false, add .svg to the default assets rule", () => {
- const result = defineDevConfig(DefaultConfig, {
+ const result = defineDevConfig(DefaultSwcConfig, {
svgr: false
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 08317a55..31532235 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,9 +4,6 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
-overrides:
- minimist: ^0.2.4
-
importers:
.:
@@ -30,8 +27,8 @@ importers:
specifier: 8.57.0
version: 8.57.0
knip:
- specifier: 5.39.2
- version: 5.39.2(@types/node@22.10.1)(typescript@5.5.4)
+ specifier: 5.39.4
+ version: 5.39.4(@types/node@22.10.2)(typescript@5.5.4)
pkg-pr-new:
specifier: 0.0.35
version: 0.0.35
@@ -75,8 +72,8 @@ importers:
packages/eslint-plugin:
dependencies:
'@stylistic/eslint-plugin-ts':
- specifier: ^2.12.0
- version: 2.12.0(eslint@8.57.0)(typescript@5.7.2)
+ specifier: ^2.12.1
+ version: 2.12.1(eslint@8.57.0)(typescript@5.7.2)
'@typescript-eslint/eslint-plugin':
specifier: ^8.18.0
version: 8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)
@@ -88,7 +85,7 @@ importers:
version: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)
eslint-plugin-jest:
specifier: ^28.9.0
- version: 28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)))(typescript@5.7.2)
+ version: 28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)))(typescript@5.7.2)
eslint-plugin-jsx-a11y:
specifier: ^6.10.2
version: 6.10.2(eslint@8.57.0)
@@ -142,8 +139,8 @@ importers:
specifier: 29.5.14
version: 29.5.14
'@types/node':
- specifier: 22.10.1
- version: 22.10.1
+ specifier: 22.10.2
+ version: 22.10.2
'@workleap/typescript-configs':
specifier: workspace:*
version: link:../typescript-configs
@@ -152,10 +149,10 @@ importers:
version: 8.57.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)
tsup:
specifier: 8.3.5
version: 8.3.5(@swc/core@1.10.1)(jiti@2.4.1)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1)
@@ -182,8 +179,72 @@ importers:
specifier: 29.5.14
version: 29.5.14
'@types/node':
- specifier: 22.10.1
- version: 22.10.1
+ specifier: 22.10.2
+ version: 22.10.2
+ '@typescript-eslint/parser':
+ specifier: 8.18.0
+ version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
+ '@workleap/eslint-plugin':
+ specifier: workspace:*
+ version: link:../eslint-plugin
+ '@workleap/swc-configs':
+ specifier: workspace:*
+ version: link:../swc-configs
+ '@workleap/tsup-configs':
+ specifier: workspace:*
+ version: link:../tsup-configs
+ '@workleap/typescript-configs':
+ specifier: workspace:*
+ version: link:../typescript-configs
+ eslint:
+ specifier: 8.57.0
+ version: 8.57.0
+ jest:
+ specifier: 29.7.0
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
+ ts-node:
+ specifier: 10.9.2
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
+ tsup:
+ specifier: 8.3.5
+ version: 8.3.5(@swc/core@1.10.1)(jiti@2.4.1)(postcss@8.4.49)(typescript@5.5.4)(yaml@2.6.1)
+ typescript:
+ specifier: 5.5.4
+ version: 5.5.4
+
+ packages/rsbuild-configs:
+ dependencies:
+ '@rsbuild/plugin-basic-ssl':
+ specifier: ^1.1.1
+ version: 1.1.1(@rsbuild/core@1.1.9)
+ '@rsbuild/plugin-image-compress':
+ specifier: ^1.1.0
+ version: 1.1.0(@rsbuild/core@1.1.9)
+ '@rsbuild/plugin-react':
+ specifier: ^1.1.0
+ version: 1.1.0(@rsbuild/core@1.1.9)
+ '@rsbuild/plugin-svgr':
+ specifier: ^1.0.6
+ version: 1.0.6(@rsbuild/core@1.1.9)(typescript@5.5.4)
+ devDependencies:
+ '@rsbuild/core':
+ specifier: 1.1.9
+ version: 1.1.9
+ '@rspack/core':
+ specifier: 1.1.6
+ version: 1.1.6(@swc/helpers@0.5.15)
+ '@swc/core':
+ specifier: 1.10.1
+ version: 1.10.1(@swc/helpers@0.5.15)
+ '@swc/jest':
+ specifier: 0.2.37
+ version: 0.2.37(@swc/core@1.10.1(@swc/helpers@0.5.15))
+ '@types/jest':
+ specifier: 29.5.14
+ version: 29.5.14
+ '@types/node':
+ specifier: 22.10.2
+ version: 22.10.2
'@typescript-eslint/parser':
specifier: 8.18.0
version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
@@ -204,10 +265,10 @@ importers:
version: 8.57.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
tsup:
specifier: 8.3.5
version: 8.3.5(@swc/core@1.10.1)(jiti@2.4.1)(postcss@8.4.49)(typescript@5.5.4)(yaml@2.6.1)
@@ -231,8 +292,8 @@ importers:
version: 5.0.2(prettier@3.4.2)(stylelint@16.11.0(typescript@5.5.4))
devDependencies:
'@types/node':
- specifier: 22.10.1
- version: 22.10.1
+ specifier: 22.10.2
+ version: 22.10.2
'@typescript-eslint/parser':
specifier: 8.18.0
version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
@@ -290,10 +351,10 @@ importers:
version: 8.57.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
tsup:
specifier: 8.3.5
version: 8.3.5(@swc/core@1.10.1)(jiti@2.4.1)(postcss@8.4.49)(typescript@5.5.4)(yaml@2.6.1)
@@ -326,10 +387,10 @@ importers:
version: 8.57.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
tsup:
specifier: 8.3.5
version: 8.3.5(@swc/core@1.10.1)(jiti@2.4.1)(postcss@8.4.49)(typescript@5.5.4)(yaml@2.6.1)
@@ -347,7 +408,7 @@ importers:
dependencies:
'@pmmmwh/react-refresh-webpack-plugin':
specifier: ^0.5.15
- version: 0.5.15(react-refresh@0.16.0)(type-fest@4.30.0)(webpack-dev-server@5.1.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+ version: 0.5.15(react-refresh@0.16.0)(type-fest@4.30.0)(webpack-dev-server@5.2.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
'@svgr/webpack':
specifier: ^8.1.0
version: 8.1.0(typescript@5.5.4)
@@ -356,10 +417,10 @@ importers:
version: 4.24.2
css-loader:
specifier: ^7.1.2
- version: 7.1.2(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+ version: 7.1.2(@rspack/core@1.1.6(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
html-webpack-plugin:
specifier: ^5.6.3
- version: 5.6.3(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+ version: 5.6.3(@rspack/core@1.1.6(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
mini-css-extract-plugin:
specifier: ^2.9.2
version: 2.9.2(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
@@ -368,7 +429,7 @@ importers:
version: 8.4.49
postcss-loader:
specifier: ^8.1.1
- version: 8.1.1(postcss@8.4.49)(typescript@5.5.4)(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+ version: 8.1.1(@rspack/core@1.1.6(@swc/helpers@0.5.15))(postcss@8.4.49)(typescript@5.5.4)(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
react-refresh:
specifier: ^0.16.0
version: 0.16.0
@@ -386,7 +447,7 @@ importers:
version: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
webpack-dev-server:
specifier: '>=5.0.0'
- version: 5.1.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+ version: 5.2.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
devDependencies:
'@svgr/core':
specifier: 8.1.0
@@ -404,8 +465,8 @@ importers:
specifier: 29.5.14
version: 29.5.14
'@types/node':
- specifier: 22.10.1
- version: 22.10.1
+ specifier: 22.10.2
+ version: 22.10.2
'@typescript-eslint/parser':
specifier: 8.18.0
version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
@@ -426,10 +487,10 @@ importers:
version: 8.57.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
tsup:
specifier: 8.3.5
version: 8.3.5(@swc/core@1.10.1)(jiti@2.4.1)(postcss@8.4.49)(typescript@5.5.4)(yaml@2.6.1)
@@ -437,12 +498,245 @@ importers:
specifier: 5.5.4
version: 5.5.4
- sample/app:
+ samples/rsbuild/app:
+ dependencies:
+ '@rsbuild-sample/components':
+ specifier: workspace:*
+ version: link:../components
+ react:
+ specifier: 19.0.0
+ version: 19.0.0
+ react-dom:
+ specifier: 19.0.0
+ version: 19.0.0(react@19.0.0)
+ react-router:
+ specifier: 7.0.2
+ version: 7.0.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ devDependencies:
+ '@rsbuild/core':
+ specifier: 1.1.9
+ version: 1.1.9
+ '@rspack/core':
+ specifier: 1.1.6
+ version: 1.1.6(@swc/helpers@0.5.15)
+ '@swc/core':
+ specifier: 1.10.1
+ version: 1.10.1(@swc/helpers@0.5.15)
+ '@swc/jest':
+ specifier: 0.2.37
+ version: 0.2.37(@swc/core@1.10.1(@swc/helpers@0.5.15))
+ '@testing-library/react':
+ specifier: 16.1.0
+ version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@types/jest':
+ specifier: 29.5.14
+ version: 29.5.14
+ '@types/node':
+ specifier: 22.10.2
+ version: 22.10.2
+ '@types/react':
+ specifier: 19.0.1
+ version: 19.0.1
+ '@types/react-dom':
+ specifier: 19.0.2
+ version: 19.0.2(@types/react@19.0.1)
+ '@typescript-eslint/parser':
+ specifier: 8.18.0
+ version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
+ '@workleap/browserslist-config':
+ specifier: workspace:*
+ version: link:../../../packages/browserslist-config
+ '@workleap/eslint-plugin':
+ specifier: workspace:*
+ version: link:../../../packages/eslint-plugin
+ '@workleap/rsbuild-configs':
+ specifier: workspace:*
+ version: link:../../../packages/rsbuild-configs
+ '@workleap/stylelint-configs':
+ specifier: workspace:*
+ version: link:../../../packages/stylelint-configs
+ '@workleap/swc-configs':
+ specifier: workspace:*
+ version: link:../../../packages/swc-configs
+ '@workleap/typescript-configs':
+ specifier: workspace:*
+ version: link:../../../packages/typescript-configs
+ browserslist:
+ specifier: 4.24.2
+ version: 4.24.2
+ cross-env:
+ specifier: 7.0.3
+ version: 7.0.3
+ eslint:
+ specifier: 8.57.0
+ version: 8.57.0
+ http-server:
+ specifier: 14.1.1
+ version: 14.1.1
+ identity-obj-proxy:
+ specifier: 3.0.0
+ version: 3.0.0
+ jest:
+ specifier: 29.7.0
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
+ jest-environment-jsdom:
+ specifier: 29.7.0
+ version: 29.7.0
+ msw:
+ specifier: 2.6.8
+ version: 2.6.8(@types/node@22.10.2)(typescript@5.5.4)
+ nodemon:
+ specifier: 3.1.7
+ version: 3.1.7
+ stylelint:
+ specifier: 16.11.0
+ version: 16.11.0(typescript@5.5.4)
+ ts-node:
+ specifier: 10.9.2
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
+ typescript:
+ specifier: 5.5.4
+ version: 5.5.4
+
+ samples/rsbuild/components:
+ devDependencies:
+ '@rsbuild/core':
+ specifier: 1.1.9
+ version: 1.1.9
+ '@storybook/react':
+ specifier: 8.4.7
+ version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)
+ '@swc/core':
+ specifier: 1.10.1
+ version: 1.10.1(@swc/helpers@0.5.15)
+ '@swc/jest':
+ specifier: 0.2.37
+ version: 0.2.37(@swc/core@1.10.1(@swc/helpers@0.5.15))
+ '@testing-library/react':
+ specifier: 16.1.0
+ version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@types/jest':
+ specifier: 29.5.14
+ version: 29.5.14
+ '@types/react':
+ specifier: 19.0.1
+ version: 19.0.1
+ '@types/react-dom':
+ specifier: 19.0.2
+ version: 19.0.2(@types/react@19.0.1)
+ '@typescript-eslint/parser':
+ specifier: 8.18.0
+ version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
+ '@workleap/eslint-plugin':
+ specifier: workspace:*
+ version: link:../../../packages/eslint-plugin
+ '@workleap/stylelint-configs':
+ specifier: workspace:*
+ version: link:../../../packages/stylelint-configs
+ '@workleap/swc-configs':
+ specifier: workspace:*
+ version: link:../../../packages/swc-configs
+ '@workleap/typescript-configs':
+ specifier: workspace:*
+ version: link:../../../packages/typescript-configs
+ eslint:
+ specifier: 8.57.0
+ version: 8.57.0
+ identity-obj-proxy:
+ specifier: 3.0.0
+ version: 3.0.0
+ jest:
+ specifier: 29.7.0
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
+ jest-environment-jsdom:
+ specifier: 29.7.0
+ version: 29.7.0
+ react:
+ specifier: 19.0.0
+ version: 19.0.0
+ react-dom:
+ specifier: 19.0.0
+ version: 19.0.0(react@19.0.0)
+ ts-node:
+ specifier: 10.9.2
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
+ typescript:
+ specifier: 5.5.4
+ version: 5.5.4
+
+ samples/storybook:
+ dependencies:
+ react:
+ specifier: 19.0.0
+ version: 19.0.0
+ react-dom:
+ specifier: 19.0.0
+ version: 19.0.0(react@19.0.0)
+ devDependencies:
+ '@rsbuild/core':
+ specifier: 1.1.9
+ version: 1.1.9
+ '@rspack/core':
+ specifier: 1.1.6
+ version: 1.1.6(@swc/helpers@0.5.15)
+ '@storybook/addon-a11y':
+ specifier: 8.4.7
+ version: 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-essentials':
+ specifier: 8.4.7
+ version: 8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-interactions':
+ specifier: 8.4.7
+ version: 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-links':
+ specifier: 8.4.7
+ version: 8.4.7(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/react':
+ specifier: 8.4.7
+ version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)
+ '@types/react':
+ specifier: 19.0.1
+ version: 19.0.1
+ '@types/react-dom':
+ specifier: 19.0.2
+ version: 19.0.2(@types/react@19.0.1)
+ '@workleap/browserslist-config':
+ specifier: workspace:*
+ version: link:../../packages/browserslist-config
+ '@workleap/eslint-plugin':
+ specifier: workspace:*
+ version: link:../../packages/eslint-plugin
+ '@workleap/rsbuild-configs':
+ specifier: workspace:*
+ version: link:../../packages/rsbuild-configs
+ '@workleap/typescript-configs':
+ specifier: workspace:*
+ version: link:../../packages/typescript-configs
+ browserslist:
+ specifier: 4.24.2
+ version: 4.24.2
+ eslint:
+ specifier: 8.57.0
+ version: 8.57.0
+ http-server:
+ specifier: 14.1.1
+ version: 14.1.1
+ storybook:
+ specifier: 8.4.7
+ version: 8.4.7(prettier@3.4.2)
+ storybook-react-rsbuild:
+ specifier: 0.1.6
+ version: 0.1.6(@rsbuild/core@1.1.9)(@rspack/core@1.1.6(@swc/helpers@0.5.15))(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.28.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)(webpack@5.97.1(esbuild@0.24.0))
+ typescript:
+ specifier: 5.5.4
+ version: 5.5.4
+
+ samples/webpack/app:
dependencies:
- '@sample/components':
+ '@webpack-sample/components':
specifier: workspace:*
version: link:../components
- '@sample/tsup-lib':
+ '@webpack-sample/tsup-lib':
specifier: workspace:*
version: link:../tsup-lib
react:
@@ -471,8 +765,8 @@ importers:
specifier: 29.5.14
version: 29.5.14
'@types/node':
- specifier: 22.10.1
- version: 22.10.1
+ specifier: 22.10.2
+ version: 22.10.2
'@types/react':
specifier: 19.0.1
version: 19.0.1
@@ -484,25 +778,25 @@ importers:
version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
'@workleap/browserslist-config':
specifier: workspace:*
- version: link:../../packages/browserslist-config
+ version: link:../../../packages/browserslist-config
'@workleap/eslint-plugin':
specifier: workspace:*
- version: link:../../packages/eslint-plugin
+ version: link:../../../packages/eslint-plugin
'@workleap/postcss-configs':
specifier: workspace:*
- version: link:../../packages/postcss-configs
+ version: link:../../../packages/postcss-configs
'@workleap/stylelint-configs':
specifier: workspace:*
- version: link:../../packages/stylelint-configs
+ version: link:../../../packages/stylelint-configs
'@workleap/swc-configs':
specifier: workspace:*
- version: link:../../packages/swc-configs
+ version: link:../../../packages/swc-configs
'@workleap/typescript-configs':
specifier: workspace:*
- version: link:../../packages/typescript-configs
+ version: link:../../../packages/typescript-configs
'@workleap/webpack-configs':
specifier: workspace:*
- version: link:../../packages/webpack-configs
+ version: link:../../../packages/webpack-configs
browserslist:
specifier: 4.24.2
version: 4.24.2
@@ -520,13 +814,13 @@ importers:
version: 3.0.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
jest-environment-jsdom:
specifier: 29.7.0
version: 29.7.0
msw:
specifier: 2.6.8
- version: 2.6.8(@types/node@22.10.1)(typescript@5.5.4)
+ version: 2.6.8(@types/node@22.10.2)(typescript@5.5.4)
nodemon:
specifier: 3.1.7
version: 3.1.7
@@ -538,7 +832,7 @@ importers:
version: 16.11.0(typescript@5.5.4)
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
typescript:
specifier: 5.5.4
version: 5.5.4
@@ -547,12 +841,12 @@ importers:
version: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
webpack-cli:
specifier: 5.1.4
- version: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1)
+ version: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1)
webpack-dev-server:
- specifier: 5.1.0
- version: 5.1.0(webpack-cli@5.1.4)(webpack@5.97.1)
+ specifier: 5.2.0
+ version: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1)
- sample/components:
+ samples/webpack/components:
devDependencies:
'@swc/core':
specifier: 1.10.1
@@ -577,16 +871,16 @@ importers:
version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
'@workleap/eslint-plugin':
specifier: workspace:*
- version: link:../../packages/eslint-plugin
+ version: link:../../../packages/eslint-plugin
'@workleap/stylelint-configs':
specifier: workspace:*
- version: link:../../packages/stylelint-configs
+ version: link:../../../packages/stylelint-configs
'@workleap/swc-configs':
specifier: workspace:*
- version: link:../../packages/swc-configs
+ version: link:../../../packages/swc-configs
'@workleap/typescript-configs':
specifier: workspace:*
- version: link:../../packages/typescript-configs
+ version: link:../../../packages/typescript-configs
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -595,7 +889,7 @@ importers:
version: 3.0.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ version: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
jest-environment-jsdom:
specifier: 29.7.0
version: 29.7.0
@@ -607,25 +901,25 @@ importers:
version: 19.0.0(react@19.0.0)
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
typescript:
specifier: 5.5.4
version: 5.5.4
- sample/tsup-lib:
+ samples/webpack/tsup-lib:
devDependencies:
'@typescript-eslint/parser':
specifier: 8.18.0
version: 8.18.0(eslint@8.57.0)(typescript@5.5.4)
'@workleap/eslint-plugin':
specifier: workspace:*
- version: link:../../packages/eslint-plugin
+ version: link:../../../packages/eslint-plugin
'@workleap/tsup-configs':
specifier: workspace:*
- version: link:../../packages/tsup-configs
+ version: link:../../../packages/tsup-configs
'@workleap/typescript-configs':
specifier: workspace:*
- version: link:../../packages/typescript-configs
+ version: link:../../../packages/typescript-configs
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -642,6 +936,9 @@ packages:
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
+ '@adobe/css-tools@4.4.1':
+ resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==}
+
'@altano/repository-tools@0.1.1':
resolution: {integrity: sha512-5vbUs2A98CC3g1AlOBdkBE0BMukkLjLIsMHAtuxg6Pt9dQXxYWdLKOf66v6c/vIqtNcgTMv0oGtddLdMuH9X6w==}
@@ -1608,6 +1905,15 @@ packages:
peerDependencies:
effect: ^3.6.5
+ '@emnapi/core@1.3.1':
+ resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==}
+
+ '@emnapi/runtime@1.3.1':
+ resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
+
+ '@emnapi/wasi-threads@1.0.1':
+ resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
+
'@esbuild/aix-ppc64@0.24.0':
resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
engines: {node: '>=18'}
@@ -1752,22 +2058,12 @@ packages:
cpu: [x64]
os: [win32]
- '@eslint-community/eslint-utils@4.4.0':
- resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
'@eslint-community/eslint-utils@4.4.1':
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- '@eslint-community/regexpp@4.10.0':
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
'@eslint-community/regexpp@4.12.1':
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
@@ -1895,8 +2191,8 @@ packages:
resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ '@jridgewell/gen-mapping@0.3.8':
+ resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
engines: {node: '>=6.0.0'}
'@jridgewell/resolve-uri@3.1.2':
@@ -1950,23 +2246,119 @@ packages:
'@manypkg/get-packages@1.1.3':
resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
+ '@mdx-js/react@3.1.0':
+ resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==}
+ peerDependencies:
+ '@types/react': '>=16'
+ react: '>=16'
+
+ '@module-federation/runtime-tools@0.5.1':
+ resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==}
+
+ '@module-federation/runtime@0.5.1':
+ resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==}
+
+ '@module-federation/sdk@0.5.1':
+ resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==}
+
+ '@module-federation/webpack-bundler-runtime@0.5.1':
+ resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==}
+
'@mswjs/interceptors@0.37.3':
resolution: {integrity: sha512-USvgCL/uOGFtVa6SVyRrC8kIAedzRohxIXN5LISlg5C5vLZCn7dgMFVSNhSF9cuBEFrm/O2spDWEZeMnw4ZXYg==}
engines: {node: '>=18'}
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
+ '@napi-rs/image-android-arm64@1.9.2':
+ resolution: {integrity: sha512-DQNI06ukKqpF4eogz9zyxfU+GYp11TfDqSNWKmk/IRU2oiB0DEgskuj7ZzaKMPJWFRZjI86V233UrrNRh76h2Q==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
+ '@napi-rs/image-darwin-arm64@1.9.2':
+ resolution: {integrity: sha512-w+0X87sORbC2uDpH7NAdELOnvzhu3dB19h2oMaD+YIv/+CVXV5eK2PS3zkRgMLCinVtFOZFZK3dFbHU3kncCRw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
+ '@napi-rs/image-darwin-x64@1.9.2':
+ resolution: {integrity: sha512-8SnFDcgUSoL6Y38lstXi5FYECD1f4dJqQe2UCTwciED8gZnpC8Pju7JYJWcYgHHXn1JnKP9T1lPlSaX+L56EgA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
- '@npmcli/config@8.3.4':
+ '@napi-rs/image-freebsd-x64@1.9.2':
+ resolution: {integrity: sha512-oS0+iSb8AekjaHgTZdARKceqTPxSokByLzNQ9vGf2lZlTwlRFmXGq4XYutyzqzRuLT3BATLwtGMXiguMEYMuUw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@napi-rs/image-linux-arm-gnueabihf@1.9.2':
+ resolution: {integrity: sha512-bsbZSvw3wa7yaLVvz4M5VhJaB9LmgjAL3W7rnmXaX5BgpaQImNDm9MrxPG8ennr9Pbn6qDtCSioOz53ZgWUtgg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@napi-rs/image-linux-arm64-gnu@1.9.2':
+ resolution: {integrity: sha512-tiN9RMwEIcA8TodvmxdeJqsRdUGKAmxQ2aa0FkYjshdkmChG/sqUtUoL9LdmDf1tw1IACrSuT2Wj4LevxBdIJA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@napi-rs/image-linux-arm64-musl@1.9.2':
+ resolution: {integrity: sha512-w6Sx1j9PtqO2bP3Jl6nuMryzxA3zsoc1U8u1H7AZketyhxXIxqVm0oGomZGs5Bgshzau45bcWinp6GWrlSwt6A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@napi-rs/image-linux-x64-gnu@1.9.2':
+ resolution: {integrity: sha512-yB/s9wNB/9YHpQ4TwN8NWMA1tEK1gPLQwtysa68yMdHczb+7BTCKCIYIHD9rUulyT1Q/VgLIJCUMoxve0pIoeg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@napi-rs/image-linux-x64-musl@1.9.2':
+ resolution: {integrity: sha512-x9dRlo27xYXonh+gZZTqQL4lAfi/lhi8K8LE2hczbZffqmXvWU7NuHSgPVVeU/nvcMMqw1Cjzn81h7ny44SLbQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@napi-rs/image-wasm32-wasi@1.9.2':
+ resolution: {integrity: sha512-BeA1wzzIG4+tdAwXWaAjObBOC6SzIbq0IhykSQ1xCGvYwd8stsn7ktPRz5b55PDo+Doj65PCT4H/xUgFcSiLCw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@napi-rs/image-win32-ia32-msvc@1.9.2':
+ resolution: {integrity: sha512-JDJP04Hg9Qru5Pth4gfBkXz9hZd/otx6ymi2VTuSKDFjpJIjk4tyUr9+BIE1ghFCHDzeJGVe7CDGdF/NTA1xrg==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@napi-rs/image-win32-x64-msvc@1.9.2':
+ resolution: {integrity: sha512-baRyTED6FkTsPliSOH7x8TV/cyAST9y6L1ClSgSCVEx7+W8MKKig90fF302kEa2PwMAyrXM3Ytq9KuIC7xJ+eA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@napi-rs/image@1.9.2':
+ resolution: {integrity: sha512-CvTC3XL5/BzHaVkJOZy31xOJLNSY3rBuUIQixaE/LwEQNSUdaxWa9gUyUkC9lUekkUp26CzaLLj2w7l7bxB1ag==}
+ engines: {node: '>= 10'}
+
+ '@napi-rs/wasm-runtime@0.2.5':
+ resolution: {integrity: sha512-kwUxR7J9WLutBbulqg1dfOrMTwhMdXLdcGUhcbCcGwnPLt3gz19uHVdwH1syKVDbE022ZS2vZxOWflFLS0YTjw==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@npmcli/config@8.3.4':
resolution: {integrity: sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -2089,6 +2481,18 @@ packages:
webpack-plugin-serve:
optional: true
+ '@polka/url@1.0.0-next.28':
+ resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
+
+ '@rollup/pluginutils@5.1.3':
+ resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
'@rollup/rollup-android-arm-eabi@4.28.1':
resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==}
cpu: [arm]
@@ -2184,6 +2588,114 @@ packages:
cpu: [x64]
os: [win32]
+ '@rsbuild/core@1.1.9':
+ resolution: {integrity: sha512-mHZveEwlTtW9nxWa+T0xUm6ssm+HkDYZ0NENLfWMUmsL0LjMJrpQzRlbD+p5+9Uf+KXUo3Dbtv0ScA+p7cuGTg==}
+ engines: {node: '>=16.7.0'}
+ hasBin: true
+
+ '@rsbuild/plugin-basic-ssl@1.1.1':
+ resolution: {integrity: sha512-q4u7H8yh/S/DHwxG85bWbGXFiVV9RMDJDupOBHJVPtevU9mLCB4n5Qbrxu/l8CCdmZcBlvfWGjkDA/YoY61dig==}
+ peerDependencies:
+ '@rsbuild/core': 0.x || 1.x || ^1.0.1-beta.0
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
+
+ '@rsbuild/plugin-image-compress@1.1.0':
+ resolution: {integrity: sha512-ZyK3QlcuQmqd8h3vGCX0+iEo1lBCDJEbJjcbZkRR6bs4IR2YNPP/rRo8eCPWwRS5/GBkTkwZhznfyjraDRtJpw==}
+ peerDependencies:
+ '@rsbuild/core': 1.x
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
+
+ '@rsbuild/plugin-react@1.1.0':
+ resolution: {integrity: sha512-uqdRoV2V91G1XIA14dAmxqYTlTDVf0ktpE7TgwG29oQ2j+DerF1kh29WPHK9HvGE34JTfaBrsme2Zmb6bGD0cw==}
+ peerDependencies:
+ '@rsbuild/core': 1.x
+
+ '@rsbuild/plugin-svgr@1.0.6':
+ resolution: {integrity: sha512-znLFk2fumNObMntkjrpZhO3guXmaQZbqv0JjhqBVng63bNdsJAmfZGXX5He8Avp4VDlv6EJI6BC5SIEs8XspTg==}
+ peerDependencies:
+ '@rsbuild/core': 1.x
+
+ '@rsbuild/plugin-type-check@1.1.0':
+ resolution: {integrity: sha512-9W/TxibRe7L6i4JnsIDRJfkvypPZQqCLO/jrAp+Liv4SCo9BVmbk/Rmpj+hfo2gjyewobk0AVi4/YQ5wOP7GSQ==}
+ peerDependencies:
+ '@rsbuild/core': 1.x
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
+
+ '@rspack/binding-darwin-arm64@1.1.6':
+ resolution: {integrity: sha512-x9dxm2yyiMuL1FBwvWNNMs2/mEUJmRoSRgYb8pblR7HDaTRORrjBFCqhaYlGyAqtQaeUy7o2VAQlE0BavIiFYA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rspack/binding-darwin-x64@1.1.6':
+ resolution: {integrity: sha512-o0seilveftGiDjy3VPxug20HmAgYyQbNEuagR3i93/t/PT/eWXHnik+C1jjwqcivZL1Zllqvy4tbZw393aROEQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rspack/binding-linux-arm64-gnu@1.1.6':
+ resolution: {integrity: sha512-4atnoknJx/c3KaQElsMIxHMpPf2jcRRdWsH/SdqJIRSrkWWakMK9Yv4TFwH680I4HDTMf1XLboMVScHzW8e+Mg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rspack/binding-linux-arm64-musl@1.1.6':
+ resolution: {integrity: sha512-7QMtwUtgFpt3/Y3/X18fSyN+kk4H8ZnZ8tDzQskVWc/j2AQYShZq56XQYqrhClzwujcCVAHauIQ2eiuJ2ASGag==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rspack/binding-linux-x64-gnu@1.1.6':
+ resolution: {integrity: sha512-MTjDEfPn4TwHoqs5d5Fck06kmXiTHZctGIcRVfrpg0RK0r1NLEHN+oosavRZ9c9H70f34+NmcHk+/qvV4c8lWg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rspack/binding-linux-x64-musl@1.1.6':
+ resolution: {integrity: sha512-LqDw7PTVr/4ZuGA0izgDQfamfr72USFHltR1Qhy2YVC3JmDmhG/pQi13LHcOLVaGH1xoeyCmEPNJpVizzDxSjg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rspack/binding-win32-arm64-msvc@1.1.6':
+ resolution: {integrity: sha512-RHApLM93YN0WdHpS35u2cm7VCqZ8Yg3CrNRL16VJtyT9e6MBqeScoe4XIgIWKPm7edFyedYAjLX0wQOApwfjkg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rspack/binding-win32-ia32-msvc@1.1.6':
+ resolution: {integrity: sha512-Y6lx4q0eJawRfMPBo/AclTJAPTZ325DSPFBQJB3TnWh9Z2X7P7pQcYc8PHDmfDuYRIdg5WRsQRvVxihSvF7v8w==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rspack/binding-win32-x64-msvc@1.1.6':
+ resolution: {integrity: sha512-UuCsfhC/yNuU7xLASOxNXcmsXi2ZvBX14GkxvcdChw6q7IIGNYUKXo1zgR8C1PE/6qDSxmLxbRMS+71d0H3HQg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rspack/binding@1.1.6':
+ resolution: {integrity: sha512-vfeBEgGOYVwqj5cQjGyvdfrr/BEihAHlyIsobL98FZjTF0uig+bj2yJUH5Ib5F0BpIUKVG3Pw0IjlUBqcVpZsQ==}
+
+ '@rspack/core@1.1.6':
+ resolution: {integrity: sha512-q0VLphOF5VW2FEG7Vbdq3Ke4I74FbELE/8xmKghSalFtULLZ44SoSz8lyotfMim9GXIRFhDokAaH8WICmPxG+g==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ '@swc/helpers': '>=0.5.1'
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+
+ '@rspack/lite-tapable@1.0.1':
+ resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==}
+ engines: {node: '>=16.0.0'}
+
+ '@rspack/plugin-react-refresh@1.0.1':
+ resolution: {integrity: sha512-KSBc3bsr3mrAPViv7w9MpE9KEWm6q87EyRXyHlRfJ9PpQ56NbX9KZ7AXo7jPeECb0q5sfpM2PSEf+syBiMgLSw==}
+ peerDependencies:
+ react-refresh: '>=0.10.0 <1.0.0'
+ peerDependenciesMeta:
+ react-refresh:
+ optional: true
+
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
@@ -2205,11 +2717,178 @@ packages:
engines: {node: '>=8.10'}
hasBin: true
+ '@storybook/addon-a11y@8.4.7':
+ resolution: {integrity: sha512-GpUvXp6n25U1ZSv+hmDC+05BEqxWdlWjQTb/GaboRXZQeMBlze6zckpVb66spjmmtQAIISo0eZxX1+mGcVR7lA==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-actions@8.4.7':
+ resolution: {integrity: sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-backgrounds@8.4.7':
+ resolution: {integrity: sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-controls@8.4.7':
+ resolution: {integrity: sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-docs@8.4.7':
+ resolution: {integrity: sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-essentials@8.4.7':
+ resolution: {integrity: sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-highlight@8.4.7':
+ resolution: {integrity: sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-interactions@8.4.7':
+ resolution: {integrity: sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-links@8.4.7':
+ resolution: {integrity: sha512-L/1h4dMeMKF+MM0DanN24v5p3faNYbbtOApMgg7SlcBT/tgo3+cAjkgmNpYA8XtKnDezm+T2mTDhB8mmIRZpIQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ storybook: ^8.4.7
+ peerDependenciesMeta:
+ react:
+ optional: true
+
+ '@storybook/addon-measure@8.4.7':
+ resolution: {integrity: sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-outline@8.4.7':
+ resolution: {integrity: sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-toolbars@8.4.7':
+ resolution: {integrity: sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/addon-viewport@8.4.7':
+ resolution: {integrity: sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/blocks@8.4.7':
+ resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ storybook: ^8.4.7
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ '@storybook/components@8.4.7':
+ resolution: {integrity: sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@storybook/core-webpack@8.4.7':
+ resolution: {integrity: sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/core@8.4.7':
+ resolution: {integrity: sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==}
+ peerDependencies:
+ prettier: ^2 || ^3
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+
+ '@storybook/csf-plugin@8.4.7':
+ resolution: {integrity: sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==}
+ peerDependencies:
+ storybook: ^8.4.7
+
'@storybook/csf@0.1.12':
resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==}
- '@stylistic/eslint-plugin-ts@2.12.0':
- resolution: {integrity: sha512-JqoHGQCeW0dC3LN/7+ZRwTOCs3kBum2b4k7ovx+0RXeaDIINs5F+/Mp/NvTCPqDzUlBkd1HOaviKyaEWpKA7Yw==}
+ '@storybook/global@5.0.0':
+ resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==}
+
+ '@storybook/icons@1.3.0':
+ resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+
+ '@storybook/instrumenter@8.4.7':
+ resolution: {integrity: sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/manager-api@8.4.7':
+ resolution: {integrity: sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@storybook/preview-api@8.4.7':
+ resolution: {integrity: sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@storybook/react-docgen-typescript-plugin@1.0.1':
+ resolution: {integrity: sha512-dqbHa+5gaxaklFCuV1WTvljVPTo3QIJgpW4Ln+QeME7osPZUnUhjN2/djvo+sxrWUrTTuqX5jkn291aDngu9Tw==}
+ peerDependencies:
+ typescript: '>= 3.x'
+ webpack: '>= 4'
+
+ '@storybook/react-dom-shim@8.4.7':
+ resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ storybook: ^8.4.7
+
+ '@storybook/react@8.4.7':
+ resolution: {integrity: sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@storybook/test': 8.4.7
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ storybook: ^8.4.7
+ typescript: '>= 4.2.x'
+ peerDependenciesMeta:
+ '@storybook/test':
+ optional: true
+ typescript:
+ optional: true
+
+ '@storybook/test@8.4.7':
+ resolution: {integrity: sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==}
+ peerDependencies:
+ storybook: ^8.4.7
+
+ '@storybook/theming@8.4.7':
+ resolution: {integrity: sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@stylistic/eslint-plugin-ts@2.12.1':
+ resolution: {integrity: sha512-Xx1NIioeW6LLlOfq5L/dLSrUXvi6q80UXDNbn/rXjKCzFT4a8wKwtp1q25kssdr1JEXI9a6tOHwFsh4Em+MoGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.40.0'
@@ -2380,6 +3059,10 @@ packages:
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
engines: {node: '>=18'}
+ '@testing-library/jest-dom@6.5.0':
+ resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+
'@testing-library/react@16.1.0':
resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==}
engines: {node: '>=18'}
@@ -2395,6 +3078,12 @@ packages:
'@types/react-dom':
optional: true
+ '@testing-library/user-event@14.5.2':
+ resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@testing-library/dom': '>=7.21.4'
+
'@tootallnate/once@2.0.0':
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
@@ -2415,6 +3104,9 @@ packages:
'@tsconfig/node16@1.0.4':
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
+ '@tybys/wasm-util@0.9.0':
+ resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
+
'@types/acorn@4.0.6':
resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
@@ -2454,12 +3146,18 @@ packages:
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ '@types/doctrine@0.0.9':
+ resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==}
+
'@types/eslint-scope@3.7.7':
resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
'@types/eslint@8.56.10':
resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==}
+ '@types/eslint@9.6.1':
+ resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
+
'@types/estree-jsx@1.0.5':
resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
@@ -2484,6 +3182,9 @@ packages:
'@types/html-minifier-terser@6.1.0':
resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==}
+ '@types/html-minifier-terser@7.0.2':
+ resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==}
+
'@types/http-errors@2.0.4':
resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
@@ -2520,6 +3221,9 @@ packages:
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ '@types/mdx@2.0.13':
+ resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+
'@types/mime@1.3.5':
resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
@@ -2532,8 +3236,11 @@ packages:
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
- '@types/node@22.10.1':
- resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
+ '@types/node@18.19.68':
+ resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==}
+
+ '@types/node@22.10.2':
+ resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
'@types/qs@6.9.17':
resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==}
@@ -2549,6 +3256,9 @@ packages:
'@types/react@19.0.1':
resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==}
+ '@types/resolve@1.20.6':
+ resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==}
+
'@types/retry@0.12.2':
resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==}
@@ -2582,6 +3292,9 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@types/uuid@9.0.8':
+ resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
+
'@types/ws@8.5.13':
resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
@@ -2641,6 +3354,24 @@ packages:
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+ '@vitest/expect@2.0.5':
+ resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==}
+
+ '@vitest/pretty-format@2.0.5':
+ resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==}
+
+ '@vitest/pretty-format@2.1.8':
+ resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==}
+
+ '@vitest/spy@2.0.5':
+ resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
+
+ '@vitest/utils@2.0.5':
+ resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
+
+ '@vitest/utils@2.1.8':
+ resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
+
'@webassemblyjs/ast@1.14.1':
resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
@@ -2883,9 +3614,17 @@ packages:
resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
engines: {node: '>= 0.4'}
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
+
ast-types-flow@0.0.8:
resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+ ast-types@0.16.1:
+ resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==}
+ engines: {node: '>=4'}
+
astral-regex@2.0.0:
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
engines: {node: '>=8'}
@@ -2974,6 +3713,10 @@ packages:
before-after-hook@2.2.3:
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
+ better-opn@3.0.2:
+ resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
+ engines: {node: '>=12.0.0'}
+
better-path-resolve@1.0.0:
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
engines: {node: '>=4'}
@@ -3005,6 +3748,9 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
+ browser-assert@1.2.1:
+ resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==}
+
browserslist@4.24.2:
resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
@@ -3042,6 +3788,10 @@ packages:
resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
engines: {node: '>= 0.4'}
+ call-bound@1.0.2:
+ resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==}
+ engines: {node: '>= 0.4'}
+
call-me-maybe@1.0.2:
resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
@@ -3063,13 +3813,25 @@ packages:
caniuse-lite@1.0.30001687:
resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==}
+ case-sensitive-paths-webpack-plugin@2.4.0:
+ resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
+ engines: {node: '>=4'}
+
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+ chai@5.1.2:
+ resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
+ engines: {node: '>=12'}
+
chalk-template@1.1.0:
resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==}
engines: {node: '>=14.16'}
+ chalk@3.0.0:
+ resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
+
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -3106,6 +3868,10 @@ packages:
chardet@0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ check-error@2.1.1:
+ resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
+ engines: {node: '>= 16'}
+
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -3208,6 +3974,9 @@ packages:
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
engines: {node: '>= 12'}
+ commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
compressible@2.0.18:
resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
engines: {node: '>= 0.6'}
@@ -3234,6 +4003,9 @@ packages:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
+ constants-browserify@1.0.0:
+ resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==}
+
content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
@@ -3266,6 +4038,9 @@ packages:
core-js-pure@3.39.0:
resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==}
+ core-js@3.39.0:
+ resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==}
+
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
@@ -3304,10 +4079,6 @@ packages:
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
hasBin: true
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -3368,6 +4139,9 @@ packages:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
+ css.escape@1.5.1:
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+
cssdb@8.2.3:
resolution: {integrity: sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==}
@@ -3431,15 +4205,6 @@ packages:
supports-color:
optional: true
- debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
@@ -3459,6 +4224,9 @@ packages:
resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==}
engines: {node: '>=14.16'}
+ dedent@0.7.0:
+ resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
+
dedent@1.5.3:
resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
peerDependencies:
@@ -3467,6 +4235,10 @@ packages:
babel-plugin-macros:
optional: true
+ deep-eql@5.0.2:
+ resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
+ engines: {node: '>=6'}
+
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -3489,6 +4261,10 @@ packages:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
+ define-lazy-prop@2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
define-lazy-prop@3.0.0:
resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
engines: {node: '>=12'}
@@ -3573,6 +4349,9 @@ packages:
dom-accessibility-api@0.5.16:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+ dom-accessibility-api@0.6.3:
+ resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
+
dom-converter@0.2.0:
resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==}
@@ -3627,8 +4406,8 @@ packages:
effect@3.6.5:
resolution: {integrity: sha512-NhopZTAKljaAlR0CEroOAJJngdqg7bzlnWcDrCwh4d2WNVohVbBtUS4SGqLt8tUy7IFsTWATYiUtmhDG+YELjA==}
- electron-to-chromium@1.5.72:
- resolution: {integrity: sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==}
+ electron-to-chromium@1.5.73:
+ resolution: {integrity: sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==}
emittery@0.13.1:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
@@ -3655,6 +4434,9 @@ packages:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'}
+ endent@2.1.0:
+ resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==}
+
enhanced-resolve@5.17.1:
resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
engines: {node: '>=10.13.0'}
@@ -3722,6 +4504,11 @@ packages:
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
+ esbuild-register@3.6.0:
+ resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
+ peerDependencies:
+ esbuild: '>=0.12 <1'
+
esbuild@0.24.0:
resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
engines: {node: '>=18'}
@@ -3918,6 +4705,12 @@ packages:
estree-util-visit@2.0.0:
resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -3973,6 +4766,9 @@ packages:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
+ fast-json-parse@1.0.3:
+ resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==}
+
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
@@ -4024,6 +4820,10 @@ packages:
resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
engines: {node: '>= 0.8'}
+ find-cache-dir@3.3.2:
+ resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
+ engines: {node: '>=8'}
+
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
@@ -4044,9 +4844,6 @@ packages:
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
hasBin: true
- flatted@3.3.1:
- resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
-
flatted@3.3.2:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
@@ -4081,6 +4878,10 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
+ fs-extra@11.2.0:
+ resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
+ engines: {node: '>=14.14'}
+
fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@@ -4119,8 +4920,8 @@ packages:
resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==}
engines: {node: '>=18'}
- get-intrinsic@1.2.5:
- resolution: {integrity: sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==}
+ get-intrinsic@1.2.6:
+ resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==}
engines: {node: '>= 0.4'}
get-package-type@0.1.0:
@@ -4159,6 +4960,7 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
global-modules@2.0.0:
resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
@@ -4270,6 +5072,11 @@ packages:
engines: {node: '>=12'}
hasBin: true
+ html-minifier-terser@7.2.0:
+ resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ hasBin: true
+
html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
engines: {node: '>=8'}
@@ -4361,10 +5168,6 @@ packages:
ignore-by-default@1.0.1:
resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
- ignore@5.3.1:
- resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
- engines: {node: '>= 4'}
-
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -4395,6 +5198,7 @@ packages:
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.3:
resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
@@ -4437,6 +5241,10 @@ packages:
is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+ is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+
is-array-buffer@3.0.4:
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
engines: {node: '>= 0.4'}
@@ -4482,8 +5290,13 @@ packages:
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
- is-docker@3.0.0:
- resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
@@ -4630,6 +5443,10 @@ packages:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
is-wsl@3.1.0:
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
engines: {node: '>=16'}
@@ -4851,6 +5668,10 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
+ jsdoc-type-pratt-parser@4.1.0:
+ resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
+ engines: {node: '>=12.0.0'}
+
jsdom@20.0.3:
resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==}
engines: {node: '>=14'}
@@ -4865,6 +5686,11 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -4903,6 +5729,9 @@ packages:
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@@ -4922,8 +5751,8 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
- knip@5.39.2:
- resolution: {integrity: sha512-BuvuWRllLWV/r2G4m9ggNH+DZ6gouP/dhtJPXVlMbWNF++w9/EfrF6k2g7YBKCwjzCC+PXmYtpH8S2t8RjnY4Q==}
+ knip@5.39.4:
+ resolution: {integrity: sha512-IiNFwfe8xDFwuGzBY8lKvrY3hhR1I81iCaJ8nd85cxT7LxB7cDd73WP3MrzZylE9Vec1HhC0YLFiAL7jh5OYEQ==}
engines: {node: '>=18.6.0'}
hasBin: true
peerDependencies:
@@ -5014,6 +5843,9 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
+ loupe@3.1.2:
+ resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
+
lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
@@ -5027,6 +5859,13 @@ packages:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
+ magic-string@0.30.15:
+ resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==}
+
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
@@ -5037,6 +5876,13 @@ packages:
makeerror@1.0.12:
resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+ map-or-similar@1.5.0:
+ resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==}
+
+ math-intrinsics@1.0.0:
+ resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==}
+ engines: {node: '>= 0.4'}
+
mathml-tag-names@2.1.3:
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
@@ -5087,6 +5933,9 @@ packages:
resolution: {integrity: sha512-q9MmZXd2rRWHS6GU3WEm3HyiXZyyoA1DqdOhEq0lxPBmKb5S7IAOwX0RgUCwJfqjelDCySa5h8ujOy24LqsWcw==}
engines: {node: '>= 4.0.0'}
+ memoizerific@1.11.3:
+ resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
+
meow@13.2.0:
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
engines: {node: '>=18'}
@@ -5217,6 +6066,10 @@ packages:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
mini-css-extract-plugin@2.9.2:
resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==}
engines: {node: '>= 12.13.0'}
@@ -5233,8 +6086,8 @@ packages:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
- minimist@0.2.4:
- resolution: {integrity: sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ==}
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
@@ -5251,12 +6104,13 @@ packages:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+
ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -5402,6 +6256,9 @@ packages:
resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
engines: {node: '>= 0.4'}
+ objectorarray@1.0.5:
+ resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==}
+
obuf@1.1.2:
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
@@ -5424,6 +6281,10 @@ packages:
resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
engines: {node: '>=18'}
+ open@8.4.2:
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
+
opener@1.5.2:
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
hasBin: true
@@ -5527,6 +6388,9 @@ packages:
pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -5563,6 +6427,10 @@ packages:
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ pathval@2.0.0:
+ resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
+ engines: {node: '>= 14.16'}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -5593,6 +6461,10 @@ packages:
pkg-types@1.2.1:
resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
+ polished@4.3.1:
+ resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
+ engines: {node: '>=10'}
+
portfinder@1.0.32:
resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==}
engines: {node: '>= 0.12.0'}
@@ -5739,8 +6611,8 @@ packages:
peerDependencies:
postcss: ^8.1.0
- postcss-modules-local-by-default@4.1.0:
- resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==}
+ postcss-modules-local-by-default@4.2.0:
+ resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
@@ -5869,6 +6741,10 @@ packages:
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
promise-inflight@1.0.1:
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
peerDependencies:
@@ -5898,6 +6774,9 @@ packages:
pstree.remy@1.1.8:
resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
+ punycode@1.4.1:
+ resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -5942,6 +6821,20 @@ packages:
resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
engines: {node: '>= 0.8'}
+ react-docgen-typescript@2.2.2:
+ resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==}
+ peerDependencies:
+ typescript: '>= 4.3.x'
+
+ react-docgen@7.1.0:
+ resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==}
+ engines: {node: '>=16.14.0'}
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
react-dom@19.0.0:
resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
peerDependencies:
@@ -5970,6 +6863,10 @@ packages:
react-dom:
optional: true
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
react@19.0.0:
resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
engines: {node: '>=0.10.0'}
@@ -6001,10 +6898,21 @@ packages:
resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==}
engines: {node: '>= 14.16.0'}
+ recast@0.23.9:
+ resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==}
+ engines: {node: '>= 4'}
+
rechoir@0.8.0:
resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==}
engines: {node: '>= 10.13.0'}
+ redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+
+ reduce-configs@1.1.0:
+ resolution: {integrity: sha512-DQxy6liNadHfrLahZR7lMdc227NYVaQZhY5FMsxLEjX8X0SCuH+ESHSLCoz2yDZFq1/CLMDOAHdsEHwOEXKtvg==}
+
reflect.getprototypeof@1.0.8:
resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==}
engines: {node: '>= 0.4'}
@@ -6110,6 +7018,7 @@ packages:
rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
rollup@4.28.1:
@@ -6117,6 +7026,14 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ rsbuild-plugin-html-minifier-terser@1.1.1:
+ resolution: {integrity: sha512-rbDLv+XmGeSQo9JWKSwBst3Qwx1opLqtQCnQ3t9Z0F0ZTxKOC1S/ypPv5tSn/S3GMHct5Yb76mMgh6p80hjOAQ==}
+ peerDependencies:
+ '@rsbuild/core': 1.x || ^1.0.1-beta.0
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
+
run-applescript@7.0.0:
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
engines: {node: '>=18'}
@@ -6149,6 +7066,9 @@ packages:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
engines: {node: '>=v12.22.7'}
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
scheduler@0.25.0:
resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
@@ -6156,9 +7076,9 @@ packages:
resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
engines: {node: '>= 10.13.0'}
- schema-utils@4.2.0:
- resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==}
- engines: {node: '>= 12.13.0'}
+ schema-utils@4.3.0:
+ resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==}
+ engines: {node: '>= 10.13.0'}
secure-compare@3.0.1:
resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==}
@@ -6227,8 +7147,20 @@ packages:
resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
engines: {node: '>= 0.4'}
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
signal-exit@3.0.7:
@@ -6242,6 +7174,10 @@ packages:
resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==}
engines: {node: '>=10'}
+ sirv@2.0.4:
+ resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
+ engines: {node: '>= 10'}
+
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
@@ -6344,6 +7280,38 @@ packages:
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
engines: {node: '>=18'}
+ storybook-builder-rsbuild@0.1.6:
+ resolution: {integrity: sha512-q1ecTYBDPmtycZYQhGO+z24RlblTZo6hS0jz6ISkKpOTfb35bX09XaNtT5JVAOzjwi9YYZUNAjKwJzvpmRcWOA==}
+ peerDependencies:
+ '@rsbuild/core': ^1.0.1
+ storybook: ^8.2.1
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ storybook-react-rsbuild@0.1.6:
+ resolution: {integrity: sha512-IqY4rtAbe+qll5PG4v0MiO58xmxcjrpX1UhVmknFWDd/+3Xca6N6pLoW7Pl8+jHekKRhvgMiRw+Hp1ejnn2yIQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@rsbuild/core': ^1.0.1
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ storybook: ^8.2.1
+ typescript: '>= 4.2.x'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ storybook@8.4.7:
+ resolution: {integrity: sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==}
+ hasBin: true
+ peerDependencies:
+ prettier: ^2 || ^3
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+
strict-event-emitter@0.5.1:
resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==}
@@ -6382,12 +7350,13 @@ packages:
string.prototype.repeat@1.0.0:
resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
- string.prototype.trim@1.2.9:
- resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+ string.prototype.trim@1.2.10:
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
engines: {node: '>= 0.4'}
- string.prototype.trimend@1.0.8:
- resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+ string.prototype.trimend@1.0.9:
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
string.prototype.trimstart@1.0.8:
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
@@ -6422,6 +7391,14 @@ packages:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
+ strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+
+ strip-indent@4.0.0:
+ resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==}
+ engines: {node: '>=12'}
+
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
@@ -6581,6 +7558,9 @@ packages:
resolution: {integrity: sha512-Kw36UHxJEELq2VUqdaSGR2/8cAsPgMtvX8uGVU6Jk26O66PhXec0A5ZnRYs47btbtwPDpXXF66+Fo3vimCM9aQ==}
engines: {node: '>=16'}
+ tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+
tinyexec@0.3.1:
resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
@@ -6588,6 +7568,14 @@ packages:
resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
engines: {node: '>=12.0.0'}
+ tinyrainbow@1.2.0:
+ resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@3.0.2:
+ resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
+ engines: {node: '>=14.0.0'}
+
tmp@0.0.33:
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
engines: {node: '>=0.6.0'}
@@ -6603,6 +7591,10 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+
touch@3.1.1:
resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
hasBin: true
@@ -6640,6 +7632,16 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
+ ts-checker-rspack-plugin@1.0.3:
+ resolution: {integrity: sha512-K5BUrytoFju1Olu11T49vlYvDEGOguBF1CBCl4o2ARxDGPoJHHf7fBzLlK0YYkUqI5EFA5cMRUC6332M7hQBHw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ '@rspack/core': ^1.0.0
+ typescript: '>=3.8.0'
+ peerDependenciesMeta:
+ '@rspack/core':
+ optional: true
+
ts-dedent@2.2.0:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
@@ -6667,6 +7669,10 @@ packages:
tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+ tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
+
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -6734,6 +7740,10 @@ packages:
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
engines: {node: '>=4'}
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
@@ -6801,6 +7811,9 @@ packages:
undefsafe@2.0.5:
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
undici-types@6.20.0:
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
@@ -6870,10 +7883,18 @@ packages:
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
engines: {node: '>= 4.0.0'}
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
+ unplugin@1.16.0:
+ resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==}
+ engines: {node: '>=14.0.0'}
+
update-browserslist-db@1.1.1:
resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
hasBin: true
@@ -6893,9 +7914,16 @@ packages:
url-parse@1.5.10:
resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ url@0.11.4:
+ resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
+ engines: {node: '>= 0.4'}
+
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ util@0.12.5:
+ resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+
utila@0.4.0:
resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
@@ -6907,6 +7935,10 @@ packages:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
+ uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+
uvu@0.5.6:
resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
engines: {node: '>=8'}
@@ -7005,8 +8037,8 @@ packages:
webpack:
optional: true
- webpack-dev-server@5.1.0:
- resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==}
+ webpack-dev-server@5.2.0:
+ resolution: {integrity: sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==}
engines: {node: '>= 18.12.0'}
hasBin: true
peerDependencies:
@@ -7026,6 +8058,9 @@ packages:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
webpack@5.97.1:
resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==}
engines: {node: '>=10.13.0'}
@@ -7183,8 +8218,8 @@ packages:
peerDependencies:
zod: ^3.18.0
- zod@3.24.0:
- resolution: {integrity: sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w==}
+ zod@3.24.1:
+ resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==}
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -7193,11 +8228,13 @@ snapshots:
'@aashutoshrathi/word-wrap@1.2.6': {}
+ '@adobe/css-tools@4.4.1': {}
+
'@altano/repository-tools@0.1.1': {}
'@ampproject/remapping@2.3.0':
dependencies:
- '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
'@babel/code-frame@7.26.2':
@@ -7232,9 +8269,9 @@ snapshots:
dependencies:
'@babel/parser': 7.26.3
'@babel/types': 7.26.3
- '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
- jsesc: 3.0.2
+ jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.25.9':
dependencies:
@@ -8424,6 +9461,22 @@ snapshots:
effect: 3.6.5
fast-check: 3.21.0
+ '@emnapi/core@1.3.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.0.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.3.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.0.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@esbuild/aix-ppc64@0.24.0':
optional: true
@@ -8496,27 +9549,20 @@ snapshots:
'@esbuild/win32-x64@0.24.0':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
- dependencies:
- eslint: 8.57.0
- eslint-visitor-keys: 3.4.3
-
'@eslint-community/eslint-utils@4.4.1(eslint@8.57.0)':
dependencies:
eslint: 8.57.0
eslint-visitor-keys: 3.4.3
- '@eslint-community/regexpp@4.10.0': {}
-
'@eslint-community/regexpp@4.12.1': {}
'@eslint/eslintrc@2.1.4':
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.4.0(supports-color@5.5.0)
espree: 9.6.1
globals: 13.24.0
- ignore: 5.3.1
+ ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -8529,7 +9575,7 @@ snapshots:
'@humanwhocodes/config-array@0.11.14':
dependencies:
'@humanwhocodes/object-schema': 2.0.2
- debug: 4.3.4
+ debug: 4.4.0(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -8538,16 +9584,16 @@ snapshots:
'@humanwhocodes/object-schema@2.0.2': {}
- '@inquirer/confirm@5.1.0(@types/node@22.10.1)':
+ '@inquirer/confirm@5.1.0(@types/node@22.10.2)':
dependencies:
- '@inquirer/core': 10.1.1(@types/node@22.10.1)
- '@inquirer/type': 3.0.1(@types/node@22.10.1)
- '@types/node': 22.10.1
+ '@inquirer/core': 10.1.1(@types/node@22.10.2)
+ '@inquirer/type': 3.0.1(@types/node@22.10.2)
+ '@types/node': 22.10.2
- '@inquirer/core@10.1.1(@types/node@22.10.1)':
+ '@inquirer/core@10.1.1(@types/node@22.10.2)':
dependencies:
'@inquirer/figures': 1.0.8
- '@inquirer/type': 3.0.1(@types/node@22.10.1)
+ '@inquirer/type': 3.0.1(@types/node@22.10.2)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -8560,9 +9606,9 @@ snapshots:
'@inquirer/figures@1.0.8': {}
- '@inquirer/type@3.0.1(@types/node@22.10.1)':
+ '@inquirer/type@3.0.1(@types/node@22.10.2)':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@isaacs/cliui@8.0.2':
dependencies:
@@ -8586,27 +9632,27 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))':
+ '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -8627,21 +9673,21 @@ snapshots:
- supports-color
- ts-node
- '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))':
+ '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ jest-config: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -8670,7 +9716,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -8688,7 +9734,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -8710,7 +9756,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -8780,11 +9826,11 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/yargs': 17.0.33
chalk: 4.1.2
- '@jridgewell/gen-mapping@0.3.5':
+ '@jridgewell/gen-mapping@0.3.8':
dependencies:
'@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.5.0
@@ -8796,7 +9842,7 @@ snapshots:
'@jridgewell/source-map@0.3.6':
dependencies:
- '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
'@jridgewell/sourcemap-codec@1.5.0': {}
@@ -8816,7 +9862,7 @@ snapshots:
call-me-maybe: 1.0.2
cross-spawn: 7.0.6
string-argv: 0.3.2
- type-detect: 4.0.8
+ type-detect: 4.1.0
'@jsonjoy.com/base64@1.1.2(tslib@2.8.1)':
dependencies:
@@ -8852,6 +9898,28 @@ snapshots:
globby: 11.1.0
read-yaml-file: 1.1.0
+ '@mdx-js/react@3.1.0(@types/react@19.0.1)(react@18.3.1)':
+ dependencies:
+ '@types/mdx': 2.0.13
+ '@types/react': 19.0.1
+ react: 18.3.1
+
+ '@module-federation/runtime-tools@0.5.1':
+ dependencies:
+ '@module-federation/runtime': 0.5.1
+ '@module-federation/webpack-bundler-runtime': 0.5.1
+
+ '@module-federation/runtime@0.5.1':
+ dependencies:
+ '@module-federation/sdk': 0.5.1
+
+ '@module-federation/sdk@0.5.1': {}
+
+ '@module-federation/webpack-bundler-runtime@0.5.1':
+ dependencies:
+ '@module-federation/runtime': 0.5.1
+ '@module-federation/sdk': 0.5.1
+
'@mswjs/interceptors@0.37.3':
dependencies:
'@open-draft/deferred-promise': 2.2.0
@@ -8861,6 +9929,66 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
+ '@napi-rs/image-android-arm64@1.9.2':
+ optional: true
+
+ '@napi-rs/image-darwin-arm64@1.9.2':
+ optional: true
+
+ '@napi-rs/image-darwin-x64@1.9.2':
+ optional: true
+
+ '@napi-rs/image-freebsd-x64@1.9.2':
+ optional: true
+
+ '@napi-rs/image-linux-arm-gnueabihf@1.9.2':
+ optional: true
+
+ '@napi-rs/image-linux-arm64-gnu@1.9.2':
+ optional: true
+
+ '@napi-rs/image-linux-arm64-musl@1.9.2':
+ optional: true
+
+ '@napi-rs/image-linux-x64-gnu@1.9.2':
+ optional: true
+
+ '@napi-rs/image-linux-x64-musl@1.9.2':
+ optional: true
+
+ '@napi-rs/image-wasm32-wasi@1.9.2':
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.2.5
+ optional: true
+
+ '@napi-rs/image-win32-ia32-msvc@1.9.2':
+ optional: true
+
+ '@napi-rs/image-win32-x64-msvc@1.9.2':
+ optional: true
+
+ '@napi-rs/image@1.9.2':
+ optionalDependencies:
+ '@napi-rs/image-android-arm64': 1.9.2
+ '@napi-rs/image-darwin-arm64': 1.9.2
+ '@napi-rs/image-darwin-x64': 1.9.2
+ '@napi-rs/image-freebsd-x64': 1.9.2
+ '@napi-rs/image-linux-arm-gnueabihf': 1.9.2
+ '@napi-rs/image-linux-arm64-gnu': 1.9.2
+ '@napi-rs/image-linux-arm64-musl': 1.9.2
+ '@napi-rs/image-linux-x64-gnu': 1.9.2
+ '@napi-rs/image-linux-x64-musl': 1.9.2
+ '@napi-rs/image-wasm32-wasi': 1.9.2
+ '@napi-rs/image-win32-ia32-msvc': 1.9.2
+ '@napi-rs/image-win32-x64-msvc': 1.9.2
+
+ '@napi-rs/wasm-runtime@0.2.5':
+ dependencies:
+ '@emnapi/core': 1.3.1
+ '@emnapi/runtime': 1.3.1
+ '@tybys/wasm-util': 0.9.0
+ optional: true
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -9011,7 +10139,7 @@ snapshots:
'@pkgr/core@0.1.1': {}
- '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.16.0)(type-fest@4.30.0)(webpack-dev-server@5.1.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))':
+ '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.16.0)(type-fest@4.30.0)(webpack-dev-server@5.2.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))':
dependencies:
ansi-html: 0.0.9
core-js-pure: 3.39.0
@@ -9019,12 +10147,22 @@ snapshots:
html-entities: 2.5.2
loader-utils: 2.0.4
react-refresh: 0.16.0
- schema-utils: 4.2.0
+ schema-utils: 4.3.0
source-map: 0.7.4
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
optionalDependencies:
type-fest: 4.30.0
- webpack-dev-server: 5.1.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+ webpack-dev-server: 5.2.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)))
+
+ '@polka/url@1.0.0-next.28': {}
+
+ '@rollup/pluginutils@5.1.3(rollup@4.28.1)':
+ dependencies:
+ '@types/estree': 1.0.6
+ estree-walker: 2.0.2
+ picomatch: 4.0.2
+ optionalDependencies:
+ rollup: 4.28.1
'@rollup/rollup-android-arm-eabi@4.28.1':
optional: true
@@ -9083,6 +10221,114 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.28.1':
optional: true
+ '@rsbuild/core@1.1.9':
+ dependencies:
+ '@rspack/core': 1.1.6(@swc/helpers@0.5.15)
+ '@rspack/lite-tapable': 1.0.1
+ '@swc/helpers': 0.5.15
+ core-js: 3.39.0
+
+ '@rsbuild/plugin-basic-ssl@1.1.1(@rsbuild/core@1.1.9)':
+ dependencies:
+ selfsigned: 2.4.1
+ optionalDependencies:
+ '@rsbuild/core': 1.1.9
+
+ '@rsbuild/plugin-image-compress@1.1.0(@rsbuild/core@1.1.9)':
+ dependencies:
+ '@napi-rs/image': 1.9.2
+ svgo: 3.3.2
+ optionalDependencies:
+ '@rsbuild/core': 1.1.9
+
+ '@rsbuild/plugin-react@1.1.0(@rsbuild/core@1.1.9)':
+ dependencies:
+ '@rsbuild/core': 1.1.9
+ '@rspack/plugin-react-refresh': 1.0.1(react-refresh@0.16.0)
+ react-refresh: 0.16.0
+
+ '@rsbuild/plugin-svgr@1.0.6(@rsbuild/core@1.1.9)(typescript@5.5.4)':
+ dependencies:
+ '@rsbuild/core': 1.1.9
+ '@rsbuild/plugin-react': 1.1.0(@rsbuild/core@1.1.9)
+ '@svgr/core': 8.1.0(typescript@5.5.4)
+ '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))
+ '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))(typescript@5.5.4)
+ deepmerge: 4.3.1
+ loader-utils: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@rsbuild/plugin-type-check@1.1.0(@rsbuild/core@1.1.9)(@rspack/core@1.1.6(@swc/helpers@0.5.15))(typescript@5.5.4)':
+ dependencies:
+ deepmerge: 4.3.1
+ json5: 2.2.3
+ reduce-configs: 1.1.0
+ ts-checker-rspack-plugin: 1.0.3(@rspack/core@1.1.6(@swc/helpers@0.5.15))(typescript@5.5.4)
+ optionalDependencies:
+ '@rsbuild/core': 1.1.9
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - typescript
+
+ '@rspack/binding-darwin-arm64@1.1.6':
+ optional: true
+
+ '@rspack/binding-darwin-x64@1.1.6':
+ optional: true
+
+ '@rspack/binding-linux-arm64-gnu@1.1.6':
+ optional: true
+
+ '@rspack/binding-linux-arm64-musl@1.1.6':
+ optional: true
+
+ '@rspack/binding-linux-x64-gnu@1.1.6':
+ optional: true
+
+ '@rspack/binding-linux-x64-musl@1.1.6':
+ optional: true
+
+ '@rspack/binding-win32-arm64-msvc@1.1.6':
+ optional: true
+
+ '@rspack/binding-win32-ia32-msvc@1.1.6':
+ optional: true
+
+ '@rspack/binding-win32-x64-msvc@1.1.6':
+ optional: true
+
+ '@rspack/binding@1.1.6':
+ optionalDependencies:
+ '@rspack/binding-darwin-arm64': 1.1.6
+ '@rspack/binding-darwin-x64': 1.1.6
+ '@rspack/binding-linux-arm64-gnu': 1.1.6
+ '@rspack/binding-linux-arm64-musl': 1.1.6
+ '@rspack/binding-linux-x64-gnu': 1.1.6
+ '@rspack/binding-linux-x64-musl': 1.1.6
+ '@rspack/binding-win32-arm64-msvc': 1.1.6
+ '@rspack/binding-win32-ia32-msvc': 1.1.6
+ '@rspack/binding-win32-x64-msvc': 1.1.6
+
+ '@rspack/core@1.1.6(@swc/helpers@0.5.15)':
+ dependencies:
+ '@module-federation/runtime-tools': 0.5.1
+ '@rspack/binding': 1.1.6
+ '@rspack/lite-tapable': 1.0.1
+ caniuse-lite: 1.0.30001687
+ optionalDependencies:
+ '@swc/helpers': 0.5.15
+
+ '@rspack/lite-tapable@1.0.1': {}
+
+ '@rspack/plugin-react-refresh@1.0.1(react-refresh@0.16.0)':
+ dependencies:
+ error-stack-parser: 2.1.4
+ html-entities: 2.5.2
+ optionalDependencies:
+ react-refresh: 0.16.0
+
'@rtsao/scc@1.1.0': {}
'@sinclair/typebox@0.27.8': {}
@@ -9103,11 +10349,236 @@ snapshots:
ignore: 5.3.2
p-map: 4.0.0
+ '@storybook/addon-a11y@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ axe-core: 4.10.2
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/addon-actions@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@types/uuid': 9.0.8
+ dequal: 2.0.3
+ polished: 4.3.1
+ storybook: 8.4.7(prettier@3.4.2)
+ uuid: 9.0.1
+
+ '@storybook/addon-backgrounds@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ memoizerific: 1.11.3
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-controls@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ dequal: 2.0.3
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-docs@8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@mdx-js/react': 3.1.0(@types/react@19.0.1)(react@18.3.1)
+ '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@storybook/addon-essentials@8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/addon-actions': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-controls': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-docs': 8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-measure': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-outline': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/addon-viewport': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@storybook/addon-highlight@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/addon-interactions@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ polished: 4.3.1
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-links@8.4.7(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/csf': 0.1.12
+ '@storybook/global': 5.0.0
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+ optionalDependencies:
+ react: 19.0.0
+
+ '@storybook/addon-measure@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ storybook: 8.4.7(prettier@3.4.2)
+ tiny-invariant: 1.3.3
+
+ '@storybook/addon-outline@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-toolbars@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/addon-viewport@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ memoizerific: 1.11.3
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/csf': 0.1.12
+ '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+ optionalDependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@storybook/components@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/core-webpack@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@types/node': 22.10.2
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+
+ '@storybook/core@8.4.7(prettier@3.4.2)':
+ dependencies:
+ '@storybook/csf': 0.1.12
+ better-opn: 3.0.2
+ browser-assert: 1.2.1
+ esbuild: 0.24.0
+ esbuild-register: 3.6.0(esbuild@0.24.0)
+ jsdoc-type-pratt-parser: 4.1.0
+ process: 0.11.10
+ recast: 0.23.9
+ semver: 7.6.3
+ util: 0.12.5
+ ws: 8.18.0
+ optionalDependencies:
+ prettier: 3.4.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ '@storybook/csf-plugin@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ storybook: 8.4.7(prettier@3.4.2)
+ unplugin: 1.16.0
+
'@storybook/csf@0.1.12':
dependencies:
type-fest: 2.19.0
- '@stylistic/eslint-plugin-ts@2.12.0(eslint@8.57.0)(typescript@5.7.2)':
+ '@storybook/global@5.0.0': {}
+
+ '@storybook/icons@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@storybook/instrumenter@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@vitest/utils': 2.1.8
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/manager-api@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/preview-api@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/react-docgen-typescript-plugin@1.0.1(typescript@5.5.4)(webpack@5.97.1(esbuild@0.24.0))':
+ dependencies:
+ debug: 4.4.0(supports-color@5.5.0)
+ endent: 2.1.0
+ find-cache-dir: 3.3.2
+ flat-cache: 3.2.0
+ micromatch: 4.0.8
+ react-docgen-typescript: 2.2.2(typescript@5.5.4)
+ tslib: 2.8.1
+ typescript: 5.5.4
+ webpack: 5.97.1(esbuild@0.24.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/react-dom-shim@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)':
+ dependencies:
+ '@storybook/components': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/global': 5.0.0
+ '@storybook/manager-api': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/preview-api': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/react-dom-shim': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/theming': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ storybook: 8.4.7(prettier@3.4.2)
+ optionalDependencies:
+ '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ typescript: 5.5.4
+
+ '@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ '@storybook/csf': 0.1.12
+ '@storybook/global': 5.0.0
+ '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ '@testing-library/dom': 10.4.0
+ '@testing-library/jest-dom': 6.5.0
+ '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
+ '@vitest/expect': 2.0.5
+ '@vitest/spy': 2.0.5
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@storybook/theming@8.4.7(storybook@8.4.7(prettier@3.4.2))':
+ dependencies:
+ storybook: 8.4.7(prettier@3.4.2)
+
+ '@stylistic/eslint-plugin-ts@2.12.1(eslint@8.57.0)(typescript@5.7.2)':
dependencies:
'@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2)
eslint: 8.57.0
@@ -9285,6 +10756,16 @@ snapshots:
lz-string: 1.5.0
pretty-format: 27.5.1
+ '@testing-library/jest-dom@6.5.0':
+ dependencies:
+ '@adobe/css-tools': 4.4.1
+ aria-query: 5.3.2
+ chalk: 3.0.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.3
+ lodash: 4.17.21
+ redent: 3.0.0
+
'@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
@@ -9295,6 +10776,10 @@ snapshots:
'@types/react': 19.0.1
'@types/react-dom': 19.0.2(@types/react@19.0.1)
+ '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)':
+ dependencies:
+ '@testing-library/dom': 10.4.0
+
'@tootallnate/once@2.0.0': {}
'@trysound/sax@0.2.0': {}
@@ -9307,6 +10792,11 @@ snapshots:
'@tsconfig/node16@1.0.4': {}
+ '@tybys/wasm-util@0.9.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@types/acorn@4.0.6':
dependencies:
'@types/estree': 1.0.6
@@ -9337,24 +10827,24 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/bonjour@3.5.13':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/concat-stream@2.0.3':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/connect-history-api-fallback@1.5.4':
dependencies:
'@types/express-serve-static-core': 5.0.2
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/connect@3.4.38':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/cookie@0.6.0': {}
@@ -9362,9 +10852,11 @@ snapshots:
dependencies:
'@types/ms': 0.7.34
+ '@types/doctrine@0.0.9': {}
+
'@types/eslint-scope@3.7.7':
dependencies:
- '@types/eslint': 8.56.10
+ '@types/eslint': 9.6.1
'@types/estree': 1.0.6
'@types/eslint@8.56.10':
@@ -9372,6 +10864,11 @@ snapshots:
'@types/estree': 1.0.6
'@types/json-schema': 7.0.15
+ '@types/eslint@9.6.1':
+ dependencies:
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
+
'@types/estree-jsx@1.0.5':
dependencies:
'@types/estree': 1.0.6
@@ -9380,14 +10877,14 @@ snapshots:
'@types/express-serve-static-core@4.19.6':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/qs': 6.9.17
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
'@types/express-serve-static-core@5.0.2':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/qs': 6.9.17
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@@ -9401,7 +10898,7 @@ snapshots:
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/hast@3.0.4':
dependencies:
@@ -9409,11 +10906,13 @@ snapshots:
'@types/html-minifier-terser@6.1.0': {}
+ '@types/html-minifier-terser@7.0.2': {}
+
'@types/http-errors@2.0.4': {}
'@types/http-proxy@1.17.15':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/is-empty@1.2.3': {}
@@ -9434,7 +10933,7 @@ snapshots:
'@types/jsdom@20.0.1':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/tough-cookie': 4.0.5
parse5: 7.2.1
@@ -9450,17 +10949,23 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ '@types/mdx@2.0.13': {}
+
'@types/mime@1.3.5': {}
'@types/ms@0.7.34': {}
'@types/node-forge@1.3.11':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/node@12.20.55': {}
- '@types/node@22.10.1':
+ '@types/node@18.19.68':
+ dependencies:
+ undici-types: 5.26.5
+
+ '@types/node@22.10.2':
dependencies:
undici-types: 6.20.0
@@ -9476,12 +10981,14 @@ snapshots:
dependencies:
csstype: 3.1.3
+ '@types/resolve@1.20.6': {}
+
'@types/retry@0.12.2': {}
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/serve-index@1.9.4':
dependencies:
@@ -9490,12 +10997,12 @@ snapshots:
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/send': 0.17.4
'@types/sockjs@0.3.36':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/stack-utils@2.0.3': {}
@@ -9509,9 +11016,11 @@ snapshots:
'@types/unist@3.0.3': {}
+ '@types/uuid@9.0.8': {}
+
'@types/ws@8.5.13':
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/yargs-parser@21.0.3': {}
@@ -9624,6 +11133,38 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
+ '@vitest/expect@2.0.5':
+ dependencies:
+ '@vitest/spy': 2.0.5
+ '@vitest/utils': 2.0.5
+ chai: 5.1.2
+ tinyrainbow: 1.2.0
+
+ '@vitest/pretty-format@2.0.5':
+ dependencies:
+ tinyrainbow: 1.2.0
+
+ '@vitest/pretty-format@2.1.8':
+ dependencies:
+ tinyrainbow: 1.2.0
+
+ '@vitest/spy@2.0.5':
+ dependencies:
+ tinyspy: 3.0.2
+
+ '@vitest/utils@2.0.5':
+ dependencies:
+ '@vitest/pretty-format': 2.0.5
+ estree-walker: 3.0.3
+ loupe: 3.1.2
+ tinyrainbow: 1.2.0
+
+ '@vitest/utils@2.1.8':
+ dependencies:
+ '@vitest/pretty-format': 2.1.8
+ loupe: 3.1.2
+ tinyrainbow: 1.2.0
+
'@webassemblyjs/ast@1.14.1':
dependencies:
'@webassemblyjs/helper-numbers': 1.13.2
@@ -9700,22 +11241,22 @@ snapshots:
'@webassemblyjs/ast': 1.14.1
'@xtuc/long': 4.2.2
- '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))':
+ '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))':
dependencies:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1)
+ webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1)
- '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))':
+ '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))':
dependencies:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1)
+ webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1)
- '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))':
+ '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1))(webpack-dev-server@5.2.0(webpack-cli@5.1.4)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))':
dependencies:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1)
+ webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1)
optionalDependencies:
- webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.97.1)
+ webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1)
'@xtuc/ieee754@1.2.0': {}
@@ -9845,7 +11386,7 @@ snapshots:
define-properties: 1.2.1
es-abstract: 1.23.5
es-object-atoms: 1.0.0
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
is-string: 1.1.0
array-union@2.1.0: {}
@@ -9897,12 +11438,18 @@ snapshots:
define-properties: 1.2.1
es-abstract: 1.23.5
es-errors: 1.3.0
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
is-array-buffer: 3.0.4
is-shared-array-buffer: 1.0.3
+ assertion-error@2.0.1: {}
+
ast-types-flow@0.0.8: {}
+ ast-types@0.16.1:
+ dependencies:
+ tslib: 2.8.1
+
astral-regex@2.0.0: {}
async@2.6.4:
@@ -10022,6 +11569,10 @@ snapshots:
before-after-hook@2.2.3: {}
+ better-opn@3.0.2:
+ dependencies:
+ open: 8.4.2
+
better-path-resolve@1.0.0:
dependencies:
is-windows: 1.0.2
@@ -10067,10 +11618,12 @@ snapshots:
dependencies:
fill-range: 7.1.1
+ browser-assert@1.2.1: {}
+
browserslist@4.24.2:
dependencies:
caniuse-lite: 1.0.30001687
- electron-to-chromium: 1.5.72
+ electron-to-chromium: 1.5.73
node-releases: 2.0.19
update-browserslist-db: 1.1.1(browserslist@4.24.2)
@@ -10102,9 +11655,14 @@ snapshots:
dependencies:
call-bind-apply-helpers: 1.0.1
es-define-property: 1.0.1
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
set-function-length: 1.2.2
+ call-bound@1.0.2:
+ dependencies:
+ call-bind: 1.0.8
+ get-intrinsic: 1.2.6
+
call-me-maybe@1.0.2: {}
callsites@3.1.0: {}
@@ -10120,12 +11678,27 @@ snapshots:
caniuse-lite@1.0.30001687: {}
+ case-sensitive-paths-webpack-plugin@2.4.0: {}
+
ccount@2.0.1: {}
+ chai@5.1.2:
+ dependencies:
+ assertion-error: 2.0.1
+ check-error: 2.1.1
+ deep-eql: 5.0.2
+ loupe: 3.1.2
+ pathval: 2.0.0
+
chalk-template@1.1.0:
dependencies:
chalk: 5.3.0
+ chalk@3.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@@ -10151,6 +11724,8 @@ snapshots:
chardet@0.7.0: {}
+ check-error@2.1.1: {}
+
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
@@ -10234,6 +11809,8 @@ snapshots:
commander@8.3.0: {}
+ commondir@1.0.1: {}
+
compressible@2.0.18:
dependencies:
mime-db: 1.53.0
@@ -10265,6 +11842,8 @@ snapshots:
consola@3.2.3: {}
+ constants-browserify@1.0.0: {}
+
content-disposition@0.5.4:
dependencies:
safe-buffer: 5.2.1
@@ -10287,6 +11866,8 @@ snapshots:
core-js-pure@3.39.0: {}
+ core-js@3.39.0: {}
+
core-util-is@1.0.3: {}
corser@2.0.1: {}
@@ -10309,13 +11890,13 @@ snapshots:
optionalDependencies:
typescript: 5.5.4
- create-jest@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)):
+ create-jest@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -10324,13 +11905,13 @@ snapshots:
- supports-color
- ts-node
- create-jest@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)):
+ create-jest@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ jest-config: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -10345,12 +11926,6 @@ snapshots:
dependencies:
cross-spawn: 7.0.6
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -10371,17 +11946,18 @@ snapshots:
postcss-selector-parser: 7.0.0
postcss-value-parser: 4.2.0
- css-loader@7.1.2(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
+ css-loader@7.1.2(@rspack/core@1.1.6(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
dependencies:
icss-utils: 5.1.0(postcss@8.4.49)
postcss: 8.4.49
postcss-modules-extract-imports: 3.1.0(postcss@8.4.49)
- postcss-modules-local-by-default: 4.1.0(postcss@8.4.49)
+ postcss-modules-local-by-default: 4.2.0(postcss@8.4.49)
postcss-modules-scope: 3.2.1(postcss@8.4.49)
postcss-modules-values: 4.0.0(postcss@8.4.49)
postcss-value-parser: 4.2.0
semver: 7.6.3
optionalDependencies:
+ '@rspack/core': 1.1.6(@swc/helpers@0.5.15)
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
css-prefers-color-scheme@10.0.0(postcss@8.4.49):
@@ -10421,6 +11997,8 @@ snapshots:
css-what@6.1.0: {}
+ css.escape@1.5.1: {}
+
cssdb@8.2.3: {}
cssesc@3.0.0: {}
@@ -10475,10 +12053,6 @@ snapshots:
dependencies:
ms: 2.1.3
- debug@4.3.4:
- dependencies:
- ms: 2.1.2
-
debug@4.4.0(supports-color@5.5.0):
dependencies:
ms: 2.1.3
@@ -10493,8 +12067,12 @@ snapshots:
decode-uri-component@0.4.1: {}
+ dedent@0.7.0: {}
+
dedent@1.5.3: {}
+ deep-eql@5.0.2: {}
+
deep-is@0.1.4: {}
deepmerge@4.3.1: {}
@@ -10517,6 +12095,8 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
+ define-lazy-prop@2.0.0: {}
+
define-lazy-prop@3.0.0: {}
define-properties@1.2.1:
@@ -10575,6 +12155,8 @@ snapshots:
dom-accessibility-api@0.5.16: {}
+ dom-accessibility-api@0.6.3: {}
+
dom-converter@0.2.0:
dependencies:
utila: 0.4.0
@@ -10642,7 +12224,7 @@ snapshots:
effect@3.6.5: {}
- electron-to-chromium@1.5.72: {}
+ electron-to-chromium@1.5.73: {}
emittery@0.13.1: {}
@@ -10658,6 +12240,12 @@ snapshots:
encodeurl@2.0.0: {}
+ endent@2.1.0:
+ dependencies:
+ dedent: 0.7.0
+ fast-json-parse: 1.0.3
+ objectorarray: 1.0.5
+
enhanced-resolve@5.17.1:
dependencies:
graceful-fs: 4.2.11
@@ -10701,7 +12289,7 @@ snapshots:
es-set-tostringtag: 2.0.3
es-to-primitive: 1.3.0
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
get-symbol-description: 1.0.2
globalthis: 1.0.4
gopd: 1.2.0
@@ -10725,8 +12313,8 @@ snapshots:
regexp.prototype.flags: 1.5.3
safe-array-concat: 1.1.2
safe-regex-test: 1.0.3
- string.prototype.trim: 1.2.9
- string.prototype.trimend: 1.0.8
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
string.prototype.trimstart: 1.0.8
typed-array-buffer: 1.0.2
typed-array-byte-length: 1.0.1
@@ -10747,7 +12335,7 @@ snapshots:
es-errors: 1.3.0
es-set-tostringtag: 2.0.3
function-bind: 1.1.2
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
globalthis: 1.0.4
gopd: 1.2.0
has-property-descriptors: 1.0.2
@@ -10765,7 +12353,7 @@ snapshots:
es-set-tostringtag@2.0.3:
dependencies:
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
has-tostringtag: 1.0.2
hasown: 2.0.2
@@ -10779,6 +12367,13 @@ snapshots:
is-date-object: 1.0.5
is-symbol: 1.1.0
+ esbuild-register@3.6.0(esbuild@0.24.0):
+ dependencies:
+ debug: 4.4.0(supports-color@5.5.0)
+ esbuild: 0.24.0
+ transitivePeerDependencies:
+ - supports-color
+
esbuild@0.24.0:
optionalDependencies:
'@esbuild/aix-ppc64': 0.24.0
@@ -10886,7 +12481,7 @@ snapshots:
object.groupby: 1.0.3
object.values: 1.2.0
semver: 6.3.1
- string.prototype.trimend: 1.0.8
+ string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
'@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2)
@@ -10895,13 +12490,13 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)))(typescript@5.7.2):
+ eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)))(typescript@5.7.2):
dependencies:
'@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2)
eslint: 8.57.0
optionalDependencies:
'@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)
- jest: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ jest: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
transitivePeerDependencies:
- supports-color
- typescript
@@ -11032,8 +12627,8 @@ snapshots:
eslint@8.57.0:
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0)
+ '@eslint-community/regexpp': 4.12.1
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14
@@ -11042,8 +12637,8 @@ snapshots:
'@ungap/structured-clone': 1.2.0
ajv: 6.12.6
chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
+ cross-spawn: 7.0.6
+ debug: 4.4.0(supports-color@5.5.0)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -11057,7 +12652,7 @@ snapshots:
glob-parent: 6.0.2
globals: 13.24.0
graphemer: 1.4.0
- ignore: 5.3.1
+ ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
@@ -11106,6 +12701,12 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/unist': 3.0.3
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.6
+
esutils@2.0.3: {}
etag@1.8.1: {}
@@ -11198,6 +12799,8 @@ snapshots:
merge2: 1.4.1
micromatch: 4.0.8
+ fast-json-parse@1.0.3: {}
+
fast-json-stable-stringify@2.1.0: {}
fast-levenshtein@2.0.6: {}
@@ -11248,6 +12851,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ find-cache-dir@3.3.2:
+ dependencies:
+ commondir: 1.0.1
+ make-dir: 3.1.0
+ pkg-dir: 4.2.0
+
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
@@ -11260,7 +12869,7 @@ snapshots:
flat-cache@3.2.0:
dependencies:
- flatted: 3.3.1
+ flatted: 3.3.2
keyv: 4.5.4
rimraf: 3.0.2
@@ -11271,8 +12880,6 @@ snapshots:
flat@5.0.2: {}
- flatted@3.3.1: {}
-
flatted@3.3.2: {}
follow-redirects@1.15.9: {}
@@ -11298,6 +12905,12 @@ snapshots:
fresh@0.5.2: {}
+ fs-extra@11.2.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
fs-extra@7.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -11332,16 +12945,18 @@ snapshots:
get-east-asian-width@1.3.0: {}
- get-intrinsic@1.2.5:
+ get-intrinsic@1.2.6:
dependencies:
call-bind-apply-helpers: 1.0.1
dunder-proto: 1.0.0
es-define-property: 1.0.1
es-errors: 1.3.0
+ es-object-atoms: 1.0.0
function-bind: 1.1.2
gopd: 1.2.0
has-symbols: 1.1.0
hasown: 2.0.2
+ math-intrinsics: 1.0.0
get-package-type@0.1.0: {}
@@ -11353,7 +12968,7 @@ snapshots:
dependencies:
call-bind: 1.0.8
es-errors: 1.3.0
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
git-hooks-list@3.1.0: {}
@@ -11495,9 +13110,19 @@ snapshots:
relateurl: 0.2.7
terser: 5.37.0
+ html-minifier-terser@7.2.0:
+ dependencies:
+ camel-case: 4.1.2
+ clean-css: 5.3.3
+ commander: 10.0.1
+ entities: 4.5.0
+ param-case: 3.0.4
+ relateurl: 0.2.7
+ terser: 5.37.0
+
html-tags@3.3.1: {}
- html-webpack-plugin@5.6.3(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
+ html-webpack-plugin@5.6.3(@rspack/core@1.1.6(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@@ -11505,6 +13130,7 @@ snapshots:
pretty-error: 4.0.0
tapable: 2.2.1
optionalDependencies:
+ '@rspack/core': 1.1.6(@swc/helpers@0.5.15)
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
htmlparser2@6.1.0:
@@ -11570,7 +13196,7 @@ snapshots:
html-encoding-sniffer: 3.0.0
http-proxy: 1.18.1
mime: 1.6.0
- minimist: 0.2.4
+ minimist: 1.2.8
opener: 1.5.2
portfinder: 1.0.32
secure-compare: 3.0.1
@@ -11611,8 +13237,6 @@ snapshots:
ignore-by-default@1.0.1: {}
- ignore@5.3.1: {}
-
ignore@5.3.2: {}
ignore@6.0.2: {}
@@ -11650,7 +13274,7 @@ snapshots:
dependencies:
es-errors: 1.3.0
hasown: 2.0.2
- side-channel: 1.0.6
+ side-channel: 1.1.0
interpret@3.1.1: {}
@@ -11672,10 +13296,15 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
+ is-arguments@1.1.1:
+ dependencies:
+ call-bind: 1.0.8
+ has-tostringtag: 1.0.2
+
is-array-buffer@3.0.4:
dependencies:
call-bind: 1.0.8
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
is-arrayish@0.2.1: {}
@@ -11714,6 +13343,8 @@ snapshots:
is-decimal@2.0.1: {}
+ is-docker@2.2.1: {}
+
is-docker@3.0.0: {}
is-empty@1.2.0: {}
@@ -11822,10 +13453,14 @@ snapshots:
is-weakset@2.0.3:
dependencies:
call-bind: 1.0.8
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
is-windows@1.0.2: {}
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
is-wsl@3.1.0:
dependencies:
is-inside-container: 1.0.0
@@ -11886,7 +13521,7 @@ snapshots:
iterator.prototype@1.1.3:
dependencies:
define-properties: 1.2.1
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
has-symbols: 1.1.0
reflect.getprototypeof: 1.0.8
set-function-name: 2.0.2
@@ -11909,7 +13544,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.3
@@ -11929,16 +13564,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)):
+ jest-cli@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ create-jest: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -11948,16 +13583,16 @@ snapshots:
- supports-color
- ts-node
- jest-cli@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)):
+ jest-cli@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ create-jest: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ jest-config: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -11967,7 +13602,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)):
+ jest-config@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)):
dependencies:
'@babel/core': 7.26.0
'@jest/test-sequencer': 29.7.0
@@ -11992,13 +13627,13 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.10.1
- ts-node: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)
+ '@types/node': 22.10.2
+ ts-node: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
- jest-config@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)):
+ jest-config@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)):
dependencies:
'@babel/core': 7.26.0
'@jest/test-sequencer': 29.7.0
@@ -12023,8 +13658,8 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.10.1
- ts-node: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)
+ '@types/node': 22.10.2
+ ts-node: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -12054,7 +13689,7 @@ snapshots:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@@ -12068,7 +13703,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -12078,7 +13713,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -12117,7 +13752,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -12152,7 +13787,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -12180,7 +13815,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
chalk: 4.1.2
cjs-module-lexer: 1.4.1
collect-v8-coverage: 1.0.2
@@ -12226,7 +13861,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -12245,7 +13880,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -12254,35 +13889,35 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@29.7.0:
dependencies:
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4)):
+ jest@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4))
+ jest-cli: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
- jest@29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2)):
+ jest@29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@22.10.1)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2))
+ jest-cli: 29.7.0(@types/node@22.10.2)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -12306,6 +13941,8 @@ snapshots:
dependencies:
argparse: 2.0.1
+ jsdoc-type-pratt-parser@4.1.0: {}
+
jsdom@20.0.3:
dependencies:
abab: 2.0.6
@@ -12341,6 +13978,8 @@ snapshots:
jsesc@3.0.2: {}
+ jsesc@3.1.0: {}
+
json-buffer@3.0.1: {}
json-parse-even-better-errors@2.3.1: {}
@@ -12355,7 +13994,7 @@ snapshots:
json5@1.0.2:
dependencies:
- minimist: 0.2.4
+ minimist: 1.2.8
json5@2.2.3: {}
@@ -12372,6 +14011,12 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.8
@@ -12389,17 +14034,17 @@ snapshots:
kleur@4.1.5: {}
- knip@5.39.2(@types/node@22.10.1)(typescript@5.5.4):
+ knip@5.39.4(@types/node@22.10.2)(typescript@5.5.4):
dependencies:
'@nodelib/fs.walk': 1.2.8
'@snyk/github-codeowners': 1.1.0
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
easy-table: 1.2.0
enhanced-resolve: 5.17.1
fast-glob: 3.3.2
jiti: 2.4.1
js-yaml: 4.1.0
- minimist: 0.2.4
+ minimist: 1.2.8
picocolors: 1.1.1
picomatch: 4.0.2
pretty-ms: 9.2.0
@@ -12407,8 +14052,8 @@ snapshots:
strip-json-comments: 5.0.1
summary: 2.1.0
typescript: 5.5.4
- zod: 3.24.0
- zod-validation-error: 3.4.0(zod@3.24.0)
+ zod: 3.24.1
+ zod-validation-error: 3.4.0(zod@3.24.1)
known-css-properties@0.35.0: {}
@@ -12484,6 +14129,8 @@ snapshots:
dependencies:
js-tokens: 4.0.0
+ loupe@3.1.2: {}
+
lower-case@2.0.2:
dependencies:
tslib: 2.8.1
@@ -12496,6 +14143,14 @@ snapshots:
lz-string@1.5.0: {}
+ magic-string@0.30.15:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ make-dir@3.1.0:
+ dependencies:
+ semver: 6.3.1
+
make-dir@4.0.0:
dependencies:
semver: 7.6.3
@@ -12506,6 +14161,10 @@ snapshots:
dependencies:
tmpl: 1.0.5
+ map-or-similar@1.5.0: {}
+
+ math-intrinsics@1.0.0: {}
+
mathml-tag-names@2.1.3: {}
mdast-util-from-markdown@0.8.5:
@@ -12622,6 +14281,10 @@ snapshots:
tree-dump: 1.0.2(tslib@2.8.1)
tslib: 2.8.1
+ memoizerific@1.11.3:
+ dependencies:
+ map-or-similar: 1.5.0
+
meow@13.2.0: {}
merge-descriptors@1.0.3: {}
@@ -12864,9 +14527,11 @@ snapshots:
mimic-fn@2.1.0: {}
+ min-indent@1.0.1: {}
+
mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
dependencies:
- schema-utils: 4.2.0
+ schema-utils: 4.3.0
tapable: 2.2.1
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
@@ -12880,13 +14545,13 @@ snapshots:
dependencies:
brace-expansion: 2.0.1
- minimist@0.2.4: {}
+ minimist@1.2.8: {}
minipass@7.1.2: {}
mkdirp@0.5.6:
dependencies:
- minimist: 0.2.4
+ minimist: 1.2.8
mlly@1.7.3:
dependencies:
@@ -12897,18 +14562,18 @@ snapshots:
mri@1.2.0: {}
- ms@2.0.0: {}
+ mrmime@2.0.0: {}
- ms@2.1.2: {}
+ ms@2.0.0: {}
ms@2.1.3: {}
- msw@2.6.8(@types/node@22.10.1)(typescript@5.5.4):
+ msw@2.6.8(@types/node@22.10.2)(typescript@5.5.4):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 5.1.0(@types/node@22.10.1)
+ '@inquirer/confirm': 5.1.0(@types/node@22.10.2)
'@mswjs/interceptors': 0.37.3
'@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
@@ -13061,6 +14726,8 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.0.0
+ objectorarray@1.0.5: {}
+
obuf@1.1.2: {}
on-finished@2.4.1:
@@ -13084,6 +14751,12 @@ snapshots:
is-inside-container: 1.0.0
is-wsl: 3.1.0
+ open@8.4.2:
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
opener@1.5.2: {}
optionator@0.9.3:
@@ -13212,6 +14885,8 @@ snapshots:
no-case: 3.0.4
tslib: 2.8.1
+ path-browserify@1.0.1: {}
+
path-exists@4.0.0: {}
path-is-absolute@1.0.1: {}
@@ -13235,6 +14910,8 @@ snapshots:
pathe@1.1.2: {}
+ pathval@2.0.0: {}
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -13265,6 +14942,10 @@ snapshots:
mlly: 1.7.3
pathe: 1.1.2
+ polished@4.3.1:
+ dependencies:
+ '@babel/runtime': 7.26.0
+
portfinder@1.0.32:
dependencies:
async: 2.6.4
@@ -13384,13 +15065,14 @@ snapshots:
postcss: 8.4.49
yaml: 2.6.1
- postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.5.4)(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
+ postcss-loader@8.1.1(@rspack/core@1.1.6(@swc/helpers@0.5.15))(postcss@8.4.49)(typescript@5.5.4)(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
dependencies:
cosmiconfig: 9.0.0(typescript@5.5.4)
jiti: 1.21.6
postcss: 8.4.49
semver: 7.6.3
optionalDependencies:
+ '@rspack/core': 1.1.6(@swc/helpers@0.5.15)
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
transitivePeerDependencies:
- typescript
@@ -13404,7 +15086,7 @@ snapshots:
dependencies:
postcss: 8.4.49
- postcss-modules-local-by-default@4.1.0(postcss@8.4.49):
+ postcss-modules-local-by-default@4.2.0(postcss@8.4.49):
dependencies:
icss-utils: 5.1.0(postcss@8.4.49)
postcss: 8.4.49
@@ -13581,6 +15263,8 @@ snapshots:
process-nextick-args@2.0.1: {}
+ process@0.11.10: {}
+
promise-inflight@1.0.1: {}
promise-retry@2.0.1:
@@ -13610,17 +15294,19 @@ snapshots:
pstree.remy@1.1.8: {}
+ punycode@1.4.1: {}
+
punycode@2.3.1: {}
pure-rand@6.1.0: {}
qs@6.13.0:
dependencies:
- side-channel: 1.0.6
+ side-channel: 1.1.0
qs@6.13.1:
dependencies:
- side-channel: 1.0.6
+ side-channel: 1.1.0
query-registry@3.0.1:
dependencies:
@@ -13628,7 +15314,7 @@ snapshots:
quick-lru: 7.0.0
url-join: 5.0.0
validate-npm-package-name: 5.0.1
- zod: 3.24.0
+ zod: 3.24.1
zod-package-json: 1.0.3
query-string@9.1.1:
@@ -13656,6 +15342,31 @@ snapshots:
iconv-lite: 0.4.24
unpipe: 1.0.0
+ react-docgen-typescript@2.2.2(typescript@5.5.4):
+ dependencies:
+ typescript: 5.5.4
+
+ react-docgen@7.1.0:
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/traverse': 7.26.4
+ '@babel/types': 7.26.3
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.20.6
+ '@types/doctrine': 0.0.9
+ '@types/resolve': 1.20.6
+ doctrine: 3.0.0
+ resolve: 1.22.8
+ strip-indent: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
react-dom@19.0.0(react@19.0.0):
dependencies:
react: 19.0.0
@@ -13679,6 +15390,10 @@ snapshots:
optionalDependencies:
react-dom: 19.0.0(react@19.0.0)
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
react@19.0.0: {}
read-package-json-fast@3.0.2:
@@ -13720,10 +15435,25 @@ snapshots:
readdirp@4.0.2: {}
+ recast@0.23.9:
+ dependencies:
+ ast-types: 0.16.1
+ esprima: 4.0.1
+ source-map: 0.6.1
+ tiny-invariant: 1.3.3
+ tslib: 2.8.1
+
rechoir@0.8.0:
dependencies:
resolve: 1.22.8
+ redent@3.0.0:
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+
+ reduce-configs@1.1.0: {}
+
reflect.getprototypeof@1.0.8:
dependencies:
call-bind: 1.0.8
@@ -13731,7 +15461,7 @@ snapshots:
dunder-proto: 1.0.0
es-abstract: 1.23.5
es-errors: 1.3.0
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
gopd: 1.2.0
which-builtin-type: 1.2.0
@@ -13871,6 +15601,13 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.28.1
fsevents: 2.3.3
+ rsbuild-plugin-html-minifier-terser@1.1.1(@rsbuild/core@1.1.9):
+ dependencies:
+ '@types/html-minifier-terser': 7.0.2
+ html-minifier-terser: 7.2.0
+ optionalDependencies:
+ '@rsbuild/core': 1.1.9
+
run-applescript@7.0.0: {}
run-parallel@1.2.0:
@@ -13884,7 +15621,7 @@ snapshots:
safe-array-concat@1.1.2:
dependencies:
call-bind: 1.0.8
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
has-symbols: 1.1.0
isarray: 2.0.5
@@ -13904,6 +15641,10 @@ snapshots:
dependencies:
xmlchars: 2.2.0
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
scheduler@0.25.0: {}
schema-utils@3.3.0:
@@ -13912,7 +15653,7 @@ snapshots:
ajv: 6.12.6
ajv-keywords: 3.5.2(ajv@6.12.6)
- schema-utils@4.2.0:
+ schema-utils@4.3.0:
dependencies:
'@types/json-schema': 7.0.15
ajv: 8.17.1
@@ -13982,7 +15723,7 @@ snapshots:
define-data-property: 1.1.4
es-errors: 1.3.0
function-bind: 1.1.2
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
gopd: 1.2.0
has-property-descriptors: 1.0.2
@@ -14009,13 +15750,34 @@ snapshots:
shell-quote@1.8.2: {}
- side-channel@1.0.6:
+ side-channel-list@1.0.0:
dependencies:
- call-bind: 1.0.8
es-errors: 1.3.0
- get-intrinsic: 1.2.5
object-inspect: 1.13.3
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.2
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.6
+ object-inspect: 1.13.3
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.2
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.6
+ object-inspect: 1.13.3
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.3
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
@@ -14024,6 +15786,12 @@ snapshots:
dependencies:
semver: 7.6.3
+ sirv@2.0.4:
+ dependencies:
+ '@polka/url': 1.0.0-next.28
+ mrmime: 2.0.0
+ totalist: 3.0.1
+
sisteransi@1.0.5: {}
slash@3.0.0: {}
@@ -14138,6 +15906,70 @@ snapshots:
stdin-discarder@0.2.2: {}
+ storybook-builder-rsbuild@0.1.6(@rsbuild/core@1.1.9)(@rspack/core@1.1.6(@swc/helpers@0.5.15))(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4):
+ dependencies:
+ '@rsbuild/core': 1.1.9
+ '@rsbuild/plugin-type-check': 1.1.0(@rsbuild/core@1.1.9)(@rspack/core@1.1.6(@swc/helpers@0.5.15))(typescript@5.5.4)
+ '@storybook/addon-docs': 8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))
+ '@storybook/core-webpack': 8.4.7(storybook@8.4.7(prettier@3.4.2))
+ browser-assert: 1.2.1
+ case-sensitive-paths-webpack-plugin: 2.4.0
+ cjs-module-lexer: 1.4.1
+ constants-browserify: 1.0.0
+ es-module-lexer: 1.5.4
+ fs-extra: 11.2.0
+ magic-string: 0.30.15
+ path-browserify: 1.0.1
+ process: 0.11.10
+ rsbuild-plugin-html-minifier-terser: 1.1.1(@rsbuild/core@1.1.9)
+ sirv: 2.0.4
+ storybook: 8.4.7(prettier@3.4.2)
+ ts-dedent: 2.2.0
+ url: 0.11.4
+ util: 0.12.5
+ util-deprecate: 1.0.2
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - '@types/react'
+
+ storybook-react-rsbuild@0.1.6(@rsbuild/core@1.1.9)(@rspack/core@1.1.6(@swc/helpers@0.5.15))(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.28.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)(webpack@5.97.1(esbuild@0.24.0)):
+ dependencies:
+ '@rollup/pluginutils': 5.1.3(rollup@4.28.1)
+ '@rsbuild/core': 1.1.9
+ '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)
+ '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.5.4)(webpack@5.97.1(esbuild@0.24.0))
+ '@types/node': 18.19.68
+ find-up: 5.0.0
+ magic-string: 0.30.15
+ react: 19.0.0
+ react-docgen: 7.1.0
+ react-dom: 19.0.0(react@19.0.0)
+ resolve: 1.22.8
+ storybook: 8.4.7(prettier@3.4.2)
+ storybook-builder-rsbuild: 0.1.6(@rsbuild/core@1.1.9)(@rspack/core@1.1.6(@swc/helpers@0.5.15))(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.5.4)
+ tsconfig-paths: 4.2.0
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - '@storybook/test'
+ - '@types/react'
+ - rollup
+ - supports-color
+ - webpack
+
+ storybook@8.4.7(prettier@3.4.2):
+ dependencies:
+ '@storybook/core': 8.4.7(prettier@3.4.2)
+ optionalDependencies:
+ prettier: 3.4.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
strict-event-emitter@0.5.1: {}
string-argv@0.3.2: {}
@@ -14184,29 +16016,33 @@ snapshots:
es-abstract: 1.23.5
es-errors: 1.3.0
es-object-atoms: 1.0.0
- get-intrinsic: 1.2.5
+ get-intrinsic: 1.2.6
gopd: 1.2.0
has-symbols: 1.1.0
internal-slot: 1.0.7
regexp.prototype.flags: 1.5.3
set-function-name: 2.0.2
- side-channel: 1.0.6
+ side-channel: 1.1.0
string.prototype.repeat@1.0.0:
dependencies:
define-properties: 1.2.1
es-abstract: 1.23.5
- string.prototype.trim@1.2.9:
+ string.prototype.trim@1.2.10:
dependencies:
call-bind: 1.0.8
+ call-bound: 1.0.2
+ define-data-property: 1.1.4
define-properties: 1.2.1
es-abstract: 1.23.5
es-object-atoms: 1.0.0
+ has-property-descriptors: 1.0.2
- string.prototype.trimend@1.0.8:
+ string.prototype.trimend@1.0.9:
dependencies:
call-bind: 1.0.8
+ call-bound: 1.0.2
define-properties: 1.2.1
es-object-atoms: 1.0.0
@@ -14243,6 +16079,14 @@ snapshots:
strip-final-newline@2.0.0: {}
+ strip-indent@3.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
+ strip-indent@4.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
strip-json-comments@3.1.1: {}
strip-json-comments@5.0.1: {}
@@ -14312,7 +16156,7 @@ snapshots:
sucrase@3.35.0:
dependencies:
- '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/gen-mapping': 0.3.8
commander: 4.1.1
glob: 10.4.5
lines-and-columns: 1.2.4
@@ -14427,6 +16271,17 @@ snapshots:
optionalDependencies:
'@swc/core': 1.10.1(@swc/helpers@0.5.15)
+ terser-webpack-plugin@5.3.10(esbuild@0.24.0)(webpack@5.97.1(esbuild@0.24.0)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ jest-worker: 27.5.1
+ schema-utils: 3.3.0
+ serialize-javascript: 6.0.2
+ terser: 5.37.0
+ webpack: 5.97.1(esbuild@0.24.0)
+ optionalDependencies:
+ esbuild: 0.24.0
+
terser@5.37.0:
dependencies:
'@jridgewell/source-map': 0.3.6
@@ -14458,6 +16313,8 @@ snapshots:
tightrope@0.2.0: {}
+ tiny-invariant@1.3.3: {}
+
tinyexec@0.3.1: {}
tinyglobby@0.2.10:
@@ -14465,6 +16322,10 @@ snapshots:
fdir: 6.4.2(picomatch@4.0.2)
picomatch: 4.0.2
+ tinyrainbow@1.2.0: {}
+
+ tinyspy@3.0.2: {}
+
tmp@0.0.33:
dependencies:
os-tmpdir: 1.0.2
@@ -14477,6 +16338,8 @@ snapshots:
toidentifier@1.0.1: {}
+ totalist@3.0.1: {}
+
touch@3.1.1: {}
tough-cookie@4.1.4:
@@ -14512,18 +16375,30 @@ snapshots:
dependencies:
typescript: 5.7.2
+ ts-checker-rspack-plugin@1.0.3(@rspack/core@1.1.6(@swc/helpers@0.5.15))(typescript@5.5.4):
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@rspack/lite-tapable': 1.0.1
+ chokidar: 3.6.0
+ memfs: 4.15.0
+ minimatch: 9.0.5
+ picocolors: 1.1.1
+ typescript: 5.5.4
+ optionalDependencies:
+ '@rspack/core': 1.1.6(@swc/helpers@0.5.15)
+
ts-dedent@2.2.0: {}
ts-interface-checker@0.1.13: {}
- ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.5.4):
+ ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.5.4):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
acorn: 8.14.0
acorn-walk: 8.3.4
arg: 4.1.3
@@ -14536,14 +16411,14 @@ snapshots:
optionalDependencies:
'@swc/core': 1.10.1(@swc/helpers@0.5.15)
- ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.1)(typescript@5.7.2):
+ ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.10.2)(typescript@5.7.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
acorn: 8.14.0
acorn-walk: 8.3.4
arg: 4.1.3
@@ -14562,7 +16437,13 @@ snapshots:
dependencies:
'@types/json5': 0.0.29
json5: 1.0.2
- minimist: 0.2.4
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
strip-bom: 3.0.0
tslib@2.8.1: {}
@@ -14658,6 +16539,8 @@ snapshots:
type-detect@4.0.8: {}
+ type-detect@4.1.0: {}
+
type-fest@0.20.2: {}
type-fest@0.21.3: {}
@@ -14725,6 +16608,8 @@ snapshots:
undefsafe@2.0.5: {}
+ undici-types@5.26.5: {}
+
undici-types@6.20.0: {}
undici@6.21.0: {}
@@ -14747,7 +16632,7 @@ snapshots:
'@types/concat-stream': 2.0.3
'@types/debug': 4.1.12
'@types/is-empty': 1.2.3
- '@types/node': 22.10.1
+ '@types/node': 22.10.2
'@types/unist': 3.0.3
concat-stream: 2.0.0
debug: 4.4.0(supports-color@5.5.0)
@@ -14820,8 +16705,15 @@ snapshots:
universalify@0.2.0: {}
+ universalify@2.0.1: {}
+
unpipe@1.0.0: {}
+ unplugin@1.16.0:
+ dependencies:
+ acorn: 8.14.0
+ webpack-virtual-modules: 0.6.2
+
update-browserslist-db@1.1.1(browserslist@4.24.2):
dependencies:
browserslist: 4.24.2
@@ -14841,14 +16733,29 @@ snapshots:
querystringify: 2.2.0
requires-port: 1.0.0
+ url@0.11.4:
+ dependencies:
+ punycode: 1.4.1
+ qs: 6.13.1
+
util-deprecate@1.0.2: {}
+ util@0.12.5:
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.1.1
+ is-generator-function: 1.0.10
+ is-typed-array: 1.1.13
+ which-typed-array: 1.1.16
+
utila@0.4.0: {}
utils-merge@1.0.1: {}
uuid@8.3.2: {}
+ uuid@9.0.1: {}
+
uvu@0.5.6:
dependencies:
dequal: 2.0.3
@@ -14936,12 +16843,12 @@ snapshots:
webidl-conversions@7.0.0: {}
- webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1):
+ webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1):
dependencies:
'@discoveryjs/json-ext': 0.5.7
- '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))
- '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))
- '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))
+ '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))
+ '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))
+ '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1))(webpack-dev-server@5.2.0(webpack-cli@5.1.4)(webpack@5.97.1))(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4))
colorette: 2.0.20
commander: 10.0.1
cross-spawn: 7.0.6
@@ -14953,7 +16860,7 @@ snapshots:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
webpack-merge: 5.10.0
optionalDependencies:
- webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.97.1)
+ webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1)
webpack-dev-middleware@7.4.2(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)):
dependencies:
@@ -14962,7 +16869,7 @@ snapshots:
mime-types: 2.1.35
on-finished: 2.4.1
range-parser: 1.2.1
- schema-utils: 4.2.0
+ schema-utils: 4.3.0
optionalDependencies:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
@@ -14973,11 +16880,11 @@ snapshots:
mime-types: 2.1.35
on-finished: 2.4.1
range-parser: 1.2.1
- schema-utils: 4.2.0
+ schema-utils: 4.3.0
optionalDependencies:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))
- webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.97.1):
+ webpack-dev-server@5.2.0(webpack-cli@5.1.4)(webpack@5.97.1):
dependencies:
'@types/bonjour': 3.5.13
'@types/connect-history-api-fallback': 1.5.4
@@ -14994,13 +16901,12 @@ snapshots:
connect-history-api-fallback: 2.0.0
express: 4.21.2
graceful-fs: 4.2.11
- html-entities: 2.5.2
http-proxy-middleware: 2.0.7(@types/express@4.17.21)
ipaddr.js: 2.2.0
launch-editor: 2.9.1
open: 10.1.0
p-retry: 6.2.1
- schema-utils: 4.2.0
+ schema-utils: 4.3.0
selfsigned: 2.4.1
serve-index: 1.9.1
sockjs: 0.3.24
@@ -15009,14 +16915,14 @@ snapshots:
ws: 8.18.0
optionalDependencies:
webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1)
+ webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1)
transitivePeerDependencies:
- bufferutil
- debug
- supports-color
- utf-8-validate
- webpack-dev-server@5.1.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
+ webpack-dev-server@5.2.0(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))):
dependencies:
'@types/bonjour': 3.5.13
'@types/connect-history-api-fallback': 1.5.4
@@ -15033,13 +16939,12 @@ snapshots:
connect-history-api-fallback: 2.0.0
express: 4.21.2
graceful-fs: 4.2.11
- html-entities: 2.5.2
http-proxy-middleware: 2.0.7(@types/express@4.17.21)
ipaddr.js: 2.2.0
launch-editor: 2.9.1
open: 10.1.0
p-retry: 6.2.1
- schema-utils: 4.2.0
+ schema-utils: 4.3.0
selfsigned: 2.4.1
serve-index: 1.9.1
sockjs: 0.3.24
@@ -15062,6 +16967,8 @@ snapshots:
webpack-sources@3.2.3: {}
+ webpack-virtual-modules@0.6.2: {}
+
webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)):
dependencies:
'@types/eslint-scope': 3.7.7
@@ -15118,7 +17025,37 @@ snapshots:
watchpack: 2.4.2
webpack-sources: 3.2.3
optionalDependencies:
- webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.97.1)
+ webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1)
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
+ webpack@5.97.1(esbuild@0.24.0):
+ dependencies:
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.6
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/wasm-edit': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ acorn: 8.14.0
+ browserslist: 4.24.2
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.17.1
+ es-module-lexer: 1.5.4
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.0
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 3.3.0
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.10(esbuild@0.24.0)(webpack@5.97.1(esbuild@0.24.0))
+ watchpack: 2.4.2
+ webpack-sources: 3.2.3
transitivePeerDependencies:
- '@swc/core'
- esbuild
@@ -15275,12 +17212,12 @@ snapshots:
zod-package-json@1.0.3:
dependencies:
- zod: 3.24.0
+ zod: 3.24.1
- zod-validation-error@3.4.0(zod@3.24.0):
+ zod-validation-error@3.4.0(zod@3.24.1):
dependencies:
- zod: 3.24.0
+ zod: 3.24.1
- zod@3.24.0: {}
+ zod@3.24.1: {}
zwitch@2.0.4: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index f4525e8e..4145d02c 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,3 @@
packages:
- "packages/*"
- - "sample/*"
+ - "samples/**"
diff --git a/sample/tsup-lib/src/index.ts b/sample/tsup-lib/src/index.ts
deleted file mode 100644
index eb3a5a09..00000000
--- a/sample/tsup-lib/src/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./helloFrom.js";
diff --git a/sample/app/.browserslistrc b/samples/rsbuild/app/.browserslistrc
similarity index 100%
rename from sample/app/.browserslistrc
rename to samples/rsbuild/app/.browserslistrc
diff --git a/sample/components/.eslintignore b/samples/rsbuild/app/.eslintignore
similarity index 100%
rename from sample/components/.eslintignore
rename to samples/rsbuild/app/.eslintignore
diff --git a/sample/app/.eslintrc.json b/samples/rsbuild/app/.eslintrc.json
similarity index 100%
rename from sample/app/.eslintrc.json
rename to samples/rsbuild/app/.eslintrc.json
diff --git a/sample/app/.stylelintrc.json b/samples/rsbuild/app/.stylelintrc.json
similarity index 100%
rename from sample/app/.stylelintrc.json
rename to samples/rsbuild/app/.stylelintrc.json
diff --git a/sample/app/jest.config.ts b/samples/rsbuild/app/jest.config.ts
similarity index 100%
rename from sample/app/jest.config.ts
rename to samples/rsbuild/app/jest.config.ts
diff --git a/samples/rsbuild/app/nodemon.json b/samples/rsbuild/app/nodemon.json
new file mode 100644
index 00000000..0e44387c
--- /dev/null
+++ b/samples/rsbuild/app/nodemon.json
@@ -0,0 +1,5 @@
+{
+ "watch": ["rsbuild.dev.ts"],
+ "exec": "rsbuild dev --config rsbuild.dev.ts",
+ "verbose": true
+}
diff --git a/samples/rsbuild/app/package.json b/samples/rsbuild/app/package.json
new file mode 100644
index 00000000..008d380a
--- /dev/null
+++ b/samples/rsbuild/app/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "@rsbuild-sample/app",
+ "author": "Workleap",
+ "version": "0.0.0",
+ "description": "Application to try the Rsbuild configs.",
+ "private": true,
+ "license": "Apache-2.0",
+ "type": "module",
+ "scripts": {
+ "dev": "nodemon",
+ "dev-msw": "cross-env USE_MSW=true nodemon",
+ "dev-verbose": "cross-env VERBOSE=true nodemon",
+ "dev-msw-verbose": "cross-env USE_MSW=true VERBOSE=true nodemon",
+ "build": "rsbuild build --config rsbuild.build.ts",
+ "serve-build": "pnpm build && pnpm http-server dist -p 8080 -P http://localhost:8080? -c-1",
+ "eslint": "eslint . --max-warnings=-0 --cache --cache-location node_modules/.cache/eslint",
+ "typecheck": "tsc",
+ "test": "jest"
+ },
+ "dependencies": {
+ "@rsbuild-sample/components": "workspace:*",
+ "react": "19.0.0",
+ "react-dom": "19.0.0",
+ "react-router": "7.0.2"
+ },
+ "devDependencies": {
+ "@rsbuild/core": "1.1.9",
+ "@rspack/core": "1.1.6",
+ "@swc/core": "1.10.1",
+ "@swc/jest": "0.2.37",
+ "@testing-library/react": "16.1.0",
+ "@types/jest": "29.5.14",
+ "@types/node": "22.10.2",
+ "@types/react": "19.0.1",
+ "@types/react-dom": "19.0.2",
+ "@typescript-eslint/parser": "8.18.0",
+ "@workleap/browserslist-config": "workspace:*",
+ "@workleap/eslint-plugin": "workspace:*",
+ "@workleap/rsbuild-configs": "workspace:*",
+ "@workleap/stylelint-configs": "workspace:*",
+ "@workleap/swc-configs": "workspace:*",
+ "@workleap/typescript-configs": "workspace:*",
+ "browserslist": "4.24.2",
+ "cross-env": "7.0.3",
+ "eslint": "8.57.0",
+ "http-server": "14.1.1",
+ "identity-obj-proxy": "3.0.0",
+ "jest": "29.7.0",
+ "jest-environment-jsdom": "29.7.0",
+ "msw": "2.6.8",
+ "nodemon": "3.1.7",
+ "stylelint": "16.11.0",
+ "ts-node": "10.9.2",
+ "typescript": "5.5.4"
+ },
+ "msw": {
+ "workerDirectory": "public"
+ }
+}
diff --git a/sample/app/public/favicon.png b/samples/rsbuild/app/public/favicon.png
similarity index 100%
rename from sample/app/public/favicon.png
rename to samples/rsbuild/app/public/favicon.png
diff --git a/samples/rsbuild/app/public/index.html b/samples/rsbuild/app/public/index.html
new file mode 100644
index 00000000..d2c7c175
--- /dev/null
+++ b/samples/rsbuild/app/public/index.html
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/sample/app/public/mockServiceWorker.js b/samples/rsbuild/app/public/mockServiceWorker.js
similarity index 100%
rename from sample/app/public/mockServiceWorker.js
rename to samples/rsbuild/app/public/mockServiceWorker.js
diff --git a/samples/rsbuild/app/rsbuild.build.ts b/samples/rsbuild/app/rsbuild.build.ts
new file mode 100644
index 00000000..92b2358b
--- /dev/null
+++ b/samples/rsbuild/app/rsbuild.build.ts
@@ -0,0 +1,8 @@
+import { defineBuildConfig } from "@workleap/rsbuild-configs";
+
+export default defineBuildConfig({
+ verbose: process.env.VERBOSE === "true",
+ environmentVariables: {
+ "USE_MSW": process.env.USE_MSW === "true"
+ }
+});
diff --git a/samples/rsbuild/app/rsbuild.dev.ts b/samples/rsbuild/app/rsbuild.dev.ts
new file mode 100644
index 00000000..00c89178
--- /dev/null
+++ b/samples/rsbuild/app/rsbuild.dev.ts
@@ -0,0 +1,10 @@
+import { defineDevConfig } from "@workleap/rsbuild-configs";
+
+export default defineDevConfig({
+ verbose: process.env.VERBOSE === "true",
+ environmentVariables: {
+ "USE_MSW": process.env.USE_MSW === "true",
+ "STRING": "STRING_VALUE",
+ "INT": 1
+ }
+});
diff --git a/samples/rsbuild/app/src/About.tsx b/samples/rsbuild/app/src/About.tsx
new file mode 100644
index 00000000..af2c1c64
--- /dev/null
+++ b/samples/rsbuild/app/src/About.tsx
@@ -0,0 +1,12 @@
+import { Button } from "@rsbuild-sample/components";
+// import { helloFrom } from "@rsbuild-sample/tsup-lib";
+
+export function About() {
+ return (
+ <>
+ About
+ {/* {helloFrom("the about page")}
*/}
+ alert("The button has been clicked!")}>My button!
+ >
+ );
+}
diff --git a/sample/app/src/App.tsx b/samples/rsbuild/app/src/App.tsx
similarity index 100%
rename from sample/app/src/App.tsx
rename to samples/rsbuild/app/src/App.tsx
diff --git a/sample/app/src/Fetch.tsx b/samples/rsbuild/app/src/Fetch.tsx
similarity index 100%
rename from sample/app/src/Fetch.tsx
rename to samples/rsbuild/app/src/Fetch.tsx
diff --git a/sample/app/src/Home.css b/samples/rsbuild/app/src/Home.css
similarity index 100%
rename from sample/app/src/Home.css
rename to samples/rsbuild/app/src/Home.css
diff --git a/samples/rsbuild/app/src/Home.tsx b/samples/rsbuild/app/src/Home.tsx
new file mode 100644
index 00000000..5d5558a9
--- /dev/null
+++ b/samples/rsbuild/app/src/Home.tsx
@@ -0,0 +1,15 @@
+// import { helloFrom } from "@rsbuild-sample/tsup-lib";
+import "./Home.css";
+import { ReactComponent as AddIcon } from "./assets/add.svg";
+
+export function Home() {
+ return (
+
+
Home
+ {/*
{helloFrom("the homepage")}
*/}
+
+ Here's an SVG icon loaded with @svgr/webpack
:
+
+
+ );
+}
diff --git a/sample/app/src/RootLayout.css b/samples/rsbuild/app/src/RootLayout.css
similarity index 100%
rename from sample/app/src/RootLayout.css
rename to samples/rsbuild/app/src/RootLayout.css
diff --git a/sample/app/src/RootLayout.tsx b/samples/rsbuild/app/src/RootLayout.tsx
similarity index 100%
rename from sample/app/src/RootLayout.tsx
rename to samples/rsbuild/app/src/RootLayout.tsx
diff --git a/sample/app/src/assets/add.svg b/samples/rsbuild/app/src/assets/add.svg
similarity index 100%
rename from sample/app/src/assets/add.svg
rename to samples/rsbuild/app/src/assets/add.svg
diff --git a/samples/rsbuild/app/src/env.d.ts b/samples/rsbuild/app/src/env.d.ts
new file mode 100644
index 00000000..5f21dc7f
--- /dev/null
+++ b/samples/rsbuild/app/src/env.d.ts
@@ -0,0 +1,9 @@
+declare module "*.svg" {
+ export const ReactComponent: React.FunctionComponent<
+ React.SVGProps
+ >;
+}
+declare module "*.svg?react" {
+ const ReactComponent: React.FunctionComponent>;
+ export default ReactComponent;
+}
diff --git a/sample/app/src/index.tsx b/samples/rsbuild/app/src/index.tsx
similarity index 100%
rename from sample/app/src/index.tsx
rename to samples/rsbuild/app/src/index.tsx
diff --git a/sample/app/src/mocks/browser.ts b/samples/rsbuild/app/src/mocks/browser.ts
similarity index 100%
rename from sample/app/src/mocks/browser.ts
rename to samples/rsbuild/app/src/mocks/browser.ts
diff --git a/sample/app/src/mocks/handlers.ts b/samples/rsbuild/app/src/mocks/handlers.ts
similarity index 100%
rename from sample/app/src/mocks/handlers.ts
rename to samples/rsbuild/app/src/mocks/handlers.ts
diff --git a/sample/app/src/types/svgr.d.ts b/samples/rsbuild/app/src/types/svgr.d.ts
similarity index 100%
rename from sample/app/src/types/svgr.d.ts
rename to samples/rsbuild/app/src/types/svgr.d.ts
diff --git a/sample/app/swc.jest.ts b/samples/rsbuild/app/swc.jest.ts
similarity index 100%
rename from sample/app/swc.jest.ts
rename to samples/rsbuild/app/swc.jest.ts
diff --git a/sample/app/tests/About.test.tsx b/samples/rsbuild/app/tests/About.test.tsx
similarity index 100%
rename from sample/app/tests/About.test.tsx
rename to samples/rsbuild/app/tests/About.test.tsx
diff --git a/samples/rsbuild/app/tsconfig.json b/samples/rsbuild/app/tsconfig.json
new file mode 100644
index 00000000..b52f3b8d
--- /dev/null
+++ b/samples/rsbuild/app/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "@workleap/typescript-configs/web-application.json",
+ "compilerOptions": {
+ "incremental": true,
+ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
+ // "paths": {
+ // "@rsbuild-sample/tsup-lib": ["../tsup-lib/src/index.ts"]
+ // }
+ },
+ "include": [
+ ".",
+ "../**/src/env.d.ts"
+ ],
+ "exclude": ["public", "dist", "node_modules"]
+}
diff --git a/sample/tsup-lib/.eslintignore b/samples/rsbuild/components/.eslintignore
similarity index 100%
rename from sample/tsup-lib/.eslintignore
rename to samples/rsbuild/components/.eslintignore
diff --git a/sample/components/.eslintrc.json b/samples/rsbuild/components/.eslintrc.json
similarity index 100%
rename from sample/components/.eslintrc.json
rename to samples/rsbuild/components/.eslintrc.json
diff --git a/sample/components/.stylelintrc.json b/samples/rsbuild/components/.stylelintrc.json
similarity index 100%
rename from sample/components/.stylelintrc.json
rename to samples/rsbuild/components/.stylelintrc.json
diff --git a/sample/components/jest.config.ts b/samples/rsbuild/components/jest.config.ts
similarity index 100%
rename from sample/components/jest.config.ts
rename to samples/rsbuild/components/jest.config.ts
diff --git a/samples/rsbuild/components/package.json b/samples/rsbuild/components/package.json
new file mode 100644
index 00000000..56e6120b
--- /dev/null
+++ b/samples/rsbuild/components/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "@rsbuild-sample/components",
+ "author": "Workleap",
+ "version": "0.0.0",
+ "description": "React components library to try the web configs.",
+ "private": true,
+ "license": "Apache-2.0",
+ "type": "module",
+ "exports": "./src/index.ts",
+ "files": [
+ "/dist"
+ ],
+ "scripts": {
+ "eslint": "eslint . --max-warnings=-0 --cache --cache-location node_modules/.cache/eslint",
+ "typecheck": "tsc",
+ "test": "jest"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-dom": "*"
+ },
+ "devDependencies": {
+ "@rsbuild/core": "1.1.9",
+ "@storybook/react": "8.4.7",
+ "@swc/core": "1.10.1",
+ "@swc/jest": "0.2.37",
+ "@testing-library/react": "16.1.0",
+ "@types/jest": "29.5.14",
+ "@types/react": "19.0.1",
+ "@types/react-dom": "19.0.2",
+ "@typescript-eslint/parser": "8.18.0",
+ "@workleap/eslint-plugin": "workspace:*",
+ "@workleap/stylelint-configs": "workspace:*",
+ "@workleap/swc-configs": "workspace:*",
+ "@workleap/typescript-configs": "workspace:*",
+ "eslint": "8.57.0",
+ "identity-obj-proxy": "3.0.0",
+ "jest": "29.7.0",
+ "jest-environment-jsdom": "29.7.0",
+ "react": "19.0.0",
+ "react-dom": "19.0.0",
+ "ts-node": "10.9.2",
+ "typescript": "5.5.4"
+ }
+}
diff --git a/samples/rsbuild/components/src/Button.css b/samples/rsbuild/components/src/Button.css
new file mode 100644
index 00000000..2594a636
--- /dev/null
+++ b/samples/rsbuild/components/src/Button.css
@@ -0,0 +1,3 @@
+.sample-button-bg {
+ background-color: blue;
+}
diff --git a/samples/rsbuild/components/src/Button.module.css b/samples/rsbuild/components/src/Button.module.css
new file mode 100644
index 00000000..cea75dd0
--- /dev/null
+++ b/samples/rsbuild/components/src/Button.module.css
@@ -0,0 +1,3 @@
+.sample-button-color {
+ color: white;
+}
diff --git a/samples/rsbuild/components/src/Button.stories.tsx b/samples/rsbuild/components/src/Button.stories.tsx
new file mode 100644
index 00000000..3a24d900
--- /dev/null
+++ b/samples/rsbuild/components/src/Button.stories.tsx
@@ -0,0 +1,16 @@
+import type { Meta, StoryObj } from "@storybook/react";
+import { Button } from "./Button.tsx";
+
+const meta: Meta = {
+ component: Button
+};
+
+export default meta;
+
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {
+ children: "Click me!"
+ }
+};
diff --git a/samples/rsbuild/components/src/Button.tsx b/samples/rsbuild/components/src/Button.tsx
new file mode 100644
index 00000000..d3ab9f40
--- /dev/null
+++ b/samples/rsbuild/components/src/Button.tsx
@@ -0,0 +1,13 @@
+import type { HTMLProps, ReactNode } from "react";
+import "./Button.css";
+import styles from "./Button.module.css";
+
+export interface ButtonProps extends Omit, "type" | "className"> {
+ children: ReactNode;
+}
+
+export function Button({ children, ...props }: ButtonProps) {
+ return (
+ {children}
+ );
+}
diff --git a/samples/rsbuild/components/src/env.d.ts b/samples/rsbuild/components/src/env.d.ts
new file mode 100644
index 00000000..b0ac762b
--- /dev/null
+++ b/samples/rsbuild/components/src/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/sample/components/src/index.ts b/samples/rsbuild/components/src/index.ts
similarity index 100%
rename from sample/components/src/index.ts
rename to samples/rsbuild/components/src/index.ts
diff --git a/sample/components/swc.jest.ts b/samples/rsbuild/components/swc.jest.ts
similarity index 100%
rename from sample/components/swc.jest.ts
rename to samples/rsbuild/components/swc.jest.ts
diff --git a/sample/components/tests/Button.test.tsx b/samples/rsbuild/components/tests/Button.test.tsx
similarity index 100%
rename from sample/components/tests/Button.test.tsx
rename to samples/rsbuild/components/tests/Button.test.tsx
diff --git a/sample/tsup-lib/tsconfig.json b/samples/rsbuild/components/tsconfig.json
similarity index 100%
rename from sample/tsup-lib/tsconfig.json
rename to samples/rsbuild/components/tsconfig.json
diff --git a/samples/storybook/.browserslistrc b/samples/storybook/.browserslistrc
new file mode 100644
index 00000000..ffa3bf6b
--- /dev/null
+++ b/samples/storybook/.browserslistrc
@@ -0,0 +1 @@
+extends @workleap/browserslist-config
\ No newline at end of file
diff --git a/samples/storybook/.eslintignore b/samples/storybook/.eslintignore
new file mode 100644
index 00000000..42d440b0
--- /dev/null
+++ b/samples/storybook/.eslintignore
@@ -0,0 +1,3 @@
+node_modules
+storybook-static
+!.storybook
diff --git a/samples/storybook/.eslintrc.json b/samples/storybook/.eslintrc.json
new file mode 100644
index 00000000..ab20e504
--- /dev/null
+++ b/samples/storybook/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "https://json.schemastore.org/eslintrc",
+ "root": true,
+ "extends": "plugin:@workleap/web-application"
+}
diff --git a/samples/storybook/.storybook/main.ts b/samples/storybook/.storybook/main.ts
new file mode 100644
index 00000000..c6c0347c
--- /dev/null
+++ b/samples/storybook/.storybook/main.ts
@@ -0,0 +1,22 @@
+// They are installed in this nested project, but not at the root of the workspace.
+/* eslint-disable storybook/no-uninstalled-addons */
+
+import type { StorybookConfig } from "storybook-react-rsbuild";
+
+const storybookConfig: StorybookConfig = {
+ framework: "storybook-react-rsbuild",
+ addons: [
+ "@storybook/addon-links",
+ "@storybook/addon-essentials",
+ "@storybook/addon-interactions",
+ "@storybook/addon-a11y"
+ ],
+ stories: [
+ "../../rsbuild/components/src/**/*.stories.(tsx|mdx)"
+ ],
+ docs: {
+ autodocs: false
+ }
+};
+
+export default storybookConfig;
diff --git a/samples/storybook/.storybook/preview.tsx b/samples/storybook/.storybook/preview.tsx
new file mode 100644
index 00000000..4786cd60
--- /dev/null
+++ b/samples/storybook/.storybook/preview.tsx
@@ -0,0 +1,5 @@
+import type { Preview } from "@storybook/react";
+
+const preview: Preview = {};
+
+export default preview;
diff --git a/samples/storybook/package.json b/samples/storybook/package.json
new file mode 100644
index 00000000..0c9103d4
--- /dev/null
+++ b/samples/storybook/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@storybook-sample/storybook",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "storybook dev -p 6006",
+ "build": "storybook build",
+ "serve-build": "pnpm http-server storybook-static -p 8080 -P http://localhost:8080? -c-1",
+ "eslint": "eslint . --max-warnings=-0 --cache --cache-location node_modules/.cache/eslint",
+ "typecheck": "tsc"
+ },
+ "dependencies": {
+ "react": "19.0.0",
+ "react-dom": "19.0.0"
+ },
+ "devDependencies": {
+ "@rsbuild/core": "1.1.9",
+ "@rspack/core": "1.1.6",
+ "@storybook/addon-a11y": "8.4.7",
+ "@storybook/addon-essentials": "8.4.7",
+ "@storybook/addon-interactions": "8.4.7",
+ "@storybook/addon-links": "8.4.7",
+ "@storybook/react": "8.4.7",
+ "@types/react": "19.0.1",
+ "@types/react-dom": "19.0.2",
+ "@workleap/browserslist-config": "workspace:*",
+ "@workleap/eslint-plugin": "workspace:*",
+ "@workleap/rsbuild-configs": "workspace:*",
+ "@workleap/typescript-configs": "workspace:*",
+ "browserslist": "4.24.2",
+ "eslint": "8.57.0",
+ "http-server": "14.1.1",
+ "storybook": "8.4.7",
+ "storybook-react-rsbuild": "0.1.6",
+ "typescript": "5.5.4"
+ }
+}
diff --git a/samples/storybook/rsbuild.config.ts b/samples/storybook/rsbuild.config.ts
new file mode 100644
index 00000000..ce709cc8
--- /dev/null
+++ b/samples/storybook/rsbuild.config.ts
@@ -0,0 +1,3 @@
+import { defineStorybookConfig } from "@workleap/rsbuild-configs";
+
+export default defineStorybookConfig();
diff --git a/samples/storybook/tsconfig.json b/samples/storybook/tsconfig.json
new file mode 100644
index 00000000..49e7a2a3
--- /dev/null
+++ b/samples/storybook/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "extends": "@workleap/typescript-configs/web-application.json",
+ "compilerOptions": {
+ "incremental": true,
+ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
+ // "paths": {
+ // "@rslib-poc/components-lib": ["../../libs/components-lib/src/index.ts"],
+ // "@rslib-poc/ext-lib": ["../../libs/ext-lib/src/index.ts"],
+ // "@rslib-poc/ts-lib": ["../../libs/ts-lib/src/index.ts"],
+ // }
+ },
+ // "include": [
+ // "**/*",
+ // /**
+ // * Since we are using module augmentation in the packages, and we use tsconfig paths to resolve the packages
+ // * from this repo, we need to include the types folder in the packages to make sure the types are included
+ // * in the build.
+ // */
+ // "../../libs/**/types"
+ // ],
+ "exclude": ["dist", "node_modules"]
+}
diff --git a/samples/webpack/app/.browserslistrc b/samples/webpack/app/.browserslistrc
new file mode 100644
index 00000000..f8a8f866
--- /dev/null
+++ b/samples/webpack/app/.browserslistrc
@@ -0,0 +1 @@
+extends @workleap/browserslist-config
diff --git a/samples/webpack/app/.eslintignore b/samples/webpack/app/.eslintignore
new file mode 100644
index 00000000..de4d1f00
--- /dev/null
+++ b/samples/webpack/app/.eslintignore
@@ -0,0 +1,2 @@
+dist
+node_modules
diff --git a/samples/webpack/app/.eslintrc.json b/samples/webpack/app/.eslintrc.json
new file mode 100644
index 00000000..ab20e504
--- /dev/null
+++ b/samples/webpack/app/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "https://json.schemastore.org/eslintrc",
+ "root": true,
+ "extends": "plugin:@workleap/web-application"
+}
diff --git a/samples/webpack/app/.stylelintrc.json b/samples/webpack/app/.stylelintrc.json
new file mode 100644
index 00000000..8e2ab9c1
--- /dev/null
+++ b/samples/webpack/app/.stylelintrc.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "https://json.schemastore.org/stylelintrc",
+ "extends": "@workleap/stylelint-configs"
+}
diff --git a/samples/webpack/app/jest.config.ts b/samples/webpack/app/jest.config.ts
new file mode 100644
index 00000000..262ac9fe
--- /dev/null
+++ b/samples/webpack/app/jest.config.ts
@@ -0,0 +1,19 @@
+import type { Config } from "jest";
+import { swcConfig } from "./swc.jest.ts";
+
+const config: Config = {
+ testRegex: "/tests/*/.*\\.test\\.(ts|tsx)$",
+ testPathIgnorePatterns: ["/node_modules/", "/dist/"],
+ testEnvironment: "jsdom",
+ transform: {
+ "^.+\\.(js|ts|tsx)$": ["@swc/jest", swcConfig as Record]
+ },
+ moduleNameMapper: {
+ "\\.css$": "identity-obj-proxy"
+ },
+ cacheDirectory: "./node_modules/.cache/jest",
+ clearMocks: true,
+ verbose: true
+};
+
+export default config;
diff --git a/sample/app/nodemon.json b/samples/webpack/app/nodemon.json
similarity index 100%
rename from sample/app/nodemon.json
rename to samples/webpack/app/nodemon.json
diff --git a/sample/app/package.json b/samples/webpack/app/package.json
similarity index 87%
rename from sample/app/package.json
rename to samples/webpack/app/package.json
index e1ecb500..f33aab20 100644
--- a/sample/app/package.json
+++ b/samples/webpack/app/package.json
@@ -1,8 +1,8 @@
{
- "name": "@sample/app",
+ "name": "@webpack-sample/app",
"author": "Workleap",
"version": "0.0.0",
- "description": "Application to try the web configs.",
+ "description": "Application to try the webpack configs.",
"private": true,
"license": "Apache-2.0",
"type": "module",
@@ -17,13 +17,20 @@
"typecheck": "tsc",
"test": "jest"
},
+ "dependencies": {
+ "@webpack-sample/components": "workspace:*",
+ "@webpack-sample/tsup-lib": "workspace:*",
+ "react": "19.0.0",
+ "react-dom": "19.0.0",
+ "react-router": "7.0.2"
+ },
"devDependencies": {
"@swc/core": "1.10.1",
"@swc/helpers": "0.5.15",
"@swc/jest": "0.2.37",
"@testing-library/react": "16.1.0",
"@types/jest": "29.5.14",
- "@types/node": "22.10.1",
+ "@types/node": "22.10.2",
"@types/react": "19.0.1",
"@types/react-dom": "19.0.2",
"@typescript-eslint/parser": "8.18.0",
@@ -49,14 +56,7 @@
"typescript": "5.5.4",
"webpack": "5.97.1",
"webpack-cli": "5.1.4",
- "webpack-dev-server": "5.1.0"
- },
- "dependencies": {
- "@sample/components": "workspace:*",
- "@sample/tsup-lib": "workspace:*",
- "react": "19.0.0",
- "react-dom": "19.0.0",
- "react-router": "7.0.2"
+ "webpack-dev-server": "5.2.0"
},
"msw": {
"workerDirectory": "public"
diff --git a/sample/app/postcss.config.ts b/samples/webpack/app/postcss.config.ts
similarity index 100%
rename from sample/app/postcss.config.ts
rename to samples/webpack/app/postcss.config.ts
diff --git a/samples/webpack/app/public/favicon.png b/samples/webpack/app/public/favicon.png
new file mode 100644
index 00000000..47157f6b
Binary files /dev/null and b/samples/webpack/app/public/favicon.png differ
diff --git a/sample/app/public/index.html b/samples/webpack/app/public/index.html
similarity index 100%
rename from sample/app/public/index.html
rename to samples/webpack/app/public/index.html
diff --git a/samples/webpack/app/public/mockServiceWorker.js b/samples/webpack/app/public/mockServiceWorker.js
new file mode 100644
index 00000000..7898a629
--- /dev/null
+++ b/samples/webpack/app/public/mockServiceWorker.js
@@ -0,0 +1,292 @@
+/* eslint-disable */
+/* tslint:disable */
+
+/**
+ * Mock Service Worker (2.0.3).
+ * @see https://github.com/mswjs/msw
+ * - Please do NOT modify this file.
+ * - Please do NOT serve this file on production.
+ */
+
+const INTEGRITY_CHECKSUM = '0877fcdc026242810f5bfde0d7178db4'
+const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
+const activeClientIds = new Set()
+
+self.addEventListener('install', function () {
+ self.skipWaiting()
+})
+
+self.addEventListener('activate', function (event) {
+ event.waitUntil(self.clients.claim())
+})
+
+self.addEventListener('message', async function (event) {
+ const clientId = event.source.id
+
+ if (!clientId || !self.clients) {
+ return
+ }
+
+ const client = await self.clients.get(clientId)
+
+ if (!client) {
+ return
+ }
+
+ const allClients = await self.clients.matchAll({
+ type: 'window',
+ })
+
+ switch (event.data) {
+ case 'KEEPALIVE_REQUEST': {
+ sendToClient(client, {
+ type: 'KEEPALIVE_RESPONSE',
+ })
+ break
+ }
+
+ case 'INTEGRITY_CHECK_REQUEST': {
+ sendToClient(client, {
+ type: 'INTEGRITY_CHECK_RESPONSE',
+ payload: INTEGRITY_CHECKSUM,
+ })
+ break
+ }
+
+ case 'MOCK_ACTIVATE': {
+ activeClientIds.add(clientId)
+
+ sendToClient(client, {
+ type: 'MOCKING_ENABLED',
+ payload: true,
+ })
+ break
+ }
+
+ case 'MOCK_DEACTIVATE': {
+ activeClientIds.delete(clientId)
+ break
+ }
+
+ case 'CLIENT_CLOSED': {
+ activeClientIds.delete(clientId)
+
+ const remainingClients = allClients.filter((client) => {
+ return client.id !== clientId
+ })
+
+ // Unregister itself when there are no more clients
+ if (remainingClients.length === 0) {
+ self.registration.unregister()
+ }
+
+ break
+ }
+ }
+})
+
+self.addEventListener('fetch', function (event) {
+ const { request } = event
+
+ // Bypass navigation requests.
+ if (request.mode === 'navigate') {
+ return
+ }
+
+ // Opening the DevTools triggers the "only-if-cached" request
+ // that cannot be handled by the worker. Bypass such requests.
+ if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
+ return
+ }
+
+ // Bypass all requests when there are no active clients.
+ // Prevents the self-unregistered worked from handling requests
+ // after it's been deleted (still remains active until the next reload).
+ if (activeClientIds.size === 0) {
+ return
+ }
+
+ // Generate unique request ID.
+ const requestId = crypto.randomUUID()
+ event.respondWith(handleRequest(event, requestId))
+})
+
+async function handleRequest(event, requestId) {
+ const client = await resolveMainClient(event)
+ const response = await getResponse(event, client, requestId)
+
+ // Send back the response clone for the "response:*" life-cycle events.
+ // Ensure MSW is active and ready to handle the message, otherwise
+ // this message will pend indefinitely.
+ if (client && activeClientIds.has(client.id)) {
+ ;(async function () {
+ const responseClone = response.clone()
+ // When performing original requests, response body will
+ // always be a ReadableStream, even for 204 responses.
+ // But when creating a new Response instance on the client,
+ // the body for a 204 response must be null.
+ const responseBody = response.status === 204 ? null : responseClone.body
+
+ sendToClient(
+ client,
+ {
+ type: 'RESPONSE',
+ payload: {
+ requestId,
+ isMockedResponse: IS_MOCKED_RESPONSE in response,
+ type: responseClone.type,
+ status: responseClone.status,
+ statusText: responseClone.statusText,
+ body: responseBody,
+ headers: Object.fromEntries(responseClone.headers.entries()),
+ },
+ },
+ [responseBody],
+ )
+ })()
+ }
+
+ return response
+}
+
+// Resolve the main client for the given event.
+// Client that issues a request doesn't necessarily equal the client
+// that registered the worker. It's with the latter the worker should
+// communicate with during the response resolving phase.
+async function resolveMainClient(event) {
+ const client = await self.clients.get(event.clientId)
+
+ if (client?.frameType === 'top-level') {
+ return client
+ }
+
+ const allClients = await self.clients.matchAll({
+ type: 'window',
+ })
+
+ return allClients
+ .filter((client) => {
+ // Get only those clients that are currently visible.
+ return client.visibilityState === 'visible'
+ })
+ .find((client) => {
+ // Find the client ID that's recorded in the
+ // set of clients that have registered the worker.
+ return activeClientIds.has(client.id)
+ })
+}
+
+async function getResponse(event, client, requestId) {
+ const { request } = event
+
+ // Clone the request because it might've been already used
+ // (i.e. its body has been read and sent to the client).
+ const requestClone = request.clone()
+
+ function passthrough() {
+ const headers = Object.fromEntries(requestClone.headers.entries())
+
+ // Remove internal MSW request header so the passthrough request
+ // complies with any potential CORS preflight checks on the server.
+ // Some servers forbid unknown request headers.
+ delete headers['x-msw-intention']
+
+ return fetch(requestClone, { headers })
+ }
+
+ // Bypass mocking when the client is not active.
+ if (!client) {
+ return passthrough()
+ }
+
+ // Bypass initial page load requests (i.e. static assets).
+ // The absence of the immediate/parent client in the map of the active clients
+ // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet
+ // and is not ready to handle requests.
+ if (!activeClientIds.has(client.id)) {
+ return passthrough()
+ }
+
+ // Bypass requests with the explicit bypass header.
+ // Such requests can be issued by "ctx.fetch()".
+ const mswIntention = request.headers.get('x-msw-intention')
+ if (['bypass', 'passthrough'].includes(mswIntention)) {
+ return passthrough()
+ }
+
+ // Notify the client that a request has been intercepted.
+ const requestBuffer = await request.arrayBuffer()
+ const clientMessage = await sendToClient(
+ client,
+ {
+ type: 'REQUEST',
+ payload: {
+ id: requestId,
+ url: request.url,
+ mode: request.mode,
+ method: request.method,
+ headers: Object.fromEntries(request.headers.entries()),
+ cache: request.cache,
+ credentials: request.credentials,
+ destination: request.destination,
+ integrity: request.integrity,
+ redirect: request.redirect,
+ referrer: request.referrer,
+ referrerPolicy: request.referrerPolicy,
+ body: requestBuffer,
+ keepalive: request.keepalive,
+ },
+ },
+ [requestBuffer],
+ )
+
+ switch (clientMessage.type) {
+ case 'MOCK_RESPONSE': {
+ return respondWithMock(clientMessage.data)
+ }
+
+ case 'MOCK_NOT_FOUND': {
+ return passthrough()
+ }
+ }
+
+ return passthrough()
+}
+
+function sendToClient(client, message, transferrables = []) {
+ return new Promise((resolve, reject) => {
+ const channel = new MessageChannel()
+
+ channel.port1.onmessage = (event) => {
+ if (event.data && event.data.error) {
+ return reject(event.data.error)
+ }
+
+ resolve(event.data)
+ }
+
+ client.postMessage(
+ message,
+ [channel.port2].concat(transferrables.filter(Boolean)),
+ )
+ })
+}
+
+async function respondWithMock(response) {
+ // Setting response status code to 0 is a no-op.
+ // However, when responding with a "Response.error()", the produced Response
+ // instance will have status code set to 0. Since it's not possible to create
+ // a Response instance with status code 0, handle that use-case separately.
+ if (response.status === 0) {
+ return Response.error()
+ }
+
+ const mockedResponse = new Response(response.body, response)
+
+ Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, {
+ value: true,
+ enumerable: true,
+ })
+
+ return mockedResponse
+}
diff --git a/sample/app/src/About.tsx b/samples/webpack/app/src/About.tsx
similarity index 69%
rename from sample/app/src/About.tsx
rename to samples/webpack/app/src/About.tsx
index 2e8a90d7..fd873051 100644
--- a/sample/app/src/About.tsx
+++ b/samples/webpack/app/src/About.tsx
@@ -1,5 +1,5 @@
-import { Button } from "@sample/components";
-import { helloFrom } from "@sample/tsup-lib";
+import { Button } from "@webpack-sample/components";
+import { helloFrom } from "@webpack-sample/tsup-lib";
export function About() {
return (
diff --git a/samples/webpack/app/src/App.tsx b/samples/webpack/app/src/App.tsx
new file mode 100644
index 00000000..d1051464
--- /dev/null
+++ b/samples/webpack/app/src/App.tsx
@@ -0,0 +1,43 @@
+import { createBrowserRouter } from "react-router";
+import { RouterProvider } from "react-router/dom";
+import { About } from "./About.tsx";
+import { Fetch } from "./Fetch.tsx";
+import { Home } from "./Home.tsx";
+import { RootLayout } from "./RootLayout.tsx";
+
+const router = createBrowserRouter([
+ {
+ element: ,
+ children: [
+ {
+ index: true,
+ element:
+ },
+ {
+ path: "/about",
+ element:
+ },
+ {
+ path: "/fetch",
+ element:
+ }
+ ]
+ }
+], {
+ future: {
+ v7_relativeSplatPath: false,
+ v7_startTransition: false,
+ v7_fetcherPersist: false,
+ v7_normalizeFormMethod: false,
+ v7_partialHydration: false,
+ v7_skipActionErrorRevalidation: false
+ }
+});
+
+export function App() {
+ return (
+
+ );
+}
diff --git a/samples/webpack/app/src/Fetch.tsx b/samples/webpack/app/src/Fetch.tsx
new file mode 100644
index 00000000..df27d675
--- /dev/null
+++ b/samples/webpack/app/src/Fetch.tsx
@@ -0,0 +1,31 @@
+import { useEffect, useState } from "react";
+
+export function Fetch() {
+ const [pokemons, setPokemons] = useState([]);
+
+ useEffect(() => {
+ fetch("/api/pokemons")
+ .then(res => {
+ if (res.ok) {
+ return res.json();
+ }
+
+ throw res;
+ })
+ .then(data => {
+ setPokemons(data);
+ })
+ .catch(() => {
+ console.error("An error occured while fetching pokemons.");
+ });
+ }, []);
+
+ return (
+ <>
+ Fetch
+
+ {pokemons.map(x => {x} )}
+
+ >
+ );
+}
diff --git a/samples/webpack/app/src/Home.css b/samples/webpack/app/src/Home.css
new file mode 100644
index 00000000..1b38f5c8
--- /dev/null
+++ b/samples/webpack/app/src/Home.css
@@ -0,0 +1,3 @@
+.title {
+ color: blue;
+}
diff --git a/sample/app/src/Home.tsx b/samples/webpack/app/src/Home.tsx
similarity index 86%
rename from sample/app/src/Home.tsx
rename to samples/webpack/app/src/Home.tsx
index edd979a2..9419dd47 100644
--- a/sample/app/src/Home.tsx
+++ b/samples/webpack/app/src/Home.tsx
@@ -1,4 +1,4 @@
-import { helloFrom } from "@sample/tsup-lib";
+import { helloFrom } from "@webpack-sample/tsup-lib";
import "./Home.css";
import AddIcon from "./assets/add.svg";
diff --git a/samples/webpack/app/src/RootLayout.css b/samples/webpack/app/src/RootLayout.css
new file mode 100644
index 00000000..f6fe8f72
--- /dev/null
+++ b/samples/webpack/app/src/RootLayout.css
@@ -0,0 +1,10 @@
+.nav {
+ display: flex;
+ gap: 1rem;
+ margin: 0;
+ padding: 0;
+}
+
+.nav-item {
+ list-style-type: none;
+}
diff --git a/samples/webpack/app/src/RootLayout.tsx b/samples/webpack/app/src/RootLayout.tsx
new file mode 100644
index 00000000..dbf2bf78
--- /dev/null
+++ b/samples/webpack/app/src/RootLayout.tsx
@@ -0,0 +1,17 @@
+import { Link, Outlet } from "react-router";
+import "./RootLayout.css";
+
+export function RootLayout() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
diff --git a/samples/webpack/app/src/assets/add.svg b/samples/webpack/app/src/assets/add.svg
new file mode 100644
index 00000000..d6111558
--- /dev/null
+++ b/samples/webpack/app/src/assets/add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/samples/webpack/app/src/index.tsx b/samples/webpack/app/src/index.tsx
new file mode 100644
index 00000000..5d3b525e
--- /dev/null
+++ b/samples/webpack/app/src/index.tsx
@@ -0,0 +1,17 @@
+import { StrictMode } from "react";
+import { createRoot } from "react-dom/client";
+import { App } from "./App.tsx";
+
+if (process.env.USE_MSW) {
+ import("./mocks/browser.ts").then(({ worker }) => {
+ worker.start();
+ });
+}
+
+const root = createRoot(document.getElementById("root")!);
+
+root.render(
+
+
+
+);
diff --git a/samples/webpack/app/src/mocks/browser.ts b/samples/webpack/app/src/mocks/browser.ts
new file mode 100644
index 00000000..ebf793a0
--- /dev/null
+++ b/samples/webpack/app/src/mocks/browser.ts
@@ -0,0 +1,5 @@
+import { setupWorker, type SetupWorker } from "msw/browser";
+import { handlers } from "./handlers.ts";
+
+// This configures a Service Worker with the given request handlers.
+export const worker: SetupWorker = setupWorker(...handlers);
diff --git a/samples/webpack/app/src/mocks/handlers.ts b/samples/webpack/app/src/mocks/handlers.ts
new file mode 100644
index 00000000..68f84ef1
--- /dev/null
+++ b/samples/webpack/app/src/mocks/handlers.ts
@@ -0,0 +1,28 @@
+import { HttpResponse, http, type HttpHandler } from "msw";
+
+export const handlers: HttpHandler[] = [
+ http.get("/api/pokemons", () => {
+ return HttpResponse.json([
+ "Bulbasaur",
+ "Ivysaur",
+ "Venusaur",
+ "Charmander",
+ "Charmeleon",
+ "Charizard",
+ "Squirtle",
+ "Wartortle",
+ "Blastoise",
+ "Caterpie",
+ "Metapod",
+ "Butterfree",
+ "Weedle",
+ "Kakuna",
+ "Beedrill",
+ "Pidgey",
+ "Pidgeotto",
+ "Pidgeot",
+ "Rattata",
+ "Raticate"
+ ]);
+ })
+];
diff --git a/samples/webpack/app/src/types/svgr.d.ts b/samples/webpack/app/src/types/svgr.d.ts
new file mode 100644
index 00000000..7a46c1b3
--- /dev/null
+++ b/samples/webpack/app/src/types/svgr.d.ts
@@ -0,0 +1,4 @@
+declare module "*.svg" {
+ const content: React.FunctionComponent>;
+ export default content;
+}
diff --git a/sample/app/swc.build.js b/samples/webpack/app/swc.build.js
similarity index 100%
rename from sample/app/swc.build.js
rename to samples/webpack/app/swc.build.js
diff --git a/sample/app/swc.dev.js b/samples/webpack/app/swc.dev.js
similarity index 100%
rename from sample/app/swc.dev.js
rename to samples/webpack/app/swc.dev.js
diff --git a/samples/webpack/app/swc.jest.ts b/samples/webpack/app/swc.jest.ts
new file mode 100644
index 00000000..dc009c5e
--- /dev/null
+++ b/samples/webpack/app/swc.jest.ts
@@ -0,0 +1,5 @@
+import { defineJestConfig } from "@workleap/swc-configs";
+
+export const swcConfig = defineJestConfig({
+ react: true
+});
diff --git a/samples/webpack/app/tests/About.test.tsx b/samples/webpack/app/tests/About.test.tsx
new file mode 100644
index 00000000..29ea0f84
--- /dev/null
+++ b/samples/webpack/app/tests/About.test.tsx
@@ -0,0 +1,8 @@
+import { render, screen } from "@testing-library/react";
+import { About } from "../src/About.tsx";
+
+test("About page has a h1 element", async () => {
+ render( );
+
+ expect(await screen.findByRole("heading")).toBeDefined();
+});
diff --git a/sample/app/tsconfig.json b/samples/webpack/app/tsconfig.json
similarity index 80%
rename from sample/app/tsconfig.json
rename to samples/webpack/app/tsconfig.json
index b580c239..da5b2940 100644
--- a/sample/app/tsconfig.json
+++ b/samples/webpack/app/tsconfig.json
@@ -4,7 +4,7 @@
"incremental": true,
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
"paths": {
- "@sample/tsup-lib": ["../tsup-lib/src/index.ts"]
+ "@webpack-sample/tsup-lib": ["../tsup-lib/src/index.ts"]
}
},
"exclude": ["public", "dist", "node_modules"]
diff --git a/sample/app/webpack.build.js b/samples/webpack/app/webpack.build.js
similarity index 100%
rename from sample/app/webpack.build.js
rename to samples/webpack/app/webpack.build.js
diff --git a/sample/app/webpack.dev.js b/samples/webpack/app/webpack.dev.js
similarity index 100%
rename from sample/app/webpack.dev.js
rename to samples/webpack/app/webpack.dev.js
diff --git a/samples/webpack/components/.eslintignore b/samples/webpack/components/.eslintignore
new file mode 100644
index 00000000..de4d1f00
--- /dev/null
+++ b/samples/webpack/components/.eslintignore
@@ -0,0 +1,2 @@
+dist
+node_modules
diff --git a/samples/webpack/components/.eslintrc.json b/samples/webpack/components/.eslintrc.json
new file mode 100644
index 00000000..bf056420
--- /dev/null
+++ b/samples/webpack/components/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "https://json.schemastore.org/eslintrc",
+ "root": true,
+ "extends": "plugin:@workleap/react-library"
+}
diff --git a/samples/webpack/components/.stylelintrc.json b/samples/webpack/components/.stylelintrc.json
new file mode 100644
index 00000000..8e2ab9c1
--- /dev/null
+++ b/samples/webpack/components/.stylelintrc.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "https://json.schemastore.org/stylelintrc",
+ "extends": "@workleap/stylelint-configs"
+}
diff --git a/samples/webpack/components/jest.config.ts b/samples/webpack/components/jest.config.ts
new file mode 100644
index 00000000..1e0a3fed
--- /dev/null
+++ b/samples/webpack/components/jest.config.ts
@@ -0,0 +1,19 @@
+import type { Config } from "jest";
+import { swcConfig } from "./swc.jest.ts";
+
+const config: Config = {
+ testRegex: "/tests/*/.*\\.test\\.(ts|tsx)$",
+ testPathIgnorePatterns: ["/node_modules/", "/dist/"],
+ testEnvironment: "jsdom",
+ transform: {
+ "^.+\\.(ts|tsx)$": ["@swc/jest", swcConfig as Record]
+ },
+ moduleNameMapper: {
+ "\\.css$": "identity-obj-proxy"
+ },
+ cacheDirectory: "./node_modules/.cache/jest",
+ clearMocks: true,
+ verbose: true
+};
+
+export default config;
diff --git a/sample/components/package.json b/samples/webpack/components/package.json
similarity index 96%
rename from sample/components/package.json
rename to samples/webpack/components/package.json
index 84c7c65d..1f9b471c 100644
--- a/sample/components/package.json
+++ b/samples/webpack/components/package.json
@@ -1,5 +1,5 @@
{
- "name": "@sample/components",
+ "name": "@webpack-sample/components",
"author": "Workleap",
"version": "0.0.0",
"description": "React components library to try the web configs.",
diff --git a/sample/components/src/Button.css b/samples/webpack/components/src/Button.css
similarity index 100%
rename from sample/components/src/Button.css
rename to samples/webpack/components/src/Button.css
diff --git a/sample/components/src/Button.tsx b/samples/webpack/components/src/Button.tsx
similarity index 100%
rename from sample/components/src/Button.tsx
rename to samples/webpack/components/src/Button.tsx
diff --git a/samples/webpack/components/src/index.ts b/samples/webpack/components/src/index.ts
new file mode 100644
index 00000000..dde4b414
--- /dev/null
+++ b/samples/webpack/components/src/index.ts
@@ -0,0 +1 @@
+export * from "./Button.tsx";
diff --git a/samples/webpack/components/swc.jest.ts b/samples/webpack/components/swc.jest.ts
new file mode 100644
index 00000000..dc009c5e
--- /dev/null
+++ b/samples/webpack/components/swc.jest.ts
@@ -0,0 +1,5 @@
+import { defineJestConfig } from "@workleap/swc-configs";
+
+export const swcConfig = defineJestConfig({
+ react: true
+});
diff --git a/samples/webpack/components/tests/Button.test.tsx b/samples/webpack/components/tests/Button.test.tsx
new file mode 100644
index 00000000..d995c76f
--- /dev/null
+++ b/samples/webpack/components/tests/Button.test.tsx
@@ -0,0 +1,8 @@
+import { render, screen } from "@testing-library/react";
+import { Button } from "../src/Button.tsx";
+
+test("About page has a h1 element", async () => {
+ render(My button );
+
+ expect(await screen.findByRole("button")).toBeDefined();
+});
diff --git a/samples/webpack/components/tsconfig.json b/samples/webpack/components/tsconfig.json
new file mode 100644
index 00000000..596c3d1a
--- /dev/null
+++ b/samples/webpack/components/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@workleap/typescript-configs/library.json",
+ "compilerOptions": {
+ "incremental": true,
+ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
+ },
+ "exclude": ["dist", "node_modules"]
+}
diff --git a/samples/webpack/tsup-lib/.eslintignore b/samples/webpack/tsup-lib/.eslintignore
new file mode 100644
index 00000000..de4d1f00
--- /dev/null
+++ b/samples/webpack/tsup-lib/.eslintignore
@@ -0,0 +1,2 @@
+dist
+node_modules
diff --git a/samples/webpack/tsup-lib/.eslintrc.json b/samples/webpack/tsup-lib/.eslintrc.json
new file mode 100644
index 00000000..d9f48339
--- /dev/null
+++ b/samples/webpack/tsup-lib/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "https://json.schemastore.org/eslintrc",
+ "root": true,
+ "extends": "plugin:@workleap/typescript-library"
+}
diff --git a/sample/tsup-lib/package.json b/samples/webpack/tsup-lib/package.json
similarity index 96%
rename from sample/tsup-lib/package.json
rename to samples/webpack/tsup-lib/package.json
index 1ef42a7a..2b442833 100644
--- a/sample/tsup-lib/package.json
+++ b/samples/webpack/tsup-lib/package.json
@@ -1,5 +1,5 @@
{
- "name": "@sample/tsup-lib",
+ "name": "@webpack-sample/tsup-lib",
"author": "Workleap",
"version": "0.0.0",
"description": "Typescript library to try the web configs.",
diff --git a/sample/tsup-lib/src/helloFrom.ts b/samples/webpack/tsup-lib/src/helloFrom.ts
similarity index 100%
rename from sample/tsup-lib/src/helloFrom.ts
rename to samples/webpack/tsup-lib/src/helloFrom.ts
diff --git a/samples/webpack/tsup-lib/src/index.ts b/samples/webpack/tsup-lib/src/index.ts
new file mode 100644
index 00000000..52b59088
--- /dev/null
+++ b/samples/webpack/tsup-lib/src/index.ts
@@ -0,0 +1 @@
+export * from "./helloFrom.ts";
diff --git a/samples/webpack/tsup-lib/tsconfig.json b/samples/webpack/tsup-lib/tsconfig.json
new file mode 100644
index 00000000..596c3d1a
--- /dev/null
+++ b/samples/webpack/tsup-lib/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@workleap/typescript-configs/library.json",
+ "compilerOptions": {
+ "incremental": true,
+ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
+ },
+ "exclude": ["dist", "node_modules"]
+}
diff --git a/sample/tsup-lib/tsup.build.ts b/samples/webpack/tsup-lib/tsup.build.ts
similarity index 100%
rename from sample/tsup-lib/tsup.build.ts
rename to samples/webpack/tsup-lib/tsup.build.ts
diff --git a/sample/tsup-lib/tsup.dev.ts b/samples/webpack/tsup-lib/tsup.dev.ts
similarity index 100%
rename from sample/tsup-lib/tsup.dev.ts
rename to samples/webpack/tsup-lib/tsup.dev.ts
diff --git a/tsconfig.json b/tsconfig.json
index b3eea55d..0d049a1a 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -4,5 +4,5 @@
"incremental": true,
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
},
- "exclude": ["packages", "sample", "node_modules"]
+ "exclude": ["packages", "samples", "node_modules"]
}
diff --git a/turbo.json b/turbo.json
index 5f5e52aa..9f78d527 100644
--- a/turbo.json
+++ b/turbo.json
@@ -15,7 +15,7 @@
},
"build": {
"dependsOn": ["^build"],
- "outputs": ["dist/**"]
+ "outputs": ["dist/**", "storybook-static/**"]
},
"serve-build": {
"dependsOn": ["build"],