From d4b6a03a75f41524e5aafaf81b65c2de012353d0 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Mon, 20 Jan 2025 14:47:44 +0000 Subject: [PATCH 01/16] WIP adding the v3_routeConfig flag. --- examples/classic-remix/remix.config.js | 1 + examples/express/app/routes.ts | 10 +++ examples/express/package.json | 4 +- examples/express/vite.config.ts | 3 +- examples/multipass/app/routes.ts | 3 + examples/multipass/package.json | 2 + examples/multipass/vite.config.ts | 1 + package-lock.json | 72 +++++++++++++++++++- packages/cli/assets/vite/vite.config.js | 1 + packages/hydrogen/package.json | 1 + packages/hydrogen/src/dev/hydrogen-routes.ts | 23 +++++++ packages/hydrogen/src/index.ts | 2 + packages/hydrogen/src/vite/plugin.ts | 8 +++ templates/skeleton/app/routes.ts | 3 + templates/skeleton/package.json | 3 + templates/skeleton/vite.config.ts | 1 + 16 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 examples/express/app/routes.ts create mode 100644 examples/multipass/app/routes.ts create mode 100644 packages/hydrogen/src/dev/hydrogen-routes.ts create mode 100644 templates/skeleton/app/routes.ts diff --git a/examples/classic-remix/remix.config.js b/examples/classic-remix/remix.config.js index 73250a97f9..4e1a5ef702 100644 --- a/examples/classic-remix/remix.config.js +++ b/examples/classic-remix/remix.config.js @@ -21,5 +21,6 @@ module.exports = { v3_relativeSplatpath: true, v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, + v3_routeConfig: true, }, }; diff --git a/examples/express/app/routes.ts b/examples/express/app/routes.ts new file mode 100644 index 0000000000..c2fe7a2d04 --- /dev/null +++ b/examples/express/app/routes.ts @@ -0,0 +1,10 @@ +import {flatRoutes} from '@remix-run/fs-routes'; +import type {RouteConfig} from '@remix-run/route-config'; +import {hydrogenRoutes} from '@shopify/hydrogen'; + +console.log('hydrogenRoutes', hydrogenRoutes); + +export default [ + ...(await hydrogenRoutes()), + ...(await flatRoutes({rootDirectory: 'fs-routes'})), +] satisfies RouteConfig; diff --git a/examples/express/package.json b/examples/express/package.json index 4a04c55b86..801af221ab 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -14,7 +14,7 @@ "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", - "@shopify/hydrogen": "2024.10.1", + "@shopify/hydrogen": "file:../../packages/hydrogen", "compression": "^1.7.4", "cross-env": "^7.0.3", "express": "^4.19.2", @@ -26,6 +26,8 @@ "devDependencies": { "@remix-run/dev": "^2.15.2", "@remix-run/eslint-config": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@shopify/cli": "~3.73.0", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", diff --git a/examples/express/vite.config.ts b/examples/express/vite.config.ts index b24f88644c..ba7539432f 100644 --- a/examples/express/vite.config.ts +++ b/examples/express/vite.config.ts @@ -7,12 +7,13 @@ export default defineConfig({ plugins: [ hydrogen(), remix({ - presets: [hydrogen.preset()], + presets: [hydrogen.v3preset()], future: { v3_fetcherPersist: true, v3_relativeSplatPath: true, v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, + v3_routeConfig: true, }, }), tsconfigPaths(), diff --git a/examples/multipass/app/routes.ts b/examples/multipass/app/routes.ts new file mode 100644 index 0000000000..d132df264e --- /dev/null +++ b/examples/multipass/app/routes.ts @@ -0,0 +1,3 @@ +import {flatRoutes} from '@remix-run/fs-routes'; + +export default flatRoutes(); diff --git a/examples/multipass/package.json b/examples/multipass/package.json index b668131fcf..bd0b15016a 100644 --- a/examples/multipass/package.json +++ b/examples/multipass/package.json @@ -15,6 +15,8 @@ "snakecase-keys": "^5.5.0" }, "devDependencies": { + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@types/crypto-js": "^4.2.1" } } diff --git a/examples/multipass/vite.config.ts b/examples/multipass/vite.config.ts index d0ce6d1328..90761bd5c8 100644 --- a/examples/multipass/vite.config.ts +++ b/examples/multipass/vite.config.ts @@ -15,6 +15,7 @@ export default defineConfig({ v3_relativeSplatPath: true, v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, + v3_routeConfig: true, }, }), tsconfigPaths(), diff --git a/package-lock.json b/package-lock.json index 7d7b1a4cb7..81ee87d4d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -614,7 +614,7 @@ "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", - "@shopify/hydrogen": "2024.10.1", + "@shopify/hydrogen": "file:../../packages/hydrogen", "compression": "^1.7.4", "cross-env": "^7.0.3", "express": "^4.19.2", @@ -626,6 +626,8 @@ "devDependencies": { "@remix-run/dev": "^2.15.2", "@remix-run/eslint-config": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@shopify/cli": "~3.73.0", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", @@ -729,6 +731,8 @@ "snakecase-keys": "^5.5.0" }, "devDependencies": { + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@types/crypto-js": "^4.2.1" } }, @@ -7881,6 +7885,26 @@ "node": ">=6" } }, + "node_modules/@remix-run/fs-routes": { + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/@remix-run/fs-routes/-/fs-routes-2.15.2.tgz", + "integrity": "sha512-Ozf0ab5OcyJ0OcOHtjO726VptDXMOp+xek6n/Wp3A+IcaY2tmWWChYsw8O0dKZ5Q5BCJv3hlLX99PLadX9wqeg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/dev": "^2.15.2", + "@remix-run/route-config": "^2.15.2", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@remix-run/node": { "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.15.2.tgz", @@ -7942,6 +7966,28 @@ } } }, + "node_modules/@remix-run/route-config": { + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/@remix-run/route-config/-/route-config-2.15.2.tgz", + "integrity": "sha512-xAbH3VCgsvUK3YH2INU7yhZMjbw5bGoSaGEGS3k+QdX8a9gWeFKPex+w76ZNjVNVVOMOE+yJVpdN9RrIu0Pfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/dev": "^2.15.2", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@remix-run/router": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", @@ -7951,6 +7997,26 @@ "node": ">=14.0.0" } }, + "node_modules/@remix-run/routes-option-adapter": { + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/@remix-run/routes-option-adapter/-/routes-option-adapter-2.15.2.tgz", + "integrity": "sha512-Um2p3vB1/qi9Qd+xFTXGFJnFqaLDNMEkQhYxuRUB3GkK4j5cHcoLY6z04+B5ioLzNJxrt5H+8wpH8IBc+8rAcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/dev": "^2.15.2", + "@remix-run/route-config": "^2.15.2", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@remix-run/server-runtime": { "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.15.2.tgz", @@ -32183,6 +32249,7 @@ "devDependencies": { "@remix-run/dev": "^2.15.2", "@remix-run/react": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", "@shopify/generate-docs": "0.16.2", "@shopify/hydrogen-codegen": "*", @@ -34485,6 +34552,9 @@ "@graphql-codegen/cli": "5.0.2", "@remix-run/dev": "^2.15.2", "@remix-run/eslint-config": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", + "@remix-run/routes-option-adapter": "^2.15.2", "@shopify/cli": "~3.73.0", "@shopify/hydrogen-codegen": "^0.3.2", "@shopify/mini-oxygen": "^3.1.0", diff --git a/packages/cli/assets/vite/vite.config.js b/packages/cli/assets/vite/vite.config.js index 5ee9b626fb..68795613a6 100644 --- a/packages/cli/assets/vite/vite.config.js +++ b/packages/cli/assets/vite/vite.config.js @@ -15,6 +15,7 @@ export default defineConfig({ v3_relativeSplatPath: true, v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, + v3_routeConfig: true, }, }), tsconfigPaths(), diff --git a/packages/hydrogen/package.json b/packages/hydrogen/package.json index d70d36b16e..8ca6f31285 100644 --- a/packages/hydrogen/package.json +++ b/packages/hydrogen/package.json @@ -74,6 +74,7 @@ "@remix-run/dev": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@shopify/generate-docs": "0.16.2", "@shopify/hydrogen-codegen": "*", "@testing-library/jest-dom": "^5.17.0", diff --git a/packages/hydrogen/src/dev/hydrogen-routes.ts b/packages/hydrogen/src/dev/hydrogen-routes.ts new file mode 100644 index 0000000000..e93f28702e --- /dev/null +++ b/packages/hydrogen/src/dev/hydrogen-routes.ts @@ -0,0 +1,23 @@ +import {route, RouteConfig, RouteConfigEntry} from '@remix-run/route-config'; +import {getVirtualRoutes} from '../vite/get-virtual-routes'; + +export async function hydrogenRoutes(): Promise { + console.log('hydrogenRoutes', import.meta.env.DEV); + // Only include these routes in development. + if (!import.meta.env.DEV) { + return []; + } + + const {root, routes: virtualRoutes} = await getVirtualRoutes(); + + return [ + route( + root.path, + root.file, + {id: root.id}, + virtualRoutes.map(({path, file, index, id}) => { + return route(path, file, {id, index}); + }), + ), + ]; +} diff --git a/packages/hydrogen/src/index.ts b/packages/hydrogen/src/index.ts index b6b2e2457f..c4e55afed2 100644 --- a/packages/hydrogen/src/index.ts +++ b/packages/hydrogen/src/index.ts @@ -177,3 +177,5 @@ export { } from './createHydrogenContext'; export {getSitemapIndex, getSitemap} from './sitemap/sitemap'; + +export {hydrogenRoutes} from './dev/hydrogen-routes'; diff --git a/packages/hydrogen/src/vite/plugin.ts b/packages/hydrogen/src/vite/plugin.ts index 7a57363941..08a2c43e21 100644 --- a/packages/hydrogen/src/vite/plugin.ts +++ b/packages/hydrogen/src/vite/plugin.ts @@ -189,6 +189,14 @@ function mergeOptions( return {...acc, ...newOptionsWithoutUndefined}; } +hydrogen.v3preset = () => + ({ + name: 'hydrogen', + remixConfigResolved({remixConfig}) { + sharedOptions.remixConfig = remixConfig; + }, + } satisfies RemixPreset); + hydrogen.preset = () => ({ name: 'hydrogen', diff --git a/templates/skeleton/app/routes.ts b/templates/skeleton/app/routes.ts new file mode 100644 index 0000000000..d132df264e --- /dev/null +++ b/templates/skeleton/app/routes.ts @@ -0,0 +1,3 @@ +import {flatRoutes} from '@remix-run/fs-routes'; + +export default flatRoutes(); diff --git a/templates/skeleton/package.json b/templates/skeleton/package.json index d08647ae77..331cd7c0aa 100644 --- a/templates/skeleton/package.json +++ b/templates/skeleton/package.json @@ -28,6 +28,9 @@ "@graphql-codegen/cli": "5.0.2", "@remix-run/dev": "^2.15.2", "@remix-run/eslint-config": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", + "@remix-run/routes-option-adapter": "^2.15.2", "@shopify/cli": "~3.73.0", "@shopify/hydrogen-codegen": "^0.3.2", "@shopify/mini-oxygen": "^3.1.0", diff --git a/templates/skeleton/vite.config.ts b/templates/skeleton/vite.config.ts index 5ee9b626fb..68795613a6 100644 --- a/templates/skeleton/vite.config.ts +++ b/templates/skeleton/vite.config.ts @@ -15,6 +15,7 @@ export default defineConfig({ v3_relativeSplatPath: true, v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, + v3_routeConfig: true, }, }), tsconfigPaths(), From d347234cbf604f7a77ebb3dc64336ac6e8ed946c Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Wed, 22 Jan 2025 14:43:52 +0000 Subject: [PATCH 02/16] WIP testing the example projects. --- examples/express/app/routes.ts | 7 +- examples/express/package.json | 2 +- package-lock.json | 461 ++---------------- packages/hydrogen/src/dev/hydrogen-routes.ts | 40 +- .../hydrogen/src/vite/get-virtual-routes.ts | 6 +- packages/hydrogen/tsup.config.ts | 9 + templates/skeleton/app/routes.ts | 4 +- templates/skeleton/package.json | 6 +- templates/skeleton/vite.config.ts | 2 +- 9 files changed, 77 insertions(+), 460 deletions(-) diff --git a/examples/express/app/routes.ts b/examples/express/app/routes.ts index c2fe7a2d04..3e02010420 100644 --- a/examples/express/app/routes.ts +++ b/examples/express/app/routes.ts @@ -2,9 +2,4 @@ import {flatRoutes} from '@remix-run/fs-routes'; import type {RouteConfig} from '@remix-run/route-config'; import {hydrogenRoutes} from '@shopify/hydrogen'; -console.log('hydrogenRoutes', hydrogenRoutes); - -export default [ - ...(await hydrogenRoutes()), - ...(await flatRoutes({rootDirectory: 'fs-routes'})), -] satisfies RouteConfig; +export default hydrogenRoutes([...(await flatRoutes())]) satisfies RouteConfig; diff --git a/examples/express/package.json b/examples/express/package.json index 801af221ab..4675bfe886 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -14,7 +14,7 @@ "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", - "@shopify/hydrogen": "file:../../packages/hydrogen", + "@shopify/hydrogen": "2024.10.1", "compression": "^1.7.4", "cross-env": "^7.0.3", "express": "^4.19.2", diff --git a/package-lock.json b/package-lock.json index 81ee87d4d8..df5ecc719d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -614,7 +614,7 @@ "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", - "@shopify/hydrogen": "file:../../packages/hydrogen", + "@shopify/hydrogen": "2024.10.1", "compression": "^1.7.4", "cross-env": "^7.0.3", "express": "^4.19.2", @@ -1595,7 +1595,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz", "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1664,7 +1663,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2036,7 +2034,6 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.23.6", @@ -2073,7 +2070,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", @@ -3352,8 +3348,7 @@ "node_modules/@emotion/hash": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", - "dev": true + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", @@ -3362,7 +3357,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "aix" @@ -3378,7 +3372,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -3395,7 +3388,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -3412,7 +3404,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "android" @@ -3429,7 +3420,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -3446,7 +3436,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -3463,7 +3452,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -3480,7 +3468,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -3497,7 +3484,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3514,7 +3500,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3531,7 +3516,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3548,7 +3532,6 @@ "cpu": [ "loong64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3565,7 +3548,6 @@ "cpu": [ "mips64el" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3582,7 +3564,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3599,7 +3580,6 @@ "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3616,7 +3596,6 @@ "cpu": [ "s390x" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3633,7 +3612,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3650,7 +3628,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "netbsd" @@ -3684,7 +3661,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "openbsd" @@ -3701,7 +3677,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "sunos" @@ -3718,7 +3693,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -3735,7 +3709,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -3752,7 +3725,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -5396,7 +5368,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -5413,7 +5384,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5426,7 +5396,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "engines": { "node": ">=12" }, @@ -5438,7 +5407,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -5455,7 +5423,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -5470,7 +5437,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -5580,8 +5546,7 @@ "node_modules/@jspm/core": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@jspm/core/-/core-2.0.1.tgz", - "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", - "dev": true + "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==" }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", @@ -5762,7 +5727,6 @@ }, "node_modules/@mdx-js/mdx": { "version": "2.3.0", - "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -5790,7 +5754,6 @@ }, "node_modules/@mdx-js/mdx/node_modules/estree-util-is-identifier-name": { "version": "2.1.0", - "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -5799,7 +5762,6 @@ }, "node_modules/@mdx-js/mdx/node_modules/mdast-util-to-hast": { "version": "12.3.0", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -5818,7 +5780,6 @@ }, "node_modules/@mdx-js/mdx/node_modules/remark-rehype": { "version": "10.1.0", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -6093,7 +6054,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", - "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -6105,7 +6065,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", - "dev": true, "dependencies": { "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", @@ -6124,7 +6083,6 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, "engines": { "node": ">=12" } @@ -6133,7 +6091,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -6148,7 +6105,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-4.0.1.tgz", "integrity": "sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==", - "dev": true, "dependencies": { "@npmcli/git": "^4.1.0", "glob": "^10.2.2", @@ -6166,7 +6122,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -6175,7 +6130,6 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -6195,7 +6149,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, @@ -6207,7 +6160,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -6216,7 +6168,6 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, "engines": { "node": ">=12" } @@ -6225,7 +6176,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6240,7 +6190,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, "dependencies": { "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", @@ -6255,7 +6204,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, "dependencies": { "which": "^3.0.0" }, @@ -6267,7 +6215,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -7141,7 +7088,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" @@ -7251,7 +7197,6 @@ "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.15.2.tgz", "integrity": "sha512-o8lix8t4GBhtXjo/G1IzwtHVW5GRMs7amtFtBHiR1bhSyK7VyX5qGtTDmJyny5QDv83pxaLOCiE0dUng2BCoyQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.21.8", @@ -7345,7 +7290,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7362,7 +7306,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7379,7 +7322,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7396,7 +7338,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7413,7 +7354,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7430,7 +7370,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7447,7 +7386,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7464,7 +7402,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7481,7 +7418,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7498,7 +7434,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7515,7 +7450,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7532,7 +7466,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7549,7 +7482,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7566,7 +7498,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7583,7 +7514,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7600,7 +7530,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7617,7 +7546,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7634,7 +7562,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7651,7 +7578,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7668,7 +7594,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7685,7 +7610,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7702,7 +7626,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7716,7 +7639,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -7726,7 +7648,6 @@ "version": "0.17.6", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.6.tgz", "integrity": "sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -7764,7 +7685,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -7788,7 +7708,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -7798,7 +7717,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7811,7 +7729,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7821,7 +7738,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -7837,7 +7753,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -7850,7 +7765,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -7866,7 +7780,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" @@ -7879,7 +7792,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7889,7 +7801,6 @@ "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/fs-routes/-/fs-routes-2.15.2.tgz", "integrity": "sha512-Ozf0ab5OcyJ0OcOHtjO726VptDXMOp+xek6n/Wp3A+IcaY2tmWWChYsw8O0dKZ5Q5BCJv3hlLX99PLadX9wqeg==", - "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" @@ -7970,7 +7881,6 @@ "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/route-config/-/route-config-2.15.2.tgz", "integrity": "sha512-xAbH3VCgsvUK3YH2INU7yhZMjbw5bGoSaGEGS3k+QdX8a9gWeFKPex+w76ZNjVNVVOMOE+yJVpdN9RrIu0Pfeg==", - "dev": true, "license": "MIT", "dependencies": { "lodash": "^4.17.21" @@ -8001,7 +7911,6 @@ "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/routes-option-adapter/-/routes-option-adapter-2.15.2.tgz", "integrity": "sha512-Um2p3vB1/qi9Qd+xFTXGFJnFqaLDNMEkQhYxuRUB3GkK4j5cHcoLY6z04+B5ioLzNJxrt5H+8wpH8IBc+8rAcQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" @@ -8115,7 +8024,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -8128,7 +8036,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -8141,7 +8048,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -8154,7 +8060,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -8167,7 +8072,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8180,7 +8084,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8193,7 +8096,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8206,7 +8108,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8219,7 +8120,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8232,7 +8132,6 @@ "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8245,7 +8144,6 @@ "cpu": [ "s390x" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8258,7 +8156,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8271,7 +8168,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -8284,7 +8180,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -8297,7 +8192,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -8310,7 +8204,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -9322,7 +9215,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.0.tgz", "integrity": "sha512-wc5DMI5BJftnK0Fyx9SNJKkA0+BZSJQx8430yutWmsILkHMBD3Yd9GhlMaxasab9RhgKqZp7Ht30hUYO5ZDvQg==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "@swc/counter": "^0.1.1", @@ -9363,7 +9256,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -9380,7 +9272,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -9397,7 +9288,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9414,7 +9304,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9431,7 +9320,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9448,7 +9336,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9465,7 +9352,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9482,7 +9368,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -9499,7 +9384,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -9516,7 +9400,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -9530,13 +9413,13 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", - "dev": true + "devOptional": true }, "node_modules/@swc/types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true + "devOptional": true }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", @@ -9772,35 +9655,30 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.9", - "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.3", - "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/@types/acorn": { "version": "4.0.6", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*" @@ -9917,7 +9795,6 @@ }, "node_modules/@types/debug": { "version": "4.1.7", - "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" @@ -9940,14 +9817,12 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "devOptional": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/estree-jsx": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.2.tgz", "integrity": "sha512-GNBWlGBMjiiiL5TSkvPtOteuXsiVitw5MYGY1UYlrAq0SKyczsls6sCD7TZ8fsjRsvCVxml7EbyjJezPb3DrSA==", - "dev": true, "dependencies": { "@types/estree": "*" } @@ -10133,7 +10008,6 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "dev": true, "dependencies": { "@types/unist": "^2" } @@ -10141,8 +10015,7 @@ "node_modules/@types/mdx": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz", - "integrity": "sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw==", - "dev": true + "integrity": "sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw==" }, "node_modules/@types/mime": { "version": "1.3.5", @@ -10165,7 +10038,6 @@ }, "node_modules/@types/ms": { "version": "0.7.31", - "dev": true, "license": "MIT" }, "node_modules/@types/mute-stream": { @@ -10711,7 +10583,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.0.4.tgz", "integrity": "sha512-mevYcVMwsT6960xnXRw/Rr2K7SOEwzwVBApg/2SJ3eg2KGsHfj1rN0oQ12WdoTT3RzThq+0551bVQKPvQnjeaA==", - "dev": true, "dependencies": { "@babel/core": "^7.20.7" } @@ -10720,7 +10591,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.14.1.tgz", "integrity": "sha512-V4JUuHNjZgl64NGfkDJePqizkNgiSpphODtZEs4cCPuxLAzwOUJYATGpejwimJr1n529kq4DEKWexW22LMBokw==", - "dev": true, "dependencies": { "@emotion/hash": "^0.9.0", "@vanilla-extract/private": "^1.0.3", @@ -10738,14 +10608,12 @@ "node_modules/@vanilla-extract/css/node_modules/outdent": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz", - "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", - "dev": true + "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==" }, "node_modules/@vanilla-extract/integration": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@vanilla-extract/integration/-/integration-6.5.0.tgz", "integrity": "sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ==", - "dev": true, "dependencies": { "@babel/core": "^7.20.7", "@babel/plugin-syntax-typescript": "^7.20.0", @@ -10765,14 +10633,12 @@ "node_modules/@vanilla-extract/integration/node_modules/outdent": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz", - "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", - "dev": true + "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==" }, "node_modules/@vanilla-extract/private": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.3.tgz", - "integrity": "sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==", - "dev": true + "integrity": "sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==" }, "node_modules/@vitejs/plugin-react": { "version": "4.2.1", @@ -11097,7 +10963,6 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -11317,7 +11182,6 @@ }, "node_modules/arg": { "version": "5.0.2", - "dev": true, "license": "MIT" }, "node_modules/argparse": { @@ -11483,7 +11347,6 @@ }, "node_modules/astring": { "version": "1.8.3", - "dev": true, "license": "MIT", "bin": { "astring": "bin/astring" @@ -11588,7 +11451,6 @@ }, "node_modules/bail": { "version": "2.0.2", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -11904,7 +11766,6 @@ }, "node_modules/cac": { "version": "6.7.14", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -11914,7 +11775,6 @@ "version": "17.1.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -11937,7 +11797,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -11946,7 +11805,6 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -11966,7 +11824,6 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, "engines": { "node": ">=12" } @@ -11975,7 +11832,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12162,7 +12018,6 @@ }, "node_modules/ccount": { "version": "2.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -12242,7 +12097,6 @@ }, "node_modules/character-entities": { "version": "2.0.2", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -12251,7 +12105,6 @@ }, "node_modules/character-entities-html4": { "version": "2.1.0", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -12260,7 +12113,6 @@ }, "node_modules/character-entities-legacy": { "version": "3.0.0", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -12269,7 +12121,6 @@ }, "node_modules/character-reference-invalid": { "version": "2.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -12320,7 +12171,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, "engines": { "node": ">=10" } @@ -12349,7 +12199,6 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "devOptional": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -12372,7 +12221,6 @@ "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "devOptional": true, "engines": { "node": ">=6" }, @@ -12419,7 +12267,6 @@ }, "node_modules/clone": { "version": "1.0.4", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8" @@ -12544,7 +12391,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -13039,7 +12885,6 @@ }, "node_modules/create-require": { "version": "1.1.1", - "dev": true, "license": "MIT", "optional": true, "peer": true @@ -13145,7 +12990,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, "engines": { "node": ">= 6" }, @@ -13160,7 +13004,6 @@ }, "node_modules/cssesc": { "version": "3.0.0", - "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -13171,7 +13014,6 @@ }, "node_modules/csstype": { "version": "3.1.1", - "devOptional": true, "license": "MIT" }, "node_modules/csv": { @@ -13298,7 +13140,6 @@ }, "node_modules/decode-named-character-reference": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -13410,8 +13251,7 @@ "node_modules/deep-object-diff": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", - "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", - "dev": true + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -13456,7 +13296,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "devOptional": true, "dependencies": { "clone": "^1.0.2" }, @@ -13563,7 +13402,6 @@ }, "node_modules/dequal": { "version": "2.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -13589,7 +13427,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, + "devOptional": true, "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -13878,8 +13716,7 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, "node_modules/error-ex": { "version": "1.3.2", @@ -13992,8 +13829,7 @@ "node_modules/es-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -14134,7 +13970,6 @@ "version": "0.19.8", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", - "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -14171,7 +14006,6 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.6.2.tgz", "integrity": "sha512-UwFku/RAQkKi6YsL6SkltZOz7qjmLadvT+7B46jzUqcHrQw524dn4MyMmMRUkAklBsX9nXzVt3LswQlznTJN7A==", - "dev": true, "dependencies": { "@jspm/core": "^2.0.1", "local-pkg": "^0.5.0", @@ -14975,7 +14809,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0" }, @@ -14988,7 +14821,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "dev": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -15003,7 +14835,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -15013,7 +14844,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz", "integrity": "sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==", - "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -15035,7 +14865,6 @@ }, "node_modules/estree-util-to-js": { "version": "1.2.0", - "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -15051,7 +14880,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", - "dev": true, "dependencies": { "is-plain-obj": "^3.0.0" }, @@ -15063,7 +14891,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", - "dev": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^2.0.0" @@ -15077,7 +14904,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -15103,7 +14929,6 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", - "dev": true, "dependencies": { "@types/node": "*", "require-like": ">= 0.1.1" @@ -15375,7 +15200,6 @@ }, "node_modules/extend": { "version": "3.0.2", - "dev": true, "license": "MIT" }, "node_modules/extendable-error": { @@ -15486,7 +15310,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", - "dev": true, "dependencies": { "format": "^0.2.0" }, @@ -15677,7 +15500,6 @@ }, "node_modules/find-up": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -15738,7 +15560,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -15754,7 +15575,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -15822,7 +15642,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -15836,7 +15655,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -15898,7 +15716,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", - "dev": true, "dependencies": { "loader-utils": "^3.2.0" } @@ -16637,7 +16454,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -16664,7 +16480,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -17404,7 +17219,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -17647,7 +17461,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, "engines": { "node": "^10 || ^12 || >= 14" }, @@ -17730,7 +17543,6 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -18100,7 +17912,6 @@ }, "node_modules/inline-style-parser": { "version": "0.1.1", - "dev": true, "license": "MIT" }, "node_modules/inquirer": { @@ -18185,7 +17996,6 @@ }, "node_modules/is-alphabetical": { "version": "2.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18194,7 +18004,6 @@ }, "node_modules/is-alphanumerical": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", @@ -18276,7 +18085,6 @@ }, "node_modules/is-buffer": { "version": "2.0.5", - "dev": true, "funding": [ { "type": "github", @@ -18321,7 +18129,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -18345,7 +18152,6 @@ }, "node_modules/is-decimal": { "version": "2.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18415,7 +18221,6 @@ }, "node_modules/is-hexadecimal": { "version": "2.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18460,7 +18265,6 @@ }, "node_modules/is-interactive": { "version": "1.0.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -18552,7 +18356,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, "engines": { "node": ">=10" }, @@ -18570,7 +18373,6 @@ }, "node_modules/is-reference": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*" @@ -18708,7 +18510,6 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -18883,7 +18684,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.3.0.tgz", "integrity": "sha512-glPiBfKguqA7v8JsXO3iLjJWZ9FV1vNpoI0I9hI9Mnk5yetO9uPLSpiCEmiVijAssv2f54HpvtzvAHfhPieiDQ==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -18917,8 +18717,7 @@ "node_modules/javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" }, "node_modules/jest-diff": { "version": "29.4.3", @@ -19149,7 +18948,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -19223,7 +19021,6 @@ }, "node_modules/jsonc-parser": { "version": "3.2.0", - "dev": true, "license": "MIT" }, "node_modules/jsonfile": { @@ -19392,7 +19189,6 @@ "version": "1.25.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.25.1.tgz", "integrity": "sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -19424,7 +19220,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -19445,7 +19240,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -19466,7 +19260,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -19487,7 +19280,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -19508,7 +19300,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -19529,7 +19320,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -19550,7 +19340,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -19571,7 +19360,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -19613,7 +19401,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -19631,7 +19418,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, "engines": { "node": ">=14" }, @@ -19902,7 +19688,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, "engines": { "node": ">= 12.13.0" } @@ -19911,7 +19696,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, "dependencies": { "mlly": "^1.4.2", "pkg-types": "^1.0.3" @@ -19925,7 +19709,6 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -19944,14 +19727,12 @@ "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.defaults": { "version": "4.2.0", @@ -19993,7 +19774,6 @@ }, "node_modules/log-symbols": { "version": "4.1.0", - "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -20054,7 +19834,6 @@ }, "node_modules/longest-streak": { "version": "3.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -20212,7 +19991,6 @@ }, "node_modules/make-error": { "version": "1.3.6", - "dev": true, "license": "ISC", "optional": true, "peer": true @@ -20237,7 +20015,6 @@ }, "node_modules/markdown-extensions": { "version": "1.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -20265,7 +20042,6 @@ }, "node_modules/mdast-util-definitions": { "version": "5.1.1", - "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -20281,7 +20057,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -20305,7 +20080,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.1.tgz", "integrity": "sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-to-markdown": "^1.3.0", @@ -20337,7 +20111,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", - "dev": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -21589,7 +21362,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", - "dev": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -21881,7 +21653,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -21901,7 +21672,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "unist-util-is": "^5.0.0" @@ -21915,7 +21685,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0" }, @@ -21928,7 +21697,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/media-query-parser/-/media-query-parser-2.0.2.tgz", "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" } @@ -22064,7 +21832,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22099,7 +21866,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22133,7 +21899,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.1.1.tgz", "integrity": "sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==", - "dev": true, "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^1.0.0", @@ -22149,7 +21914,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22175,7 +21939,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", - "dev": true, "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", @@ -22197,7 +21960,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -22207,7 +21969,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", - "dev": true, "dependencies": { "micromark-util-types": "^1.0.0" }, @@ -22220,7 +21981,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", - "dev": true, "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -22240,7 +22000,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0", "micromark-core-commonmark": "^1.0.0", @@ -22261,7 +22020,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22282,7 +22040,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22304,7 +22061,6 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22330,7 +22086,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22350,7 +22105,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22372,7 +22126,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22394,7 +22147,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22414,7 +22166,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22433,7 +22184,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22454,7 +22204,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22474,7 +22223,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22493,7 +22241,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22515,7 +22262,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22531,7 +22277,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22557,7 +22302,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22573,7 +22317,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22592,7 +22335,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22611,7 +22353,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22632,7 +22373,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22654,7 +22394,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22670,7 +22409,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -22847,7 +22585,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -22856,7 +22593,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -22868,7 +22604,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22880,7 +22615,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -22892,7 +22626,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22904,7 +22637,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -22916,7 +22648,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22928,7 +22659,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -22941,7 +22671,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22961,7 +22690,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -22977,7 +22705,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", - "dev": true, "dependencies": { "acorn": "^8.10.0", "pathe": "^1.1.1", @@ -22988,8 +22715,7 @@ "node_modules/modern-ahocorasick": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz", - "integrity": "sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==", - "dev": true + "integrity": "sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==" }, "node_modules/morgan": { "version": "1.10.0", @@ -23028,7 +22754,6 @@ }, "node_modules/mri": { "version": "1.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -23136,7 +22861,6 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "devOptional": true, "funding": [ { "type": "github", @@ -23384,7 +23108,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", - "dev": true, "dependencies": { "semver": "^7.1.1" }, @@ -23396,7 +23119,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -23405,7 +23127,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -23420,7 +23141,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, @@ -23432,7 +23152,6 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, "engines": { "node": ">=12" } @@ -23441,7 +23160,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", - "dev": true, "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -23939,7 +23657,6 @@ }, "node_modules/ora": { "version": "5.4.1", - "devOptional": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -24029,7 +23746,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "devOptional": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -24043,7 +23759,6 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -24106,8 +23821,7 @@ "node_modules/package-json-from-dist": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, "node_modules/pako": { "version": "0.2.9", @@ -24141,7 +23855,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0", "character-entities": "^2.0.0", @@ -24186,7 +23899,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true, "engines": { "node": ">=6" } @@ -24300,7 +24012,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -24315,8 +24026,7 @@ "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/path-to-regexp": { "version": "0.1.10", @@ -24354,7 +24064,6 @@ }, "node_modules/periscopic": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "estree-walker": "^3.0.0", @@ -24463,7 +24172,6 @@ }, "node_modules/pkg-types": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "jsonc-parser": "^3.2.0", @@ -24527,7 +24235,6 @@ "version": "8.4.38", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "devOptional": true, "funding": [ { "type": "opencollective", @@ -24555,7 +24262,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -24567,7 +24273,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -24602,7 +24307,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-6.0.0.tgz", "integrity": "sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==", - "dev": true, "dependencies": { "generic-names": "^4.0.0", "icss-utils": "^5.1.0", @@ -24621,7 +24325,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, "engines": { "node": "^10 || ^12 || >= 14" }, @@ -24633,7 +24336,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", - "dev": true, "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -24650,7 +24352,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -24665,7 +24366,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, "dependencies": { "icss-utils": "^5.0.0" }, @@ -24680,7 +24380,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -24691,7 +24390,6 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, "license": "MIT" }, "node_modules/preferred-pm": { @@ -24768,7 +24466,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, "dependencies": { "parse-ms": "^2.1.0" }, @@ -24796,7 +24493,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -24816,14 +24512,12 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -24851,7 +24545,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -25079,7 +24772,6 @@ }, "node_modules/react-refresh": { "version": "0.14.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -26693,7 +26385,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz", "integrity": "sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-frontmatter": "^1.0.0", @@ -26707,7 +26398,6 @@ }, "node_modules/remark-mdx": { "version": "2.3.0", - "dev": true, "license": "MIT", "dependencies": { "mdast-util-mdx": "^2.0.0", @@ -26722,7 +26412,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-1.1.1.tgz", "integrity": "sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==", - "dev": true, "dependencies": { "estree-util-is-identifier-name": "^1.0.0", "estree-util-value-to-estree": "^1.0.0", @@ -26735,7 +26424,6 @@ }, "node_modules/remark-mdx/node_modules/mdast-util-mdx": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^1.0.0", @@ -26753,7 +26441,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", - "dev": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -26777,7 +26464,6 @@ "version": "10.0.2", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-from-markdown": "^1.0.0", @@ -27235,7 +26921,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", - "dev": true, "engines": { "node": "*" } @@ -27294,7 +26979,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, "engines": { "node": ">=10" } @@ -27315,7 +26999,6 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "devOptional": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -27327,7 +27010,6 @@ }, "node_modules/restore-cursor/node_modules/mimic-fn": { "version": "2.1.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -27335,7 +27017,6 @@ }, "node_modules/restore-cursor/node_modules/onetime": { "version": "5.1.2", - "devOptional": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -27351,7 +27032,6 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, "engines": { "node": ">= 4" } @@ -27386,7 +27066,6 @@ "version": "4.18.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", - "devOptional": true, "dependencies": { "@types/estree": "1.0.5" }, @@ -27559,7 +27238,6 @@ }, "node_modules/sade": { "version": "1.8.1", - "dev": true, "license": "MIT", "dependencies": { "mri": "^1.1.0" @@ -28108,7 +27786,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -28132,7 +27809,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -28205,7 +27881,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -28214,12 +27889,10 @@ "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "dev": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -28229,8 +27902,7 @@ "node_modules/spdx-license-ids": { "version": "3.0.18", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", - "dev": true + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" }, "node_modules/split-on-first": { "version": "3.0.0", @@ -28263,7 +27935,6 @@ "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -28409,8 +28080,7 @@ "node_modules/string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", - "dev": true + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==" }, "node_modules/string-width": { "version": "4.2.3", @@ -28429,7 +28099,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -28442,8 +28111,7 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", @@ -28511,7 +28179,6 @@ }, "node_modules/stringify-entities": { "version": "4.0.3", - "dev": true, "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", @@ -28550,7 +28217,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -28560,7 +28226,6 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -28624,7 +28289,6 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", - "dev": true, "dependencies": { "inline-style-parser": "0.1.1" } @@ -28780,7 +28444,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -28834,7 +28497,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -28846,7 +28508,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -28858,7 +28519,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -29106,8 +28766,7 @@ "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", - "dev": true + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" }, "node_modules/touch": { "version": "3.1.0", @@ -29135,7 +28794,6 @@ }, "node_modules/trim-lines": { "version": "3.0.1", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -29156,7 +28814,6 @@ }, "node_modules/trough": { "version": "2.1.0", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -29194,7 +28851,6 @@ }, "node_modules/ts-node": { "version": "10.9.1", - "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -29238,14 +28894,12 @@ }, "node_modules/ts-node/node_modules/arg": { "version": "4.1.3", - "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", - "dev": true, "license": "BSD-3-Clause", "optional": true, "peer": true, @@ -29277,7 +28931,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -30116,8 +29769,7 @@ "node_modules/ufo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", - "dev": true + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==" }, "node_modules/unbox-primitive": { "version": "1.0.2", @@ -30173,7 +29825,6 @@ }, "node_modules/unified": { "version": "10.1.2", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30191,7 +29842,6 @@ }, "node_modules/unified/node_modules/is-plain-obj": { "version": "4.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -30204,7 +29854,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, "dependencies": { "unique-slug": "^4.0.0" }, @@ -30216,7 +29865,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -30240,7 +29888,6 @@ }, "node_modules/unist-util-generated": { "version": "2.0.0", - "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -30251,7 +29898,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -30264,7 +29910,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -30277,7 +29922,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -30290,7 +29934,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-visit": "^4.0.0" @@ -30304,7 +29947,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -30317,7 +29959,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -30332,7 +29973,6 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -30510,7 +30150,6 @@ }, "node_modules/uvu": { "version": "0.5.6", - "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0", @@ -30527,7 +30166,6 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "dev": true, "license": "MIT", "optional": true, "peer": true @@ -30550,7 +30188,6 @@ "version": "0.41.0", "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.41.0.tgz", "integrity": "sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==", - "dev": true, "license": "MIT", "peerDependencies": { "typescript": ">=5" @@ -30563,7 +30200,6 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", @@ -30574,7 +30210,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -30597,7 +30232,6 @@ }, "node_modules/vfile": { "version": "5.3.7", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30677,7 +30311,6 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -30691,7 +30324,6 @@ "version": "5.2.12", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", "integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", - "devOptional": true, "dependencies": { "esbuild": "^0.20.1", "postcss": "^8.4.38", @@ -30746,7 +30378,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", - "dev": true, "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", @@ -30790,7 +30421,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -30806,7 +30436,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -30822,7 +30451,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "android" @@ -30838,7 +30466,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -30854,7 +30481,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -30870,7 +30496,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -30886,7 +30511,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -30902,7 +30526,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -30918,7 +30541,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -30934,7 +30556,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "linux" @@ -30950,7 +30571,6 @@ "cpu": [ "loong64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -30966,7 +30586,6 @@ "cpu": [ "mips64el" ], - "dev": true, "optional": true, "os": [ "linux" @@ -30982,7 +30601,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -30998,7 +30616,6 @@ "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -31014,7 +30631,6 @@ "cpu": [ "s390x" ], - "dev": true, "optional": true, "os": [ "linux" @@ -31030,7 +30646,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -31046,7 +30661,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "netbsd" @@ -31062,7 +30676,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "openbsd" @@ -31078,7 +30691,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "sunos" @@ -31094,7 +30706,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -31110,7 +30721,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -31126,7 +30736,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -31139,7 +30748,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", - "devOptional": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -31319,7 +30927,6 @@ }, "node_modules/wcwidth": { "version": "1.0.1", - "devOptional": true, "license": "MIT", "dependencies": { "defaults": "^1.0.3" @@ -31572,7 +31179,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -31593,7 +31199,6 @@ "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "devOptional": true, "engines": { "node": ">=8.3.0" }, @@ -31633,7 +31238,6 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", - "devOptional": true, "bin": { "yaml": "bin.mjs" }, @@ -31683,7 +31287,6 @@ }, "node_modules/yn": { "version": "3.1.1", - "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -31693,7 +31296,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -31897,7 +31499,6 @@ }, "node_modules/zwitch": { "version": "2.0.2", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -34538,7 +34139,10 @@ "templates/skeleton": { "version": "2024.10.4", "dependencies": { + "@remix-run/fs-routes": "^2.15.2", "@remix-run/react": "^2.15.2", + "@remix-run/route-config": "^2.15.2", + "@remix-run/routes-option-adapter": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", "@shopify/hydrogen": "2024.10.1", "@shopify/remix-oxygen": "^2.0.9", @@ -34552,9 +34156,6 @@ "@graphql-codegen/cli": "5.0.2", "@remix-run/dev": "^2.15.2", "@remix-run/eslint-config": "^2.15.2", - "@remix-run/fs-routes": "^2.15.2", - "@remix-run/route-config": "^2.15.2", - "@remix-run/routes-option-adapter": "^2.15.2", "@shopify/cli": "~3.73.0", "@shopify/hydrogen-codegen": "^0.3.2", "@shopify/mini-oxygen": "^3.1.0", diff --git a/packages/hydrogen/src/dev/hydrogen-routes.ts b/packages/hydrogen/src/dev/hydrogen-routes.ts index e93f28702e..22b1cb439d 100644 --- a/packages/hydrogen/src/dev/hydrogen-routes.ts +++ b/packages/hydrogen/src/dev/hydrogen-routes.ts @@ -1,23 +1,33 @@ -import {route, RouteConfig, RouteConfigEntry} from '@remix-run/route-config'; import {getVirtualRoutes} from '../vite/get-virtual-routes'; +import {type RouteConfigEntry} from '@remix-run/route-config'; -export async function hydrogenRoutes(): Promise { - console.log('hydrogenRoutes', import.meta.env.DEV); - // Only include these routes in development. +// Make this transform the existing routes instead. +export async function hydrogenRoutes( + currentRoutes: Array, +): Promise> { + // Only run this in development. if (!import.meta.env.DEV) { - return []; + return currentRoutes; } const {root, routes: virtualRoutes} = await getVirtualRoutes(); - return [ - route( - root.path, - root.file, - {id: root.id}, - virtualRoutes.map(({path, file, index, id}) => { - return route(path, file, {id, index}); - }), - ), - ]; + const childVirtualRoutes = virtualRoutes.map(({path, file, index, id}) => { + return { + file, + id, + index, + path, + }; + }); + + const virtualRoot = { + file: root.file, + children: childVirtualRoutes, + path: root.path, + }; + + // The virtual root should land after any existing routes because of the root path + // handling. + return [...currentRoutes, virtualRoot]; } diff --git a/packages/hydrogen/src/vite/get-virtual-routes.ts b/packages/hydrogen/src/vite/get-virtual-routes.ts index 358f08e4a5..f52dfad4e4 100644 --- a/packages/hydrogen/src/vite/get-virtual-routes.ts +++ b/packages/hydrogen/src/vite/get-virtual-routes.ts @@ -2,11 +2,11 @@ import {fileURLToPath} from 'node:url'; import path from 'node:path'; import {readdir} from 'node:fs/promises'; -export const VIRTUAL_ROUTES_DIR = 'virtual-routes/routes'; -export const VIRTUAL_ROOT = 'virtual-routes/virtual-root'; +export const VIRTUAL_ROUTES_DIR = 'vite/virtual-routes/routes'; +export const VIRTUAL_ROOT = 'vite/virtual-routes/virtual-root'; export async function getVirtualRoutes() { - const distPath = path.dirname(fileURLToPath(import.meta.url)); + const distPath = path.dirname(path.dirname(fileURLToPath(import.meta.url))); const virtualRoutesPath = path.join(distPath, VIRTUAL_ROUTES_DIR); const routes = await readdir(virtualRoutesPath, {recursive: true}).then( diff --git a/packages/hydrogen/tsup.config.ts b/packages/hydrogen/tsup.config.ts index a36c3ff61d..56150bef4e 100644 --- a/packages/hydrogen/tsup.config.ts +++ b/packages/hydrogen/tsup.config.ts @@ -77,6 +77,15 @@ export default defineConfig([ sourcemap: false, dts: true, }, + { + entry: ['src/dev/**/*.ts', '!src/dev/**/*.test.ts'], + outDir: 'dist/dev', + format: 'esm', + minify: false, + bundle: true, + sourcemap: false, + dts: true, + }, { entry: ['src/vite/virtual-routes/**/*.tsx'], outDir: `${outDir}/vite/virtual-routes`, diff --git a/templates/skeleton/app/routes.ts b/templates/skeleton/app/routes.ts index d132df264e..3e02010420 100644 --- a/templates/skeleton/app/routes.ts +++ b/templates/skeleton/app/routes.ts @@ -1,3 +1,5 @@ import {flatRoutes} from '@remix-run/fs-routes'; +import type {RouteConfig} from '@remix-run/route-config'; +import {hydrogenRoutes} from '@shopify/hydrogen'; -export default flatRoutes(); +export default hydrogenRoutes([...(await flatRoutes())]) satisfies RouteConfig; diff --git a/templates/skeleton/package.json b/templates/skeleton/package.json index 331cd7c0aa..da1108779d 100644 --- a/templates/skeleton/package.json +++ b/templates/skeleton/package.json @@ -16,6 +16,9 @@ "dependencies": { "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", + "@remix-run/routes-option-adapter": "^2.15.2", "@shopify/hydrogen": "2024.10.1", "@shopify/remix-oxygen": "^2.0.9", "graphql": "^16.6.0", @@ -28,9 +31,6 @@ "@graphql-codegen/cli": "5.0.2", "@remix-run/dev": "^2.15.2", "@remix-run/eslint-config": "^2.15.2", - "@remix-run/fs-routes": "^2.15.2", - "@remix-run/route-config": "^2.15.2", - "@remix-run/routes-option-adapter": "^2.15.2", "@shopify/cli": "~3.73.0", "@shopify/hydrogen-codegen": "^0.3.2", "@shopify/mini-oxygen": "^3.1.0", diff --git a/templates/skeleton/vite.config.ts b/templates/skeleton/vite.config.ts index 68795613a6..c24343b6c2 100644 --- a/templates/skeleton/vite.config.ts +++ b/templates/skeleton/vite.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ hydrogen(), oxygen(), remix({ - presets: [hydrogen.preset()], + presets: [hydrogen.v3preset()], future: { v3_fetcherPersist: true, v3_relativeSplatPath: true, From e6ded23a05d18ec7eeae01b6d730d8460415f919 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Wed, 22 Jan 2025 15:30:17 +0000 Subject: [PATCH 03/16] WIP Trying to diagnose the skeleton project startup failure. --- examples/express/package.json | 6 +- package-lock.json | 223 ++-------------------------------- 2 files changed, 12 insertions(+), 217 deletions(-) diff --git a/examples/express/package.json b/examples/express/package.json index 4675bfe886..e43bb7d0f0 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -14,6 +14,9 @@ "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", + "@remix-run/eslint-config": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@shopify/hydrogen": "2024.10.1", "compression": "^1.7.4", "cross-env": "^7.0.3", @@ -25,9 +28,6 @@ }, "devDependencies": { "@remix-run/dev": "^2.15.2", - "@remix-run/eslint-config": "^2.15.2", - "@remix-run/fs-routes": "^2.15.2", - "@remix-run/route-config": "^2.15.2", "@shopify/cli": "~3.73.0", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", diff --git a/package-lock.json b/package-lock.json index df5ecc719d..dbfe74f7f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -610,9 +610,12 @@ "examples/express": { "name": "example-hydrogen-express", "dependencies": { + "@remix-run/eslint-config": "^2.15.2", "@remix-run/express": "^2.15.2", + "@remix-run/fs-routes": "^2.15.2", "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", + "@remix-run/route-config": "^2.15.2", "@remix-run/server-runtime": "^2.15.2", "@shopify/hydrogen": "2024.10.1", "compression": "^1.7.4", @@ -625,9 +628,6 @@ }, "devDependencies": { "@remix-run/dev": "^2.15.2", - "@remix-run/eslint-config": "^2.15.2", - "@remix-run/fs-routes": "^2.15.2", - "@remix-run/route-config": "^2.15.2", "@shopify/cli": "~3.73.0", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", @@ -650,7 +650,6 @@ "version": "2.15.2", "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.15.2.tgz", "integrity": "sha512-zch4J6ImrEjSvCbT9qufhubm6ym8E7LgGWpRihR2KB6oZndKEnSNe4ZklrwFXxIeGG+ACFSVm9JPR0lmAcAbTg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.21.8", @@ -759,7 +758,6 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1163,7 +1161,6 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -1182,7 +1179,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -1930,7 +1926,6 @@ }, "node_modules/@babel/plugin-transform-react-jsx-development": { "version": "7.18.6", - "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-transform-react-jsx": "^7.18.6" @@ -1974,7 +1969,6 @@ }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.18.6", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -2049,7 +2043,6 @@ }, "node_modules/@babel/preset-react": { "version": "7.18.6", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -3736,7 +3729,6 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" @@ -3752,7 +3744,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3762,7 +3753,6 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.5.1", - "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -3770,7 +3760,6 @@ }, "node_modules/@eslint/eslintrc": { "version": "2.0.3", - "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -3794,7 +3783,6 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -3807,7 +3795,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -3818,7 +3805,6 @@ }, "node_modules/@eslint/js": { "version": "8.42.0", - "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5226,7 +5212,6 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", - "dev": true, "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -5239,7 +5224,6 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -5251,7 +5235,6 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/@iarna/toml": { @@ -6015,7 +5998,6 @@ }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", - "dev": true, "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" @@ -7095,7 +7077,6 @@ }, "node_modules/@pkgr/utils": { "version": "2.4.1", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -7114,7 +7095,6 @@ }, "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7125,7 +7105,6 @@ }, "node_modules/@pkgr/utils/node_modules/open": { "version": "9.1.0", - "dev": true, "license": "MIT", "dependencies": { "default-browser": "^4.0.0", @@ -7143,8 +7122,7 @@ "node_modules/@pkgr/utils/node_modules/tslib": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", - "dev": true + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" }, "node_modules/@playwright/test": { "version": "1.40.1", @@ -8211,7 +8189,6 @@ }, "node_modules/@rushstack/eslint-patch": { "version": "1.2.0", - "dev": true, "license": "MIT" }, "node_modules/@shopify/cli": { @@ -9482,7 +9459,6 @@ "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -9695,8 +9671,7 @@ "node_modules/@types/aria-query": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.3.tgz", - "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==", - "dev": true + "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==" }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -9996,7 +9971,6 @@ }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, "license": "MIT" }, "node_modules/@types/lodash": { @@ -10138,8 +10112,7 @@ "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" }, "node_modules/@types/send": { "version": "0.17.1", @@ -10258,7 +10231,6 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.59.9", - "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", @@ -10416,7 +10388,6 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.59.9", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.59.9", @@ -10442,7 +10413,6 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.59.9", - "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.59.9", @@ -10458,7 +10428,6 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.59.9", - "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.59.9", @@ -10484,7 +10453,6 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.59.9", - "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10496,7 +10464,6 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.59.9", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.59.9", @@ -10522,7 +10489,6 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.59.9", - "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -10547,7 +10513,6 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.59.9", - "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.59.9", @@ -10565,7 +10530,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -11001,7 +10965,6 @@ }, "node_modules/ajv": { "version": "6.12.6", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -11190,7 +11153,6 @@ }, "node_modules/aria-query": { "version": "5.1.3", - "dev": true, "license": "Apache-2.0", "dependencies": { "deep-equal": "^2.0.5" @@ -11200,7 +11162,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -11215,7 +11176,6 @@ }, "node_modules/array-includes": { "version": "3.1.6", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -11240,7 +11200,6 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.1", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -11257,7 +11216,6 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.1", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -11274,7 +11232,6 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.1", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -11335,7 +11292,6 @@ }, "node_modules/ast-types-flow": { "version": "0.0.7", - "dev": true, "license": "ISC" }, "node_modules/astral-regex": { @@ -11394,14 +11350,12 @@ "version": "4.9.0", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.0.tgz", "integrity": "sha512-H5orY+M2Fr56DWmMFpMrq5Ge93qjNdPVqzBv5gWK3aD1OvjBEJlEzxf09z93dGVQeI0LiW+aCMIx1QtShC/zUw==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/axobject-query": { "version": "3.1.1", - "dev": true, "license": "Apache-2.0", "dependencies": { "deep-equal": "^2.0.5" @@ -11512,7 +11466,6 @@ }, "node_modules/big-integer": { "version": "1.6.51", - "dev": true, "license": "Unlicense", "engines": { "node": ">=0.6" @@ -11587,7 +11540,6 @@ }, "node_modules/bplist-parser": { "version": "0.2.0", - "dev": true, "license": "MIT", "dependencies": { "big-integer": "^1.6.44" @@ -11713,7 +11665,6 @@ }, "node_modules/bundle-name": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "run-applescript": "^5.0.0" @@ -11900,7 +11851,6 @@ }, "node_modules/callsites": { "version": "3.1.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -13047,7 +12997,6 @@ }, "node_modules/damerau-levenshtein": { "version": "1.0.8", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/data-uri-to-buffer": { @@ -13202,7 +13151,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.5", @@ -13232,7 +13180,6 @@ }, "node_modules/deep-equal/node_modules/isarray": { "version": "2.0.5", - "dev": true, "license": "MIT" }, "node_modules/deep-extend": { @@ -13245,7 +13192,6 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, "license": "MIT" }, "node_modules/deep-object-diff": { @@ -13262,7 +13208,6 @@ }, "node_modules/default-browser": { "version": "4.0.0", - "dev": true, "license": "MIT", "dependencies": { "bundle-name": "^3.0.0", @@ -13279,7 +13224,6 @@ }, "node_modules/default-browser-id": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "bplist-parser": "^0.2.0", @@ -13339,7 +13283,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -13499,7 +13442,6 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -13510,7 +13452,6 @@ }, "node_modules/dom-accessibility-api": { "version": "0.5.14", - "dev": true, "license": "MIT" }, "node_modules/dot-case": { @@ -13669,7 +13610,6 @@ "version": "5.18.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -13735,7 +13675,6 @@ }, "node_modules/es-abstract": { "version": "1.21.1", - "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", @@ -13804,7 +13743,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -13823,8 +13761,7 @@ "node_modules/es-get-iterator/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/es-module-lexer": { "version": "1.4.1", @@ -13833,7 +13770,6 @@ }, "node_modules/es-set-tostringtag": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3", @@ -13846,7 +13782,6 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -13854,7 +13789,6 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", - "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -14041,7 +13975,6 @@ }, "node_modules/eslint": { "version": "8.42.0", - "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -14107,7 +14040,6 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", - "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", @@ -14117,7 +14049,6 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -14125,7 +14056,6 @@ }, "node_modules/eslint-import-resolver-typescript": { "version": "3.5.5", - "dev": true, "license": "ISC", "dependencies": { "debug": "^4.3.4", @@ -14152,7 +14082,6 @@ "version": "13.2.2", "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -14169,7 +14098,6 @@ }, "node_modules/eslint-import-resolver-typescript/node_modules/slash": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -14180,7 +14108,6 @@ }, "node_modules/eslint-module-utils": { "version": "2.7.4", - "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7" @@ -14196,7 +14123,6 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -14204,7 +14130,6 @@ }, "node_modules/eslint-plugin-es": { "version": "3.0.1", - "dev": true, "license": "MIT", "dependencies": { "eslint-utils": "^2.0.0", @@ -14222,7 +14147,6 @@ }, "node_modules/eslint-plugin-es/node_modules/eslint-utils": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" @@ -14236,7 +14160,6 @@ }, "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=4" @@ -14292,7 +14215,6 @@ }, "node_modules/eslint-plugin-import": { "version": "2.27.5", - "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.6", @@ -14320,7 +14242,6 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -14328,7 +14249,6 @@ }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -14339,7 +14259,6 @@ }, "node_modules/eslint-plugin-import/node_modules/json5": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -14352,7 +14271,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -14361,7 +14279,6 @@ "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -14371,7 +14288,6 @@ }, "node_modules/eslint-plugin-jest": { "version": "26.9.0", - "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -14394,7 +14310,6 @@ }, "node_modules/eslint-plugin-jest-dom": { "version": "4.0.3", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.16.3", @@ -14412,7 +14327,6 @@ }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.7.1", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.7", @@ -14443,14 +14357,12 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-node": { "version": "11.1.0", - "dev": true, "license": "MIT", "dependencies": { "eslint-plugin-es": "^3.0.0", @@ -14469,7 +14381,6 @@ }, "node_modules/eslint-plugin-node/node_modules/eslint-utils": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" @@ -14483,7 +14394,6 @@ }, "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=4" @@ -14493,7 +14403,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -14520,7 +14429,6 @@ }, "node_modules/eslint-plugin-react": { "version": "7.32.2", - "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.6", @@ -14548,7 +14456,6 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14559,7 +14466,6 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -14572,7 +14478,6 @@ "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -14589,7 +14494,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -14604,7 +14508,6 @@ }, "node_modules/eslint-plugin-testing-library": { "version": "5.11.0", - "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.58.0" @@ -14628,7 +14531,6 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -14640,7 +14542,6 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -14665,7 +14566,6 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10" @@ -14675,7 +14575,6 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -14691,7 +14590,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -14701,7 +14599,6 @@ }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -14714,7 +14611,6 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -14727,7 +14623,6 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -14738,7 +14633,6 @@ }, "node_modules/espree": { "version": "9.5.2", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.8.0", @@ -14756,7 +14650,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -14777,7 +14670,6 @@ }, "node_modules/esquery": { "version": "1.4.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -14788,7 +14680,6 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -14799,7 +14690,6 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -14910,7 +14800,6 @@ }, "node_modules/esutils": { "version": "2.0.3", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -15262,12 +15151,10 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, "license": "MIT" }, "node_modules/fast-querystring": { @@ -15391,7 +15278,6 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", - "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -15533,7 +15419,6 @@ }, "node_modules/flat-cache": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.1.0", @@ -15546,8 +15431,7 @@ "node_modules/flatted": { "version": "3.2.9", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "node_modules/for-each": { "version": "0.3.3", @@ -15689,7 +15573,6 @@ }, "node_modules/function.prototype.name": { "version": "1.1.5", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -15706,7 +15589,6 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15830,7 +15712,6 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -15845,7 +15726,6 @@ }, "node_modules/get-tsconfig": { "version": "4.6.0", - "dev": true, "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -15896,7 +15776,6 @@ }, "node_modules/globalthis": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.1.3" @@ -15983,12 +15862,10 @@ }, "node_modules/grapheme-splitter": { "version": "1.0.4", - "dev": true, "license": "MIT" }, "node_modules/graphemer": { "version": "1.4.0", - "dev": true, "license": "MIT" }, "node_modules/graphql": { @@ -16208,14 +16085,12 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, "engines": { "node": ">= 0.4.0" } }, "node_modules/has-bigints": { "version": "1.0.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17518,7 +17393,6 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "devOptional": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -17956,7 +17830,6 @@ }, "node_modules/internal-slot": { "version": "1.0.5", - "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.0", @@ -18032,7 +17905,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -18049,7 +17921,6 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" @@ -18070,7 +17941,6 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -18138,7 +18008,6 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -18234,7 +18103,6 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { "is-docker": "^3.0.0" @@ -18251,7 +18119,6 @@ }, "node_modules/is-inside-container/node_modules/is-docker": { "version": "3.0.0", - "dev": true, "license": "MIT", "bin": { "is-docker": "cli.js" @@ -18284,7 +18151,6 @@ }, "node_modules/is-map": { "version": "2.0.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18292,7 +18158,6 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -18317,7 +18182,6 @@ }, "node_modules/is-number-object": { "version": "1.0.7", - "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -18380,7 +18244,6 @@ }, "node_modules/is-regex": { "version": "1.1.4", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -18414,7 +18277,6 @@ }, "node_modules/is-set": { "version": "2.0.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18422,7 +18284,6 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -18443,7 +18304,6 @@ }, "node_modules/is-string": { "version": "1.0.7", - "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -18468,7 +18328,6 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" @@ -18532,7 +18391,6 @@ }, "node_modules/is-weakmap": { "version": "2.0.1", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18540,7 +18398,6 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -18551,7 +18408,6 @@ }, "node_modules/is-weakset": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -18972,7 +18828,6 @@ }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, "license": "MIT" }, "node_modules/json-schema-typed": { @@ -18994,7 +18849,6 @@ }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, "license": "MIT" }, "node_modules/json-to-pretty-yaml": { @@ -19044,7 +18898,6 @@ }, "node_modules/jsx-ast-utils": { "version": "3.3.3", - "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.5", @@ -19123,12 +18976,10 @@ }, "node_modules/language-subtag-registry": { "version": "0.3.22", - "dev": true, "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.5", - "dev": true, "license": "MIT", "dependencies": { "language-subtag-registry": "~0.3.2" @@ -19175,7 +19026,6 @@ }, "node_modules/levn": { "version": "0.4.1", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -19933,7 +19783,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, "bin": { "lz-string": "bin/bin.js" } @@ -22876,12 +22725,10 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "dev": true, "license": "MIT" }, "node_modules/natural-orderby": { @@ -23480,7 +23327,6 @@ }, "node_modules/object-is": { "version": "1.1.5", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -23495,7 +23341,6 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -23510,7 +23355,6 @@ }, "node_modules/object.assign": { "version": "4.1.4", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -23527,7 +23371,6 @@ }, "node_modules/object.entries": { "version": "1.1.6", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -23540,7 +23383,6 @@ }, "node_modules/object.fromentries": { "version": "2.0.6", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -23556,7 +23398,6 @@ }, "node_modules/object.hasown": { "version": "1.1.2", - "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.1.4", @@ -23568,7 +23409,6 @@ }, "node_modules/object.values": { "version": "1.1.6", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -23642,7 +23482,6 @@ "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -23842,7 +23681,6 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "devOptional": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -23986,7 +23824,6 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, "license": "MIT" }, "node_modules/path-root": { @@ -24408,7 +24245,6 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -24440,7 +24276,6 @@ }, "node_modules/pretty-format": { "version": "27.5.1", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", @@ -24453,7 +24288,6 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -24528,7 +24362,6 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -24538,7 +24371,6 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "dev": true, "license": "MIT" }, "node_modules/property-information": { @@ -24752,7 +24584,6 @@ }, "node_modules/react-is": { "version": "17.0.2", - "dev": true, "license": "MIT" }, "node_modules/react-reconciler": { @@ -25587,7 +25418,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -25609,7 +25439,6 @@ }, "node_modules/regexpp": { "version": "3.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -26931,7 +26760,6 @@ }, "node_modules/requireindex": { "version": "1.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.5" @@ -26941,7 +26769,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -26961,7 +26788,6 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -26969,7 +26795,6 @@ }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" @@ -27098,7 +26923,6 @@ }, "node_modules/run-applescript": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0" @@ -27112,7 +26936,6 @@ }, "node_modules/run-applescript/node_modules/execa": { "version": "5.1.1", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -27134,7 +26957,6 @@ }, "node_modules/run-applescript/node_modules/human-signals": { "version": "2.1.0", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -27142,7 +26964,6 @@ }, "node_modules/run-applescript/node_modules/is-stream": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -27153,7 +26974,6 @@ }, "node_modules/run-applescript/node_modules/mimic-fn": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -27161,7 +26981,6 @@ }, "node_modules/run-applescript/node_modules/npm-run-path": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -27172,7 +26991,6 @@ }, "node_modules/run-applescript/node_modules/onetime": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -27186,7 +27004,6 @@ }, "node_modules/run-applescript/node_modules/strip-final-newline": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -27252,7 +27069,6 @@ }, "node_modules/safe-regex-test": { "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -27420,7 +27236,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -28009,7 +27824,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, "dependencies": { "internal-slot": "^1.0.4" }, @@ -28119,7 +27933,6 @@ }, "node_modules/string.prototype.matchall": { "version": "4.0.8", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -28153,7 +27966,6 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.6", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -28166,7 +27978,6 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.6", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -28259,7 +28070,6 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28390,7 +28200,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -28413,7 +28222,6 @@ }, "node_modules/synckit": { "version": "0.8.5", - "dev": true, "license": "MIT", "dependencies": { "@pkgr/utils": "^2.3.1", @@ -28429,12 +28237,10 @@ "node_modules/synckit/node_modules/tslib": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", - "dev": true + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" }, "node_modules/tapable": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -28603,7 +28409,6 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, "license": "MIT" }, "node_modules/thenify": { @@ -28718,7 +28523,6 @@ }, "node_modules/titleize": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -28942,7 +28746,6 @@ }, "node_modules/tslib": { "version": "1.14.1", - "dev": true, "license": "0BSD" }, "node_modules/tsscmp": { @@ -29546,7 +29349,6 @@ }, "node_modules/tsutils": { "version": "3.21.0", - "dev": true, "license": "MIT", "dependencies": { "tslib": "^1.8.1" @@ -29680,7 +29482,6 @@ }, "node_modules/type-check": { "version": "0.4.0", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -29720,7 +29521,6 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -29735,7 +29535,6 @@ "version": "5.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29773,7 +29572,6 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -30023,7 +29821,6 @@ }, "node_modules/untildify": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -31040,7 +30837,6 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", @@ -31055,7 +30851,6 @@ }, "node_modules/which-collection": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.1", From e19ab475af2a24c0a75f586edbea797f6dca202f Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Thu, 23 Jan 2025 14:32:00 +0000 Subject: [PATCH 04/16] Reimplemented virtual routes to build paths without node libraries. --- .../src/vite/get-virtual-routes.test.ts | 6 +- .../hydrogen/src/vite/get-virtual-routes.ts | 70 ++++++++++++------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/packages/hydrogen/src/vite/get-virtual-routes.test.ts b/packages/hydrogen/src/vite/get-virtual-routes.test.ts index 7546e5dd22..8671b29609 100644 --- a/packages/hydrogen/src/vite/get-virtual-routes.test.ts +++ b/packages/hydrogen/src/vite/get-virtual-routes.test.ts @@ -9,19 +9,19 @@ describe('virtual routes', () => { routes: expect.arrayContaining([ { id: expect.any(String), - file: expect.stringContaining('graphiql.tsx'), + file: expect.stringContaining('graphiql.jsx'), index: false, path: 'graphiql', }, { id: expect.any(String), - file: expect.stringContaining('subrequest-profiler.tsx'), + file: expect.stringContaining('subrequest-profiler.jsx'), index: false, path: 'subrequest-profiler', }, { id: expect.any(String), - file: expect.stringContaining('index.tsx'), + file: expect.stringContaining('index.jsx'), index: true, path: '', }, diff --git a/packages/hydrogen/src/vite/get-virtual-routes.ts b/packages/hydrogen/src/vite/get-virtual-routes.ts index f52dfad4e4..07c7f1db45 100644 --- a/packages/hydrogen/src/vite/get-virtual-routes.ts +++ b/packages/hydrogen/src/vite/get-virtual-routes.ts @@ -1,39 +1,57 @@ -import {fileURLToPath} from 'node:url'; -import path from 'node:path'; -import {readdir} from 'node:fs/promises'; - export const VIRTUAL_ROUTES_DIR = 'vite/virtual-routes/routes'; +export const VIRTUAL_ROUTES_ROUTES_DIR_PARTS = [ + 'vite', + 'virtual-routes', + 'routes', +]; +export const VIRTUAL_ROUTES_DIR_PARTS = ['vite', 'virtual-routes']; export const VIRTUAL_ROOT = 'vite/virtual-routes/virtual-root'; -export async function getVirtualRoutes() { - const distPath = path.dirname(path.dirname(fileURLToPath(import.meta.url))); - const virtualRoutesPath = path.join(distPath, VIRTUAL_ROUTES_DIR); - - const routes = await readdir(virtualRoutesPath, {recursive: true}).then( - (files) => - files.map((relativeFilePath) => { - const absoluteFilePath = path.join(virtualRoutesPath, relativeFilePath); - const id = relativeFilePath - .replace(/\.[jt]sx?$/, '') - .replaceAll('\\', '/'); - const isIndex = /(^|\/)index$/.test(id); - const routePath = id.replace(/(^|\/)index$/, ''); +function getVirtualRoutesPath( + pathParts: Array, + forFile: string, +): string { + const basePath = new URL('../', import.meta.url); + const virtualRoutesPath = pathParts.reduce((working, dirPart) => { + return new URL(`${dirPart}/`, working); + }, basePath); + return new URL(forFile, virtualRoutesPath).pathname; +} - return { - id: `${VIRTUAL_ROUTES_DIR}/${id}`, - path: routePath, - file: absoluteFilePath, - index: isIndex, - }; - }), - ); +export async function getVirtualRoutes() { + const routes = [ + { + id: `${VIRTUAL_ROUTES_DIR}/graphiql`, + path: 'graphiql', + file: getVirtualRoutesPath( + VIRTUAL_ROUTES_ROUTES_DIR_PARTS, + 'graphiql.jsx', + ), + index: false, + }, + { + id: `${VIRTUAL_ROUTES_DIR}/subrequest-profiler`, + path: 'subrequest-profiler', + file: getVirtualRoutesPath( + VIRTUAL_ROUTES_ROUTES_DIR_PARTS, + 'subrequest-profiler.jsx', + ), + index: false, + }, + { + id: `${VIRTUAL_ROUTES_DIR}/index`, + path: '', + file: getVirtualRoutesPath(VIRTUAL_ROUTES_ROUTES_DIR_PARTS, 'index.jsx'), + index: true, + }, + ]; return { routes, root: { id: VIRTUAL_ROOT, path: '', - file: path.join(distPath, VIRTUAL_ROOT + '.jsx'), + file: getVirtualRoutesPath(VIRTUAL_ROUTES_DIR_PARTS, 'virtual-root.jsx'), }, }; } From 1acaac3eb63e395f8fbbef02bf0c0c8d48ce8c46 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Fri, 24 Jan 2025 10:39:33 +0000 Subject: [PATCH 05/16] Removed change to multipass project. --- examples/multipass/package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/multipass/package.json b/examples/multipass/package.json index bd0b15016a..b668131fcf 100644 --- a/examples/multipass/package.json +++ b/examples/multipass/package.json @@ -15,8 +15,6 @@ "snakecase-keys": "^5.5.0" }, "devDependencies": { - "@remix-run/fs-routes": "^2.15.2", - "@remix-run/route-config": "^2.15.2", "@types/crypto-js": "^4.2.1" } } From 010deb31c4080eb20b50ae17c6b804afd2241d94 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Fri, 24 Jan 2025 11:41:07 +0000 Subject: [PATCH 06/16] Multipass example now uses v3preset. --- examples/multipass/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/multipass/vite.config.ts b/examples/multipass/vite.config.ts index 90761bd5c8..9a82460e1c 100644 --- a/examples/multipass/vite.config.ts +++ b/examples/multipass/vite.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ hydrogen(), oxygen(), remix({ - presets: [hydrogen.preset()], + presets: [hydrogen.v3preset()], future: { v3_fetcherPersist: true, v3_relativeSplatPath: true, From c49e589715c04d6e2bc48e576b7dbd24fd170f58 Mon Sep 17 00:00:00 2001 From: Helen Lin Date: Tue, 4 Feb 2025 09:31:47 -0800 Subject: [PATCH 07/16] Fix virtual route layout --- package-lock.json | 2 - packages/hydrogen/src/dev/hydrogen-routes.ts | 13 ++---- .../hydrogen/src/vite/get-virtual-routes.ts | 17 +++++-- .../src/vite/virtual-routes/layout.tsx | 42 +++++++++++++++++ .../src/vite/virtual-routes/virtual-root.tsx | 20 ++++---- templates/skeleton/app/layout.tsx | 46 +++++++++++++++++++ templates/skeleton/app/root.tsx | 43 +---------------- templates/skeleton/app/routes.ts | 6 ++- 8 files changed, 124 insertions(+), 65 deletions(-) create mode 100644 packages/hydrogen/src/vite/virtual-routes/layout.tsx create mode 100644 templates/skeleton/app/layout.tsx diff --git a/package-lock.json b/package-lock.json index 8437ab6a11..7b5132f119 100644 --- a/package-lock.json +++ b/package-lock.json @@ -730,8 +730,6 @@ "snakecase-keys": "^5.5.0" }, "devDependencies": { - "@remix-run/fs-routes": "^2.15.2", - "@remix-run/route-config": "^2.15.2", "@types/crypto-js": "^4.2.1" } }, diff --git a/packages/hydrogen/src/dev/hydrogen-routes.ts b/packages/hydrogen/src/dev/hydrogen-routes.ts index 22b1cb439d..d9a5eccbe5 100644 --- a/packages/hydrogen/src/dev/hydrogen-routes.ts +++ b/packages/hydrogen/src/dev/hydrogen-routes.ts @@ -1,4 +1,4 @@ -import {getVirtualRoutes} from '../vite/get-virtual-routes'; +import {getVirtualRoutesV3} from '../vite/get-virtual-routes'; import {type RouteConfigEntry} from '@remix-run/route-config'; // Make this transform the existing routes instead. @@ -10,7 +10,7 @@ export async function hydrogenRoutes( return currentRoutes; } - const {root, routes: virtualRoutes} = await getVirtualRoutes(); + const {layout, routes: virtualRoutes} = await getVirtualRoutesV3(); const childVirtualRoutes = virtualRoutes.map(({path, file, index, id}) => { return { @@ -21,13 +21,10 @@ export async function hydrogenRoutes( }; }); - const virtualRoot = { - file: root.file, + const virtualLayout = { + file: layout.file, children: childVirtualRoutes, - path: root.path, }; - // The virtual root should land after any existing routes because of the root path - // handling. - return [...currentRoutes, virtualRoot]; + return [virtualLayout, ...currentRoutes]; } diff --git a/packages/hydrogen/src/vite/get-virtual-routes.ts b/packages/hydrogen/src/vite/get-virtual-routes.ts index 07c7f1db45..a5885263ed 100644 --- a/packages/hydrogen/src/vite/get-virtual-routes.ts +++ b/packages/hydrogen/src/vite/get-virtual-routes.ts @@ -18,8 +18,8 @@ function getVirtualRoutesPath( return new URL(forFile, virtualRoutesPath).pathname; } -export async function getVirtualRoutes() { - const routes = [ +function getChildRoutes() { + return [ { id: `${VIRTUAL_ROUTES_DIR}/graphiql`, path: 'graphiql', @@ -45,9 +45,11 @@ export async function getVirtualRoutes() { index: true, }, ]; +} +export async function getVirtualRoutes() { return { - routes, + routes: getChildRoutes(), root: { id: VIRTUAL_ROOT, path: '', @@ -55,3 +57,12 @@ export async function getVirtualRoutes() { }, }; } + +export async function getVirtualRoutesV3() { + return { + routes: getChildRoutes(), + layout: { + file: getVirtualRoutesPath(VIRTUAL_ROUTES_DIR_PARTS, 'layout.jsx'), + }, + }; +} diff --git a/packages/hydrogen/src/vite/virtual-routes/layout.tsx b/packages/hydrogen/src/vite/virtual-routes/layout.tsx new file mode 100644 index 0000000000..359a0ce75a --- /dev/null +++ b/packages/hydrogen/src/vite/virtual-routes/layout.tsx @@ -0,0 +1,42 @@ +// This file is the layout export for virtual routes +// that works with v3_routeConfig. +// It does not affect the routes from the user app. + +import {useNonce} from '@shopify/hydrogen'; +import { + Links, + Meta, + Outlet, + Scripts, + ScrollRestoration, +} from '@remix-run/react'; +import {Layout as VirtualLayout} from './components/Layout.jsx'; + +import styles from './assets/styles.css?url'; + +export default function Layout() { + const nonce = useNonce(); + return ( + + + + + + Hydrogen + + + + + + + + + + + + + ); +} diff --git a/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx b/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx index a68745db2a..b8dcd66540 100644 --- a/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx +++ b/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx @@ -12,25 +12,25 @@ import { useRouteError, } from '@remix-run/react'; import favicon from './assets/favicon.svg'; -import {Layout} from './components/Layout.jsx'; +import {Layout as VirtualLayout} from './components/Layout.jsx'; import {useNonce} from '@shopify/hydrogen'; import styles from './assets/styles.css?url'; export const links: LinksFunction = () => { return [ - {rel: 'stylesheet', href: styles}, {rel: 'icon', type: 'image/svg+xml', href: favicon}, ]; }; -export default function App() { +export function Layout({children}: {children?: React.ReactNode}) { const nonce = useNonce(); return ( + Hydrogen - - - + + {children} + @@ -50,6 +50,10 @@ export default function App() { ); } +export default function App() { + return ; +} + export function ErrorBoundary() { const error = useRouteError(); let errorMessage = 'Unknown error'; @@ -63,7 +67,7 @@ export function ErrorBoundary() { } return ( - +

Please report this error

{errorStatus}

@@ -73,6 +77,6 @@ export function ErrorBoundary() { )}
-
+ ); } diff --git a/templates/skeleton/app/layout.tsx b/templates/skeleton/app/layout.tsx new file mode 100644 index 0000000000..e3103d369b --- /dev/null +++ b/templates/skeleton/app/layout.tsx @@ -0,0 +1,46 @@ +import {useNonce, Analytics} from '@shopify/hydrogen'; +import { + Links, + Meta, + Scripts, + useRouteLoaderData, + ScrollRestoration, + Outlet, +} from '@remix-run/react'; +import resetStyles from '~/styles/reset.css?url'; +import appStyles from '~/styles/app.css?url'; +import {PageLayout} from '~/components/PageLayout'; +import { RootLoader } from './root'; + +export default function Layout() { + const nonce = useNonce(); + const data = useRouteLoaderData('root'); + + return ( + + + + + + + + + + + {data ? ( + + + + ) : ( + + )} + + + + + ); +} diff --git a/templates/skeleton/app/root.tsx b/templates/skeleton/app/root.tsx index eeb97d99a5..d6ee9a3e19 100644 --- a/templates/skeleton/app/root.tsx +++ b/templates/skeleton/app/root.tsx @@ -1,20 +1,12 @@ -import {useNonce, getShopAnalytics, Analytics} from '@shopify/hydrogen'; +import {getShopAnalytics} from '@shopify/hydrogen'; import {defer, type LoaderFunctionArgs} from '@shopify/remix-oxygen'; import { - Links, - Meta, Outlet, - Scripts, useRouteError, - useRouteLoaderData, - ScrollRestoration, isRouteErrorResponse, type ShouldRevalidateFunction, } from '@remix-run/react'; import favicon from '~/assets/favicon.svg'; -import resetStyles from '~/styles/reset.css?url'; -import appStyles from '~/styles/app.css?url'; -import {PageLayout} from '~/components/PageLayout'; import {FOOTER_QUERY, HEADER_QUERY} from '~/lib/fragments'; export type RootLoader = typeof loader; @@ -137,39 +129,6 @@ function loadDeferredData({context}: LoaderFunctionArgs) { }; } -export function Layout({children}: {children?: React.ReactNode}) { - const nonce = useNonce(); - const data = useRouteLoaderData('root'); - - return ( - - - - - - - - - - - {data ? ( - - {children} - - ) : ( - children - )} - - - - - ); -} - export default function App() { return ; } diff --git a/templates/skeleton/app/routes.ts b/templates/skeleton/app/routes.ts index 3e02010420..986f75c637 100644 --- a/templates/skeleton/app/routes.ts +++ b/templates/skeleton/app/routes.ts @@ -1,5 +1,7 @@ import {flatRoutes} from '@remix-run/fs-routes'; -import type {RouteConfig} from '@remix-run/route-config'; +import {layout, type RouteConfig} from '@remix-run/route-config'; import {hydrogenRoutes} from '@shopify/hydrogen'; -export default hydrogenRoutes([...(await flatRoutes())]) satisfies RouteConfig; +export default hydrogenRoutes([ + layout('./layout.tsx', (await flatRoutes())), +]) satisfies RouteConfig; From 3cb970ef0da6fa58f2539bce72f4aed9d93b068b Mon Sep 17 00:00:00 2001 From: Helen Lin Date: Tue, 4 Feb 2025 09:48:37 -0800 Subject: [PATCH 08/16] fix the ordering of virtual routes --- packages/hydrogen/src/dev/hydrogen-routes.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/hydrogen/src/dev/hydrogen-routes.ts b/packages/hydrogen/src/dev/hydrogen-routes.ts index d9a5eccbe5..f7a78f03b3 100644 --- a/packages/hydrogen/src/dev/hydrogen-routes.ts +++ b/packages/hydrogen/src/dev/hydrogen-routes.ts @@ -26,5 +26,7 @@ export async function hydrogenRoutes( children: childVirtualRoutes, }; - return [virtualLayout, ...currentRoutes]; + // The virtual root should land after any existing routes because of the root path + // handling. + return [...currentRoutes, virtualLayout]; } From 49fd22e8dfa3281d1f0dfd8d64a87871ad7907ff Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Fri, 7 Feb 2025 17:46:55 +0000 Subject: [PATCH 09/16] CLI test fixes. --- package-lock.json | 203 +++++++++--------- package.json | 3 +- packages/cli/package.json | 3 +- .../cli/src/commands/hydrogen/build.test.ts | 23 +- packages/cli/src/commands/hydrogen/build.ts | 15 ++ packages/cli/src/lib/onboarding/common.ts | 11 +- packages/cli/src/lib/onboarding/local.test.ts | 34 +-- packages/cli/src/lib/remix-config.ts | 33 ++- packages/cli/src/lib/route-validator.ts | 5 +- packages/cli/src/lib/setups/css/replacers.ts | 5 +- packages/cli/src/lib/vite-config.ts | 2 + 11 files changed, 206 insertions(+), 131 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9bb61f044e..cb4d478a30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "templates/skeleton" ], "dependencies": { + "@remix-run/fs-routes": "^2.15.3", "@shopify/cli-hydrogen": "*" }, "devDependencies": { @@ -898,46 +899,6 @@ } } }, - "examples/express/node_modules/@remix-run/fs-routes": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/fs-routes/-/fs-routes-2.15.3.tgz", - "integrity": "sha512-uv4eBA+90A3PGroMAS/+aC5B9wyoNYxQFKALy3KhKl1tX68TY42IrRUeIJdkDd8y/F7RE9OlQzcn3nHl+dRyng==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/dev": "^2.15.3", - "@remix-run/route-config": "^2.15.3", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "examples/express/node_modules/@remix-run/route-config": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/route-config/-/route-config-2.15.3.tgz", - "integrity": "sha512-r6YVRaADMjM5M/d7BH94sgdoDtTRDY40PY4Lg0jwMHZLWuqLXLoNg1MvHfzuJpWfoSNeXCseSnYJsnRyGjM5BQ==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/dev": "^2.15.3", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "examples/express/node_modules/cookie-signature": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", @@ -3653,6 +3614,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=12" } @@ -7464,6 +7426,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -7480,6 +7443,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -7496,6 +7460,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -7512,6 +7477,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -7528,6 +7494,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -7544,6 +7511,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -7560,6 +7528,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -7576,6 +7545,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7592,6 +7562,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7608,6 +7579,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7624,6 +7596,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7640,6 +7613,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7656,6 +7630,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7672,6 +7647,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7688,6 +7664,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7704,6 +7681,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -7720,6 +7698,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -7736,6 +7715,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -7752,6 +7732,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=12" } @@ -7768,6 +7749,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -7784,6 +7766,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -7800,6 +7783,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -7989,6 +7973,25 @@ } } }, + "node_modules/@remix-run/fs-routes": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/fs-routes/-/fs-routes-2.15.3.tgz", + "integrity": "sha512-uv4eBA+90A3PGroMAS/+aC5B9wyoNYxQFKALy3KhKl1tX68TY42IrRUeIJdkDd8y/F7RE9OlQzcn3nHl+dRyng==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/dev": "^2.15.3", + "@remix-run/route-config": "^2.15.3", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@remix-run/node": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.15.3.tgz", @@ -8050,6 +8053,27 @@ } } }, + "node_modules/@remix-run/route-config": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/route-config/-/route-config-2.15.3.tgz", + "integrity": "sha512-r6YVRaADMjM5M/d7BH94sgdoDtTRDY40PY4Lg0jwMHZLWuqLXLoNg1MvHfzuJpWfoSNeXCseSnYJsnRyGjM5BQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/dev": "^2.15.3", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@remix-run/router": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.22.0.tgz", @@ -30738,6 +30762,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -30753,6 +30778,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -30768,6 +30794,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -30783,6 +30810,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -30798,6 +30826,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -30813,6 +30842,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -30828,6 +30858,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -30843,6 +30874,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30858,6 +30890,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30873,6 +30906,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30888,6 +30922,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30903,6 +30938,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30918,6 +30954,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30933,6 +30970,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30948,6 +30986,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30963,6 +31002,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -30978,6 +31018,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -30993,6 +31034,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -31008,6 +31050,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=12" } @@ -31023,6 +31066,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -31038,6 +31082,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -31053,6 +31098,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -31842,7 +31888,8 @@ "tar-fs": "^2.1.1", "tempy": "3.0.0", "ts-morph": "20.0.0", - "use-resize-observer": "^9.1.0" + "use-resize-observer": "^9.1.0", + "why-is-node-running": "3.2.2" }, "bin": { "cli-hydrogen": "dist/create-app.js" @@ -32153,6 +32200,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/cli/node_modules/why-is-node-running": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-3.2.2.tgz", + "integrity": "sha512-NKUzAelcoCXhXL4dJzKIwXeR8iEVqsA0Lq6Vnd0UXvgaKbzVo4ZTHROF2Jidrv+SgxOQ03fMinnNhzZATxOD3A==", + "license": "MIT", + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=20.11" + } + }, "packages/create-hydrogen": { "name": "@shopify/create-hydrogen", "version": "5.0.15", @@ -34346,28 +34405,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "packages/hydrogen/node_modules/@remix-run/route-config": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/route-config/-/route-config-2.15.3.tgz", - "integrity": "sha512-r6YVRaADMjM5M/d7BH94sgdoDtTRDY40PY4Lg0jwMHZLWuqLXLoNg1MvHfzuJpWfoSNeXCseSnYJsnRyGjM5BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/dev": "^2.15.3", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "packages/hydrogen/node_modules/type-fest": { "version": "4.26.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", @@ -34566,46 +34603,6 @@ } } }, - "templates/skeleton/node_modules/@remix-run/fs-routes": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/fs-routes/-/fs-routes-2.15.3.tgz", - "integrity": "sha512-uv4eBA+90A3PGroMAS/+aC5B9wyoNYxQFKALy3KhKl1tX68TY42IrRUeIJdkDd8y/F7RE9OlQzcn3nHl+dRyng==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/dev": "^2.15.3", - "@remix-run/route-config": "^2.15.3", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "templates/skeleton/node_modules/@remix-run/route-config": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/route-config/-/route-config-2.15.3.tgz", - "integrity": "sha512-r6YVRaADMjM5M/d7BH94sgdoDtTRDY40PY4Lg0jwMHZLWuqLXLoNg1MvHfzuJpWfoSNeXCseSnYJsnRyGjM5BQ==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/dev": "^2.15.3", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "templates/skeleton/node_modules/@remix-run/routes-option-adapter": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/@remix-run/routes-option-adapter/-/routes-option-adapter-2.15.3.tgz", diff --git a/package.json b/package.json index 1faf8c8c5f..0934d13a76 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,8 @@ ], "prettier": "@shopify/prettier-config", "dependencies": { - "@shopify/cli-hydrogen": "*" + "@shopify/cli-hydrogen": "*", + "@remix-run/fs-routes": "^2.15.3" }, "devDependencies": { "@changesets/changelog-github": "^0.4.8", diff --git a/packages/cli/package.json b/packages/cli/package.json index 33df077c18..325df08cf7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,7 +55,8 @@ "tar-fs": "^2.1.1", "tempy": "3.0.0", "ts-morph": "20.0.0", - "use-resize-observer": "^9.1.0" + "use-resize-observer": "^9.1.0", + "why-is-node-running": "3.2.2" }, "peerDependencies": { "@graphql-codegen/cli": "^5.0.2", diff --git a/packages/cli/src/commands/hydrogen/build.test.ts b/packages/cli/src/commands/hydrogen/build.test.ts index 2ae24386e5..51abebf36f 100644 --- a/packages/cli/src/commands/hydrogen/build.test.ts +++ b/packages/cli/src/commands/hydrogen/build.test.ts @@ -1,3 +1,4 @@ +import whyIsNodeRunning from 'why-is-node-running'; import '../../lib/onboarding/setup-template.mocks.js'; import { readFile, @@ -28,14 +29,24 @@ describe('build', () => { outputMock.clear(); vi.stubEnv('NODE_ENV', 'production'); - await expect( - runBuild({directory: tmpDir, bundleStats: true}), - ).resolves.not.toThrow(); + const runBuildResultPromise = runBuild({ + directory: tmpDir, + bundleStats: true, + }); + + await expect(runBuildResultPromise).resolves.not.toThrow(); + console.log('it apparently resolves not to throw'); + + const runBuildResult = await runBuildResultPromise; + console.log('After closing the runBuildResult'); const expectedBundlePath = 'dist/server/index.js'; const output = outputMock.output(); + console.log('output', output); + console.log('Mid-point'); expect(output).toMatch(expectedBundlePath); + console.log('After first output match'); expect(output).toMatch('building for productio'); expect(output).toMatch('dist/client/assets/root-'); expect(output).toMatch('building SSR bundle for productio'); @@ -57,6 +68,12 @@ describe('build', () => { await expect( readFile(joinPath(tmpDir, 'dist', 'server', BUNDLE_ANALYZER_HTML_FILE)), ).resolves.toMatch(/globalThis\.METAFILE = '.+';/g); + + await runBuildResult.close(); + + console.log('After all the checks'); }); + console.log('why is node running?'); + whyIsNodeRunning(); }); }); diff --git a/packages/cli/src/commands/hydrogen/build.ts b/packages/cli/src/commands/hydrogen/build.ts index 484c534676..c0c3a4895c 100644 --- a/packages/cli/src/commands/hydrogen/build.ts +++ b/packages/cli/src/commands/hydrogen/build.ts @@ -349,29 +349,44 @@ export async function runBuild({ warnReservedRoutes(findReservedRoutes(remixConfig)); } + console.log('END OF LINE'); + return { async close() { codegenProcess?.removeAllListeners('close'); + console.log('codegenProcess?.removeAllListeners'); codegenProcess?.kill('SIGINT'); + console.log('codegenProcess?.kill'); const promises: Array> = []; if ('close' in clientBuild) promises.push(clientBuild.close()); + console.log('clientBuild.close'); if ('close' in serverBuild) promises.push(serverBuild.close()); + console.log('serverBuild.close'); + console.log('Promises length: ', promises.length); await Promise.allSettled(promises); + console.log('Promise.allSettled(promises)'); if ( clientBuildStatus?.state === 'pending' || serverBuildStatus?.state === 'pending' ) { clientBuildStatus?.promise.catch(() => {}); + console.log('clientBuildStatus?.promise.catch(() => {})'); clientBuildStatus?.reject(); + console.log('clientBuildStatus?.reject()'); serverBuildStatus?.promise.catch(() => {}); + console.log('serverBuildStatus?.promise.catch(() => {})'); serverBuildStatus?.reject(); + console.log('serverBuildStatus?.reject()'); // Give time for Rollup to stop builds before removing files await new Promise((resolve) => setTimeout(resolve, 500)); + console.log('await new Promise((resolve) => setTimeout(resolve, 500))'); } + + console.log('Finished all the shit.'); }, }; } diff --git a/packages/cli/src/lib/onboarding/common.ts b/packages/cli/src/lib/onboarding/common.ts index bcc24e3026..5db875cce3 100644 --- a/packages/cli/src/lib/onboarding/common.ts +++ b/packages/cli/src/lib/onboarding/common.ts @@ -170,9 +170,14 @@ export function generateProjectEntries( options: Parameters[1], ) { return Promise.all( - ['root', 'entry.server', 'entry.client', '../server.ts'].map((filename) => - generateProjectFile(filename, options), - ), + [ + 'routes.ts', + 'layout.tsx', + 'root', + 'entry.server', + 'entry.client', + '../server.ts', + ].map((filename) => generateProjectFile(filename, options)), ); } diff --git a/packages/cli/src/lib/onboarding/local.test.ts b/packages/cli/src/lib/onboarding/local.test.ts index 9b13128002..93d50140f5 100644 --- a/packages/cli/src/lib/onboarding/local.test.ts +++ b/packages/cli/src/lib/onboarding/local.test.ts @@ -40,8 +40,9 @@ describe('local templates', () => { (item) => !item.startsWith('app/'), ); - expect(resultFiles).toEqual(expect.arrayContaining(nonAppFiles)); - + for (const nonAppFile of nonAppFiles) { + expect(resultFiles).toContain(nonAppFile); + } expect(resultFiles).toContain('app/root.tsx'); expect(resultFiles).toContain('app/entry.client.tsx'); expect(resultFiles).toContain('app/entry.server.tsx'); @@ -113,7 +114,9 @@ describe('local templates', () => { const resultFiles = await glob('**/*', {cwd: tmpDir}); - expect(resultFiles).toEqual(expect.arrayContaining(templateFiles)); + for (const templateFile of templateFiles) { + expect(resultFiles).toContain(templateFile); + } expect(resultFiles).toContain('app/routes/_index.tsx'); // Not modified: @@ -145,17 +148,16 @@ describe('local templates', () => { cwd: getSkeletonSourceDir(), ignore: ['**/node_modules/**', '**/dist/**'], }); + const adjustedTemplateFiles = templateFiles.map((item) => { + return item + .replace(/(? - item - .replace(/(? { readFile(`${tmpDir}/app/styles/tailwind.css`), ).resolves.toMatch(/@import 'tailwindcss';/); - // Injects styles in Root - const rootFile = await readFile(`${tmpDir}/app/root.tsx`); - await expect(rootFile).toMatch(/import tailwindCss from/); - await expect(rootFile).toMatch( + // Injects styles in Layout. + const layoutFile = await readFile(`${tmpDir}/app/layout.tsx`); + await expect(layoutFile).toMatch(/import tailwindCss from/); + await expect(layoutFile).toMatch( /<\/link>/ims, ); diff --git a/packages/cli/src/lib/remix-config.ts b/packages/cli/src/lib/remix-config.ts index 2961a2a0f5..9c0ee2dff0 100644 --- a/packages/cli/src/lib/remix-config.ts +++ b/packages/cli/src/lib/remix-config.ts @@ -79,11 +79,36 @@ export async function getRemixConfig( type RemixConfig = typeof import('@remix-run/dev/dist/config.js'); - const {readConfig} = await importLocal( + const {resolveConfig} = await importLocal( '@remix-run/dev/dist/config.js', root, ).catch(handleRemixImportFail); - const config = await readConfig(root, mode); + + type RemixViteNodeConfig = + typeof import('@remix-run/dev/dist/vite/vite-node.js'); + + const {createContext} = await importLocal( + '@remix-run/dev/dist/vite/vite-node.js', + root, + ).catch(handleRemixImportFail); + + type RemixViteESMConfig = + typeof import('@remix-run/dev/dist/vite/import-vite-esm-sync.js'); + + const {importViteEsmSync} = await importLocal( + '@remix-run/dev/dist/vite/import-vite-esm-sync.js', + root, + ).catch(handleRemixImportFail); + + const appConfig = await getRawRemixConfig(root); + const routesViteNodeContext = await createContext({root: root, mode: mode}); + const vite = importViteEsmSync(); + const config = await resolveConfig(appConfig, { + rootDirectory: root, + serverMode: mode, + vite: vite, + routesViteNodeContext: routesViteNodeContext, + }); if (isHydrogenMonorepo && hydrogenPackagesPath) { // Watch local packages when developing in Hydrogen repo @@ -103,6 +128,10 @@ export async function getRemixConfig( ); } + // Shut this down so that it doesn't cause the process to fail + // when it finishes running. + routesViteNodeContext.server.server.close(); + return config; } diff --git a/packages/cli/src/lib/route-validator.ts b/packages/cli/src/lib/route-validator.ts index 5ee1bbde58..50a6f9ee23 100644 --- a/packages/cli/src/lib/route-validator.ts +++ b/packages/cli/src/lib/route-validator.ts @@ -90,7 +90,10 @@ export function findMissingRoutes( if (!parentRoute) break; - currentRoute.path = `${parentRoute.path}/${currentRoute.path}`; + currentRoute.path = + parentRoute.path == null + ? currentRoute.path + : `${parentRoute.path}/${currentRoute.path}`; currentRoute.parentId = parentRoute.parentId; } diff --git a/packages/cli/src/lib/setups/css/replacers.ts b/packages/cli/src/lib/setups/css/replacers.ts index 2e2172c2c4..59a18bdc9d 100644 --- a/packages/cli/src/lib/setups/css/replacers.ts +++ b/packages/cli/src/lib/setups/css/replacers.ts @@ -20,7 +20,10 @@ export async function replaceRootLinks( isAbsolute?: boolean; }, ) { - const {filepath, astType} = await findFileWithExtension(appDirectory, 'root'); + const {filepath, astType} = await findFileWithExtension( + appDirectory, + 'layout', + ); if (!filepath || !astType) { throw new AbortError(`Could not find root file in ${appDirectory}`); diff --git a/packages/cli/src/lib/vite-config.ts b/packages/cli/src/lib/vite-config.ts index 69fe02d1ad..db81bdca4f 100644 --- a/packages/cli/src/lib/vite-config.ts +++ b/packages/cli/src/lib/vite-config.ts @@ -72,10 +72,12 @@ export async function getViteConfig(root: string, ssrEntryFlag?: string) { ); const ssrEntry = ssrEntryFlag ?? resolvedViteConfig.build.ssr; + console.log('ssrEntry', ssrEntry); const resolvedSsrEntry = resolvePath( resolvedViteConfig.root, typeof ssrEntry === 'string' ? ssrEntry : 'server', ); + console.log('resolvedSsrEntry', resolvedSsrEntry); return { clientOutDir, From d6d5c8a45272e027dde14f59fb621f3d0ffe4bc9 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Tue, 11 Feb 2025 11:22:08 +0000 Subject: [PATCH 10/16] Working unit tests. --- package-lock.json | 142 ++++++++++++++++++ packages/cli/package.json | 6 +- .../cli/src/commands/hydrogen/build.test.ts | 11 +- packages/cli/src/commands/hydrogen/build.ts | 21 +-- packages/cli/src/commands/hydrogen/dev.ts | 1 + .../cli/src/commands/hydrogen/setup.test.ts | 3 +- .../cli/src/commands/hydrogen/upgrade.test.ts | 6 + packages/cli/src/lib/classic-compiler/dev.ts | 16 +- packages/cli/src/lib/vite-config.ts | 2 - packages/hydrogen/src/vite/plugin.ts | 11 ++ patches/vite+5.2.12.patch | 18 +++ 11 files changed, 206 insertions(+), 31 deletions(-) create mode 100644 patches/vite+5.2.12.patch diff --git a/package-lock.json b/package-lock.json index cb4d478a30..6063437d2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11217,6 +11217,13 @@ } } }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", @@ -11659,6 +11666,16 @@ "version": "0.4.0", "license": "MIT" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/atomically": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.2.tgz", @@ -15812,6 +15829,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/find-yarn-workspace-root2": { "version": "1.2.16", "dev": true, @@ -19394,6 +19421,16 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "4.1.5", "license": "MIT", @@ -24257,6 +24294,110 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -31906,6 +32047,7 @@ "fast-glob": "^3.2.12", "flame-chart-js": "2.3.2", "get-port": "^7.0.0", + "patch-package": "^8.0.0", "type-fest": "^4.26.1", "vite": "^5.1.8", "vitest": "^1.0.4" diff --git a/packages/cli/package.json b/packages/cli/package.json index 325df08cf7..8e75cc52eb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -17,8 +17,9 @@ "dev": "tsup --watch ./src --watch ../../templates/skeleton", "typecheck": "tsc --noEmit", "generate:manifest": "node scripts/generate-manifest.mjs", - "test": "cross-env SHOPIFY_UNIT_TEST=1 vitest run --test-timeout=60000", - "test:watch": "cross-env SHOPIFY_UNIT_TEST=1 vitest --test-timeout=60000" + "test": "cross-env SHOPIFY_UNIT_TEST=1 LANG=en-US.UTF-8 vitest run --test-timeout=60000", + "test:watch": "cross-env SHOPIFY_UNIT_TEST=1 LANG=en-US.UTF-8 vitest --test-timeout=60000", + "postinstall": "patch-package" }, "devDependencies": { "@remix-run/dev": "^2.15.3", @@ -32,6 +33,7 @@ "fast-glob": "^3.2.12", "flame-chart-js": "2.3.2", "get-port": "^7.0.0", + "patch-package": "^8.0.0", "type-fest": "^4.26.1", "vite": "^5.1.8", "vitest": "^1.0.4" diff --git a/packages/cli/src/commands/hydrogen/build.test.ts b/packages/cli/src/commands/hydrogen/build.test.ts index 51abebf36f..2cff778338 100644 --- a/packages/cli/src/commands/hydrogen/build.test.ts +++ b/packages/cli/src/commands/hydrogen/build.test.ts @@ -1,4 +1,3 @@ -import whyIsNodeRunning from 'why-is-node-running'; import '../../lib/onboarding/setup-template.mocks.js'; import { readFile, @@ -35,18 +34,13 @@ describe('build', () => { }); await expect(runBuildResultPromise).resolves.not.toThrow(); - console.log('it apparently resolves not to throw'); const runBuildResult = await runBuildResultPromise; - console.log('After closing the runBuildResult'); const expectedBundlePath = 'dist/server/index.js'; const output = outputMock.output(); - console.log('output', output); - console.log('Mid-point'); expect(output).toMatch(expectedBundlePath); - console.log('After first output match'); expect(output).toMatch('building for productio'); expect(output).toMatch('dist/client/assets/root-'); expect(output).toMatch('building SSR bundle for productio'); @@ -69,11 +63,8 @@ describe('build', () => { readFile(joinPath(tmpDir, 'dist', 'server', BUNDLE_ANALYZER_HTML_FILE)), ).resolves.toMatch(/globalThis\.METAFILE = '.+';/g); + // Close build result resources. await runBuildResult.close(); - - console.log('After all the checks'); }); - console.log('why is node running?'); - whyIsNodeRunning(); }); }); diff --git a/packages/cli/src/commands/hydrogen/build.ts b/packages/cli/src/commands/hydrogen/build.ts index c0c3a4895c..942b3b4fe9 100644 --- a/packages/cli/src/commands/hydrogen/build.ts +++ b/packages/cli/src/commands/hydrogen/build.ts @@ -192,6 +192,9 @@ export async function runBuild({ (process.env.NODE_ENV !== 'production' && sourcemap), watch: watch ? {} : null, }, + server: { + watch: watch ? {} : null, + }, plugins: [ { name: 'hydrogen:cli:client', @@ -229,6 +232,9 @@ export async function runBuild({ // Ensure the server rebuild start after the client one watch: watch ? {buildDelay: 100} : null, }, + server: { + watch: watch ? {} : null, + }, plugins: [ { name: 'hydrogen:cli:server', @@ -349,44 +355,29 @@ export async function runBuild({ warnReservedRoutes(findReservedRoutes(remixConfig)); } - console.log('END OF LINE'); - return { async close() { codegenProcess?.removeAllListeners('close'); - console.log('codegenProcess?.removeAllListeners'); codegenProcess?.kill('SIGINT'); - console.log('codegenProcess?.kill'); const promises: Array> = []; if ('close' in clientBuild) promises.push(clientBuild.close()); - console.log('clientBuild.close'); if ('close' in serverBuild) promises.push(serverBuild.close()); - console.log('serverBuild.close'); - console.log('Promises length: ', promises.length); await Promise.allSettled(promises); - console.log('Promise.allSettled(promises)'); if ( clientBuildStatus?.state === 'pending' || serverBuildStatus?.state === 'pending' ) { clientBuildStatus?.promise.catch(() => {}); - console.log('clientBuildStatus?.promise.catch(() => {})'); clientBuildStatus?.reject(); - console.log('clientBuildStatus?.reject()'); serverBuildStatus?.promise.catch(() => {}); - console.log('serverBuildStatus?.promise.catch(() => {})'); serverBuildStatus?.reject(); - console.log('serverBuildStatus?.reject()'); // Give time for Rollup to stop builds before removing files await new Promise((resolve) => setTimeout(resolve, 500)); - console.log('await new Promise((resolve) => setTimeout(resolve, 500))'); } - - console.log('Finished all the shit.'); }, }; } diff --git a/packages/cli/src/commands/hydrogen/dev.ts b/packages/cli/src/commands/hydrogen/dev.ts index 2f2268b373..3600558897 100644 --- a/packages/cli/src/commands/hydrogen/dev.ts +++ b/packages/cli/src/commands/hydrogen/dev.ts @@ -385,6 +385,7 @@ export async function runDev({ codegenProcess?.removeAllListeners('close'); codegenProcess?.kill('SIGINT'); await Promise.allSettled([viteServer.close(), tunnel?.cleanup?.()]); + viteServer.watcher.close(); }, }; } diff --git a/packages/cli/src/commands/hydrogen/setup.test.ts b/packages/cli/src/commands/hydrogen/setup.test.ts index 2a9b7f32f6..88e167a67d 100644 --- a/packages/cli/src/commands/hydrogen/setup.test.ts +++ b/packages/cli/src/commands/hydrogen/setup.test.ts @@ -44,7 +44,8 @@ describe('setup', () => { force: true, recursive: true, filter: (src) => - !src.includes('node_modules') && !src.includes('routes'), + (!src.includes('node_modules') && !src.includes('routes')) || + src.endsWith('routes.ts'), }); await expect( diff --git a/packages/cli/src/commands/hydrogen/upgrade.test.ts b/packages/cli/src/commands/hydrogen/upgrade.test.ts index bf8c85697e..265f04769e 100644 --- a/packages/cli/src/commands/hydrogen/upgrade.test.ts +++ b/packages/cli/src/commands/hydrogen/upgrade.test.ts @@ -709,6 +709,9 @@ describe('upgrade', async () => { 'typescript@5.2.2', '@remix-run/react@2.1.0', '@remix-run/server-runtime@2.1.0', + '@remix-run/fs-routes@2.1.0', + '@remix-run/route-config@2.1.0', + '@remix-run/routes-option-adapter@2.1.0', '@remix-run/dev@2.1.0', '@remix-run/eslint-config@2.1.0', '@remix-run/css-bundle@2.1.0', @@ -744,6 +747,9 @@ describe('upgrade', async () => { 'typescript@5.2.2', '@remix-run/react@2.1.0', '@remix-run/server-runtime@2.1.0', + '@remix-run/fs-routes@2.1.0', + '@remix-run/route-config@2.1.0', + '@remix-run/routes-option-adapter@2.1.0', '@remix-run/dev@2.1.0', '@remix-run/eslint-config@2.1.0', '@remix-run/css-bundle@2.1.0', diff --git a/packages/cli/src/lib/classic-compiler/dev.ts b/packages/cli/src/lib/classic-compiler/dev.ts index 7c41715203..dc083e000d 100644 --- a/packages/cli/src/lib/classic-compiler/dev.ts +++ b/packages/cli/src/lib/classic-compiler/dev.ts @@ -42,6 +42,7 @@ import { } from '../dev-shared.js'; import {getCliCommand} from '../shell.js'; import {importLocal} from '../import-utils.js'; +import {RouteManifest} from '@remix-run/dev/dist/config/routes.js'; const LOG_REBUILDING = '🧱 Rebuilding...'; const LOG_REBUILT = '🚀 Rebuilt'; @@ -66,6 +67,19 @@ type DevOptions = { envFile: string; }; +function filterOutVirtualRoutes(config: RemixConfig): RemixConfig { + let routes: RouteManifest = {}; + Object.entries(config.routes).forEach(([key, value]) => { + if (!key.includes('virtual-routes')) { + routes[key] = value; + } + }); + return { + ...config, + routes: routes, + }; +} + export async function runClassicCompilerDev({ port: appPort, path: appPath, @@ -100,7 +114,7 @@ export async function runClassicCompilerDev({ const config = (await getRemixConfig(root)) as RemixConfig; return disableVirtualRoutes - ? config + ? filterOutVirtualRoutes(config) : addVirtualRoutes(config).catch((error) => { // Seen this fail when somehow NPM doesn't publish // the full 'virtual-routes' directory. diff --git a/packages/cli/src/lib/vite-config.ts b/packages/cli/src/lib/vite-config.ts index db81bdca4f..69fe02d1ad 100644 --- a/packages/cli/src/lib/vite-config.ts +++ b/packages/cli/src/lib/vite-config.ts @@ -72,12 +72,10 @@ export async function getViteConfig(root: string, ssrEntryFlag?: string) { ); const ssrEntry = ssrEntryFlag ?? resolvedViteConfig.build.ssr; - console.log('ssrEntry', ssrEntry); const resolvedSsrEntry = resolvePath( resolvedViteConfig.root, typeof ssrEntry === 'string' ? ssrEntry : 'server', ); - console.log('resolvedSsrEntry', resolvedSsrEntry); return { clientOutDir, diff --git a/packages/hydrogen/src/vite/plugin.ts b/packages/hydrogen/src/vite/plugin.ts index 08a2c43e21..c8fdc2eb99 100644 --- a/packages/hydrogen/src/vite/plugin.ts +++ b/packages/hydrogen/src/vite/plugin.ts @@ -53,6 +53,12 @@ export function hydrogen(pluginOptions: HydrogenPluginOptions = {}): Plugin[] { ).pathname.endsWith('/hydrogen/packages/'); return { + build: { + outDir: 'dist', + }, + server: { + watch: null, + }, ssr: { optimizeDeps: { // Add CJS dependencies that break code in workerd @@ -195,6 +201,11 @@ hydrogen.v3preset = () => remixConfigResolved({remixConfig}) { sharedOptions.remixConfig = remixConfig; }, + remixConfig() { + return { + buildDirectory: 'dist', + }; + }, } satisfies RemixPreset); hydrogen.preset = () => diff --git a/patches/vite+5.2.12.patch b/patches/vite+5.2.12.patch new file mode 100644 index 0000000000..4902e4145b --- /dev/null +++ b/patches/vite+5.2.12.patch @@ -0,0 +1,18 @@ +diff --git a/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js b/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js +index 6d370a3..ab98ff8 100644 +--- a/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js ++++ b/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js +@@ -12972,11 +12972,11 @@ function mergeConfigRecursively(defaults, overrides, rootPath) { + const merged = { ...defaults }; + for (const key in overrides) { + const value = overrides[key]; +- if (value == null) { ++ if (value == null && key !== 'watch') { + continue; + } + const existing = merged[key]; +- if (existing == null) { ++ if (existing == null && key !== 'watch') { + merged[key] = value; + continue; + } From 8b681b3b3f94765fff13cb5eaf929fd0a250ffa6 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Tue, 11 Feb 2025 14:36:59 +0000 Subject: [PATCH 11/16] Additional patch to get the tests working correctly. --- package-lock.json | 1 + patches/@remix-run+dev+2.15.3.patch | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 patches/@remix-run+dev+2.15.3.patch diff --git a/package-lock.json b/package-lock.json index 6063437d2d..bdb8a56544 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32009,6 +32009,7 @@ "packages/cli": { "name": "@shopify/cli-hydrogen", "version": "9.0.5", + "hasInstallScript": true, "license": "MIT", "dependencies": { "@ast-grep/napi": "0.11.0", diff --git a/patches/@remix-run+dev+2.15.3.patch b/patches/@remix-run+dev+2.15.3.patch new file mode 100644 index 0000000000..c12108e873 --- /dev/null +++ b/patches/@remix-run+dev+2.15.3.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@remix-run/dev/dist/vite/plugin.js b/node_modules/@remix-run/dev/dist/vite/plugin.js +index dc3ecb2..07e74fa 100644 +--- a/node_modules/@remix-run/dev/dist/vite/plugin.js ++++ b/node_modules/@remix-run/dev/dist/vite/plugin.js +@@ -613,7 +613,7 @@ const remixVitePlugin = (remixUserConfig = {}) => { + root: viteUserConfig.root, + mode: viteConfigEnv.mode, + server: { +- watch: viteCommand === "build" ? null : undefined ++ watch: viteCommand === "build" || process.env.SHOPIFY_UNIT_TEST ? null : undefined + }, + ssr: { + external: ssrExternals From c5e540e5960d2c4b86c5770c1fafda70ead339c6 Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Tue, 11 Feb 2025 15:45:00 +0000 Subject: [PATCH 12/16] Fixing eslint errors that arose after the merge. --- packages/cli/src/lib/classic-compiler/dev.ts | 2 +- packages/cli/src/lib/remix-config.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/lib/classic-compiler/dev.ts b/packages/cli/src/lib/classic-compiler/dev.ts index dc083e000d..bc8437ba7e 100644 --- a/packages/cli/src/lib/classic-compiler/dev.ts +++ b/packages/cli/src/lib/classic-compiler/dev.ts @@ -76,7 +76,7 @@ function filterOutVirtualRoutes(config: RemixConfig): RemixConfig { }); return { ...config, - routes: routes, + routes, }; } diff --git a/packages/cli/src/lib/remix-config.ts b/packages/cli/src/lib/remix-config.ts index 9c0ee2dff0..de39e158dc 100644 --- a/packages/cli/src/lib/remix-config.ts +++ b/packages/cli/src/lib/remix-config.ts @@ -101,13 +101,13 @@ export async function getRemixConfig( ).catch(handleRemixImportFail); const appConfig = await getRawRemixConfig(root); - const routesViteNodeContext = await createContext({root: root, mode: mode}); + const routesViteNodeContext = await createContext({root, mode}); const vite = importViteEsmSync(); const config = await resolveConfig(appConfig, { rootDirectory: root, serverMode: mode, - vite: vite, - routesViteNodeContext: routesViteNodeContext, + vite, + routesViteNodeContext, }); if (isHydrogenMonorepo && hydrogenPackagesPath) { From f3663013582aa29b9f224265ba334a67c57c511d Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Tue, 11 Feb 2025 15:51:21 +0000 Subject: [PATCH 13/16] Applied prettier fixes to virtual-root.tsx. --- .../hydrogen/src/vite/virtual-routes/virtual-root.tsx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx b/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx index b8dcd66540..512e887cf5 100644 --- a/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx +++ b/packages/hydrogen/src/vite/virtual-routes/virtual-root.tsx @@ -18,9 +18,7 @@ import {useNonce} from '@shopify/hydrogen'; import styles from './assets/styles.css?url'; export const links: LinksFunction = () => { - return [ - {rel: 'icon', type: 'image/svg+xml', href: favicon}, - ]; + return [{rel: 'icon', type: 'image/svg+xml', href: favicon}]; }; export function Layout({children}: {children?: React.ReactNode}) { @@ -40,9 +38,7 @@ export function Layout({children}: {children?: React.ReactNode}) { - - {children} - + {children} From ad966621c8950fbb3df19c180cdd96137c60ce2e Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Tue, 11 Feb 2025 17:37:55 +0000 Subject: [PATCH 14/16] Added changeset for v3_routeConfig. --- .changeset/spicy-drinks-hang.md | 71 +++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .changeset/spicy-drinks-hang.md diff --git a/.changeset/spicy-drinks-hang.md b/.changeset/spicy-drinks-hang.md new file mode 100644 index 0000000000..517edc1da5 --- /dev/null +++ b/.changeset/spicy-drinks-hang.md @@ -0,0 +1,71 @@ +--- +'skeleton': patch +'@shopify/hydrogen': patch +'@shopify/cli-hydrogen': patch +--- + +Added support for the Remix future flag `v3_routeConfig`. + +Remix documentation for the `v3_routeConfig`: [https://remix.run/docs/en/main/start/future-flags#v3_routeconfig](https://remix.run/docs/en/main/start/future-flags#v3_routeconfig) +Details the base changes that need to be made to enable the flag, including the up to 3 additional dependencies that need to be added. + +Two files need to be changed once the above instructions have been applied. + +1. In the `app/routes.ts` file, a support function needs to be included to get the additional routes that were originally added in the vite plugin. With a file like the following: + + ```typescript + import {flatRoutes} from '@remix-run/fs-routes'; + import type {RouteConfig} from '@remix-run/route-config'; + import {route} from '@remix-run/route-config'; + import {remixRoutesOptionAdapter} from '@remix-run/routes-option-adapter'; + + export default [ + ...(await flatRoutes({rootDirectory: 'fs-routes'})), + + ...(await remixRoutesOptionAdapter(/* ... */)), + + route('/hello', 'routes/hello.tsx'), + ] satisfies RouteConfig; + ``` + + Include the `hydrogenRoutes` function like so: + + ```typescript + import {flatRoutes} from '@remix-run/fs-routes'; + import type {RouteConfig} from '@remix-run/route-config'; + import {route} from '@remix-run/route-config'; + import {remixRoutesOptionAdapter} from '@remix-run/routes-option-adapter'; + import {hydrogenRoutes} from '@shopify/hydrogen'; + + export default hydrogenRoutes([ + ...(await flatRoutes({rootDirectory: 'fs-routes'})), + + ...(await remixRoutesOptionAdapter(/* ... */)), + + route('/hello', 'routes/hello.tsx'), + ]) satisfies RouteConfig; + ``` + + The function should wrap around all of the routes so that the priority of the routes is applied correctly. + +2. In the Vite config (`vite.config.ts` usually) the `remix` plugin needs to have it's configuration slightly altered. + + From this: + + ```typescript + ... + remix({ + presets: [hydrogen.preset()], + ... + ``` + + To this: + + ```typescript + ... + remix({ + presets: [hydrogen.v3preset()], + ... + ``` + + This is due to the `routes` configuration option not being allowed with the `v3_routeConfig` future flag enabled. From 043b1b36602b6f37e1b45b9e644d76435bae76cf Mon Sep 17 00:00:00 2001 From: Sean Parsons Date: Tue, 11 Feb 2025 17:39:59 +0000 Subject: [PATCH 15/16] Removed change to docs page because it's unnecessary. --- docs/shopify-dev/analytics-setup/ts/app/root.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/shopify-dev/analytics-setup/ts/app/root.tsx b/docs/shopify-dev/analytics-setup/ts/app/root.tsx index 5a2ee62cea..868cde5c65 100644 --- a/docs/shopify-dev/analytics-setup/ts/app/root.tsx +++ b/docs/shopify-dev/analytics-setup/ts/app/root.tsx @@ -1,5 +1,5 @@ import { - useNonce, + useNonce // [START import] getShopAnalytics, Analytics, From 4bb88b7e2e755890de8c702c68f6a3fbf99ddfef Mon Sep 17 00:00:00 2001 From: Helen Lin Date: Wed, 26 Feb 2025 13:16:14 -0800 Subject: [PATCH 16/16] Update so that there is only 1 patch on remix-run/dev --- package-lock.json | 15 +-------------- packages/cli/package.json | 3 +-- patches/@remix-run+dev+2.15.3.patch | 27 ++++++++++++++------------- patches/vite+5.2.12.patch | 18 ------------------ 4 files changed, 16 insertions(+), 47 deletions(-) delete mode 100644 patches/vite+5.2.12.patch diff --git a/package-lock.json b/package-lock.json index 2e3d5a648c..2134917f59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31689,8 +31689,7 @@ "tar-fs": "^2.1.1", "tempy": "3.0.0", "ts-morph": "20.0.0", - "use-resize-observer": "^9.1.0", - "why-is-node-running": "3.2.2" + "use-resize-observer": "^9.1.0" }, "bin": { "cli-hydrogen": "dist/create-app.js" @@ -32002,18 +32001,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/cli/node_modules/why-is-node-running": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-3.2.2.tgz", - "integrity": "sha512-NKUzAelcoCXhXL4dJzKIwXeR8iEVqsA0Lq6Vnd0UXvgaKbzVo4ZTHROF2Jidrv+SgxOQ03fMinnNhzZATxOD3A==", - "license": "MIT", - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=20.11" - } - }, "packages/create-hydrogen": { "name": "@shopify/create-hydrogen", "version": "5.0.17", diff --git a/packages/cli/package.json b/packages/cli/package.json index c54323c347..e0745036fe 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -58,8 +58,7 @@ "tar-fs": "^2.1.1", "tempy": "3.0.0", "ts-morph": "20.0.0", - "use-resize-observer": "^9.1.0", - "why-is-node-running": "3.2.2" + "use-resize-observer": "^9.1.0" }, "peerDependencies": { "@graphql-codegen/cli": "^5.0.2", diff --git a/patches/@remix-run+dev+2.15.3.patch b/patches/@remix-run+dev+2.15.3.patch index c12108e873..eb4787fe7e 100644 --- a/patches/@remix-run+dev+2.15.3.patch +++ b/patches/@remix-run+dev+2.15.3.patch @@ -1,13 +1,14 @@ -diff --git a/node_modules/@remix-run/dev/dist/vite/plugin.js b/node_modules/@remix-run/dev/dist/vite/plugin.js -index dc3ecb2..07e74fa 100644 ---- a/node_modules/@remix-run/dev/dist/vite/plugin.js -+++ b/node_modules/@remix-run/dev/dist/vite/plugin.js -@@ -613,7 +613,7 @@ const remixVitePlugin = (remixUserConfig = {}) => { - root: viteUserConfig.root, - mode: viteConfigEnv.mode, - server: { -- watch: viteCommand === "build" ? null : undefined -+ watch: viteCommand === "build" || process.env.SHOPIFY_UNIT_TEST ? null : undefined - }, - ssr: { - external: ssrExternals +diff --git a/node_modules/@remix-run/dev/dist/vite/vite-node.js b/node_modules/@remix-run/dev/dist/vite/vite-node.js +index 7c69d5f..3885b87 100644 +--- a/node_modules/@remix-run/dev/dist/vite/vite-node.js ++++ b/node_modules/@remix-run/dev/dist/vite/vite-node.js +@@ -23,7 +23,8 @@ async function createContext(viteConfig = {}) { + let devServer = await vite.createServer(vite.mergeConfig({ + server: { + preTransformRequests: false, +- hmr: false ++ hmr: false, ++ ...viteConfig.server + }, + optimizeDeps: { + noDiscovery: true diff --git a/patches/vite+5.2.12.patch b/patches/vite+5.2.12.patch deleted file mode 100644 index 4902e4145b..0000000000 --- a/patches/vite+5.2.12.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js b/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js -index 6d370a3..ab98ff8 100644 ---- a/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js -+++ b/node_modules/vite/dist/node/chunks/dep-BKbDVx1T.js -@@ -12972,11 +12972,11 @@ function mergeConfigRecursively(defaults, overrides, rootPath) { - const merged = { ...defaults }; - for (const key in overrides) { - const value = overrides[key]; -- if (value == null) { -+ if (value == null && key !== 'watch') { - continue; - } - const existing = merged[key]; -- if (existing == null) { -+ if (existing == null && key !== 'watch') { - merged[key] = value; - continue; - }