From d444a5579deb5375df82b47818e48b701a9295e3 Mon Sep 17 00:00:00 2001 From: Dan Drory Date: Fri, 10 Jan 2025 16:23:49 +1100 Subject: [PATCH] vite work --- fixtures/multiple-routes/sku.config.js | 2 +- fixtures/multiple-routes/src/client.js | 2 +- .../multiple-routes/src/handlers/Details.js | 8 +- fixtures/vite-braid-design-system/.gitignore | 9 + .../vite-braid-design-system/.prettierignore | 10 + fixtures/vite-braid-design-system/index.html | 15 + .../vite-braid-design-system/jestSetup.js | 8 + .../vite-braid-design-system/package.json | 17 + .../vite-braid-design-system/sku.config.mjs | 26 + .../vite-braid-design-system/src/App.css.ts | 13 + fixtures/vite-braid-design-system/src/App.jsx | 48 + .../vite-braid-design-system/src/App.test.tsx | 22 + .../vite-braid-design-system/src/client.jsx | 8 + .../vite-braid-design-system/src/render.jsx | 50 + .../vite-braid-design-system/src/vars.css.ts | 3 + fixtures/vite-multiple-routes/.gitignore | 9 + fixtures/vite-multiple-routes/.prettierignore | 10 + fixtures/vite-multiple-routes/index.html | 15 + fixtures/vite-multiple-routes/package.json | 19 + fixtures/vite-multiple-routes/sku.config.js | 32 + fixtures/vite-multiple-routes/src/App.jsx | 25 + fixtures/vite-multiple-routes/src/client.jsx | 22 + .../src/handlers/AsyncComponent.jsx | 13 + .../src/handlers/Details.css.js | 5 + .../src/handlers/Details.jsx | 29 + .../src/handlers/Home.css.js | 5 + .../src/handlers/Home.jsx | 6 + fixtures/vite-multiple-routes/src/render.jsx | 65 + fixtures/vite-source-maps/.gitignore | 9 + fixtures/vite-source-maps/.prettierignore | 10 + fixtures/vite-source-maps/index.html | 15 + fixtures/vite-source-maps/package.json | 24 + fixtures/vite-source-maps/sku.config.ts | 15 + fixtures/vite-source-maps/src/App.jsx | 23 + fixtures/vite-source-maps/src/ModuleFile.jsx | 7 + .../src/ModuleFile.module.css | 3 + fixtures/vite-source-maps/src/client.jsx | 11 + fixtures/vite-source-maps/src/index.css | 3 + fixtures/vite-source-maps/src/render.jsx | 38 + fixtures/vite-source-maps/src/server.jsx | 18 + packages/sku/package.json | 17 +- packages/sku/scripts/postinstall.js | 21 +- packages/sku/sku-types.d.ts | 16 + packages/sku/src/context/createSkuContext.ts | 1 + packages/sku/src/context/defaultSkuConfig.ts | 1 + .../commands/build-ssr/build-ssr.command.ts | 9 +- .../build-ssr/vite-build-ssr-handler.ts | 72 + .../program/commands/build/build.action.ts | 79 +- .../commands/build/vite-build-handler.ts | 86 + .../commands/build/webpack-build-handler.ts | 83 + .../commands/start-ssr/start-ssr.command.ts | 7 +- .../start-ssr/vite-start-ssr-handler.ts | 6 + .../program/commands/start/start.command.ts | 8 +- .../commands/start/vite-start-handler.ts | 6 + .../sku/src/services/vite/createConfig.ts | 95 + packages/sku/src/services/vite/createIndex.ts | 44 + .../services/vite/createPreRenderedHtml.ts | 131 + .../src/services/vite/createSkuProvider.tsx | 10 + .../sku/src/services/vite/createViteServer.ts | 68 + .../services/vite/entries/html-template.html | 14 + .../services/vite/entries/prerender-entry.js | 3 + .../src/services/vite/entries/vite-client.tsx | 34 + .../src/services/vite/entries/vite-server.ts | 0 packages/sku/src/services/vite/index.ts | 66 + .../sku/src/services/vite/parseManifest.ts | 1 + packages/sku/src/services/vite/prerender.ts | 61 + packages/sku/src/services/vite/serve.ts | 186 ++ .../config/plugins/createHtmlRenderPlugin.ts | 2 +- packages/sku/src/utils/configureApp.ts | 11 +- packages/sku/src/vite-preload/__internal.ts | 1 + packages/sku/src/vite-preload/index.ts | 3 + pnpm-lock.yaml | 2309 ++++++++++++++--- 72 files changed, 3597 insertions(+), 526 deletions(-) create mode 100644 fixtures/vite-braid-design-system/.gitignore create mode 100644 fixtures/vite-braid-design-system/.prettierignore create mode 100644 fixtures/vite-braid-design-system/index.html create mode 100644 fixtures/vite-braid-design-system/jestSetup.js create mode 100644 fixtures/vite-braid-design-system/package.json create mode 100644 fixtures/vite-braid-design-system/sku.config.mjs create mode 100644 fixtures/vite-braid-design-system/src/App.css.ts create mode 100644 fixtures/vite-braid-design-system/src/App.jsx create mode 100644 fixtures/vite-braid-design-system/src/App.test.tsx create mode 100644 fixtures/vite-braid-design-system/src/client.jsx create mode 100644 fixtures/vite-braid-design-system/src/render.jsx create mode 100644 fixtures/vite-braid-design-system/src/vars.css.ts create mode 100644 fixtures/vite-multiple-routes/.gitignore create mode 100644 fixtures/vite-multiple-routes/.prettierignore create mode 100644 fixtures/vite-multiple-routes/index.html create mode 100644 fixtures/vite-multiple-routes/package.json create mode 100644 fixtures/vite-multiple-routes/sku.config.js create mode 100644 fixtures/vite-multiple-routes/src/App.jsx create mode 100644 fixtures/vite-multiple-routes/src/client.jsx create mode 100644 fixtures/vite-multiple-routes/src/handlers/AsyncComponent.jsx create mode 100644 fixtures/vite-multiple-routes/src/handlers/Details.css.js create mode 100644 fixtures/vite-multiple-routes/src/handlers/Details.jsx create mode 100644 fixtures/vite-multiple-routes/src/handlers/Home.css.js create mode 100644 fixtures/vite-multiple-routes/src/handlers/Home.jsx create mode 100644 fixtures/vite-multiple-routes/src/render.jsx create mode 100644 fixtures/vite-source-maps/.gitignore create mode 100644 fixtures/vite-source-maps/.prettierignore create mode 100644 fixtures/vite-source-maps/index.html create mode 100644 fixtures/vite-source-maps/package.json create mode 100644 fixtures/vite-source-maps/sku.config.ts create mode 100644 fixtures/vite-source-maps/src/App.jsx create mode 100644 fixtures/vite-source-maps/src/ModuleFile.jsx create mode 100644 fixtures/vite-source-maps/src/ModuleFile.module.css create mode 100644 fixtures/vite-source-maps/src/client.jsx create mode 100644 fixtures/vite-source-maps/src/index.css create mode 100644 fixtures/vite-source-maps/src/render.jsx create mode 100644 fixtures/vite-source-maps/src/server.jsx create mode 100644 packages/sku/src/program/commands/build-ssr/vite-build-ssr-handler.ts create mode 100644 packages/sku/src/program/commands/build/vite-build-handler.ts create mode 100644 packages/sku/src/program/commands/build/webpack-build-handler.ts create mode 100644 packages/sku/src/program/commands/start-ssr/vite-start-ssr-handler.ts create mode 100644 packages/sku/src/program/commands/start/vite-start-handler.ts create mode 100644 packages/sku/src/services/vite/createConfig.ts create mode 100644 packages/sku/src/services/vite/createIndex.ts create mode 100644 packages/sku/src/services/vite/createPreRenderedHtml.ts create mode 100644 packages/sku/src/services/vite/createSkuProvider.tsx create mode 100644 packages/sku/src/services/vite/createViteServer.ts create mode 100644 packages/sku/src/services/vite/entries/html-template.html create mode 100644 packages/sku/src/services/vite/entries/prerender-entry.js create mode 100644 packages/sku/src/services/vite/entries/vite-client.tsx create mode 100644 packages/sku/src/services/vite/entries/vite-server.ts create mode 100644 packages/sku/src/services/vite/index.ts create mode 100644 packages/sku/src/services/vite/parseManifest.ts create mode 100644 packages/sku/src/services/vite/prerender.ts create mode 100644 packages/sku/src/services/vite/serve.ts create mode 100644 packages/sku/src/vite-preload/__internal.ts create mode 100644 packages/sku/src/vite-preload/index.ts diff --git a/fixtures/multiple-routes/sku.config.js b/fixtures/multiple-routes/sku.config.js index 7ea2a01ab..6bd5054b5 100644 --- a/fixtures/multiple-routes/sku.config.js +++ b/fixtures/multiple-routes/sku.config.js @@ -21,7 +21,7 @@ export default { ], environments: ['production'], port: 8202, - publicPath: '/static/place', + publicPath: '/', cspEnabled: true, cspExtraScriptSrcHosts: [ 'https://error-tracking.com', diff --git a/fixtures/multiple-routes/src/client.js b/fixtures/multiple-routes/src/client.js index 9b1869218..515abb95d 100644 --- a/fixtures/multiple-routes/src/client.js +++ b/fixtures/multiple-routes/src/client.js @@ -5,7 +5,7 @@ import App from './App'; export default ({ site }) => { hydrateRoot( - document.getElementById('app'), + document.getElementById('root'), , diff --git a/fixtures/multiple-routes/src/handlers/Details.js b/fixtures/multiple-routes/src/handlers/Details.js index b4cceba12..8221674f2 100644 --- a/fixtures/multiple-routes/src/handlers/Details.js +++ b/fixtures/multiple-routes/src/handlers/Details.js @@ -1,8 +1,8 @@ -import * as styles from './Details.css.js'; - import { useState, useEffect } from 'react'; -import loadable from 'sku/@loadable/component'; import { useParams } from 'react-router-dom'; +import loadable from 'sku/@loadable/component'; + +import * as styles from './Details.css.js'; const AsyncComponent = loadable(() => import('./AsyncComponent')); @@ -15,7 +15,7 @@ export default function Details({ site }) { if (id) { setDetailsId(id); } - }, []); + }, [id]); return (

diff --git a/fixtures/vite-braid-design-system/.gitignore b/fixtures/vite-braid-design-system/.gitignore new file mode 100644 index 000000000..2236eee61 --- /dev/null +++ b/fixtures/vite-braid-design-system/.gitignore @@ -0,0 +1,9 @@ +# managed by sku +.eslintcache +.prettierrc +coverage/ +dist/ +eslint.config.mjs +report/ +tsconfig.json +# end managed by sku diff --git a/fixtures/vite-braid-design-system/.prettierignore b/fixtures/vite-braid-design-system/.prettierignore new file mode 100644 index 000000000..8ec140d19 --- /dev/null +++ b/fixtures/vite-braid-design-system/.prettierignore @@ -0,0 +1,10 @@ +# managed by sku +.eslintcache +.prettierrc +coverage/ +dist/ +eslint.config.mjs +pnpm-lock.yaml +report/ +tsconfig.json +# end managed by sku diff --git a/fixtures/vite-braid-design-system/index.html b/fixtures/vite-braid-design-system/index.html new file mode 100644 index 000000000..ac3bbe253 --- /dev/null +++ b/fixtures/vite-braid-design-system/index.html @@ -0,0 +1,15 @@ + + + + + + Sku Project + + + + +
+ + + + \ No newline at end of file diff --git a/fixtures/vite-braid-design-system/jestSetup.js b/fixtures/vite-braid-design-system/jestSetup.js new file mode 100644 index 000000000..33fec450a --- /dev/null +++ b/fixtures/vite-braid-design-system/jestSetup.js @@ -0,0 +1,8 @@ +import { TextEncoder, TextDecoder } from 'util'; + +// The `jsdom` jest environment doesn't expose `TextEncoder` or `TextDecoder` +// https://github.com/jsdom/jsdom/issues/2524 +// Required because we call `renderToString` from `react-dom/server` +// Not sure why this is required as of react 18 +global.TextEncoder = TextEncoder; +global.TextDecoder = TextDecoder; diff --git a/fixtures/vite-braid-design-system/package.json b/fixtures/vite-braid-design-system/package.json new file mode 100644 index 000000000..1a8c22b7e --- /dev/null +++ b/fixtures/vite-braid-design-system/package.json @@ -0,0 +1,17 @@ +{ + "name": "@sku-fixtures/braid-design-system", + "private": true, + "type": "module", + "dependencies": { + "braid-design-system": "^33.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@sku-private/test-utils": "workspace:*", + "@types/react": "^18.2.3", + "@types/react-dom": "^18.2.3", + "@vanilla-extract/css": "^1.0.0", + "sku": "workspace:*" + } +} diff --git a/fixtures/vite-braid-design-system/sku.config.mjs b/fixtures/vite-braid-design-system/sku.config.mjs new file mode 100644 index 000000000..254636a4f --- /dev/null +++ b/fixtures/vite-braid-design-system/sku.config.mjs @@ -0,0 +1,26 @@ +import { + ListExternalsWebpackPlugin, + makeStableHashes, +} from '@sku-private/test-utils'; + +export default { + clientEntry: './src/client.jsx', + renderEntry: './src/render.jsx', + bundler: 'vite', + sites: [ + { name: 'seekAnz', host: 'dev.seek.com.au' }, + { name: 'jobStreet', host: 'dev.jobstreet.com' }, + ], + publicPath: '/', + port: 8200, + dangerouslySetWebpackConfig: (config) => { + if (config.name === 'render') { + config.plugins.push(new ListExternalsWebpackPlugin()); + } + + makeStableHashes(config); + + return config; + }, + setupTests: './jestSetup.js', +}; diff --git a/fixtures/vite-braid-design-system/src/App.css.ts b/fixtures/vite-braid-design-system/src/App.css.ts new file mode 100644 index 000000000..fada23509 --- /dev/null +++ b/fixtures/vite-braid-design-system/src/App.css.ts @@ -0,0 +1,13 @@ +import { style } from '@vanilla-extract/css'; + +import { backgroundColor } from './vars.css.ts'; + +export const vanillaBox = style({ + vars: { + [backgroundColor]: 'blueviolet', + }, + backgroundColor, + color: 'white', + fontSize: 20, + padding: 100, +}); diff --git a/fixtures/vite-braid-design-system/src/App.jsx b/fixtures/vite-braid-design-system/src/App.jsx new file mode 100644 index 000000000..d02163961 --- /dev/null +++ b/fixtures/vite-braid-design-system/src/App.jsx @@ -0,0 +1,48 @@ +import 'braid-design-system/reset'; +import { + BraidProvider, + Text, + Checkbox, + Card, + IconChevron, + Box, +} from 'braid-design-system'; +import theme from 'braid-design-system/themes/seekJobs'; +import { useState, useEffect } from 'react'; + +import { vanillaBox } from './App.css'; + +const noop = () => {}; + +function Stuff({ themeName }) { + const [renderLabel, setRenderLabel] = useState('Initial'); + + useEffect(() => { + setRenderLabel('Client'); + }, []); + + return ( + <> + + Hello {themeName} + + + + + 🧁 Vanilla content {renderLabel} + + ); +} + +export default function App({ themeName }) { + return ( + + + + ); +} diff --git a/fixtures/vite-braid-design-system/src/App.test.tsx b/fixtures/vite-braid-design-system/src/App.test.tsx new file mode 100644 index 000000000..77830dd5e --- /dev/null +++ b/fixtures/vite-braid-design-system/src/App.test.tsx @@ -0,0 +1,22 @@ +import { Box } from 'braid-design-system'; +import { BraidTestProvider } from 'braid-design-system/test'; +import { renderToString } from 'react-dom/server'; + +import { vanillaBox } from './App.css'; + +describe('braid-design-system', () => { + test('components', () => { + expect( + renderToString( + + + , + ), + ).toMatchInlineSnapshot(` + "
" + `); + }); +}); diff --git a/fixtures/vite-braid-design-system/src/client.jsx b/fixtures/vite-braid-design-system/src/client.jsx new file mode 100644 index 000000000..2b3ea2f37 --- /dev/null +++ b/fixtures/vite-braid-design-system/src/client.jsx @@ -0,0 +1,8 @@ +import { hydrateRoot } from 'react-dom/client'; + +import App from './App'; + +const client = ({ site }) => + hydrateRoot(document.getElementById('root'), ); + +client({ site: 'seekAnz' }); diff --git a/fixtures/vite-braid-design-system/src/render.jsx b/fixtures/vite-braid-design-system/src/render.jsx new file mode 100644 index 000000000..ca902e6e4 --- /dev/null +++ b/fixtures/vite-braid-design-system/src/render.jsx @@ -0,0 +1,50 @@ +import { StrictMode } from 'react'; +import { renderToString, renderToPipeableStream } from 'react-dom/server'; +import { preloadAll, ChunkCollectorContext } from 'sku/vite-preload'; + +import App from './App'; + +export default { + render: async ({ site, options, collector }) => { + await preloadAll(); + + return renderToPipeableStream( + + + + + , + options, + ); + }, + renderApp: ({ site, SkuProvider }) => { + return renderToString( + + + , + ); + }, + + provideClientContext: ({ site }) => ({ + site, + }), + + renderDocument: ({ app, headTags, bodyTags, site }) => ` + + + + + My Awesome Project + + ${headTags} + + + +
${app}
+ ${bodyTags} + + + `, +}; diff --git a/fixtures/vite-braid-design-system/src/vars.css.ts b/fixtures/vite-braid-design-system/src/vars.css.ts new file mode 100644 index 000000000..5f0aba09c --- /dev/null +++ b/fixtures/vite-braid-design-system/src/vars.css.ts @@ -0,0 +1,3 @@ +import { createVar } from '@vanilla-extract/css'; + +export const backgroundColor = createVar(); diff --git a/fixtures/vite-multiple-routes/.gitignore b/fixtures/vite-multiple-routes/.gitignore new file mode 100644 index 000000000..2236eee61 --- /dev/null +++ b/fixtures/vite-multiple-routes/.gitignore @@ -0,0 +1,9 @@ +# managed by sku +.eslintcache +.prettierrc +coverage/ +dist/ +eslint.config.mjs +report/ +tsconfig.json +# end managed by sku diff --git a/fixtures/vite-multiple-routes/.prettierignore b/fixtures/vite-multiple-routes/.prettierignore new file mode 100644 index 000000000..8ec140d19 --- /dev/null +++ b/fixtures/vite-multiple-routes/.prettierignore @@ -0,0 +1,10 @@ +# managed by sku +.eslintcache +.prettierrc +coverage/ +dist/ +eslint.config.mjs +pnpm-lock.yaml +report/ +tsconfig.json +# end managed by sku diff --git a/fixtures/vite-multiple-routes/index.html b/fixtures/vite-multiple-routes/index.html new file mode 100644 index 000000000..e3d14c511 --- /dev/null +++ b/fixtures/vite-multiple-routes/index.html @@ -0,0 +1,15 @@ + + + + + + Sku Project + + + + +
+ + + + \ No newline at end of file diff --git a/fixtures/vite-multiple-routes/package.json b/fixtures/vite-multiple-routes/package.json new file mode 100644 index 000000000..fec7cacc7 --- /dev/null +++ b/fixtures/vite-multiple-routes/package.json @@ -0,0 +1,19 @@ +{ + "name": "@sku-fixtures/vite-multiple-routes", + "private": true, + "type": "module", + "dependencies": { + "@vanilla-extract/css": "^1.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router": "6.28.1", + "react-router-dom": "^6.28.1" + }, + "devDependencies": { + "@sku-private/test-utils": "workspace:*", + "@testing-library/react": "^14.0.0", + "dedent": "^1.5.1", + "sku": "workspace:*" + }, + "skuSkipValidatePeerDeps": true +} diff --git a/fixtures/vite-multiple-routes/sku.config.js b/fixtures/vite-multiple-routes/sku.config.js new file mode 100644 index 000000000..b3f0afbc6 --- /dev/null +++ b/fixtures/vite-multiple-routes/sku.config.js @@ -0,0 +1,32 @@ +export default { + bundler: 'vite', + renderEntry: 'src/render.jsx', + clientEntry: 'src/client.jsx', + sites: [ + { + name: 'au', + host: 'dev.seek.com.au', + routes: [ + { route: '/', name: 'home' }, + { route: '/details/$id', name: 'details' }, + ], + }, + { + name: 'nz', + host: 'dev.seek.co.nz', + routes: [ + { route: '/nz', name: 'home' }, + { route: '/nz/details/:id', name: 'details' }, + ], + }, + ], + environments: ['production'], + port: 8202, + publicPath: '/static/place', + cspEnabled: true, + cspExtraScriptSrcHosts: [ + 'https://error-tracking.com', + 'https://fb-tracking.com', + ], + skipPackageCompatibilityCompilation: ['react-router-dom'], +}; diff --git a/fixtures/vite-multiple-routes/src/App.jsx b/fixtures/vite-multiple-routes/src/App.jsx new file mode 100644 index 000000000..fcd2ee26b --- /dev/null +++ b/fixtures/vite-multiple-routes/src/App.jsx @@ -0,0 +1,25 @@ +import { Routes, Route } from 'react-router-dom'; +import { lazy } from 'sku/vite-preload'; + +const routes = { + au: { + home: '/', + details: '/details/:id', + }, + nz: { + home: '/nz', + details: '/nz/details/:id', + }, +}; + +const Home = lazy(() => import('./handlers/Home')); +const Details = lazy(() => import('./handlers/Details')); + +export default ({ site }) => { + return ( + + } /> + } /> + + ); +}; diff --git a/fixtures/vite-multiple-routes/src/client.jsx b/fixtures/vite-multiple-routes/src/client.jsx new file mode 100644 index 000000000..b03e2ca79 --- /dev/null +++ b/fixtures/vite-multiple-routes/src/client.jsx @@ -0,0 +1,22 @@ +import { hydrateRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; + +import App from './App'; + +const client = async ({ site }) => { + hydrateRoot( + document.getElementById('root'), + + + , + ); +}; + +let clientContext = {}; + +const dataElement = document.getElementById('__SKU_CLIENT_CONTEXT__'); +if (dataElement) { + clientContext = JSON.parse(dataElement.textContent || '{}'); +} + +client(clientContext); diff --git a/fixtures/vite-multiple-routes/src/handlers/AsyncComponent.jsx b/fixtures/vite-multiple-routes/src/handlers/AsyncComponent.jsx new file mode 100644 index 000000000..8f04ddb48 --- /dev/null +++ b/fixtures/vite-multiple-routes/src/handlers/AsyncComponent.jsx @@ -0,0 +1,13 @@ +import { useState } from 'react'; + +const AsyncComponent = () => { + const [num, setNumber] = useState(0); + + return ( + setNumber(num + 1)}> + Some special async content {num} + + ); +}; + +export default AsyncComponent; diff --git a/fixtures/vite-multiple-routes/src/handlers/Details.css.js b/fixtures/vite-multiple-routes/src/handlers/Details.css.js new file mode 100644 index 000000000..5511b4d86 --- /dev/null +++ b/fixtures/vite-multiple-routes/src/handlers/Details.css.js @@ -0,0 +1,5 @@ +import { style } from '@vanilla-extract/css'; + +export const root = style({ + color: 'blue', +}); diff --git a/fixtures/vite-multiple-routes/src/handlers/Details.jsx b/fixtures/vite-multiple-routes/src/handlers/Details.jsx new file mode 100644 index 000000000..e7875e233 --- /dev/null +++ b/fixtures/vite-multiple-routes/src/handlers/Details.jsx @@ -0,0 +1,29 @@ +import { useState, useEffect, Suspense } from 'react'; +import { useParams } from 'react-router-dom'; +import { lazy } from 'sku/vite-preload'; + +import * as styles from './Details.css.js'; + +const AsyncComponent = lazy(() => import('./AsyncComponent')); + +export default function Details({ site }) { + const { id } = useParams(); + const [detailsId, setDetailsId] = useState(); + const message = `Welcome to the Details page - ${site}`; + + useEffect(() => { + if (id) { + setDetailsId(id); + } + }, [id]); + + return ( +

+ {message} + {detailsId && `ID: ${detailsId}`} + Loading...}> + + +

+ ); +} diff --git a/fixtures/vite-multiple-routes/src/handlers/Home.css.js b/fixtures/vite-multiple-routes/src/handlers/Home.css.js new file mode 100644 index 000000000..f6b38cddc --- /dev/null +++ b/fixtures/vite-multiple-routes/src/handlers/Home.css.js @@ -0,0 +1,5 @@ +import { style } from '@vanilla-extract/css'; + +export const root = style({ + color: 'red', +}); diff --git a/fixtures/vite-multiple-routes/src/handlers/Home.jsx b/fixtures/vite-multiple-routes/src/handlers/Home.jsx new file mode 100644 index 000000000..4d7c21fa6 --- /dev/null +++ b/fixtures/vite-multiple-routes/src/handlers/Home.jsx @@ -0,0 +1,6 @@ +import * as styles from './Home.css.js'; + +export default ({ site }) => { + const message = `Welcome to the Home page - ${site}`; + return

{message}

; +}; diff --git a/fixtures/vite-multiple-routes/src/render.jsx b/fixtures/vite-multiple-routes/src/render.jsx new file mode 100644 index 000000000..e54a1d677 --- /dev/null +++ b/fixtures/vite-multiple-routes/src/render.jsx @@ -0,0 +1,65 @@ +import html from 'dedent'; +import { StrictMode } from 'react'; +import { renderToPipeableStream } from 'react-dom/server'; +import { StaticRouter } from 'react-router-dom/server'; +import { preloadAll, ChunkCollectorContext } from 'sku/vite-preload'; + +import App from './App'; + +export default { + render: async ({ url, site, options, collector }) => { + await preloadAll(); + + // TODO: Do a react helmet test here. + + const pipeableStream = renderToPipeableStream( + + + + + + + , + options, + ); + + const headTags = html/* html */ ` + ${site} + + + + `; + + const bodyTags = html/* html */ ` + + `; + + const htmlAttrs = { + lang: 'en', + }; + + const bodyAttrs = { + class: 'body-class', + }; + + return { + ...pipeableStream, + headTags, + bodyTags, + htmlAttrs, + bodyAttrs, + }; + }, + + provideClientContext: ({ site }) => ({ + site, + }), +}; diff --git a/fixtures/vite-source-maps/.gitignore b/fixtures/vite-source-maps/.gitignore new file mode 100644 index 000000000..2236eee61 --- /dev/null +++ b/fixtures/vite-source-maps/.gitignore @@ -0,0 +1,9 @@ +# managed by sku +.eslintcache +.prettierrc +coverage/ +dist/ +eslint.config.mjs +report/ +tsconfig.json +# end managed by sku diff --git a/fixtures/vite-source-maps/.prettierignore b/fixtures/vite-source-maps/.prettierignore new file mode 100644 index 000000000..8ec140d19 --- /dev/null +++ b/fixtures/vite-source-maps/.prettierignore @@ -0,0 +1,10 @@ +# managed by sku +.eslintcache +.prettierrc +coverage/ +dist/ +eslint.config.mjs +pnpm-lock.yaml +report/ +tsconfig.json +# end managed by sku diff --git a/fixtures/vite-source-maps/index.html b/fixtures/vite-source-maps/index.html new file mode 100644 index 000000000..f06244200 --- /dev/null +++ b/fixtures/vite-source-maps/index.html @@ -0,0 +1,15 @@ + + + + + + Vite + React + TS + + + + +
+ + + + \ No newline at end of file diff --git a/fixtures/vite-source-maps/package.json b/fixtures/vite-source-maps/package.json new file mode 100644 index 000000000..d971ede2c --- /dev/null +++ b/fixtures/vite-source-maps/package.json @@ -0,0 +1,24 @@ +{ + "name": "@sku-fixtures/vite-source-maps", + "private": true, + "type": "module", + "scripts": { + "dev": "node server", + "build": "npm run build:client && npm run build:server", + "build:client": "vite build --outDir dist/client", + "build:server": "vite build --ssr src/server.jsx --outDir dist/server", + "preview": "cross-env NODE_ENV=production node server" + }, + "dependencies": { + "@vitejs/plugin-legacy": "^5.4.2", + "@vitejs/plugin-react": "^4.3.4", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@sku-private/test-utils": "workspace:*", + "dedent": "^1.5.1", + "sku": "workspace:*" + }, + "skuSkipValidatePeerDeps": true +} diff --git a/fixtures/vite-source-maps/sku.config.ts b/fixtures/vite-source-maps/sku.config.ts new file mode 100644 index 000000000..35fee9f7a --- /dev/null +++ b/fixtures/vite-source-maps/sku.config.ts @@ -0,0 +1,15 @@ +// @ts-ignore +import { makeStableHashes } from '@sku-private/test-utils'; +import type { SkuConfig } from 'sku'; + +export default { + bundler: 'vite', + clientEntry: 'src/client.jsx', + renderEntry: 'src/render.jsx', + serverEntry: 'src/server.jsx', + publicPath: '/static/source-maps', + port: 8303, + target: 'dist', + sourceMapsProd: true, + dangerouslySetWebpackConfig: (config) => makeStableHashes(config), +} satisfies SkuConfig; diff --git a/fixtures/vite-source-maps/src/App.jsx b/fixtures/vite-source-maps/src/App.jsx new file mode 100644 index 000000000..333a17d65 --- /dev/null +++ b/fixtures/vite-source-maps/src/App.jsx @@ -0,0 +1,23 @@ +import './index.css'; +import { Suspense } from 'react'; +import { lazy } from 'sku/vite-preload'; + +function slowImport(promise) { + return () => { + return new Promise((resolve) => { + setTimeout(() => resolve(promise()), 1000); + }); + }; +} + +const ModuleFileLazy = lazy(slowImport(() => import('./ModuleFile.jsx'))); + +const App = () => ( +
+ Loading...
}> + + + +); + +export default App; diff --git a/fixtures/vite-source-maps/src/ModuleFile.jsx b/fixtures/vite-source-maps/src/ModuleFile.jsx new file mode 100644 index 000000000..e4d8deea3 --- /dev/null +++ b/fixtures/vite-source-maps/src/ModuleFile.jsx @@ -0,0 +1,7 @@ +import classes from './ModuleFile.module.css'; + +const ModuleFile = () => { + return
Hello thing! new
; +}; + +export default ModuleFile; diff --git a/fixtures/vite-source-maps/src/ModuleFile.module.css b/fixtures/vite-source-maps/src/ModuleFile.module.css new file mode 100644 index 000000000..935fd719d --- /dev/null +++ b/fixtures/vite-source-maps/src/ModuleFile.module.css @@ -0,0 +1,3 @@ +.testClass { + color: red; +} diff --git a/fixtures/vite-source-maps/src/client.jsx b/fixtures/vite-source-maps/src/client.jsx new file mode 100644 index 000000000..b4761fc3f --- /dev/null +++ b/fixtures/vite-source-maps/src/client.jsx @@ -0,0 +1,11 @@ +import { StrictMode } from 'react'; +import { hydrateRoot } from 'react-dom/client'; + +import App from './App'; + +hydrateRoot( + document.getElementById('root'), + + + , +); diff --git a/fixtures/vite-source-maps/src/index.css b/fixtures/vite-source-maps/src/index.css new file mode 100644 index 000000000..d7da282f5 --- /dev/null +++ b/fixtures/vite-source-maps/src/index.css @@ -0,0 +1,3 @@ +:root { + background-color: blue; +} diff --git a/fixtures/vite-source-maps/src/render.jsx b/fixtures/vite-source-maps/src/render.jsx new file mode 100644 index 000000000..a365e4d5d --- /dev/null +++ b/fixtures/vite-source-maps/src/render.jsx @@ -0,0 +1,38 @@ +// import html from 'dedent'; +import { StrictMode } from 'react'; +import { renderToPipeableStream } from 'react-dom/server'; +import { preloadAll, ChunkCollectorContext } from 'sku/vite-preload'; + +import App from './App.jsx'; + +export default { + render: async ({ options, collector }) => { + await preloadAll(); + + return renderToPipeableStream( + + + + + , + options, + ); + }, +}; +// +// renderDocument: ({ app, bodyTags, headTags }) => html/* html */ ` +// +// +// +// +// hello-world +// +// ${headTags} +// +// +//
${app}
+// ${bodyTags} +// +// +// `, +// }; diff --git a/fixtures/vite-source-maps/src/server.jsx b/fixtures/vite-source-maps/src/server.jsx new file mode 100644 index 000000000..a2fe69fd5 --- /dev/null +++ b/fixtures/vite-source-maps/src/server.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { renderToPipeableStream } from 'react-dom/server'; +import { preloadAll, ChunkCollectorContext } from 'sku/vite-preload'; + +import App from './App'; + +export async function render({ options, collector }) { + await preloadAll(); + + return renderToPipeableStream( + + + + + , + options, + ); +} diff --git a/packages/sku/package.json b/packages/sku/package.json index 4e1adbb54..c8dce3835 100644 --- a/packages/sku/package.json +++ b/packages/sku/package.json @@ -17,6 +17,8 @@ "default": "./dist/config/storybook/index.cjs", "types": "./dist/config/storybook/index.d.ts" }, + "./vite-preload": "./src/vite-preload/index.ts", + "./vite-preload/__internal": "./src/vite-preload/__internal.ts", "./@loadable/component": "./src/@loadable/component/index.ts", "./webpack-plugin": "./dist/services/webpack/config/plugins/sku-webpack-plugin/index.js", "./package.json": "./package.json" @@ -86,8 +88,12 @@ "@types/jest": "^29.0.0", "@types/loadable__component": "^5.13.1", "@types/loadable__server": "^5.12.10", + "@vanilla-extract/integration": "^7.1.12", "@vanilla-extract/jest-transform": "^1.1.0", + "@vanilla-extract/vite-plugin": "^4.0.19", "@vanilla-extract/webpack-plugin": "^2.2.0", + "@vitejs/plugin-legacy": "^5.4.2", + "@vitejs/plugin-react": "^4.3.4", "@vocab/core": "^1.6.2", "@vocab/phrase": "^2.0.1", "@vocab/pseudo-localize": "^1.0.1", @@ -105,6 +111,7 @@ "browserslist-config-seek": "3.2.0", "chalk": "^5.3.0", "commander": "^12.1.0", + "compression": "^1.7.5", "cross-spawn": "^7.0.3", "css-loader": "^6.7.1", "cssnano": "^6.0.0", @@ -115,12 +122,13 @@ "didyoumean2": "^7.0.2", "ensure-gitignore": "^1.1.2", "env-ci": "^11.1.0", + "esbuild": "^0.21.5", "escape-string-regexp": "^4.0.0", "eslint": "^9.10.0", "eslint-config-seek": "^14.2.0", "eta": "^3.5.0", "exception-formatter": "^2.1.2", - "express": "^4.16.3", + "express": "^4.19.2", "fastest-validator": "^1.9.0", "fdir": "^6.1.1", "find-up": "^5.0.0", @@ -146,13 +154,18 @@ "prettier": "^3.4.1", "pretty-ms": "^7.0.1", "react-refresh": "^0.14.0", + "resolve-from": "^5.0.0", "selfsigned": "^2.1.1", "semver": "^7.3.4", "serialize-javascript": "^6.0.0", "serve-handler": "^6.1.3", + "serve-static": "^1.16.2", + "sirv": "^3.0.0", "svgo-loader": "^4.0.0", "terser-webpack-plugin": "^5.1.4", "typescript": "~5.6.0", + "vite": "^5.4.11", + "vite-preload": "^1.0.3", "webpack": "^5.52.0", "webpack-bundle-analyzer": "^4.6.1", "webpack-dev-server": "^5.0.2", @@ -163,6 +176,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/babel__core": "^7.20.5", + "@types/compression": "^1.7.5", "@types/cross-spawn": "^6.0.3", "@types/death": "^1.1.5", "@types/debug": "^4.1.12", @@ -178,6 +192,7 @@ "@types/semver": "^7.5.8", "@types/serialize-javascript": "^5.0.4", "@types/serve-handler": "^6.1.4", + "@types/serve-static": "^1.15.7", "@types/webpack-bundle-analyzer": "^4.7.0", "@types/webpack-node-externals": "^3.0.4", "@types/wrap-ansi": "^3.0.0", diff --git a/packages/sku/scripts/postinstall.js b/packages/sku/scripts/postinstall.js index e55d18003..24ee79d3b 100644 --- a/packages/sku/scripts/postinstall.js +++ b/packages/sku/scripts/postinstall.js @@ -4,11 +4,13 @@ import { readFile } from 'node:fs/promises'; import { join } from 'node:path'; import debug from 'debug'; import chalk from 'chalk'; +import { createSkuContext } from '../dist/context/createSkuContext.js'; try { const initCwd = process.env.INIT_CWD; const localCwd = initCwd || process.cwd(); + const packageJson = join(localCwd, './package.json'); const packageJsonContents = await readFile(packageJson, 'utf-8'); const { @@ -18,7 +20,6 @@ try { skuSkipPostInstall = false, skuSkipPostinstall = false, } = JSON.parse(packageJsonContents); - const skipPostInstall = skuSkipPostInstall || skuSkipPostinstall; const hasSkuDep = Boolean(dependencies?.sku); // sku should always be a dev dependency now that sku init installs it as one, but some repos may still have it as a regular dependency @@ -32,20 +33,13 @@ try { } // Suppressing eslint. These imports will work after the build steps for postinstall. + const { setCwd } = await import('../dist/utils/cwd.js'); - const { setCwd } = await import('../dist/lib/cwd.js'); - - const banner = (await import('../dist/lib/banner.js')).default; + const banner = (await import('../dist/utils/banners/banner.js')).default; const log = debug('sku:postinstall'); - // npm scripts can have an incorrect cwd - // in this case INIT_CWD should be set - // see: https://docs.npmjs.com/cli/run-script - // must be run first - if (initCwd) { - setCwd(initCwd); - } + setCwd(localCwd); if (hasSkuDep) { banner('warning', 'sku dependency detected', [ @@ -60,7 +54,7 @@ try { let configure; try { log('postinstall', 'starting load of configure'); - configure = (await import('../src/utils/configureApp.js')).default; + configure = (await import('../dist/utils/configureApp.js')).default; } catch (error) { console.error( 'An error occurred loading configure script. Please check that sku.config.js is correct and try again.', @@ -72,7 +66,8 @@ try { try { log('postinstall', 'running configure'); - configure(); + const skuContext = await createSkuContext({}); + configure(skuContext); log('postinstall', 'successfully configured'); } catch (error) { console.error( diff --git a/packages/sku/sku-types.d.ts b/packages/sku/sku-types.d.ts index c194c2966..a061e1655 100644 --- a/packages/sku/sku-types.d.ts +++ b/packages/sku/sku-types.d.ts @@ -2,6 +2,15 @@ import type { ReactNode } from 'react'; import type { Express, RequestHandler } from 'express'; import type { ChunkExtractor } from '@loadable/server'; import type { Linter } from 'eslint'; +import type { RenderToPipeableStreamOptions } from 'react-dom/server'; +import type { ChunkCollector } from 'vite-preload'; + +export interface ViteRenderCallbackParams { + collector: ChunkCollector; + url?: string; + site?: string; + options: RenderToPipeableStreamOptions; +} export interface RenderCallbackParams { SkuProvider: ({ children }: { children: ReactNode }) => JSX.Element; @@ -95,6 +104,13 @@ type TransformOutputPathFunction = ( type SkuLanguage = string | { name: string; extends?: string }; export interface SkuConfig { + /** + * The bundler to use for the app. 'vite' is currently experimental. + * + * @default 'webpack' + * @link https://seek-oss.github.io/sku/#/./docs/configuration?id=bundler + */ + bundler?: 'webpack' | 'vite'; /** * The client entry point to the app. The client entry is the file that executes your browser code. * diff --git a/packages/sku/src/context/createSkuContext.ts b/packages/sku/src/context/createSkuContext.ts index dc2b4e1cd..187dfbd3a 100644 --- a/packages/sku/src/context/createSkuContext.ts +++ b/packages/sku/src/context/createSkuContext.ts @@ -217,6 +217,7 @@ export const createSkuContext = async ({ const externalizeNodeModules = skuConfig.externalizeNodeModules!; const skuContext = { + bundler: skuConfig.bundler, configPath: appConfigPath, publicPath, skuConfig, diff --git a/packages/sku/src/context/defaultSkuConfig.ts b/packages/sku/src/context/defaultSkuConfig.ts index 2abe2592b..99d790f62 100644 --- a/packages/sku/src/context/defaultSkuConfig.ts +++ b/packages/sku/src/context/defaultSkuConfig.ts @@ -6,6 +6,7 @@ import type { SkuConfig } from '../../sku-types.d.ts'; const defaultDecorator = (a: any) => a; export default { + bundler: 'webpack', clientEntry: 'src/client.js', renderEntry: 'src/render.js', serverEntry: 'src/server.js', diff --git a/packages/sku/src/program/commands/build-ssr/build-ssr.command.ts b/packages/sku/src/program/commands/build-ssr/build-ssr.command.ts index 353ee476b..b22a095fa 100644 --- a/packages/sku/src/program/commands/build-ssr/build-ssr.command.ts +++ b/packages/sku/src/program/commands/build-ssr/build-ssr.command.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { statsOption } from '../../options/stats/stats.option.js'; import { buildSsrAction } from './build-ssr.action.js'; +import { viteBuildSsrHandler } from '@/program/commands/build-ssr/vite-build-ssr-handler.js'; export const buildSsrCommand = new Command('build-ssr'); @@ -9,4 +10,10 @@ buildSsrCommand 'Create a production build of a server-side rendered application.', ) .addOption(statsOption) - .action(buildSsrAction); + .action(async ({ stats, skuContext }) => { + if (skuContext.bundler !== 'vite') { + buildSsrAction({ stats, skuContext }); + } else { + viteBuildSsrHandler({ stats, skuContext }); + } + }); diff --git a/packages/sku/src/program/commands/build-ssr/vite-build-ssr-handler.ts b/packages/sku/src/program/commands/build-ssr/vite-build-ssr-handler.ts new file mode 100644 index 000000000..7995c9ac4 --- /dev/null +++ b/packages/sku/src/program/commands/build-ssr/vite-build-ssr-handler.ts @@ -0,0 +1,72 @@ +import type { StatsChoices } from '@/program/options/stats/stats.option.js'; +import type { SkuContext } from '@/context/createSkuContext.js'; +import { configureProject, validatePeerDeps } from '@/utils/configure.js'; +import { runVocabCompile } from '@/services/vocab/runVocab.js'; +import { + cleanStaticRenderEntry, + cleanTargetDirectory, + copyPublicFiles, + ensureTargetDirectory, +} from '@/utils/buildFileUtils.js'; +import { performance } from 'node:perf_hooks'; +import provider from '@/services/telemetry/index.js'; +import chalk from 'chalk'; +import prettyMilliseconds from 'pretty-ms'; +import { viteService } from '@/services/vite/index.js'; + +export const viteBuildSsrHandler = async ({ + stats, + skuContext, +}: { + stats: StatsChoices; + skuContext: SkuContext; +}) => { + // First, ensure the build is running in production mode + process.env.NODE_ENV = 'production'; + // TODO: build vite here. + const { isLibrary, cspEnabled, paths } = skuContext; + await configureProject(skuContext); + validatePeerDeps(skuContext); + + // TODO: Build Vite Index Here. + try { + await runVocabCompile(skuContext); + await ensureTargetDirectory({ paths }); + await cleanTargetDirectory({ paths }); + + // await viteService.build(skuContext); + await viteService.buildSsr(skuContext); + + // await cleanStaticRenderEntry({ paths }); + // await copyPublicFiles({ paths }); + await copyPublicFiles(skuContext); + + const timeTaken = performance.now(); + provider.timing('build', timeTaken, { + status: 'success', + type: 'ssr', + csp: cspEnabled, + }); + + console.log( + chalk.green(`Sku build complete in ${prettyMilliseconds(timeTaken)}`), + ); + } catch (error) { + const timeTaken = performance.now(); + provider.timing('build', timeTaken, { + status: 'failed', + type: 'ssr', + csp: cspEnabled, + }); + + console.error(chalk.red(error)); + + process.exitCode = 1; + } finally { + await provider.close(); + + if (process.env.SKU_FORCE_EXIT) { + process.exit(); + } + } +}; diff --git a/packages/sku/src/program/commands/build/build.action.ts b/packages/sku/src/program/commands/build/build.action.ts index c7805a17c..41f46d230 100644 --- a/packages/sku/src/program/commands/build/build.action.ts +++ b/packages/sku/src/program/commands/build/build.action.ts @@ -1,20 +1,5 @@ -import prettyMilliseconds from 'pretty-ms'; -import chalk from 'chalk'; -import webpack from 'webpack'; -import { performance } from 'node:perf_hooks'; - -import { - copyPublicFiles, - cleanTargetDirectory, - ensureTargetDirectory, - cleanStaticRenderEntry, -} from '@/utils/buildFileUtils.js'; -import { run } from '@/services/webpack/runWebpack.js'; -import createHtmlRenderPlugin from '@/services/webpack/config/plugins/createHtmlRenderPlugin.js'; -import makeWebpackConfig from '@/services/webpack/config/webpack.config.js'; -import provider from '@/services/telemetry/index.js'; -import { runVocabCompile } from '@/services/vocab/runVocab.js'; -import { configureProject, validatePeerDeps } from '@/utils/configure.js'; +import { viteBuildHandler } from './vite-build-handler.js'; +import { webpackBuildHandler } from './webpack-build-handler.js'; import type { StatsChoices } from '@/program/options/stats/stats.option.js'; import type { SkuContext } from '@/context/createSkuContext.js'; @@ -25,60 +10,12 @@ const buildAction = async ({ stats: StatsChoices; skuContext: SkuContext; }) => { - // First, ensure the build is running in production mode - process.env.NODE_ENV = 'production'; - const { isLibrary, cspEnabled, paths } = skuContext; - await configureProject(skuContext); - validatePeerDeps(skuContext); - try { - await runVocabCompile(skuContext); - await ensureTargetDirectory({ paths }); - await cleanTargetDirectory({ paths }); - await run( - webpack( - makeWebpackConfig({ - htmlRenderPlugin: !isLibrary - ? createHtmlRenderPlugin({ - isStartScript: false, - skuContext, - }) - : undefined, - stats, - skuContext, - }), - ), - { stats }, - ); - await cleanStaticRenderEntry({ paths }); - await copyPublicFiles({ paths }); - - const timeTaken = performance.now(); - provider.timing('build', timeTaken, { - status: 'success', - type: 'static', - csp: cspEnabled, - }); - - console.log( - chalk.green(`Sku build complete in ${prettyMilliseconds(timeTaken)}`), - ); - } catch (error) { - const timeTaken = performance.now(); - provider.timing('build', timeTaken, { - status: 'failed', - type: 'static', - csp: cspEnabled, - }); - - console.error(chalk.red(error)); - - process.exitCode = 1; - } finally { - await provider.close(); - - if (process.env.SKU_FORCE_EXIT) { - process.exit(); - } + console.log('Building your application...', skuContext.bundler); + if (skuContext.bundler === 'vite') { + await viteBuildHandler({ stats, skuContext }); + } + if (skuContext.bundler === 'webpack') { + await webpackBuildHandler({ stats, skuContext }); } }; diff --git a/packages/sku/src/program/commands/build/vite-build-handler.ts b/packages/sku/src/program/commands/build/vite-build-handler.ts new file mode 100644 index 000000000..bc830fded --- /dev/null +++ b/packages/sku/src/program/commands/build/vite-build-handler.ts @@ -0,0 +1,86 @@ +import type { StatsChoices } from '@/program/options/stats/stats.option.js'; +import type { SkuContext } from '@/context/createSkuContext.js'; +import { configureProject, validatePeerDeps } from '@/utils/configure.js'; +import { runVocabCompile } from '@/services/vocab/runVocab.js'; +import { + cleanStaticRenderEntry, + cleanTargetDirectory, + copyPublicFiles, + ensureTargetDirectory, +} from '@/utils/buildFileUtils.js'; +import { performance } from 'node:perf_hooks'; +import provider from '@/services/telemetry/index.js'; +import chalk from 'chalk'; +import prettyMilliseconds from 'pretty-ms'; +import { viteService } from '@/services/vite/index.js'; + +export const viteBuildHandler = async ({ + stats, + skuContext, +}: { + stats: StatsChoices; + skuContext: SkuContext; +}) => { + // First, ensure the build is running in production mode + process.env.NODE_ENV = 'production'; + // TODO: build vite here. + const { isLibrary, cspEnabled, paths } = skuContext; + await configureProject(skuContext); + validatePeerDeps(skuContext); + + // TODO: Build Vite Index Here. + try { + await runVocabCompile(skuContext); + await ensureTargetDirectory({ paths }); + await cleanTargetDirectory({ paths }); + + await viteService.build(skuContext); + await viteService.buildSsg(skuContext); + + // await run( + // webpack( + // makeWebpackConfig({ + // htmlRenderPlugin: !isLibrary + // ? createHtmlRenderPlugin({ + // isStartScript: false, + // skuContext, + // }) + // : undefined, + // stats, + // skuContext, + // }), + // ), + // { stats }, + // ); + // await cleanStaticRenderEntry({ paths }); + // await copyPublicFiles({ paths }); + + const timeTaken = performance.now(); + provider.timing('build', timeTaken, { + status: 'success', + type: 'static', + csp: cspEnabled, + }); + + console.log( + chalk.green(`Sku build complete in ${prettyMilliseconds(timeTaken)}`), + ); + } catch (error) { + const timeTaken = performance.now(); + provider.timing('build', timeTaken, { + status: 'failed', + type: 'static', + csp: cspEnabled, + }); + + console.error(chalk.red(error)); + + process.exitCode = 1; + } finally { + await provider.close(); + + if (process.env.SKU_FORCE_EXIT) { + process.exit(); + } + } +}; diff --git a/packages/sku/src/program/commands/build/webpack-build-handler.ts b/packages/sku/src/program/commands/build/webpack-build-handler.ts new file mode 100644 index 000000000..3ddd91943 --- /dev/null +++ b/packages/sku/src/program/commands/build/webpack-build-handler.ts @@ -0,0 +1,83 @@ +import prettyMilliseconds from 'pretty-ms'; +import chalk from 'chalk'; +import webpack from 'webpack'; +import { performance } from 'node:perf_hooks'; + +import { + copyPublicFiles, + cleanTargetDirectory, + ensureTargetDirectory, + cleanStaticRenderEntry, +} from '@/utils/buildFileUtils.js'; +import { run } from '@/services/webpack/runWebpack.js'; +import createHtmlRenderPlugin from '@/services/webpack/config/plugins/createHtmlRenderPlugin.js'; +import makeWebpackConfig from '@/services/webpack/config/webpack.config.js'; +import provider from '@/services/telemetry/index.js'; +import { runVocabCompile } from '@/services/vocab/runVocab.js'; +import { configureProject, validatePeerDeps } from '@/utils/configure.js'; +import type { StatsChoices } from '@/program/options/stats/stats.option.js'; +import type { SkuContext } from '@/context/createSkuContext.js'; + +export const webpackBuildHandler = async ({ + stats, + skuContext, +}: { + stats: StatsChoices; + skuContext: SkuContext; +}) => { + // First, ensure the build is running in production mode + process.env.NODE_ENV = 'production'; + const { isLibrary, cspEnabled, paths } = skuContext; + await configureProject(skuContext); + validatePeerDeps(skuContext); + try { + await runVocabCompile(skuContext); + await ensureTargetDirectory({ paths }); + await cleanTargetDirectory({ paths }); + await run( + webpack( + makeWebpackConfig({ + htmlRenderPlugin: !isLibrary + ? createHtmlRenderPlugin({ + isStartScript: false, + skuContext, + }) + : undefined, + stats, + skuContext, + }), + ), + { stats }, + ); + await cleanStaticRenderEntry({ paths }); + await copyPublicFiles({ paths }); + + const timeTaken = performance.now(); + provider.timing('build', timeTaken, { + status: 'success', + type: 'static', + csp: cspEnabled, + }); + + console.log( + chalk.green(`Sku build complete in ${prettyMilliseconds(timeTaken)}`), + ); + } catch (error) { + const timeTaken = performance.now(); + provider.timing('build', timeTaken, { + status: 'failed', + type: 'static', + csp: cspEnabled, + }); + + console.error(chalk.red(error)); + + process.exitCode = 1; + } finally { + await provider.close(); + + if (process.env.SKU_FORCE_EXIT) { + process.exit(); + } + } +}; diff --git a/packages/sku/src/program/commands/start-ssr/start-ssr.command.ts b/packages/sku/src/program/commands/start-ssr/start-ssr.command.ts index 60ce1aa27..3ee685019 100644 --- a/packages/sku/src/program/commands/start-ssr/start-ssr.command.ts +++ b/packages/sku/src/program/commands/start-ssr/start-ssr.command.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { statsOption } from '../../options/stats/stats.option.js'; import { startSsrAction } from './start-ssr.action.js'; +import { viteStartSsrHandler } from '@/program/commands/start-ssr/vite-start-ssr-handler.js'; const startSsrCommand = new Command('start-ssr'); @@ -10,7 +11,11 @@ startSsrCommand ) .addOption(statsOption) .action(async ({ stats, skuContext }) => { - startSsrAction({ stats, skuContext }); + if (skuContext.bundler !== 'vite') { + startSsrAction({ stats, skuContext }); + } else { + viteStartSsrHandler(skuContext); + } }); export { startSsrCommand }; diff --git a/packages/sku/src/program/commands/start-ssr/vite-start-ssr-handler.ts b/packages/sku/src/program/commands/start-ssr/vite-start-ssr-handler.ts new file mode 100644 index 000000000..d2b578427 --- /dev/null +++ b/packages/sku/src/program/commands/start-ssr/vite-start-ssr-handler.ts @@ -0,0 +1,6 @@ +import { viteService } from '@/services/vite/index.js'; +import type { SkuContext } from '@/context/createSkuContext.js'; + +export const viteStartSsrHandler = async (skuContext: SkuContext) => { + await viteService.startSsr(skuContext); +}; diff --git a/packages/sku/src/program/commands/start/start.command.ts b/packages/sku/src/program/commands/start/start.command.ts index c1c4b26d0..062f678b9 100644 --- a/packages/sku/src/program/commands/start/start.command.ts +++ b/packages/sku/src/program/commands/start/start.command.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { statsOption } from '../../options/stats/stats.option.js'; import { startAction } from './start.action.js'; +import { viteStartHandler } from '@/program/commands/start/vite-start-handler.js'; const startCommand = new Command('start'); @@ -11,11 +12,10 @@ startCommand .addOption(statsOption) .action(async ({ stats, skuContext }, command) => { const environment = command.parent.opts()?.environment; - try { + if (skuContext.bundler !== 'vite') { startAction({ stats, environment, skuContext }); - } catch (error) { - console.error('startCommand error', error); - process.exit(1); + } else { + viteStartHandler(skuContext); } }); diff --git a/packages/sku/src/program/commands/start/vite-start-handler.ts b/packages/sku/src/program/commands/start/vite-start-handler.ts new file mode 100644 index 000000000..0a65cdf73 --- /dev/null +++ b/packages/sku/src/program/commands/start/vite-start-handler.ts @@ -0,0 +1,6 @@ +import { viteService } from '@/services/vite/index.js'; +import type { SkuContext } from '@/context/createSkuContext.js'; + +export const viteStartHandler = async (skuContext: SkuContext) => { + await viteService.start(skuContext); +}; diff --git a/packages/sku/src/services/vite/createConfig.ts b/packages/sku/src/services/vite/createConfig.ts new file mode 100644 index 000000000..364ae2da4 --- /dev/null +++ b/packages/sku/src/services/vite/createConfig.ts @@ -0,0 +1,95 @@ +import type { SkuContext } from '@/context/createSkuContext.js'; +import react from '@vitejs/plugin-react'; +import type { InlineConfig } from 'vite'; +import preloadPlugin from 'vite-preload/plugin'; +import legacy from '@vitejs/plugin-legacy'; +import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; +import { cssFileFilter } from '@vanilla-extract/integration'; +import resolveFrom from 'resolve-from'; +import type { Plugin } from 'esbuild'; +import { dirname } from 'path'; +import { fileURLToPath } from 'node:url'; +const __filename = fileURLToPath(import.meta.url); // get the resolved path to the file +const __dirname = dirname(__filename); + +export const fixViteVanillaExtractDepScanPlugin = (): Plugin => ({ + name: 'fix-vite-vanilla-extract-dep-scan', + setup(build) { + build.onResolve({ filter: cssFileFilter }, async ({ importer, path }) => ({ + path: resolveFrom(dirname(importer), path), + external: true, + })); + }, +}); + +export const createViteConfig = ({ + skuContext, + configType = 'client', + plugins = [], +}: { + skuContext: SkuContext; + configType?: 'client' | 'ssr' | 'ssg'; + plugins?: InlineConfig['plugins']; +}) => { + const outDir = { + client: 'dist', + ssr: 'dist/server', + ssg: 'dist/render', + }; + + return { + root: process.cwd(), + plugins: [ + vanillaExtractPlugin(), + react(), + preloadPlugin({ + __internal_importHelperModuleName: 'sku/vite-preload/__internal', + }), + legacy({ + modernPolyfills: true, + renderLegacyChunks: false, + }), + ...plugins, + ], + resolve: { + alias: { + __sku_alias__clientEntry: skuContext.paths.clientEntry, + __sku_alias__serverEntry: skuContext.paths.serverEntry, + }, + }, + define: { + VITE_SKU_CONTEXT: JSON.stringify(skuContext), + }, + build: { + outDir: outDir[configType], + emptyOutDir: true, + ssr: configType === 'ssr' || configType === 'ssg', + manifest: configType === 'client', + ssrManifest: false, + rollupOptions: { + ...(configType === 'ssr' + ? { input: skuContext.paths.serverEntry } + : {}), + ...(configType === 'ssg' + ? { + input: skuContext.paths.renderEntry, + } + : {}), + output: { + experimentalMinChunkSize: undefined, + }, + }, + }, + optimizeDeps: { + esbuildOptions: { + plugins: [fixViteVanillaExtractDepScanPlugin()], + }, + }, + ssr: { + noExternal: ['@vanilla-extract/css', 'braid-design-system'], + }, + html: { + cspNonce: '%NONCE%', + }, + } satisfies InlineConfig; +}; diff --git a/packages/sku/src/services/vite/createIndex.ts b/packages/sku/src/services/vite/createIndex.ts new file mode 100644 index 000000000..fb47cee2f --- /dev/null +++ b/packages/sku/src/services/vite/createIndex.ts @@ -0,0 +1,44 @@ +import type { SkuContext } from '@/context/createSkuContext.js'; +import dedent from 'dedent'; + +export const APP_HEAD = ''; +export const APP_HTML = ''; + +export const createDefaultHtmlIndex = ({ + entryPath, + headTags, + bodyTags, + rootId = 'root', +}: { + entryPath: string; + headTags: string; + bodyTags?: string; + rootId?: string; +}) => dedent` + + + + + ${headTags} + ${APP_HEAD} + + +
${APP_HTML}
+ + ${bodyTags || ''} + +`; + +export const createIndexFile = (skuContext: SkuContext) => { + const { skuConfig } = skuContext; + const { clientEntry } = skuConfig; + + const headTags = `Sku Project\n`; + + const indexHtml = createDefaultHtmlIndex({ + headTags, + entryPath: clientEntry, + }); + + return indexHtml; +}; diff --git a/packages/sku/src/services/vite/createPreRenderedHtml.ts b/packages/sku/src/services/vite/createPreRenderedHtml.ts new file mode 100644 index 000000000..f1a72d194 --- /dev/null +++ b/packages/sku/src/services/vite/createPreRenderedHtml.ts @@ -0,0 +1,131 @@ +import crypto from 'node:crypto'; +import { createChunkCollector } from 'vite-preload'; +import { Transform } from 'node:stream'; +import createCSPHandler from '@/entry/csp.js'; +import clientContextKey from '@/entry/clientContextKey.js'; +import serializeJavascript from 'serialize-javascript'; + +type CreatePreRenderedHtmlOptions = { + url: string; + render: any; + template: string; + manifest: any; + site: any; +}; + +export const serializeConfig = (config: object) => + ``; + +export const createPreRenderedHtml = async ({ + url, + render, + template, + manifest, + site, +}: CreatePreRenderedHtmlOptions): Promise => { + return new Promise(async (resolve, reject) => { + const nonce = crypto.randomBytes(16).toString('base64'); + + let didError = false; + + const collector = createChunkCollector({ + manifest, + preloadAssets: true, + preloadFonts: true, + nonce, + }); + + const [head, rest] = template.split(``); + let html = ''; + let clientContext = {}; + + if (render.provideClientContext) { + // Check what kind of context needs to be passed into this function. + clientContext = await render.provideClientContext({ + site, + }); + } + + // This can be improved? Thinking of the interface can improve. + // We need to use the client generated header for the SSG/SSR rendering so using a html document is not the best way to do it. + // That was what .renderDocument was doing. + const renderedBodyTags = render.bodyTags ? await render.bodyTags() : ''; + const renderedHeadTags = render.headTags ? await render.headTags() : ''; + + const bodyTags = + Object.keys(clientContext).length > 0 + ? [serializeConfig(clientContext), renderedBodyTags].join('\n') + : renderedBodyTags; + + // const result = await render.renderDocument({ + // ...renderContext, + // headTags: getHeadTags(), + // bodyTags, + // app, + // }); + + // if (csp.enabled) { + // const cspHandler = createCSPHandler({ + // extraHosts: [publicPath, ...csp.extraHosts], + // isDevelopment: process.env.NODE_ENV === 'development', + // }); + // + // return cspHandler.hanzdleHtml(result); + // } + + const { pipe } = await render.render({ + url, + site, + collector, + options: { + nonce, + onShellError(error: any) { + didError = true; + reject(error); + }, + onShellReady() { + console.log('onShellReady'); + + const links = collector.getLinkHeaders(); + + console.log('Links', links); + + const modules = collector.getChunks(); + + console.log('Modules used', modules); + + const tags = collector.getTags(); + + html += head + .replaceAll('%NONCE%', nonce) + .replace('', `${renderedHeadTags}\n${tags}`); + + const transformStream = new Transform({ + transform(chunk, encoding, callback) { + html += chunk.toString(); + console.log('Chunk', chunk.length); + callback(); + }, + }); + + transformStream.on('finish', () => { + html = `${html}\n${bodyTags}\n${rest}`; + resolve(html); + }); + + pipe(transformStream); + }, + onError(error: any) { + didError = true; + console.error(error); + }, + onAllReady() { + console.log('onAllReady'); + }, + }, + }); + }); +}; diff --git a/packages/sku/src/services/vite/createSkuProvider.tsx b/packages/sku/src/services/vite/createSkuProvider.tsx new file mode 100644 index 000000000..5c8b10f6e --- /dev/null +++ b/packages/sku/src/services/vite/createSkuProvider.tsx @@ -0,0 +1,10 @@ +import { ReactNode } from 'react'; +import { ChunkCollectorContext, type ChunkCollector } from 'vite-preload'; + +export const createSkuProvider = + (collector: ChunkCollector) => + ({ children }: { children: ReactNode }) => ( + + {children} + + ); diff --git a/packages/sku/src/services/vite/createViteServer.ts b/packages/sku/src/services/vite/createViteServer.ts new file mode 100644 index 000000000..2cdf0b1c2 --- /dev/null +++ b/packages/sku/src/services/vite/createViteServer.ts @@ -0,0 +1,68 @@ +import { createViteConfig } from '@/services/vite/createConfig.js'; +import { SkuContext } from '@/context/createSkuContext.js'; +import { createServer } from 'vite'; +import clientContextKey from '@/entry/clientContextKey.js'; +import serializeJavascript from 'serialize-javascript'; +import type { Plugin } from 'vite'; +import { createDefaultHtmlIndex } from '@/services/vite/createIndex.js'; + +export const serializeConfig = (config: object) => + ``; + +const SkuViteMiddleware = (skuContext: SkuContext): Plugin => ({ + name: 'sku-vite-server-middleware', + configureServer(server) { + return () => { + server.middlewares.use(async (req, res, next) => { + const host = req.headers['host']; // This includes the hostname and port + const hostname = host?.split(':')[0]; + const site = skuContext.sites.find((site) => site.host === hostname); + const isHtml = req.url === '/index.html'; + if (isHtml && site) { + const { skuConfig } = skuContext; + const { clientEntry } = skuConfig; + + // TODO: fix the title here. + const headTags = `Sku Project\n`; + + const indexHtml = createDefaultHtmlIndex({ + headTags, + entryPath: `/${clientEntry}`, + bodyTags: serializeConfig({ site: site?.name }), + }); + + const html = await server.transformIndexHtml( + req.url || '/', + indexHtml, + ); + + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end(html); + } else { + next(); + } + }); + }; + }, +}); + +export const createViteServer = async (skuContext: SkuContext) => { + const base = process.env.BASE || '/'; + const root = process.cwd(); + + // const sites = skuContext.sites; + + const server = await createServer({ + ...createViteConfig({ + skuContext, + plugins: [SkuViteMiddleware(skuContext)], + }), + root, + base, + }); + + return server; +}; diff --git a/packages/sku/src/services/vite/entries/html-template.html b/packages/sku/src/services/vite/entries/html-template.html new file mode 100644 index 000000000..51d8321c8 --- /dev/null +++ b/packages/sku/src/services/vite/entries/html-template.html @@ -0,0 +1,14 @@ + + + + + + + Vite + React + TS + + + +
+ + + diff --git a/packages/sku/src/services/vite/entries/prerender-entry.js b/packages/sku/src/services/vite/entries/prerender-entry.js new file mode 100644 index 000000000..e2c4eea84 --- /dev/null +++ b/packages/sku/src/services/vite/entries/prerender-entry.js @@ -0,0 +1,3 @@ +import { prerenderRoutes } from '@/services/vite/prerender.js'; + +prerenderRoutes(JSON.parse(VITE_SKU_CONTEXT)); diff --git a/packages/sku/src/services/vite/entries/vite-client.tsx b/packages/sku/src/services/vite/entries/vite-client.tsx new file mode 100644 index 000000000..b6957aca7 --- /dev/null +++ b/packages/sku/src/services/vite/entries/vite-client.tsx @@ -0,0 +1,34 @@ +// '__sku_alias__clientEntry' is a vite alias +// pointing to the consuming apps client entry +import client from '__sku_alias__clientEntry'; + +import { preloadAll } from 'vite-preload'; + +if (process.env.NODE_ENV === 'development') { + if (typeof client !== 'function') { + throw new Error(require('dedent')` + The sku client entry ('${__SKU_CLIENT_PATH__}') must export a function that calls hydrateRoot. e.g. + + import { hydrateRoot } from 'react-dom/client'; + + import App from './App'; + + export default ({ site }) => + hydrateRoot( + document.getElementById('app')!, + , + ); + + See https://seek-oss.github.io/sku/#/./docs/building-the-app?id=client for more info. + `); + } +} + +let clientContext = {}; + +const dataElement = document.getElementById('__SKU_CLIENT_CONTEXT__'); +if (dataElement) { + clientContext = JSON.parse(dataElement.textContent || '{}'); +} + +client(clientContext); diff --git a/packages/sku/src/services/vite/entries/vite-server.ts b/packages/sku/src/services/vite/entries/vite-server.ts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/sku/src/services/vite/index.ts b/packages/sku/src/services/vite/index.ts new file mode 100644 index 000000000..344082ead --- /dev/null +++ b/packages/sku/src/services/vite/index.ts @@ -0,0 +1,66 @@ +import { createServer } from '@/services/vite/serve.js'; +import { SkuContext } from '@/context/createSkuContext.js'; +import { createViteServer } from '@/services/vite/createViteServer.js'; +import { build } from 'vite'; +import { createViteConfig } from '@/services/vite/createConfig.js'; +import { prerenderRoutes } from '@/services/vite/prerender.js'; + +export const viteService = { + build: async (skuContext: SkuContext) => { + await build(createViteConfig({ skuContext })); + }, + buildSsg: async (skuContext: SkuContext) => { + await build(createViteConfig({ skuContext, configType: 'ssg' })); + if (skuContext.routes) { + await prerenderRoutes(skuContext); + } + }, + buildSsr: async (skuContext: SkuContext) => { + await build(createViteConfig({ skuContext, configType: 'ssr' })); + }, + serve: async (skuContext: SkuContext) => { + const isTest = process.env.VITEST; + + process.env.NODE_ENV = 'production'; + + // TODO: This should serve SSG content. It currently serves SSR content. + // If you want SSR content it should be done via start. + + if (!isTest) { + createServer({ + skuContext, + isProduction: process.env.NODE_ENV === 'production', + }).then(({ app }) => + app.listen(skuContext.port.server, () => { + console.log(`http://localhost:${skuContext.port.server}`); + }), + ); + } + }, + start: async (skuContext: SkuContext) => { + const isTest = process.env.VITEST; + + const server = await createViteServer(skuContext); + await server.listen(skuContext.port.client); + + server.printUrls(); + server.bindCLIShortcuts({ print: true }); + }, + startSsr: async (skuContext: SkuContext) => { + const isTest = process.env.VITEST; + + process.env.NODE_ENV = 'development'; + + if (!isTest) { + createServer({ + skuContext, + isProduction: false, + }).then(({ app }) => + app.listen(skuContext.port.server, () => { + console.log(`http://localhost:${skuContext.port.server}`); + }), + ); + } + }, + createIndex: async () => {}, +}; diff --git a/packages/sku/src/services/vite/parseManifest.ts b/packages/sku/src/services/vite/parseManifest.ts new file mode 100644 index 000000000..f534a8985 --- /dev/null +++ b/packages/sku/src/services/vite/parseManifest.ts @@ -0,0 +1 @@ +export const parseManifest = (manifest: any) => {}; diff --git a/packages/sku/src/services/vite/prerender.ts b/packages/sku/src/services/vite/prerender.ts new file mode 100644 index 000000000..351e96b5c --- /dev/null +++ b/packages/sku/src/services/vite/prerender.ts @@ -0,0 +1,61 @@ +// Pre-render the app into static HTML. +// run `npm run generate` and then `dist/static` can be served as a static site. + +import fs from 'node:fs'; +import path from 'node:path'; +import { SkuContext } from '@/context/createSkuContext.js'; +import { createPreRenderedHtml } from '@/services/vite/createPreRenderedHtml.js'; +import { getBuildRoutes } from '@/services/webpack/config/plugins/createHtmlRenderPlugin.js'; + +const resolve = (p: string) => path.resolve(process.cwd(), p); + +function ensureDirectoryExistence(filePath: string) { + const dirname = path.dirname(filePath); + if (fs.existsSync(dirname)) { + return true; + } + ensureDirectoryExistence(dirname); + fs.mkdirSync(dirname); +} + +export const prerenderRoutes = async (skuContext: SkuContext) => { + const manifest = JSON.parse( + fs.readFileSync(resolve('./dist/.vite/manifest.json'), 'utf-8'), + ); + const template = fs.readFileSync(resolve('./dist/index.html'), 'utf-8'); + + const routes = getBuildRoutes(skuContext); + console.log( + 'Prerendering routes:', + routes.map((r) => r.route), + ); + + for (const route of routes) { + const render = (await import(resolve('./dist/render/render.js'))).default; + const html = await createPreRenderedHtml({ + url: route.route, + render, + site: route.site, + template, + manifest, + }); + + const getFileName = (skuRoute: ReturnType[0]) => { + let renderDirectory = skuContext.skuConfig.target; + const relativeFilePath = skuContext.transformOutputPath(skuRoute); + const includesHtmlInFilePath = relativeFilePath.substr(-5) === '.html'; + if (!path.isAbsolute(renderDirectory)) { + renderDirectory = path.resolve(renderDirectory); + } + const newFilePath = includesHtmlInFilePath + ? path.join(renderDirectory, relativeFilePath) + : path.join(renderDirectory, relativeFilePath, 'index.html'); + + return newFilePath; + }; + + const filePath = getFileName(route); + ensureDirectoryExistence(filePath); + fs.writeFileSync(resolve(filePath), html); + } +}; diff --git a/packages/sku/src/services/vite/serve.ts b/packages/sku/src/services/vite/serve.ts new file mode 100644 index 000000000..3b5deb898 --- /dev/null +++ b/packages/sku/src/services/vite/serve.ts @@ -0,0 +1,186 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import { Transform } from 'node:stream'; +import { setTimeout } from 'node:timers/promises'; +import express from 'express'; +import type { ViteDevServer } from 'vite'; +import { createChunkCollector } from 'vite-preload'; +import crypto from 'node:crypto'; + +import { createViteConfig } from '@/services/vite/createConfig.js'; +import type { SkuContext } from '@/context/createSkuContext.js'; + +const isTest = process.env.VITEST; + +// Constants +const base = process.env.BASE || '/'; + +const resolve = (p: string) => path.resolve(process.cwd(), p); + +type CreateServerOptions = { + root?: string; + isProduction?: boolean; + hmrPort?: any; + skuContext: SkuContext; +}; + +export const createServer: (options: CreateServerOptions) => Promise<{ + app: express.Express; + vite: ViteDevServer | undefined; +}> = async ({ + root = process.cwd(), + isProduction = process.env.NODE_ENV === 'production', + hmrPort, + skuContext, +}) => { + try { + // Cached production assets + const templateHtml = isProduction + ? await fs.readFile(resolve('./dist/client/index.html'), 'utf-8') + : ''; + const manifest = isProduction + ? JSON.parse( + await fs.readFile( + resolve('./dist/client/.vite/manifest.json'), + 'utf-8', + ), + ) + : undefined; + + // Create http server + const app = express(); + + // Add Vite or respective production middlewares + let vite: ViteDevServer | undefined; + if (!isProduction) { + const { createServer } = await import('vite'); + vite = await createServer({ + ...createViteConfig({ skuContext }), + root, + server: { middlewareMode: true }, + appType: 'custom', + base, + }); + app.use(vite.middlewares); + } else { + const compression = (await import('compression')).default; + const sirv = (await import('sirv')).default; + app.use(compression()); + app.use(base, sirv(resolve('./dist/client'), { extensions: [] })); + } + + // Serve HTML + app.use('*', async (req, res) => { + try { + const url = req.originalUrl.replace(base, ''); + + let template; + let render; + if (!isProduction && vite) { + // Always read fresh template in development + template = await fs.readFile(resolve('./index.html'), 'utf-8'); + template = await vite.transformIndexHtml(url, template); + render = (await vite.ssrLoadModule(skuContext.paths.serverEntry)) + .render; + } else { + template = templateHtml; + // skuContext.paths.serverEntry.split('/').pop() || fix this by removing the mimetype. + const serverEntryFile = 'server.js'; + render = (await import(resolve(`./dist/server/${serverEntryFile}`))) + .render; + } + + const nonce = crypto.randomBytes(16).toString('base64'); + res.setHeader( + 'Content-Security-Policy', + `script-src 'self' 'nonce-${nonce}'; style-src 'self' 'nonce-${nonce}';`, + ); + + let didError = false; + + const collector = createChunkCollector({ + manifest, + preloadAssets: true, + preloadFonts: true, + nonce, + }); + + // Not gonna work locally in Chrome unless you have a HTTP/2 supported proxy in front, use Firefox to pick up 103 Early Hints over HTTP/1.1 without TLS + // https://developer.chrome.com/docs/web-platform/early-hints + // Also services like cloudflare already handles this for you + // https://developers.cloudflare.com/cache/advanced-configuration/early-hints/ + if (req.headers['sec-fetch-mode'] === 'navigate') { + res.writeEarlyHints({ + link: collector.getLinkHeaders(), + }); + await setTimeout(1000); + } + + const [head, rest] = template.split(``); + + const { pipe } = await render({ + url, + collector, + options: { + nonce, + onShellError() { + res.status(500); + res.set({ 'Content-Type': 'text/html' }); + res.send('

Something went wrong

'); + }, + onShellReady() { + console.log('onShellReady'); + + res.status(didError ? 500 : 200); + res.set('Content-Type', 'text/html'); + const links = collector.getLinkHeaders(); + res.append('link', links); + + const modules = collector.getSortedModules(); + + console.log('Modules used', modules); + + const tags = collector.getTags(); + + res.write( + head + .replaceAll('%NONCE%', nonce) + .replace('', `${tags}`), + ); + + const transformStream = new Transform({ + transform(chunk, encoding, callback) { + res.write(chunk, encoding); + console.log('Chunk', chunk.length); + callback(); + }, + }); + + transformStream.on('finish', () => { + res.end(rest); + }); + + pipe(transformStream); + }, + onError(error: any) { + didError = true; + console.error(error); + }, + onAllReady() { + console.log('onAllReady'); + }, + }, + }); + } catch (e: any) { + vite?.ssrFixStacktrace(e); + console.log(e.stack); + res.status(500).end(e.stack); + } + }); + + return { app, vite }; + } catch (e: any) { + console.error(e); + return { app: express(), vite: undefined }; + } +}; diff --git a/packages/sku/src/services/webpack/config/plugins/createHtmlRenderPlugin.ts b/packages/sku/src/services/webpack/config/plugins/createHtmlRenderPlugin.ts index e61b89ec1..0dbac8bd8 100644 --- a/packages/sku/src/services/webpack/config/plugins/createHtmlRenderPlugin.ts +++ b/packages/sku/src/services/webpack/config/plugins/createHtmlRenderPlugin.ts @@ -80,7 +80,7 @@ const getStartRoutes = ({ })); }; -const getBuildRoutes = ({ +export const getBuildRoutes = ({ sites, routes, languages: skuLanguages, diff --git a/packages/sku/src/utils/configureApp.ts b/packages/sku/src/utils/configureApp.ts index 83bb8882d..768541e38 100755 --- a/packages/sku/src/utils/configureApp.ts +++ b/packages/sku/src/utils/configureApp.ts @@ -16,6 +16,8 @@ import { addEslintIgnoreToSkuConfig, } from '@/services/eslint/eslintMigration.js'; +import { createIndexFile } from '@/services/vite/createIndex.js'; + import getCertificate from './certificate.js'; import { getPathFromCwd, writeFileToCWD } from '@/utils/cwd.js'; @@ -30,7 +32,7 @@ const convertToForwardSlashPaths = (pathStr: string) => const addSep = (p: string) => `${p}${path.sep}`; export default async (skuContext: SkuContext) => { - const { paths, httpsDevServer, languages, hosts } = skuContext; + const { paths, httpsDevServer, languages, hosts, skuConfig } = skuContext; // Ignore target directories const webpackTargetDirectory = addSep(paths.relativeTarget); @@ -127,6 +129,13 @@ export default async (skuContext: SkuContext) => { prettierIgnorePatterns.push(generatedVocabFileGlob); } + // TODO: VITE: this needs to be improved. + // This needs to be updated in a nice function via the vite service. + if (skuContext.bundler === 'vite') { + const viteIndexFileContent = createIndexFile(skuContext); + await writeFileToCWD('index.html', viteIndexFileContent, { banner: false }); + } + // Write `.prettierignore` // @ts-expect-error await ensureGitignore({ diff --git a/packages/sku/src/vite-preload/__internal.ts b/packages/sku/src/vite-preload/__internal.ts new file mode 100644 index 000000000..595b86b17 --- /dev/null +++ b/packages/sku/src/vite-preload/__internal.ts @@ -0,0 +1 @@ +export { __collectModule, Context } from 'vite-preload/__internal'; diff --git a/packages/sku/src/vite-preload/index.ts b/packages/sku/src/vite-preload/index.ts new file mode 100644 index 000000000..2999e9609 --- /dev/null +++ b/packages/sku/src/vite-preload/index.ts @@ -0,0 +1,3 @@ +// This is provided so consumers can import `sku/vite-preload`, +// since they don't depend on `vite-preload` directly. +export { lazy, preloadAll, ChunkCollectorContext } from 'vite-preload'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c427545a..b57ace241 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -305,7 +305,7 @@ importers: devDependencies: babel-loader: specifier: ^9.1.2 - version: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)) html-webpack-plugin: specifier: ^5.3.2 version: 5.6.2(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)) @@ -405,13 +405,13 @@ importers: version: 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) '@storybook/addon-webpack5-compiler-babel': specifier: ^3.0.3 - version: 3.0.3(webpack@5.95.0(@swc/core@1.7.36)) + version: 3.0.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) '@storybook/react': specifier: ^8.1.5 version: 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@storybook/react-webpack5': specifier: ^8.1.5 - version: 8.3.6(@swc/core@1.7.36)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) + version: 8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@types/react': specifier: ^18.2.3 version: 18.3.12 @@ -445,13 +445,13 @@ importers: version: link:../../test-utils '@storybook/addon-webpack5-compiler-babel': specifier: ^3.0.3 - version: 3.0.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + version: 3.0.3(webpack@5.95.0(@swc/core@1.7.36)) '@storybook/react': specifier: ^8.1.5 version: 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@storybook/react-webpack5': specifier: ^8.1.5 - version: 8.3.6(@swc/core@1.7.36)(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) + version: 8.3.6(@swc/core@1.7.36)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@types/react': specifier: ^18.2.3 version: 18.3.12 @@ -570,6 +570,90 @@ importers: specifier: workspace:* version: link:../../packages/sku + fixtures/vite-braid-design-system: + dependencies: + braid-design-system: + specifier: ^33.1.0 + version: 33.1.0(@types/react@18.3.12)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@sku-private/test-utils': + specifier: workspace:* + version: link:../../test-utils + '@types/react': + specifier: ^18.2.3 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.2.3 + version: 18.3.1 + '@vanilla-extract/css': + specifier: ^1.0.0 + version: 1.17.0(babel-plugin-macros@3.1.0) + sku: + specifier: workspace:* + version: link:../../packages/sku + + fixtures/vite-multiple-routes: + dependencies: + '@vanilla-extract/css': + specifier: ^1.0.0 + version: 1.16.0(babel-plugin-macros@3.1.0) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + react-router: + specifier: 6.28.1 + version: 6.28.1(react@18.3.1) + react-router-dom: + specifier: ^6.28.1 + version: 6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@sku-private/test-utils': + specifier: workspace:* + version: link:../../test-utils + '@testing-library/react': + specifier: ^14.0.0 + version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + dedent: + specifier: ^1.5.1 + version: 1.5.3(babel-plugin-macros@3.1.0) + sku: + specifier: workspace:* + version: link:../../packages/sku + + fixtures/vite-source-maps: + dependencies: + '@vitejs/plugin-legacy': + specifier: ^5.4.2 + version: 5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@22.7.7)(terser@5.36.0)) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@5.4.11(@types/node@22.7.7)(terser@5.36.0)) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@sku-private/test-utils': + specifier: workspace:* + version: link:../../test-utils + dedent: + specifier: ^1.5.1 + version: 1.5.3(babel-plugin-macros@3.1.0) + sku: + specifier: workspace:* + version: link:../../packages/sku + packages/sku: dependencies: '@babel/core': @@ -613,13 +697,13 @@ importers: version: 5.16.5(@loadable/component@5.16.4(react@18.3.1))(react@18.3.1) '@loadable/webpack-plugin': specifier: ^5.14.0 - version: 5.15.2(webpack@5.95.0(@swc/core@1.7.36)) + version: 5.15.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) '@pmmmwh/react-refresh-webpack-plugin': specifier: ^0.5.15 - version: 0.5.15(@types/webpack@4.41.40)(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)))(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.36)) + version: 0.5.15(@types/webpack@4.41.40)(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)))(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) '@storybook/react-webpack5': specifier: ^7.0.0 || ^8.0.0 - version: 8.3.6(@swc/core@1.7.36)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) + version: 8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@swc/core': specifier: ^1.6.13 version: 1.7.36 @@ -638,12 +722,24 @@ importers: '@types/loadable__server': specifier: ^5.12.10 version: 5.12.11 + '@vanilla-extract/integration': + specifier: ^7.1.12 + version: 7.1.12(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) '@vanilla-extract/jest-transform': specifier: ^1.1.0 version: 1.1.10(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) + '@vanilla-extract/vite-plugin': + specifier: ^4.0.19 + version: 4.0.19(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0)) '@vanilla-extract/webpack-plugin': specifier: ^2.2.0 - version: 2.3.14(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)(webpack@5.95.0(@swc/core@1.7.36)) + version: 2.3.14(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) + '@vitejs/plugin-legacy': + specifier: ^5.4.2 + version: 5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0)) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0)) '@vocab/core': specifier: ^1.6.2 version: 1.6.2 @@ -655,7 +751,7 @@ importers: version: 1.0.1 '@vocab/webpack': specifier: ^1.2.9 - version: 1.2.9(webpack@5.95.0(@swc/core@1.7.36)) + version: 1.2.9(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) '@zendesk/babel-plugin-react-displayname': specifier: https://codeload.github.com/zendesk/babel-plugin-react-displayname/tar.gz/7a837f2 version: https://codeload.github.com/zendesk/babel-plugin-react-displayname/tar.gz/7a837f2(@babel/core@7.25.8)(@babel/preset-react@7.25.7(@babel/core@7.25.8)) @@ -667,7 +763,7 @@ importers: version: 29.7.0(@babel/core@7.25.8) babel-loader: specifier: ^9.1.2 - version: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)) + version: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) babel-plugin-macros: specifier: ^3.1.0 version: 3.1.0 @@ -695,12 +791,15 @@ importers: commander: specifier: ^12.1.0 version: 12.1.0 + compression: + specifier: ^1.7.5 + version: 1.7.5 cross-spawn: specifier: ^7.0.3 version: 7.0.6 css-loader: specifier: ^6.7.1 - version: 6.11.0(webpack@5.95.0(@swc/core@1.7.36)) + version: 6.11.0(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) cssnano: specifier: ^6.0.0 version: 6.1.2(postcss@8.4.47) @@ -725,6 +824,9 @@ importers: env-ci: specifier: ^11.1.0 version: 11.1.0 + esbuild: + specifier: ^0.21.5 + version: 0.21.5 escape-string-regexp: specifier: ^4.0.0 version: 4.0.0 @@ -741,8 +843,8 @@ importers: specifier: ^2.1.2 version: 2.1.2 express: - specifier: ^4.16.3 - version: 4.21.1 + specifier: ^4.19.2 + version: 4.19.2 fastest-validator: specifier: ^1.9.0 version: 1.19.0 @@ -760,7 +862,7 @@ importers: version: 1.4.0 html-render-webpack-plugin: specifier: ^3.0.1 - version: 3.0.2(express@4.21.1) + version: 3.0.2(express@4.19.2) indent-string: specifier: ^4.0.0 version: 4.0.0 @@ -784,7 +886,7 @@ importers: version: 0.3.5 mini-css-extract-plugin: specifier: ^2.6.1 - version: 2.9.1(webpack@5.95.0(@swc/core@1.7.36)) + version: 2.9.1(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) nano-memoize: specifier: ^3.0.16 version: 3.0.16 @@ -808,7 +910,7 @@ importers: version: 8.4.47 postcss-loader: specifier: ^8.0.0 - version: 8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)) + version: 8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) prettier: specifier: ^3.4.1 version: 3.4.1 @@ -818,6 +920,9 @@ importers: react-refresh: specifier: ^0.14.0 version: 0.14.2 + resolve-from: + specifier: ^5.0.0 + version: 5.0.0 selfsigned: specifier: ^2.1.1 version: 2.4.1 @@ -830,24 +935,36 @@ importers: serve-handler: specifier: ^6.1.3 version: 6.1.6 + serve-static: + specifier: ^1.16.2 + version: 1.16.2 + sirv: + specifier: ^3.0.0 + version: 3.0.0 svgo-loader: specifier: ^4.0.0 version: 4.0.0 terser-webpack-plugin: specifier: ^5.1.4 - version: 5.3.10(@swc/core@1.7.36)(webpack@5.95.0(@swc/core@1.7.36)) + version: 5.3.10(@swc/core@1.7.36)(esbuild@0.21.5)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) typescript: specifier: ~5.6.0 version: 5.6.3 + vite: + specifier: ^5.4.11 + version: 5.4.11(@types/node@18.19.57)(terser@5.36.0) + vite-preload: + specifier: ^1.0.3 + version: 1.0.3(react@18.3.1)(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0)) webpack: specifier: ^5.52.0 - version: 5.95.0(@swc/core@1.7.36) + version: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) webpack-bundle-analyzer: specifier: ^4.6.1 version: 4.10.2 webpack-dev-server: specifier: ^5.0.2 - version: 5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)) + version: 5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) webpack-merge: specifier: ^5.8.0 version: 5.10.0 @@ -864,6 +981,9 @@ importers: '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 + '@types/compression': + specifier: ^1.7.5 + version: 1.7.5 '@types/cross-spawn': specifier: ^6.0.3 version: 6.0.6 @@ -909,12 +1029,15 @@ importers: '@types/serve-handler': specifier: ^6.1.4 version: 6.1.4 + '@types/serve-static': + specifier: ^1.15.7 + version: 1.15.7 '@types/webpack-bundle-analyzer': specifier: ^4.7.0 - version: 4.7.0(@swc/core@1.7.36) + version: 4.7.0(@swc/core@1.7.36)(esbuild@0.21.5) '@types/webpack-node-externals': specifier: ^3.0.4 - version: 3.0.4(@swc/core@1.7.36) + version: 3.0.4(@swc/core@1.7.36)(esbuild@0.21.5) '@types/wrap-ansi': specifier: ^3.0.0 version: 3.0.0 @@ -1020,7 +1143,7 @@ importers: version: link:../fixtures/assertion-removal '@sku-fixtures/braid-design-system': specifier: workspace:* - version: link:../fixtures/braid-design-system + version: link:../fixtures/vite-braid-design-system '@sku-fixtures/configure': specifier: workspace:* version: link:../fixtures/configure @@ -1107,22 +1230,42 @@ packages: resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.8': resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.3': + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.8': resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.25.7': resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.3': + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.7': resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': resolution: {integrity: sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==} engines: {node: '>=6.9.0'} @@ -1135,18 +1278,34 @@ packages: resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.7': resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.25.7': resolution: {integrity: sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.26.3': + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-define-polyfill-provider@0.6.2': resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: @@ -1156,36 +1315,70 @@ packages: resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.7': resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.25.7': resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.25.7': resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.7': resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.25.7': resolution: {integrity: sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.7': resolution: {integrity: sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-simple-access@7.25.7': resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} engines: {node: '>=6.9.0'} @@ -1194,6 +1387,10 @@ packages: resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==} engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} @@ -1206,14 +1403,26 @@ packages: resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.7': resolution: {integrity: sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.7': resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.25.7': resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} @@ -1223,36 +1432,71 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7': resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7': resolution: {integrity: sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7': resolution: {integrity: sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7': resolution: {integrity: sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7': resolution: {integrity: sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -1291,12 +1535,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.25.7': resolution: {integrity: sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1373,228 +1629,456 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.25.8': resolution: {integrity: sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.25.7': resolution: {integrity: sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.25.7': resolution: {integrity: sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.25.7': resolution: {integrity: sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.25.7': resolution: {integrity: sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-static-block@7.25.8': resolution: {integrity: sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + '@babel/plugin-transform-classes@7.25.7': resolution: {integrity: sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.25.7': resolution: {integrity: sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.25.7': resolution: {integrity: sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.25.7': resolution: {integrity: sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.25.7': resolution: {integrity: sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7': resolution: {integrity: sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-dynamic-import@7.25.8': resolution: {integrity: sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.25.7': resolution: {integrity: sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.25.8': resolution: {integrity: sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.25.7': resolution: {integrity: sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.25.7': resolution: {integrity: sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.25.8': resolution: {integrity: sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.25.7': resolution: {integrity: sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.25.8': resolution: {integrity: sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.25.7': resolution: {integrity: sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.25.7': resolution: {integrity: sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.25.7': resolution: {integrity: sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.25.7': resolution: {integrity: sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.25.7': resolution: {integrity: sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7': resolution: {integrity: sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-new-target@7.25.7': resolution: {integrity: sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.25.8': resolution: {integrity: sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.25.8': resolution: {integrity: sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.25.8': resolution: {integrity: sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.25.7': resolution: {integrity: sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.25.8': resolution: {integrity: sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.25.8': resolution: {integrity: sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.25.7': resolution: {integrity: sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.25.7': resolution: {integrity: sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.25.8': resolution: {integrity: sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.25.7': resolution: {integrity: sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-constant-elements@7.25.7': resolution: {integrity: sha512-/qXt69Em8HgsjCLu7G3zdIQn7A2QwmYND7Wa0LTp09Na+Zn8L5d0A7wSXrKi18TJRc/Q5S1i1De/SU1LzVkSvA==} engines: {node: '>=6.9.0'} @@ -1619,6 +2103,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.7': resolution: {integrity: sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==} engines: {node: '>=6.9.0'} @@ -1637,12 +2133,30 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-reserved-words@7.25.7': resolution: {integrity: sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-runtime@7.25.7': resolution: {integrity: sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==} engines: {node: '>=6.9.0'} @@ -1655,30 +2169,60 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.25.7': resolution: {integrity: sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.25.7': resolution: {integrity: sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.25.7': resolution: {integrity: sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.25.7': resolution: {integrity: sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.25.7': resolution: {integrity: sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==} engines: {node: '>=6.9.0'} @@ -1691,30 +2235,60 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.25.7': resolution: {integrity: sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.25.7': resolution: {integrity: sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-sets-regex@7.25.7': resolution: {integrity: sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/preset-env@7.25.8': resolution: {integrity: sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: @@ -1740,14 +2314,26 @@ packages: resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.7': resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.4': + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + engines: {node: '>=6.9.0'} + '@babel/types@7.26.0': resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} + '@base2/pretty-print-object@1.0.1': resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -1840,117 +2426,57 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} + engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1960,162 +2486,78 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2431,6 +2873,10 @@ packages: resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} engines: {node: '>=14.0.0'} + '@remix-run/router@1.21.0': + resolution: {integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==} + engines: {node: '>=14.0.0'} + '@rollup/rollup-android-arm-eabi@4.24.0': resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} cpu: [arm] @@ -2803,6 +3249,9 @@ packages: '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + '@types/compression@1.7.5': + resolution: {integrity: sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==} + '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} @@ -3117,8 +3566,8 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vanilla-extract/babel-plugin-debug-ids@1.1.0': - resolution: {integrity: sha512-Zy9bKjaL2P5zsrFYQJ8IjWGlFODmZrpvFmjFE0Zv8om55Pz1JtpJtL6DvlxlWUxbVaP1HKCqsmEfFOZN8fX/ZQ==} + '@vanilla-extract/babel-plugin-debug-ids@1.2.0': + resolution: {integrity: sha512-z5nx2QBnOhvmlmBKeRX5sPVLz437wV30u+GJL+Hzj1rGiJYVNvgIIlzUpRNjVQ0MgAgiQIqIUbqPnmMc6HmDlQ==} '@vanilla-extract/css-utils@0.1.4': resolution: {integrity: sha512-3WRxMGa/VQaL32jZqRUpnnoVFSws5iPIUpQr+XlT4jXhtMeKYcA20rFK2k2Amkg04sqrO84A8hNMeABWZQesEg==} @@ -3126,11 +3575,14 @@ packages: '@vanilla-extract/css@1.16.0': resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + '@vanilla-extract/css@1.17.0': + resolution: {integrity: sha512-W6FqVFDD+C71ZlKsuj0MxOXSvHb1tvQ9h/+79aYfi097wLsALrnnBzd0by8C///iurrpQ3S+SH74lXd7Lr9MvA==} + '@vanilla-extract/dynamic@2.1.2': resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} - '@vanilla-extract/integration@7.1.10': - resolution: {integrity: sha512-EXe8l0u51ta2H78kksf7gJENkdYnvDW9c+18FUvKfxtjHmpc4KthXnUTuALt5k9wbAjfFakIR4IsqzvOP43cDQ==} + '@vanilla-extract/integration@7.1.12': + resolution: {integrity: sha512-71HFjnfL7qXM3hqyk7z9c8zrudfO9Sut6IhSmH8IKwmLk/tIMFIL86L6nYpItfUFUa/mrER6YUQPp/SfwjRvkw==} '@vanilla-extract/jest-transform@1.1.10': resolution: {integrity: sha512-Chn6QD4zPD2sbAOepiRzV9KrEkpMD+0s9h5BOeUtyHGy/n8Et0bwy7UwFsbrVcHdpuYHIBhdUJ7Bsr46zqxKHg==} @@ -3143,11 +3595,29 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.0.0 + '@vanilla-extract/vite-plugin@4.0.19': + resolution: {integrity: sha512-NtE/sAIesCAu+6JHlanLgmfDJn/cqG8dfElfh5n1PvG2LTSMVMQhVbDefxcVhGjw1lt5QbG+u3dpZMY7KPwJhw==} + peerDependencies: + vite: ^4.0.3 || ^5.0.0 + '@vanilla-extract/webpack-plugin@2.3.14': resolution: {integrity: sha512-9zYi9YLNa6a+eV/g4puU99HA2ieU9EWnuR3xiCMS7BtB/jO4Dai6TUUyU1N8sGt3K39PUfolM1zzepjWTHG3nw==} peerDependencies: webpack: ^4.30.0 || ^5.20.2 + '@vitejs/plugin-legacy@5.4.3': + resolution: {integrity: sha512-wsyXK9mascyplcqvww1gA1xYiy29iRHfyciw+a0t7qRNdzX6PdfSWmOoCi74epr87DujM+5J+rnnSv+4PazqVg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + '@vocab/core@1.6.2': resolution: {integrity: sha512-IkMim1fTeUuOwPG0+wUnxrjis7peha2wHv74GjNw2hR4CFs9sYsdbueAuD+Z2n4zU0rqCqbpt1o4zJeqXXZf6A==} @@ -3620,6 +4090,10 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -3657,11 +4131,23 @@ packages: browserslist-config-seek@3.2.0: resolution: {integrity: sha512-bModvV9yhT2MA6MXhMGHiRW3vbBs79XxpIYKTg5qJZQZMZc5tbnOmkwMwazowUTzWlQhzQwZAhw/ReS948EtWg==} + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + browserslist@4.24.0: resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3723,6 +4209,9 @@ packages: caniuse-lite@1.0.30001669: resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -3934,8 +4423,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + compression@1.7.5: + resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} engines: {node: '>= 0.8.0'} concat-map@0.0.1: @@ -3987,6 +4476,10 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} @@ -3997,6 +4490,9 @@ packages: core-js-pure@3.38.1: resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -4422,6 +4918,9 @@ packages: electron-to-chromium@1.5.41: resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} + electron-to-chromium@1.5.76: + resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + email-addresses@3.1.0: resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} @@ -4544,11 +5043,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -4798,6 +5292,10 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + express@4.21.1: resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} engines: {node: '>= 0.10.0'} @@ -4892,6 +5390,10 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + finalhandler@1.3.1: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} @@ -6269,6 +6771,9 @@ packages: magic-string@0.30.12: resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -6335,6 +6840,13 @@ packages: memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -6480,6 +6992,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -6526,6 +7042,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -6861,6 +7380,9 @@ packages: path-to-regexp@0.1.10: resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} @@ -7158,6 +7680,10 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -7256,6 +7782,10 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -7348,6 +7878,9 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-lazy-with-preload@2.2.1: + resolution: {integrity: sha512-ONSb8gizLE5jFpdHAclZ6EAAKuFX2JydnFXPPPjoUImZlLjGtKzyBS8SJgJq7CpLgsGKh9QCZdugJyEEOVC16Q==} + react-popper-tooltip@4.4.2: resolution: {integrity: sha512-y48r0mpzysRTZAIh8m2kpZ8S1YPNqGtQPDrlXYSGvDS1c1GpG/NUXbsbIdfbhXfmSaRJuTcaT6N1q3CKuHRVbg==} peerDependencies: @@ -7392,12 +7925,25 @@ packages: react: '>=16.8' react-dom: '>=16.8' + react-router-dom@6.28.1: + resolution: {integrity: sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + react-router@6.27.0: resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' + react-router@6.28.1: + resolution: {integrity: sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-side-effect@2.1.2: resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} peerDependencies: @@ -7481,6 +8027,10 @@ packages: resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} engines: {node: '>=4'} + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + registry-auth-token@4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} engines: {node: '>=6.0.0'} @@ -7500,6 +8050,10 @@ packages: resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} hasBin: true + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} @@ -7682,6 +8236,10 @@ packages: engines: {node: '>=10'} hasBin: true + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -7699,6 +8257,10 @@ packages: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -7767,6 +8329,10 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -8062,6 +8628,9 @@ packages: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -8450,8 +9019,14 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.4.9: - resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + vite-preload@1.0.3: + resolution: {integrity: sha512-bc5wnIGZUlWmBvMQ9INT5RlRcTR9/zgrgXlAlVOIVCR1e1iQiWXcpQtQ47jJ1YNOJ4u1LRlWkz7hBXXoOSs7Fg==} + peerDependencies: + react: ^18 || ^19.0.0-rc || ^19 + vite: ^5 || ^6.0.0-beta || ^6 + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8794,8 +9369,16 @@ snapshots: '@babel/highlight': 7.25.7 picocolors: 1.1.1 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.25.8': {} + '@babel/compat-data@7.26.3': {} + '@babel/core@7.25.8': dependencies: '@ampproject/remapping': 2.3.0 @@ -8816,6 +9399,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.25.7': dependencies: '@babel/types': 7.26.0 @@ -8823,14 +9426,26 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 + '@babel/generator@7.26.3': + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.25.7': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.3 '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -8847,6 +9462,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.3 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -8855,7 +9478,20 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.7 '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/traverse': 7.26.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.4 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8867,6 +9503,20 @@ snapshots: regexpu-core: 6.1.1 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.7 + regexpu-core: 6.1.1 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -8878,10 +9528,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + '@babel/helper-member-expression-to-functions@7.25.7': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -8892,6 +9560,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -8902,18 +9577,42 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.25.7': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.3 '@babel/helper-plugin-utils@7.25.7': {} + '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-annotate-as-pure': 7.25.7 '@babel/helper-wrap-function': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color @@ -8922,21 +9621,37 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-member-expression-to-functions': 7.25.7 '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.25.7': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.7': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -8946,11 +9661,21 @@ snapshots: '@babel/helper-validator-option@7.25.7': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-wrap-function@7.25.7': dependencies: - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.26.0 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -8959,6 +9684,11 @@ snapshots: '@babel/template': 7.25.7 '@babel/types': 7.26.0 + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + '@babel/highlight@7.25.7': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -8970,6 +9700,10 @@ snapshots: dependencies: '@babel/types': 7.26.0 + '@babel/parser@7.26.3': + dependencies: + '@babel/types': 7.26.3 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -8978,16 +9712,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -8997,6 +9749,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9005,29 +9766,41 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.8)': dependencies: @@ -9039,20 +9812,30 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': dependencies: @@ -9062,47 +9845,52 @@ snapshots: '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.8)': dependencies: @@ -9110,11 +9898,22 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9124,6 +9923,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9133,16 +9941,35 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9151,6 +9978,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-class-static-block@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9159,6 +9994,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9171,39 +10014,84 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 '@babel/template': 7.25.7 + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-dynamic-import@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9212,11 +10100,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-export-namespace-from@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9225,6 +10123,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9234,26 +10140,55 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-json-strings@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-logical-assignment-operators@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9262,6 +10197,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9271,6 +10214,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9281,6 +10232,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9289,27 +10250,56 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-nullish-coalescing-operator@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-numeric-separator@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-object-rest-spread@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9317,6 +10307,13 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9325,11 +10322,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-optional-catch-binding@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9338,11 +10348,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9351,6 +10374,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9360,11 +10391,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-react-constant-elements@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9388,6 +10433,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9411,11 +10466,28 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-runtime@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9433,6 +10505,11 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9441,21 +10518,44 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9472,24 +10572,47 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/preset-env@7.25.8(@babel/core@7.25.8)': dependencies: '@babel/compat-data': 7.25.8 @@ -9564,6 +10687,81 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.38.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9571,6 +10769,13 @@ snapshots: '@babel/types': 7.26.0 esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/types': 7.26.0 + esutils: 2.0.3 + '@babel/preset-react@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -9604,6 +10809,12 @@ snapshots: '@babel/parser': 7.25.8 '@babel/types': 7.26.0 + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@babel/traverse@7.25.7': dependencies: '@babel/code-frame': 7.25.7 @@ -9616,11 +10827,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.26.4': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.26.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.26.3': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@base2/pretty-print-object@1.0.1': {} '@bcoe/v8-coverage@0.2.3': {} @@ -9631,10 +10859,10 @@ snapshots: '@capsizecss/metrics@3.3.0': {} - '@capsizecss/vanilla-extract@2.0.0(@vanilla-extract/css@1.16.0(babel-plugin-macros@3.1.0))': + '@capsizecss/vanilla-extract@2.0.0(@vanilla-extract/css@1.17.0(babel-plugin-macros@3.1.0))': dependencies: '@capsizecss/core': 4.1.2 - '@vanilla-extract/css': 1.16.0(babel-plugin-macros@3.1.0) + '@vanilla-extract/css': 1.17.0(babel-plugin-macros@3.1.0) '@changesets/apply-release-plan@7.0.5': dependencies: @@ -9798,144 +11026,72 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': - optional: true - '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': - optional: true - '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': - optional: true - - '@esbuild/openbsd-arm64@0.23.1': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': - optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.4.1))': dependencies: eslint: 9.15.0(jiti@2.4.1) @@ -9950,7 +11106,7 @@ snapshots: '@eslint/config-array@0.19.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.7(supports-color@8.1.1) + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -9960,7 +11116,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@8.1.1) + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -10263,10 +11419,10 @@ snapshots: lodash: 4.17.21 react: 18.3.1 - '@loadable/webpack-plugin@5.15.2(webpack@5.95.0(@swc/core@1.7.36))': + '@loadable/webpack-plugin@5.15.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5))': dependencies: make-dir: 3.1.0 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) '@manypkg/find-root@1.1.0': dependencies: @@ -10306,7 +11462,7 @@ snapshots: '@pkgr/core@0.1.1': {} - '@pmmmwh/react-refresh-webpack-plugin@0.5.15(@types/webpack@4.41.40)(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)))(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.36))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(@types/webpack@4.41.40)(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)))(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5))': dependencies: ansi-html: 0.0.9 core-js-pure: 3.38.1 @@ -10316,11 +11472,11 @@ snapshots: react-refresh: 0.14.2 schema-utils: 4.2.0 source-map: 0.7.4 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) optionalDependencies: '@types/webpack': 4.41.40 type-fest: 2.19.0 - webpack-dev-server: 5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)) + webpack-dev-server: 5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) webpack-hot-middleware: 2.26.1 '@polka/url@1.0.0-next.28': {} @@ -10347,6 +11503,8 @@ snapshots: '@remix-run/router@1.20.0': {} + '@remix-run/router@1.21.0': {} + '@rollup/rollup-android-arm-eabi@4.24.0': optional: true @@ -10435,10 +11593,10 @@ snapshots: transitivePeerDependencies: - webpack-sources - '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1))': + '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5))': dependencies: '@babel/core': 7.25.8 - babel-loader: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + babel-loader: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) transitivePeerDependencies: - supports-color - webpack @@ -10472,7 +11630,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-webpack5@8.3.6(@swc/core@1.7.36)(esbuild@0.23.1)(storybook@8.3.6)(typescript@5.6.3)': + '@storybook/builder-webpack5@8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(storybook@8.3.6)(typescript@5.6.3)': dependencies: '@storybook/core-webpack': 8.3.6(storybook@8.3.6) '@types/node': 22.7.7 @@ -10481,25 +11639,25 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.1 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) es-module-lexer: 1.5.4 express: 4.21.1 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) fs-extra: 11.2.0 - html-webpack-plugin: 5.6.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + html-webpack-plugin: 5.6.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) magic-string: 0.30.12 path-browserify: 1.0.1 process: 0.11.10 semver: 7.6.3 storybook: 8.3.6 - style-loader: 3.3.4(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) - terser-webpack-plugin: 5.3.10(@swc/core@1.7.36)(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + style-loader: 3.3.4(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.36)(esbuild@0.21.5)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) - webpack-dev-middleware: 6.1.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) + webpack-dev-middleware: 6.1.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -10568,8 +11726,8 @@ snapshots: '@types/express': 4.17.21 better-opn: 3.0.2 browser-assert: 1.2.1 - esbuild: 0.23.1 - esbuild-register: 3.6.0(esbuild@0.23.1) + esbuild: 0.21.5 + esbuild-register: 3.6.0(esbuild@0.21.5) express: 4.21.1 jsdoc-type-pratt-parser: 4.1.0 process: 0.11.10 @@ -10604,11 +11762,11 @@ snapshots: dependencies: storybook: 8.3.6 - '@storybook/preset-react-webpack@8.3.6(@swc/core@1.7.36)(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)': + '@storybook/preset-react-webpack@8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)': dependencies: '@storybook/core-webpack': 8.3.6(storybook@8.3.6) '@storybook/react': 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) '@types/node': 22.7.7 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -10621,7 +11779,7 @@ snapshots: semver: 7.6.3 storybook: 8.3.6 tsconfig-paths: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -10664,7 +11822,7 @@ snapshots: dependencies: storybook: 8.3.6 - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5))': dependencies: debug: 4.4.0 endent: 2.1.0 @@ -10674,7 +11832,7 @@ snapshots: react-docgen-typescript: 2.2.2(typescript@5.6.3) tslib: 2.8.1 typescript: 5.6.3 - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) transitivePeerDependencies: - supports-color @@ -10698,10 +11856,10 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.3.6 - '@storybook/react-webpack5@8.3.6(@swc/core@1.7.36)(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)': + '@storybook/react-webpack5@8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)': dependencies: - '@storybook/builder-webpack5': 8.3.6(@swc/core@1.7.36)(esbuild@0.23.1)(storybook@8.3.6)(typescript@5.6.3) - '@storybook/preset-react-webpack': 8.3.6(@swc/core@1.7.36)(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/builder-webpack5': 8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/preset-react-webpack': 8.3.6(@swc/core@1.7.36)(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@storybook/react': 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) '@types/node': 22.7.7 react: 18.3.1 @@ -10899,6 +12057,10 @@ snapshots: dependencies: '@types/node': 18.19.57 + '@types/compression@1.7.5': + dependencies: + '@types/express': 4.17.21 + '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.0 @@ -11135,21 +12297,21 @@ snapshots: dependencies: '@types/node': 18.19.57 - '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.7.36)': + '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.7.36)(esbuild@0.21.5)': dependencies: '@types/node': 18.19.57 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack-cli - '@types/webpack-node-externals@3.0.4(@swc/core@1.7.36)': + '@types/webpack-node-externals@3.0.4(@swc/core@1.7.36)(esbuild@0.21.5)': dependencies: '@types/node': 18.19.57 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) transitivePeerDependencies: - '@swc/core' - esbuild @@ -11276,9 +12438,9 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vanilla-extract/babel-plugin-debug-ids@1.1.0': + '@vanilla-extract/babel-plugin-debug-ids@1.2.0': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 transitivePeerDependencies: - supports-color @@ -11301,23 +12463,40 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/dynamic@2.1.2': + '@vanilla-extract/css@1.17.0(babel-plugin-macros@3.1.0)': dependencies: + '@emotion/hash': 0.9.2 '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3(babel-plugin-macros@3.1.0) + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros - '@vanilla-extract/integration@7.1.10(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)': + '@vanilla-extract/dynamic@2.1.2': dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.8) - '@vanilla-extract/babel-plugin-debug-ids': 1.1.0 - '@vanilla-extract/css': 1.16.0(babel-plugin-macros@3.1.0) + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/integration@7.1.12(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.0) + '@vanilla-extract/babel-plugin-debug-ids': 1.2.0 + '@vanilla-extract/css': 1.17.0(babel-plugin-macros@3.1.0) dedent: 1.5.3(babel-plugin-macros@3.1.0) - esbuild: 0.23.1 + esbuild: 0.21.5 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 mlly: 1.7.2 - vite: 5.4.9(@types/node@18.19.57)(terser@5.36.0) + vite: 5.4.11(@types/node@18.19.57)(terser@5.36.0) vite-node: 1.6.0(@types/node@18.19.57)(terser@5.36.0) transitivePeerDependencies: - '@types/node' @@ -11333,8 +12512,8 @@ snapshots: '@vanilla-extract/jest-transform@1.1.10(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)': dependencies: - '@vanilla-extract/integration': 7.1.10(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) - esbuild: 0.23.1 + '@vanilla-extract/integration': 7.1.12(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) + esbuild: 0.21.5 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -11349,17 +12528,33 @@ snapshots: '@vanilla-extract/private@1.0.6': {} - '@vanilla-extract/sprinkles@1.6.3(@vanilla-extract/css@1.16.0(babel-plugin-macros@3.1.0))': + '@vanilla-extract/sprinkles@1.6.3(@vanilla-extract/css@1.17.0(babel-plugin-macros@3.1.0))': + dependencies: + '@vanilla-extract/css': 1.17.0(babel-plugin-macros@3.1.0) + + '@vanilla-extract/vite-plugin@4.0.19(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0))': dependencies: - '@vanilla-extract/css': 1.16.0(babel-plugin-macros@3.1.0) + '@vanilla-extract/integration': 7.1.12(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) + vite: 5.4.11(@types/node@18.19.57)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser - '@vanilla-extract/webpack-plugin@2.3.14(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)(webpack@5.95.0(@swc/core@1.7.36))': + '@vanilla-extract/webpack-plugin@2.3.14(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5))': dependencies: - '@vanilla-extract/integration': 7.1.10(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) + '@vanilla-extract/integration': 7.1.12(@types/node@18.19.57)(babel-plugin-macros@3.1.0)(terser@5.36.0) debug: 4.3.7(supports-color@8.1.1) loader-utils: 2.0.4 picocolors: 1.1.1 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -11372,6 +12567,58 @@ snapshots: - supports-color - terser + '@vitejs/plugin-legacy@5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + browserslist: 4.24.3 + browserslist-to-esbuild: 2.1.1(browserslist@4.24.3) + core-js: 3.39.0 + magic-string: 0.30.17 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.36.0 + vite: 5.4.11(@types/node@18.19.57)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-legacy@5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@22.7.7)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + browserslist: 4.24.3 + browserslist-to-esbuild: 2.1.1(browserslist@4.24.3) + core-js: 3.39.0 + magic-string: 0.30.17 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.36.0 + vite: 5.4.11(@types/node@22.7.7)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.11(@types/node@18.19.57)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@22.7.7)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.11(@types/node@22.7.7)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + '@vocab/core@1.6.2': dependencies: '@formatjs/icu-messageformat-parser': 2.7.10 @@ -11405,6 +12652,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@vocab/webpack@1.2.9(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5))': + dependencies: + '@vocab/core': 1.6.2 + cjs-module-lexer: 1.4.1 + debug: 4.3.7(supports-color@8.1.1) + es-module-lexer: 1.5.4 + picocolors: 1.1.1 + virtual-resource-loader: 1.0.1 + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) + transitivePeerDependencies: + - supports-color + '@vocab/webpack@1.2.9(webpack@5.95.0(@swc/core@1.7.36))': dependencies: '@vocab/core': 1.6.2 @@ -11802,26 +13061,26 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: '@babel/core': 7.25.8 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) - babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): + babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)): dependencies: '@babel/core': 7.25.8 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.36) - babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.36)): + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4) babel-plugin-istanbul@6.1.1: dependencies: @@ -11836,7 +13095,7 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.7 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 @@ -11863,6 +13122,15 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): + dependencies: + '@babel/compat-data': 7.25.8 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.8): dependencies: '@babel/core': 7.25.8 @@ -11871,6 +13139,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.38.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.8): dependencies: '@babel/core': 7.25.8 @@ -11878,6 +13154,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + babel-plugin-transform-react-remove-prop-types@0.4.24: {} babel-plugin-transform-remove-imports@1.8.0(@babel/core@7.25.8): @@ -11960,6 +13243,23 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + body-parser@1.20.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + body-parser@1.20.3: dependencies: bytes: 3.1.2 @@ -12012,11 +13312,11 @@ snapshots: dependencies: '@capsizecss/core': 4.1.2 '@capsizecss/metrics': 3.3.0 - '@capsizecss/vanilla-extract': 2.0.0(@vanilla-extract/css@1.16.0(babel-plugin-macros@3.1.0)) - '@vanilla-extract/css': 1.16.0(babel-plugin-macros@3.1.0) + '@capsizecss/vanilla-extract': 2.0.0(@vanilla-extract/css@1.17.0(babel-plugin-macros@3.1.0)) + '@vanilla-extract/css': 1.17.0(babel-plugin-macros@3.1.0) '@vanilla-extract/css-utils': 0.1.4 '@vanilla-extract/dynamic': 2.1.2 - '@vanilla-extract/sprinkles': 1.6.3(@vanilla-extract/css@1.16.0(babel-plugin-macros@3.1.0)) + '@vanilla-extract/sprinkles': 1.6.3(@vanilla-extract/css@1.17.0(babel-plugin-macros@3.1.0)) assert: 2.1.0 autosuggest-highlight: 3.3.4 clsx: 2.1.1 @@ -12043,6 +13343,11 @@ snapshots: browserslist-config-seek@3.2.0: {} + browserslist-to-esbuild@2.1.1(browserslist@4.24.3): + dependencies: + browserslist: 4.24.3 + meow: 13.2.0 + browserslist@4.24.0: dependencies: caniuse-lite: 1.0.30001669 @@ -12050,6 +13355,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.0) + browserslist@4.24.3: + dependencies: + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.76 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -12106,13 +13418,15 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 caniuse-lite: 1.0.30001669 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 caniuse-lite@1.0.30001669: {} + caniuse-lite@1.0.30001690: {} + capital-case@1.0.4: dependencies: no-case: 3.0.4 @@ -12313,14 +13627,14 @@ snapshots: dependencies: mime-db: 1.53.0 - compression@1.7.4: + compression@1.7.5: dependencies: - accepts: 1.3.8 - bytes: 3.0.0 + bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 + negotiator: 0.6.4 on-headers: 1.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -12373,6 +13687,8 @@ snapshots: cookie-signature@1.0.6: {} + cookie@0.6.0: {} + cookie@0.7.1: {} core-js-compat@3.38.1: @@ -12381,6 +13697,8 @@ snapshots: core-js-pure@3.38.1: {} + core-js@3.39.0: {} + core-util-is@1.0.3: {} cosmiconfig@7.1.0: @@ -12449,7 +13767,7 @@ snapshots: dependencies: postcss: 8.4.47 - css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -12460,7 +13778,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.36)): dependencies: @@ -12788,7 +14106,7 @@ snapshots: docsify-server-renderer@4.13.1: dependencies: - debug: 4.3.7(supports-color@8.1.1) + debug: 4.4.0 docsify: 4.13.1 node-fetch: 2.7.0 resolve-pathname: 3.0.0 @@ -12891,6 +14209,8 @@ snapshots: electron-to-chromium@1.5.41: {} + electron-to-chromium@1.5.76: {} + email-addresses@3.1.0: {} emittery@0.13.1: {} @@ -13058,10 +14378,10 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild-register@3.6.0(esbuild@0.23.1): + esbuild-register@3.6.0(esbuild@0.21.5): dependencies: debug: 4.4.0 - esbuild: 0.23.1 + esbuild: 0.21.5 transitivePeerDependencies: - supports-color @@ -13091,33 +14411,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - escalade@3.2.0: {} escape-goat@2.1.1: {} @@ -13207,7 +14500,7 @@ snapshots: eslint-plugin-import-x@4.2.1(eslint@9.15.0(jiti@2.4.1))(typescript@5.6.3): dependencies: '@typescript-eslint/utils': 8.15.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.6.3) - debug: 4.3.7(supports-color@8.1.1) + debug: 4.4.0 doctrine: 3.0.0 eslint: 9.15.0(jiti@2.4.1) eslint-import-resolver-node: 0.3.9 @@ -13464,6 +14757,42 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + express@4.21.1: dependencies: accepts: 1.3.8 @@ -13594,6 +14923,18 @@ snapshots: transitivePeerDependencies: - supports-color + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + finalhandler@1.3.1: dependencies: debug: 2.6.9 @@ -13707,7 +15048,7 @@ snapshots: dependencies: for-in: 1.0.2 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: '@babel/code-frame': 7.25.7 chalk: 4.1.2 @@ -13722,7 +15063,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.6.3 - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)): dependencies: @@ -14105,17 +15446,17 @@ snapshots: relateurl: 0.2.7 terser: 5.36.0 - html-render-webpack-plugin@3.0.2(express@4.21.1): + html-render-webpack-plugin@3.0.2(express@4.19.2): dependencies: chalk: 4.1.2 eval: 0.1.8 exception-formatter: 2.1.2 - express: 4.21.1 + express: 4.19.2 schema-utils: 3.3.0 html-tags@3.3.1: {} - html-webpack-plugin@5.6.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + html-webpack-plugin@5.6.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -14123,7 +15464,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) html-webpack-plugin@5.6.2(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): dependencies: @@ -14572,7 +15913,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.25.8 - '@babel/parser': 7.25.8 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -14581,8 +15922,8 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.25.8 - '@babel/parser': 7.25.8 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -14908,10 +16249,10 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.25.8 - '@babel/generator': 7.25.7 + '@babel/generator': 7.26.3 '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -15306,6 +16647,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + magicast@0.3.5: dependencies: '@babel/parser': 7.25.8 @@ -15367,6 +16712,10 @@ snapshots: dependencies: map-or-similar: 1.5.0 + meow@13.2.0: {} + + merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -15406,17 +16755,17 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.1(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): + mini-css-extract-plugin@2.9.1(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) - mini-css-extract-plugin@2.9.1(webpack@5.95.0(@swc/core@1.7.36)): + mini-css-extract-plugin@2.9.1(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -15474,6 +16823,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@0.6.4: {} + neo-async@2.6.2: {} nested-error-stacks@2.1.1: {} @@ -15522,6 +16873,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -15818,7 +17171,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -15874,6 +17227,8 @@ snapshots: path-to-regexp@0.1.10: {} + path-to-regexp@0.1.7: {} + path-to-regexp@3.3.0: {} path-to-regexp@6.3.0: {} @@ -15981,14 +17336,14 @@ snapshots: dependencies: postcss: 8.4.47 - postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)): + postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) transitivePeerDependencies: - typescript @@ -16137,6 +17492,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} prepend-http@2.0.0: {} @@ -16248,6 +17609,10 @@ snapshots: pure-rand@6.1.0: {} + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + qs@6.13.0: dependencies: side-channel: 1.0.6 @@ -16296,9 +17661,9 @@ snapshots: react-docgen@7.1.0: dependencies: - '@babel/core': 7.25.8 - '@babel/traverse': 7.25.7 - '@babel/types': 7.26.0 + '@babel/core': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 '@types/doctrine': 0.0.9 @@ -16353,6 +17718,8 @@ snapshots: react-is@18.3.1: {} + react-lazy-with-preload@2.2.1: {} + react-popper-tooltip@4.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.25.7 @@ -16397,11 +17764,23 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-router: 6.27.0(react@18.3.1) + react-router-dom@6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.21.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.28.1(react@18.3.1) + react-router@6.27.0(react@18.3.1): dependencies: '@remix-run/router': 1.20.0 react: 18.3.1 + react-router@6.28.1(react@18.3.1): + dependencies: + '@remix-run/router': 1.21.0 + react: 18.3.1 + react-side-effect@2.1.2(react@18.3.1): dependencies: react: 18.3.1 @@ -16515,6 +17894,15 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.0 + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + registry-auth-token@4.2.2: dependencies: rc: 1.2.8 @@ -16533,6 +17921,10 @@ snapshots: dependencies: jsesc: 3.0.2 + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + rehype-external-links@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -16729,6 +18121,24 @@ snapshots: semver@7.6.3: {} + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + send@0.19.0: dependencies: debug: 2.6.9 @@ -16779,6 +18189,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -16853,6 +18272,12 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + sisteransi@1.0.5: {} slash@3.0.0: {} @@ -16976,7 +18401,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.3.7(supports-color@8.1.1) + debug: 4.4.0 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -17141,9 +18566,9 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - style-loader@3.3.4(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + style-loader@3.3.4(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) style-loader@3.3.4(webpack@5.95.0(@swc/core@1.7.36)): dependencies: @@ -17151,7 +18576,7 @@ snapshots: stylehacks@6.1.1(postcss@8.4.47): dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 postcss: 8.4.47 postcss-selector-parser: 6.1.2 @@ -17192,6 +18617,8 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.8.1 + systemjs@6.15.1: {} + tapable@2.2.1: {} tar-fs@3.0.6: @@ -17214,17 +18641,17 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(@swc/core@1.7.36)(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.36)(esbuild@0.21.5)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) optionalDependencies: '@swc/core': 1.7.36 - esbuild: 0.23.1 + esbuild: 0.21.5 terser-webpack-plugin@5.3.10(@swc/core@1.7.36)(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): dependencies: @@ -17499,6 +18926,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.1(browserslist@4.24.3): + dependencies: + browserslist: 4.24.3 + escalade: 3.2.0 + picocolors: 1.1.1 + update-notifier@4.1.3: dependencies: boxen: 4.2.0 @@ -17601,7 +19034,7 @@ snapshots: debug: 4.4.0 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.9(@types/node@18.19.57)(terser@5.36.0) + vite: 5.4.11(@types/node@18.19.57)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -17613,16 +19046,38 @@ snapshots: - supports-color - terser - vite@5.4.9(@types/node@18.19.57)(terser@5.36.0): + vite-preload@1.0.3(react@18.3.1)(vite@5.4.11(@types/node@18.19.57)(terser@5.36.0)): + dependencies: + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + react: 18.3.1 + react-lazy-with-preload: 2.2.1 + vite: 5.4.11(@types/node@18.19.57)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + vite@5.4.11(@types/node@18.19.57)(terser@5.36.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.47 + postcss: 8.4.49 rollup: 4.24.0 optionalDependencies: '@types/node': 18.19.57 fsevents: 2.3.3 terser: 5.36.0 + vite@5.4.11(@types/node@22.7.7)(terser@5.36.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.7.7 + fsevents: 2.3.3 + terser: 5.36.0 + w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 @@ -17699,7 +19154,7 @@ snapshots: optionalDependencies: webpack-dev-server: 5.1.0(debug@4.3.7)(webpack-cli@5.1.4)(webpack@5.95.0) - webpack-dev-middleware@6.1.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)): + webpack-dev-middleware@6.1.3(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -17707,7 +19162,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.23.1) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) webpack-dev-middleware@6.1.3(webpack@5.95.0(@swc/core@1.7.36)): dependencies: @@ -17719,7 +19174,7 @@ snapshots: optionalDependencies: webpack: 5.95.0(@swc/core@1.7.36) - webpack-dev-middleware@7.4.2(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): + webpack-dev-middleware@7.4.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: colorette: 2.0.20 memfs: 4.14.0 @@ -17728,9 +19183,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) - webpack-dev-middleware@7.4.2(webpack@5.95.0(@swc/core@1.7.36)): + webpack-dev-middleware@7.4.2(webpack@5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4)): dependencies: colorette: 2.0.20 memfs: 4.14.0 @@ -17739,7 +19194,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(webpack-cli@5.1.4) webpack-dev-server@5.1.0(debug@4.3.7)(webpack-cli@5.1.4)(webpack@5.95.0): dependencies: @@ -17754,7 +19209,7 @@ snapshots: bonjour-service: 1.2.1 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.7.4 + compression: 1.7.5 connect-history-api-fallback: 2.0.0 express: 4.21.1 graceful-fs: 4.2.11 @@ -17780,7 +19235,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)): + webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -17793,7 +19248,7 @@ snapshots: bonjour-service: 1.2.1 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.7.4 + compression: 1.7.5 connect-history-api-fallback: 2.0.0 express: 4.21.1 graceful-fs: 4.2.11 @@ -17808,10 +19263,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.95.0(@swc/core@1.7.36)) + webpack-dev-middleware: 7.4.2(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) ws: 8.18.0 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.36) + webpack: 5.95.0(@swc/core@1.7.36)(esbuild@0.21.5) transitivePeerDependencies: - bufferutil - debug @@ -17868,7 +19323,7 @@ snapshots: - esbuild - uglify-js - webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1): + webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -17890,7 +19345,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.36)(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.36)(esbuild@0.21.5)(webpack@5.95.0(@swc/core@1.7.36)(esbuild@0.21.5)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: