From fb91e0d2b3dabb17a89a329c6e6be45709d606f3 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 14:21:41 +1000 Subject: [PATCH 01/30] chore(sb10): bump storybook and related packages to ^10.0.0 Co-Authored-By: Claude Sonnet 4.6 --- package.json | 16 +- .../parcel-transformer-storybook/package.json | 2 +- .../dev/storybook-builder-parcel/package.json | 2 +- .../dev/storybook-react-parcel/package.json | 6 +- yarn.lock | 2344 ++++++++++++++--- 5 files changed, 1959 insertions(+), 411 deletions(-) diff --git a/package.json b/package.json index 97f8b6f5396..9f4e665c13c 100644 --- a/package.json +++ b/package.json @@ -119,12 +119,12 @@ "@react-spectrum/s2-icon-builder": "workspace:^", "@spectrum-css/component-builder": "workspace:^", "@spectrum-css/vars": "^2.3.0", - "@storybook/addon-a11y": "^9.0.18", - "@storybook/addon-docs": "^9.0.18", - "@storybook/addon-jest": "^9.0.18", - "@storybook/addon-themes": "^9.0.18", - "@storybook/react": "^9.0.18", - "@storybook/test-runner": "^0.22.0", + "@storybook/addon-a11y": "^10.0.0", + "@storybook/addon-docs": "^10.0.0", + "@storybook/addon-jest": "10.0.0-beta.12", + "@storybook/addon-themes": "^10.0.0", + "@storybook/react": "^10.0.0", + "@storybook/test-runner": "^0.24.0", "@stylistic/eslint-plugin-ts": "^2.9.0", "@swc/core": "^1.3.36", "@swc/jest": "^0.2.36", @@ -139,7 +139,7 @@ "@vitejs/plugin-react": "^5.1.4", "@vitest/browser-playwright": "^4.0.17", "@vitest/browser-preview": "^4.0.17", - "@vueless/storybook-dark-mode": "^9.0.6", + "@vueless/storybook-dark-mode": "^10.0.0", "@yarnpkg/types": "^4.0.0", "autoprefixer": "^9.6.0", "axe-playwright": "^1.1.11", @@ -199,7 +199,7 @@ "rimraf": "^6.0.1", "shadow-dom-testing-library": "^1.13.1", "sharp": "^0.33.5", - "storybook": "^9.0.18", + "storybook": "^10.0.0", "storybook-react-parcel": "workspace:^", "tailwind-variants": "patch:tailwind-variants@npm%3A0.3.1#~/.yarn/patches/tailwind-variants-npm-0.3.1-48888516de.patch", "tailwindcss": "^4.0.0", diff --git a/packages/dev/parcel-transformer-storybook/package.json b/packages/dev/parcel-transformer-storybook/package.json index c03c4cca846..177477d961b 100644 --- a/packages/dev/parcel-transformer-storybook/package.json +++ b/packages/dev/parcel-transformer-storybook/package.json @@ -16,7 +16,7 @@ "@parcel/plugin": "^2.16.3", "@parcel/source-map": "^2.1.1", "react-docgen-typescript": "^2.2.2", - "storybook": "^9.0.18", + "storybook": "^10.0.0", "typescript": "^5.5.0" }, "scripts": { diff --git a/packages/dev/storybook-builder-parcel/package.json b/packages/dev/storybook-builder-parcel/package.json index a812d1fa824..76cbb188228 100644 --- a/packages/dev/storybook-builder-parcel/package.json +++ b/packages/dev/storybook-builder-parcel/package.json @@ -7,7 +7,7 @@ "@parcel/core": "^2.16.3", "@parcel/reporter-cli": "^2.16.3", "http-proxy-middleware": "^2.0.6", - "storybook": "^9.0.18" + "storybook": "^10.0.0" }, "peerDependencies": { "react": "*" diff --git a/packages/dev/storybook-react-parcel/package.json b/packages/dev/storybook-react-parcel/package.json index 69e0b50d0f3..257353dfff6 100644 --- a/packages/dev/storybook-react-parcel/package.json +++ b/packages/dev/storybook-react-parcel/package.json @@ -4,18 +4,18 @@ "private": true, "main": "preset.js", "dependencies": { - "@storybook/react": "^9.0.18", + "@storybook/react": "^10.0.0", "storybook-builder-parcel": ">=0.0.1" }, "devDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", - "storybook": "^9.0.18" + "storybook": "^10.0.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", - "storybook": "^9.0.18" + "storybook": "^10.0.0" }, "scripts": { "build": "true", diff --git a/yarn.lock b/yarn.lock index 10bc876e12b..c9ca80ebea6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -188,6 +188,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.27.1": + version: 7.29.0 + resolution: "@babel/code-frame@npm:7.29.0" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.28.5" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/d34cc504e7765dfb576a663d97067afb614525806b5cad1a5cc1a7183b916fec8ff57fa233585e3926fd5a9e6b31aae6df91aa81ae9775fb7a28f658d3346f0d + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5, @babel/compat-data@npm:^7.24.4": version: 7.24.4 resolution: "@babel/compat-data@npm:7.24.4" @@ -244,6 +255,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.27.5": + version: 7.29.1 + resolution: "@babel/generator@npm:7.29.1" + dependencies: + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -397,7 +421,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.27.1": +"@babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d @@ -471,6 +495,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" @@ -719,6 +750,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1be160e2c426faa74e5be2e30e39e8d0d8c543063bd5d06cd804f8751b8fbcb82ce824ca7f9ce4b09c003693f6c06a11ce503b7e34d85e1a259631e4c3f72ad2 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" @@ -752,6 +794,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.28.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b98fc3cd75e4ca3d5ca1162f610c286e14ede1486e0d297c13a5eb0ac85680ac9656d17d348bddd9160a54d797a08cea5eaac02b9330ddebb7b26732b7b99fb5 + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -851,6 +904,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1842,6 +1906,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:^1.4.3": + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.1" + tslib: "npm:^2.4.0" + checksum: 10c0/f51d08227857b60632de7714d708124f0e100a1462dde6df8221760939aa3204a73193830371830fac0716f3ccd2129f2cac1b17cd7d7958bc4da9018a296edb + languageName: node + linkType: hard + "@emnapi/runtime@npm:^1.2.0": version: 1.3.1 resolution: "@emnapi/runtime@npm:1.3.1" @@ -1851,6 +1925,24 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.4.3": + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/953f14991d1aefb92ee6f8eb27dea725e484791a53a0cb5f47d9e0087b9a2c929ff2e92adf95af15d6ad456db6300c6b761ebf72b50a875b874a83520b3ba093 + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/32fcfa81ab396533b2ec1f4082b1ff779a05d9c836bbbd3f4398405b0e6814c0d9503b7993130e37bc6941dbc1ded49f55e9700ae9ca4e803bab2b5bc5deb331 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:~0.49.0": version: 0.49.0 resolution: "@es-joy/jsdoccomment@npm:0.49.0" @@ -1862,13 +1954,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/aix-ppc64@npm:0.25.5" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.27.3": version: 0.27.3 resolution: "@esbuild/aix-ppc64@npm:0.27.3" @@ -1876,10 +1961,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/android-arm64@npm:0.25.5" - conditions: os=android & cpu=arm64 +"@esbuild/aix-ppc64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/aix-ppc64@npm:0.27.7" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -1890,10 +1975,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/android-arm@npm:0.25.5" - conditions: os=android & cpu=arm +"@esbuild/android-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/android-arm64@npm:0.27.7" + conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -1904,10 +1989,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/android-x64@npm:0.25.5" - conditions: os=android & cpu=x64 +"@esbuild/android-arm@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/android-arm@npm:0.27.7" + conditions: os=android & cpu=arm languageName: node linkType: hard @@ -1918,10 +2003,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/darwin-arm64@npm:0.25.5" - conditions: os=darwin & cpu=arm64 +"@esbuild/android-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/android-x64@npm:0.27.7" + conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -1932,10 +2017,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/darwin-x64@npm:0.25.5" - conditions: os=darwin & cpu=x64 +"@esbuild/darwin-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/darwin-arm64@npm:0.27.7" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -1946,10 +2031,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/freebsd-arm64@npm:0.25.5" - conditions: os=freebsd & cpu=arm64 +"@esbuild/darwin-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/darwin-x64@npm:0.27.7" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -1960,10 +2045,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/freebsd-x64@npm:0.25.5" - conditions: os=freebsd & cpu=x64 +"@esbuild/freebsd-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/freebsd-arm64@npm:0.27.7" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -1974,10 +2059,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-arm64@npm:0.25.5" - conditions: os=linux & cpu=arm64 +"@esbuild/freebsd-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/freebsd-x64@npm:0.27.7" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -1988,10 +2073,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-arm@npm:0.25.5" - conditions: os=linux & cpu=arm +"@esbuild/linux-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-arm64@npm:0.27.7" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -2002,10 +2087,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-ia32@npm:0.25.5" - conditions: os=linux & cpu=ia32 +"@esbuild/linux-arm@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-arm@npm:0.27.7" + conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -2016,10 +2101,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-loong64@npm:0.25.5" - conditions: os=linux & cpu=loong64 +"@esbuild/linux-ia32@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-ia32@npm:0.27.7" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -2030,10 +2115,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-mips64el@npm:0.25.5" - conditions: os=linux & cpu=mips64el +"@esbuild/linux-loong64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-loong64@npm:0.27.7" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -2044,10 +2129,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-ppc64@npm:0.25.5" - conditions: os=linux & cpu=ppc64 +"@esbuild/linux-mips64el@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-mips64el@npm:0.27.7" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -2058,10 +2143,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-riscv64@npm:0.25.5" - conditions: os=linux & cpu=riscv64 +"@esbuild/linux-ppc64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-ppc64@npm:0.27.7" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -2072,10 +2157,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-s390x@npm:0.25.5" - conditions: os=linux & cpu=s390x +"@esbuild/linux-riscv64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-riscv64@npm:0.27.7" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -2086,10 +2171,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-x64@npm:0.25.5" - conditions: os=linux & cpu=x64 +"@esbuild/linux-s390x@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-s390x@npm:0.27.7" + conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -2100,10 +2185,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/netbsd-arm64@npm:0.25.5" - conditions: os=netbsd & cpu=arm64 +"@esbuild/linux-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/linux-x64@npm:0.27.7" + conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -2114,10 +2199,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/netbsd-x64@npm:0.25.5" - conditions: os=netbsd & cpu=x64 +"@esbuild/netbsd-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/netbsd-arm64@npm:0.27.7" + conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -2128,10 +2213,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/openbsd-arm64@npm:0.25.5" - conditions: os=openbsd & cpu=arm64 +"@esbuild/netbsd-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/netbsd-x64@npm:0.27.7" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -2142,10 +2227,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/openbsd-x64@npm:0.25.5" - conditions: os=openbsd & cpu=x64 +"@esbuild/openbsd-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/openbsd-arm64@npm:0.27.7" + conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -2156,6 +2241,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/openbsd-x64@npm:0.27.7" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openharmony-arm64@npm:0.27.3": version: 0.27.3 resolution: "@esbuild/openharmony-arm64@npm:0.27.3" @@ -2163,10 +2255,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/sunos-x64@npm:0.25.5" - conditions: os=sunos & cpu=x64 +"@esbuild/openharmony-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/openharmony-arm64@npm:0.27.7" + conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard @@ -2177,10 +2269,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/win32-arm64@npm:0.25.5" - conditions: os=win32 & cpu=arm64 +"@esbuild/sunos-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/sunos-x64@npm:0.27.7" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -2191,10 +2283,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/win32-ia32@npm:0.25.5" - conditions: os=win32 & cpu=ia32 +"@esbuild/win32-arm64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/win32-arm64@npm:0.27.7" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -2205,10 +2297,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/win32-x64@npm:0.25.5" - conditions: os=win32 & cpu=x64 +"@esbuild/win32-ia32@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/win32-ia32@npm:0.27.7" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -2219,6 +2311,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.27.7": + version: 0.27.7 + resolution: "@esbuild/win32-x64@npm:0.27.7" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -2846,6 +2945,20 @@ __metadata: languageName: node linkType: hard +"@jest/console@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/console@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + jest-message-util: "npm:30.3.0" + jest-util: "npm:30.3.0" + slash: "npm:^3.0.0" + checksum: 10c0/5458f26b0591b847b719a707cbd1d6b2b99960784a1480a28d19200a807b6092f066c1bd1810df8c6adebf934a64de7b6022dc35082cd7c8f09f35940da104d9 + languageName: node + linkType: hard + "@jest/console@npm:^29.7.0": version: 29.7.0 resolution: "@jest/console@npm:29.7.0" @@ -2860,6 +2973,46 @@ __metadata: languageName: node linkType: hard +"@jest/core@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/core@npm:30.3.0" + dependencies: + "@jest/console": "npm:30.3.0" + "@jest/pattern": "npm:30.0.1" + "@jest/reporters": "npm:30.3.0" + "@jest/test-result": "npm:30.3.0" + "@jest/transform": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-changed-files: "npm:30.3.0" + jest-config: "npm:30.3.0" + jest-haste-map: "npm:30.3.0" + jest-message-util: "npm:30.3.0" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.3.0" + jest-resolve-dependencies: "npm:30.3.0" + jest-runner: "npm:30.3.0" + jest-runtime: "npm:30.3.0" + jest-snapshot: "npm:30.3.0" + jest-util: "npm:30.3.0" + jest-validate: "npm:30.3.0" + jest-watcher: "npm:30.3.0" + pretty-format: "npm:30.3.0" + slash: "npm:^3.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/1735f2263cca10c6cae4e1dbde9c3ccb36e2cbd1cc10bac6fc45e187b06c4e33a6a029f9a6444a3cd43a2a44ffaec3b686d94f70965cebf2b885b198c8615322 + languageName: node + linkType: hard + "@jest/core@npm:^29.7.0": version: 29.7.0 resolution: "@jest/core@npm:29.7.0" @@ -2910,6 +3063,34 @@ __metadata: languageName: node linkType: hard +"@jest/create-cache-key-function@npm:^30.0.0": + version: 30.3.0 + resolution: "@jest/create-cache-key-function@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + checksum: 10c0/b1906d3b2230b6820877de065686c211bcbbe984cc40e09531b71b553e931505f837a453fdda481bee8686b8d572c95027d262af96789cbcbb6d58cbe0787fcc + languageName: node + linkType: hard + +"@jest/diff-sequences@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/diff-sequences@npm:30.3.0" + checksum: 10c0/8922c16a869b839b6c05f677023b3e5a9aa1610ad78a9c5ec8bd6654e35e8136ea1c7b60ad561910e2ad964bfdb0b09b0254ff8dcfacd4562095766f60c63d76 + languageName: node + linkType: hard + +"@jest/environment@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/environment@npm:30.3.0" + dependencies: + "@jest/fake-timers": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + jest-mock: "npm:30.3.0" + checksum: 10c0/4068ccc2e4761e52909239c21e71f73b57ad087bd120b75d3232c68d911686d68fd0fb20e19725517a624b0aa9d45431b00503bd1d5ab2f4958e1a18d265d8d5 + languageName: node + linkType: hard + "@jest/environment@npm:^29.5.0, @jest/environment@npm:^29.7.0": version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" @@ -2922,6 +3103,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/expect-utils@npm:30.3.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + checksum: 10c0/4bb60fb434cb8ed325735bd39171b61621e110502ecc502089805d203ecb17b9fc5a400aeffb83b41fabcc819628a9c38c955f90a716d6aaff193d10926fc854 + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -2931,6 +3121,16 @@ __metadata: languageName: node linkType: hard +"@jest/expect@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/expect@npm:30.3.0" + dependencies: + expect: "npm:30.3.0" + jest-snapshot: "npm:30.3.0" + checksum: 10c0/1e052975fdf2b977a63dc9f3db1de56be9dce8e5cd660d9c72cc25093324b990b3e93318cd0c1ff9df7cb30ec7eef71331bc7e19d39700eb3f4498e17ee4c9e0 + languageName: node + linkType: hard + "@jest/expect@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect@npm:29.7.0" @@ -2941,6 +3141,20 @@ __metadata: languageName: node linkType: hard +"@jest/fake-timers@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/fake-timers@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + "@sinonjs/fake-timers": "npm:^15.0.0" + "@types/node": "npm:*" + jest-message-util: "npm:30.3.0" + jest-mock: "npm:30.3.0" + jest-util: "npm:30.3.0" + checksum: 10c0/114855ca14d6b34c886855445852a5b960bc3df0ef97c4b971b375747fe0206b3111ec60efc6e658565677022f0d790acd7e232e478f3390ea854d04dea0c4d8 + languageName: node + linkType: hard + "@jest/fake-timers@npm:^29.5.0, @jest/fake-timers@npm:^29.7.0": version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" @@ -2955,6 +3169,25 @@ __metadata: languageName: node linkType: hard +"@jest/get-type@npm:30.1.0": + version: 30.1.0 + resolution: "@jest/get-type@npm:30.1.0" + checksum: 10c0/3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac + languageName: node + linkType: hard + +"@jest/globals@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/globals@npm:30.3.0" + dependencies: + "@jest/environment": "npm:30.3.0" + "@jest/expect": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + jest-mock: "npm:30.3.0" + checksum: 10c0/013554dcbf75867e715801e98a5c6eefbea67cb388efd019be9e0d83979d7354874c4b33bbabc95de698215f5b891e921c26a284841504f9825fd789432b1cd0 + languageName: node + linkType: hard + "@jest/globals@npm:^29.7.0": version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" @@ -2967,6 +3200,52 @@ __metadata: languageName: node linkType: hard +"@jest/pattern@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/pattern@npm:30.0.1" + dependencies: + "@types/node": "npm:*" + jest-regex-util: "npm:30.0.1" + checksum: 10c0/32c5a7bfb6c591f004dac0ed36d645002ed168971e4c89bd915d1577031672870032594767557b855c5bc330aa1e39a2f54bf150d2ee88a7a0886e9cb65318bc + languageName: node + linkType: hard + +"@jest/reporters@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/reporters@npm:30.3.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:30.3.0" + "@jest/test-result": "npm:30.3.0" + "@jest/transform": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + collect-v8-coverage: "npm:^1.0.2" + exit-x: "npm:^0.2.2" + glob: "npm:^10.5.0" + graceful-fs: "npm:^4.2.11" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^5.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:30.3.0" + jest-util: "npm:30.3.0" + jest-worker: "npm:30.3.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.2" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/e1b6fb13df94435d4b8e6f4d4bd1c27dfc572ca7393b0a95d14c98013abe3c962aa28e2c56864f3ddd0894834d21c9a67485d11e6c31532aaaeea66ca6a2a026 + languageName: node + linkType: hard + "@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" @@ -3004,6 +3283,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/schemas@npm:30.0.5" + dependencies: + "@sinclair/typebox": "npm:^0.34.0" + checksum: 10c0/449dcd7ec5c6505e9ac3169d1143937e67044ae3e66a729ce4baf31812dfd30535f2b3b2934393c97cfdf5984ff581120e6b38f62b8560c8b5b7cc07f4175f65 + languageName: node + linkType: hard + "@jest/schemas@npm:^28.1.3": version: 28.1.3 resolution: "@jest/schemas@npm:28.1.3" @@ -3022,6 +3310,29 @@ __metadata: languageName: node linkType: hard +"@jest/snapshot-utils@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/snapshot-utils@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + natural-compare: "npm:^1.4.0" + checksum: 10c0/ba4fea05a418b257d128d8f9eb7672a9004952563a45ad577bed80e5b2ea2ec6e6d3a24535781cc6530d9904d8fda7b27d15952d079ccdbe88f87a5e71112df0 + languageName: node + linkType: hard + +"@jest/source-map@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/source-map@npm:30.0.1" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + callsites: "npm:^3.1.0" + graceful-fs: "npm:^4.2.11" + checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 + languageName: node + linkType: hard + "@jest/source-map@npm:^29.6.3": version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" @@ -3033,6 +3344,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-result@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/test-result@npm:30.3.0" + dependencies: + "@jest/console": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + collect-v8-coverage: "npm:^1.0.2" + checksum: 10c0/67bcd405d0a1ac85b55afabf26e0ee0f184f9cfe0e659a44e0e4a4456c1c7fed9d2288f0116b017eaddfa49ded8c44426b8694c44f9a8a2af35be9202b8a9165 + languageName: node + linkType: hard + "@jest/test-result@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" @@ -3045,6 +3368,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-sequencer@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/test-sequencer@npm:30.3.0" + dependencies: + "@jest/test-result": "npm:30.3.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.3.0" + slash: "npm:^3.0.0" + checksum: 10c0/698be35e7145e79ea9d66071d4ec255f6cef4b5972b5142d299f3edbcbc0428cadf8ddecc6d21e938c98ed72b73b15a6d5f81e7b8b370aaa130d2f6b26fd017c + languageName: node + linkType: hard + "@jest/test-sequencer@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-sequencer@npm:29.7.0" @@ -3057,6 +3392,28 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:30.3.0": + version: 30.3.0 + resolution: "@jest/transform@npm:30.3.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/types": "npm:30.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.25" + babel-plugin-istanbul: "npm:^7.0.1" + chalk: "npm:^4.1.2" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.3.0" + jest-regex-util: "npm:30.0.1" + jest-util: "npm:30.3.0" + pirates: "npm:^4.0.7" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + checksum: 10c0/5ad0b5361910680b5160e3dc347c0beb75b4edc35a165ef4fc55837d01365179c276dd6f9cc80f7db94048c641b0c188757e1c98c6d4e9b55577956efbc00574 + languageName: node + linkType: hard + "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -3080,6 +3437,21 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:30.3.0, @jest/types@npm:^30.0.1": + version: 30.3.0 + resolution: "@jest/types@npm:30.3.0" + dependencies: + "@jest/pattern": "npm:30.0.1" + "@jest/schemas": "npm:30.0.5" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + "@types/istanbul-reports": "npm:^3.0.4" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.33" + chalk: "npm:^4.1.2" + checksum: 10c0/c3e3f4de0b77a7ced345f47d3687b1094c1b6c1521529a7ca66a76f9a80194f79179a1dbc32d6761a5b67914a8f78be1e65d1408107efcb1f252c4a63b5ddd92 + languageName: node + linkType: hard + "@jest/types@npm:^27.4.2, @jest/types@npm:^27.5.1": version: 27.5.1 resolution: "@jest/types@npm:27.5.1" @@ -3118,6 +3490,26 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.12": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -3149,7 +3541,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.5": +"@jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 @@ -3176,6 +3568,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 + languageName: node + linkType: hard + "@lerna/add@npm:3.18.0": version: 3.18.0 resolution: "@lerna/add@npm:3.18.0" @@ -4131,6 +4533,17 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.12 + resolution: "@napi-rs/wasm-runtime@npm:0.2.12" + dependencies: + "@emnapi/core": "npm:^1.4.3" + "@emnapi/runtime": "npm:^1.4.3" + "@tybys/wasm-util": "npm:^0.10.0" + checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d + languageName: node + linkType: hard + "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": version: 2.1.8-no-fsevents.3 resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" @@ -5519,7 +5932,7 @@ __metadata: "@parcel/plugin": "npm:^2.16.3" "@parcel/source-map": "npm:^2.1.1" react-docgen-typescript: "npm:^2.2.2" - storybook: "npm:^9.0.18" + storybook: "npm:^10.0.0" typescript: "npm:^5.5.0" languageName: unknown linkType: soft @@ -5854,6 +6267,13 @@ __metadata: languageName: node linkType: hard +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 + languageName: node + linkType: hard + "@polka/url@npm:^1.0.0-next.24": version: 1.0.0-next.29 resolution: "@polka/url@npm:1.0.0-next.29" @@ -8786,6 +9206,15 @@ __metadata: languageName: node linkType: hard +"@sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + "@sinonjs/fake-timers@npm:^10.0.2": version: 10.0.2 resolution: "@sinonjs/fake-timers@npm:10.0.2" @@ -8795,6 +9224,15 @@ __metadata: languageName: node linkType: hard +"@sinonjs/fake-timers@npm:^15.0.0": + version: 15.3.2 + resolution: "@sinonjs/fake-timers@npm:15.3.2" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10c0/fea39af47e70acf7f6b431b857dc5b50886e1a19d48189bc7f9cf90806a9fdfd4931c04343558724772d429c47fb53df640fc8c8d6ddf6ad66164bd7cbd3220a + languageName: node + linkType: hard + "@spectrum-css/component-builder@workspace:^, @spectrum-css/component-builder@workspace:packages/@adobe/spectrum-css-builder-temp": version: 0.0.0-use.local resolution: "@spectrum-css/component-builder@workspace:packages/@adobe/spectrum-css-builder-temp" @@ -8907,75 +9345,79 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@npm:^9.0.18": - version: 9.1.17 - resolution: "@storybook/addon-a11y@npm:9.1.17" +"@storybook/addon-a11y@npm:^10.0.0": + version: 10.3.5 + resolution: "@storybook/addon-a11y@npm:10.3.5" dependencies: "@storybook/global": "npm:^5.0.0" axe-core: "npm:^4.2.0" peerDependencies: - storybook: ^9.1.17 - checksum: 10c0/b5503785ca6e1f12d9bc0dd1909b81ce689f97f9395ab2a79572cfa9aad15cd20a706fdda53b2adeff9c437d966c191dea1ca28d3b0b4be28e5d3325aeeabe8b + storybook: ^10.3.5 + checksum: 10c0/e12228948d85cea75014f8d81c94cabf9ab73614d4d3ecae3064013d4dbc7d25f1e3a10306f613db0c508a098a376b1dc2113aa57afb3fd196b22ae613776943 languageName: node linkType: hard -"@storybook/addon-docs@npm:^9.0.18": - version: 9.1.17 - resolution: "@storybook/addon-docs@npm:9.1.17" +"@storybook/addon-docs@npm:^10.0.0": + version: 10.3.5 + resolution: "@storybook/addon-docs@npm:10.3.5" dependencies: "@mdx-js/react": "npm:^3.0.0" - "@storybook/csf-plugin": "npm:9.1.17" - "@storybook/icons": "npm:^1.4.0" - "@storybook/react-dom-shim": "npm:9.1.17" + "@storybook/csf-plugin": "npm:10.3.5" + "@storybook/icons": "npm:^2.0.1" + "@storybook/react-dom-shim": "npm:10.3.5" react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^9.1.17 - checksum: 10c0/1d0cbe44b697c35529b2d6e89c9557dc797051d791a89539b90eccc4f10038d40fcca8339683ea15f9430c6121a9d461899f62406cff2ac5e6a623073de6aae3 + storybook: ^10.3.5 + checksum: 10c0/6f2d7aee8c565df7e16e9d69da1366fc02e9a399a2ad9c5d5b04790955f7b55a1418814cb83eaa7d7210c6496ff2541d2bd05225b36ac266d82b4d9f3caf40c7 languageName: node linkType: hard -"@storybook/addon-jest@npm:^9.0.18": - version: 9.1.12 - resolution: "@storybook/addon-jest@npm:9.1.12" +"@storybook/addon-jest@npm:10.0.0-beta.12": + version: 10.0.0-beta.12 + resolution: "@storybook/addon-jest@npm:10.0.0-beta.12" dependencies: tiny-invariant: "npm:^1.3.1" upath: "npm:^2.0.1" peerDependencies: - storybook: ^9.1.12 - checksum: 10c0/904699d8200e112a2a6d25dd93ce9f0d7f1bde569921a6fcac811e0e1e530fc7a4b47c0715199547d19271a098d44c9d56afceda10b3d7172bce4bf0f0d73ed4 + storybook: ^10.0.0-beta.12 + checksum: 10c0/d899834fef240743a72ca263b0432d9423ad78bfd7e79005e9b6cda3e1e6eee03f2ce54a1b36141a91126e5f76a4099505e5e5bc605c794584408f407d82fcce languageName: node linkType: hard -"@storybook/addon-themes@npm:^9.0.18": - version: 9.1.17 - resolution: "@storybook/addon-themes@npm:9.1.17" +"@storybook/addon-themes@npm:^10.0.0": + version: 10.3.5 + resolution: "@storybook/addon-themes@npm:10.3.5" dependencies: ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^9.1.17 - checksum: 10c0/d33e5d9c55befab2fc8fc271ad5a50c215a366ffd8661d084a1e233c773b49073c067b400a6f279c36ce9fbc45e026e0967f5be39162cfd0efd4a3c89fc568d6 + storybook: ^10.3.5 + checksum: 10c0/fef56bb9c6d45fea53f4a5f0d209a7ba77a16f2b6665f38526e20bc50b755fbf3976f87848c85955e86828ec1a02762ac9b82c275f7f69b14b22b8fc8913eb60 languageName: node linkType: hard -"@storybook/csf-plugin@npm:9.1.17": - version: 9.1.17 - resolution: "@storybook/csf-plugin@npm:9.1.17" +"@storybook/csf-plugin@npm:10.3.5": + version: 10.3.5 + resolution: "@storybook/csf-plugin@npm:10.3.5" dependencies: - unplugin: "npm:^1.3.1" + unplugin: "npm:^2.3.5" peerDependencies: - storybook: ^9.1.17 - checksum: 10c0/bbbaf788e954930c5bb48731a29e605ceae3e8c0463a330e6ac64a9b7ec7b06e6d2d11faec0c9767e8cf4447936f7fc61835dcb0ad5a5a4908a79eabb0eaf5f3 - languageName: node - linkType: hard - -"@storybook/csf@npm:^0.1.11": - version: 0.1.13 - resolution: "@storybook/csf@npm:0.1.13" - dependencies: - type-fest: "npm:^2.19.0" - checksum: 10c0/7c57b531ac95ca45239f498d419483d675e58cd8d549e0bac623519cc1ef4f3c9c6b75ec3873aa51cc2872728012db5dd5e1f2c2d8085014241eb4b896480996 + esbuild: "*" + rollup: "*" + storybook: ^10.3.5 + vite: "*" + webpack: "*" + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + checksum: 10c0/db9ee2b24f4affbed28ec162daa0223186b025e84374b93abe4b5cd0e38195b1bfa1e4553f2d9e99cac718a1f253035227c9153c04677fd3ad0022a39cfd6f5c languageName: node linkType: hard @@ -8995,13 +9437,13 @@ __metadata: languageName: node linkType: hard -"@storybook/icons@npm:^1.4.0": - version: 1.6.0 - resolution: "@storybook/icons@npm:1.6.0" +"@storybook/icons@npm:^2.0.1": + version: 2.0.1 + resolution: "@storybook/icons@npm:2.0.1" 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 - checksum: 10c0/bbec9201a78a730195f9cf377b15856dc414a54d04e30d16c379d062425cc617bfd0d6586ba1716012cfbdab461f0c9693a6a52920f9bd09c7b4291fb116f59c + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/df2bbf1a5b50f12ab1bf78cae6de4dbf7c49df0e3a5f845553b51b20adbe8386a09fd172ea60342379f9284bb528cba2d0e2659cae6eb8d015cf92c8b32f1222 languageName: node linkType: hard @@ -9017,63 +9459,67 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:9.1.17": - version: 9.1.17 - resolution: "@storybook/react-dom-shim@npm:9.1.17" +"@storybook/react-dom-shim@npm:10.3.5": + version: 10.3.5 + resolution: "@storybook/react-dom-shim@npm:10.3.5" 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: ^9.1.17 - checksum: 10c0/7484ea12ac772b744215ba0b70c041299e75e2732c1f7f74a9027e1378cd064e0b29309263507d7fb14570484dafee9bb5d3b20127ff18f78b4dee54e39ce121 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.3.5 + checksum: 10c0/53383a37a4507dbdb088bebb402f259126d678d63d4b83186b794192e8a8d6528852b223d8bd7f98645293e5f99cf5feb11bfa14e441a47de92d42d3aa04ecdb languageName: node linkType: hard -"@storybook/react@npm:^9.0.18": - version: 9.1.17 - resolution: "@storybook/react@npm:9.1.17" +"@storybook/react@npm:^10.0.0": + version: 10.3.5 + resolution: "@storybook/react@npm:10.3.5" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/react-dom-shim": "npm:9.1.17" + "@storybook/react-dom-shim": "npm:10.3.5" + react-docgen: "npm:^8.0.2" + react-docgen-typescript: "npm:^2.2.2" 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: ^9.1.17 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.3.5 typescript: ">= 4.9.x" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/52139a2a079dae4aa904e00cf06f6e6023b7c7f6492e011d6c30866f9ad25b000d06a05a3505779b32ae57d9627bf5c6b522065d99dab499c5d582672c80fbff + checksum: 10c0/708460a9f8055dfe8c86f383222f6e17484138537a317e3dcc457b578686302a0bfb566f3c921cba1bfcbd2378405046a360808b2d78601875cf6066d5dd4930 languageName: node linkType: hard -"@storybook/test-runner@npm:^0.22.0": - version: 0.22.1 - resolution: "@storybook/test-runner@npm:0.22.1" +"@storybook/test-runner@npm:^0.24.0": + version: 0.24.3 + resolution: "@storybook/test-runner@npm:0.24.3" dependencies: "@babel/core": "npm:^7.22.5" "@babel/generator": "npm:^7.22.5" "@babel/template": "npm:^7.22.5" "@babel/types": "npm:^7.22.5" - "@jest/types": "npm:^29.6.3" - "@storybook/csf": "npm:^0.1.11" + "@jest/types": "npm:^30.0.1" "@swc/core": "npm:^1.5.22" - "@swc/jest": "npm:^0.2.23" + "@swc/jest": "npm:^0.2.38" expect-playwright: "npm:^0.8.0" - jest: "npm:^29.6.4" - jest-circus: "npm:^29.6.4" - jest-environment-node: "npm:^29.6.4" + jest: "npm:^30.0.4" + jest-circus: "npm:^30.0.4" + jest-environment-node: "npm:^30.0.4" jest-junit: "npm:^16.0.0" - jest-playwright-preset: "npm:^4.0.0" - jest-runner: "npm:^29.6.4" + jest-process-manager: "npm:^0.4.0" + jest-runner: "npm:^30.0.4" jest-serializer-html: "npm:^7.1.0" - jest-watch-typeahead: "npm:^2.0.0" + jest-watch-typeahead: "npm:^3.0.1" nyc: "npm:^15.1.0" playwright: "npm:^1.14.0" + playwright-core: "npm:>=1.2.0" + rimraf: "npm:^3.0.2" + uuid: "npm:^8.3.2" peerDependencies: - storybook: ^0.0.0-0 || ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 || ^9.0.0-0 + storybook: ^0.0.0-0 || ^10.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 bin: test-storybook: dist/test-storybook.js - checksum: 10c0/2f9d3ba4cab137893b77ef1626ed9f328942c38c7dd8d6aa71eaccbfef5eb1afe350e080e6c5c88bc46b795a26749cd2186c64ad9a63b608866da9d3dad1f855 + checksum: 10c0/581cc520e1baa4ea86103a2ca2fba00330906a817733927059d08655cf2d85af3c5cca10ed7e159b7c37f19d7575da38d499a955c46d40654b9fc296969871b0 languageName: node linkType: hard @@ -9362,7 +9808,7 @@ __metadata: languageName: node linkType: hard -"@swc/jest@npm:^0.2.23, @swc/jest@npm:^0.2.36": +"@swc/jest@npm:^0.2.36": version: 0.2.37 resolution: "@swc/jest@npm:0.2.37" dependencies: @@ -9375,6 +9821,19 @@ __metadata: languageName: node linkType: hard +"@swc/jest@npm:^0.2.38": + version: 0.2.39 + resolution: "@swc/jest@npm:0.2.39" + dependencies: + "@jest/create-cache-key-function": "npm:^30.0.0" + "@swc/counter": "npm:^0.1.3" + jsonc-parser: "npm:^3.2.0" + peerDependencies: + "@swc/core": "*" + checksum: 10c0/2df5f215bb7a3f31e1db606e3ac01c4e67900e8db004b38dbfaa09f87bcc2b054070211086e095eddcd174ee561b696fcf679ea38263fa6daf69fee37dacbdc9 + languageName: node + linkType: hard + "@swc/types@npm:^0.1.23": version: 0.1.23 resolution: "@swc/types@npm:0.1.23" @@ -9592,7 +10051,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.6.3": +"@testing-library/jest-dom@npm:^6.9.1": version: 6.9.1 resolution: "@testing-library/jest-dom@npm:6.9.1" dependencies: @@ -9697,6 +10156,15 @@ __metadata: languageName: node linkType: hard +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 + languageName: node + linkType: hard + "@types/acorn@npm:^4.0.0": version: 4.0.6 resolution: "@types/acorn@npm:4.0.6" @@ -9754,6 +10222,15 @@ __metadata: languageName: node linkType: hard +"@types/babel__traverse@npm:^7.20.7": + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" + dependencies: + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 + languageName: node + linkType: hard + "@types/chai@npm:^5.2.2": version: 5.2.3 resolution: "@types/chai@npm:5.2.3" @@ -9787,6 +10264,13 @@ __metadata: languageName: node linkType: hard +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: 10c0/cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c + languageName: node + linkType: hard + "@types/estree-jsx@npm:^0.0.1": version: 0.0.1 resolution: "@types/estree-jsx@npm:0.0.1" @@ -9882,6 +10366,13 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-lib-coverage@npm:^2.0.6": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + "@types/istanbul-lib-report@npm:*": version: 1.1.1 resolution: "@types/istanbul-lib-report@npm:1.1.1" @@ -9900,6 +10391,15 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-reports@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + "@types/jest@npm:*, @types/jest@npm:28.1.3": version: 28.1.3 resolution: "@types/jest@npm:28.1.3" @@ -10055,6 +10555,13 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:^1.20.2": + version: 1.20.6 + resolution: "@types/resolve@npm:1.20.6" + checksum: 10c0/a9b0549d816ff2c353077365d865a33655a141d066d0f5a3ba6fd4b28bc2f4188a510079f7c1f715b3e7af505a27374adce2a5140a3ece2a059aab3d6e1a4244 + languageName: node + linkType: hard + "@types/responselike@npm:^1.0.0": version: 1.0.3 resolution: "@types/responselike@npm:1.0.3" @@ -10071,6 +10578,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.3": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + "@types/testing-library__jest-dom@npm:^5.9.1": version: 5.9.2 resolution: "@types/testing-library__jest-dom@npm:5.9.2" @@ -10133,6 +10647,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^17.0.33": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 + languageName: node + linkType: hard + "@types/yargs@npm:^17.0.8": version: 17.0.24 resolution: "@types/yargs@npm:17.0.24" @@ -10420,6 +10943,148 @@ __metadata: languageName: node linkType: hard +"@ungap/structured-clone@npm:^1.3.0": + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.11" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@verdaccio/auth@npm:8.0.0-next-8.7": version: 8.0.0-next-8.7 resolution: "@verdaccio/auth@npm:8.0.0-next-8.7" @@ -10758,25 +11423,6 @@ __metadata: languageName: node linkType: hard -"@vitest/mocker@npm:3.2.4": - version: 3.2.4 - resolution: "@vitest/mocker@npm:3.2.4" - dependencies: - "@vitest/spy": "npm:3.2.4" - estree-walker: "npm:^3.0.3" - magic-string: "npm:^0.30.17" - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - checksum: 10c0/f7a4aea19bbbf8f15905847ee9143b6298b2c110f8b64789224cb0ffdc2e96f9802876aa2ca83f1ec1b6e1ff45e822abb34f0054c24d57b29ab18add06536ccd - languageName: node - linkType: hard - "@vitest/mocker@npm:4.0.18": version: 4.0.18 resolution: "@vitest/mocker@npm:4.0.18" @@ -10872,15 +11518,22 @@ __metadata: languageName: node linkType: hard -"@vueless/storybook-dark-mode@npm:^9.0.6": - version: 9.0.10 - resolution: "@vueless/storybook-dark-mode@npm:9.0.10" +"@vueless/storybook-dark-mode@npm:^10.0.0": + version: 10.0.7 + resolution: "@vueless/storybook-dark-mode@npm:10.0.7" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/icons": "npm:^1.4.0" - fast-deep-equal: "npm:^3.1.3" - memoizerific: "npm:^1.11.3" - checksum: 10c0/ed40d00989d4a4c572d7d5bade7e25626269bbd1cef6c7bdd3121b1aa8080401b193f8aaf833647a1abae0b9aa1053f1a958c7b85c586768f6283cad26bb6a0e + lodash-es: "npm:^4.17.23" + peerDependencies: + storybook: ^10.0.0 + checksum: 10c0/425240586b184c25a6beadb0bac3d98c6a43d3ef303eb57bd3b57373d6dcf5c20a1a0cc19287761379c89f599ffb539c77a3270ef53c14d69267ab5990c20962 + languageName: node + linkType: hard + +"@webcontainer/env@npm:^1.1.1": + version: 1.1.1 + resolution: "@webcontainer/env@npm:1.1.1" + checksum: 10c0/bc64114ffa7ee92f4985cc2bdd5e27f6f31d892b9aa5cde68eaf93df02d13ee6edf13faeebdd701464183b6f8f9c47c14975958cdd6fc20e7356ad32f6ee39e7 languageName: node linkType: hard @@ -11019,6 +11672,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.15.0": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" + bin: + acorn: bin/acorn + checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e + languageName: node + linkType: hard + "agent-base@npm:4, agent-base@npm:^4.3.0": version: 4.3.0 resolution: "agent-base@npm:4.3.0" @@ -11139,12 +11801,21 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^6.0.0": - version: 6.2.0 - resolution: "ansi-escapes@npm:6.2.0" +"ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" dependencies: - type-fest: "npm:^3.0.0" - checksum: 10c0/3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-escapes@npm:^7.0.0": + version: 7.3.0 + resolution: "ansi-escapes@npm:7.3.0" + dependencies: + environment: "npm:^1.0.0" + checksum: 10c0/068961d99f0ef28b661a4a9f84a5d645df93ccf3b9b93816cc7d46bbe1913321d4cdf156bb842a4e1e4583b7375c631fa963efb43001c4eb7ff9ab8f78fc0679 languageName: node linkType: hard @@ -11183,6 +11854,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^6.2.2": + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f + languageName: node + linkType: hard + "ansi-styles@npm:^2.2.1": version: 2.2.1 resolution: "ansi-styles@npm:2.2.1" @@ -11209,7 +11887,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": +"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df @@ -11864,8 +12542,25 @@ __metadata: version: 7.0.0-bridge.0 resolution: "babel-core@npm:7.0.0-bridge.0" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 + "@babel/core": ^7.0.0-0 + checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 + languageName: node + linkType: hard + +"babel-jest@npm:30.3.0": + version: 30.3.0 + resolution: "babel-jest@npm:30.3.0" + dependencies: + "@jest/transform": "npm:30.3.0" + "@types/babel__core": "npm:^7.20.5" + babel-plugin-istanbul: "npm:^7.0.1" + babel-preset-jest: "npm:30.3.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-0 + checksum: 10c0/5e41e124a404ddb78aa37a20336d7c883feab5ad9c4f4c72ae26db71be2fcca345874b9a7fef97d9c5f64f144a264b247ebde8acfe493578320f314ca581bac3 languageName: node linkType: hard @@ -11908,6 +12603,28 @@ __metadata: languageName: node linkType: hard +"babel-plugin-istanbul@npm:^7.0.1": + version: 7.0.1 + resolution: "babel-plugin-istanbul@npm:7.0.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-instrument: "npm:^6.0.2" + test-exclude: "npm:^6.0.0" + checksum: 10c0/92975e3df12503b168695463b451468da0c20e117807221652eb8e33a26c160f3b9d4c5c4e65495657420e871c6a54e5e31f539e2e1da37ef2261d7ddd4b1dfd + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:30.3.0": + version: 30.3.0 + resolution: "babel-plugin-jest-hoist@npm:30.3.0" + dependencies: + "@types/babel__core": "npm:^7.20.5" + checksum: 10c0/5e15900a6487356131e084970f4a9ebe24b702d74930f786e897d4fab90b0987054f66661a3570ea692f429dcd158c2214c97ecf08f7356cbc60029d7b277c74 + languageName: node + linkType: hard + "babel-plugin-jest-hoist@npm:^29.6.3": version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" @@ -12007,6 +12724,43 @@ __metadata: languageName: node linkType: hard +"babel-preset-current-node-syntax@npm:^1.2.0": + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 + languageName: node + linkType: hard + +"babel-preset-jest@npm:30.3.0": + version: 30.3.0 + resolution: "babel-preset-jest@npm:30.3.0" + dependencies: + babel-plugin-jest-hoist: "npm:30.3.0" + babel-preset-current-node-syntax: "npm:^1.2.0" + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-beta.1 + checksum: 10c0/a6839a1527d254bf04e82c0cf61a6a2aa283123a74f0a552e6fce462cb990abebab75a13ec3e9c58b09a865d4d2dfbac710c2d3975ae3ce6f2707cb314915c66 + languageName: node + linkType: hard + "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -12182,15 +12936,6 @@ __metadata: languageName: node linkType: hard -"better-opn@npm:^3.0.2": - version: 3.0.2 - resolution: "better-opn@npm:3.0.2" - dependencies: - open: "npm:^8.0.4" - checksum: 10c0/911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 - languageName: node - linkType: hard - "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -12361,6 +13106,15 @@ __metadata: languageName: node linkType: hard +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + "bser@npm:^2.0.0": version: 2.1.0 resolution: "bser@npm:2.1.0" @@ -12408,6 +13162,15 @@ __metadata: languageName: node linkType: hard +"bundle-name@npm:^4.1.0": + version: 4.1.0 + resolution: "bundle-name@npm:4.1.0" + dependencies: + run-applescript: "npm:^7.0.0" + checksum: 10c0/8e575981e79c2bcf14d8b1c027a3775c095d362d1382312f444a7c861b0e21513c0bd8db5bd2b16e50ba0709fa622d4eab6b53192d222120305e68359daece29 + languageName: node + linkType: hard + "byline@npm:^5.0.0": version: 5.0.0 resolution: "byline@npm:5.0.0" @@ -12578,7 +13341,7 @@ __metadata: languageName: node linkType: hard -"callsites@npm:^3.0.0": +"callsites@npm:^3.0.0, callsites@npm:^3.1.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 @@ -12627,7 +13390,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": +"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 @@ -12747,13 +13510,6 @@ __metadata: languageName: node linkType: hard -"char-regex@npm:^2.0.0": - version: 2.0.1 - resolution: "char-regex@npm:2.0.1" - checksum: 10c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 - languageName: node - linkType: hard - "character-entities-html4@npm:^2.0.0": version: 2.1.0 resolution: "character-entities-html4@npm:2.1.0" @@ -12883,6 +13639,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^4.2.0": + version: 4.4.0 + resolution: "ci-info@npm:4.4.0" + checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a + languageName: node + linkType: hard + "cjs-module-lexer@npm:^1.0.0": version: 1.2.2 resolution: "cjs-module-lexer@npm:1.2.2" @@ -12890,6 +13653,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^2.1.0": + version: 2.2.0 + resolution: "cjs-module-lexer@npm:2.2.0" + checksum: 10c0/aec4ca58f87145fac221386790ecaae8b012f2e2359a45acb61d8c75ea4fa84f6ea869f17abc1a7e91a808eff0fed581209632f03540de16f72f0a28f5fd35ac + languageName: node + linkType: hard + "class-utils@npm:^0.3.5": version: 0.3.6 resolution: "class-utils@npm:0.3.6" @@ -13086,6 +13856,13 @@ __metadata: languageName: node linkType: hard +"collect-v8-coverage@npm:^1.0.2": + version: 1.0.3 + resolution: "collect-v8-coverage@npm:1.0.3" + checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc + languageName: node + linkType: hard + "collection-visit@npm:^1.0.0": version: 1.0.0 resolution: "collection-visit@npm:1.0.0" @@ -14203,6 +14980,18 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^1.6.0": + version: 1.7.2 + resolution: "dedent@npm:1.7.2" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/acaff07cac355b93f17b1b17ebbb84d3cc55af6ab4b7814c3f505e061903e168bc6bf9ddce331552d64dee1525f0b4c549c9ade46aebfac6f69caaed74e90751 + languageName: node + linkType: hard + "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -14257,6 +15046,23 @@ __metadata: languageName: node linkType: hard +"default-browser-id@npm:^5.0.0": + version: 5.0.1 + resolution: "default-browser-id@npm:5.0.1" + checksum: 10c0/5288b3094c740ef3a86df9b999b04ff5ba4dee6b64e7b355c0fff5217752c8c86908d67f32f6cba9bb4f9b7b61a1b640c0a4f9e34c57e0ff3493559a625245ee + languageName: node + linkType: hard + +"default-browser@npm:^5.2.1": + version: 5.5.0 + resolution: "default-browser@npm:5.5.0" + dependencies: + bundle-name: "npm:^4.1.0" + default-browser-id: "npm:^5.0.0" + checksum: 10c0/576593b617b17a7223014b4571bfe1c06a2581a4eb8b130985d90d253afa3f40999caec70eb0e5776e80d4af6a41cce91018cd3f86e57ad578bf59e46fb19abe + languageName: node + linkType: hard + "default-require-extensions@npm:^3.0.0": version: 3.0.1 resolution: "default-require-extensions@npm:3.0.1" @@ -14286,10 +15092,10 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 10c0/5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 languageName: node linkType: hard @@ -14411,7 +15217,7 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": +"detect-newline@npm:^3.0.0, detect-newline@npm:^3.1.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d @@ -14892,6 +15698,13 @@ __metadata: languageName: node linkType: hard +"environment@npm:^1.0.0": + version: 1.1.0 + resolution: "environment@npm:1.1.0" + checksum: 10c0/fb26434b0b581ab397039e51ff3c92b34924a98b2039dcb47e41b7bca577b9dbf134a8eadb364415c74464b682e2d3afe1a4c0eb9873dc44ea814c5d3103331d + languageName: node + linkType: hard + "err-code@npm:^1.0.0": version: 1.1.2 resolution: "err-code@npm:1.1.2" @@ -15173,46 +15986,36 @@ __metadata: languageName: node linkType: hard -"esbuild-register@npm:^3.5.0": - version: 3.5.0 - resolution: "esbuild-register@npm:3.5.0" - dependencies: - debug: "npm:^4.3.4" - peerDependencies: - esbuild: ">=0.12 <1" - checksum: 10c0/9ccd0573cb66018e4cce3c1416eed0f5f3794c7026ce469a94e2f8761335abed8e363fc8e8bb036ab9ad7e579bb4296b8568a04ae5626596c123576b0d9c9bde - languageName: node - linkType: hard - -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0": - version: 0.25.5 - resolution: "esbuild@npm:0.25.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.5" - "@esbuild/android-arm": "npm:0.25.5" - "@esbuild/android-arm64": "npm:0.25.5" - "@esbuild/android-x64": "npm:0.25.5" - "@esbuild/darwin-arm64": "npm:0.25.5" - "@esbuild/darwin-x64": "npm:0.25.5" - "@esbuild/freebsd-arm64": "npm:0.25.5" - "@esbuild/freebsd-x64": "npm:0.25.5" - "@esbuild/linux-arm": "npm:0.25.5" - "@esbuild/linux-arm64": "npm:0.25.5" - "@esbuild/linux-ia32": "npm:0.25.5" - "@esbuild/linux-loong64": "npm:0.25.5" - "@esbuild/linux-mips64el": "npm:0.25.5" - "@esbuild/linux-ppc64": "npm:0.25.5" - "@esbuild/linux-riscv64": "npm:0.25.5" - "@esbuild/linux-s390x": "npm:0.25.5" - "@esbuild/linux-x64": "npm:0.25.5" - "@esbuild/netbsd-arm64": "npm:0.25.5" - "@esbuild/netbsd-x64": "npm:0.25.5" - "@esbuild/openbsd-arm64": "npm:0.25.5" - "@esbuild/openbsd-x64": "npm:0.25.5" - "@esbuild/sunos-x64": "npm:0.25.5" - "@esbuild/win32-arm64": "npm:0.25.5" - "@esbuild/win32-ia32": "npm:0.25.5" - "@esbuild/win32-x64": "npm:0.25.5" +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0": + version: 0.27.7 + resolution: "esbuild@npm:0.27.7" + dependencies: + "@esbuild/aix-ppc64": "npm:0.27.7" + "@esbuild/android-arm": "npm:0.27.7" + "@esbuild/android-arm64": "npm:0.27.7" + "@esbuild/android-x64": "npm:0.27.7" + "@esbuild/darwin-arm64": "npm:0.27.7" + "@esbuild/darwin-x64": "npm:0.27.7" + "@esbuild/freebsd-arm64": "npm:0.27.7" + "@esbuild/freebsd-x64": "npm:0.27.7" + "@esbuild/linux-arm": "npm:0.27.7" + "@esbuild/linux-arm64": "npm:0.27.7" + "@esbuild/linux-ia32": "npm:0.27.7" + "@esbuild/linux-loong64": "npm:0.27.7" + "@esbuild/linux-mips64el": "npm:0.27.7" + "@esbuild/linux-ppc64": "npm:0.27.7" + "@esbuild/linux-riscv64": "npm:0.27.7" + "@esbuild/linux-s390x": "npm:0.27.7" + "@esbuild/linux-x64": "npm:0.27.7" + "@esbuild/netbsd-arm64": "npm:0.27.7" + "@esbuild/netbsd-x64": "npm:0.27.7" + "@esbuild/openbsd-arm64": "npm:0.27.7" + "@esbuild/openbsd-x64": "npm:0.27.7" + "@esbuild/openharmony-arm64": "npm:0.27.7" + "@esbuild/sunos-x64": "npm:0.27.7" + "@esbuild/win32-arm64": "npm:0.27.7" + "@esbuild/win32-ia32": "npm:0.27.7" + "@esbuild/win32-x64": "npm:0.27.7" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -15256,6 +16059,8 @@ __metadata: optional: true "@esbuild/openbsd-x64": optional: true + "@esbuild/openharmony-arm64": + optional: true "@esbuild/sunos-x64": optional: true "@esbuild/win32-arm64": @@ -15266,7 +16071,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/aba8cbc11927fa77562722ed5e95541ce2853f67ad7bdc40382b558abc2e0ec57d92ffb820f082ba2047b4ef9f3bc3da068cdebe30dfd3850cfa3827a78d604e + checksum: 10c0/ccd51f0555708bc9ff4ec9dc3ac92d3daacd45ecaac949ca8645984c5c323bf8cefe98c2df307418685e0b4ce37f9a3bdbfe8e3651fe632a0059a436195a17d4 languageName: node linkType: hard @@ -15894,6 +16699,13 @@ __metadata: languageName: node linkType: hard +"exit-x@npm:^0.2.2": + version: 0.2.2 + resolution: "exit-x@npm:0.2.2" + checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -15948,6 +16760,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:30.3.0": + version: 30.3.0 + resolution: "expect@npm:30.3.0" + dependencies: + "@jest/expect-utils": "npm:30.3.0" + "@jest/get-type": "npm:30.1.0" + jest-matcher-utils: "npm:30.3.0" + jest-message-util: "npm:30.3.0" + jest-mock: "npm:30.3.0" + jest-util: "npm:30.3.0" + checksum: 10c0/a07a157a0c8b3f1e29bfe5ccbf03a3add2c69fe60d1af8a0980053bb6403d721d5f5e4616f1ea5833b747913f8c880c79ce4d98c23a71a2f0c27cf7273892576 + languageName: node + linkType: hard + "expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -16255,6 +17081,15 @@ __metadata: languageName: node linkType: hard +"fb-watchman@npm:^2.0.2": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + "fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" @@ -16820,7 +17655,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.3": +"fsevents@npm:^2.3.3, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -16839,7 +17674,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -17238,6 +18073,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.5.0": + version: 10.5.0 + resolution: "glob@npm:10.5.0" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 + languageName: node + linkType: hard + "glob@npm:^11.0.0, glob@npm:^11.0.3": version: 11.0.3 resolution: "glob@npm:11.0.3" @@ -18256,6 +19107,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.2.0": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -18742,12 +19605,12 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" bin: is-docker: cli.js - checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 languageName: node linkType: hard @@ -18824,7 +19687,7 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": +"is-generator-fn@npm:^2.0.0, is-generator-fn@npm:^2.1.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d @@ -18872,6 +19735,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + "is-installed-globally@npm:^0.1.0": version: 0.1.0 resolution: "is-installed-globally@npm:0.1.0" @@ -19287,12 +20161,12 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" +"is-wsl@npm:^3.1.0": + version: 3.1.1 + resolution: "is-wsl@npm:3.1.1" dependencies: - is-docker: "npm:^2.0.0" - checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + is-inside-container: "npm:^1.0.0" + checksum: 10c0/7e5023522bfb8f27de4de960b0d82c4a8146c0bddb186529a3616d78b5bbbfc19ef0c5fc60d0b3a3cc0bf95a415fbdedc18454310ea3049587c879b07ace5107 languageName: node linkType: hard @@ -19408,6 +20282,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.2": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + "istanbul-lib-processinfo@npm:^2.0.2": version: 2.0.3 resolution: "istanbul-lib-processinfo@npm:2.0.3" @@ -19444,6 +20331,17 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-source-maps@npm:^5.0.0": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + "istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3": version: 3.1.5 resolution: "istanbul-reports@npm:3.1.5" @@ -19489,6 +20387,17 @@ __metadata: languageName: node linkType: hard +"jest-changed-files@npm:30.3.0": + version: 30.3.0 + resolution: "jest-changed-files@npm:30.3.0" + dependencies: + execa: "npm:^5.1.1" + jest-util: "npm:30.3.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/5a2f9790f8ab7f5804ebbf0fcdd908c40286d602d76abbecc6bea72e7f3c60b77dc8a3d3f5acdddd11653b2574f471a5c126ceda0734bc6a7d607cf145843525 + languageName: node + linkType: hard + "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -19500,7 +20409,35 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.6.4, jest-circus@npm:^29.7.0": +"jest-circus@npm:30.3.0, jest-circus@npm:^30.0.4": + version: 30.3.0 + resolution: "jest-circus@npm:30.3.0" + dependencies: + "@jest/environment": "npm:30.3.0" + "@jest/expect": "npm:30.3.0" + "@jest/test-result": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + co: "npm:^4.6.0" + dedent: "npm:^1.6.0" + is-generator-fn: "npm:^2.1.0" + jest-each: "npm:30.3.0" + jest-matcher-utils: "npm:30.3.0" + jest-message-util: "npm:30.3.0" + jest-runtime: "npm:30.3.0" + jest-snapshot: "npm:30.3.0" + jest-util: "npm:30.3.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:30.3.0" + pure-rand: "npm:^7.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/a3a0eb973699b400fb6de4207a7fbc5b33f51523e5e94f954d0e6e60418ea95099883614495fce54d805a321cb65e883592048b73203a59b8f4e53d1bb975a07 + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": version: 29.7.0 resolution: "jest-circus@npm:29.7.0" dependencies: @@ -19528,6 +20465,31 @@ __metadata: languageName: node linkType: hard +"jest-cli@npm:30.3.0": + version: 30.3.0 + resolution: "jest-cli@npm:30.3.0" + dependencies: + "@jest/core": "npm:30.3.0" + "@jest/test-result": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + chalk: "npm:^4.1.2" + exit-x: "npm:^0.2.2" + import-local: "npm:^3.2.0" + jest-config: "npm:30.3.0" + jest-util: "npm:30.3.0" + jest-validate: "npm:30.3.0" + yargs: "npm:^17.7.2" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/764d77551e0fb6d666212e89d01be6f7bb1a2b3adb918bba7c5c37593a11b01cf2af645506c2b6438335cfc79bfcf41bfd4680958d8ca751851752a7c66269d3 + languageName: node + linkType: hard + "jest-cli@npm:^29.7.0": version: 29.7.0 resolution: "jest-cli@npm:29.7.0" @@ -19554,6 +20516,48 @@ __metadata: languageName: node linkType: hard +"jest-config@npm:30.3.0": + version: 30.3.0 + resolution: "jest-config@npm:30.3.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/get-type": "npm:30.1.0" + "@jest/pattern": "npm:30.0.1" + "@jest/test-sequencer": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + babel-jest: "npm:30.3.0" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + deepmerge: "npm:^4.3.1" + glob: "npm:^10.5.0" + graceful-fs: "npm:^4.2.11" + jest-circus: "npm:30.3.0" + jest-docblock: "npm:30.2.0" + jest-environment-node: "npm:30.3.0" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.3.0" + jest-runner: "npm:30.3.0" + jest-util: "npm:30.3.0" + jest-validate: "npm:30.3.0" + parse-json: "npm:^5.2.0" + pretty-format: "npm:30.3.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + esbuild-register: ">=3.4.0" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + checksum: 10c0/157607e5ac5e83924df97d992fbd40a1540af07c5a7be296fae49455b3729687847304f3b4a9112e7da17593b76cec3453cd55c1ecd4334f7318f2489d7d10a1 + languageName: node + linkType: hard + "jest-config@npm:^29.7.0": version: 29.7.0 resolution: "jest-config@npm:29.7.0" @@ -19592,6 +20596,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:30.3.0": + version: 30.3.0 + resolution: "jest-diff@npm:30.3.0" + dependencies: + "@jest/diff-sequences": "npm:30.3.0" + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + pretty-format: "npm:30.3.0" + checksum: 10c0/573a2a1a155b95fbde547d8ee33a5375179a8d03d4586025478dac16d695e4614aef075c3afa57e0f3a96cea8f638fa68a55c1e625f6e86b4f5b9e5850311ffb + languageName: node + linkType: hard + "jest-diff@npm:^28.1.3": version: 28.1.3 resolution: "jest-diff@npm:28.1.3" @@ -19616,6 +20632,15 @@ __metadata: languageName: node linkType: hard +"jest-docblock@npm:30.2.0": + version: 30.2.0 + resolution: "jest-docblock@npm:30.2.0" + dependencies: + detect-newline: "npm:^3.1.0" + checksum: 10c0/2578366604eef1b36d59ffe1fc52a710995571535d437f83d94ff94756a83f78e699c1ba004c38a34c01859d669fd6c64e865c23c5a7d5bf4837cfca4bef3dda + languageName: node + linkType: hard + "jest-docblock@npm:^29.7.0": version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" @@ -19625,6 +20650,19 @@ __metadata: languageName: node linkType: hard +"jest-each@npm:30.3.0": + version: 30.3.0 + resolution: "jest-each@npm:30.3.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + "@jest/types": "npm:30.3.0" + chalk: "npm:^4.1.2" + jest-util: "npm:30.3.0" + pretty-format: "npm:30.3.0" + checksum: 10c0/d23d2b43b3ea42beaf99648e2cf1c74b8a13c3e45c7c882979171471c225f7d666cb4a0d5f1ff9031b4504866fa3badc7266ffd885d3d8035420c559a31501e1 + languageName: node + linkType: hard + "jest-each@npm:^29.7.0": version: 29.7.0 resolution: "jest-each@npm:29.7.0" @@ -19659,7 +20697,22 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:^29.6.4, jest-environment-node@npm:^29.7.0": +"jest-environment-node@npm:30.3.0, jest-environment-node@npm:^30.0.4": + version: 30.3.0 + resolution: "jest-environment-node@npm:30.3.0" + dependencies: + "@jest/environment": "npm:30.3.0" + "@jest/fake-timers": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + jest-mock: "npm:30.3.0" + jest-util: "npm:30.3.0" + jest-validate: "npm:30.3.0" + checksum: 10c0/2a4be80861e569fa11456d89ff2aaedd71726ae02ade8f2cc6fbc86ba8749e24c37864676c4718fc08a40f6e6d2b2b51bc48d715b09b1e93e15e42e4a10f7b5b + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": version: 29.7.0 resolution: "jest-environment-node@npm:29.7.0" dependencies: @@ -19687,6 +20740,28 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:30.3.0": + version: 30.3.0 + resolution: "jest-haste-map@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + anymatch: "npm:^3.1.3" + fb-watchman: "npm:^2.0.2" + fsevents: "npm:^2.3.3" + graceful-fs: "npm:^4.2.11" + jest-regex-util: "npm:30.0.1" + jest-util: "npm:30.3.0" + jest-worker: "npm:30.3.0" + picomatch: "npm:^4.0.3" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/b9ef350082b15d4c119d6188f781024d859d6cfb17ae25d15c90c3a373234e16109afbeffdcf1af4baf6a85eb0cbbab00439c981ad43037c0f05d89ff98bd1af + languageName: node + linkType: hard + "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -19734,6 +20809,16 @@ __metadata: languageName: node linkType: hard +"jest-leak-detector@npm:30.3.0": + version: 30.3.0 + resolution: "jest-leak-detector@npm:30.3.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + pretty-format: "npm:30.3.0" + checksum: 10c0/a648c082b74e6c7d0c2e890002094ba97b108398fa3d0316958fc74321aa7b0824507a685d261a463856f219a724b86a6073bac86d351cf0675ecf962c1ee0ca + languageName: node + linkType: hard + "jest-leak-detector@npm:^29.7.0": version: 29.7.0 resolution: "jest-leak-detector@npm:29.7.0" @@ -19744,6 +20829,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:30.3.0": + version: 30.3.0 + resolution: "jest-matcher-utils@npm:30.3.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + jest-diff: "npm:30.3.0" + pretty-format: "npm:30.3.0" + checksum: 10c0/4c5f4b6435964110e64c4b5b42e3553fffe303ecdd68021147a7bcc72914aec3a899867c50db22b250c72aded53e3f7a9f64d83c9dca2e65ce27f36d23c6ca78 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^28.0.0": version: 28.1.3 resolution: "jest-matcher-utils@npm:28.1.3" @@ -19777,6 +20874,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:30.3.0": + version: 30.3.0 + resolution: "jest-message-util@npm:30.3.0" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@jest/types": "npm:30.3.0" + "@types/stack-utils": "npm:^2.0.3" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.3" + pretty-format: "npm:30.3.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/6ce611caef76394872b23a111286b48e56f42655d14a5fbd0629d9b7437ed892e85ad96b15864bc22185c24ef670afb6665c57b9729458a36d50ffe8310f0926 + languageName: node + linkType: hard + "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -19794,6 +20908,17 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:30.3.0": + version: 30.3.0 + resolution: "jest-mock@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + jest-util: "npm:30.3.0" + checksum: 10c0/9d95d550c6c998a85887c48ff5ee26de4bca18be91462ea8a8135d6023d591132465756f74981ca39b60f8708dfe38213a55bd4b619798a7b9438ca10d718099 + languageName: node + linkType: hard + "jest-mock@npm:^27.3.0": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" @@ -19815,25 +20940,6 @@ __metadata: languageName: node linkType: hard -"jest-playwright-preset@npm:^4.0.0": - version: 4.0.0 - resolution: "jest-playwright-preset@npm:4.0.0" - dependencies: - expect-playwright: "npm:^0.8.0" - jest-process-manager: "npm:^0.4.0" - nyc: "npm:^15.1.0" - playwright-core: "npm:>=1.2.0" - rimraf: "npm:^3.0.2" - uuid: "npm:^8.3.2" - peerDependencies: - jest: ^29.3.1 - jest-circus: ^29.3.1 - jest-environment-node: ^29.3.1 - jest-runner: ^29.3.1 - checksum: 10c0/c51b00dde02ab6a102589f97ca6c9679886c806da82f73ff0d4822cc06e988333eb8c62c2b2f8381d5e7fa2edfa5cc33e624a36107903d6b98ddd26dd0035a05 - languageName: node - linkType: hard - "jest-pnp-resolver@npm:^1.2.2": version: 1.2.2 resolution: "jest-pnp-resolver@npm:1.2.2" @@ -19846,6 +20952,18 @@ __metadata: languageName: node linkType: hard +"jest-pnp-resolver@npm:^1.2.3": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + "jest-process-manager@npm:^0.4.0": version: 0.4.0 resolution: "jest-process-manager@npm:0.4.0" @@ -19864,13 +20982,30 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.0.0, jest-regex-util@npm:^29.6.3": +"jest-regex-util@npm:30.0.1, jest-regex-util@npm:^30.0.0": + version: 30.0.1 + resolution: "jest-regex-util@npm:30.0.1" + checksum: 10c0/f30c70524ebde2d1012afe5ffa5691d5d00f7d5ba9e43d588f6460ac6fe96f9e620f2f9b36a02d0d3e7e77bc8efb8b3450ae3b80ac53c8be5099e01bf54f6728 + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b languageName: node linkType: hard +"jest-resolve-dependencies@npm:30.3.0": + version: 30.3.0 + resolution: "jest-resolve-dependencies@npm:30.3.0" + dependencies: + jest-regex-util: "npm:30.0.1" + jest-snapshot: "npm:30.3.0" + checksum: 10c0/25dde0c8c050bc3437332f37ab87484f597596b80ece77a93e4da2b466b42e45cc5ad748270c1477587536de15eea1ffe83a32638e824b120830c3a87c9a5b71 + languageName: node + linkType: hard + "jest-resolve-dependencies@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve-dependencies@npm:29.7.0" @@ -19881,6 +21016,22 @@ __metadata: languageName: node linkType: hard +"jest-resolve@npm:30.3.0": + version: 30.3.0 + resolution: "jest-resolve@npm:30.3.0" + dependencies: + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.3.0" + jest-pnp-resolver: "npm:^1.2.3" + jest-util: "npm:30.3.0" + jest-validate: "npm:30.3.0" + slash: "npm:^3.0.0" + unrs-resolver: "npm:^1.7.11" + checksum: 10c0/540f59f160c232c1b922b111a93f24ef5202d75e00f2e994de976badf6e88879893b474320ff363a6b97259a7a208b6a4f5eeabede787eea9b7912a12ac64b1b + languageName: node + linkType: hard + "jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" @@ -19898,7 +21049,37 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:^29.6.4, jest-runner@npm:^29.7.0": +"jest-runner@npm:30.3.0, jest-runner@npm:^30.0.4": + version: 30.3.0 + resolution: "jest-runner@npm:30.3.0" + dependencies: + "@jest/console": "npm:30.3.0" + "@jest/environment": "npm:30.3.0" + "@jest/test-result": "npm:30.3.0" + "@jest/transform": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-docblock: "npm:30.2.0" + jest-environment-node: "npm:30.3.0" + jest-haste-map: "npm:30.3.0" + jest-leak-detector: "npm:30.3.0" + jest-message-util: "npm:30.3.0" + jest-resolve: "npm:30.3.0" + jest-runtime: "npm:30.3.0" + jest-util: "npm:30.3.0" + jest-watcher: "npm:30.3.0" + jest-worker: "npm:30.3.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/6fb205f48541658f0b23b6c9a6730f0133f07c994a22ef506ebfcded5bbb444b655ac828074157e6579e664609a46f6a5bf3d366b694c6c8b523b5207a70499c + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": version: 29.7.0 resolution: "jest-runner@npm:29.7.0" dependencies: @@ -19927,6 +21108,36 @@ __metadata: languageName: node linkType: hard +"jest-runtime@npm:30.3.0": + version: 30.3.0 + resolution: "jest-runtime@npm:30.3.0" + dependencies: + "@jest/environment": "npm:30.3.0" + "@jest/fake-timers": "npm:30.3.0" + "@jest/globals": "npm:30.3.0" + "@jest/source-map": "npm:30.0.1" + "@jest/test-result": "npm:30.3.0" + "@jest/transform": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + cjs-module-lexer: "npm:^2.1.0" + collect-v8-coverage: "npm:^1.0.2" + glob: "npm:^10.5.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.3.0" + jest-message-util: "npm:30.3.0" + jest-mock: "npm:30.3.0" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.3.0" + jest-snapshot: "npm:30.3.0" + jest-util: "npm:30.3.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/79c486157a926d5be5c66356ad26cc3792cca1afb1490e255a550f52784b6c92eea42f1cb3b2c7565650ea777cf17ffc3f8e305d6b97888e7d273f6d7f282686 + languageName: node + linkType: hard + "jest-runtime@npm:^29.7.0": version: 29.7.0 resolution: "jest-runtime@npm:29.7.0" @@ -19966,6 +21177,35 @@ __metadata: languageName: node linkType: hard +"jest-snapshot@npm:30.3.0": + version: 30.3.0 + resolution: "jest-snapshot@npm:30.3.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/types": "npm:^7.27.3" + "@jest/expect-utils": "npm:30.3.0" + "@jest/get-type": "npm:30.1.0" + "@jest/snapshot-utils": "npm:30.3.0" + "@jest/transform": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + babel-preset-current-node-syntax: "npm:^1.2.0" + chalk: "npm:^4.1.2" + expect: "npm:30.3.0" + graceful-fs: "npm:^4.2.11" + jest-diff: "npm:30.3.0" + jest-matcher-utils: "npm:30.3.0" + jest-message-util: "npm:30.3.0" + jest-util: "npm:30.3.0" + pretty-format: "npm:30.3.0" + semver: "npm:^7.7.2" + synckit: "npm:^0.11.8" + checksum: 10c0/c1dd295d9d4962f2504c965575212fc62a358a849c66ab96b2f6e608ebdf6a6029ca505bb0693664a54a534e581883665d404a59976a5b46b1a1f88b537e96c5 + languageName: node + linkType: hard + "jest-snapshot@npm:^29.7.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" @@ -19994,6 +21234,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:30.3.0": + version: 30.3.0 + resolution: "jest-util@npm:30.3.0" + dependencies: + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.3" + checksum: 10c0/eea6f39e52a8cb2b1a28bb315a90dc6a8e450fffed73bb5ef4489d02d86f7d91be600d83f1dcba22956b8ac5fefa8f1b250e636c8402d3e8b50a5eec8b5963b2 + languageName: node + linkType: hard + "jest-util@npm:^29.5.0, jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" @@ -20008,6 +21262,20 @@ __metadata: languageName: node linkType: hard +"jest-validate@npm:30.3.0": + version: 30.3.0 + resolution: "jest-validate@npm:30.3.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + "@jest/types": "npm:30.3.0" + camelcase: "npm:^6.3.0" + chalk: "npm:^4.1.2" + leven: "npm:^3.1.0" + pretty-format: "npm:30.3.0" + checksum: 10c0/645629e9ae0926252dee26b0ad71b9f0392daa896328393479c63b1b13d2a70df4dac8b5053227c64e0120e930db1242897898c40706f135f20f73ef77fcf4f5 + languageName: node + linkType: hard + "jest-validate@npm:^29.7.0": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" @@ -20022,24 +21290,40 @@ __metadata: languageName: node linkType: hard -"jest-watch-typeahead@npm:^2.0.0": - version: 2.2.2 - resolution: "jest-watch-typeahead@npm:2.2.2" +"jest-watch-typeahead@npm:^3.0.1": + version: 3.0.1 + resolution: "jest-watch-typeahead@npm:3.0.1" dependencies: - ansi-escapes: "npm:^6.0.0" + ansi-escapes: "npm:^7.0.0" chalk: "npm:^5.2.0" - jest-regex-util: "npm:^29.0.0" - jest-watcher: "npm:^29.0.0" + jest-regex-util: "npm:^30.0.0" + jest-watcher: "npm:^30.0.0" slash: "npm:^5.0.0" - string-length: "npm:^5.0.1" + string-length: "npm:^6.0.0" strip-ansi: "npm:^7.0.1" peerDependencies: - jest: ^27.0.0 || ^28.0.0 || ^29.0.0 - checksum: 10c0/5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 + jest: ^30.0.0 + checksum: 10c0/647c2674cd75370f1726878aaa17caa5d3e7cac719757f733d2283f60bfa584c11059fcbddd1f6ae9be4e827caa4d18577296d53b9c7b26b98bc2a315487058c + languageName: node + linkType: hard + +"jest-watcher@npm:30.3.0, jest-watcher@npm:^30.0.0": + version: 30.3.0 + resolution: "jest-watcher@npm:30.3.0" + dependencies: + "@jest/test-result": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + jest-util: "npm:30.3.0" + string-length: "npm:^4.0.2" + checksum: 10c0/2631be5cc122fbf14cb0bb7566cdea6d6c432b984d8ef3c6385254bb6c378342e0754cbd2dfe094d80762d44bd1c7015de2ec2100eb6f192906619d8b229e1a5 languageName: node linkType: hard -"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.7.0": +"jest-watcher@npm:^29.7.0": version: 29.7.0 resolution: "jest-watcher@npm:29.7.0" dependencies: @@ -20055,6 +21339,19 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:30.3.0": + version: 30.3.0 + resolution: "jest-worker@npm:30.3.0" + dependencies: + "@types/node": "npm:*" + "@ungap/structured-clone": "npm:^1.3.0" + jest-util: "npm:30.3.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.1.1" + checksum: 10c0/25dfb1bc43d389e1daf8baad0ef7964249f001a7da7d92c61e398840424ca13fb1fb6242f6e021f0cbb37952f90371fb8be1ef0183b5d04ef161fdb8f09ee78e + languageName: node + linkType: hard + "jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" @@ -20067,7 +21364,7 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.5.0, jest@npm:^29.6.4": +"jest@npm:^29.5.0": version: 29.7.0 resolution: "jest@npm:29.7.0" dependencies: @@ -20086,6 +21383,25 @@ __metadata: languageName: node linkType: hard +"jest@npm:^30.0.4": + version: 30.3.0 + resolution: "jest@npm:30.3.0" + dependencies: + "@jest/core": "npm:30.3.0" + "@jest/types": "npm:30.3.0" + import-local: "npm:^3.2.0" + jest-cli: "npm:30.3.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/1f940424b741d1541c3d71e311f77c3cfaf31cff9ab2d53180333f00a31f157790a8d3d413b72b8dd2bb191aa75769fa741d9bc9085df779cd59689559a65815 + languageName: node + linkType: hard + "jiti@npm:^2.4.2": version: 2.4.2 resolution: "jiti@npm:2.4.2" @@ -20249,6 +21565,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + "jsesc@npm:~0.5.0": version: 0.5.0 resolution: "jsesc@npm:0.5.0" @@ -20872,6 +22197,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.23": + version: 4.18.1 + resolution: "lodash-es@npm:4.18.1" + checksum: 10c0/35d4dcf87ef07f8d090f409447575800108057e360b445f590d0d25d09e3d1e33a163d2fc100d4d072b0f901d5e2fc533cd7c4bfd8eeb38a06abec693823c8b8 + languageName: node + linkType: hard + "lodash._reinterpolate@npm:^3.0.0": version: 3.0.0 resolution: "lodash._reinterpolate@npm:3.0.0" @@ -21163,7 +22495,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.17, magic-string@npm:^0.30.21": +"magic-string@npm:^0.30.21": version: 0.30.21 resolution: "magic-string@npm:0.30.21" dependencies: @@ -21276,13 +22608,6 @@ __metadata: languageName: node linkType: hard -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: 10c0/33c6ccfdc272992e33e4e99a69541a3e7faed9de3ac5bc732feb2500a9ee71d3f9d098980a70b7746e7eeb7f859ff7dfb8aa9b5ecc4e34170a32ab78cfb18def - languageName: node - linkType: hard - "map-visit@npm:^1.0.0": version: 1.0.0 resolution: "map-visit@npm:1.0.0" @@ -21544,15 +22869,6 @@ __metadata: languageName: node linkType: hard -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: "npm:^1.5.0" - checksum: 10c0/661bf69b7afbfad57f0208f0c63324f4c96087b480708115b78ee3f0237d86c7f91347f6db31528740b2776c2e34c709bcb034e1e910edee2270c9603a0a469e - languageName: node - linkType: hard - "meow@npm:^3.3.0": version: 3.7.0 resolution: "meow@npm:3.7.0" @@ -22605,6 +23921,15 @@ __metadata: languageName: node linkType: hard +"napi-postinstall@npm:^0.3.0": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" + bin: + napi-postinstall: lib/cli.js + checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -23345,14 +24670,15 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.4": - version: 8.4.2 - resolution: "open@npm:8.4.2" +"open@npm:^10.2.0": + version: 10.2.0 + resolution: "open@npm:10.2.0" dependencies: - define-lazy-prop: "npm:^2.0.0" - is-docker: "npm:^2.1.1" - is-wsl: "npm:^2.2.0" - checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + default-browser: "npm:^5.2.1" + define-lazy-prop: "npm:^3.0.0" + is-inside-container: "npm:^1.0.0" + wsl-utils: "npm:^0.1.0" + checksum: 10c0/5a36d0c1fd2f74ce553beb427ca8b8494b623fc22c6132d0c1688f246a375e24584ea0b44c67133d9ab774fa69be8e12fbe1ff12504b1142bd960fb09671948f languageName: node linkType: hard @@ -24286,6 +25612,13 @@ __metadata: languageName: node linkType: hard +"pirates@npm:^4.0.7": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a + languageName: node + linkType: hard + "pixelmatch@npm:7.1.0": version: 7.1.0 resolution: "pixelmatch@npm:7.1.0" @@ -24473,6 +25806,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:30.3.0": + version: 30.3.0 + resolution: "pretty-format@npm:30.3.0" + dependencies: + "@jest/schemas": "npm:30.0.5" + ansi-styles: "npm:^5.2.0" + react-is: "npm:^18.3.1" + checksum: 10c0/719b27d70cd8b01013485054c5d094e1fe85e093b09ee73553e3b19302da3cf54fbd6a7ea9577d6471aeff8d372200e56979ffc4c831e2133520bd18060895fb + languageName: node + linkType: hard + "pretty-format@npm:^27.0.2": version: 27.4.2 resolution: "pretty-format@npm:27.4.2" @@ -24729,6 +26073,13 @@ __metadata: languageName: node linkType: hard +"pure-rand@npm:^7.0.0": + version: 7.0.1 + resolution: "pure-rand@npm:7.0.1" + checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e + languageName: node + linkType: hard + "q@npm:^1.5.1": version: 1.5.1 resolution: "q@npm:1.5.1" @@ -24896,6 +26247,24 @@ __metadata: languageName: node linkType: hard +"react-docgen@npm:^8.0.2": + version: 8.0.3 + resolution: "react-docgen@npm:8.0.3" + dependencies: + "@babel/core": "npm:^7.28.0" + "@babel/traverse": "npm:^7.28.0" + "@babel/types": "npm:^7.28.2" + "@types/babel__core": "npm:^7.20.5" + "@types/babel__traverse": "npm:^7.20.7" + "@types/doctrine": "npm:^0.0.9" + "@types/resolve": "npm:^1.20.2" + doctrine: "npm:^3.0.0" + resolve: "npm:^1.22.1" + strip-indent: "npm:^4.0.0" + checksum: 10c0/0231fb9177bc7c633f3d1f228eebb0ee90a2f0feac50b1869ef70b0a3683b400d7875547a2d5168f2619b63d4cc29d7c45ae33d3f621fc67a7fa6790ac2049f6 + languageName: node + linkType: hard + "react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0, react-dom@npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0, react-dom@npm:^19.2.0": version: 19.2.1 resolution: "react-dom@npm:19.2.1" @@ -24932,7 +26301,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": +"react-is@npm:^18.0.0, react-is@npm:^18.3.1": version: 18.3.1 resolution: "react-is@npm:18.3.1" checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 @@ -25019,12 +26388,12 @@ __metadata: "@react-spectrum/s2-icon-builder": "workspace:^" "@spectrum-css/component-builder": "workspace:^" "@spectrum-css/vars": "npm:^2.3.0" - "@storybook/addon-a11y": "npm:^9.0.18" - "@storybook/addon-docs": "npm:^9.0.18" - "@storybook/addon-jest": "npm:^9.0.18" - "@storybook/addon-themes": "npm:^9.0.18" - "@storybook/react": "npm:^9.0.18" - "@storybook/test-runner": "npm:^0.22.0" + "@storybook/addon-a11y": "npm:^10.0.0" + "@storybook/addon-docs": "npm:^10.0.0" + "@storybook/addon-jest": "npm:10.0.0-beta.12" + "@storybook/addon-themes": "npm:^10.0.0" + "@storybook/react": "npm:^10.0.0" + "@storybook/test-runner": "npm:^0.24.0" "@stylistic/eslint-plugin-ts": "npm:^2.9.0" "@swc/core": "npm:^1.3.36" "@swc/jest": "npm:^0.2.36" @@ -25039,7 +26408,7 @@ __metadata: "@vitejs/plugin-react": "npm:^5.1.4" "@vitest/browser-playwright": "npm:^4.0.17" "@vitest/browser-preview": "npm:^4.0.17" - "@vueless/storybook-dark-mode": "npm:^9.0.6" + "@vueless/storybook-dark-mode": "npm:^10.0.0" "@yarnpkg/types": "npm:^4.0.0" autoprefixer: "npm:^9.6.0" axe-playwright: "npm:^1.1.11" @@ -25099,7 +26468,7 @@ __metadata: rimraf: "npm:^6.0.1" shadow-dom-testing-library: "npm:^1.13.1" sharp: "npm:^0.33.5" - storybook: "npm:^9.0.18" + storybook: "npm:^10.0.0" storybook-react-parcel: "workspace:^" tailwind-variants: "patch:tailwind-variants@npm%3A0.3.1#~/.yarn/patches/tailwind-variants-npm-0.3.1-48888516de.patch" tailwindcss: "npm:^4.0.0" @@ -25888,6 +27257,20 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.22.1": + version: 1.22.12 + resolution: "resolve@npm:1.22.12" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/b16dc9b537c02e8c3388f7d3dcff9741d3071625f9a97ac1c885f2b0ca51e78df22328fb6d6ef214dd9101fb7cfc19aa2836fe3410402a94f3f7b8639c7149bf + languageName: node + linkType: hard + "resolve@npm:^2.0.0-next.5, resolve@npm:^2.0.0-next.6": version: 2.0.0-next.6 resolution: "resolve@npm:2.0.0-next.6" @@ -25917,6 +27300,20 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": + version: 1.22.12 + resolution: "resolve@patch:resolve@npm%3A1.22.12#optional!builtin::version=1.22.12&hash=c3c19d" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/fc6519984ae1f894d877c0060ba8b1f5ba3bc0e85a02f74e141929c118c23d74d9735619a9cc2965397387e514884245c65d72a40731dcb6cfc84c7bcdc8321e + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin, resolve@patch:resolve@npm%3A^2.0.0-next.6#optional!builtin": version: 2.0.0-next.6 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" @@ -26135,6 +27532,13 @@ __metadata: languageName: node linkType: hard +"run-applescript@npm:^7.0.0": + version: 7.1.0 + resolution: "run-applescript@npm:7.1.0" + checksum: 10c0/ab826c57c20f244b2ee807704b1ef4ba7f566aa766481ae5922aac785e2570809e297c69afcccc3593095b538a8a77d26f2b2e9a1d9dffee24e0e039502d1a03 + languageName: node + linkType: hard + "run-async@npm:^2.2.0": version: 2.4.0 resolution: "run-async@npm:2.4.0" @@ -26378,7 +27782,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.1": +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1": version: 7.7.2 resolution: "semver@npm:7.7.2" bin: @@ -26387,6 +27791,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.7.2, semver@npm:^7.7.3": + version: 7.7.4 + resolution: "semver@npm:7.7.4" + bin: + semver: bin/semver.js + checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 + languageName: node + linkType: hard + "semver@npm:~5.3.0": version: 5.3.0 resolution: "semver@npm:5.3.0" @@ -27193,6 +28606,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -27266,7 +28688,7 @@ __metadata: "@parcel/core": "npm:^2.16.3" "@parcel/reporter-cli": "npm:^2.16.3" http-proxy-middleware: "npm:^2.0.6" - storybook: "npm:^9.0.18" + storybook: "npm:^10.0.0" peerDependencies: react: "*" languageName: unknown @@ -27276,33 +28698,34 @@ __metadata: version: 0.0.0-use.local resolution: "storybook-react-parcel@workspace:packages/dev/storybook-react-parcel" dependencies: - "@storybook/react": "npm:^9.0.18" + "@storybook/react": "npm:^10.0.0" react: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" react-dom: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" - storybook: "npm:^9.0.18" + storybook: "npm:^10.0.0" storybook-builder-parcel: "npm:>=0.0.1" peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - storybook: ^9.0.18 + storybook: ^10.0.0 languageName: unknown linkType: soft -"storybook@npm:^9.0.18": - version: 9.1.17 - resolution: "storybook@npm:9.1.17" +"storybook@npm:^10.0.0": + version: 10.3.5 + resolution: "storybook@npm:10.3.5" dependencies: "@storybook/global": "npm:^5.0.0" - "@testing-library/jest-dom": "npm:^6.6.3" + "@storybook/icons": "npm:^2.0.1" + "@testing-library/jest-dom": "npm:^6.9.1" "@testing-library/user-event": "npm:^14.6.1" "@vitest/expect": "npm:3.2.4" - "@vitest/mocker": "npm:3.2.4" "@vitest/spy": "npm:3.2.4" - better-opn: "npm:^3.0.2" - esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" - esbuild-register: "npm:^3.5.0" + "@webcontainer/env": "npm:^1.1.1" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0" + open: "npm:^10.2.0" recast: "npm:^0.23.5" - semver: "npm:^7.6.2" + semver: "npm:^7.7.3" + use-sync-external-store: "npm:^1.5.0" ws: "npm:^8.18.0" peerDependencies: prettier: ^2 || ^3 @@ -27310,8 +28733,8 @@ __metadata: prettier: optional: true bin: - storybook: ./bin/index.cjs - checksum: 10c0/8590eaff08714565f19658b16676005960cada649fd0809171d8e8917f38592c52a795a68662c92abb90aae9d5794f0e60f08a2523d9d2524f7f826af0ddd66e + storybook: ./dist/bin/dispatcher.js + checksum: 10c0/1443e4710b0bb972db7704d8445c039a6335afafebe853d2b0d89b161262050cd7ae5eda3811c771d54d832f0acc80cf2c231d24f73d1f547d020898394afde6 languageName: node linkType: hard @@ -27372,13 +28795,22 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^5.0.1": - version: 5.0.1 - resolution: "string-length@npm:5.0.1" +"string-length@npm:^4.0.2": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" dependencies: - char-regex: "npm:^2.0.0" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-length@npm:^6.0.0": + version: 6.0.0 + resolution: "string-length@npm:6.0.0" + dependencies: + strip-ansi: "npm:^7.1.0" + checksum: 10c0/11c050827774c19583c6c3be62810dd1cc621df8696416754c2cfa62d8de1bc903893571981e7ec45875076a214216109517fa8cd729f9e7249583f546f9b360 languageName: node linkType: hard @@ -27617,6 +29049,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^7.1.0": + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" + dependencies: + ansi-regex: "npm:^6.2.2" + checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221 + languageName: node + linkType: hard + "strip-bom-string@npm:^1.0.0": version: 1.0.0 resolution: "strip-bom-string@npm:1.0.0" @@ -27688,6 +29129,13 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^4.0.0": + version: 4.1.1 + resolution: "strip-indent@npm:4.1.1" + checksum: 10c0/5b23dd5934be0ef6b6fe1b802887f83e56ad9dcd9f6c3896a637da2c6c3a6da3fdf3e51354a98e6cccb6f1c41863e7b9b9deaa348639dfd35f71f3549edb4dff + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -27761,7 +29209,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0": +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -27820,6 +29268,15 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.11.8": + version: 0.11.12 + resolution: "synckit@npm:0.11.12" + dependencies: + "@pkgr/core": "npm:^0.2.9" + checksum: 10c0/cc4d446806688ae0d728ae7bb3f53176d065cf9536647fb85bdd721dcefbd7bf94874df6799ff61580f2b03a392659219b778a9254ad499f9a1f56c34787c235 + languageName: node + linkType: hard + "synckit@npm:^0.9.1": version: 0.9.2 resolution: "synckit@npm:0.9.2" @@ -28566,6 +30023,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + "type-fest@npm:^0.3.0": version: 0.3.1 resolution: "type-fest@npm:0.3.1" @@ -28587,20 +30051,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb - languageName: node - linkType: hard - -"type-fest@npm:^3.0.0": - version: 3.13.1 - resolution: "type-fest@npm:3.13.1" - checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 - languageName: node - linkType: hard - "type-is@npm:^2.0.0, type-is@npm:^2.0.1": version: 2.0.1 resolution: "type-is@npm:2.0.1" @@ -29290,7 +30740,7 @@ __metadata: languageName: node linkType: hard -"unplugin@npm:^1.3.1, unplugin@npm:^1.4.0": +"unplugin@npm:^1.4.0": version: 1.12.0 resolution: "unplugin@npm:1.12.0" dependencies: @@ -29312,6 +30762,18 @@ __metadata: languageName: node linkType: hard +"unplugin@npm:^2.3.5": + version: 2.3.11 + resolution: "unplugin@npm:2.3.11" + dependencies: + "@jridgewell/remapping": "npm:^2.3.5" + acorn: "npm:^8.15.0" + picomatch: "npm:^4.0.3" + webpack-virtual-modules: "npm:^0.6.2" + checksum: 10c0/273c1eab0eca4470c7317428689295c31dbe8ab0b306504de9f03cd20c156debb4131bef24b27ac615862958c5dd950a3951d26c0723ea774652ab3624149cff + languageName: node + linkType: hard + "unquote@npm:^1.1.0": version: 1.1.1 resolution: "unquote@npm:1.1.1" @@ -29319,6 +30781,73 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.7.11": + version: 1.11.1 + resolution: "unrs-resolver@npm:1.11.1" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" + "@unrs/resolver-binding-android-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" + "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" + napi-postinstall: "npm:^0.3.0" + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 + languageName: node + linkType: hard + "unset-value@npm:^1.0.0": version: 1.0.0 resolution: "unset-value@npm:1.0.0" @@ -29410,7 +30939,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.6.0": +"use-sync-external-store@npm:^1.5.0, use-sync-external-store@npm:^1.6.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" peerDependencies: @@ -30382,6 +31911,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d + languageName: node + linkType: hard + "write-json-file@npm:^2.2.0": version: 2.3.0 resolution: "write-json-file@npm:2.3.0" @@ -30450,6 +31989,15 @@ __metadata: languageName: node linkType: hard +"wsl-utils@npm:^0.1.0": + version: 0.1.0 + resolution: "wsl-utils@npm:0.1.0" + dependencies: + is-wsl: "npm:^3.1.0" + checksum: 10c0/44318f3585eb97be994fc21a20ddab2649feaf1fbe893f1f866d936eea3d5f8c743bec6dc02e49fbdd3c0e69e9b36f449d90a0b165a4f47dd089747af4cf2377 + languageName: node + linkType: hard + "xdg-basedir@npm:^3.0.0": version: 3.0.0 resolution: "xdg-basedir@npm:3.0.0" @@ -30621,7 +32169,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: From 657bada7838908e550e21c63863912fccd194d9b Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:01:30 +1000 Subject: [PATCH 02/30] chore(sb10): adopt S2 provider addon restructure and dark-mode rewrite from upgrade-sb-10 reference --- .../custom-addons/provider/preset.ts | 15 +++++++++ .../provider/{register.js => register.tsx} | 0 .storybook-s2/main.ts | 2 +- .storybook-s2/preview.tsx | 33 ++++++++++++------- 4 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 .storybook-s2/custom-addons/provider/preset.ts rename .storybook-s2/custom-addons/provider/{register.js => register.tsx} (100%) diff --git a/.storybook-s2/custom-addons/provider/preset.ts b/.storybook-s2/custom-addons/provider/preset.ts new file mode 100644 index 00000000000..07f1a5bad60 --- /dev/null +++ b/.storybook-s2/custom-addons/provider/preset.ts @@ -0,0 +1,15 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +/** + * Preset that registers our manager entry (register.tsx) with Storybook. + * The manager builder will bundle register.tsx and transpile JSX there; + * this file stays JS-free so Node can load it as a preset. + * @see https://github.com/storybookjs/addon-kit + */ +export const managerEntries = (existing: string[] = []) => [ + ...existing, + path.join(__dirname, "register.tsx"), +]; diff --git a/.storybook-s2/custom-addons/provider/register.js b/.storybook-s2/custom-addons/provider/register.tsx similarity index 100% rename from .storybook-s2/custom-addons/provider/register.js rename to .storybook-s2/custom-addons/provider/register.tsx diff --git a/.storybook-s2/main.ts b/.storybook-s2/main.ts index ec83a5ebf84..58c91a0079c 100644 --- a/.storybook-s2/main.ts +++ b/.storybook-s2/main.ts @@ -20,7 +20,7 @@ const config: StorybookConfig = { "../packages/@react-spectrum/s2/stories/*.stories.@(js|jsx|mjs|ts|tsx)", ], addons: [ - './custom-addons/provider/register', + './custom-addons/provider/preset.ts', // "@storybook/addon-styling-webpack", "@storybook/addon-docs", "@vueless/storybook-dark-mode", diff --git a/.storybook-s2/preview.tsx b/.storybook-s2/preview.tsx index ceba3e0fa2c..d0081fe3f90 100644 --- a/.storybook-s2/preview.tsx +++ b/.storybook-s2/preview.tsx @@ -1,16 +1,31 @@ import '@react-spectrum/s2/page.css'; import { themes } from 'storybook/theming'; -import { DARK_MODE_EVENT_NAME } from '@vueless/storybook-dark-mode'; -import { store } from '@vueless/storybook-dark-mode/dist/esm/Tool'; +import { DARK_MODE_EVENT_NAME, useDarkMode } from '@vueless/storybook-dark-mode'; import { addons } from 'storybook/preview-api'; -import React, { useEffect, useState } from 'react'; +import React from 'react'; import {withProviderSwitcher} from './custom-addons/provider'; import {DocsContainer, Controls, Description, Primary, Stories, Subtitle, Title} from '@storybook/addon-docs/blocks'; import './global.css'; +const DARK_MODE_STORAGE_KEY = 'sb-addon-themes-3'; + +function getInitialColorScheme(): 'dark' | 'light' { + if (typeof window === 'undefined') return 'light'; + try { + const stored = window.localStorage.getItem(DARK_MODE_STORAGE_KEY); + if (stored) { + const { current } = JSON.parse(stored); + return current === 'dark' ? 'dark' : 'light'; + } + } catch {} + return 'light'; +} + const channel = addons.getChannel(); -document.documentElement.dataset.colorScheme = store().current === 'dark' ? 'dark' : 'light'; -channel.on(DARK_MODE_EVENT_NAME, isDark => document.documentElement.dataset.colorScheme = isDark ? 'dark' : 'light'); +document.documentElement.dataset.colorScheme = getInitialColorScheme(); +channel.on(DARK_MODE_EVENT_NAME, (isDark: boolean) => { + document.documentElement.dataset.colorScheme = isDark ? 'dark' : 'light'; +}); /** @type { import('@storybook/react').Preview } */ const preview = { @@ -21,12 +36,8 @@ const preview = { }, docs: { container: (props) => { - let [dark, setDark] = useState(store().current === 'dark'); - useEffect(() => { - channel.on(DARK_MODE_EVENT_NAME, setDark); - return () => channel.removeListener(DARK_MODE_EVENT_NAME, setDark); - }, []); - var style = getComputedStyle(document.body) + const dark = useDarkMode(); + var style = getComputedStyle(document.body); return ; }, codePanel: true, From ac448c143b7615578473ab9757c623631583b8b6 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:28:12 +1000 Subject: [PATCH 03/30] chore(sb10): convert storybook-builder-parcel to ESM Rename .js -> .mjs, convert CJS require/exports to ESM import/export. Ports five-virtual-file split from upgrade-sb-10 reference branch. Uses createRequire for @parcel/utils (CJS-only package). --- ...iframe-modern.js => gen-iframe-modern.mjs} | 31 ++-- ...eview-modern.js => gen-preview-modern.mjs} | 144 ++++++++++++++---- .../dev/storybook-builder-parcel/package.json | 16 +- .../dev/storybook-builder-parcel/preset.js | 115 -------------- .../dev/storybook-builder-parcel/preset.mjs | 122 +++++++++++++++ 5 files changed, 267 insertions(+), 161 deletions(-) rename packages/dev/storybook-builder-parcel/{gen-iframe-modern.js => gen-iframe-modern.mjs} (71%) rename packages/dev/storybook-builder-parcel/{gen-preview-modern.js => gen-preview-modern.mjs} (50%) delete mode 100644 packages/dev/storybook-builder-parcel/preset.js create mode 100644 packages/dev/storybook-builder-parcel/preset.mjs diff --git a/packages/dev/storybook-builder-parcel/gen-iframe-modern.js b/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs similarity index 71% rename from packages/dev/storybook-builder-parcel/gen-iframe-modern.js rename to packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs index 29ead8152cb..80b76d0a3a9 100644 --- a/packages/dev/storybook-builder-parcel/gen-iframe-modern.js +++ b/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs @@ -1,4 +1,4 @@ -const { normalizeStories } = require("storybook/internal/common"); +import { normalizeStories } from "storybook/internal/common"; const TEMPLATE = ` @@ -22,12 +22,26 @@ const TEMPLATE = `
+ `; -module.exports.generateIframeModern = async function generateIframeModern(options) { +export async function generateIframeModern(options) { const { configType, features, presets, serverChannelUrl, title } = options; const frameworkOptions = await presets.apply("frameworkOptions"); const headHtmlSnippet = await presets.apply("previewHead"); @@ -38,10 +52,7 @@ module.exports.generateIframeModern = async function generateIframeModern(option const coreOptions = await presets.apply("core"); const stories = normalizeStories( await options.presets.apply("stories", [], options), - { - configDir: options.configDir, - workingDir: process.cwd(), - } + { configDir: options.configDir, workingDir: process.cwd() } ).map((specifier) => ({ ...specifier, importPathMatcher: specifier.importPathMatcher.source, @@ -54,11 +65,7 @@ module.exports.generateIframeModern = async function generateIframeModern(option .replace(`'[FRAMEWORK_OPTIONS HERE]'`, JSON.stringify(frameworkOptions)) .replace( `'[CHANNEL_OPTIONS HERE]'`, - JSON.stringify( - coreOptions && coreOptions.channelOptions - ? coreOptions.channelOptions - : {} - ) + JSON.stringify(coreOptions?.channelOptions ?? {}) ) .replace(`'[FEATURES HERE]'`, JSON.stringify(features || {})) .replace(`'[STORIES HERE]'`, JSON.stringify(stories || {})) @@ -66,4 +73,4 @@ module.exports.generateIframeModern = async function generateIframeModern(option .replace(`'[SERVER_CHANNEL_URL HERE]'`, JSON.stringify(serverChannelUrl)) .replace("", headHtmlSnippet || "") .replace("", bodyHtmlSnippet || ""); -}; +} diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.js b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs similarity index 50% rename from packages/dev/storybook-builder-parcel/gen-preview-modern.js rename to packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index ea6f30004ec..2dd4d25fe72 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.js +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -1,12 +1,108 @@ -const path = require("path"); -const { +import path from "node:path"; +import { Buffer } from "node:buffer"; +import { createRequire } from "node:module"; +import { loadPreviewOrConfigFile, normalizeStories, - stripAbsNodeModulesPath, -} = require("storybook/internal/common"); -const {relativePath} = require('@parcel/utils'); +} from "storybook/internal/common"; -module.exports.generatePreviewModern = async function generatePreviewModern( +// @parcel/utils is CJS-only; use createRequire to load it from ESM +const _require = createRequire(import.meta.url); +const { relativePath } = _require("@parcel/utils"); + +// base64 helper for story: pipeline specifiers (globalThis.btoa exists in Node >=18) +const btoa = (s) => Buffer.from(s, "utf8").toString("base64"); + +/** + * Strip absolute path prefix up to and including node_modules, returning a bare + * specifier for the bundler. (Storybook 10 no longer exports this from internal/common.) + */ +function stripAbsNodeModulesPath(absPath) { + const sep = path.sep; + const splits = absPath.split(`node_modules${sep}`); + const last = splits[splits.length - 1]; + return path.posix.normalize(last.replace(/\\/g, "/")); +} + +/** + * Convert a bare path like @storybook/react/dist/entry-preview-argtypes.js to the + * package export subpath @storybook/react/entry-preview-argtypes so bundlers (Parcel) + * resolve via package.json "exports" instead of raw dist files. + * Paths like package/dist/index.js become package (main export), not package/index. + */ +function toPackageExportSpecifier(barePath) { + const normalized = barePath.replace(/\\/g, "/"); + const distMatch = normalized.match(/^(@?[^/]+(?:\/[^/]+)?)\/dist\/(.+)\.js$/); + if (distMatch) { + const pkg = distMatch[1]; + const subpath = distMatch[2]; + // package/dist/index.js -> package (main export), not package/index + if (subpath === "index") { + return pkg; + } + return `${pkg}/${subpath}`; + } + return normalized; +} + +/** + * Inline IIFE that sets __STORYBOOK_ADDONS_PREVIEW on globalThis. Run this as the + * first synchronous code in the preview entry so no Storybook chunk can run before it. + */ +function getInitAddonsGlobalIIFE() { + return `(function() { + var g = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : {}; + if (g.__STORYBOOK_ADDONS_PREVIEW) return; + var noop = function(){}; + var placeholderChannel = { on: noop, emit: noop, removeListener: noop, off: noop }; + g.__STORYBOOK_ADDONS_CHANNEL__ = placeholderChannel; + g.__STORYBOOK_ADDONS_PREVIEW = { + _channel: null, + setChannel: function(c){ this._channel = c; g.__STORYBOOK_ADDONS_CHANNEL__ = c; }, + getChannel: function(){ return this._channel || placeholderChannel; }, + ready: function(){ return Promise.resolve(this.getChannel()); }, + hasChannel: function(){ return !!this._channel; } + }; +})();`; +} + +/** + * Generate the preview entry bootstrap: runs init IIFE first, then dynamic-imports + * preview-main.js so __STORYBOOK_ADDONS_PREVIEW exists before any other module runs. + */ +function generatePreviewBootstrap() { + return getInitAddonsGlobalIIFE() + "\nimport('./preview-main.js');"; +} + +/** + * Generate a zero-dependency module that sets __STORYBOOK_ADDONS_PREVIEW (kept for + * backwards compatibility; bootstrap approach is preferred). + */ +function generateInitAddonsGlobal() { + return getInitAddonsGlobalIIFE(); +} + +/** + * Generate the addon setup module (like Vite's VIRTUAL_ADDON_SETUP_FILE). + * Must be imported before the runtime so the channel and addons store exist + * before any runtime code runs. See storybook builder-vite codegen-modern-iframe-script.ts + */ +function generateSetupAddons() { + return ` +import { addons } from 'storybook/preview-api'; +import { createBrowserChannel } from 'storybook/internal/channels'; + +const channel = createBrowserChannel({ page: 'preview' }); +addons.setChannel(channel); +window.__STORYBOOK_ADDONS_CHANNEL__ = channel; + +if (window.CONFIG_TYPE === 'DEVELOPMENT') { + window.__STORYBOOK_SERVER_CHANNEL__ = channel; +} +`.trim(); +} + +async function generatePreviewModern( options, generatedEntries ) { @@ -26,27 +122,14 @@ module.exports.generatePreviewModern = async function generatePreviewModern( ].filter(Boolean); /** - * This code is largely taken from https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/lib/builder-webpack4/src/preview/virtualModuleModernEntry.js.handlebars - * Some small tweaks were made to `getProjectAnnotations` (since `import()` needs to be resolved asynchronously) - * and the HMR implementation has been tweaked to work with Vite. - * @todo Inline variable and remove `noinspection` + * Main preview module (loaded by preview.js bootstrap via dynamic import). + * Addon setup first, then runtime/setup(). See storybook builder-vite codegen-modern-iframe-script.ts */ const code = ` + import './setup-addons.js'; import { setup } from 'storybook/internal/preview/runtime'; - setup(); - import { createBrowserChannel } from 'storybook/internal/channels'; - import { addons } from 'storybook/internal/preview-api'; - - const channel = createBrowserChannel({ page: 'preview' }); - addons.setChannel(channel); - window.__STORYBOOK_ADDONS_CHANNEL__ = channel; - - if (window.CONFIG_TYPE === 'DEVELOPMENT'){ - window.__STORYBOOK_SERVER_CHANNEL__ = channel; - } - import { composeConfigs, PreviewWeb } from 'storybook/internal/preview-api'; import { isPreview } from 'storybook/internal/csf'; @@ -77,7 +160,7 @@ module.exports.generatePreviewModern = async function generatePreviewModern( `; // ${generateHMRHandler(frameworkName)}; return code; -}; +} function processPreviewAnnotation(annotationPath) { // If entry is an object, take the first, which is the @@ -87,7 +170,7 @@ function processPreviewAnnotation(annotationPath) { // requiring them to re-export their sub-addons as we do // in addon-essentials. if (typeof annotationPath === "object") { - return annotationPath.bare; + return toPackageExportSpecifier(annotationPath.bare); } // resolve relative paths into absolute paths, but don't resolve "bare" imports if (annotationPath?.startsWith("./") || annotationPath?.startsWith("../")) { @@ -100,9 +183,11 @@ function processPreviewAnnotation(annotationPath) { } // For addon dependencies that use require.resolve(), we need to convert to a bare path - // so that vite will process it as a dependency (cjs -> esm, etc). + // so that the bundler can resolve it. Use package export subpaths (e.g. @storybook/react/entry-preview-argtypes) + // so package.json "exports" are respected (required in Storybook 10). if (annotationPath.includes("node_modules")) { - return stripAbsNodeModulesPath(annotationPath); + const bare = stripAbsNodeModulesPath(annotationPath); + return toPackageExportSpecifier(bare); } return /*slash*/ annotationPath; @@ -158,3 +243,10 @@ async function listStories(options) { ) ).reduce((carry, stories) => carry.concat(stories), []); } + +export { + generateInitAddonsGlobal, + generatePreviewBootstrap, + generateSetupAddons, + generatePreviewModern, +}; diff --git a/packages/dev/storybook-builder-parcel/package.json b/packages/dev/storybook-builder-parcel/package.json index 76cbb188228..1f8bdc2b5ee 100644 --- a/packages/dev/storybook-builder-parcel/package.json +++ b/packages/dev/storybook-builder-parcel/package.json @@ -2,18 +2,18 @@ "name": "storybook-builder-parcel", "version": "0.0.1", "private": true, - "main": "preset.js", + "type": "module", + "main": "./preset.mjs", + "exports": { + ".": "./preset.mjs", + "./preset": "./preset.mjs" + }, "dependencies": { "@parcel/core": "^2.16.3", "@parcel/reporter-cli": "^2.16.3", "http-proxy-middleware": "^2.0.6", "storybook": "^10.0.0" }, - "peerDependencies": { - "react": "*" - }, - "scripts": { - "build": "true", - "clean": "true" - } + "peerDependencies": { "react": "*" }, + "scripts": { "build": "true", "clean": "true" } } diff --git a/packages/dev/storybook-builder-parcel/preset.js b/packages/dev/storybook-builder-parcel/preset.js deleted file mode 100644 index 0ae11c69d0e..00000000000 --- a/packages/dev/storybook-builder-parcel/preset.js +++ /dev/null @@ -1,115 +0,0 @@ -const { Parcel } = require("@parcel/core"); -const path = require("path"); -const { createProxyMiddleware } = require("http-proxy-middleware"); -const fs = require("fs"); - -const { generateIframeModern } = require("./gen-iframe-modern.js"); -const { generatePreviewModern } = require("./gen-preview-modern.js"); - -const generatedEntries = path.join(__dirname, "generated-entries"); - -exports.start = async function ({ options, router }) { - let parcel = await createParcel(options, true); - - router.use(async (req, res, next) => { - if (req.url === "/" || req.url === "/index.html") { - return next(); - } - - let proxy = createProxyMiddleware({ - target: "http://localhost:3000/", - selfHandleResponse: true, - logLevel: "warn", - onProxyRes(proxyRes, req, res) { - // Parcel dev server responds with main HTML page if the file doesn't exist... - if ( - proxyRes.statusCode === 404 || - (proxyRes.headers["content-type"]?.startsWith("text/html") && - !req.url.startsWith("/iframe.html")) - ) { - return next(); - } else { - res.statusCode = proxyRes.statusCode; - for (let header in proxyRes.headers) { - res.setHeader(header, proxyRes.headers[header]); - } - proxyRes.pipe(res); - } - }, - }); - - // Remove socket/connection temporarily to prevent proxy from subscribing to `close` event and triggering warning. - let { socket, connection } = req; - req.socket = null; - req.connection = null; - await proxy(req, res, next); - req.socket = socket; - req.connection = connection; - }); - - let subscription = await parcel.watch(); - process.on("SIGINT", async () => { - await subscription.unsubscribe(); - process.exit(); - }); - - return { - async bail(e) { - await subscription.unsubscribe(); - }, - stats: {}, - totalTime: 0, - }; -}; - -exports.build = async function ({ options }) { - let parcel = await createParcel(options); - await parcel.run(); -}; - -exports.corePresets = []; -exports.previewPresets = []; -exports.bail = async () => {}; - -async function createParcel(options, isDev = false) { - fs.mkdirSync(generatedEntries, { recursive: true }); - fs.writeFileSync( - path.join(generatedEntries, "iframe.html"), - await generateIframeModern(options, generatedEntries) - ); - fs.writeFileSync( - path.join(generatedEntries, "preview.js"), - await generatePreviewModern(options, generatedEntries) - ); - - return new Parcel({ - entries: path.join(generatedEntries, "iframe.html"), - config: path.resolve(options.configDir, ".parcelrc"), - mode: isDev ? "development" : "production", - serveOptions: isDev - ? { - port: 3000, - } - : null, - hmrOptions: isDev - ? { - port: 3001, - } - : null, - additionalReporters: [ - { - packageName: "@parcel/reporter-cli", - resolveFrom: __filename, - }, - ], - targets: { - storybook: { - distDir: options.outputDir, - publicUrl: "./", - engines: { - browsers: ['last 2 Chrome version', 'last 2 Safari versions', 'last 2 Edge version', 'last 2 Firefox versions'] - } - } - } - }); -} diff --git a/packages/dev/storybook-builder-parcel/preset.mjs b/packages/dev/storybook-builder-parcel/preset.mjs new file mode 100644 index 00000000000..66ec89b81a7 --- /dev/null +++ b/packages/dev/storybook-builder-parcel/preset.mjs @@ -0,0 +1,122 @@ +import { Parcel } from "@parcel/core"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { createProxyMiddleware } from "http-proxy-middleware"; +import fs from "node:fs"; + +import { generateIframeModern } from "./gen-iframe-modern.mjs"; +import { + generatePreviewModern, + generatePreviewBootstrap, + generateSetupAddons, + generateInitAddonsGlobal, +} from "./gen-preview-modern.mjs"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const generatedEntries = path.join(__dirname, "generated-entries"); + +export async function start({ options, router }) { + const parcel = await createParcel(options, true); + + router.use(async (req, res, next) => { + if (req.url === "/" || req.url === "/index.html") return next(); + + const proxy = createProxyMiddleware({ + target: "http://localhost:3000/", + selfHandleResponse: true, + logLevel: "warn", + onProxyRes(proxyRes, req, res) { + if ( + proxyRes.statusCode === 404 || + (proxyRes.headers["content-type"]?.startsWith("text/html") && + !req.url.startsWith("/iframe.html")) + ) { + return next(); + } + res.statusCode = proxyRes.statusCode; + for (const header in proxyRes.headers) { + res.setHeader(header, proxyRes.headers[header]); + } + proxyRes.pipe(res); + }, + }); + + const { socket, connection } = req; + req.socket = null; + req.connection = null; + await proxy(req, res, next); + req.socket = socket; + req.connection = connection; + }); + + const subscription = await parcel.watch(); + process.on("SIGINT", async () => { + await subscription.unsubscribe(); + process.exit(); + }); + + return { + async bail() { await subscription.unsubscribe(); }, + stats: {}, + totalTime: 0, + }; +} + +export async function build({ options }) { + const parcel = await createParcel(options); + await parcel.run(); +} + +export const corePresets = []; +export const previewPresets = []; +export async function bail() {} + +async function createParcel(options, isDev = false) { + fs.mkdirSync(generatedEntries, { recursive: true }); + fs.writeFileSync( + path.join(generatedEntries, "iframe.html"), + await generateIframeModern(options, generatedEntries) + ); + fs.writeFileSync( + path.join(generatedEntries, "init-addons-global.js"), + generateInitAddonsGlobal() + ); + fs.writeFileSync( + path.join(generatedEntries, "setup-addons.js"), + generateSetupAddons() + ); + fs.writeFileSync( + path.join(generatedEntries, "preview.js"), + generatePreviewBootstrap() + ); + fs.writeFileSync( + path.join(generatedEntries, "preview-main.js"), + await generatePreviewModern(options, generatedEntries) + ); + + return new Parcel({ + entries: path.join(generatedEntries, "iframe.html"), + config: path.resolve(options.configDir, ".parcelrc"), + mode: isDev ? "development" : "production", + serveOptions: isDev ? { port: 3000 } : null, + hmrOptions: isDev ? { port: 3001 } : null, + additionalReporters: [ + { packageName: "@parcel/reporter-cli", resolveFrom: __filename }, + ], + targets: { + storybook: { + distDir: options.outputDir, + publicUrl: "./", + engines: { + browsers: [ + "last 2 Chrome version", + "last 2 Safari versions", + "last 2 Edge version", + "last 2 Firefox versions", + ], + }, + }, + }, + }); +} From 0343aadf378b5095318058bfeba141881082dcdd Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:41:20 +1000 Subject: [PATCH 04/30] chore(sb10): declare @parcel/utils dep and mark broken preview helpers for Task 3.1 Co-Authored-By: Claude Sonnet 4.6 --- .../storybook-builder-parcel/gen-preview-modern.mjs | 8 ++++++++ packages/dev/storybook-builder-parcel/package.json | 10 ++++++++-- yarn.lock | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index 2dd4d25fe72..b6b2452cf7c 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -197,6 +197,14 @@ function processPreviewAnnotation(annotationPath) { * This file is largely based on https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/lib/core-common/src/utils/to-importFn.ts */ +// TODO(Task 3.1): toImportFn, generateImportFnScriptCode, and listStories are +// INTENTIONALLY BROKEN at this stage. toImportFn emits `...import('story:...')` +// which spreads a Promise into an object literal and yields an empty importers +// map. listStories returns glob patterns rather than resolved file paths. Both +// are rewritten in Task 3.1 to use static top-level imports plus a proper glob +// expansion. Do not attempt to "fix" these in isolation — see the plan at +// docs/superpowers/plans/2026-04-24-storybook-10-migration.md Phase 3. + /** * This function takes an array of stories and creates a mapping between the stories' relative paths * to the working directory and their dynamic imports. The import is done in an asynchronous function diff --git a/packages/dev/storybook-builder-parcel/package.json b/packages/dev/storybook-builder-parcel/package.json index 1f8bdc2b5ee..cd9f75e426f 100644 --- a/packages/dev/storybook-builder-parcel/package.json +++ b/packages/dev/storybook-builder-parcel/package.json @@ -11,9 +11,15 @@ "dependencies": { "@parcel/core": "^2.16.3", "@parcel/reporter-cli": "^2.16.3", + "@parcel/utils": "^2.16.3", "http-proxy-middleware": "^2.0.6", "storybook": "^10.0.0" }, - "peerDependencies": { "react": "*" }, - "scripts": { "build": "true", "clean": "true" } + "peerDependencies": { + "react": "*" + }, + "scripts": { + "build": "true", + "clean": "true" + } } diff --git a/yarn.lock b/yarn.lock index c9ca80ebea6..6e418b65b4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28687,6 +28687,7 @@ __metadata: dependencies: "@parcel/core": "npm:^2.16.3" "@parcel/reporter-cli": "npm:^2.16.3" + "@parcel/utils": "npm:^2.16.3" http-proxy-middleware: "npm:^2.0.6" storybook: "npm:^10.0.0" peerDependencies: From f17d5a03b1b407f2535a005c283936dcbdd448e6 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:43:14 +1000 Subject: [PATCH 05/30] chore(sb10): convert storybook-react-parcel to ESM and resolve core.builder path --- packages/dev/storybook-react-parcel/package.json | 9 ++++----- packages/dev/storybook-react-parcel/preset.js | 4 ---- packages/dev/storybook-react-parcel/preset.mjs | 9 +++++++++ 3 files changed, 13 insertions(+), 9 deletions(-) delete mode 100644 packages/dev/storybook-react-parcel/preset.js create mode 100644 packages/dev/storybook-react-parcel/preset.mjs diff --git a/packages/dev/storybook-react-parcel/package.json b/packages/dev/storybook-react-parcel/package.json index 257353dfff6..67eee181ed8 100644 --- a/packages/dev/storybook-react-parcel/package.json +++ b/packages/dev/storybook-react-parcel/package.json @@ -2,7 +2,9 @@ "name": "storybook-react-parcel", "version": "0.0.1", "private": true, - "main": "preset.js", + "type": "module", + "main": "./preset.mjs", + "exports": { ".": "./preset.mjs", "./preset": "./preset.mjs" }, "dependencies": { "@storybook/react": "^10.0.0", "storybook-builder-parcel": ">=0.0.1" @@ -17,8 +19,5 @@ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "storybook": "^10.0.0" }, - "scripts": { - "build": "true", - "clean": "true" - } + "scripts": { "build": "true", "clean": "true" } } diff --git a/packages/dev/storybook-react-parcel/preset.js b/packages/dev/storybook-react-parcel/preset.js deleted file mode 100644 index b7149e91257..00000000000 --- a/packages/dev/storybook-react-parcel/preset.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports.core = { - builder: "storybook-builder-parcel", - renderer: "@storybook/react", -}; diff --git a/packages/dev/storybook-react-parcel/preset.mjs b/packages/dev/storybook-react-parcel/preset.mjs new file mode 100644 index 00000000000..6de2bc50c36 --- /dev/null +++ b/packages/dev/storybook-react-parcel/preset.mjs @@ -0,0 +1,9 @@ +import { fileURLToPath } from "node:url"; + +// Storybook 10 requires core.builder to be a fully resolved entry-point path, +// not a package name or directory. See MIGRATION.md §"`core.builder` configuration +// must be a fully resolved path". +export const core = { + builder: fileURLToPath(import.meta.resolve("storybook-builder-parcel")), + renderer: "@storybook/react", +}; From e1a72ef3f1c46b43c01e85d1df92b317990fc709 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:47:55 +1000 Subject: [PATCH 06/30] docs(sb10): note why core.renderer stays bare (not path-resolved) --- packages/dev/storybook-react-parcel/preset.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/dev/storybook-react-parcel/preset.mjs b/packages/dev/storybook-react-parcel/preset.mjs index 6de2bc50c36..61b7f6510ef 100644 --- a/packages/dev/storybook-react-parcel/preset.mjs +++ b/packages/dev/storybook-react-parcel/preset.mjs @@ -5,5 +5,7 @@ import { fileURLToPath } from "node:url"; // must be a fully resolved path". export const core = { builder: fileURLToPath(import.meta.resolve("storybook-builder-parcel")), + // core.renderer has no path-resolution requirement in SB10; it stays as a bare + // package specifier and is resolved by Storybook's preset loader. renderer: "@storybook/react", }; From 1465235d1cc7dbdde821177a16ba45e748ed542e Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:50:17 +1000 Subject: [PATCH 07/30] chore(sb10): convert .storybook/main.js to ESM with resolved addon paths --- .storybook/main.js | 36 ------------------------------------ .storybook/main.mjs | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 36 deletions(-) delete mode 100644 .storybook/main.js create mode 100644 .storybook/main.mjs diff --git a/.storybook/main.js b/.storybook/main.js deleted file mode 100644 index 6d2ed3805fe..00000000000 --- a/.storybook/main.js +++ /dev/null @@ -1,36 +0,0 @@ - -module.exports = { - stories: [ - '../packages/@{react-aria,react-stately,spectrum-icons}/*/stories/*.stories.{js,jsx,ts,tsx}', - '../packages/@react-spectrum/!(s2)/stories/*.stories.{js,jsx,ts,tsx}', - '../packages/@adobe/react-spectrum/stories/*/*.stories.{js,jsx,ts,tsx}', - '../packages/react-aria/stories/*/*.stories.{js,jsx,ts,tsx}', - '../packages/react-stately/stories/*/*.stories.{js,jsx,ts,tsx}', - '../packages/react-aria-components/stories/*.stories.{js,jsx,ts,tsx}' - ], - - addons: [ - 'storybook/actions', - '@storybook/addon-a11y', - '@vueless/storybook-dark-mode', - './custom-addons/provider/register.js', - './custom-addons/descriptions/register.js', - './custom-addons/theme/register.js', - './custom-addons/strictmode/register.js', - './custom-addons/scrolling/register.js' - ], - - typescript: { - check: false, - reactDocgen: false - }, - - framework: { - name: 'storybook-react-parcel', - options: {} - }, - - core: { - disableWhatsNewNotifications: true - } -}; diff --git a/.storybook/main.mjs b/.storybook/main.mjs new file mode 100644 index 00000000000..bc346ded38d --- /dev/null +++ b/.storybook/main.mjs @@ -0,0 +1,24 @@ +import { fileURLToPath } from "node:url"; + +const localAddon = (rel) => fileURLToPath(import.meta.resolve(rel)); + +export default { + stories: [ + '../packages/@{react-aria,react-stately,spectrum-icons}/*/stories/*.stories.{js,jsx,ts,tsx}', + '../packages/@react-spectrum/!(s2)/stories/*.stories.{js,jsx,ts,tsx}', + '../packages/react-aria-components/stories/*.stories.{js,jsx,ts,tsx}' + ], + addons: [ + 'storybook/actions', + '@storybook/addon-a11y', + '@vueless/storybook-dark-mode', + localAddon('./custom-addons/provider/register.js'), + localAddon('./custom-addons/descriptions/register.js'), + localAddon('./custom-addons/theme/register.js'), + localAddon('./custom-addons/strictmode/register.js'), + localAddon('./custom-addons/scrolling/register.js'), + ], + typescript: { check: false, reactDocgen: false }, + framework: { name: 'storybook-react-parcel', options: {} }, + core: { disableWhatsNewNotifications: true }, +}; From ac4047576854d48ec53c7836427d5a4be9cac712 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:58:25 +1000 Subject: [PATCH 08/30] fix(sb10): restore story globs dropped during main.mjs conversion --- .storybook/main.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.storybook/main.mjs b/.storybook/main.mjs index bc346ded38d..37a605db7d5 100644 --- a/.storybook/main.mjs +++ b/.storybook/main.mjs @@ -6,6 +6,9 @@ export default { stories: [ '../packages/@{react-aria,react-stately,spectrum-icons}/*/stories/*.stories.{js,jsx,ts,tsx}', '../packages/@react-spectrum/!(s2)/stories/*.stories.{js,jsx,ts,tsx}', + '../packages/@adobe/react-spectrum/stories/*/*.stories.{js,jsx,ts,tsx}', + '../packages/react-aria/stories/*/*.stories.{js,jsx,ts,tsx}', + '../packages/react-stately/stories/*/*.stories.{js,jsx,ts,tsx}', '../packages/react-aria-components/stories/*.stories.{js,jsx,ts,tsx}' ], addons: [ From 7aca8ea36245483e1880f44d05215a7795fce7a3 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 15:59:59 +1000 Subject: [PATCH 09/30] chore(sb10): resolve local addon path in .storybook-s2/main.ts --- .storybook-s2/main.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.storybook-s2/main.ts b/.storybook-s2/main.ts index 58c91a0079c..fcd3db01e65 100644 --- a/.storybook-s2/main.ts +++ b/.storybook-s2/main.ts @@ -1,4 +1,5 @@ import type { StorybookConfig } from "storybook/internal/types"; +import { fileURLToPath } from "node:url"; // const excludedProps = new Set([ // 'id', @@ -14,13 +15,15 @@ import type { StorybookConfig } from "storybook/internal/types"; // 'onInput' // ]); +const localAddon = (rel: string) => fileURLToPath(import.meta.resolve(rel)); + const config: StorybookConfig = { stories: [ './docs/*.mdx', "../packages/@react-spectrum/s2/stories/*.stories.@(js|jsx|mjs|ts|tsx)", ], addons: [ - './custom-addons/provider/preset.ts', + localAddon('./custom-addons/provider/preset.ts'), // "@storybook/addon-styling-webpack", "@storybook/addon-docs", "@vueless/storybook-dark-mode", From a0922847238e754652ccc8706a6cddce2ea52c44 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 16:01:54 +1000 Subject: [PATCH 10/30] chore(sb10): convert .chromatic and .chromatic-fc main to ESM Co-Authored-By: Claude Sonnet 4.6 --- .chromatic-fc/main.js | 19 ------------------- .chromatic-fc/main.mjs | 18 ++++++++++++++++++ .chromatic/main.js | 19 ------------------- .chromatic/main.mjs | 18 ++++++++++++++++++ 4 files changed, 36 insertions(+), 38 deletions(-) delete mode 100644 .chromatic-fc/main.js create mode 100644 .chromatic-fc/main.mjs delete mode 100644 .chromatic/main.js create mode 100644 .chromatic/main.mjs diff --git a/.chromatic-fc/main.js b/.chromatic-fc/main.js deleted file mode 100644 index 3e18290db84..00000000000 --- a/.chromatic-fc/main.js +++ /dev/null @@ -1,19 +0,0 @@ - -module.exports = { - framework: { - name: "storybook-react-parcel", - options: {}, - }, - stories: [ - '../packages/**/chromatic-fc/**/*.stories.{js,jsx,ts,tsx}', - '../packages/@react-spectrum/s2/chromatic/*.stories.@(js|jsx|mjs|ts|tsx)' - ], - addons: process.env.NODE_ENV === 'production' ? [] : [ - 'storybook/actions', - '@storybook/addon-a11y' - ], - typescript: { - check: false, - reactDocgen: false - } -}; diff --git a/.chromatic-fc/main.mjs b/.chromatic-fc/main.mjs new file mode 100644 index 00000000000..3a9ab86048c --- /dev/null +++ b/.chromatic-fc/main.mjs @@ -0,0 +1,18 @@ + +import { fileURLToPath } from "node:url"; + +const localAddon = (rel) => fileURLToPath(import.meta.resolve(rel)); + +export default { + stories: [ + '../packages/**/chromatic-fc/**/*.stories.{js,jsx,ts,tsx}', + '../packages/@react-spectrum/s2/chromatic/*.stories.@(js|jsx|mjs|ts|tsx)' + ], + addons: process.env.NODE_ENV === 'production' ? [] : [ + 'storybook/actions', + '@storybook/addon-a11y' + ], + typescript: { check: false, reactDocgen: false }, + framework: { name: 'storybook-react-parcel', options: {} }, + core: { disableWhatsNewNotifications: true }, +}; diff --git a/.chromatic/main.js b/.chromatic/main.js deleted file mode 100644 index a9f9a574e15..00000000000 --- a/.chromatic/main.js +++ /dev/null @@ -1,19 +0,0 @@ - -module.exports = { - framework: { - name: "storybook-react-parcel", - options: {}, - }, - stories: [ - '../packages/**/chromatic/**/*.stories.@(js|jsx|ts|tsx)', - '../packages/@react-spectrum/s2/chromatic/*.stories.@(js|jsx|mjs|ts|tsx)' - ], - addons: process.env.NODE_ENV === 'production' ? [] : [ - 'storybook/actions', - '@storybook/addon-a11y' - ], - typescript: { - check: false, - reactDocgen: false - } -}; diff --git a/.chromatic/main.mjs b/.chromatic/main.mjs new file mode 100644 index 00000000000..b7e5186bdc5 --- /dev/null +++ b/.chromatic/main.mjs @@ -0,0 +1,18 @@ + +import { fileURLToPath } from "node:url"; + +const localAddon = (rel) => fileURLToPath(import.meta.resolve(rel)); + +export default { + stories: [ + '../packages/**/chromatic/**/*.stories.@(js|jsx|ts|tsx)', + '../packages/@react-spectrum/s2/chromatic/*.stories.@(js|jsx|mjs|ts|tsx)' + ], + addons: process.env.NODE_ENV === 'production' ? [] : [ + 'storybook/actions', + '@storybook/addon-a11y' + ], + typescript: { check: false, reactDocgen: false }, + framework: { name: 'storybook-react-parcel', options: {} }, + core: { disableWhatsNewNotifications: true }, +}; From ccceb0d6b07db81a70604963c2c96b384fe4e84a Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 16:05:40 +1000 Subject: [PATCH 11/30] fix(sb10): emit valid ESM importers map in preview generator Co-Authored-By: Claude Sonnet 4.6 --- .../gen-preview-modern.mjs | 101 ++++++++---------- 1 file changed, 44 insertions(+), 57 deletions(-) diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index b6b2452cf7c..70d70dd7bfa 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -121,44 +121,40 @@ async function generatePreviewModern( ), ].filter(Boolean); + const importFnCode = await generateImportFnScriptCode(options, generatedEntries); + /** * Main preview module (loaded by preview.js bootstrap via dynamic import). * Addon setup first, then runtime/setup(). See storybook builder-vite codegen-modern-iframe-script.ts */ const code = ` - import './setup-addons.js'; - import { setup } from 'storybook/internal/preview/runtime'; - setup(); - - import { composeConfigs, PreviewWeb } from 'storybook/internal/preview-api'; - import { isPreview } from 'storybook/internal/csf'; - - ${await generateImportFnScriptCode(options, generatedEntries)} - - const getProjectAnnotations = async () => { - const configs = await Promise.all([${relativePreviewAnnotations - .map((previewAnnotation) => `import('${previewAnnotation}')`) - .join(",\n")}]) - return composeConfigs(configs); - } - +${importFnCode.imports} +import './setup-addons.js'; +import { setup } from 'storybook/internal/preview/runtime'; +import { composeConfigs, PreviewWeb } from 'storybook/internal/preview-api'; +import { isPreview } from 'storybook/internal/csf'; - window.__STORYBOOK_PREVIEW__ = window.__STORYBOOK_PREVIEW__ || new PreviewWeb(importFn, getProjectAnnotations); +setup(); - window.__STORYBOOK_STORY_STORE__ = window.__STORYBOOK_STORY_STORE__ || window.__STORYBOOK_PREVIEW__.storyStore; +${importFnCode.body} +const getProjectAnnotations = async () => { + const configs = await Promise.all([${relativePreviewAnnotations + .map((previewAnnotation) => `import('${previewAnnotation}')`) + .join(",\n")}]); + return composeConfigs(configs); +}; - if (import.meta.hot) { - import.meta.hot.hot.accept(() => { - // importFn has changed so we need to patch the new one in - window.__STORYBOOK_PREVIEW__.onStoriesChanged({ importFn }); +window.__STORYBOOK_PREVIEW__ = window.__STORYBOOK_PREVIEW__ || new PreviewWeb(importFn, getProjectAnnotations); +window.__STORYBOOK_STORY_STORE__ = window.__STORYBOOK_STORY_STORE__ || window.__STORYBOOK_PREVIEW__.storyStore; - // getProjectAnnotations has changed so we need to patch the new one in - window.__STORYBOOK_PREVIEW__.onGetProjectAnnotationsChanged({ getProjectAnnotations }); - }); - } - `; - // ${generateHMRHandler(frameworkName)}; +if (import.meta.hot) { + import.meta.hot.accept(() => { + window.__STORYBOOK_PREVIEW__.onStoriesChanged({ importFn }); + window.__STORYBOOK_PREVIEW__.onGetProjectAnnotationsChanged({ getProjectAnnotations }); + }); +} +`; return code; } @@ -174,7 +170,7 @@ function processPreviewAnnotation(annotationPath) { } // resolve relative paths into absolute paths, but don't resolve "bare" imports if (annotationPath?.startsWith("./") || annotationPath?.startsWith("../")) { - return /*slash*/ annotationPath.resolve(annotationPath); + return annotationPath; } // This should not occur, since we use `.filter(Boolean)` prior to // calling this function, but this makes typescript happy @@ -197,43 +193,34 @@ function processPreviewAnnotation(annotationPath) { * This file is largely based on https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/lib/core-common/src/utils/to-importFn.ts */ -// TODO(Task 3.1): toImportFn, generateImportFnScriptCode, and listStories are -// INTENTIONALLY BROKEN at this stage. toImportFn emits `...import('story:...')` -// which spreads a Promise into an object literal and yields an empty importers -// map. listStories returns glob patterns rather than resolved file paths. Both -// are rewritten in Task 3.1 to use static top-level imports plus a proper glob -// expansion. Do not attempt to "fix" these in isolation — see the plan at -// docs/superpowers/plans/2026-04-24-storybook-10-migration.md Phase 3. - /** - * This function takes an array of stories and creates a mapping between the stories' relative paths - * to the working directory and their dynamic imports. The import is done in an asynchronous function - * to delay loading. It then creates a function, `importFn(path)`, which resolves a path to an import - * function and this is called by Storybook to fetch a story dynamically when needed. - * @param stories An array of absolute story paths. + * Emit top-level static imports for each story glob resolved via the `story:` + * pipeline. Each virtual module's default export is a map of + * `{ relativePathFromCwd: () => import(storyFile) }`. Merge those maps into + * a single importers object and expose importFn(path). */ async function toImportFn(stories, generatedEntries) { - const entries = stories.map(glob => { - return `...import(${JSON.stringify('story:' + btoa(relativePath(generatedEntries, glob)))})`; + const importLines = stories.map((glob, i) => { + const specifier = 'story:' + btoa(relativePath(generatedEntries, glob)); + return `import stories_${i} from ${JSON.stringify(specifier)};`; }); + const mergeArgs = stories.map((_, i) => `stories_${i}`).join(', '); - return ` - const importers = { - ${entries.join(',\n')} - }; + return { + imports: importLines.join('\n'), + body: ` +const importers = Object.assign({}, ${mergeArgs}); - async function importFn(path) { - return importers[path](); - } - `; +async function importFn(path) { + return importers[path](); +} +`.trim(), + }; } async function generateImportFnScriptCode(options, generatedEntries) { - // First we need to get an array of stories and their absolute paths. - let stories = await listStories(options); - - // We can then call toImportFn to create a function that can be used to load each story dynamically. - return (await toImportFn(stories, generatedEntries)).trim(); + const stories = await listStories(options); + return toImportFn(stories, generatedEntries); } async function listStories(options) { From 354adbee2524c2b273fde1359899b87ca53038c4 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 16:38:41 +1000 Subject: [PATCH 12/30] =?UTF-8?q?fix(sb10):=20rename=20register.js=20?= =?UTF-8?q?=E2=86=92=20manager.js=20for=20local=20addons,=20point=20main.m?= =?UTF-8?q?js=20at=20folders?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Storybook 10's preset loader tries to import() any addon path that doesn't end in "preset" as a Node.js module. The custom-addons register.js files contain JSX and cannot be parsed by Node.js, causing CriticalPresetLoadError on startup. Fix: rename each register.js to manager.js so Storybook's resolveAddonName() finds a *manager* file and returns type:"virtual" with managerEntries — meaning Parcel bundles the file rather than Node.js importing it directly. Update main.mjs to reference the addon directories instead of the register.js paths. Co-Authored-By: Claude Sonnet 4.6 --- .../descriptions/{register.js => manager.js} | 0 .../custom-addons/provider/{register.js => manager.js} | 0 .../scrolling/{register.js => manager.js} | 0 .../strictmode/{register.js => manager.js} | 0 .../custom-addons/theme/{register.js => manager.js} | 0 .storybook/main.mjs | 10 +++++----- 6 files changed, 5 insertions(+), 5 deletions(-) rename .storybook/custom-addons/descriptions/{register.js => manager.js} (100%) rename .storybook/custom-addons/provider/{register.js => manager.js} (100%) rename .storybook/custom-addons/scrolling/{register.js => manager.js} (100%) rename .storybook/custom-addons/strictmode/{register.js => manager.js} (100%) rename .storybook/custom-addons/theme/{register.js => manager.js} (100%) diff --git a/.storybook/custom-addons/descriptions/register.js b/.storybook/custom-addons/descriptions/manager.js similarity index 100% rename from .storybook/custom-addons/descriptions/register.js rename to .storybook/custom-addons/descriptions/manager.js diff --git a/.storybook/custom-addons/provider/register.js b/.storybook/custom-addons/provider/manager.js similarity index 100% rename from .storybook/custom-addons/provider/register.js rename to .storybook/custom-addons/provider/manager.js diff --git a/.storybook/custom-addons/scrolling/register.js b/.storybook/custom-addons/scrolling/manager.js similarity index 100% rename from .storybook/custom-addons/scrolling/register.js rename to .storybook/custom-addons/scrolling/manager.js diff --git a/.storybook/custom-addons/strictmode/register.js b/.storybook/custom-addons/strictmode/manager.js similarity index 100% rename from .storybook/custom-addons/strictmode/register.js rename to .storybook/custom-addons/strictmode/manager.js diff --git a/.storybook/custom-addons/theme/register.js b/.storybook/custom-addons/theme/manager.js similarity index 100% rename from .storybook/custom-addons/theme/register.js rename to .storybook/custom-addons/theme/manager.js diff --git a/.storybook/main.mjs b/.storybook/main.mjs index 37a605db7d5..166c3ef47e5 100644 --- a/.storybook/main.mjs +++ b/.storybook/main.mjs @@ -15,11 +15,11 @@ export default { 'storybook/actions', '@storybook/addon-a11y', '@vueless/storybook-dark-mode', - localAddon('./custom-addons/provider/register.js'), - localAddon('./custom-addons/descriptions/register.js'), - localAddon('./custom-addons/theme/register.js'), - localAddon('./custom-addons/strictmode/register.js'), - localAddon('./custom-addons/scrolling/register.js'), + localAddon('./custom-addons/provider'), + localAddon('./custom-addons/descriptions'), + localAddon('./custom-addons/theme'), + localAddon('./custom-addons/strictmode'), + localAddon('./custom-addons/scrolling'), ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, From deaa652d2106b561a72d9d74519a8f6d50e89102 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 16:45:13 +1000 Subject: [PATCH 13/30] fix(sb10): add missing useEffect deps and guard select value in S2 provider addon Co-Authored-By: Claude Sonnet 4.6 --- .storybook-s2/custom-addons/provider/register.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.storybook-s2/custom-addons/provider/register.tsx b/.storybook-s2/custom-addons/provider/register.tsx index e334a7ad444..b06338db428 100644 --- a/.storybook-s2/custom-addons/provider/register.tsx +++ b/.storybook-s2/custom-addons/provider/register.tsx @@ -4,8 +4,9 @@ import {locales} from '../../constants'; import React, {useEffect, useState} from 'react'; function ProviderFieldSetter({api}) { - let localeParam = api.getQueryParam('providerSwitcher-locale') || undefined; - let [values, setValues] = useState({locale: localeParam}); + let [values, setValues] = useState(() => ({ + locale: api.getQueryParam('providerSwitcher-locale') || undefined, + })); let channel = addons.getChannel(); let onLocaleChange = (e) => { let newValue = e.target.value || undefined; @@ -23,19 +24,19 @@ function ProviderFieldSetter({api}) { return () => { channel.removeListener('rsp/ready-for-update', storySwapped); }; - }); + }, [values, channel]); useEffect(() => { api.setQueryParams({ 'providerSwitcher-locale': values.locale || '' }); - }); + }, [api, values.locale]); return (
- {locales.map(locale => )}
From 84b4608ca73ab80f7fb0cb4ba5a5885a12a1d1ef Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 17:20:35 +1000 Subject: [PATCH 14/30] chore: normalize storybook-react-parcel package.json formatting (yarn reformat) --- packages/dev/storybook-react-parcel/package.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/dev/storybook-react-parcel/package.json b/packages/dev/storybook-react-parcel/package.json index 67eee181ed8..92a79bc13f3 100644 --- a/packages/dev/storybook-react-parcel/package.json +++ b/packages/dev/storybook-react-parcel/package.json @@ -4,7 +4,10 @@ "private": true, "type": "module", "main": "./preset.mjs", - "exports": { ".": "./preset.mjs", "./preset": "./preset.mjs" }, + "exports": { + ".": "./preset.mjs", + "./preset": "./preset.mjs" + }, "dependencies": { "@storybook/react": "^10.0.0", "storybook-builder-parcel": ">=0.0.1" @@ -19,5 +22,8 @@ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "storybook": "^10.0.0" }, - "scripts": { "build": "true", "clean": "true" } + "scripts": { + "build": "true", + "clean": "true" + } } From 3deb9286ef330e8e593e007e82b9978773e7e14d Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 17:21:04 +1000 Subject: [PATCH 15/30] chore(sb10): remove dead localAddon helpers and unused isPreview import --- .chromatic-fc/main.mjs | 4 ---- .chromatic/main.mjs | 4 ---- packages/dev/storybook-builder-parcel/gen-preview-modern.mjs | 1 - 3 files changed, 9 deletions(-) diff --git a/.chromatic-fc/main.mjs b/.chromatic-fc/main.mjs index 3a9ab86048c..b1acddc71bb 100644 --- a/.chromatic-fc/main.mjs +++ b/.chromatic-fc/main.mjs @@ -1,8 +1,4 @@ -import { fileURLToPath } from "node:url"; - -const localAddon = (rel) => fileURLToPath(import.meta.resolve(rel)); - export default { stories: [ '../packages/**/chromatic-fc/**/*.stories.{js,jsx,ts,tsx}', diff --git a/.chromatic/main.mjs b/.chromatic/main.mjs index b7e5186bdc5..83881ce798c 100644 --- a/.chromatic/main.mjs +++ b/.chromatic/main.mjs @@ -1,8 +1,4 @@ -import { fileURLToPath } from "node:url"; - -const localAddon = (rel) => fileURLToPath(import.meta.resolve(rel)); - export default { stories: [ '../packages/**/chromatic/**/*.stories.@(js|jsx|ts|tsx)', diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index 70d70dd7bfa..db24ec2bab9 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -132,7 +132,6 @@ ${importFnCode.imports} import './setup-addons.js'; import { setup } from 'storybook/internal/preview/runtime'; import { composeConfigs, PreviewWeb } from 'storybook/internal/preview-api'; -import { isPreview } from 'storybook/internal/csf'; setup(); From f3cd21454d581741adea8192a1c8a4b246dcff17 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 24 Apr 2026 18:38:49 +1000 Subject: [PATCH 16/30] fix(sb10): disable FEATURES.highlight to avoid Parcel CJS circular-dep crash Parcel bundles storybook/internal/preview-api and chunk-SZQXB3JV.js into a CJS bundle with a circular dependency. During initialization, the chunk's top-level highlight/preview.ts runs `(_previewApi.addons)?.ready` before the preview-api chunk's lazy getter has resolved its internal chunk reference. Result: `TypeError: Cannot read properties of undefined (reading 'addons')` fires as an unhandled promise rejection and the preview never initializes. The line is guarded by `globalThis?.FEATURES?.highlight && ...` so setting features.highlight=false short-circuits the buggy codepath. Trade-off: disables the highlight feature used by addon-a11y for accessibility-violation visualization. This is a workaround; the underlying Parcel + SB10 bundling interaction should be investigated as a follow-up. --- .chromatic-fc/main.mjs | 1 + .chromatic/main.mjs | 1 + .storybook-s2/main.ts | 1 + .storybook/main.mjs | 1 + 4 files changed, 4 insertions(+) diff --git a/.chromatic-fc/main.mjs b/.chromatic-fc/main.mjs index b1acddc71bb..f4115246010 100644 --- a/.chromatic-fc/main.mjs +++ b/.chromatic-fc/main.mjs @@ -10,5 +10,6 @@ export default { ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, + features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true }, }; diff --git a/.chromatic/main.mjs b/.chromatic/main.mjs index 83881ce798c..40ac6b9e6a3 100644 --- a/.chromatic/main.mjs +++ b/.chromatic/main.mjs @@ -10,5 +10,6 @@ export default { ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, + features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true }, }; diff --git a/.storybook-s2/main.ts b/.storybook-s2/main.ts index fcd3db01e65..cdc30b2b545 100644 --- a/.storybook-s2/main.ts +++ b/.storybook-s2/main.ts @@ -33,6 +33,7 @@ const config: StorybookConfig = { name: "storybook-react-parcel", options: {}, }, + features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true } diff --git a/.storybook/main.mjs b/.storybook/main.mjs index 166c3ef47e5..24dd8db3e21 100644 --- a/.storybook/main.mjs +++ b/.storybook/main.mjs @@ -23,5 +23,6 @@ export default { ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, + features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true }, }; From 0a49c8325975ea1df8c5fafecc638fec814a317d Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 15:29:28 +1000 Subject: [PATCH 17/30] fix(sb10): patch preview-api lazy getters to use deferred init; restore FEATURES.highlight Root-cause fix replacing the previous symptom-workaround. Storybook's dist/csf/index.js has a circular dependency with dist/_browser-chunks/chunk-SZQXB3JV.js and dist/preview-api/index.js. When Parcel's CJS bundler initialises these modules, csf/index.js runs its highlight-addon preview.ts code (line 916) before the storybook/preview-api module's 'addons' export is fully resolved. The resulting getter access throws TypeError during the circular-dep init window. The fix defers the highlight initialisation one microtask tick using Promise.resolve().then(), wrapped in try/catch for belt-and-braces safety. By the time the callback fires all circular deps are resolved and 'addons' holds the live AddonStore instance. Highlights initialise correctly. Patch is applied via patch-package (already in postinstall). Restores FEATURES.highlight to its default true, preserving accessibility- violation visualisation that addon-a11y depends on. Co-Authored-By: Claude Sonnet 4.6 --- .chromatic-fc/main.mjs | 1 - .chromatic/main.mjs | 1 - .storybook-s2/main.ts | 1 - .storybook/main.mjs | 1 - patches/storybook+10.3.5.patch | 16 ++++++++++++++++ 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 patches/storybook+10.3.5.patch diff --git a/.chromatic-fc/main.mjs b/.chromatic-fc/main.mjs index f4115246010..b1acddc71bb 100644 --- a/.chromatic-fc/main.mjs +++ b/.chromatic-fc/main.mjs @@ -10,6 +10,5 @@ export default { ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, - features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true }, }; diff --git a/.chromatic/main.mjs b/.chromatic/main.mjs index 40ac6b9e6a3..83881ce798c 100644 --- a/.chromatic/main.mjs +++ b/.chromatic/main.mjs @@ -10,6 +10,5 @@ export default { ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, - features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true }, }; diff --git a/.storybook-s2/main.ts b/.storybook-s2/main.ts index cdc30b2b545..fcd3db01e65 100644 --- a/.storybook-s2/main.ts +++ b/.storybook-s2/main.ts @@ -33,7 +33,6 @@ const config: StorybookConfig = { name: "storybook-react-parcel", options: {}, }, - features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true } diff --git a/.storybook/main.mjs b/.storybook/main.mjs index 24dd8db3e21..166c3ef47e5 100644 --- a/.storybook/main.mjs +++ b/.storybook/main.mjs @@ -23,6 +23,5 @@ export default { ], typescript: { check: false, reactDocgen: false }, framework: { name: 'storybook-react-parcel', options: {} }, - features: { highlight: false }, // workaround: avoids circular-dep crash in Parcel-bundled preview core: { disableWhatsNewNotifications: true }, }; diff --git a/patches/storybook+10.3.5.patch b/patches/storybook+10.3.5.patch new file mode 100644 index 00000000000..3be4d80b862 --- /dev/null +++ b/patches/storybook+10.3.5.patch @@ -0,0 +1,16 @@ +diff --git a/node_modules/storybook/dist/csf/index.js b/node_modules/storybook/dist/csf/index.js +index 1234567..abcdefg 100644 +--- a/node_modules/storybook/dist/csf/index.js ++++ b/node_modules/storybook/dist/csf/index.js +@@ -913,7 +913,10 @@ var useHighlights = (channel) => { + }; + + // src/highlight/preview.ts +-globalThis?.FEATURES?.highlight && addons?.ready && addons.ready().then(useHighlights); ++// PATCHED: defer past Parcel CJS circular-dep init so addons getter never throws ++globalThis?.FEATURES?.highlight && Promise.resolve().then(() => { ++ try { addons?.ready && addons.ready().then(useHighlights); } catch (e) {} ++}); + var preview_default4 = () => definePreviewAddon5({}); + + // src/measure/preview.ts From 346d234ff1db97f01db580b9b5075e7d6792fc50 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 16:56:09 +1000 Subject: [PATCH 18/30] feat(parcel-resolver-storybook): externalize storybook runtime modules to globals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Match upstream Storybook 10 builders (@storybook/builder-vite, @storybook/builder-webpack5) by externalizing every module key in storybook/internal/preview/globals.js's globalsNameReferenceMap. For each specifier, the resolver returns a synthetic ESM cache file at node_modules/.cache/sb-parcel-externals/.js with shape: const { addons, PreviewWeb, ... } = globalThis.__STORYBOOK_MODULE_*; export { addons, PreviewWeb, ... }; export default globalThis.__STORYBOOK_MODULE_*; The runtime bundle (storybook/internal/preview/runtime) populates these globals via its top-level setup() side effect; once Task 1.2 hoists the runtime import, externalized modules resolve to live bindings on the already-populated globals — eliminating the CJS circular-dep that the node_modules patch currently masks. This task adds the resolver only; preview-entry generator + iframe template alignment follow in Tasks 1.2 and 1.3, after which Task 1.4 removes the patch. --- .../StorybookResolver.ts | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts index ee4140d3f3a..f37572badf0 100644 --- a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts +++ b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts @@ -1,4 +1,6 @@ import path from 'path'; +import fs from 'fs'; +import { createRequire } from 'module'; import { Resolver } from "@parcel/plugin"; const reactVersion = require("react-dom/package.json").version; import { default as NodeResolver } from "@parcel/node-resolver-core"; @@ -7,8 +9,130 @@ import { isGlob, glob, normalizeSeparators, relativePath } from '@parcel/utils'; const REACT_MAJOR_VERSION = parseInt(reactVersion.split('.')[0], 10); +// --- Storybook globals externals (Approach B: codegen-time enumeration) --- +// Match upstream Vite's behavior: at resolver-startup, read storybook's +// `globalsNameReferenceMap` from `node_modules/storybook/dist/preview/globals.js`, +// then for each (specifier -> globalName) pair generate a synthetic ESM module +// that re-exports the named bindings from `globalThis.__STORYBOOK_MODULE_*__`. +// The synthetic file is written once to `node_modules/.cache/sb-parcel-externals/` +// so it is visible in the network tab and is re-used across resolve() calls. + +const _require = createRequire(__filename); + +interface ExternalEntry { + filePath: string; + // Whether we used the Approach B (named re-export) or Approach A (CJS interop) fallback + approach: 'B' | 'A'; +} + +function buildExternalsCache(): Record { + const result: Record = {}; + const cacheDir = path.join( + _require.resolve('storybook/package.json'), + '..', '..', '.cache', 'sb-parcel-externals' + ); + fs.mkdirSync(cacheDir, { recursive: true }); + + // Read storybook's canonical map at startup; do not hardcode. + let globalsNameReferenceMap: Record; + try { + const globalsModulePath = _require.resolve('storybook/internal/preview/globals'); + // Use dynamic import via createRequire-style; storybook ships ESM here so + // fall back to reading the JS source if require() can't load ESM. + try { + const mod = _require(globalsModulePath); + globalsNameReferenceMap = mod.globalsNameReferenceMap; + } catch { + const src = fs.readFileSync(globalsModulePath, 'utf8'); + // Match the object literal between `var globalsNameReferenceMap = {` and `}` + const m = src.match(/globalsNameReferenceMap\s*=\s*(\{[\s\S]*?\})\s*,/); + if (!m) throw new Error('Could not parse globalsNameReferenceMap from ' + globalsModulePath); + // Parse it as JSON-ish (keys are quoted strings, values are quoted strings, + // but there's a trailing comment line). Strip line comments first. + const cleaned = m[1].replace(/\/\/.*$/gm, '').replace(/,\s*\}/, '}'); + // eslint-disable-next-line no-new-func + globalsNameReferenceMap = (new Function('return ' + cleaned))(); + } + } catch (e) { + throw new Error( + `[parcel-resolver-storybook] Failed to load storybook globalsNameReferenceMap: ${(e as Error).message}` + ); + } + + for (const [specifier, globalName] of Object.entries(globalsNameReferenceMap)) { + const safeKey = specifier.replace(/[\/@]/g, '_'); + const filePath = path.join(cacheDir, `${safeKey}.js`); + + // Hardcode @storybook/global since its only export is `global`. + if (specifier === '@storybook/global') { + const code = + `// Generated by @parcel/resolver-storybook\n` + + `// Re-exports ${specifier} from globalThis.${globalName}\n` + + `const { global } = globalThis.${globalName};\n` + + `export { global };\n` + + `export default globalThis.${globalName};\n`; + fs.writeFileSync(filePath, code); + result[specifier] = { filePath, approach: 'B' }; + continue; + } + + // Approach B: enumerate named exports via require() and codegen + // a `const { ... } = globalThis.X; export { ... };` synthetic module. + let namedExports: string[] | null = null; + try { + const mod = _require(specifier); + if (mod && typeof mod === 'object') { + // Filter out 'default' and '__esModule' (CJS interop marker that some + // bundles attach as an enumerable own property). + namedExports = Object.keys(mod).filter(k => k !== 'default' && k !== '__esModule'); + } + } catch { + namedExports = null; + } + + if (namedExports && namedExports.length > 0) { + // Filter out reserved/invalid identifiers just in case + const valid = namedExports.filter(n => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(n)); + const list = valid.join(', '); + const code = + `// Generated by @parcel/resolver-storybook\n` + + `// Re-exports ${specifier} from globalThis.${globalName}\n` + + `const { ${list} } = globalThis.${globalName};\n` + + `export { ${list} };\n` + + `export default globalThis.${globalName};\n`; + fs.writeFileSync(filePath, code); + result[specifier] = { filePath, approach: 'B' }; + } else { + // Approach A fallback: emit CJS interop. Used when require() couldn't + // enumerate the module (e.g. ESM-only with no enumerable exports via require). + const code = + `// Generated by @parcel/resolver-storybook (Approach A fallback)\n` + + `// Could not enumerate named exports for ${specifier}; using CJS interop.\n` + + `module.exports = globalThis.${globalName};\n`; + fs.writeFileSync(filePath, code); + result[specifier] = { filePath, approach: 'A' }; + } + } + + return result; +} + +// Generate cache files ONCE at module load (resolver-instance creation). +const STORYBOOK_EXTERNALS = buildExternalsCache(); + module.exports = new Resolver({ async resolve({ dependency, options, specifier, pipeline, logger }) { + // Storybook globals: externalize runtime modules to globalThis.__STORYBOOK_MODULE_*__ + // Runs before the other branches when using the default pipeline. + if (pipeline == null && Object.prototype.hasOwnProperty.call(STORYBOOK_EXTERNALS, specifier)) { + const entry = STORYBOOK_EXTERNALS[specifier]; + return { + filePath: entry.filePath, + priority: 'sync', + pipeline: null, + }; + } + // Workaround for interop issue if (specifier === "react-dom/client" && REACT_MAJOR_VERSION < 18) { return { From 68dee0cec22742e2b60e29facbf51253b9ba2751 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 17:24:51 +1000 Subject: [PATCH 19/30] fix(storybook-builder-parcel): hoist runtime import, use public preview-api path Move `import { setup } from 'storybook/internal/preview/runtime'` to be the first import in the generated preview-main.js so runtime.js's top-level setup() call populates __STORYBOOK_MODULE_* globals before setup-addons.js (or any other externalized specifier) evaluates and tries to destructure those globals. Also switch `from 'storybook/internal/preview-api'` to the public `from 'storybook/preview-api'` to match the externalize map and upstream Vite/webpack5 ordering. Co-Authored-By: Claude Sonnet 4.6 --- .../storybook-builder-parcel/gen-preview-modern.mjs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index db24ec2bab9..ed858bcd8c7 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -125,16 +125,20 @@ async function generatePreviewModern( /** * Main preview module (loaded by preview.js bootstrap via dynamic import). - * Addon setup first, then runtime/setup(). See storybook builder-vite codegen-modern-iframe-script.ts + * runtime MUST be the first import so its top-level setup() call populates + * __STORYBOOK_MODULE_* globals before setup-addons.js (or any other externalized + * specifier) evaluates. Matches upstream Vite/webpack5 ordering. + * See storybook builder-vite codegen-modern-iframe-script.ts */ const code = ` -${importFnCode.imports} -import './setup-addons.js'; import { setup } from 'storybook/internal/preview/runtime'; -import { composeConfigs, PreviewWeb } from 'storybook/internal/preview-api'; +import './setup-addons.js'; setup(); +${importFnCode.imports} +import { composeConfigs, PreviewWeb } from 'storybook/preview-api'; + ${importFnCode.body} const getProjectAnnotations = async () => { From edbfecaa8da7ff7e390a15cd19bd49e20f51917e Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 17:52:24 +1000 Subject: [PATCH 20/30] refactor(storybook-builder-parcel): align iframe & preview entry with upstream After externalizing storybook runtime modules (Task 1.1) and hoisting the runtime import (Task 1.2), runtime.js's setup() populates every __STORYBOOK_MODULE_* global plus __STORYBOOK_ADDONS_PREVIEW and __STORYBOOK_ADDONS_CHANNEL__. Our hand-rolled init-addons IIFE and preview.js bootstrap entry exist only to mask the cycle that those populate-the-globals tasks now resolve at the source. - iframe.html: drop the inline init IIFE, add TAGS_OPTIONS / OTHER_GLOBALS placeholders, set window.module=undefined and window.global=window (matches upstream Vite); script tag now points at preview-main.js - gen-preview-modern.mjs: remove generatePreviewBootstrap and generateInitAddonsGlobal helpers and their exports - preset.mjs: stop emitting preview.js and init-addons-global.js to generated-entries; only setup-addons.js and preview-main.js are needed The patch (patches/storybook+10.3.5.patch) is still in place and removed in Task 1.4. --- .../gen-iframe-modern.mjs | 27 +++++------- .../gen-preview-modern.mjs | 44 ++----------------- .../dev/storybook-builder-parcel/preset.mjs | 10 ----- 3 files changed, 15 insertions(+), 66 deletions(-) diff --git a/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs b/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs index 80b76d0a3a9..04e8d3c3101 100644 --- a/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs @@ -14,7 +14,15 @@ const TEMPLATE = ` window.FEATURES = '[FEATURES HERE]'; window.STORIES = '[STORIES HERE]'; window.DOCS_OPTIONS = '[DOCS_OPTIONS HERE]'; + window.TAGS_OPTIONS = '[TAGS_OPTIONS HERE]'; window.SERVER_CHANNEL_URL = '[SERVER_CHANNEL_URL HERE]'; + + ('[OTHER_GLOBALS HERE]'); + + // We do this so that "module && module.hot" etc. in Storybook source code + // doesn't fail (it will simply be disabled) + window.module = undefined; + window.global = window; @@ -22,21 +30,7 @@ const TEMPLATE = `
- - + `; @@ -48,6 +42,7 @@ export async function generateIframeModern(options) { const bodyHtmlSnippet = await presets.apply("previewBody"); const logLevel = await presets.apply("logLevel", undefined); const docsOptions = await presets.apply("docs"); + const tagsOptions = await presets.apply("tags", {}); const coreOptions = await presets.apply("core"); const stories = normalizeStories( @@ -70,7 +65,9 @@ export async function generateIframeModern(options) { .replace(`'[FEATURES HERE]'`, JSON.stringify(features || {})) .replace(`'[STORIES HERE]'`, JSON.stringify(stories || {})) .replace(`'[DOCS_OPTIONS HERE]'`, JSON.stringify(docsOptions || {})) + .replace(`'[TAGS_OPTIONS HERE]'`, JSON.stringify(tagsOptions || {})) .replace(`'[SERVER_CHANNEL_URL HERE]'`, JSON.stringify(serverChannelUrl)) + .replace(`'[OTHER_GLOBALS HERE]'`, `''`) .replace("", headHtmlSnippet || "") .replace("", bodyHtmlSnippet || ""); } diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index ed858bcd8c7..e1d2429e162 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -45,43 +45,6 @@ function toPackageExportSpecifier(barePath) { return normalized; } -/** - * Inline IIFE that sets __STORYBOOK_ADDONS_PREVIEW on globalThis. Run this as the - * first synchronous code in the preview entry so no Storybook chunk can run before it. - */ -function getInitAddonsGlobalIIFE() { - return `(function() { - var g = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : {}; - if (g.__STORYBOOK_ADDONS_PREVIEW) return; - var noop = function(){}; - var placeholderChannel = { on: noop, emit: noop, removeListener: noop, off: noop }; - g.__STORYBOOK_ADDONS_CHANNEL__ = placeholderChannel; - g.__STORYBOOK_ADDONS_PREVIEW = { - _channel: null, - setChannel: function(c){ this._channel = c; g.__STORYBOOK_ADDONS_CHANNEL__ = c; }, - getChannel: function(){ return this._channel || placeholderChannel; }, - ready: function(){ return Promise.resolve(this.getChannel()); }, - hasChannel: function(){ return !!this._channel; } - }; -})();`; -} - -/** - * Generate the preview entry bootstrap: runs init IIFE first, then dynamic-imports - * preview-main.js so __STORYBOOK_ADDONS_PREVIEW exists before any other module runs. - */ -function generatePreviewBootstrap() { - return getInitAddonsGlobalIIFE() + "\nimport('./preview-main.js');"; -} - -/** - * Generate a zero-dependency module that sets __STORYBOOK_ADDONS_PREVIEW (kept for - * backwards compatibility; bootstrap approach is preferred). - */ -function generateInitAddonsGlobal() { - return getInitAddonsGlobalIIFE(); -} - /** * Generate the addon setup module (like Vite's VIRTUAL_ADDON_SETUP_FILE). * Must be imported before the runtime so the channel and addons store exist @@ -124,9 +87,10 @@ async function generatePreviewModern( const importFnCode = await generateImportFnScriptCode(options, generatedEntries); /** - * Main preview module (loaded by preview.js bootstrap via dynamic import). + * Main preview module loaded directly by iframe.html as - - - - -
-
- - - -`; +const TEMPLATE_PATH = fileURLToPath(new URL("./templates/iframe.html", import.meta.url)); export async function generateIframeModern(options) { + const TEMPLATE = readFileSync(TEMPLATE_PATH, "utf8"); const { configType, features, presets, serverChannelUrl, title } = options; const frameworkOptions = await presets.apply("frameworkOptions"); const headHtmlSnippet = await presets.apply("previewHead"); diff --git a/packages/dev/storybook-builder-parcel/templates/iframe.html b/packages/dev/storybook-builder-parcel/templates/iframe.html new file mode 100644 index 00000000000..7c8985d3a8f --- /dev/null +++ b/packages/dev/storybook-builder-parcel/templates/iframe.html @@ -0,0 +1,33 @@ + + + + + <!-- [TITLE HERE] --> + + + + + + +
+
+ + + From bfd38dfdc71b40a82f3bd534521a36a2cbaf1084 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 18:34:18 +1000 Subject: [PATCH 24/30] chore(parcel-resolver-storybook): emit ESM for story: virtual modules --- packages/dev/parcel-resolver-storybook/StorybookResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts index f37572badf0..f3fb9d3217e 100644 --- a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts +++ b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts @@ -166,7 +166,7 @@ module.exports = new Resolver({ dir, 'stories.js' ), - code: `module.exports = {\n${results.join('\n')}\n};\n`, + code: `export default {\n${results.join('\n')}\n};\n`, invalidateOnFileCreate: [ {glob: normalized} ], From 5f3eb1cc89fdff10bc6b0d5ef6414dd76f2ca272 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 19:01:29 +1000 Subject: [PATCH 25/30] fix(sb10): wire dark/light mode switching in .storybook (v3/rac) preview The @vueless/storybook-dark-mode toolbar toggle was a no-op in the v3/rac Storybook because nothing in .storybook reacted to its DARK_MODE event. - preview.js: subscribe to DARK_MODE_EVENT_NAME on the addons channel and reflect the state on document.documentElement.dataset.colorScheme. Initial value reads from the addon's `sb-addon-themes-3` localStorage key so the first paint is correct (matches the .storybook-s2 pattern). - custom-addons/provider/index.js: consume useDarkMode() and feed isDark through to the React Spectrum Provider's `colorScheme` prop whenever the ProviderSwitcher dropdown is set to "Auto". An explicit dropdown choice still wins. --- .storybook/custom-addons/provider/index.js | 6 +++++- .storybook/preview.js | 25 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.storybook/custom-addons/provider/index.js b/.storybook/custom-addons/provider/index.js index fef66393200..9859e00acd2 100644 --- a/.storybook/custom-addons/provider/index.js +++ b/.storybook/custom-addons/provider/index.js @@ -1,6 +1,7 @@ import React, {useEffect, useState} from 'react'; import {addons} from 'storybook/preview-api'; import {makeDecorator} from 'storybook/preview-api'; +import {useDarkMode} from '@vueless/storybook-dark-mode'; import {Provider} from '@react-spectrum/provider'; import {expressThemes, themes, defaultTheme} from '../../constants'; @@ -17,10 +18,13 @@ function ProviderUpdater(props) { let expressParam = params.get("providerSwitcher-express") || undefined; let [expressValue, setExpress] = useState(expressParam === 'true'); let [storyReady, setStoryReady] = useState(window.parent === window || window.parent !== window.top); // reduce content flash because it takes a moment to get the provider details + let isDark = useDarkMode(); // Typically themes are provided with both light + dark, and both scales. // To build our selector to see all themes, we need to hack it a bit. let theme = (expressValue ? expressThemes : themes)[themeValue || 'light'] || defaultTheme; - let colorScheme = themeValue && themeValue.replace(/est$/, ''); + // When the providerSwitcher theme is set explicitly use it, otherwise follow + // the storybook-dark-mode toolbar toggle. + let colorScheme = themeValue ? themeValue.replace(/est$/, '') : (isDark ? 'dark' : 'light'); useEffect(() => { let channel = addons.getChannel(); let providerUpdate = (event) => { diff --git a/.storybook/preview.js b/.storybook/preview.js index ac74152dba0..a849ff52fb4 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,4 +1,6 @@ +import {addons} from 'storybook/preview-api'; import {configureActions} from 'storybook/actions'; +import {DARK_MODE_EVENT_NAME} from '@vueless/storybook-dark-mode'; import React from 'react'; import {withProviderSwitcher} from './custom-addons/provider'; import {withScrollingSwitcher} from './custom-addons/scrolling'; @@ -10,6 +12,29 @@ configureActions({ depth: 2, }); +// Reflect storybook-dark-mode state on the document root so global CSS / consumers +// can react. Mirrors the .storybook-s2 setup. Initial value comes from the addon's +// localStorage key so the very first paint is correct. +const DARK_MODE_STORAGE_KEY = 'sb-addon-themes-3'; +function getInitialColorScheme() { + if (typeof window === 'undefined') return 'light'; + try { + const stored = window.localStorage.getItem(DARK_MODE_STORAGE_KEY); + if (stored) { + const {current} = JSON.parse(stored); + return current === 'dark' ? 'dark' : 'light'; + } + } catch (e) {} + return 'light'; +} + +if (typeof document !== 'undefined') { + document.documentElement.dataset.colorScheme = getInitialColorScheme(); + addons.getChannel().on(DARK_MODE_EVENT_NAME, (isDark) => { + document.documentElement.dataset.colorScheme = isDark ? 'dark' : 'light'; + }); +} + export const parameters = { options: { storySort: (a, b) => { From bcd1e55bc48dcafca524a94489aa0e00a027abe4 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 19:02:38 +1000 Subject: [PATCH 26/30] docs(builder): annotate key decisions with upstream references Add succinct comments at non-obvious decision points across the custom Parcel-based Storybook 10 builder, referencing the official Builder API docs (https://storybook.js.org/docs/builders/builder-api) and the upstream @storybook/builder-vite and @storybook/builder-webpack5 reference implementations. Highlights: - parcel-resolver-storybook: top-of-file block explaining the externalize-the-runtime pattern, the globalsNameReferenceMap source, the .cache layout, and the CJS-cycle issue it sidesteps; per-branch comments for externals / react-dom/client shim / story: pipeline. - storybook-builder-parcel/preset.mjs: Builder API contract summary, rationale for the 9003->3000 reverse proxy, list of the five generated files, and the bail() / module-scope watcher rationale. - gen-preview-modern.mjs: explicit ordering rationale for runtime -> setup-addons -> PreviewWeb, why processPreviewAnnotation needs toPackageExportSpecifier under Parcel, and why toImportFn uses static imports + Object.assign instead of Promise.all + spread. - gen-iframe-modern.mjs / templates/iframe.html: provenance from upstream Vite's input/iframe.html and the OTHER_GLOBALS placeholder workaround. - StoryTransformer.ts / StorybookMDXTransformer.mjs: brief headers describing what each transformer does and the IPC-based docgen optimization. No code logic changes; comments only. Co-Authored-By: Claude Opus 4.7 --- .../StorybookResolver.ts | 58 +++++++++++++++---- .../StorybookMDXTransformer.mjs | 2 + .../StoryTransformer.ts | 11 ++++ .../gen-iframe-modern.mjs | 8 +++ .../gen-preview-modern.mjs | 38 ++++++++++-- .../dev/storybook-builder-parcel/preset.mjs | 31 ++++++++++ .../templates/iframe.html | 10 +++- 7 files changed, 139 insertions(+), 19 deletions(-) diff --git a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts index f3fb9d3217e..a2fb0430368 100644 --- a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts +++ b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts @@ -1,3 +1,29 @@ +// Parcel resolver implementing the upstream "externalize the runtime" pattern that +// both @storybook/builder-vite and @storybook/builder-webpack5 use. +// +// Upstream references: +// - code/builders/builder-vite/src/plugins/storybook-external-globals-plugin.ts +// - code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts +// (`const externals: Record = globalsNameReferenceMap`) +// - node_modules/storybook/dist/preview/globals.js (source of `globalsNameReferenceMap`) +// +// The map is read at resolver startup (not hardcoded) so any future Storybook +// version that adds entries is picked up automatically. For each (specifier -> +// __STORYBOOK_MODULE_*__) pair we emit one cache file under +// `node_modules/.cache/sb-parcel-externals/.js` -- mirroring Vite's +// `node_modules/.cache/sb-vite-plugin-externals/` layout -- so the synthetic +// module is a real on-disk file Parcel's graph can hash and watch. +// +// Why this matters: without externalization, Parcel's CJS dev bundle ends up +// with `storybook/preview-api` <-> chunk-SZQXB3JV <-> `storybook/internal/csf` +// in a real cycle. csf/index.js (line ~916) reads `addons` at top level, but +// `addons` is still undefined when csf evaluates inside the cycle, throwing +// `TypeError: Cannot read properties of undefined (reading 'addons')` during +// Storybook init. See plan docs/superpowers/plans/2026-04-25-parcel-builder- +// upstream-alignment.md "Starting Context" for the full diagnosis. Routing +// every preview-runtime specifier to a leaf module that just reads from +// globalThis breaks the back-edge and removes the cycle entirely. + import path from 'path'; import fs from 'fs'; import { createRequire } from 'module'; @@ -9,13 +35,10 @@ import { isGlob, glob, normalizeSeparators, relativePath } from '@parcel/utils'; const REACT_MAJOR_VERSION = parseInt(reactVersion.split('.')[0], 10); -// --- Storybook globals externals (Approach B: codegen-time enumeration) --- -// Match upstream Vite's behavior: at resolver-startup, read storybook's -// `globalsNameReferenceMap` from `node_modules/storybook/dist/preview/globals.js`, -// then for each (specifier -> globalName) pair generate a synthetic ESM module -// that re-exports the named bindings from `globalThis.__STORYBOOK_MODULE_*__`. -// The synthetic file is written once to `node_modules/.cache/sb-parcel-externals/` -// so it is visible in the network tab and is re-used across resolve() calls. +// Approach B = enumerate named exports at codegen and emit +// `const { x, y } = globalThis.__STORYBOOK_MODULE_*__; export { x, y };`. +// Approach A fallback = `module.exports = globalThis.__STORYBOOK_MODULE_*__;`, +// used only when require() can't enumerate the source module's exports. const _require = createRequire(__filename); @@ -118,12 +141,16 @@ function buildExternalsCache(): Record { } // Generate cache files ONCE at module load (resolver-instance creation). +// The runtime's setup() side-effect (in storybook/internal/preview/runtime) +// populates the globals BEFORE any externalized cache file evaluates, so the +// `const { x } = globalThis.__STORYBOOK_MODULE_*__` lines see the real exports. const STORYBOOK_EXTERNALS = buildExternalsCache(); module.exports = new Resolver({ async resolve({ dependency, options, specifier, pipeline, logger }) { - // Storybook globals: externalize runtime modules to globalThis.__STORYBOOK_MODULE_*__ - // Runs before the other branches when using the default pipeline. + // Branch 1 - externalize storybook runtime specifiers (the patch-removal fix). + // Equivalent to webpack5's `externals: globalsNameReferenceMap` and Vite's + // alias-to-cache-file in storybook-external-globals-plugin.ts. if (pipeline == null && Object.prototype.hasOwnProperty.call(STORYBOOK_EXTERNALS, specifier)) { const entry = STORYBOOK_EXTERNALS[specifier]; return { @@ -133,7 +160,9 @@ module.exports = new Resolver({ }; } - // Workaround for interop issue + // Branch 2 - React 17/18 interop shim. react-dom/client only exists from + // React 18 onwards; for React 17 we re-export react-dom so consumer code + // that does `import { createRoot } from 'react-dom/client'` still resolves. if (specifier === "react-dom/client" && REACT_MAJOR_VERSION < 18) { return { filePath: __dirname + "/react.js", @@ -144,8 +173,13 @@ module.exports = new Resolver({ }; } - // Resolve story entry globs. Storybook expects an object with relative paths from the process cwd as keys. - // We do this in a resolver so that it invalidates the watcher when new stories are created. + // Branch 3 - the `story:` pipeline. The specifier is a base64-encoded glob + // (relative to the importing file's dir). We expand the glob and emit a + // synthetic ESM module whose default export maps cwd-relative paths to + // dynamic-import factories. Doing this in a resolver (rather than a + // transformer) lets Parcel's watcher invalidate when matching files appear + // or disappear -- see `invalidateOnFileCreate` below. Storybook's importFn + // expects keys relative to process.cwd(). if (pipeline === 'story') { let sourceFile = dependency.resolveFrom ?? dependency.sourcePath!; let normalized = normalizeSeparators(path.resolve(path.dirname(sourceFile), atob(specifier))); diff --git a/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs b/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs index 26077e8c8ea..487bc5e97ba 100644 --- a/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs +++ b/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs @@ -1,3 +1,5 @@ +// Compiles MDX docs pages to JSX using @mdx-js/mdx with the @mdx-js/react +// provider so Storybook's docs renderer can wrap them in MDXProvider. import {compile} from '@mdx-js/mdx'; import {Transformer} from '@parcel/plugin'; diff --git a/packages/dev/parcel-transformer-storybook/StoryTransformer.ts b/packages/dev/parcel-transformer-storybook/StoryTransformer.ts index b435f7c1561..fb992fac69e 100644 --- a/packages/dev/parcel-transformer-storybook/StoryTransformer.ts +++ b/packages/dev/parcel-transformer-storybook/StoryTransformer.ts @@ -1,3 +1,14 @@ +// CSF transformer: enriches *.stories.{ts,tsx,js,...} files using +// storybook/internal/csf-tools (loadCsf -> enrichCsf -> formatCsf), wraps +// stories for React Fast Refresh, and injects react-docgen-typescript output +// as `Component.__docgenInfo` for the Storybook docs panel. +// +// react-docgen-typescript runs out-of-process via an IPC client (see +// ./react-docgen-typescript.ts) so a single TS server is shared across the +// whole Parcel build instead of one-per-file. This is a Parcel-specific +// performance optimization; upstream Vite/webpack5 use different docgen +// mechanisms (vite-plugin-checker, ts-loader, etc). + import { Transformer } from '@parcel/plugin'; import { enrichCsf, formatCsf, loadCsf } from 'storybook/internal/csf-tools'; import * as t from '@babel/types'; diff --git a/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs b/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs index 48b15dfc55e..3ddf1c30e83 100644 --- a/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs @@ -1,3 +1,7 @@ +// Template extracted verbatim from upstream Vite's +// code/builders/builder-vite/input/iframe.html (Task 2.2 of the upstream- +// alignment plan). Placeholder strings are filled in below via String.replace. + import { normalizeStories } from "storybook/internal/common"; import { readFileSync } from "node:fs"; import { fileURLToPath } from "node:url"; @@ -37,6 +41,10 @@ export async function generateIframeModern(options) { .replace(`'[DOCS_OPTIONS HERE]'`, JSON.stringify(docsOptions || {})) .replace(`'[TAGS_OPTIONS HERE]'`, JSON.stringify(tagsOptions || {})) .replace(`'[SERVER_CHANNEL_URL HERE]'`, JSON.stringify(serverChannelUrl)) + // OTHER_GLOBALS is a Vite-only injection point used by their externalize + // plugin to splat extra globals into the inline script. We don't use it; + // the placeholder must be replaced with a syntactically-valid expression + // (we use empty string `''`) -- leaving bare `()` would crash the parser. .replace(`'[OTHER_GLOBALS HERE]'`, `''`) .replace("", headHtmlSnippet || "") .replace("", bodyHtmlSnippet || ""); diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs index e1d2429e162..7c6e3a8aa54 100644 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs @@ -16,6 +16,13 @@ const btoa = (s) => Buffer.from(s, "utf8").toString("base64"); /** * Strip absolute path prefix up to and including node_modules, returning a bare * specifier for the bundler. (Storybook 10 no longer exports this from internal/common.) + * + * Background: addons advertise their preview entries as absolute + * `node_modules/@storybook/foo/dist/preview.js` paths in the `previewAnnotations` + * preset, but each package's `exports` map only exposes the bare subpath (e.g. + * `./preview`) -- not the dist file. Parcel's resolver honors `exports`, so we + * must rewrite absolute paths into bare specifiers before handing them off. + * Plan task 2.4 documents this rationale. */ function stripAbsNodeModulesPath(absPath) { const sep = path.sep; @@ -88,11 +95,19 @@ async function generatePreviewModern( /** * Main preview module loaded directly by iframe.html as From 86c8a3bd7200c7e29f5063efc4ad731437047964 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Sat, 25 Apr 2026 21:36:12 +1000 Subject: [PATCH 27/30] Revert "Merge branch 'main' of github.com:adobe/react-spectrum into storybook-10-upgrade" This reverts commit bf62a86810b8e677fdd8c609bc923f9339e19213, reversing changes made to edc24b0ff9fdc9639fc062deb181f8ffc52c5331. --- .chromatic-fc/{main.mjs => main.js} | 13 +- .chromatic/{main.mjs => main.js} | 13 +- .../custom-addons/provider/preset.ts | 15 - .../provider/{register.tsx => register.js} | 11 +- .storybook-s2/main.ts | 5 +- .storybook-s2/preview.tsx | 33 +- .../descriptions/{manager.js => register.js} | 0 .storybook/custom-addons/provider/index.js | 6 +- .../provider/{manager.js => register.js} | 0 .../scrolling/{manager.js => register.js} | 0 .../strictmode/{manager.js => register.js} | 0 .../theme/{manager.js => register.js} | 0 .storybook/{main.mjs => main.js} | 33 +- .storybook/preview.js | 25 - package.json | 16 +- .../StorybookResolver.ts | 166 +- .../StorybookMDXTransformer.mjs | 2 - .../StoryTransformer.ts | 11 - .../parcel-transformer-storybook/package.json | 2 +- ...iframe-modern.mjs => gen-iframe-modern.js} | 58 +- .../gen-preview-modern.js | 160 ++ .../gen-preview-modern.mjs | 240 -- .../dev/storybook-builder-parcel/package.json | 10 +- .../dev/storybook-builder-parcel/preset.js | 115 + .../dev/storybook-builder-parcel/preset.mjs | 147 -- .../templates/iframe.html | 39 - .../dev/storybook-react-parcel/package.json | 13 +- packages/dev/storybook-react-parcel/preset.js | 4 + .../dev/storybook-react-parcel/preset.mjs | 11 - yarn.lock | 2347 +++-------------- 30 files changed, 792 insertions(+), 2703 deletions(-) rename .chromatic-fc/{main.mjs => main.js} (60%) rename .chromatic/{main.mjs => main.js} (60%) delete mode 100644 .storybook-s2/custom-addons/provider/preset.ts rename .storybook-s2/custom-addons/provider/{register.tsx => register.js} (87%) rename .storybook/custom-addons/descriptions/{manager.js => register.js} (100%) rename .storybook/custom-addons/provider/{manager.js => register.js} (100%) rename .storybook/custom-addons/scrolling/{manager.js => register.js} (100%) rename .storybook/custom-addons/strictmode/{manager.js => register.js} (100%) rename .storybook/custom-addons/theme/{manager.js => register.js} (100%) rename .storybook/{main.mjs => main.js} (53%) rename packages/dev/storybook-builder-parcel/{gen-iframe-modern.mjs => gen-iframe-modern.js} (52%) create mode 100644 packages/dev/storybook-builder-parcel/gen-preview-modern.js delete mode 100644 packages/dev/storybook-builder-parcel/gen-preview-modern.mjs create mode 100644 packages/dev/storybook-builder-parcel/preset.js delete mode 100644 packages/dev/storybook-builder-parcel/preset.mjs delete mode 100644 packages/dev/storybook-builder-parcel/templates/iframe.html create mode 100644 packages/dev/storybook-react-parcel/preset.js delete mode 100644 packages/dev/storybook-react-parcel/preset.mjs diff --git a/.chromatic-fc/main.mjs b/.chromatic-fc/main.js similarity index 60% rename from .chromatic-fc/main.mjs rename to .chromatic-fc/main.js index b1acddc71bb..3e18290db84 100644 --- a/.chromatic-fc/main.mjs +++ b/.chromatic-fc/main.js @@ -1,5 +1,9 @@ -export default { +module.exports = { + framework: { + name: "storybook-react-parcel", + options: {}, + }, stories: [ '../packages/**/chromatic-fc/**/*.stories.{js,jsx,ts,tsx}', '../packages/@react-spectrum/s2/chromatic/*.stories.@(js|jsx|mjs|ts|tsx)' @@ -8,7 +12,8 @@ export default { 'storybook/actions', '@storybook/addon-a11y' ], - typescript: { check: false, reactDocgen: false }, - framework: { name: 'storybook-react-parcel', options: {} }, - core: { disableWhatsNewNotifications: true }, + typescript: { + check: false, + reactDocgen: false + } }; diff --git a/.chromatic/main.mjs b/.chromatic/main.js similarity index 60% rename from .chromatic/main.mjs rename to .chromatic/main.js index 83881ce798c..a9f9a574e15 100644 --- a/.chromatic/main.mjs +++ b/.chromatic/main.js @@ -1,5 +1,9 @@ -export default { +module.exports = { + framework: { + name: "storybook-react-parcel", + options: {}, + }, stories: [ '../packages/**/chromatic/**/*.stories.@(js|jsx|ts|tsx)', '../packages/@react-spectrum/s2/chromatic/*.stories.@(js|jsx|mjs|ts|tsx)' @@ -8,7 +12,8 @@ export default { 'storybook/actions', '@storybook/addon-a11y' ], - typescript: { check: false, reactDocgen: false }, - framework: { name: 'storybook-react-parcel', options: {} }, - core: { disableWhatsNewNotifications: true }, + typescript: { + check: false, + reactDocgen: false + } }; diff --git a/.storybook-s2/custom-addons/provider/preset.ts b/.storybook-s2/custom-addons/provider/preset.ts deleted file mode 100644 index 07f1a5bad60..00000000000 --- a/.storybook-s2/custom-addons/provider/preset.ts +++ /dev/null @@ -1,15 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - -/** - * Preset that registers our manager entry (register.tsx) with Storybook. - * The manager builder will bundle register.tsx and transpile JSX there; - * this file stays JS-free so Node can load it as a preset. - * @see https://github.com/storybookjs/addon-kit - */ -export const managerEntries = (existing: string[] = []) => [ - ...existing, - path.join(__dirname, "register.tsx"), -]; diff --git a/.storybook-s2/custom-addons/provider/register.tsx b/.storybook-s2/custom-addons/provider/register.js similarity index 87% rename from .storybook-s2/custom-addons/provider/register.tsx rename to .storybook-s2/custom-addons/provider/register.js index b06338db428..e334a7ad444 100644 --- a/.storybook-s2/custom-addons/provider/register.tsx +++ b/.storybook-s2/custom-addons/provider/register.js @@ -4,9 +4,8 @@ import {locales} from '../../constants'; import React, {useEffect, useState} from 'react'; function ProviderFieldSetter({api}) { - let [values, setValues] = useState(() => ({ - locale: api.getQueryParam('providerSwitcher-locale') || undefined, - })); + let localeParam = api.getQueryParam('providerSwitcher-locale') || undefined; + let [values, setValues] = useState({locale: localeParam}); let channel = addons.getChannel(); let onLocaleChange = (e) => { let newValue = e.target.value || undefined; @@ -24,19 +23,19 @@ function ProviderFieldSetter({api}) { return () => { channel.removeListener('rsp/ready-for-update', storySwapped); }; - }, [values, channel]); + }); useEffect(() => { api.setQueryParams({ 'providerSwitcher-locale': values.locale || '' }); - }, [api, values.locale]); + }); return (
- {locales.map(locale => )}
diff --git a/.storybook-s2/main.ts b/.storybook-s2/main.ts index fcd3db01e65..ec83a5ebf84 100644 --- a/.storybook-s2/main.ts +++ b/.storybook-s2/main.ts @@ -1,5 +1,4 @@ import type { StorybookConfig } from "storybook/internal/types"; -import { fileURLToPath } from "node:url"; // const excludedProps = new Set([ // 'id', @@ -15,15 +14,13 @@ import { fileURLToPath } from "node:url"; // 'onInput' // ]); -const localAddon = (rel: string) => fileURLToPath(import.meta.resolve(rel)); - const config: StorybookConfig = { stories: [ './docs/*.mdx', "../packages/@react-spectrum/s2/stories/*.stories.@(js|jsx|mjs|ts|tsx)", ], addons: [ - localAddon('./custom-addons/provider/preset.ts'), + './custom-addons/provider/register', // "@storybook/addon-styling-webpack", "@storybook/addon-docs", "@vueless/storybook-dark-mode", diff --git a/.storybook-s2/preview.tsx b/.storybook-s2/preview.tsx index d0081fe3f90..ceba3e0fa2c 100644 --- a/.storybook-s2/preview.tsx +++ b/.storybook-s2/preview.tsx @@ -1,31 +1,16 @@ import '@react-spectrum/s2/page.css'; import { themes } from 'storybook/theming'; -import { DARK_MODE_EVENT_NAME, useDarkMode } from '@vueless/storybook-dark-mode'; +import { DARK_MODE_EVENT_NAME } from '@vueless/storybook-dark-mode'; +import { store } from '@vueless/storybook-dark-mode/dist/esm/Tool'; import { addons } from 'storybook/preview-api'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import {withProviderSwitcher} from './custom-addons/provider'; import {DocsContainer, Controls, Description, Primary, Stories, Subtitle, Title} from '@storybook/addon-docs/blocks'; import './global.css'; -const DARK_MODE_STORAGE_KEY = 'sb-addon-themes-3'; - -function getInitialColorScheme(): 'dark' | 'light' { - if (typeof window === 'undefined') return 'light'; - try { - const stored = window.localStorage.getItem(DARK_MODE_STORAGE_KEY); - if (stored) { - const { current } = JSON.parse(stored); - return current === 'dark' ? 'dark' : 'light'; - } - } catch {} - return 'light'; -} - const channel = addons.getChannel(); -document.documentElement.dataset.colorScheme = getInitialColorScheme(); -channel.on(DARK_MODE_EVENT_NAME, (isDark: boolean) => { - document.documentElement.dataset.colorScheme = isDark ? 'dark' : 'light'; -}); +document.documentElement.dataset.colorScheme = store().current === 'dark' ? 'dark' : 'light'; +channel.on(DARK_MODE_EVENT_NAME, isDark => document.documentElement.dataset.colorScheme = isDark ? 'dark' : 'light'); /** @type { import('@storybook/react').Preview } */ const preview = { @@ -36,8 +21,12 @@ const preview = { }, docs: { container: (props) => { - const dark = useDarkMode(); - var style = getComputedStyle(document.body); + let [dark, setDark] = useState(store().current === 'dark'); + useEffect(() => { + channel.on(DARK_MODE_EVENT_NAME, setDark); + return () => channel.removeListener(DARK_MODE_EVENT_NAME, setDark); + }, []); + var style = getComputedStyle(document.body) return ; }, codePanel: true, diff --git a/.storybook/custom-addons/descriptions/manager.js b/.storybook/custom-addons/descriptions/register.js similarity index 100% rename from .storybook/custom-addons/descriptions/manager.js rename to .storybook/custom-addons/descriptions/register.js diff --git a/.storybook/custom-addons/provider/index.js b/.storybook/custom-addons/provider/index.js index 9859e00acd2..fef66393200 100644 --- a/.storybook/custom-addons/provider/index.js +++ b/.storybook/custom-addons/provider/index.js @@ -1,7 +1,6 @@ import React, {useEffect, useState} from 'react'; import {addons} from 'storybook/preview-api'; import {makeDecorator} from 'storybook/preview-api'; -import {useDarkMode} from '@vueless/storybook-dark-mode'; import {Provider} from '@react-spectrum/provider'; import {expressThemes, themes, defaultTheme} from '../../constants'; @@ -18,13 +17,10 @@ function ProviderUpdater(props) { let expressParam = params.get("providerSwitcher-express") || undefined; let [expressValue, setExpress] = useState(expressParam === 'true'); let [storyReady, setStoryReady] = useState(window.parent === window || window.parent !== window.top); // reduce content flash because it takes a moment to get the provider details - let isDark = useDarkMode(); // Typically themes are provided with both light + dark, and both scales. // To build our selector to see all themes, we need to hack it a bit. let theme = (expressValue ? expressThemes : themes)[themeValue || 'light'] || defaultTheme; - // When the providerSwitcher theme is set explicitly use it, otherwise follow - // the storybook-dark-mode toolbar toggle. - let colorScheme = themeValue ? themeValue.replace(/est$/, '') : (isDark ? 'dark' : 'light'); + let colorScheme = themeValue && themeValue.replace(/est$/, ''); useEffect(() => { let channel = addons.getChannel(); let providerUpdate = (event) => { diff --git a/.storybook/custom-addons/provider/manager.js b/.storybook/custom-addons/provider/register.js similarity index 100% rename from .storybook/custom-addons/provider/manager.js rename to .storybook/custom-addons/provider/register.js diff --git a/.storybook/custom-addons/scrolling/manager.js b/.storybook/custom-addons/scrolling/register.js similarity index 100% rename from .storybook/custom-addons/scrolling/manager.js rename to .storybook/custom-addons/scrolling/register.js diff --git a/.storybook/custom-addons/strictmode/manager.js b/.storybook/custom-addons/strictmode/register.js similarity index 100% rename from .storybook/custom-addons/strictmode/manager.js rename to .storybook/custom-addons/strictmode/register.js diff --git a/.storybook/custom-addons/theme/manager.js b/.storybook/custom-addons/theme/register.js similarity index 100% rename from .storybook/custom-addons/theme/manager.js rename to .storybook/custom-addons/theme/register.js diff --git a/.storybook/main.mjs b/.storybook/main.js similarity index 53% rename from .storybook/main.mjs rename to .storybook/main.js index 166c3ef47e5..6d2ed3805fe 100644 --- a/.storybook/main.mjs +++ b/.storybook/main.js @@ -1,8 +1,5 @@ -import { fileURLToPath } from "node:url"; -const localAddon = (rel) => fileURLToPath(import.meta.resolve(rel)); - -export default { +module.exports = { stories: [ '../packages/@{react-aria,react-stately,spectrum-icons}/*/stories/*.stories.{js,jsx,ts,tsx}', '../packages/@react-spectrum/!(s2)/stories/*.stories.{js,jsx,ts,tsx}', @@ -11,17 +8,29 @@ export default { '../packages/react-stately/stories/*/*.stories.{js,jsx,ts,tsx}', '../packages/react-aria-components/stories/*.stories.{js,jsx,ts,tsx}' ], + addons: [ 'storybook/actions', '@storybook/addon-a11y', '@vueless/storybook-dark-mode', - localAddon('./custom-addons/provider'), - localAddon('./custom-addons/descriptions'), - localAddon('./custom-addons/theme'), - localAddon('./custom-addons/strictmode'), - localAddon('./custom-addons/scrolling'), + './custom-addons/provider/register.js', + './custom-addons/descriptions/register.js', + './custom-addons/theme/register.js', + './custom-addons/strictmode/register.js', + './custom-addons/scrolling/register.js' ], - typescript: { check: false, reactDocgen: false }, - framework: { name: 'storybook-react-parcel', options: {} }, - core: { disableWhatsNewNotifications: true }, + + typescript: { + check: false, + reactDocgen: false + }, + + framework: { + name: 'storybook-react-parcel', + options: {} + }, + + core: { + disableWhatsNewNotifications: true + } }; diff --git a/.storybook/preview.js b/.storybook/preview.js index a849ff52fb4..ac74152dba0 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,6 +1,4 @@ -import {addons} from 'storybook/preview-api'; import {configureActions} from 'storybook/actions'; -import {DARK_MODE_EVENT_NAME} from '@vueless/storybook-dark-mode'; import React from 'react'; import {withProviderSwitcher} from './custom-addons/provider'; import {withScrollingSwitcher} from './custom-addons/scrolling'; @@ -12,29 +10,6 @@ configureActions({ depth: 2, }); -// Reflect storybook-dark-mode state on the document root so global CSS / consumers -// can react. Mirrors the .storybook-s2 setup. Initial value comes from the addon's -// localStorage key so the very first paint is correct. -const DARK_MODE_STORAGE_KEY = 'sb-addon-themes-3'; -function getInitialColorScheme() { - if (typeof window === 'undefined') return 'light'; - try { - const stored = window.localStorage.getItem(DARK_MODE_STORAGE_KEY); - if (stored) { - const {current} = JSON.parse(stored); - return current === 'dark' ? 'dark' : 'light'; - } - } catch (e) {} - return 'light'; -} - -if (typeof document !== 'undefined') { - document.documentElement.dataset.colorScheme = getInitialColorScheme(); - addons.getChannel().on(DARK_MODE_EVENT_NAME, (isDark) => { - document.documentElement.dataset.colorScheme = isDark ? 'dark' : 'light'; - }); -} - export const parameters = { options: { storySort: (a, b) => { diff --git a/package.json b/package.json index 9f4e665c13c..97f8b6f5396 100644 --- a/package.json +++ b/package.json @@ -119,12 +119,12 @@ "@react-spectrum/s2-icon-builder": "workspace:^", "@spectrum-css/component-builder": "workspace:^", "@spectrum-css/vars": "^2.3.0", - "@storybook/addon-a11y": "^10.0.0", - "@storybook/addon-docs": "^10.0.0", - "@storybook/addon-jest": "10.0.0-beta.12", - "@storybook/addon-themes": "^10.0.0", - "@storybook/react": "^10.0.0", - "@storybook/test-runner": "^0.24.0", + "@storybook/addon-a11y": "^9.0.18", + "@storybook/addon-docs": "^9.0.18", + "@storybook/addon-jest": "^9.0.18", + "@storybook/addon-themes": "^9.0.18", + "@storybook/react": "^9.0.18", + "@storybook/test-runner": "^0.22.0", "@stylistic/eslint-plugin-ts": "^2.9.0", "@swc/core": "^1.3.36", "@swc/jest": "^0.2.36", @@ -139,7 +139,7 @@ "@vitejs/plugin-react": "^5.1.4", "@vitest/browser-playwright": "^4.0.17", "@vitest/browser-preview": "^4.0.17", - "@vueless/storybook-dark-mode": "^10.0.0", + "@vueless/storybook-dark-mode": "^9.0.6", "@yarnpkg/types": "^4.0.0", "autoprefixer": "^9.6.0", "axe-playwright": "^1.1.11", @@ -199,7 +199,7 @@ "rimraf": "^6.0.1", "shadow-dom-testing-library": "^1.13.1", "sharp": "^0.33.5", - "storybook": "^10.0.0", + "storybook": "^9.0.18", "storybook-react-parcel": "workspace:^", "tailwind-variants": "patch:tailwind-variants@npm%3A0.3.1#~/.yarn/patches/tailwind-variants-npm-0.3.1-48888516de.patch", "tailwindcss": "^4.0.0", diff --git a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts index a2fb0430368..ee4140d3f3a 100644 --- a/packages/dev/parcel-resolver-storybook/StorybookResolver.ts +++ b/packages/dev/parcel-resolver-storybook/StorybookResolver.ts @@ -1,32 +1,4 @@ -// Parcel resolver implementing the upstream "externalize the runtime" pattern that -// both @storybook/builder-vite and @storybook/builder-webpack5 use. -// -// Upstream references: -// - code/builders/builder-vite/src/plugins/storybook-external-globals-plugin.ts -// - code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts -// (`const externals: Record = globalsNameReferenceMap`) -// - node_modules/storybook/dist/preview/globals.js (source of `globalsNameReferenceMap`) -// -// The map is read at resolver startup (not hardcoded) so any future Storybook -// version that adds entries is picked up automatically. For each (specifier -> -// __STORYBOOK_MODULE_*__) pair we emit one cache file under -// `node_modules/.cache/sb-parcel-externals/.js` -- mirroring Vite's -// `node_modules/.cache/sb-vite-plugin-externals/` layout -- so the synthetic -// module is a real on-disk file Parcel's graph can hash and watch. -// -// Why this matters: without externalization, Parcel's CJS dev bundle ends up -// with `storybook/preview-api` <-> chunk-SZQXB3JV <-> `storybook/internal/csf` -// in a real cycle. csf/index.js (line ~916) reads `addons` at top level, but -// `addons` is still undefined when csf evaluates inside the cycle, throwing -// `TypeError: Cannot read properties of undefined (reading 'addons')` during -// Storybook init. See plan docs/superpowers/plans/2026-04-25-parcel-builder- -// upstream-alignment.md "Starting Context" for the full diagnosis. Routing -// every preview-runtime specifier to a leaf module that just reads from -// globalThis breaks the back-edge and removes the cycle entirely. - import path from 'path'; -import fs from 'fs'; -import { createRequire } from 'module'; import { Resolver } from "@parcel/plugin"; const reactVersion = require("react-dom/package.json").version; import { default as NodeResolver } from "@parcel/node-resolver-core"; @@ -35,134 +7,9 @@ import { isGlob, glob, normalizeSeparators, relativePath } from '@parcel/utils'; const REACT_MAJOR_VERSION = parseInt(reactVersion.split('.')[0], 10); -// Approach B = enumerate named exports at codegen and emit -// `const { x, y } = globalThis.__STORYBOOK_MODULE_*__; export { x, y };`. -// Approach A fallback = `module.exports = globalThis.__STORYBOOK_MODULE_*__;`, -// used only when require() can't enumerate the source module's exports. - -const _require = createRequire(__filename); - -interface ExternalEntry { - filePath: string; - // Whether we used the Approach B (named re-export) or Approach A (CJS interop) fallback - approach: 'B' | 'A'; -} - -function buildExternalsCache(): Record { - const result: Record = {}; - const cacheDir = path.join( - _require.resolve('storybook/package.json'), - '..', '..', '.cache', 'sb-parcel-externals' - ); - fs.mkdirSync(cacheDir, { recursive: true }); - - // Read storybook's canonical map at startup; do not hardcode. - let globalsNameReferenceMap: Record; - try { - const globalsModulePath = _require.resolve('storybook/internal/preview/globals'); - // Use dynamic import via createRequire-style; storybook ships ESM here so - // fall back to reading the JS source if require() can't load ESM. - try { - const mod = _require(globalsModulePath); - globalsNameReferenceMap = mod.globalsNameReferenceMap; - } catch { - const src = fs.readFileSync(globalsModulePath, 'utf8'); - // Match the object literal between `var globalsNameReferenceMap = {` and `}` - const m = src.match(/globalsNameReferenceMap\s*=\s*(\{[\s\S]*?\})\s*,/); - if (!m) throw new Error('Could not parse globalsNameReferenceMap from ' + globalsModulePath); - // Parse it as JSON-ish (keys are quoted strings, values are quoted strings, - // but there's a trailing comment line). Strip line comments first. - const cleaned = m[1].replace(/\/\/.*$/gm, '').replace(/,\s*\}/, '}'); - // eslint-disable-next-line no-new-func - globalsNameReferenceMap = (new Function('return ' + cleaned))(); - } - } catch (e) { - throw new Error( - `[parcel-resolver-storybook] Failed to load storybook globalsNameReferenceMap: ${(e as Error).message}` - ); - } - - for (const [specifier, globalName] of Object.entries(globalsNameReferenceMap)) { - const safeKey = specifier.replace(/[\/@]/g, '_'); - const filePath = path.join(cacheDir, `${safeKey}.js`); - - // Hardcode @storybook/global since its only export is `global`. - if (specifier === '@storybook/global') { - const code = - `// Generated by @parcel/resolver-storybook\n` + - `// Re-exports ${specifier} from globalThis.${globalName}\n` + - `const { global } = globalThis.${globalName};\n` + - `export { global };\n` + - `export default globalThis.${globalName};\n`; - fs.writeFileSync(filePath, code); - result[specifier] = { filePath, approach: 'B' }; - continue; - } - - // Approach B: enumerate named exports via require() and codegen - // a `const { ... } = globalThis.X; export { ... };` synthetic module. - let namedExports: string[] | null = null; - try { - const mod = _require(specifier); - if (mod && typeof mod === 'object') { - // Filter out 'default' and '__esModule' (CJS interop marker that some - // bundles attach as an enumerable own property). - namedExports = Object.keys(mod).filter(k => k !== 'default' && k !== '__esModule'); - } - } catch { - namedExports = null; - } - - if (namedExports && namedExports.length > 0) { - // Filter out reserved/invalid identifiers just in case - const valid = namedExports.filter(n => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(n)); - const list = valid.join(', '); - const code = - `// Generated by @parcel/resolver-storybook\n` + - `// Re-exports ${specifier} from globalThis.${globalName}\n` + - `const { ${list} } = globalThis.${globalName};\n` + - `export { ${list} };\n` + - `export default globalThis.${globalName};\n`; - fs.writeFileSync(filePath, code); - result[specifier] = { filePath, approach: 'B' }; - } else { - // Approach A fallback: emit CJS interop. Used when require() couldn't - // enumerate the module (e.g. ESM-only with no enumerable exports via require). - const code = - `// Generated by @parcel/resolver-storybook (Approach A fallback)\n` + - `// Could not enumerate named exports for ${specifier}; using CJS interop.\n` + - `module.exports = globalThis.${globalName};\n`; - fs.writeFileSync(filePath, code); - result[specifier] = { filePath, approach: 'A' }; - } - } - - return result; -} - -// Generate cache files ONCE at module load (resolver-instance creation). -// The runtime's setup() side-effect (in storybook/internal/preview/runtime) -// populates the globals BEFORE any externalized cache file evaluates, so the -// `const { x } = globalThis.__STORYBOOK_MODULE_*__` lines see the real exports. -const STORYBOOK_EXTERNALS = buildExternalsCache(); - module.exports = new Resolver({ async resolve({ dependency, options, specifier, pipeline, logger }) { - // Branch 1 - externalize storybook runtime specifiers (the patch-removal fix). - // Equivalent to webpack5's `externals: globalsNameReferenceMap` and Vite's - // alias-to-cache-file in storybook-external-globals-plugin.ts. - if (pipeline == null && Object.prototype.hasOwnProperty.call(STORYBOOK_EXTERNALS, specifier)) { - const entry = STORYBOOK_EXTERNALS[specifier]; - return { - filePath: entry.filePath, - priority: 'sync', - pipeline: null, - }; - } - - // Branch 2 - React 17/18 interop shim. react-dom/client only exists from - // React 18 onwards; for React 17 we re-export react-dom so consumer code - // that does `import { createRoot } from 'react-dom/client'` still resolves. + // Workaround for interop issue if (specifier === "react-dom/client" && REACT_MAJOR_VERSION < 18) { return { filePath: __dirname + "/react.js", @@ -173,13 +20,8 @@ module.exports = new Resolver({ }; } - // Branch 3 - the `story:` pipeline. The specifier is a base64-encoded glob - // (relative to the importing file's dir). We expand the glob and emit a - // synthetic ESM module whose default export maps cwd-relative paths to - // dynamic-import factories. Doing this in a resolver (rather than a - // transformer) lets Parcel's watcher invalidate when matching files appear - // or disappear -- see `invalidateOnFileCreate` below. Storybook's importFn - // expects keys relative to process.cwd(). + // Resolve story entry globs. Storybook expects an object with relative paths from the process cwd as keys. + // We do this in a resolver so that it invalidates the watcher when new stories are created. if (pipeline === 'story') { let sourceFile = dependency.resolveFrom ?? dependency.sourcePath!; let normalized = normalizeSeparators(path.resolve(path.dirname(sourceFile), atob(specifier))); @@ -200,7 +42,7 @@ module.exports = new Resolver({ dir, 'stories.js' ), - code: `export default {\n${results.join('\n')}\n};\n`, + code: `module.exports = {\n${results.join('\n')}\n};\n`, invalidateOnFileCreate: [ {glob: normalized} ], diff --git a/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs b/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs index 487bc5e97ba..26077e8c8ea 100644 --- a/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs +++ b/packages/dev/parcel-transformer-mdx-storybook/StorybookMDXTransformer.mjs @@ -1,5 +1,3 @@ -// Compiles MDX docs pages to JSX using @mdx-js/mdx with the @mdx-js/react -// provider so Storybook's docs renderer can wrap them in MDXProvider. import {compile} from '@mdx-js/mdx'; import {Transformer} from '@parcel/plugin'; diff --git a/packages/dev/parcel-transformer-storybook/StoryTransformer.ts b/packages/dev/parcel-transformer-storybook/StoryTransformer.ts index fb992fac69e..b435f7c1561 100644 --- a/packages/dev/parcel-transformer-storybook/StoryTransformer.ts +++ b/packages/dev/parcel-transformer-storybook/StoryTransformer.ts @@ -1,14 +1,3 @@ -// CSF transformer: enriches *.stories.{ts,tsx,js,...} files using -// storybook/internal/csf-tools (loadCsf -> enrichCsf -> formatCsf), wraps -// stories for React Fast Refresh, and injects react-docgen-typescript output -// as `Component.__docgenInfo` for the Storybook docs panel. -// -// react-docgen-typescript runs out-of-process via an IPC client (see -// ./react-docgen-typescript.ts) so a single TS server is shared across the -// whole Parcel build instead of one-per-file. This is a Parcel-specific -// performance optimization; upstream Vite/webpack5 use different docgen -// mechanisms (vite-plugin-checker, ts-loader, etc). - import { Transformer } from '@parcel/plugin'; import { enrichCsf, formatCsf, loadCsf } from 'storybook/internal/csf-tools'; import * as t from '@babel/types'; diff --git a/packages/dev/parcel-transformer-storybook/package.json b/packages/dev/parcel-transformer-storybook/package.json index 177477d961b..c03c4cca846 100644 --- a/packages/dev/parcel-transformer-storybook/package.json +++ b/packages/dev/parcel-transformer-storybook/package.json @@ -16,7 +16,7 @@ "@parcel/plugin": "^2.16.3", "@parcel/source-map": "^2.1.1", "react-docgen-typescript": "^2.2.2", - "storybook": "^10.0.0", + "storybook": "^9.0.18", "typescript": "^5.5.0" }, "scripts": { diff --git a/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs b/packages/dev/storybook-builder-parcel/gen-iframe-modern.js similarity index 52% rename from packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs rename to packages/dev/storybook-builder-parcel/gen-iframe-modern.js index 3ddf1c30e83..29ead8152cb 100644 --- a/packages/dev/storybook-builder-parcel/gen-iframe-modern.mjs +++ b/packages/dev/storybook-builder-parcel/gen-iframe-modern.js @@ -1,27 +1,47 @@ -// Template extracted verbatim from upstream Vite's -// code/builders/builder-vite/input/iframe.html (Task 2.2 of the upstream- -// alignment plan). Placeholder strings are filled in below via String.replace. +const { normalizeStories } = require("storybook/internal/common"); -import { normalizeStories } from "storybook/internal/common"; -import { readFileSync } from "node:fs"; -import { fileURLToPath } from "node:url"; +const TEMPLATE = ` + + + + <!-- [TITLE HERE] --> + + + + + + +
+
+ + + +`; -const TEMPLATE_PATH = fileURLToPath(new URL("./templates/iframe.html", import.meta.url)); - -export async function generateIframeModern(options) { - const TEMPLATE = readFileSync(TEMPLATE_PATH, "utf8"); +module.exports.generateIframeModern = async function generateIframeModern(options) { const { configType, features, presets, serverChannelUrl, title } = options; const frameworkOptions = await presets.apply("frameworkOptions"); const headHtmlSnippet = await presets.apply("previewHead"); const bodyHtmlSnippet = await presets.apply("previewBody"); const logLevel = await presets.apply("logLevel", undefined); const docsOptions = await presets.apply("docs"); - const tagsOptions = await presets.apply("tags", {}); const coreOptions = await presets.apply("core"); const stories = normalizeStories( await options.presets.apply("stories", [], options), - { configDir: options.configDir, workingDir: process.cwd() } + { + configDir: options.configDir, + workingDir: process.cwd(), + } ).map((specifier) => ({ ...specifier, importPathMatcher: specifier.importPathMatcher.source, @@ -34,18 +54,16 @@ export async function generateIframeModern(options) { .replace(`'[FRAMEWORK_OPTIONS HERE]'`, JSON.stringify(frameworkOptions)) .replace( `'[CHANNEL_OPTIONS HERE]'`, - JSON.stringify(coreOptions?.channelOptions ?? {}) + JSON.stringify( + coreOptions && coreOptions.channelOptions + ? coreOptions.channelOptions + : {} + ) ) .replace(`'[FEATURES HERE]'`, JSON.stringify(features || {})) .replace(`'[STORIES HERE]'`, JSON.stringify(stories || {})) .replace(`'[DOCS_OPTIONS HERE]'`, JSON.stringify(docsOptions || {})) - .replace(`'[TAGS_OPTIONS HERE]'`, JSON.stringify(tagsOptions || {})) .replace(`'[SERVER_CHANNEL_URL HERE]'`, JSON.stringify(serverChannelUrl)) - // OTHER_GLOBALS is a Vite-only injection point used by their externalize - // plugin to splat extra globals into the inline script. We don't use it; - // the placeholder must be replaced with a syntactically-valid expression - // (we use empty string `''`) -- leaving bare `()` would crash the parser. - .replace(`'[OTHER_GLOBALS HERE]'`, `''`) .replace("", headHtmlSnippet || "") .replace("", bodyHtmlSnippet || ""); -} +}; diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.js b/packages/dev/storybook-builder-parcel/gen-preview-modern.js new file mode 100644 index 00000000000..ea6f30004ec --- /dev/null +++ b/packages/dev/storybook-builder-parcel/gen-preview-modern.js @@ -0,0 +1,160 @@ +const path = require("path"); +const { + loadPreviewOrConfigFile, + normalizeStories, + stripAbsNodeModulesPath, +} = require("storybook/internal/common"); +const {relativePath} = require('@parcel/utils'); + +module.exports.generatePreviewModern = async function generatePreviewModern( + options, + generatedEntries +) { + const { presets, configDir } = options; + + const previewAnnotations = await presets.apply( + "previewAnnotations", + [], + options + ); + const relativePreviewAnnotations = [ + ...previewAnnotations.map(processPreviewAnnotation), + relativePath( + generatedEntries, + loadPreviewOrConfigFile({ configDir }) + ), + ].filter(Boolean); + + /** + * This code is largely taken from https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/lib/builder-webpack4/src/preview/virtualModuleModernEntry.js.handlebars + * Some small tweaks were made to `getProjectAnnotations` (since `import()` needs to be resolved asynchronously) + * and the HMR implementation has been tweaked to work with Vite. + * @todo Inline variable and remove `noinspection` + */ + const code = ` + import { setup } from 'storybook/internal/preview/runtime'; + + setup(); + + import { createBrowserChannel } from 'storybook/internal/channels'; + import { addons } from 'storybook/internal/preview-api'; + + const channel = createBrowserChannel({ page: 'preview' }); + addons.setChannel(channel); + window.__STORYBOOK_ADDONS_CHANNEL__ = channel; + + if (window.CONFIG_TYPE === 'DEVELOPMENT'){ + window.__STORYBOOK_SERVER_CHANNEL__ = channel; + } + + import { composeConfigs, PreviewWeb } from 'storybook/internal/preview-api'; + import { isPreview } from 'storybook/internal/csf'; + + ${await generateImportFnScriptCode(options, generatedEntries)} + + const getProjectAnnotations = async () => { + const configs = await Promise.all([${relativePreviewAnnotations + .map((previewAnnotation) => `import('${previewAnnotation}')`) + .join(",\n")}]) + return composeConfigs(configs); + } + + + window.__STORYBOOK_PREVIEW__ = window.__STORYBOOK_PREVIEW__ || new PreviewWeb(importFn, getProjectAnnotations); + + window.__STORYBOOK_STORY_STORE__ = window.__STORYBOOK_STORY_STORE__ || window.__STORYBOOK_PREVIEW__.storyStore; + + + if (import.meta.hot) { + import.meta.hot.hot.accept(() => { + // importFn has changed so we need to patch the new one in + window.__STORYBOOK_PREVIEW__.onStoriesChanged({ importFn }); + + // getProjectAnnotations has changed so we need to patch the new one in + window.__STORYBOOK_PREVIEW__.onGetProjectAnnotationsChanged({ getProjectAnnotations }); + }); + } + `; + // ${generateHMRHandler(frameworkName)}; + return code; +}; + +function processPreviewAnnotation(annotationPath) { + // If entry is an object, take the first, which is the + // bare (non-absolute) specifier. + // This is so that webpack can use an absolute path, and + // continue supporting super-addons in pnp/pnpm without + // requiring them to re-export their sub-addons as we do + // in addon-essentials. + if (typeof annotationPath === "object") { + return annotationPath.bare; + } + // resolve relative paths into absolute paths, but don't resolve "bare" imports + if (annotationPath?.startsWith("./") || annotationPath?.startsWith("../")) { + return /*slash*/ annotationPath.resolve(annotationPath); + } + // This should not occur, since we use `.filter(Boolean)` prior to + // calling this function, but this makes typescript happy + if (!annotationPath) { + throw new Error("Could not determine path for previewAnnotation"); + } + + // For addon dependencies that use require.resolve(), we need to convert to a bare path + // so that vite will process it as a dependency (cjs -> esm, etc). + if (annotationPath.includes("node_modules")) { + return stripAbsNodeModulesPath(annotationPath); + } + + return /*slash*/ annotationPath; +} + +/** + * This file is largely based on https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/lib/core-common/src/utils/to-importFn.ts + */ + +/** + * This function takes an array of stories and creates a mapping between the stories' relative paths + * to the working directory and their dynamic imports. The import is done in an asynchronous function + * to delay loading. It then creates a function, `importFn(path)`, which resolves a path to an import + * function and this is called by Storybook to fetch a story dynamically when needed. + * @param stories An array of absolute story paths. + */ +async function toImportFn(stories, generatedEntries) { + const entries = stories.map(glob => { + return `...import(${JSON.stringify('story:' + btoa(relativePath(generatedEntries, glob)))})`; + }); + + return ` + const importers = { + ${entries.join(',\n')} + }; + + async function importFn(path) { + return importers[path](); + } + `; +} + +async function generateImportFnScriptCode(options, generatedEntries) { + // First we need to get an array of stories and their absolute paths. + let stories = await listStories(options); + + // We can then call toImportFn to create a function that can be used to load each story dynamically. + return (await toImportFn(stories, generatedEntries)).trim(); +} + +async function listStories(options) { + return ( + await Promise.all( + normalizeStories(await options.presets.apply("stories", [], options), { + configDir: options.configDir, + workingDir: options.configDir, + }).map(({ directory, files }) => { + let pattern = path.join(directory, files); + return path.isAbsolute(pattern) + ? pattern + : path.join(options.configDir, pattern); + }) + ) + ).reduce((carry, stories) => carry.concat(stories), []); +} diff --git a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs b/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs deleted file mode 100644 index 7c6e3a8aa54..00000000000 --- a/packages/dev/storybook-builder-parcel/gen-preview-modern.mjs +++ /dev/null @@ -1,240 +0,0 @@ -import path from "node:path"; -import { Buffer } from "node:buffer"; -import { createRequire } from "node:module"; -import { - loadPreviewOrConfigFile, - normalizeStories, -} from "storybook/internal/common"; - -// @parcel/utils is CJS-only; use createRequire to load it from ESM -const _require = createRequire(import.meta.url); -const { relativePath } = _require("@parcel/utils"); - -// base64 helper for story: pipeline specifiers (globalThis.btoa exists in Node >=18) -const btoa = (s) => Buffer.from(s, "utf8").toString("base64"); - -/** - * Strip absolute path prefix up to and including node_modules, returning a bare - * specifier for the bundler. (Storybook 10 no longer exports this from internal/common.) - * - * Background: addons advertise their preview entries as absolute - * `node_modules/@storybook/foo/dist/preview.js` paths in the `previewAnnotations` - * preset, but each package's `exports` map only exposes the bare subpath (e.g. - * `./preview`) -- not the dist file. Parcel's resolver honors `exports`, so we - * must rewrite absolute paths into bare specifiers before handing them off. - * Plan task 2.4 documents this rationale. - */ -function stripAbsNodeModulesPath(absPath) { - const sep = path.sep; - const splits = absPath.split(`node_modules${sep}`); - const last = splits[splits.length - 1]; - return path.posix.normalize(last.replace(/\\/g, "/")); -} - -/** - * Convert a bare path like @storybook/react/dist/entry-preview-argtypes.js to the - * package export subpath @storybook/react/entry-preview-argtypes so bundlers (Parcel) - * resolve via package.json "exports" instead of raw dist files. - * Paths like package/dist/index.js become package (main export), not package/index. - */ -function toPackageExportSpecifier(barePath) { - const normalized = barePath.replace(/\\/g, "/"); - const distMatch = normalized.match(/^(@?[^/]+(?:\/[^/]+)?)\/dist\/(.+)\.js$/); - if (distMatch) { - const pkg = distMatch[1]; - const subpath = distMatch[2]; - // package/dist/index.js -> package (main export), not package/index - if (subpath === "index") { - return pkg; - } - return `${pkg}/${subpath}`; - } - return normalized; -} - -/** - * Generate the addon setup module (like Vite's VIRTUAL_ADDON_SETUP_FILE). - * Must be imported before the runtime so the channel and addons store exist - * before any runtime code runs. See storybook builder-vite codegen-modern-iframe-script.ts - */ -function generateSetupAddons() { - return ` -import { addons } from 'storybook/preview-api'; -import { createBrowserChannel } from 'storybook/internal/channels'; - -const channel = createBrowserChannel({ page: 'preview' }); -addons.setChannel(channel); -window.__STORYBOOK_ADDONS_CHANNEL__ = channel; - -if (window.CONFIG_TYPE === 'DEVELOPMENT') { - window.__STORYBOOK_SERVER_CHANNEL__ = channel; -} -`.trim(); -} - -async function generatePreviewModern( - options, - generatedEntries -) { - const { presets, configDir } = options; - - const previewAnnotations = await presets.apply( - "previewAnnotations", - [], - options - ); - const relativePreviewAnnotations = [ - ...previewAnnotations.map(processPreviewAnnotation), - relativePath( - generatedEntries, - loadPreviewOrConfigFile({ configDir }) - ), - ].filter(Boolean); - - const importFnCode = await generateImportFnScriptCode(options, generatedEntries); - - /** - * Main preview module loaded directly by iframe.html as - - - - -
-
- - - diff --git a/packages/dev/storybook-react-parcel/package.json b/packages/dev/storybook-react-parcel/package.json index 92a79bc13f3..69e0b50d0f3 100644 --- a/packages/dev/storybook-react-parcel/package.json +++ b/packages/dev/storybook-react-parcel/package.json @@ -2,25 +2,20 @@ "name": "storybook-react-parcel", "version": "0.0.1", "private": true, - "type": "module", - "main": "./preset.mjs", - "exports": { - ".": "./preset.mjs", - "./preset": "./preset.mjs" - }, + "main": "preset.js", "dependencies": { - "@storybook/react": "^10.0.0", + "@storybook/react": "^9.0.18", "storybook-builder-parcel": ">=0.0.1" }, "devDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", - "storybook": "^10.0.0" + "storybook": "^9.0.18" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", - "storybook": "^10.0.0" + "storybook": "^9.0.18" }, "scripts": { "build": "true", diff --git a/packages/dev/storybook-react-parcel/preset.js b/packages/dev/storybook-react-parcel/preset.js new file mode 100644 index 00000000000..b7149e91257 --- /dev/null +++ b/packages/dev/storybook-react-parcel/preset.js @@ -0,0 +1,4 @@ +module.exports.core = { + builder: "storybook-builder-parcel", + renderer: "@storybook/react", +}; diff --git a/packages/dev/storybook-react-parcel/preset.mjs b/packages/dev/storybook-react-parcel/preset.mjs deleted file mode 100644 index 61b7f6510ef..00000000000 --- a/packages/dev/storybook-react-parcel/preset.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { fileURLToPath } from "node:url"; - -// Storybook 10 requires core.builder to be a fully resolved entry-point path, -// not a package name or directory. See MIGRATION.md §"`core.builder` configuration -// must be a fully resolved path". -export const core = { - builder: fileURLToPath(import.meta.resolve("storybook-builder-parcel")), - // core.renderer has no path-resolution requirement in SB10; it stays as a bare - // package specifier and is resolved by Storybook's preset loader. - renderer: "@storybook/react", -}; diff --git a/yarn.lock b/yarn.lock index 6e418b65b4e..10bc876e12b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -188,17 +188,6 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.27.1": - version: 7.29.0 - resolution: "@babel/code-frame@npm:7.29.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.28.5" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.1.1" - checksum: 10c0/d34cc504e7765dfb576a663d97067afb614525806b5cad1a5cc1a7183b916fec8ff57fa233585e3926fd5a9e6b31aae6df91aa81ae9775fb7a28f658d3346f0d - languageName: node - linkType: hard - "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5, @babel/compat-data@npm:^7.24.4": version: 7.24.4 resolution: "@babel/compat-data@npm:7.24.4" @@ -255,19 +244,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.27.5": - version: 7.29.1 - resolution: "@babel/generator@npm:7.29.1" - dependencies: - "@babel/parser": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" - "@jridgewell/gen-mapping": "npm:^0.3.12" - "@jridgewell/trace-mapping": "npm:^0.3.28" - jsesc: "npm:^3.0.2" - checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -421,7 +397,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6": +"@babel/helper-plugin-utils@npm:^7.27.1": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d @@ -495,13 +471,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5" - checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 - languageName: node - linkType: hard - "@babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" @@ -750,17 +719,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.28.6 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/1be160e2c426faa74e5be2e30e39e8d0d8c543063bd5d06cd804f8751b8fbcb82ce824ca7f9ce4b09c003693f6c06a11ce503b7e34d85e1a259631e4c3f72ad2 - languageName: node - linkType: hard - "@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" @@ -794,17 +752,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/b98fc3cd75e4ca3d5ca1162f610c286e14ede1486e0d297c13a5eb0ac85680ac9656d17d348bddd9160a54d797a08cea5eaac02b9330ddebb7b26732b7b99fb5 - languageName: node - linkType: hard - "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -904,17 +851,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 - languageName: node - linkType: hard - "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1906,16 +1842,6 @@ __metadata: languageName: node linkType: hard -"@emnapi/core@npm:^1.4.3": - version: 1.10.0 - resolution: "@emnapi/core@npm:1.10.0" - dependencies: - "@emnapi/wasi-threads": "npm:1.2.1" - tslib: "npm:^2.4.0" - checksum: 10c0/f51d08227857b60632de7714d708124f0e100a1462dde6df8221760939aa3204a73193830371830fac0716f3ccd2129f2cac1b17cd7d7958bc4da9018a296edb - languageName: node - linkType: hard - "@emnapi/runtime@npm:^1.2.0": version: 1.3.1 resolution: "@emnapi/runtime@npm:1.3.1" @@ -1925,24 +1851,6 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.4.3": - version: 1.10.0 - resolution: "@emnapi/runtime@npm:1.10.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/953f14991d1aefb92ee6f8eb27dea725e484791a53a0cb5f47d9e0087b9a2c929ff2e92adf95af15d6ad456db6300c6b761ebf72b50a875b874a83520b3ba093 - languageName: node - linkType: hard - -"@emnapi/wasi-threads@npm:1.2.1": - version: 1.2.1 - resolution: "@emnapi/wasi-threads@npm:1.2.1" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/32fcfa81ab396533b2ec1f4082b1ff779a05d9c836bbbd3f4398405b0e6814c0d9503b7993130e37bc6941dbc1ded49f55e9700ae9ca4e803bab2b5bc5deb331 - languageName: node - linkType: hard - "@es-joy/jsdoccomment@npm:~0.49.0": version: 0.49.0 resolution: "@es-joy/jsdoccomment@npm:0.49.0" @@ -1954,6 +1862,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/aix-ppc64@npm:0.25.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.27.3": version: 0.27.3 resolution: "@esbuild/aix-ppc64@npm:0.27.3" @@ -1961,10 +1876,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/aix-ppc64@npm:0.27.7" - conditions: os=aix & cpu=ppc64 +"@esbuild/android-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/android-arm64@npm:0.25.5" + conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -1975,10 +1890,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-arm64@npm:0.27.7" - conditions: os=android & cpu=arm64 +"@esbuild/android-arm@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/android-arm@npm:0.25.5" + conditions: os=android & cpu=arm languageName: node linkType: hard @@ -1989,10 +1904,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-arm@npm:0.27.7" - conditions: os=android & cpu=arm +"@esbuild/android-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/android-x64@npm:0.25.5" + conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -2003,10 +1918,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/android-x64@npm:0.27.7" - conditions: os=android & cpu=x64 +"@esbuild/darwin-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/darwin-arm64@npm:0.25.5" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -2017,10 +1932,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/darwin-arm64@npm:0.27.7" - conditions: os=darwin & cpu=arm64 +"@esbuild/darwin-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/darwin-x64@npm:0.25.5" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -2031,10 +1946,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/darwin-x64@npm:0.27.7" - conditions: os=darwin & cpu=x64 +"@esbuild/freebsd-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/freebsd-arm64@npm:0.25.5" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -2045,10 +1960,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/freebsd-arm64@npm:0.27.7" - conditions: os=freebsd & cpu=arm64 +"@esbuild/freebsd-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/freebsd-x64@npm:0.25.5" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -2059,10 +1974,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/freebsd-x64@npm:0.27.7" - conditions: os=freebsd & cpu=x64 +"@esbuild/linux-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-arm64@npm:0.25.5" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -2073,10 +1988,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-arm64@npm:0.27.7" - conditions: os=linux & cpu=arm64 +"@esbuild/linux-arm@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-arm@npm:0.25.5" + conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -2087,10 +2002,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-arm@npm:0.27.7" - conditions: os=linux & cpu=arm +"@esbuild/linux-ia32@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-ia32@npm:0.25.5" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -2101,10 +2016,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-ia32@npm:0.27.7" - conditions: os=linux & cpu=ia32 +"@esbuild/linux-loong64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-loong64@npm:0.25.5" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -2115,10 +2030,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-loong64@npm:0.27.7" - conditions: os=linux & cpu=loong64 +"@esbuild/linux-mips64el@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-mips64el@npm:0.25.5" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -2129,10 +2044,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-mips64el@npm:0.27.7" - conditions: os=linux & cpu=mips64el +"@esbuild/linux-ppc64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-ppc64@npm:0.25.5" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -2143,10 +2058,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-ppc64@npm:0.27.7" - conditions: os=linux & cpu=ppc64 +"@esbuild/linux-riscv64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-riscv64@npm:0.25.5" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -2157,10 +2072,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-riscv64@npm:0.27.7" - conditions: os=linux & cpu=riscv64 +"@esbuild/linux-s390x@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-s390x@npm:0.25.5" + conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -2171,10 +2086,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-s390x@npm:0.27.7" - conditions: os=linux & cpu=s390x +"@esbuild/linux-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-x64@npm:0.25.5" + conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -2185,10 +2100,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/linux-x64@npm:0.27.7" - conditions: os=linux & cpu=x64 +"@esbuild/netbsd-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/netbsd-arm64@npm:0.25.5" + conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -2199,10 +2114,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/netbsd-arm64@npm:0.27.7" - conditions: os=netbsd & cpu=arm64 +"@esbuild/netbsd-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/netbsd-x64@npm:0.25.5" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -2213,10 +2128,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/netbsd-x64@npm:0.27.7" - conditions: os=netbsd & cpu=x64 +"@esbuild/openbsd-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/openbsd-arm64@npm:0.25.5" + conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -2227,10 +2142,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openbsd-arm64@npm:0.27.7" - conditions: os=openbsd & cpu=arm64 +"@esbuild/openbsd-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/openbsd-x64@npm:0.25.5" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -2241,13 +2156,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openbsd-x64@npm:0.27.7" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openharmony-arm64@npm:0.27.3": version: 0.27.3 resolution: "@esbuild/openharmony-arm64@npm:0.27.3" @@ -2255,10 +2163,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/openharmony-arm64@npm:0.27.7" - conditions: os=openharmony & cpu=arm64 +"@esbuild/sunos-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/sunos-x64@npm:0.25.5" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -2269,10 +2177,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/sunos-x64@npm:0.27.7" - conditions: os=sunos & cpu=x64 +"@esbuild/win32-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/win32-arm64@npm:0.25.5" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -2283,10 +2191,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-arm64@npm:0.27.7" - conditions: os=win32 & cpu=arm64 +"@esbuild/win32-ia32@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/win32-ia32@npm:0.25.5" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -2297,10 +2205,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-ia32@npm:0.27.7" - conditions: os=win32 & cpu=ia32 +"@esbuild/win32-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/win32-x64@npm:0.25.5" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2311,13 +2219,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.27.7": - version: 0.27.7 - resolution: "@esbuild/win32-x64@npm:0.27.7" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -2945,20 +2846,6 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/console@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - jest-message-util: "npm:30.3.0" - jest-util: "npm:30.3.0" - slash: "npm:^3.0.0" - checksum: 10c0/5458f26b0591b847b719a707cbd1d6b2b99960784a1480a28d19200a807b6092f066c1bd1810df8c6adebf934a64de7b6022dc35082cd7c8f09f35940da104d9 - languageName: node - linkType: hard - "@jest/console@npm:^29.7.0": version: 29.7.0 resolution: "@jest/console@npm:29.7.0" @@ -2973,46 +2860,6 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/core@npm:30.3.0" - dependencies: - "@jest/console": "npm:30.3.0" - "@jest/pattern": "npm:30.0.1" - "@jest/reporters": "npm:30.3.0" - "@jest/test-result": "npm:30.3.0" - "@jest/transform": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - exit-x: "npm:^0.2.2" - graceful-fs: "npm:^4.2.11" - jest-changed-files: "npm:30.3.0" - jest-config: "npm:30.3.0" - jest-haste-map: "npm:30.3.0" - jest-message-util: "npm:30.3.0" - jest-regex-util: "npm:30.0.1" - jest-resolve: "npm:30.3.0" - jest-resolve-dependencies: "npm:30.3.0" - jest-runner: "npm:30.3.0" - jest-runtime: "npm:30.3.0" - jest-snapshot: "npm:30.3.0" - jest-util: "npm:30.3.0" - jest-validate: "npm:30.3.0" - jest-watcher: "npm:30.3.0" - pretty-format: "npm:30.3.0" - slash: "npm:^3.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10c0/1735f2263cca10c6cae4e1dbde9c3ccb36e2cbd1cc10bac6fc45e187b06c4e33a6a029f9a6444a3cd43a2a44ffaec3b686d94f70965cebf2b885b198c8615322 - languageName: node - linkType: hard - "@jest/core@npm:^29.7.0": version: 29.7.0 resolution: "@jest/core@npm:29.7.0" @@ -3063,34 +2910,6 @@ __metadata: languageName: node linkType: hard -"@jest/create-cache-key-function@npm:^30.0.0": - version: 30.3.0 - resolution: "@jest/create-cache-key-function@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - checksum: 10c0/b1906d3b2230b6820877de065686c211bcbbe984cc40e09531b71b553e931505f837a453fdda481bee8686b8d572c95027d262af96789cbcbb6d58cbe0787fcc - languageName: node - linkType: hard - -"@jest/diff-sequences@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/diff-sequences@npm:30.3.0" - checksum: 10c0/8922c16a869b839b6c05f677023b3e5a9aa1610ad78a9c5ec8bd6654e35e8136ea1c7b60ad561910e2ad964bfdb0b09b0254ff8dcfacd4562095766f60c63d76 - languageName: node - linkType: hard - -"@jest/environment@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/environment@npm:30.3.0" - dependencies: - "@jest/fake-timers": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - jest-mock: "npm:30.3.0" - checksum: 10c0/4068ccc2e4761e52909239c21e71f73b57ad087bd120b75d3232c68d911686d68fd0fb20e19725517a624b0aa9d45431b00503bd1d5ab2f4958e1a18d265d8d5 - languageName: node - linkType: hard - "@jest/environment@npm:^29.5.0, @jest/environment@npm:^29.7.0": version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" @@ -3103,15 +2922,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/expect-utils@npm:30.3.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - checksum: 10c0/4bb60fb434cb8ed325735bd39171b61621e110502ecc502089805d203ecb17b9fc5a400aeffb83b41fabcc819628a9c38c955f90a716d6aaff193d10926fc854 - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -3121,16 +2931,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/expect@npm:30.3.0" - dependencies: - expect: "npm:30.3.0" - jest-snapshot: "npm:30.3.0" - checksum: 10c0/1e052975fdf2b977a63dc9f3db1de56be9dce8e5cd660d9c72cc25093324b990b3e93318cd0c1ff9df7cb30ec7eef71331bc7e19d39700eb3f4498e17ee4c9e0 - languageName: node - linkType: hard - "@jest/expect@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect@npm:29.7.0" @@ -3141,20 +2941,6 @@ __metadata: languageName: node linkType: hard -"@jest/fake-timers@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/fake-timers@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - "@sinonjs/fake-timers": "npm:^15.0.0" - "@types/node": "npm:*" - jest-message-util: "npm:30.3.0" - jest-mock: "npm:30.3.0" - jest-util: "npm:30.3.0" - checksum: 10c0/114855ca14d6b34c886855445852a5b960bc3df0ef97c4b971b375747fe0206b3111ec60efc6e658565677022f0d790acd7e232e478f3390ea854d04dea0c4d8 - languageName: node - linkType: hard - "@jest/fake-timers@npm:^29.5.0, @jest/fake-timers@npm:^29.7.0": version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" @@ -3169,25 +2955,6 @@ __metadata: languageName: node linkType: hard -"@jest/get-type@npm:30.1.0": - version: 30.1.0 - resolution: "@jest/get-type@npm:30.1.0" - checksum: 10c0/3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac - languageName: node - linkType: hard - -"@jest/globals@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/globals@npm:30.3.0" - dependencies: - "@jest/environment": "npm:30.3.0" - "@jest/expect": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - jest-mock: "npm:30.3.0" - checksum: 10c0/013554dcbf75867e715801e98a5c6eefbea67cb388efd019be9e0d83979d7354874c4b33bbabc95de698215f5b891e921c26a284841504f9825fd789432b1cd0 - languageName: node - linkType: hard - "@jest/globals@npm:^29.7.0": version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" @@ -3200,52 +2967,6 @@ __metadata: languageName: node linkType: hard -"@jest/pattern@npm:30.0.1": - version: 30.0.1 - resolution: "@jest/pattern@npm:30.0.1" - dependencies: - "@types/node": "npm:*" - jest-regex-util: "npm:30.0.1" - checksum: 10c0/32c5a7bfb6c591f004dac0ed36d645002ed168971e4c89bd915d1577031672870032594767557b855c5bc330aa1e39a2f54bf150d2ee88a7a0886e9cb65318bc - languageName: node - linkType: hard - -"@jest/reporters@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/reporters@npm:30.3.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:30.3.0" - "@jest/test-result": "npm:30.3.0" - "@jest/transform": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@jridgewell/trace-mapping": "npm:^0.3.25" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - collect-v8-coverage: "npm:^1.0.2" - exit-x: "npm:^0.2.2" - glob: "npm:^10.5.0" - graceful-fs: "npm:^4.2.11" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^5.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:30.3.0" - jest-util: "npm:30.3.0" - jest-worker: "npm:30.3.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.2" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10c0/e1b6fb13df94435d4b8e6f4d4bd1c27dfc572ca7393b0a95d14c98013abe3c962aa28e2c56864f3ddd0894834d21c9a67485d11e6c31532aaaeea66ca6a2a026 - languageName: node - linkType: hard - "@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" @@ -3283,15 +3004,6 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:30.0.5": - version: 30.0.5 - resolution: "@jest/schemas@npm:30.0.5" - dependencies: - "@sinclair/typebox": "npm:^0.34.0" - checksum: 10c0/449dcd7ec5c6505e9ac3169d1143937e67044ae3e66a729ce4baf31812dfd30535f2b3b2934393c97cfdf5984ff581120e6b38f62b8560c8b5b7cc07f4175f65 - languageName: node - linkType: hard - "@jest/schemas@npm:^28.1.3": version: 28.1.3 resolution: "@jest/schemas@npm:28.1.3" @@ -3310,29 +3022,6 @@ __metadata: languageName: node linkType: hard -"@jest/snapshot-utils@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/snapshot-utils@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - natural-compare: "npm:^1.4.0" - checksum: 10c0/ba4fea05a418b257d128d8f9eb7672a9004952563a45ad577bed80e5b2ea2ec6e6d3a24535781cc6530d9904d8fda7b27d15952d079ccdbe88f87a5e71112df0 - languageName: node - linkType: hard - -"@jest/source-map@npm:30.0.1": - version: 30.0.1 - resolution: "@jest/source-map@npm:30.0.1" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" - callsites: "npm:^3.1.0" - graceful-fs: "npm:^4.2.11" - checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 - languageName: node - linkType: hard - "@jest/source-map@npm:^29.6.3": version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" @@ -3344,18 +3033,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/test-result@npm:30.3.0" - dependencies: - "@jest/console": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/istanbul-lib-coverage": "npm:^2.0.6" - collect-v8-coverage: "npm:^1.0.2" - checksum: 10c0/67bcd405d0a1ac85b55afabf26e0ee0f184f9cfe0e659a44e0e4a4456c1c7fed9d2288f0116b017eaddfa49ded8c44426b8694c44f9a8a2af35be9202b8a9165 - languageName: node - linkType: hard - "@jest/test-result@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" @@ -3368,18 +3045,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/test-sequencer@npm:30.3.0" - dependencies: - "@jest/test-result": "npm:30.3.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.3.0" - slash: "npm:^3.0.0" - checksum: 10c0/698be35e7145e79ea9d66071d4ec255f6cef4b5972b5142d299f3edbcbc0428cadf8ddecc6d21e938c98ed72b73b15a6d5f81e7b8b370aaa130d2f6b26fd017c - languageName: node - linkType: hard - "@jest/test-sequencer@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-sequencer@npm:29.7.0" @@ -3392,28 +3057,6 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:30.3.0": - version: 30.3.0 - resolution: "@jest/transform@npm:30.3.0" - dependencies: - "@babel/core": "npm:^7.27.4" - "@jest/types": "npm:30.3.0" - "@jridgewell/trace-mapping": "npm:^0.3.25" - babel-plugin-istanbul: "npm:^7.0.1" - chalk: "npm:^4.1.2" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.3.0" - jest-regex-util: "npm:30.0.1" - jest-util: "npm:30.3.0" - pirates: "npm:^4.0.7" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^5.0.1" - checksum: 10c0/5ad0b5361910680b5160e3dc347c0beb75b4edc35a165ef4fc55837d01365179c276dd6f9cc80f7db94048c641b0c188757e1c98c6d4e9b55577956efbc00574 - languageName: node - linkType: hard - "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -3437,21 +3080,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:30.3.0, @jest/types@npm:^30.0.1": - version: 30.3.0 - resolution: "@jest/types@npm:30.3.0" - dependencies: - "@jest/pattern": "npm:30.0.1" - "@jest/schemas": "npm:30.0.5" - "@types/istanbul-lib-coverage": "npm:^2.0.6" - "@types/istanbul-reports": "npm:^3.0.4" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.33" - chalk: "npm:^4.1.2" - checksum: 10c0/c3e3f4de0b77a7ced345f47d3687b1094c1b6c1521529a7ca66a76f9a80194f79179a1dbc32d6761a5b67914a8f78be1e65d1408107efcb1f252c4a63b5ddd92 - languageName: node - linkType: hard - "@jest/types@npm:^27.4.2, @jest/types@npm:^27.5.1": version: 27.5.1 resolution: "@jest/types@npm:27.5.1" @@ -3490,26 +3118,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.12": - version: 0.3.13 - resolution: "@jridgewell/gen-mapping@npm:0.3.13" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b - languageName: node - linkType: hard - -"@jridgewell/remapping@npm:^2.3.5": - version: 2.3.5 - resolution: "@jridgewell/remapping@npm:2.3.5" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 - languageName: node - linkType: hard - "@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -3541,7 +3149,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": +"@jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 @@ -3568,16 +3176,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.28": - version: 0.3.31 - resolution: "@jridgewell/trace-mapping@npm:0.3.31" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 - languageName: node - linkType: hard - "@lerna/add@npm:3.18.0": version: 3.18.0 resolution: "@lerna/add@npm:3.18.0" @@ -4533,17 +4131,6 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^0.2.11": - version: 0.2.12 - resolution: "@napi-rs/wasm-runtime@npm:0.2.12" - dependencies: - "@emnapi/core": "npm:^1.4.3" - "@emnapi/runtime": "npm:^1.4.3" - "@tybys/wasm-util": "npm:^0.10.0" - checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d - languageName: node - linkType: hard - "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": version: 2.1.8-no-fsevents.3 resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" @@ -5932,7 +5519,7 @@ __metadata: "@parcel/plugin": "npm:^2.16.3" "@parcel/source-map": "npm:^2.1.1" react-docgen-typescript: "npm:^2.2.2" - storybook: "npm:^10.0.0" + storybook: "npm:^9.0.18" typescript: "npm:^5.5.0" languageName: unknown linkType: soft @@ -6267,13 +5854,6 @@ __metadata: languageName: node linkType: hard -"@pkgr/core@npm:^0.2.9": - version: 0.2.9 - resolution: "@pkgr/core@npm:0.2.9" - checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 - languageName: node - linkType: hard - "@polka/url@npm:^1.0.0-next.24": version: 1.0.0-next.29 resolution: "@polka/url@npm:1.0.0-next.29" @@ -9206,15 +8786,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.1": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 - languageName: node - linkType: hard - "@sinonjs/fake-timers@npm:^10.0.2": version: 10.0.2 resolution: "@sinonjs/fake-timers@npm:10.0.2" @@ -9224,15 +8795,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^15.0.0": - version: 15.3.2 - resolution: "@sinonjs/fake-timers@npm:15.3.2" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - checksum: 10c0/fea39af47e70acf7f6b431b857dc5b50886e1a19d48189bc7f9cf90806a9fdfd4931c04343558724772d429c47fb53df640fc8c8d6ddf6ad66164bd7cbd3220a - languageName: node - linkType: hard - "@spectrum-css/component-builder@workspace:^, @spectrum-css/component-builder@workspace:packages/@adobe/spectrum-css-builder-temp": version: 0.0.0-use.local resolution: "@spectrum-css/component-builder@workspace:packages/@adobe/spectrum-css-builder-temp" @@ -9345,79 +8907,75 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@npm:^10.0.0": - version: 10.3.5 - resolution: "@storybook/addon-a11y@npm:10.3.5" +"@storybook/addon-a11y@npm:^9.0.18": + version: 9.1.17 + resolution: "@storybook/addon-a11y@npm:9.1.17" dependencies: "@storybook/global": "npm:^5.0.0" axe-core: "npm:^4.2.0" peerDependencies: - storybook: ^10.3.5 - checksum: 10c0/e12228948d85cea75014f8d81c94cabf9ab73614d4d3ecae3064013d4dbc7d25f1e3a10306f613db0c508a098a376b1dc2113aa57afb3fd196b22ae613776943 + storybook: ^9.1.17 + checksum: 10c0/b5503785ca6e1f12d9bc0dd1909b81ce689f97f9395ab2a79572cfa9aad15cd20a706fdda53b2adeff9c437d966c191dea1ca28d3b0b4be28e5d3325aeeabe8b languageName: node linkType: hard -"@storybook/addon-docs@npm:^10.0.0": - version: 10.3.5 - resolution: "@storybook/addon-docs@npm:10.3.5" +"@storybook/addon-docs@npm:^9.0.18": + version: 9.1.17 + resolution: "@storybook/addon-docs@npm:9.1.17" dependencies: "@mdx-js/react": "npm:^3.0.0" - "@storybook/csf-plugin": "npm:10.3.5" - "@storybook/icons": "npm:^2.0.1" - "@storybook/react-dom-shim": "npm:10.3.5" + "@storybook/csf-plugin": "npm:9.1.17" + "@storybook/icons": "npm:^1.4.0" + "@storybook/react-dom-shim": "npm:9.1.17" react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^10.3.5 - checksum: 10c0/6f2d7aee8c565df7e16e9d69da1366fc02e9a399a2ad9c5d5b04790955f7b55a1418814cb83eaa7d7210c6496ff2541d2bd05225b36ac266d82b4d9f3caf40c7 + storybook: ^9.1.17 + checksum: 10c0/1d0cbe44b697c35529b2d6e89c9557dc797051d791a89539b90eccc4f10038d40fcca8339683ea15f9430c6121a9d461899f62406cff2ac5e6a623073de6aae3 languageName: node linkType: hard -"@storybook/addon-jest@npm:10.0.0-beta.12": - version: 10.0.0-beta.12 - resolution: "@storybook/addon-jest@npm:10.0.0-beta.12" +"@storybook/addon-jest@npm:^9.0.18": + version: 9.1.12 + resolution: "@storybook/addon-jest@npm:9.1.12" dependencies: tiny-invariant: "npm:^1.3.1" upath: "npm:^2.0.1" peerDependencies: - storybook: ^10.0.0-beta.12 - checksum: 10c0/d899834fef240743a72ca263b0432d9423ad78bfd7e79005e9b6cda3e1e6eee03f2ce54a1b36141a91126e5f76a4099505e5e5bc605c794584408f407d82fcce + storybook: ^9.1.12 + checksum: 10c0/904699d8200e112a2a6d25dd93ce9f0d7f1bde569921a6fcac811e0e1e530fc7a4b47c0715199547d19271a098d44c9d56afceda10b3d7172bce4bf0f0d73ed4 languageName: node linkType: hard -"@storybook/addon-themes@npm:^10.0.0": - version: 10.3.5 - resolution: "@storybook/addon-themes@npm:10.3.5" +"@storybook/addon-themes@npm:^9.0.18": + version: 9.1.17 + resolution: "@storybook/addon-themes@npm:9.1.17" dependencies: ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^10.3.5 - checksum: 10c0/fef56bb9c6d45fea53f4a5f0d209a7ba77a16f2b6665f38526e20bc50b755fbf3976f87848c85955e86828ec1a02762ac9b82c275f7f69b14b22b8fc8913eb60 + storybook: ^9.1.17 + checksum: 10c0/d33e5d9c55befab2fc8fc271ad5a50c215a366ffd8661d084a1e233c773b49073c067b400a6f279c36ce9fbc45e026e0967f5be39162cfd0efd4a3c89fc568d6 languageName: node linkType: hard -"@storybook/csf-plugin@npm:10.3.5": - version: 10.3.5 - resolution: "@storybook/csf-plugin@npm:10.3.5" +"@storybook/csf-plugin@npm:9.1.17": + version: 9.1.17 + resolution: "@storybook/csf-plugin@npm:9.1.17" dependencies: - unplugin: "npm:^2.3.5" + unplugin: "npm:^1.3.1" peerDependencies: - esbuild: "*" - rollup: "*" - storybook: ^10.3.5 - vite: "*" - webpack: "*" - peerDependenciesMeta: - esbuild: - optional: true - rollup: - optional: true - vite: - optional: true - webpack: - optional: true - checksum: 10c0/db9ee2b24f4affbed28ec162daa0223186b025e84374b93abe4b5cd0e38195b1bfa1e4553f2d9e99cac718a1f253035227c9153c04677fd3ad0022a39cfd6f5c + storybook: ^9.1.17 + checksum: 10c0/bbbaf788e954930c5bb48731a29e605ceae3e8c0463a330e6ac64a9b7ec7b06e6d2d11faec0c9767e8cf4447936f7fc61835dcb0ad5a5a4908a79eabb0eaf5f3 + languageName: node + linkType: hard + +"@storybook/csf@npm:^0.1.11": + version: 0.1.13 + resolution: "@storybook/csf@npm:0.1.13" + dependencies: + type-fest: "npm:^2.19.0" + checksum: 10c0/7c57b531ac95ca45239f498d419483d675e58cd8d549e0bac623519cc1ef4f3c9c6b75ec3873aa51cc2872728012db5dd5e1f2c2d8085014241eb4b896480996 languageName: node linkType: hard @@ -9437,13 +8995,13 @@ __metadata: languageName: node linkType: hard -"@storybook/icons@npm:^2.0.1": - version: 2.0.1 - resolution: "@storybook/icons@npm:2.0.1" +"@storybook/icons@npm:^1.4.0": + version: 1.6.0 + resolution: "@storybook/icons@npm:1.6.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/df2bbf1a5b50f12ab1bf78cae6de4dbf7c49df0e3a5f845553b51b20adbe8386a09fd172ea60342379f9284bb528cba2d0e2659cae6eb8d015cf92c8b32f1222 + 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 + checksum: 10c0/bbec9201a78a730195f9cf377b15856dc414a54d04e30d16c379d062425cc617bfd0d6586ba1716012cfbdab461f0c9693a6a52920f9bd09c7b4291fb116f59c languageName: node linkType: hard @@ -9459,67 +9017,63 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:10.3.5": - version: 10.3.5 - resolution: "@storybook/react-dom-shim@npm:10.3.5" +"@storybook/react-dom-shim@npm:9.1.17": + version: 9.1.17 + resolution: "@storybook/react-dom-shim@npm:9.1.17" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.5 - checksum: 10c0/53383a37a4507dbdb088bebb402f259126d678d63d4b83186b794192e8a8d6528852b223d8bd7f98645293e5f99cf5feb11bfa14e441a47de92d42d3aa04ecdb + 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: ^9.1.17 + checksum: 10c0/7484ea12ac772b744215ba0b70c041299e75e2732c1f7f74a9027e1378cd064e0b29309263507d7fb14570484dafee9bb5d3b20127ff18f78b4dee54e39ce121 languageName: node linkType: hard -"@storybook/react@npm:^10.0.0": - version: 10.3.5 - resolution: "@storybook/react@npm:10.3.5" +"@storybook/react@npm:^9.0.18": + version: 9.1.17 + resolution: "@storybook/react@npm:9.1.17" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/react-dom-shim": "npm:10.3.5" - react-docgen: "npm:^8.0.2" - react-docgen-typescript: "npm:^2.2.2" + "@storybook/react-dom-shim": "npm:9.1.17" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.5 + 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: ^9.1.17 typescript: ">= 4.9.x" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/708460a9f8055dfe8c86f383222f6e17484138537a317e3dcc457b578686302a0bfb566f3c921cba1bfcbd2378405046a360808b2d78601875cf6066d5dd4930 + checksum: 10c0/52139a2a079dae4aa904e00cf06f6e6023b7c7f6492e011d6c30866f9ad25b000d06a05a3505779b32ae57d9627bf5c6b522065d99dab499c5d582672c80fbff languageName: node linkType: hard -"@storybook/test-runner@npm:^0.24.0": - version: 0.24.3 - resolution: "@storybook/test-runner@npm:0.24.3" +"@storybook/test-runner@npm:^0.22.0": + version: 0.22.1 + resolution: "@storybook/test-runner@npm:0.22.1" dependencies: "@babel/core": "npm:^7.22.5" "@babel/generator": "npm:^7.22.5" "@babel/template": "npm:^7.22.5" "@babel/types": "npm:^7.22.5" - "@jest/types": "npm:^30.0.1" + "@jest/types": "npm:^29.6.3" + "@storybook/csf": "npm:^0.1.11" "@swc/core": "npm:^1.5.22" - "@swc/jest": "npm:^0.2.38" + "@swc/jest": "npm:^0.2.23" expect-playwright: "npm:^0.8.0" - jest: "npm:^30.0.4" - jest-circus: "npm:^30.0.4" - jest-environment-node: "npm:^30.0.4" + jest: "npm:^29.6.4" + jest-circus: "npm:^29.6.4" + jest-environment-node: "npm:^29.6.4" jest-junit: "npm:^16.0.0" - jest-process-manager: "npm:^0.4.0" - jest-runner: "npm:^30.0.4" + jest-playwright-preset: "npm:^4.0.0" + jest-runner: "npm:^29.6.4" jest-serializer-html: "npm:^7.1.0" - jest-watch-typeahead: "npm:^3.0.1" + jest-watch-typeahead: "npm:^2.0.0" nyc: "npm:^15.1.0" playwright: "npm:^1.14.0" - playwright-core: "npm:>=1.2.0" - rimraf: "npm:^3.0.2" - uuid: "npm:^8.3.2" peerDependencies: - storybook: ^0.0.0-0 || ^10.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 + storybook: ^0.0.0-0 || ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 || ^9.0.0-0 bin: test-storybook: dist/test-storybook.js - checksum: 10c0/581cc520e1baa4ea86103a2ca2fba00330906a817733927059d08655cf2d85af3c5cca10ed7e159b7c37f19d7575da38d499a955c46d40654b9fc296969871b0 + checksum: 10c0/2f9d3ba4cab137893b77ef1626ed9f328942c38c7dd8d6aa71eaccbfef5eb1afe350e080e6c5c88bc46b795a26749cd2186c64ad9a63b608866da9d3dad1f855 languageName: node linkType: hard @@ -9808,7 +9362,7 @@ __metadata: languageName: node linkType: hard -"@swc/jest@npm:^0.2.36": +"@swc/jest@npm:^0.2.23, @swc/jest@npm:^0.2.36": version: 0.2.37 resolution: "@swc/jest@npm:0.2.37" dependencies: @@ -9821,19 +9375,6 @@ __metadata: languageName: node linkType: hard -"@swc/jest@npm:^0.2.38": - version: 0.2.39 - resolution: "@swc/jest@npm:0.2.39" - dependencies: - "@jest/create-cache-key-function": "npm:^30.0.0" - "@swc/counter": "npm:^0.1.3" - jsonc-parser: "npm:^3.2.0" - peerDependencies: - "@swc/core": "*" - checksum: 10c0/2df5f215bb7a3f31e1db606e3ac01c4e67900e8db004b38dbfaa09f87bcc2b054070211086e095eddcd174ee561b696fcf679ea38263fa6daf69fee37dacbdc9 - languageName: node - linkType: hard - "@swc/types@npm:^0.1.23": version: 0.1.23 resolution: "@swc/types@npm:0.1.23" @@ -10051,7 +9592,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.9.1": +"@testing-library/jest-dom@npm:^6.6.3": version: 6.9.1 resolution: "@testing-library/jest-dom@npm:6.9.1" dependencies: @@ -10156,15 +9697,6 @@ __metadata: languageName: node linkType: hard -"@tybys/wasm-util@npm:^0.10.0": - version: 0.10.1 - resolution: "@tybys/wasm-util@npm:0.10.1" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 - languageName: node - linkType: hard - "@types/acorn@npm:^4.0.0": version: 4.0.6 resolution: "@types/acorn@npm:4.0.6" @@ -10222,15 +9754,6 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:^7.20.7": - version: 7.28.0 - resolution: "@types/babel__traverse@npm:7.28.0" - dependencies: - "@babel/types": "npm:^7.28.2" - checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 - languageName: node - linkType: hard - "@types/chai@npm:^5.2.2": version: 5.2.3 resolution: "@types/chai@npm:5.2.3" @@ -10264,13 +9787,6 @@ __metadata: languageName: node linkType: hard -"@types/doctrine@npm:^0.0.9": - version: 0.0.9 - resolution: "@types/doctrine@npm:0.0.9" - checksum: 10c0/cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c - languageName: node - linkType: hard - "@types/estree-jsx@npm:^0.0.1": version: 0.0.1 resolution: "@types/estree-jsx@npm:0.0.1" @@ -10366,13 +9882,6 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:^2.0.6": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 - languageName: node - linkType: hard - "@types/istanbul-lib-report@npm:*": version: 1.1.1 resolution: "@types/istanbul-lib-report@npm:1.1.1" @@ -10391,15 +9900,6 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.4": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee - languageName: node - linkType: hard - "@types/jest@npm:*, @types/jest@npm:28.1.3": version: 28.1.3 resolution: "@types/jest@npm:28.1.3" @@ -10555,13 +10055,6 @@ __metadata: languageName: node linkType: hard -"@types/resolve@npm:^1.20.2": - version: 1.20.6 - resolution: "@types/resolve@npm:1.20.6" - checksum: 10c0/a9b0549d816ff2c353077365d865a33655a141d066d0f5a3ba6fd4b28bc2f4188a510079f7c1f715b3e7af505a27374adce2a5140a3ece2a059aab3d6e1a4244 - languageName: node - linkType: hard - "@types/responselike@npm:^1.0.0": version: 1.0.3 resolution: "@types/responselike@npm:1.0.3" @@ -10578,13 +10071,6 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.3": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c - languageName: node - linkType: hard - "@types/testing-library__jest-dom@npm:^5.9.1": version: 5.9.2 resolution: "@types/testing-library__jest-dom@npm:5.9.2" @@ -10647,15 +10133,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.33": - version: 17.0.35 - resolution: "@types/yargs@npm:17.0.35" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 - languageName: node - linkType: hard - "@types/yargs@npm:^17.0.8": version: 17.0.24 resolution: "@types/yargs@npm:17.0.24" @@ -10943,148 +10420,6 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.3.0": - version: 1.3.0 - resolution: "@ungap/structured-clone@npm:1.3.0" - checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-x64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" - dependencies: - "@napi-rs/wasm-runtime": "npm:^0.2.11" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@verdaccio/auth@npm:8.0.0-next-8.7": version: 8.0.0-next-8.7 resolution: "@verdaccio/auth@npm:8.0.0-next-8.7" @@ -11423,6 +10758,25 @@ __metadata: languageName: node linkType: hard +"@vitest/mocker@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/mocker@npm:3.2.4" + dependencies: + "@vitest/spy": "npm:3.2.4" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.17" + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10c0/f7a4aea19bbbf8f15905847ee9143b6298b2c110f8b64789224cb0ffdc2e96f9802876aa2ca83f1ec1b6e1ff45e822abb34f0054c24d57b29ab18add06536ccd + languageName: node + linkType: hard + "@vitest/mocker@npm:4.0.18": version: 4.0.18 resolution: "@vitest/mocker@npm:4.0.18" @@ -11518,22 +10872,15 @@ __metadata: languageName: node linkType: hard -"@vueless/storybook-dark-mode@npm:^10.0.0": - version: 10.0.7 - resolution: "@vueless/storybook-dark-mode@npm:10.0.7" +"@vueless/storybook-dark-mode@npm:^9.0.6": + version: 9.0.10 + resolution: "@vueless/storybook-dark-mode@npm:9.0.10" dependencies: "@storybook/global": "npm:^5.0.0" - lodash-es: "npm:^4.17.23" - peerDependencies: - storybook: ^10.0.0 - checksum: 10c0/425240586b184c25a6beadb0bac3d98c6a43d3ef303eb57bd3b57373d6dcf5c20a1a0cc19287761379c89f599ffb539c77a3270ef53c14d69267ab5990c20962 - languageName: node - linkType: hard - -"@webcontainer/env@npm:^1.1.1": - version: 1.1.1 - resolution: "@webcontainer/env@npm:1.1.1" - checksum: 10c0/bc64114ffa7ee92f4985cc2bdd5e27f6f31d892b9aa5cde68eaf93df02d13ee6edf13faeebdd701464183b6f8f9c47c14975958cdd6fc20e7356ad32f6ee39e7 + "@storybook/icons": "npm:^1.4.0" + fast-deep-equal: "npm:^3.1.3" + memoizerific: "npm:^1.11.3" + checksum: 10c0/ed40d00989d4a4c572d7d5bade7e25626269bbd1cef6c7bdd3121b1aa8080401b193f8aaf833647a1abae0b9aa1053f1a958c7b85c586768f6283cad26bb6a0e languageName: node linkType: hard @@ -11672,15 +11019,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0": - version: 8.16.0 - resolution: "acorn@npm:8.16.0" - bin: - acorn: bin/acorn - checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e - languageName: node - linkType: hard - "agent-base@npm:4, agent-base@npm:^4.3.0": version: 4.3.0 resolution: "agent-base@npm:4.3.0" @@ -11801,21 +11139,12 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.3.2": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 - languageName: node - linkType: hard - -"ansi-escapes@npm:^7.0.0": - version: 7.3.0 - resolution: "ansi-escapes@npm:7.3.0" +"ansi-escapes@npm:^6.0.0": + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" dependencies: - environment: "npm:^1.0.0" - checksum: 10c0/068961d99f0ef28b661a4a9f84a5d645df93ccf3b9b93816cc7d46bbe1913321d4cdf156bb842a4e1e4583b7375c631fa963efb43001c4eb7ff9ab8f78fc0679 + type-fest: "npm:^3.0.0" + checksum: 10c0/3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e languageName: node linkType: hard @@ -11854,13 +11183,6 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^6.2.2": - version: 6.2.2 - resolution: "ansi-regex@npm:6.2.2" - checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f - languageName: node - linkType: hard - "ansi-styles@npm:^2.2.1": version: 2.2.1 resolution: "ansi-styles@npm:2.2.1" @@ -11887,7 +11209,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": +"ansi-styles@npm:^5.0.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df @@ -12542,25 +11864,8 @@ __metadata: version: 7.0.0-bridge.0 resolution: "babel-core@npm:7.0.0-bridge.0" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 - languageName: node - linkType: hard - -"babel-jest@npm:30.3.0": - version: 30.3.0 - resolution: "babel-jest@npm:30.3.0" - dependencies: - "@jest/transform": "npm:30.3.0" - "@types/babel__core": "npm:^7.20.5" - babel-plugin-istanbul: "npm:^7.0.1" - babel-preset-jest: "npm:30.3.0" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-0 - checksum: 10c0/5e41e124a404ddb78aa37a20336d7c883feab5ad9c4f4c72ae26db71be2fcca345874b9a7fef97d9c5f64f144a264b247ebde8acfe493578320f314ca581bac3 + "@babel/core": ^7.0.0-0 + checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 languageName: node linkType: hard @@ -12603,28 +11908,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-istanbul@npm:^7.0.1": - version: 7.0.1 - resolution: "babel-plugin-istanbul@npm:7.0.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-instrument: "npm:^6.0.2" - test-exclude: "npm:^6.0.0" - checksum: 10c0/92975e3df12503b168695463b451468da0c20e117807221652eb8e33a26c160f3b9d4c5c4e65495657420e871c6a54e5e31f539e2e1da37ef2261d7ddd4b1dfd - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:30.3.0": - version: 30.3.0 - resolution: "babel-plugin-jest-hoist@npm:30.3.0" - dependencies: - "@types/babel__core": "npm:^7.20.5" - checksum: 10c0/5e15900a6487356131e084970f4a9ebe24b702d74930f786e897d4fab90b0987054f66661a3570ea692f429dcd158c2214c97ecf08f7356cbc60029d7b277c74 - languageName: node - linkType: hard - "babel-plugin-jest-hoist@npm:^29.6.3": version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" @@ -12724,43 +12007,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.2.0": - version: 1.2.0 - resolution: "babel-preset-current-node-syntax@npm:1.2.0" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0 || ^8.0.0-0 - checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 - languageName: node - linkType: hard - -"babel-preset-jest@npm:30.3.0": - version: 30.3.0 - resolution: "babel-preset-jest@npm:30.3.0" - dependencies: - babel-plugin-jest-hoist: "npm:30.3.0" - babel-preset-current-node-syntax: "npm:^1.2.0" - peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-beta.1 - checksum: 10c0/a6839a1527d254bf04e82c0cf61a6a2aa283123a74f0a552e6fce462cb990abebab75a13ec3e9c58b09a865d4d2dfbac710c2d3975ae3ce6f2707cb314915c66 - languageName: node - linkType: hard - "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -12936,6 +12182,15 @@ __metadata: languageName: node linkType: hard +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: "npm:^8.0.4" + checksum: 10c0/911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -13106,15 +12361,6 @@ __metadata: languageName: node linkType: hard -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 - languageName: node - linkType: hard - "bser@npm:^2.0.0": version: 2.1.0 resolution: "bser@npm:2.1.0" @@ -13162,15 +12408,6 @@ __metadata: languageName: node linkType: hard -"bundle-name@npm:^4.1.0": - version: 4.1.0 - resolution: "bundle-name@npm:4.1.0" - dependencies: - run-applescript: "npm:^7.0.0" - checksum: 10c0/8e575981e79c2bcf14d8b1c027a3775c095d362d1382312f444a7c861b0e21513c0bd8db5bd2b16e50ba0709fa622d4eab6b53192d222120305e68359daece29 - languageName: node - linkType: hard - "byline@npm:^5.0.0": version: 5.0.0 resolution: "byline@npm:5.0.0" @@ -13341,7 +12578,7 @@ __metadata: languageName: node linkType: hard -"callsites@npm:^3.0.0, callsites@npm:^3.1.0": +"callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 @@ -13390,7 +12627,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": +"camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 @@ -13510,6 +12747,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^2.0.0": + version: 2.0.1 + resolution: "char-regex@npm:2.0.1" + checksum: 10c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 + languageName: node + linkType: hard + "character-entities-html4@npm:^2.0.0": version: 2.1.0 resolution: "character-entities-html4@npm:2.1.0" @@ -13639,13 +12883,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.2.0": - version: 4.4.0 - resolution: "ci-info@npm:4.4.0" - checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.2.2 resolution: "cjs-module-lexer@npm:1.2.2" @@ -13653,13 +12890,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^2.1.0": - version: 2.2.0 - resolution: "cjs-module-lexer@npm:2.2.0" - checksum: 10c0/aec4ca58f87145fac221386790ecaae8b012f2e2359a45acb61d8c75ea4fa84f6ea869f17abc1a7e91a808eff0fed581209632f03540de16f72f0a28f5fd35ac - languageName: node - linkType: hard - "class-utils@npm:^0.3.5": version: 0.3.6 resolution: "class-utils@npm:0.3.6" @@ -13856,13 +13086,6 @@ __metadata: languageName: node linkType: hard -"collect-v8-coverage@npm:^1.0.2": - version: 1.0.3 - resolution: "collect-v8-coverage@npm:1.0.3" - checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc - languageName: node - linkType: hard - "collection-visit@npm:^1.0.0": version: 1.0.0 resolution: "collection-visit@npm:1.0.0" @@ -14980,18 +14203,6 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.6.0": - version: 1.7.2 - resolution: "dedent@npm:1.7.2" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 10c0/acaff07cac355b93f17b1b17ebbb84d3cc55af6ab4b7814c3f505e061903e168bc6bf9ddce331552d64dee1525f0b4c549c9ade46aebfac6f69caaed74e90751 - languageName: node - linkType: hard - "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -15046,23 +14257,6 @@ __metadata: languageName: node linkType: hard -"default-browser-id@npm:^5.0.0": - version: 5.0.1 - resolution: "default-browser-id@npm:5.0.1" - checksum: 10c0/5288b3094c740ef3a86df9b999b04ff5ba4dee6b64e7b355c0fff5217752c8c86908d67f32f6cba9bb4f9b7b61a1b640c0a4f9e34c57e0ff3493559a625245ee - languageName: node - linkType: hard - -"default-browser@npm:^5.2.1": - version: 5.5.0 - resolution: "default-browser@npm:5.5.0" - dependencies: - bundle-name: "npm:^4.1.0" - default-browser-id: "npm:^5.0.0" - checksum: 10c0/576593b617b17a7223014b4571bfe1c06a2581a4eb8b130985d90d253afa3f40999caec70eb0e5776e80d4af6a41cce91018cd3f86e57ad578bf59e46fb19abe - languageName: node - linkType: hard - "default-require-extensions@npm:^3.0.0": version: 3.0.1 resolution: "default-require-extensions@npm:3.0.1" @@ -15092,10 +14286,10 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^3.0.0": - version: 3.0.0 - resolution: "define-lazy-prop@npm:3.0.0" - checksum: 10c0/5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 languageName: node linkType: hard @@ -15217,7 +14411,7 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0, detect-newline@npm:^3.1.0": +"detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d @@ -15698,13 +14892,6 @@ __metadata: languageName: node linkType: hard -"environment@npm:^1.0.0": - version: 1.1.0 - resolution: "environment@npm:1.1.0" - checksum: 10c0/fb26434b0b581ab397039e51ff3c92b34924a98b2039dcb47e41b7bca577b9dbf134a8eadb364415c74464b682e2d3afe1a4c0eb9873dc44ea814c5d3103331d - languageName: node - linkType: hard - "err-code@npm:^1.0.0": version: 1.1.2 resolution: "err-code@npm:1.1.2" @@ -15986,36 +15173,46 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0": - version: 0.27.7 - resolution: "esbuild@npm:0.27.7" - dependencies: - "@esbuild/aix-ppc64": "npm:0.27.7" - "@esbuild/android-arm": "npm:0.27.7" - "@esbuild/android-arm64": "npm:0.27.7" - "@esbuild/android-x64": "npm:0.27.7" - "@esbuild/darwin-arm64": "npm:0.27.7" - "@esbuild/darwin-x64": "npm:0.27.7" - "@esbuild/freebsd-arm64": "npm:0.27.7" - "@esbuild/freebsd-x64": "npm:0.27.7" - "@esbuild/linux-arm": "npm:0.27.7" - "@esbuild/linux-arm64": "npm:0.27.7" - "@esbuild/linux-ia32": "npm:0.27.7" - "@esbuild/linux-loong64": "npm:0.27.7" - "@esbuild/linux-mips64el": "npm:0.27.7" - "@esbuild/linux-ppc64": "npm:0.27.7" - "@esbuild/linux-riscv64": "npm:0.27.7" - "@esbuild/linux-s390x": "npm:0.27.7" - "@esbuild/linux-x64": "npm:0.27.7" - "@esbuild/netbsd-arm64": "npm:0.27.7" - "@esbuild/netbsd-x64": "npm:0.27.7" - "@esbuild/openbsd-arm64": "npm:0.27.7" - "@esbuild/openbsd-x64": "npm:0.27.7" - "@esbuild/openharmony-arm64": "npm:0.27.7" - "@esbuild/sunos-x64": "npm:0.27.7" - "@esbuild/win32-arm64": "npm:0.27.7" - "@esbuild/win32-ia32": "npm:0.27.7" - "@esbuild/win32-x64": "npm:0.27.7" +"esbuild-register@npm:^3.5.0": + version: 3.5.0 + resolution: "esbuild-register@npm:3.5.0" + dependencies: + debug: "npm:^4.3.4" + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 10c0/9ccd0573cb66018e4cce3c1416eed0f5f3794c7026ce469a94e2f8761335abed8e363fc8e8bb036ab9ad7e579bb4296b8568a04ae5626596c123576b0d9c9bde + languageName: node + linkType: hard + +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0": + version: 0.25.5 + resolution: "esbuild@npm:0.25.5" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.5" + "@esbuild/android-arm": "npm:0.25.5" + "@esbuild/android-arm64": "npm:0.25.5" + "@esbuild/android-x64": "npm:0.25.5" + "@esbuild/darwin-arm64": "npm:0.25.5" + "@esbuild/darwin-x64": "npm:0.25.5" + "@esbuild/freebsd-arm64": "npm:0.25.5" + "@esbuild/freebsd-x64": "npm:0.25.5" + "@esbuild/linux-arm": "npm:0.25.5" + "@esbuild/linux-arm64": "npm:0.25.5" + "@esbuild/linux-ia32": "npm:0.25.5" + "@esbuild/linux-loong64": "npm:0.25.5" + "@esbuild/linux-mips64el": "npm:0.25.5" + "@esbuild/linux-ppc64": "npm:0.25.5" + "@esbuild/linux-riscv64": "npm:0.25.5" + "@esbuild/linux-s390x": "npm:0.25.5" + "@esbuild/linux-x64": "npm:0.25.5" + "@esbuild/netbsd-arm64": "npm:0.25.5" + "@esbuild/netbsd-x64": "npm:0.25.5" + "@esbuild/openbsd-arm64": "npm:0.25.5" + "@esbuild/openbsd-x64": "npm:0.25.5" + "@esbuild/sunos-x64": "npm:0.25.5" + "@esbuild/win32-arm64": "npm:0.25.5" + "@esbuild/win32-ia32": "npm:0.25.5" + "@esbuild/win32-x64": "npm:0.25.5" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -16059,8 +15256,6 @@ __metadata: optional: true "@esbuild/openbsd-x64": optional: true - "@esbuild/openharmony-arm64": - optional: true "@esbuild/sunos-x64": optional: true "@esbuild/win32-arm64": @@ -16071,7 +15266,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/ccd51f0555708bc9ff4ec9dc3ac92d3daacd45ecaac949ca8645984c5c323bf8cefe98c2df307418685e0b4ce37f9a3bdbfe8e3651fe632a0059a436195a17d4 + checksum: 10c0/aba8cbc11927fa77562722ed5e95541ce2853f67ad7bdc40382b558abc2e0ec57d92ffb820f082ba2047b4ef9f3bc3da068cdebe30dfd3850cfa3827a78d604e languageName: node linkType: hard @@ -16699,13 +15894,6 @@ __metadata: languageName: node linkType: hard -"exit-x@npm:^0.2.2": - version: 0.2.2 - resolution: "exit-x@npm:0.2.2" - checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 - languageName: node - linkType: hard - "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -16760,20 +15948,6 @@ __metadata: languageName: node linkType: hard -"expect@npm:30.3.0": - version: 30.3.0 - resolution: "expect@npm:30.3.0" - dependencies: - "@jest/expect-utils": "npm:30.3.0" - "@jest/get-type": "npm:30.1.0" - jest-matcher-utils: "npm:30.3.0" - jest-message-util: "npm:30.3.0" - jest-mock: "npm:30.3.0" - jest-util: "npm:30.3.0" - checksum: 10c0/a07a157a0c8b3f1e29bfe5ccbf03a3add2c69fe60d1af8a0980053bb6403d721d5f5e4616f1ea5833b747913f8c880c79ce4d98c23a71a2f0c27cf7273892576 - languageName: node - linkType: hard - "expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -17081,15 +16255,6 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.2": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: "npm:2.1.1" - checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 - languageName: node - linkType: hard - "fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" @@ -17655,7 +16820,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.3, fsevents@npm:~2.3.3": +"fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -17674,7 +16839,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -18073,22 +17238,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.5.0": - version: 10.5.0 - resolution: "glob@npm:10.5.0" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 - languageName: node - linkType: hard - "glob@npm:^11.0.0, glob@npm:^11.0.3": version: 11.0.3 resolution: "glob@npm:11.0.3" @@ -19107,18 +18256,6 @@ __metadata: languageName: node linkType: hard -"import-local@npm:^3.2.0": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 - languageName: node - linkType: hard - "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -19605,12 +18742,12 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^3.0.0": - version: 3.0.0 - resolution: "is-docker@npm:3.0.0" +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" bin: is-docker: cli.js - checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc languageName: node linkType: hard @@ -19687,7 +18824,7 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0, is-generator-fn@npm:^2.1.0": +"is-generator-fn@npm:^2.0.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d @@ -19735,17 +18872,6 @@ __metadata: languageName: node linkType: hard -"is-inside-container@npm:^1.0.0": - version: 1.0.0 - resolution: "is-inside-container@npm:1.0.0" - dependencies: - is-docker: "npm:^3.0.0" - bin: - is-inside-container: cli.js - checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd - languageName: node - linkType: hard - "is-installed-globally@npm:^0.1.0": version: 0.1.0 resolution: "is-installed-globally@npm:0.1.0" @@ -20161,12 +19287,12 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^3.1.0": - version: 3.1.1 - resolution: "is-wsl@npm:3.1.1" +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" dependencies: - is-inside-container: "npm:^1.0.0" - checksum: 10c0/7e5023522bfb8f27de4de960b0d82c4a8146c0bddb186529a3616d78b5bbbfc19ef0c5fc60d0b3a3cc0bf95a415fbdedc18454310ea3049587c879b07ace5107 + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e languageName: node linkType: hard @@ -20282,19 +19408,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.2": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" - dependencies: - "@babel/core": "npm:^7.23.9" - "@babel/parser": "npm:^7.23.9" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 - languageName: node - linkType: hard - "istanbul-lib-processinfo@npm:^2.0.2": version: 2.0.3 resolution: "istanbul-lib-processinfo@npm:2.0.3" @@ -20331,17 +19444,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^5.0.0": - version: 5.0.6 - resolution: "istanbul-lib-source-maps@npm:5.0.6" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.23" - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f - languageName: node - linkType: hard - "istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3": version: 3.1.5 resolution: "istanbul-reports@npm:3.1.5" @@ -20387,17 +19489,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:30.3.0": - version: 30.3.0 - resolution: "jest-changed-files@npm:30.3.0" - dependencies: - execa: "npm:^5.1.1" - jest-util: "npm:30.3.0" - p-limit: "npm:^3.1.0" - checksum: 10c0/5a2f9790f8ab7f5804ebbf0fcdd908c40286d602d76abbecc6bea72e7f3c60b77dc8a3d3f5acdddd11653b2574f471a5c126ceda0734bc6a7d607cf145843525 - languageName: node - linkType: hard - "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -20409,35 +19500,7 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:30.3.0, jest-circus@npm:^30.0.4": - version: 30.3.0 - resolution: "jest-circus@npm:30.3.0" - dependencies: - "@jest/environment": "npm:30.3.0" - "@jest/expect": "npm:30.3.0" - "@jest/test-result": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - co: "npm:^4.6.0" - dedent: "npm:^1.6.0" - is-generator-fn: "npm:^2.1.0" - jest-each: "npm:30.3.0" - jest-matcher-utils: "npm:30.3.0" - jest-message-util: "npm:30.3.0" - jest-runtime: "npm:30.3.0" - jest-snapshot: "npm:30.3.0" - jest-util: "npm:30.3.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:30.3.0" - pure-rand: "npm:^7.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.6" - checksum: 10c0/a3a0eb973699b400fb6de4207a7fbc5b33f51523e5e94f954d0e6e60418ea95099883614495fce54d805a321cb65e883592048b73203a59b8f4e53d1bb975a07 - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": +"jest-circus@npm:^29.6.4, jest-circus@npm:^29.7.0": version: 29.7.0 resolution: "jest-circus@npm:29.7.0" dependencies: @@ -20465,31 +19528,6 @@ __metadata: languageName: node linkType: hard -"jest-cli@npm:30.3.0": - version: 30.3.0 - resolution: "jest-cli@npm:30.3.0" - dependencies: - "@jest/core": "npm:30.3.0" - "@jest/test-result": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - chalk: "npm:^4.1.2" - exit-x: "npm:^0.2.2" - import-local: "npm:^3.2.0" - jest-config: "npm:30.3.0" - jest-util: "npm:30.3.0" - jest-validate: "npm:30.3.0" - yargs: "npm:^17.7.2" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: ./bin/jest.js - checksum: 10c0/764d77551e0fb6d666212e89d01be6f7bb1a2b3adb918bba7c5c37593a11b01cf2af645506c2b6438335cfc79bfcf41bfd4680958d8ca751851752a7c66269d3 - languageName: node - linkType: hard - "jest-cli@npm:^29.7.0": version: 29.7.0 resolution: "jest-cli@npm:29.7.0" @@ -20516,48 +19554,6 @@ __metadata: languageName: node linkType: hard -"jest-config@npm:30.3.0": - version: 30.3.0 - resolution: "jest-config@npm:30.3.0" - dependencies: - "@babel/core": "npm:^7.27.4" - "@jest/get-type": "npm:30.1.0" - "@jest/pattern": "npm:30.0.1" - "@jest/test-sequencer": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - babel-jest: "npm:30.3.0" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - deepmerge: "npm:^4.3.1" - glob: "npm:^10.5.0" - graceful-fs: "npm:^4.2.11" - jest-circus: "npm:30.3.0" - jest-docblock: "npm:30.2.0" - jest-environment-node: "npm:30.3.0" - jest-regex-util: "npm:30.0.1" - jest-resolve: "npm:30.3.0" - jest-runner: "npm:30.3.0" - jest-util: "npm:30.3.0" - jest-validate: "npm:30.3.0" - parse-json: "npm:^5.2.0" - pretty-format: "npm:30.3.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - esbuild-register: ">=3.4.0" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - esbuild-register: - optional: true - ts-node: - optional: true - checksum: 10c0/157607e5ac5e83924df97d992fbd40a1540af07c5a7be296fae49455b3729687847304f3b4a9112e7da17593b76cec3453cd55c1ecd4334f7318f2489d7d10a1 - languageName: node - linkType: hard - "jest-config@npm:^29.7.0": version: 29.7.0 resolution: "jest-config@npm:29.7.0" @@ -20596,18 +19592,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:30.3.0": - version: 30.3.0 - resolution: "jest-diff@npm:30.3.0" - dependencies: - "@jest/diff-sequences": "npm:30.3.0" - "@jest/get-type": "npm:30.1.0" - chalk: "npm:^4.1.2" - pretty-format: "npm:30.3.0" - checksum: 10c0/573a2a1a155b95fbde547d8ee33a5375179a8d03d4586025478dac16d695e4614aef075c3afa57e0f3a96cea8f638fa68a55c1e625f6e86b4f5b9e5850311ffb - languageName: node - linkType: hard - "jest-diff@npm:^28.1.3": version: 28.1.3 resolution: "jest-diff@npm:28.1.3" @@ -20632,15 +19616,6 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:30.2.0": - version: 30.2.0 - resolution: "jest-docblock@npm:30.2.0" - dependencies: - detect-newline: "npm:^3.1.0" - checksum: 10c0/2578366604eef1b36d59ffe1fc52a710995571535d437f83d94ff94756a83f78e699c1ba004c38a34c01859d669fd6c64e865c23c5a7d5bf4837cfca4bef3dda - languageName: node - linkType: hard - "jest-docblock@npm:^29.7.0": version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" @@ -20650,19 +19625,6 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:30.3.0": - version: 30.3.0 - resolution: "jest-each@npm:30.3.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - "@jest/types": "npm:30.3.0" - chalk: "npm:^4.1.2" - jest-util: "npm:30.3.0" - pretty-format: "npm:30.3.0" - checksum: 10c0/d23d2b43b3ea42beaf99648e2cf1c74b8a13c3e45c7c882979171471c225f7d666cb4a0d5f1ff9031b4504866fa3badc7266ffd885d3d8035420c559a31501e1 - languageName: node - linkType: hard - "jest-each@npm:^29.7.0": version: 29.7.0 resolution: "jest-each@npm:29.7.0" @@ -20697,22 +19659,7 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:30.3.0, jest-environment-node@npm:^30.0.4": - version: 30.3.0 - resolution: "jest-environment-node@npm:30.3.0" - dependencies: - "@jest/environment": "npm:30.3.0" - "@jest/fake-timers": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - jest-mock: "npm:30.3.0" - jest-util: "npm:30.3.0" - jest-validate: "npm:30.3.0" - checksum: 10c0/2a4be80861e569fa11456d89ff2aaedd71726ae02ade8f2cc6fbc86ba8749e24c37864676c4718fc08a40f6e6d2b2b51bc48d715b09b1e93e15e42e4a10f7b5b - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.7.0": +"jest-environment-node@npm:^29.6.4, jest-environment-node@npm:^29.7.0": version: 29.7.0 resolution: "jest-environment-node@npm:29.7.0" dependencies: @@ -20740,28 +19687,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:30.3.0": - version: 30.3.0 - resolution: "jest-haste-map@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - anymatch: "npm:^3.1.3" - fb-watchman: "npm:^2.0.2" - fsevents: "npm:^2.3.3" - graceful-fs: "npm:^4.2.11" - jest-regex-util: "npm:30.0.1" - jest-util: "npm:30.3.0" - jest-worker: "npm:30.3.0" - picomatch: "npm:^4.0.3" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/b9ef350082b15d4c119d6188f781024d859d6cfb17ae25d15c90c3a373234e16109afbeffdcf1af4baf6a85eb0cbbab00439c981ad43037c0f05d89ff98bd1af - languageName: node - linkType: hard - "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -20809,16 +19734,6 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:30.3.0": - version: 30.3.0 - resolution: "jest-leak-detector@npm:30.3.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - pretty-format: "npm:30.3.0" - checksum: 10c0/a648c082b74e6c7d0c2e890002094ba97b108398fa3d0316958fc74321aa7b0824507a685d261a463856f219a724b86a6073bac86d351cf0675ecf962c1ee0ca - languageName: node - linkType: hard - "jest-leak-detector@npm:^29.7.0": version: 29.7.0 resolution: "jest-leak-detector@npm:29.7.0" @@ -20829,18 +19744,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:30.3.0": - version: 30.3.0 - resolution: "jest-matcher-utils@npm:30.3.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - chalk: "npm:^4.1.2" - jest-diff: "npm:30.3.0" - pretty-format: "npm:30.3.0" - checksum: 10c0/4c5f4b6435964110e64c4b5b42e3553fffe303ecdd68021147a7bcc72914aec3a899867c50db22b250c72aded53e3f7a9f64d83c9dca2e65ce27f36d23c6ca78 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^28.0.0": version: 28.1.3 resolution: "jest-matcher-utils@npm:28.1.3" @@ -20870,24 +19773,7 @@ __metadata: resolution: "jest-matchmedia-mock@npm:1.1.0" peerDependencies: jest: ">=13" - checksum: 10c0/600b0adffca6fd9b5fe0dc499960471a852f5d442b5bd9b7cc29bb461cc91c3e606e79bfde0827c27e7f07b476e04a1df7d3939931042d26ebc262bb45bcca2b - languageName: node - linkType: hard - -"jest-message-util@npm:30.3.0": - version: 30.3.0 - resolution: "jest-message-util@npm:30.3.0" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@jest/types": "npm:30.3.0" - "@types/stack-utils": "npm:^2.0.3" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - picomatch: "npm:^4.0.3" - pretty-format: "npm:30.3.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.6" - checksum: 10c0/6ce611caef76394872b23a111286b48e56f42655d14a5fbd0629d9b7437ed892e85ad96b15864bc22185c24ef670afb6665c57b9729458a36d50ffe8310f0926 + checksum: 10c0/600b0adffca6fd9b5fe0dc499960471a852f5d442b5bd9b7cc29bb461cc91c3e606e79bfde0827c27e7f07b476e04a1df7d3939931042d26ebc262bb45bcca2b languageName: node linkType: hard @@ -20908,17 +19794,6 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:30.3.0": - version: 30.3.0 - resolution: "jest-mock@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - jest-util: "npm:30.3.0" - checksum: 10c0/9d95d550c6c998a85887c48ff5ee26de4bca18be91462ea8a8135d6023d591132465756f74981ca39b60f8708dfe38213a55bd4b619798a7b9438ca10d718099 - languageName: node - linkType: hard - "jest-mock@npm:^27.3.0": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" @@ -20940,27 +19815,34 @@ __metadata: languageName: node linkType: hard -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" +"jest-playwright-preset@npm:^4.0.0": + version: 4.0.0 + resolution: "jest-playwright-preset@npm:4.0.0" + dependencies: + expect-playwright: "npm:^0.8.0" + jest-process-manager: "npm:^0.4.0" + nyc: "npm:^15.1.0" + playwright-core: "npm:>=1.2.0" + rimraf: "npm:^3.0.2" + uuid: "npm:^8.3.2" peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 10c0/f6ef6193f7f015830aea3a13a4fd9f53a60746bbaa2d56d18af4afd26ed1b527039c466c8d2447f68b149db8a912b9493a727f29b809ff883b8b5daec16e98ce + jest: ^29.3.1 + jest-circus: ^29.3.1 + jest-environment-node: ^29.3.1 + jest-runner: ^29.3.1 + checksum: 10c0/c51b00dde02ab6a102589f97ca6c9679886c806da82f73ff0d4822cc06e988333eb8c62c2b2f8381d5e7fa2edfa5cc33e624a36107903d6b98ddd26dd0035a05 languageName: node linkType: hard -"jest-pnp-resolver@npm:^1.2.3": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.2 + resolution: "jest-pnp-resolver@npm:1.2.2" peerDependencies: jest-resolve: "*" peerDependenciesMeta: jest-resolve: optional: true - checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + checksum: 10c0/f6ef6193f7f015830aea3a13a4fd9f53a60746bbaa2d56d18af4afd26ed1b527039c466c8d2447f68b149db8a912b9493a727f29b809ff883b8b5daec16e98ce languageName: node linkType: hard @@ -20982,30 +19864,13 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:30.0.1, jest-regex-util@npm:^30.0.0": - version: 30.0.1 - resolution: "jest-regex-util@npm:30.0.1" - checksum: 10c0/f30c70524ebde2d1012afe5ffa5691d5d00f7d5ba9e43d588f6460ac6fe96f9e620f2f9b36a02d0d3e7e77bc8efb8b3450ae3b80ac53c8be5099e01bf54f6728 - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.6.3": +"jest-regex-util@npm:^29.0.0, jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b languageName: node linkType: hard -"jest-resolve-dependencies@npm:30.3.0": - version: 30.3.0 - resolution: "jest-resolve-dependencies@npm:30.3.0" - dependencies: - jest-regex-util: "npm:30.0.1" - jest-snapshot: "npm:30.3.0" - checksum: 10c0/25dde0c8c050bc3437332f37ab87484f597596b80ece77a93e4da2b466b42e45cc5ad748270c1477587536de15eea1ffe83a32638e824b120830c3a87c9a5b71 - languageName: node - linkType: hard - "jest-resolve-dependencies@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve-dependencies@npm:29.7.0" @@ -21016,22 +19881,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:30.3.0": - version: 30.3.0 - resolution: "jest-resolve@npm:30.3.0" - dependencies: - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.3.0" - jest-pnp-resolver: "npm:^1.2.3" - jest-util: "npm:30.3.0" - jest-validate: "npm:30.3.0" - slash: "npm:^3.0.0" - unrs-resolver: "npm:^1.7.11" - checksum: 10c0/540f59f160c232c1b922b111a93f24ef5202d75e00f2e994de976badf6e88879893b474320ff363a6b97259a7a208b6a4f5eeabede787eea9b7912a12ac64b1b - languageName: node - linkType: hard - "jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" @@ -21049,37 +19898,7 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:30.3.0, jest-runner@npm:^30.0.4": - version: 30.3.0 - resolution: "jest-runner@npm:30.3.0" - dependencies: - "@jest/console": "npm:30.3.0" - "@jest/environment": "npm:30.3.0" - "@jest/test-result": "npm:30.3.0" - "@jest/transform": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - emittery: "npm:^0.13.1" - exit-x: "npm:^0.2.2" - graceful-fs: "npm:^4.2.11" - jest-docblock: "npm:30.2.0" - jest-environment-node: "npm:30.3.0" - jest-haste-map: "npm:30.3.0" - jest-leak-detector: "npm:30.3.0" - jest-message-util: "npm:30.3.0" - jest-resolve: "npm:30.3.0" - jest-runtime: "npm:30.3.0" - jest-util: "npm:30.3.0" - jest-watcher: "npm:30.3.0" - jest-worker: "npm:30.3.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10c0/6fb205f48541658f0b23b6c9a6730f0133f07c994a22ef506ebfcded5bbb444b655ac828074157e6579e664609a46f6a5bf3d366b694c6c8b523b5207a70499c - languageName: node - linkType: hard - -"jest-runner@npm:^29.7.0": +"jest-runner@npm:^29.6.4, jest-runner@npm:^29.7.0": version: 29.7.0 resolution: "jest-runner@npm:29.7.0" dependencies: @@ -21108,36 +19927,6 @@ __metadata: languageName: node linkType: hard -"jest-runtime@npm:30.3.0": - version: 30.3.0 - resolution: "jest-runtime@npm:30.3.0" - dependencies: - "@jest/environment": "npm:30.3.0" - "@jest/fake-timers": "npm:30.3.0" - "@jest/globals": "npm:30.3.0" - "@jest/source-map": "npm:30.0.1" - "@jest/test-result": "npm:30.3.0" - "@jest/transform": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - cjs-module-lexer: "npm:^2.1.0" - collect-v8-coverage: "npm:^1.0.2" - glob: "npm:^10.5.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.3.0" - jest-message-util: "npm:30.3.0" - jest-mock: "npm:30.3.0" - jest-regex-util: "npm:30.0.1" - jest-resolve: "npm:30.3.0" - jest-snapshot: "npm:30.3.0" - jest-util: "npm:30.3.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10c0/79c486157a926d5be5c66356ad26cc3792cca1afb1490e255a550f52784b6c92eea42f1cb3b2c7565650ea777cf17ffc3f8e305d6b97888e7d273f6d7f282686 - languageName: node - linkType: hard - "jest-runtime@npm:^29.7.0": version: 29.7.0 resolution: "jest-runtime@npm:29.7.0" @@ -21177,35 +19966,6 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:30.3.0": - version: 30.3.0 - resolution: "jest-snapshot@npm:30.3.0" - dependencies: - "@babel/core": "npm:^7.27.4" - "@babel/generator": "npm:^7.27.5" - "@babel/plugin-syntax-jsx": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" - "@babel/types": "npm:^7.27.3" - "@jest/expect-utils": "npm:30.3.0" - "@jest/get-type": "npm:30.1.0" - "@jest/snapshot-utils": "npm:30.3.0" - "@jest/transform": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - babel-preset-current-node-syntax: "npm:^1.2.0" - chalk: "npm:^4.1.2" - expect: "npm:30.3.0" - graceful-fs: "npm:^4.2.11" - jest-diff: "npm:30.3.0" - jest-matcher-utils: "npm:30.3.0" - jest-message-util: "npm:30.3.0" - jest-util: "npm:30.3.0" - pretty-format: "npm:30.3.0" - semver: "npm:^7.7.2" - synckit: "npm:^0.11.8" - checksum: 10c0/c1dd295d9d4962f2504c965575212fc62a358a849c66ab96b2f6e608ebdf6a6029ca505bb0693664a54a534e581883665d404a59976a5b46b1a1f88b537e96c5 - languageName: node - linkType: hard - "jest-snapshot@npm:^29.7.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" @@ -21234,20 +19994,6 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:30.3.0": - version: 30.3.0 - resolution: "jest-util@npm:30.3.0" - dependencies: - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - graceful-fs: "npm:^4.2.11" - picomatch: "npm:^4.0.3" - checksum: 10c0/eea6f39e52a8cb2b1a28bb315a90dc6a8e450fffed73bb5ef4489d02d86f7d91be600d83f1dcba22956b8ac5fefa8f1b250e636c8402d3e8b50a5eec8b5963b2 - languageName: node - linkType: hard - "jest-util@npm:^29.5.0, jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" @@ -21262,20 +20008,6 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:30.3.0": - version: 30.3.0 - resolution: "jest-validate@npm:30.3.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - "@jest/types": "npm:30.3.0" - camelcase: "npm:^6.3.0" - chalk: "npm:^4.1.2" - leven: "npm:^3.1.0" - pretty-format: "npm:30.3.0" - checksum: 10c0/645629e9ae0926252dee26b0ad71b9f0392daa896328393479c63b1b13d2a70df4dac8b5053227c64e0120e930db1242897898c40706f135f20f73ef77fcf4f5 - languageName: node - linkType: hard - "jest-validate@npm:^29.7.0": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" @@ -21290,40 +20022,24 @@ __metadata: languageName: node linkType: hard -"jest-watch-typeahead@npm:^3.0.1": - version: 3.0.1 - resolution: "jest-watch-typeahead@npm:3.0.1" +"jest-watch-typeahead@npm:^2.0.0": + version: 2.2.2 + resolution: "jest-watch-typeahead@npm:2.2.2" dependencies: - ansi-escapes: "npm:^7.0.0" + ansi-escapes: "npm:^6.0.0" chalk: "npm:^5.2.0" - jest-regex-util: "npm:^30.0.0" - jest-watcher: "npm:^30.0.0" + jest-regex-util: "npm:^29.0.0" + jest-watcher: "npm:^29.0.0" slash: "npm:^5.0.0" - string-length: "npm:^6.0.0" + string-length: "npm:^5.0.1" strip-ansi: "npm:^7.0.1" peerDependencies: - jest: ^30.0.0 - checksum: 10c0/647c2674cd75370f1726878aaa17caa5d3e7cac719757f733d2283f60bfa584c11059fcbddd1f6ae9be4e827caa4d18577296d53b9c7b26b98bc2a315487058c - languageName: node - linkType: hard - -"jest-watcher@npm:30.3.0, jest-watcher@npm:^30.0.0": - version: 30.3.0 - resolution: "jest-watcher@npm:30.3.0" - dependencies: - "@jest/test-result": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" - emittery: "npm:^0.13.1" - jest-util: "npm:30.3.0" - string-length: "npm:^4.0.2" - checksum: 10c0/2631be5cc122fbf14cb0bb7566cdea6d6c432b984d8ef3c6385254bb6c378342e0754cbd2dfe094d80762d44bd1c7015de2ec2100eb6f192906619d8b229e1a5 + jest: ^27.0.0 || ^28.0.0 || ^29.0.0 + checksum: 10c0/5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 languageName: node linkType: hard -"jest-watcher@npm:^29.7.0": +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.7.0": version: 29.7.0 resolution: "jest-watcher@npm:29.7.0" dependencies: @@ -21339,19 +20055,6 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:30.3.0": - version: 30.3.0 - resolution: "jest-worker@npm:30.3.0" - dependencies: - "@types/node": "npm:*" - "@ungap/structured-clone": "npm:^1.3.0" - jest-util: "npm:30.3.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.1.1" - checksum: 10c0/25dfb1bc43d389e1daf8baad0ef7964249f001a7da7d92c61e398840424ca13fb1fb6242f6e021f0cbb37952f90371fb8be1ef0183b5d04ef161fdb8f09ee78e - languageName: node - linkType: hard - "jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" @@ -21364,7 +20067,7 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.5.0": +"jest@npm:^29.5.0, jest@npm:^29.6.4": version: 29.7.0 resolution: "jest@npm:29.7.0" dependencies: @@ -21383,25 +20086,6 @@ __metadata: languageName: node linkType: hard -"jest@npm:^30.0.4": - version: 30.3.0 - resolution: "jest@npm:30.3.0" - dependencies: - "@jest/core": "npm:30.3.0" - "@jest/types": "npm:30.3.0" - import-local: "npm:^3.2.0" - jest-cli: "npm:30.3.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: ./bin/jest.js - checksum: 10c0/1f940424b741d1541c3d71e311f77c3cfaf31cff9ab2d53180333f00a31f157790a8d3d413b72b8dd2bb191aa75769fa741d9bc9085df779cd59689559a65815 - languageName: node - linkType: hard - "jiti@npm:^2.4.2": version: 2.4.2 resolution: "jiti@npm:2.4.2" @@ -21565,15 +20249,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": - version: 3.1.0 - resolution: "jsesc@npm:3.1.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 - languageName: node - linkType: hard - "jsesc@npm:~0.5.0": version: 0.5.0 resolution: "jsesc@npm:0.5.0" @@ -22197,13 +20872,6 @@ __metadata: languageName: node linkType: hard -"lodash-es@npm:^4.17.23": - version: 4.18.1 - resolution: "lodash-es@npm:4.18.1" - checksum: 10c0/35d4dcf87ef07f8d090f409447575800108057e360b445f590d0d25d09e3d1e33a163d2fc100d4d072b0f901d5e2fc533cd7c4bfd8eeb38a06abec693823c8b8 - languageName: node - linkType: hard - "lodash._reinterpolate@npm:^3.0.0": version: 3.0.0 resolution: "lodash._reinterpolate@npm:3.0.0" @@ -22495,7 +21163,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.21": +"magic-string@npm:^0.30.17, magic-string@npm:^0.30.21": version: 0.30.21 resolution: "magic-string@npm:0.30.21" dependencies: @@ -22608,6 +21276,13 @@ __metadata: languageName: node linkType: hard +"map-or-similar@npm:^1.5.0": + version: 1.5.0 + resolution: "map-or-similar@npm:1.5.0" + checksum: 10c0/33c6ccfdc272992e33e4e99a69541a3e7faed9de3ac5bc732feb2500a9ee71d3f9d098980a70b7746e7eeb7f859ff7dfb8aa9b5ecc4e34170a32ab78cfb18def + languageName: node + linkType: hard + "map-visit@npm:^1.0.0": version: 1.0.0 resolution: "map-visit@npm:1.0.0" @@ -22869,6 +21544,15 @@ __metadata: languageName: node linkType: hard +"memoizerific@npm:^1.11.3": + version: 1.11.3 + resolution: "memoizerific@npm:1.11.3" + dependencies: + map-or-similar: "npm:^1.5.0" + checksum: 10c0/661bf69b7afbfad57f0208f0c63324f4c96087b480708115b78ee3f0237d86c7f91347f6db31528740b2776c2e34c709bcb034e1e910edee2270c9603a0a469e + languageName: node + linkType: hard + "meow@npm:^3.3.0": version: 3.7.0 resolution: "meow@npm:3.7.0" @@ -23921,15 +22605,6 @@ __metadata: languageName: node linkType: hard -"napi-postinstall@npm:^0.3.0": - version: 0.3.4 - resolution: "napi-postinstall@npm:0.3.4" - bin: - napi-postinstall: lib/cli.js - checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -24670,15 +23345,14 @@ __metadata: languageName: node linkType: hard -"open@npm:^10.2.0": - version: 10.2.0 - resolution: "open@npm:10.2.0" +"open@npm:^8.0.4": + version: 8.4.2 + resolution: "open@npm:8.4.2" dependencies: - default-browser: "npm:^5.2.1" - define-lazy-prop: "npm:^3.0.0" - is-inside-container: "npm:^1.0.0" - wsl-utils: "npm:^0.1.0" - checksum: 10c0/5a36d0c1fd2f74ce553beb427ca8b8494b623fc22c6132d0c1688f246a375e24584ea0b44c67133d9ab774fa69be8e12fbe1ff12504b1142bd960fb09671948f + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 languageName: node linkType: hard @@ -25612,13 +24286,6 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.7": - version: 4.0.7 - resolution: "pirates@npm:4.0.7" - checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a - languageName: node - linkType: hard - "pixelmatch@npm:7.1.0": version: 7.1.0 resolution: "pixelmatch@npm:7.1.0" @@ -25806,17 +24473,6 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:30.3.0": - version: 30.3.0 - resolution: "pretty-format@npm:30.3.0" - dependencies: - "@jest/schemas": "npm:30.0.5" - ansi-styles: "npm:^5.2.0" - react-is: "npm:^18.3.1" - checksum: 10c0/719b27d70cd8b01013485054c5d094e1fe85e093b09ee73553e3b19302da3cf54fbd6a7ea9577d6471aeff8d372200e56979ffc4c831e2133520bd18060895fb - languageName: node - linkType: hard - "pretty-format@npm:^27.0.2": version: 27.4.2 resolution: "pretty-format@npm:27.4.2" @@ -26073,13 +24729,6 @@ __metadata: languageName: node linkType: hard -"pure-rand@npm:^7.0.0": - version: 7.0.1 - resolution: "pure-rand@npm:7.0.1" - checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e - languageName: node - linkType: hard - "q@npm:^1.5.1": version: 1.5.1 resolution: "q@npm:1.5.1" @@ -26247,24 +24896,6 @@ __metadata: languageName: node linkType: hard -"react-docgen@npm:^8.0.2": - version: 8.0.3 - resolution: "react-docgen@npm:8.0.3" - dependencies: - "@babel/core": "npm:^7.28.0" - "@babel/traverse": "npm:^7.28.0" - "@babel/types": "npm:^7.28.2" - "@types/babel__core": "npm:^7.20.5" - "@types/babel__traverse": "npm:^7.20.7" - "@types/doctrine": "npm:^0.0.9" - "@types/resolve": "npm:^1.20.2" - doctrine: "npm:^3.0.0" - resolve: "npm:^1.22.1" - strip-indent: "npm:^4.0.0" - checksum: 10c0/0231fb9177bc7c633f3d1f228eebb0ee90a2f0feac50b1869ef70b0a3683b400d7875547a2d5168f2619b63d4cc29d7c45ae33d3f621fc67a7fa6790ac2049f6 - languageName: node - linkType: hard - "react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0, react-dom@npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0, react-dom@npm:^19.2.0": version: 19.2.1 resolution: "react-dom@npm:19.2.1" @@ -26301,7 +24932,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0, react-is@npm:^18.3.1": +"react-is@npm:^18.0.0": version: 18.3.1 resolution: "react-is@npm:18.3.1" checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 @@ -26388,12 +25019,12 @@ __metadata: "@react-spectrum/s2-icon-builder": "workspace:^" "@spectrum-css/component-builder": "workspace:^" "@spectrum-css/vars": "npm:^2.3.0" - "@storybook/addon-a11y": "npm:^10.0.0" - "@storybook/addon-docs": "npm:^10.0.0" - "@storybook/addon-jest": "npm:10.0.0-beta.12" - "@storybook/addon-themes": "npm:^10.0.0" - "@storybook/react": "npm:^10.0.0" - "@storybook/test-runner": "npm:^0.24.0" + "@storybook/addon-a11y": "npm:^9.0.18" + "@storybook/addon-docs": "npm:^9.0.18" + "@storybook/addon-jest": "npm:^9.0.18" + "@storybook/addon-themes": "npm:^9.0.18" + "@storybook/react": "npm:^9.0.18" + "@storybook/test-runner": "npm:^0.22.0" "@stylistic/eslint-plugin-ts": "npm:^2.9.0" "@swc/core": "npm:^1.3.36" "@swc/jest": "npm:^0.2.36" @@ -26408,7 +25039,7 @@ __metadata: "@vitejs/plugin-react": "npm:^5.1.4" "@vitest/browser-playwright": "npm:^4.0.17" "@vitest/browser-preview": "npm:^4.0.17" - "@vueless/storybook-dark-mode": "npm:^10.0.0" + "@vueless/storybook-dark-mode": "npm:^9.0.6" "@yarnpkg/types": "npm:^4.0.0" autoprefixer: "npm:^9.6.0" axe-playwright: "npm:^1.1.11" @@ -26468,7 +25099,7 @@ __metadata: rimraf: "npm:^6.0.1" shadow-dom-testing-library: "npm:^1.13.1" sharp: "npm:^0.33.5" - storybook: "npm:^10.0.0" + storybook: "npm:^9.0.18" storybook-react-parcel: "workspace:^" tailwind-variants: "patch:tailwind-variants@npm%3A0.3.1#~/.yarn/patches/tailwind-variants-npm-0.3.1-48888516de.patch" tailwindcss: "npm:^4.0.0" @@ -27257,20 +25888,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.1": - version: 1.22.12 - resolution: "resolve@npm:1.22.12" - dependencies: - es-errors: "npm:^1.3.0" - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/b16dc9b537c02e8c3388f7d3dcff9741d3071625f9a97ac1c885f2b0ca51e78df22328fb6d6ef214dd9101fb7cfc19aa2836fe3410402a94f3f7b8639c7149bf - languageName: node - linkType: hard - "resolve@npm:^2.0.0-next.5, resolve@npm:^2.0.0-next.6": version: 2.0.0-next.6 resolution: "resolve@npm:2.0.0-next.6" @@ -27300,20 +25917,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": - version: 1.22.12 - resolution: "resolve@patch:resolve@npm%3A1.22.12#optional!builtin::version=1.22.12&hash=c3c19d" - dependencies: - es-errors: "npm:^1.3.0" - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/fc6519984ae1f894d877c0060ba8b1f5ba3bc0e85a02f74e141929c118c23d74d9735619a9cc2965397387e514884245c65d72a40731dcb6cfc84c7bcdc8321e - languageName: node - linkType: hard - "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin, resolve@patch:resolve@npm%3A^2.0.0-next.6#optional!builtin": version: 2.0.0-next.6 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" @@ -27532,13 +26135,6 @@ __metadata: languageName: node linkType: hard -"run-applescript@npm:^7.0.0": - version: 7.1.0 - resolution: "run-applescript@npm:7.1.0" - checksum: 10c0/ab826c57c20f244b2ee807704b1ef4ba7f566aa766481ae5922aac785e2570809e297c69afcccc3593095b538a8a77d26f2b2e9a1d9dffee24e0e039502d1a03 - languageName: node - linkType: hard - "run-async@npm:^2.2.0": version: 2.4.0 resolution: "run-async@npm:2.4.0" @@ -27782,7 +26378,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1": +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.1": version: 7.7.2 resolution: "semver@npm:7.7.2" bin: @@ -27791,15 +26387,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.7.2, semver@npm:^7.7.3": - version: 7.7.4 - resolution: "semver@npm:7.7.4" - bin: - semver: bin/semver.js - checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 - languageName: node - linkType: hard - "semver@npm:~5.3.0": version: 5.3.0 resolution: "semver@npm:5.3.0" @@ -28606,15 +27193,6 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.6": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a - languageName: node - linkType: hard - "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -28687,9 +27265,8 @@ __metadata: dependencies: "@parcel/core": "npm:^2.16.3" "@parcel/reporter-cli": "npm:^2.16.3" - "@parcel/utils": "npm:^2.16.3" http-proxy-middleware: "npm:^2.0.6" - storybook: "npm:^10.0.0" + storybook: "npm:^9.0.18" peerDependencies: react: "*" languageName: unknown @@ -28699,34 +27276,33 @@ __metadata: version: 0.0.0-use.local resolution: "storybook-react-parcel@workspace:packages/dev/storybook-react-parcel" dependencies: - "@storybook/react": "npm:^10.0.0" + "@storybook/react": "npm:^9.0.18" react: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" react-dom: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" - storybook: "npm:^10.0.0" + storybook: "npm:^9.0.18" storybook-builder-parcel: "npm:>=0.0.1" peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.0 + storybook: ^9.0.18 languageName: unknown linkType: soft -"storybook@npm:^10.0.0": - version: 10.3.5 - resolution: "storybook@npm:10.3.5" +"storybook@npm:^9.0.18": + version: 9.1.17 + resolution: "storybook@npm:9.1.17" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/icons": "npm:^2.0.1" - "@testing-library/jest-dom": "npm:^6.9.1" + "@testing-library/jest-dom": "npm:^6.6.3" "@testing-library/user-event": "npm:^14.6.1" "@vitest/expect": "npm:3.2.4" + "@vitest/mocker": "npm:3.2.4" "@vitest/spy": "npm:3.2.4" - "@webcontainer/env": "npm:^1.1.1" - esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0" - open: "npm:^10.2.0" + better-opn: "npm:^3.0.2" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" + esbuild-register: "npm:^3.5.0" recast: "npm:^0.23.5" - semver: "npm:^7.7.3" - use-sync-external-store: "npm:^1.5.0" + semver: "npm:^7.6.2" ws: "npm:^8.18.0" peerDependencies: prettier: ^2 || ^3 @@ -28734,8 +27310,8 @@ __metadata: prettier: optional: true bin: - storybook: ./dist/bin/dispatcher.js - checksum: 10c0/1443e4710b0bb972db7704d8445c039a6335afafebe853d2b0d89b161262050cd7ae5eda3811c771d54d832f0acc80cf2c231d24f73d1f547d020898394afde6 + storybook: ./bin/index.cjs + checksum: 10c0/8590eaff08714565f19658b16676005960cada649fd0809171d8e8917f38592c52a795a68662c92abb90aae9d5794f0e60f08a2523d9d2524f7f826af0ddd66e languageName: node linkType: hard @@ -28796,22 +27372,13 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.2": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c - languageName: node - linkType: hard - -"string-length@npm:^6.0.0": - version: 6.0.0 - resolution: "string-length@npm:6.0.0" +"string-length@npm:^5.0.1": + version: 5.0.1 + resolution: "string-length@npm:5.0.1" dependencies: - strip-ansi: "npm:^7.1.0" - checksum: 10c0/11c050827774c19583c6c3be62810dd1cc621df8696416754c2cfa62d8de1bc903893571981e7ec45875076a214216109517fa8cd729f9e7249583f546f9b360 + char-regex: "npm:^2.0.0" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 languageName: node linkType: hard @@ -29050,15 +27617,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.1.0": - version: 7.2.0 - resolution: "strip-ansi@npm:7.2.0" - dependencies: - ansi-regex: "npm:^6.2.2" - checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221 - languageName: node - linkType: hard - "strip-bom-string@npm:^1.0.0": version: 1.0.0 resolution: "strip-bom-string@npm:1.0.0" @@ -29130,13 +27688,6 @@ __metadata: languageName: node linkType: hard -"strip-indent@npm:^4.0.0": - version: 4.1.1 - resolution: "strip-indent@npm:4.1.1" - checksum: 10c0/5b23dd5934be0ef6b6fe1b802887f83e56ad9dcd9f6c3896a637da2c6c3a6da3fdf3e51354a98e6cccb6f1c41863e7b9b9deaa348639dfd35f71f3549edb4dff - languageName: node - linkType: hard - "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -29210,7 +27761,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -29269,15 +27820,6 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.11.8": - version: 0.11.12 - resolution: "synckit@npm:0.11.12" - dependencies: - "@pkgr/core": "npm:^0.2.9" - checksum: 10c0/cc4d446806688ae0d728ae7bb3f53176d065cf9536647fb85bdd721dcefbd7bf94874df6799ff61580f2b03a392659219b778a9254ad499f9a1f56c34787c235 - languageName: node - linkType: hard - "synckit@npm:^0.9.1": version: 0.9.2 resolution: "synckit@npm:0.9.2" @@ -30024,13 +28566,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 - languageName: node - linkType: hard - "type-fest@npm:^0.3.0": version: 0.3.1 resolution: "type-fest@npm:0.3.1" @@ -30052,6 +28587,20 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"type-fest@npm:^3.0.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + "type-is@npm:^2.0.0, type-is@npm:^2.0.1": version: 2.0.1 resolution: "type-is@npm:2.0.1" @@ -30741,7 +29290,7 @@ __metadata: languageName: node linkType: hard -"unplugin@npm:^1.4.0": +"unplugin@npm:^1.3.1, unplugin@npm:^1.4.0": version: 1.12.0 resolution: "unplugin@npm:1.12.0" dependencies: @@ -30763,18 +29312,6 @@ __metadata: languageName: node linkType: hard -"unplugin@npm:^2.3.5": - version: 2.3.11 - resolution: "unplugin@npm:2.3.11" - dependencies: - "@jridgewell/remapping": "npm:^2.3.5" - acorn: "npm:^8.15.0" - picomatch: "npm:^4.0.3" - webpack-virtual-modules: "npm:^0.6.2" - checksum: 10c0/273c1eab0eca4470c7317428689295c31dbe8ab0b306504de9f03cd20c156debb4131bef24b27ac615862958c5dd950a3951d26c0723ea774652ab3624149cff - languageName: node - linkType: hard - "unquote@npm:^1.1.0": version: 1.1.1 resolution: "unquote@npm:1.1.1" @@ -30782,73 +29319,6 @@ __metadata: languageName: node linkType: hard -"unrs-resolver@npm:^1.7.11": - version: 1.11.1 - resolution: "unrs-resolver@npm:1.11.1" - dependencies: - "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" - "@unrs/resolver-binding-android-arm64": "npm:1.11.1" - "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" - "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" - "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" - napi-postinstall: "npm:^0.3.0" - dependenciesMeta: - "@unrs/resolver-binding-android-arm-eabi": - optional: true - "@unrs/resolver-binding-android-arm64": - optional: true - "@unrs/resolver-binding-darwin-arm64": - optional: true - "@unrs/resolver-binding-darwin-x64": - optional: true - "@unrs/resolver-binding-freebsd-x64": - optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf": - optional: true - "@unrs/resolver-binding-linux-arm-musleabihf": - optional: true - "@unrs/resolver-binding-linux-arm64-gnu": - optional: true - "@unrs/resolver-binding-linux-arm64-musl": - optional: true - "@unrs/resolver-binding-linux-ppc64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-musl": - optional: true - "@unrs/resolver-binding-linux-s390x-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-musl": - optional: true - "@unrs/resolver-binding-wasm32-wasi": - optional: true - "@unrs/resolver-binding-win32-arm64-msvc": - optional: true - "@unrs/resolver-binding-win32-ia32-msvc": - optional: true - "@unrs/resolver-binding-win32-x64-msvc": - optional: true - checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 - languageName: node - linkType: hard - "unset-value@npm:^1.0.0": version: 1.0.0 resolution: "unset-value@npm:1.0.0" @@ -30940,7 +29410,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.5.0, use-sync-external-store@npm:^1.6.0": +"use-sync-external-store@npm:^1.6.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" peerDependencies: @@ -31912,16 +30382,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^5.0.1": - version: 5.0.1 - resolution: "write-file-atomic@npm:5.0.1" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^4.0.1" - checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d - languageName: node - linkType: hard - "write-json-file@npm:^2.2.0": version: 2.3.0 resolution: "write-json-file@npm:2.3.0" @@ -31990,15 +30450,6 @@ __metadata: languageName: node linkType: hard -"wsl-utils@npm:^0.1.0": - version: 0.1.0 - resolution: "wsl-utils@npm:0.1.0" - dependencies: - is-wsl: "npm:^3.1.0" - checksum: 10c0/44318f3585eb97be994fc21a20ddab2649feaf1fbe893f1f866d936eea3d5f8c743bec6dc02e49fbdd3c0e69e9b36f449d90a0b165a4f47dd089747af4cf2377 - languageName: node - linkType: hard - "xdg-basedir@npm:^3.0.0": version: 3.0.0 resolution: "xdg-basedir@npm:3.0.0" @@ -32170,7 +30621,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: From 0ab4169b539a0ebd919bc3e825ed290928564cfa Mon Sep 17 00:00:00 2001 From: varun2735126 Date: Sun, 26 Apr 2026 21:39:28 +0530 Subject: [PATCH 28/30] fix(s2/Card): fire press and action callbacks on standalone Card Standalone Card components (used outside CardView) rendered as a plain
which discarded all PressEvents props. When onPress, onPressStart, onPressEnd, onPressChange, onPressUp, or onAction are supplied the card now renders with role="button", tabIndex={0}, and wires the callbacks through usePress / useHover / useFocusRing so interaction states (hover, focus-visible, pressed) also drive visual styles correctly. Fixes #9674 --- packages/@react-spectrum/s2/src/Card.tsx | 84 ++++++++++- .../@react-spectrum/s2/test/Card.test.tsx | 130 ++++++++++++++++++ 2 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 packages/@react-spectrum/s2/test/Card.test.tsx diff --git a/packages/@react-spectrum/s2/src/Card.tsx b/packages/@react-spectrum/s2/src/Card.tsx index e90087ffc4e..30b848b2957 100644 --- a/packages/@react-spectrum/s2/src/Card.tsx +++ b/packages/@react-spectrum/s2/src/Card.tsx @@ -24,6 +24,10 @@ import {DOMProps, DOMRef, DOMRefValue, GlobalDOMAttributes} from '@react-types/s import {filterDOMProps} from 'react-aria/filterDOMProps'; import {getAllowedOverrides, StyleProps, UnsafeStyles} from './style-utils' with {type: 'macro'}; import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; +import {mergeProps} from 'react-aria/mergeProps'; +import {useFocusRing} from 'react-aria/useFocusRing'; +import {useHover} from 'react-aria/useHover'; +import {usePress} from 'react-aria/usePress'; import {IllustrationContext} from './Icon'; import {ImageContext} from './Image'; import {ImageCoordinator} from './ImageCoordinator'; @@ -396,9 +400,51 @@ export const Card = forwardRef(function Card(props: CardProps, ref: DOMRef { + onPress?.(e); + onAction?.(); + }, + onPressStart, + onPressEnd, + onPressChange, + onPressUp, + isDisabled: isDisabled || !isInteractiveStandalone + }); + let {hoverProps, isHovered: isInteractiveHovered} = useHover({ + isDisabled: isDisabled || !isInteractiveStandalone + }); + let {focusProps, isFocusVisible: isInteractiveFocusVisible} = useFocusRing(); + let children = ( + + {children} + +
+ ); + } + return (
{ + let user; + beforeAll(() => { + jest.useFakeTimers(); + user = userEvent.setup({delay: null, pointerMap}); + }); + + afterEach(() => { + jest.clearAllMocks(); + act(() => jest.runAllTimers()); + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + it('renders as a plain div when no press callbacks are provided', () => { + let {getByText} = render( + + Static Card + + ); + let el = getByText('Static Card').closest('[class]')!.parentElement!; + expect(el.tagName).toBe('DIV'); + expect(el).not.toHaveAttribute('role'); + expect(el).not.toHaveAttribute('tabindex'); + }); + + it('renders as role=button and fires onPress when onPress is provided', async () => { + let onPress = jest.fn(); + let {getByRole} = render( + + Interactive Card + + ); + + let card = getByRole('button'); + expect(card).toBeInTheDocument(); + expect(card).toHaveAttribute('tabindex', '0'); + + await user.click(card); + expect(onPress).toHaveBeenCalledTimes(1); + }); + + it('fires onAction when onAction is provided', async () => { + let onAction = jest.fn(); + let {getByRole} = render( + + Action Card + + ); + + let card = getByRole('button'); + await user.click(card); + expect(onAction).toHaveBeenCalledTimes(1); + }); + + it('fires both onPress and onAction when both are provided', async () => { + let onPress = jest.fn(); + let onAction = jest.fn(); + let {getByRole} = render( + + Both Callbacks Card + + ); + + let card = getByRole('button'); + await user.click(card); + expect(onPress).toHaveBeenCalledTimes(1); + expect(onAction).toHaveBeenCalledTimes(1); + }); + + it('fires onPressStart and onPressEnd when provided', async () => { + let onPressStart = jest.fn(); + let onPressEnd = jest.fn(); + let {getByRole} = render( + + Press Events Card + + ); + + let card = getByRole('button'); + await user.click(card); + expect(onPressStart).toHaveBeenCalledTimes(1); + expect(onPressEnd).toHaveBeenCalledTimes(1); + }); + + it('does not fire press callbacks when disabled', async () => { + let onPress = jest.fn(); + let {getByRole} = render( + + Disabled Card + + ); + + let card = getByRole('button'); + expect(card).not.toHaveAttribute('tabindex'); + expect(card).toHaveAttribute('aria-disabled', 'true'); + + await user.click(card); + expect(onPress).not.toHaveBeenCalled(); + }); + + it('does not expose role=button when no press callbacks are provided', () => { + let {queryByRole} = render( + + Static Card + + ); + expect(queryByRole('button')).toBeNull(); + }); +}); From fc3a56782423c20c7732fcc052051b320a67a316 Mon Sep 17 00:00:00 2001 From: varun2735126 Date: Sun, 26 Apr 2026 22:00:36 +0530 Subject: [PATCH 29/30] fix: sort imports alphabetically to satisfy rsp-rules/sort-imports lint rule --- packages/@react-spectrum/s2/src/Card.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@react-spectrum/s2/src/Card.tsx b/packages/@react-spectrum/s2/src/Card.tsx index 30b848b2957..02d384281e8 100644 --- a/packages/@react-spectrum/s2/src/Card.tsx +++ b/packages/@react-spectrum/s2/src/Card.tsx @@ -24,19 +24,19 @@ import {DOMProps, DOMRef, DOMRefValue, GlobalDOMAttributes} from '@react-types/s import {filterDOMProps} from 'react-aria/filterDOMProps'; import {getAllowedOverrides, StyleProps, UnsafeStyles} from './style-utils' with {type: 'macro'}; import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; -import {mergeProps} from 'react-aria/mergeProps'; -import {useFocusRing} from 'react-aria/useFocusRing'; -import {useHover} from 'react-aria/useHover'; -import {usePress} from 'react-aria/usePress'; import {IllustrationContext} from './Icon'; import {ImageContext} from './Image'; import {ImageCoordinator} from './ImageCoordinator'; import {inertValue} from 'react-aria/private/utils/inertValue'; import {Link} from 'react-aria-components/Link'; +import {mergeProps} from 'react-aria/mergeProps'; import {mergeStyles} from '../style/runtime'; import {pressScale} from './pressScale'; import {SkeletonContext, SkeletonWrapper, useIsSkeleton} from './Skeleton'; import {useDOMRef} from './useDOMRef'; +import {useFocusRing} from 'react-aria/useFocusRing'; +import {useHover} from 'react-aria/useHover'; +import {usePress} from 'react-aria/usePress'; import {useSpectrumContextProps} from './useSpectrumContextProps'; interface CardRenderProps { From d7176d5b732fc9bd240858353629c91c90c0808f Mon Sep 17 00:00:00 2001 From: varun2735126 Date: Fri, 1 May 2026 23:28:59 +0530 Subject: [PATCH 30/30] fix(s2/Card): add pointer cursor and userSelect none for interactive standalone Standalone cards with press callbacks rendered as role=button but kept the default arrow cursor and allowed text selection on drag-click, making them look and behave non-interactively. Added isInteractive condition to the card style to apply cursor:pointer and userSelect:none in this path. --- packages/@react-spectrum/s2/src/Card.tsx | 7 +++++-- packages/@react-spectrum/s2/test/Card.test.tsx | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/@react-spectrum/s2/src/Card.tsx b/packages/@react-spectrum/s2/src/Card.tsx index 02d384281e8..e30599d1019 100644 --- a/packages/@react-spectrum/s2/src/Card.tsx +++ b/packages/@react-spectrum/s2/src/Card.tsx @@ -125,10 +125,12 @@ let card = style({ contain: 'layout', disableTapHighlight: true, userSelect: { - isCardView: 'none' + isCardView: 'none', + isInteractive: 'none' }, cursor: { - isLink: 'pointer' + isLink: 'pointer', + isInteractive: 'pointer' }, width: { size: { @@ -513,6 +515,7 @@ export const Card = forwardRef(function Card(props: CardProps, ref: DOMRef { ); expect(queryByRole('button')).toBeNull(); }); + + it('has pointer cursor and no user-select when interactive', async () => { + let onPress = jest.fn(); + let {getByRole} = render( + + Interactive Card + + ); + let card = getByRole('button'); + expect(card).toHaveStyle({cursor: 'pointer', userSelect: 'none'}); + }); });