diff --git a/.changeset/khaki-years-stare.md b/.changeset/khaki-years-stare.md new file mode 100644 index 000000000..d9ca4e6a8 --- /dev/null +++ b/.changeset/khaki-years-stare.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/css': minor +--- + +Provide current file scope as an additional argument to the adapter methods `registerClassName` and `registerComposition`. This is to allow fine-grained caching of registered class names and class compositions per file. diff --git a/.changeset/large-rabbits-grow.md b/.changeset/large-rabbits-grow.md new file mode 100644 index 000000000..ea9095165 --- /dev/null +++ b/.changeset/large-rabbits-grow.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/css': patch +--- + +Throw when `setAdapter` is called with a falsy value diff --git a/.changeset/silent-roses-impress.md b/.changeset/silent-roses-impress.md new file mode 100644 index 000000000..442bb5307 --- /dev/null +++ b/.changeset/silent-roses-impress.md @@ -0,0 +1,7 @@ +--- +'@vanilla-extract/esbuild-plugin': patch +'@vanilla-extract/integration': patch +'@vanilla-extract/jest-transform': patch +--- + +Bump esbuild to v0.17.6 diff --git a/.changeset/slow-carrots-itch.md b/.changeset/slow-carrots-itch.md new file mode 100644 index 000000000..28468c58a --- /dev/null +++ b/.changeset/slow-carrots-itch.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/integration': minor +--- + +Add `createCompiler` function for creating a compiler instance that can be re-used between builds. This is a low-level function intended for use by bundler plugins and, as such, is currently undocumented. Note that in order to use the new compiler you must also update `@vanilla-extract/css` to v1.10.0. diff --git a/.changeset/tender-snakes-occur.md b/.changeset/tender-snakes-occur.md new file mode 100644 index 000000000..c68b1940f --- /dev/null +++ b/.changeset/tender-snakes-occur.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/integration': minor +--- + +Add support for `onBeginFileScope` adapter lifecycle hook diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index a46018b7f..c14982a2e 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -35,8 +35,39 @@ jobs: - name: Lint run: pnpm lint - - name: Test - run: pnpm test:jest + - name: Unit Test + run: pnpm test:unit + windows-test: + strategy: + matrix: + # Blank string allows us to test against version in nvmrc file + # configured in 'Set up Node.js' down below. + node: [''] # Add 'lts/*' to this list when ready + name: Windows Tests (${{ (matrix.node && matrix.node != 'lts/*') && format('node {0}', matrix.node) || matrix.node || 'nvmrc' }}) + runs-on: windows-latest + env: + CI: true + steps: + - name: Checkout Repo + uses: actions/checkout@main + + - uses: pnpm/action-setup@v2 + + - name: Set up Node.js + uses: actions/setup-node@main + with: + node-version: ${{ matrix.node }} + node-version-file: ${{ matrix.node == '' && '.nvmrc' || '' }} + cache: 'pnpm' + + - name: Install Dependencies + run: pnpm i + + - name: Build + run: pnpm build + + - name: Unit Test + run: pnpm test:unit playwright: name: Playwright tests runs-on: macos-11 diff --git a/jest.config.js b/jest.config.js index 5c2aaf05f..fb5bb704a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,6 +4,6 @@ module.exports = { '\\.css\\.ts$': '@vanilla-extract/jest-transform', '\\.tsx?$': ['babel-jest', { configFile: './babel-jest.config.js' }], }, - testMatch: ['**/?(*.)+(test).[jt]s?(x)'], + testMatch: ['**/?(*.)+(test).[jt]s?(x)', '!**/*.vitest.test*'], testTimeout: 10000, }; diff --git a/package.json b/package.json index e9417c91a..1f818a37d 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "start": "pnpm start-fixture themed", "start-site": "pnpm --filter=site start", "build-site": "pnpm --filter=site build", + "test:unit": "pnpm test:jest && pnpm test:vitest", "test:jest": "jest", + "test:vitest": "vitest --watch=false", "test:playwright": "playwright test", "format": "prettier --write .", "lint": "manypkg check && prettier --check . && tsc", @@ -55,7 +57,8 @@ "rollup-plugin-dts": "^4.2.2", "rollup-plugin-node-externals": "^5.0.0", "ts-node": "^10.0.0", - "typescript": "^4.9.4" + "typescript": "^4.9.4", + "vitest": "^0.28.5" }, "packageManager": "pnpm@7.9.5", "pnpm": { diff --git a/packages/css/src/adapter.ts b/packages/css/src/adapter.ts index 67b99c706..646cee0e8 100644 --- a/packages/css/src/adapter.ts +++ b/packages/css/src/adapter.ts @@ -29,6 +29,10 @@ export const setAdapterIfNotSet = (newAdapter: Adapter) => { }; export const setAdapter = (newAdapter: Adapter) => { + if (!newAdapter) { + throw new Error('No adapter provided when calling "setAdapter"'); + } + hasConfiguredAdapter = true; adapterStack.push(newAdapter); @@ -58,6 +62,12 @@ export const markCompositionUsed: Adapter['markCompositionUsed'] = ( return currentAdapter().markCompositionUsed(...props); }; +export const onBeginFileScope: NonNullable = ( + ...props +) => { + return currentAdapter().onBeginFileScope?.(...props); +}; + export const onEndFileScope: Adapter['onEndFileScope'] = (...props) => { return currentAdapter().onEndFileScope(...props); }; diff --git a/packages/css/src/fileScope.ts b/packages/css/src/fileScope.ts index 324c33b40..cc04b1329 100644 --- a/packages/css/src/fileScope.ts +++ b/packages/css/src/fileScope.ts @@ -1,5 +1,5 @@ import outdent from 'outdent'; -import { onEndFileScope } from './adapter'; +import { onBeginFileScope, onEndFileScope } from './adapter'; import type { FileScope } from './types'; let refCounter = 0; @@ -8,10 +8,12 @@ const fileScopes: Array = []; export function setFileScope(filePath: string, packageName?: string) { refCounter = 0; - fileScopes.unshift({ + const fileScope = { filePath, packageName, - }); + }; + fileScopes.unshift(fileScope); + onBeginFileScope(fileScope); } export function endFileScope() { diff --git a/packages/css/src/style.ts b/packages/css/src/style.ts index a10d0870f..abb719c84 100644 --- a/packages/css/src/style.ts +++ b/packages/css/src/style.ts @@ -22,7 +22,7 @@ import { dudupeAndJoinClassList } from './utils'; function composedStyle(rules: Array, debugId?: string) { const className = generateIdentifier(debugId); - registerClassName(className); + registerClassName(className, getFileScope()); const classList = []; const styleRules = []; @@ -40,10 +40,13 @@ function composedStyle(rules: Array, debugId?: string) { if (classList.length > 0) { result = `${className} ${dudupeAndJoinClassList(classList)}`; - registerComposition({ - identifier: className, - classList: result, - }); + registerComposition( + { + identifier: className, + classList: result, + }, + getFileScope(), + ); if (styleRules.length > 0) { // If there are styles attached to this composition then it is @@ -71,7 +74,7 @@ export function style(rule: ComplexStyleRule, debugId?: string) { const className = generateIdentifier(debugId); - registerClassName(className); + registerClassName(className, getFileScope()); appendCss({ type: 'local', selector: className, rule }, getFileScope()); return className; diff --git a/packages/css/src/theme.ts b/packages/css/src/theme.ts index 0fff0b58c..9e281dfdc 100644 --- a/packages/css/src/theme.ts +++ b/packages/css/src/theme.ts @@ -55,7 +55,7 @@ export function createTheme(arg1: any, arg2?: any, arg3?: string): any { typeof arg2 === 'object' ? arg3 : arg2, ); - registerClassName(themeClassName); + registerClassName(themeClassName, getFileScope()); const vars = typeof arg2 === 'object' diff --git a/packages/css/src/types.ts b/packages/css/src/types.ts index 5f0038483..9e4a5fae4 100644 --- a/packages/css/src/types.ts +++ b/packages/css/src/types.ts @@ -132,9 +132,10 @@ export interface Composition { type IdentOption = 'short' | 'debug'; export interface Adapter { appendCss: (css: CSS, fileScope: FileScope) => void; - registerClassName: (className: string) => void; - registerComposition: (composition: Composition) => void; + registerClassName: (className: string, fileScope: FileScope) => void; + registerComposition: (composition: Composition, fileScope: FileScope) => void; markCompositionUsed: (identifier: string) => void; + onBeginFileScope?: (fileScope: FileScope) => void; onEndFileScope: (fileScope: FileScope) => void; getIdentOption: () => IdentOption; } diff --git a/packages/esbuild-plugin-next/package.json b/packages/esbuild-plugin-next/package.json new file mode 100644 index 000000000..005568cad --- /dev/null +++ b/packages/esbuild-plugin-next/package.json @@ -0,0 +1,24 @@ +{ + "private": true, + "name": "@vanilla-extract/esbuild-plugin-next", + "version": "0.0.0", + "description": "Zero-runtime Stylesheets-in-TypeScript", + "main": "dist/vanilla-extract-esbuild-plugin-next.cjs.js", + "module": "dist/vanilla-extract-esbuild-plugin-next.esm.js", + "files": [ + "/dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/vanilla-extract-css/vanilla-extract.git", + "directory": "packages/esbuild-plugin-next" + }, + "author": "SEEK", + "license": "MIT", + "dependencies": { + "@vanilla-extract/integration": "^6.0.2" + }, + "devDependencies": { + "esbuild": "0.17.6" + } +} diff --git a/packages/esbuild-plugin-next/src/index.ts b/packages/esbuild-plugin-next/src/index.ts new file mode 100644 index 000000000..1d0f9bdb8 --- /dev/null +++ b/packages/esbuild-plugin-next/src/index.ts @@ -0,0 +1,85 @@ +import { dirname } from 'path'; + +import { + cssFileFilter, + createCompiler, + vanillaExtractTransformPlugin, + IdentifierOption, + CreateCompilerOptions, +} from '@vanilla-extract/integration'; +import type { Plugin } from 'esbuild'; + +const vanillaCssNamespace = 'vanilla-extract-css-ns'; + +interface VanillaExtractPluginOptions { + outputCss?: boolean; + runtime?: boolean; + processCss?: (css: string) => Promise; + identifiers?: IdentifierOption; + compilerVitePlugins?: CreateCompilerOptions['vitePlugins']; +} +export function vanillaExtractPlugin({ + outputCss = true, + runtime = false, + processCss, + identifiers: identOption, + compilerVitePlugins: vitePlugins, +}: VanillaExtractPluginOptions = {}): Plugin { + if (runtime) { + // If using runtime CSS then just apply fileScopes and debug IDs to code + return vanillaExtractTransformPlugin({ identOption }); + } + + return { + name: 'vanilla-extract', + async setup(build) { + const root = build.initialOptions.absWorkingDir || process.cwd(); + const identifiers = + identOption || (build.initialOptions.minify ? 'short' : 'debug'); + + const compiler = createCompiler({ root, identifiers, vitePlugins }); + + build.onDispose(async () => { + await compiler.close(); + }); + + build.onResolve({ filter: /\.vanilla\.css/ }, (args) => { + return { + path: args.path, + namespace: vanillaCssNamespace, + }; + }); + + build.onLoad( + { filter: /.*/, namespace: vanillaCssNamespace }, + async ({ path }) => { + const [rootRelativePath] = path.split('.vanilla.css'); + + let { css, filePath } = compiler.getCssForFile(rootRelativePath); + + if (typeof processCss === 'function') { + css = await processCss(css); + } + + return { + contents: css, + loader: 'css', + resolveDir: dirname(filePath), + }; + }, + ); + + build.onLoad({ filter: cssFileFilter }, async ({ path }) => { + const { source, watchFiles } = await compiler.processVanillaFile(path, { + outputCss, + }); + + return { + contents: source, + loader: 'js', + watchFiles: Array.from(watchFiles), + }; + }); + }, + }; +} diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 2e5fbc56e..0c0fb898f 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -18,6 +18,6 @@ "@vanilla-extract/integration": "^6.0.2" }, "devDependencies": { - "esbuild": "^0.16.3" + "esbuild": "0.17.6" } } diff --git a/packages/integration/package.json b/packages/integration/package.json index eb75d4d10..8d95f3ab9 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -18,13 +18,15 @@ "@babel/plugin-syntax-typescript": "^7.20.0", "@vanilla-extract/babel-plugin-debug-ids": "^1.0.2", "@vanilla-extract/css": "^1.9.4", - "esbuild": "^0.16.3", + "esbuild": "0.17.6", "eval": "0.1.6", "find-up": "^5.0.0", "javascript-stringify": "^2.0.1", "lodash": "^4.17.21", "mlly": "^1.1.0", - "outdent": "^0.8.0" + "outdent": "^0.8.0", + "vite": "^4.1.4", + "vite-node": "^0.28.5" }, "devDependencies": { "@types/babel__core": "^7.1.20", diff --git a/packages/integration/src/addFileScope.test.ts b/packages/integration/src/addFileScope.test.ts index 36517c3b2..3dc96be9a 100644 --- a/packages/integration/src/addFileScope.test.ts +++ b/packages/integration/src/addFileScope.test.ts @@ -18,12 +18,46 @@ describe('ESM', () => { }), ).toMatchInlineSnapshot(` " + import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope"; setFileScope("app/app.css.ts", "my-package"); import {style} from '@vanilla-extract/css'; export const myStyle = style({}); endFileScope(); + + " + `); + }); + + test('should add global adapter setup when "globalAdapterIdentifier" is provided', () => { + const source = outdent` + import {style} from '@vanilla-extract/css'; + + export const myStyle = style({}); + `; + + expect( + addFileScope({ + source, + rootPath: '/the-root', + filePath: '/the-root/app/app.css.ts', + packageName: 'my-package', + globalAdapterIdentifier: 'MY_GLOBAL_ADAPTER', + }), + ).toMatchInlineSnapshot(` + " + + import * as __vanilla_css_adapter__ from "@vanilla-extract/css/adapter"; + __vanilla_css_adapter__.setAdapter(MY_GLOBAL_ADAPTER); + + import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope"; + setFileScope("app/app.css.ts", "my-package"); + import {style} from '@vanilla-extract/css'; + + export const myStyle = style({}); + endFileScope(); + __vanilla_css_adapter__.removeAdapter(); " `); }); @@ -116,7 +150,37 @@ describe('ESM', () => { describe('CJS', () => { test('should add missing fileScope', () => { const source = outdent` - const _css require('@vanilla-extract/css'); + const _css = require('@vanilla-extract/css'); + + var myStyle = _css.style({}); + exports.myStyle = myStyle; + `; + + expect( + addFileScope({ + source, + rootPath: '/the-root', + filePath: '/the-root/app/app.css.ts', + packageName: 'my-package', + }), + ).toMatchInlineSnapshot(` + " + + const __vanilla_filescope__ = require("@vanilla-extract/css/fileScope"); + __vanilla_filescope__.setFileScope("app/app.css.ts", "my-package"); + const _css = require('@vanilla-extract/css'); + + var myStyle = _css.style({}); + exports.myStyle = myStyle; + __vanilla_filescope__.endFileScope(); + ; + " + `); + }); + + test('should add global adapter setup when "globalAdapterIdentifier" is provided', () => { + const source = outdent` + const _css = require('@vanilla-extract/css'); var myStyle = _css.style({}); exports.myStyle = myStyle; @@ -128,16 +192,22 @@ describe('CJS', () => { rootPath: '/the-root', filePath: '/the-root/app/app.css.ts', packageName: 'my-package', + globalAdapterIdentifier: 'MY_GLOBAL_ADAPTER', }), ).toMatchInlineSnapshot(` " + + const __vanilla_css_adapter__ = require("@vanilla-extract/css/adapter"); + __vanilla_css_adapter__.setAdapter(MY_GLOBAL_ADAPTER); + const __vanilla_filescope__ = require("@vanilla-extract/css/fileScope"); __vanilla_filescope__.setFileScope("app/app.css.ts", "my-package"); - const _css require('@vanilla-extract/css'); + const _css = require('@vanilla-extract/css'); var myStyle = _css.style({}); exports.myStyle = myStyle; __vanilla_filescope__.endFileScope(); + __vanilla_css_adapter__.removeAdapter();; " `); }); diff --git a/packages/integration/src/addFileScope.ts b/packages/integration/src/addFileScope.ts index 1ea7ef6b2..8e06d303d 100644 --- a/packages/integration/src/addFileScope.ts +++ b/packages/integration/src/addFileScope.ts @@ -6,12 +6,14 @@ interface AddFileScopeParams { filePath: string; rootPath: string; packageName: string; + globalAdapterIdentifier?: string; } export function addFileScope({ source, filePath, rootPath, packageName, + globalAdapterIdentifier, }: AddFileScopeParams) { // Encode windows file paths as posix const normalizedPath = posix.join(...relative(rootPath, filePath).split(sep)); @@ -26,18 +28,42 @@ export function addFileScope({ const { hasESM, isMixed } = detectSyntax(source); if (hasESM && !isMixed) { + const setAdapterSnippet = globalAdapterIdentifier + ? ` + import * as __vanilla_css_adapter__ from "@vanilla-extract/css/adapter"; + __vanilla_css_adapter__.setAdapter(${globalAdapterIdentifier}); + ` + : ''; + const removeAdapterSnippet = setAdapterSnippet + ? '__vanilla_css_adapter__.removeAdapter();' + : ''; + return ` + ${setAdapterSnippet} import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope"; setFileScope("${normalizedPath}", "${packageName}"); ${source} endFileScope(); + ${removeAdapterSnippet} `; } + const setAdapterSnippet = globalAdapterIdentifier + ? ` + const __vanilla_css_adapter__ = require("@vanilla-extract/css/adapter"); + __vanilla_css_adapter__.setAdapter(${globalAdapterIdentifier}); + ` + : ''; + const removeAdapterSnippet = setAdapterSnippet + ? '__vanilla_css_adapter__.removeAdapter();' + : ''; + return ` + ${setAdapterSnippet} const __vanilla_filescope__ = require("@vanilla-extract/css/fileScope"); __vanilla_filescope__.setFileScope("${normalizedPath}", "${packageName}"); ${source} __vanilla_filescope__.endFileScope(); + ${removeAdapterSnippet}; `; } diff --git a/packages/integration/src/compiler.ts b/packages/integration/src/compiler.ts new file mode 100644 index 000000000..85f1f863f --- /dev/null +++ b/packages/integration/src/compiler.ts @@ -0,0 +1,395 @@ +import { join, relative, isAbsolute } from 'path'; +import type { Adapter } from '@vanilla-extract/css'; +import { transformCss } from '@vanilla-extract/css/transformCss'; +import type { ModuleNode, Plugin as VitePlugin } from 'vite'; +import type { ViteNodeRunner } from 'vite-node/client'; + +import type { IdentifierOption } from './types'; +import { cssFileFilter } from './filters'; +import { getPackageInfo } from './packageInfo'; +import { transform } from './transform'; +import { lock } from './lock'; +import { serializeVanillaModule } from './processVanillaFile'; + +type Css = Parameters[0]; +type Composition = Parameters[0]; + +const globalAdapterIdentifier = '__vanilla_globalCssAdapter__'; + +const scanModule = (entryModule: ModuleNode, root: string) => { + const queue = [entryModule]; + const cssDeps = new Set(); + const watchFiles = new Set(); + + for (const moduleNode of queue) { + const relativePath = moduleNode.id && relative(root, moduleNode.id); + + if (relativePath) { + cssDeps.add(relativePath); + } + + if (moduleNode.file) { + watchFiles.add(moduleNode.file); + } + + queue.push(...moduleNode.importedModules); + } + + // This ensures the root module's styles are last in terms of CSS ordering + const [head, ...tail] = cssDeps; + + return { cssDeps: [...tail, head], watchFiles }; +}; + +// We lazily load this utility from Vite +let normalizeModuleId: (fsPath: string) => string; + +const createViteServer = async ({ + root, + identifiers, + vitePlugins = [], +}: { + root: string; + identifiers: IdentifierOption; + vitePlugins?: Array; +}) => { + const pkg = getPackageInfo(root); + const vite = await import('vite'); + + normalizeModuleId = vite.normalizePath; + + const server = await vite.createServer({ + root, + server: { + hmr: false, + }, + logLevel: 'silent', + optimizeDeps: { + disabled: true, + }, + ssr: { + noExternal: true, + }, + plugins: [ + { + name: 'vanilla-extract-externalize', + enforce: 'pre', + async resolveId(source, importer) { + if (source.startsWith('@vanilla-extract/')) { + const result = await this.resolve(source, importer, { + skipSelf: true, + }); + + return result ? { ...result, external: true } : null; + } + }, + }, + { + name: 'vanilla-extract-transform', + async transform(code, id) { + if (cssFileFilter.test(id)) { + const filescopedCode = await transform({ + source: code, + rootPath: root, + filePath: id, + packageName: pkg.name, + identOption: identifiers, + globalAdapterIdentifier, + }); + + return filescopedCode; + } + }, + }, + ...vitePlugins, + ], + }); + + // this is need to initialize the plugins + await server.pluginContainer.buildStart({}); + + const { ViteNodeRunner } = await import('vite-node/client'); + const { ViteNodeServer } = await import('vite-node/server'); + + const node = new ViteNodeServer(server); + + const runner = new ViteNodeRunner({ + root, + base: server.config.base, + fetchModule(id) { + return node.fetchModule(id); + }, + resolveId(id, importer) { + return node.resolveId(id, importer); + }, + }); + + server.watcher.on('change', (filePath) => { + runner.moduleCache.invalidateDepTree([filePath]); + }); + + return { + server, + runner, + }; +}; + +export interface Compiler { + processVanillaFile( + filePath: string, + options?: { + outputCss?: boolean; + }, + ): Promise<{ source: string; watchFiles: Set }>; + getCssForFile(virtualCssFilePath: string): { filePath: string; css: string }; + close(): Promise; +} + +interface ProcessedVanillaFile { + source: string; + watchFiles: Set; +} + +export interface CreateCompilerOptions { + root: string; + cssImportSpecifier?: (filePath: string) => string; + identifiers?: IdentifierOption; + vitePlugins?: Array; +} +export const createCompiler = ({ + root, + identifiers = 'debug', + cssImportSpecifier = (filePath) => filePath + '.vanilla.css', + vitePlugins, +}: CreateCompilerOptions): Compiler => { + let originalPrepareContext: ViteNodeRunner['prepareContext']; + + const vitePromise = createViteServer({ + root, + identifiers, + vitePlugins, + }).then(({ server, runner }) => { + // Store the original method so we can monkey patch it on demand + originalPrepareContext = runner.prepareContext; + return { server, runner }; + }); + + const cssCache = new Map(); + + const processVanillaFileCache = new Map< + string, + { + lastInvalidationTimestamp: number; + result: ProcessedVanillaFile; + } + >(); + + const classRegistrationsByModuleId = new Map< + string, + { + localClassNames: Set; + composedClassLists: Array; + } + >(); + + return { + async processVanillaFile( + filePath, + options = {}, + ): Promise { + const { server, runner } = await vitePromise; + + filePath = isAbsolute(filePath) ? filePath : join(root, filePath); + const outputCss = options.outputCss ?? true; + + const cacheKey = Object.entries({ filePath, outputCss }) + .map((entry) => entry.join('=')) + .join('|'); + const cachedFile = processVanillaFileCache.get(cacheKey); + if (cachedFile) { + const moduleNode = server.moduleGraph.getModuleById(filePath); + if ( + cachedFile.lastInvalidationTimestamp === + moduleNode?.lastInvalidationTimestamp + ) { + return cachedFile.result; + } + } + + const cssByModuleId = new Map>(); + const localClassNames = new Set(); + const composedClassLists: Array = []; + + const cssAdapter: Adapter = { + getIdentOption: () => identifiers, + onBeginFileScope: (fileScope) => { + // Before evaluating a file, reset the cache for it + const moduleId = normalizeModuleId(fileScope.filePath); + cssByModuleId.set(moduleId, []); + classRegistrationsByModuleId.set(moduleId, { + localClassNames: new Set(), + composedClassLists: [], + }); + }, + onEndFileScope: ({ filePath }) => { + // For backwards compatibility, ensure the cache is populated even if + // a file didn't contain any CSS. This is to ensure that the only + // error messages shown in older versions are the ones below. + const moduleId = normalizeModuleId(filePath); + const cssObjs = cssByModuleId.get(moduleId) ?? []; + cssByModuleId.set(moduleId, cssObjs); + }, + registerClassName: (className, fileScope) => { + if (!fileScope) { + throw new Error( + 'Your version of @vanilla-extract/css must be at least v1.10.0. Please update to a compatible version.', + ); + } + + localClassNames.add(className); + + const moduleId = normalizeModuleId(fileScope.filePath); + classRegistrationsByModuleId + .get(moduleId)! + .localClassNames.add(className); + }, + registerComposition: (composedClassList, fileScope) => { + if (!fileScope) { + throw new Error( + 'Your version of @vanilla-extract/css must be at least v1.10.0. Please update to a compatible version.', + ); + } + + composedClassLists.push(composedClassList); + + const moduleId = normalizeModuleId(fileScope.filePath); + classRegistrationsByModuleId + .get(moduleId)! + .composedClassLists.push(composedClassList); + }, + markCompositionUsed: () => { + // This compiler currently retains all composition classes + }, + appendCss: (css, fileScope) => { + const moduleId = normalizeModuleId(fileScope.filePath); + const cssObjs = cssByModuleId.get(moduleId) ?? []; + cssObjs.push(css); + + cssByModuleId.set(moduleId, cssObjs); + }, + }; + + const { fileExports, cssImports, watchFiles, lastInvalidationTimestamp } = + await lock(async () => { + // Monkey patch the prepareContext method to inject the adapter + runner.prepareContext = function (...args) { + return { + ...originalPrepareContext.apply(this, args), + [globalAdapterIdentifier]: cssAdapter, + }; + }; + + const fileExports = await runner.executeFile(filePath); + + const moduleId = normalizeModuleId(filePath); + const moduleNode = server.moduleGraph.getModuleById(moduleId); + + if (!moduleNode) { + throw new Error(`Can't find ModuleNode for ${filePath}`); + } + + const cssImports = []; + + const { cssDeps, watchFiles } = scanModule(moduleNode, root); + + for (const cssDep of cssDeps) { + const cssDepModuleId = normalizeModuleId(cssDep); + const cssObjs = cssByModuleId.get(cssDepModuleId); + const cachedCss = cssCache.get(cssDepModuleId); + const cachedClassRegistrations = + classRegistrationsByModuleId.get(cssDepModuleId); + + if (!cssObjs && !cachedCss && !cachedClassRegistrations) { + continue; + } + + if (cssObjs) { + const css = transformCss({ + localClassNames: Array.from(localClassNames), + composedClassLists, + cssObjs, + }).join('\n'); + + cssCache.set(cssDepModuleId, { css }); + } else if (cachedClassRegistrations) { + cachedClassRegistrations.localClassNames.forEach( + (localClassName) => { + localClassNames.add(localClassName); + }, + ); + composedClassLists.push( + ...cachedClassRegistrations.composedClassLists, + ); + } + + if (cssObjs || cachedCss?.css) { + cssImports.push( + `import '${cssImportSpecifier(cssDepModuleId)}';`, + ); + } + } + + return { + fileExports, + cssImports: outputCss ? cssImports : [], + watchFiles, + lastInvalidationTimestamp: moduleNode.lastInvalidationTimestamp, + }; + }); + + const result: ProcessedVanillaFile = { + source: serializeVanillaModule( + cssImports, + fileExports, + null, // This compiler currently retains all composition classes + ), + watchFiles, + }; + + processVanillaFileCache.set(cacheKey, { + lastInvalidationTimestamp, + result, + }); + + return result; + }, + getCssForFile(filePath: string) { + if (!normalizeModuleId) { + throw new Error( + `Compiler is still loading. No CSS for file: ${filePath}`, + ); + } + + filePath = isAbsolute(filePath) ? filePath : join(root, filePath); + const rootRelativePath = relative(root, filePath); + + const moduleId = normalizeModuleId(rootRelativePath); + const result = cssCache.get(moduleId); + + if (!result) { + throw new Error(`No CSS for file: ${filePath}`); + } + + return { + css: result.css, + filePath: rootRelativePath, + resolveDir: root, + }; + }, + async close() { + const { server } = await vitePromise; + + await server.close(); + }, + }; +}; diff --git a/packages/integration/src/index.ts b/packages/integration/src/index.ts index 9ed56d10d..f6152d296 100644 --- a/packages/integration/src/index.ts +++ b/packages/integration/src/index.ts @@ -6,6 +6,7 @@ export { export { getSourceFromVirtualCssFile } from './virtualFile'; export { getPackageInfo } from './packageInfo'; export { compile, vanillaExtractTransformPlugin } from './compile'; +export { createCompiler } from './compiler'; export { hash } from './hash'; export { addFileScope } from './addFileScope'; export { serializeCss, deserializeCss } from './serialize'; @@ -16,3 +17,4 @@ export * from './filters'; export type { IdentifierOption } from './types'; export type { PackageInfo } from './packageInfo'; export type { CompileOptions } from './compile'; +export type { Compiler, CreateCompilerOptions } from './compiler'; diff --git a/packages/integration/src/lock.ts b/packages/integration/src/lock.ts new file mode 100644 index 000000000..e55155097 --- /dev/null +++ b/packages/integration/src/lock.ts @@ -0,0 +1,37 @@ +type AsyncFunction = () => Promise; + +const queue: Array<() => void> = []; +let isProcessingQueue = false; + +export async function lock(fn: AsyncFunction): Promise { + return new Promise((resolve, reject) => { + const queueFn = async () => { + try { + const result = await fn(); + resolve(result); + } catch (error) { + reject(error); + } finally { + isProcessingQueue = false; + processQueue(); + } + }; + + queue.push(queueFn); + + if (!isProcessingQueue) { + processQueue(); + } + }); +} + +async function processQueue() { + if (isProcessingQueue || queue.length === 0) { + return; + } + + isProcessingQueue = true; + const fn = queue.shift()!; + + await fn(); +} diff --git a/packages/integration/src/transform.ts b/packages/integration/src/transform.ts index 569eae969..99b8fbb51 100644 --- a/packages/integration/src/transform.ts +++ b/packages/integration/src/transform.ts @@ -12,6 +12,7 @@ interface TransformParams { rootPath: string; packageName: string; identOption: IdentifierOption; + globalAdapterIdentifier?: string; } export const transformSync = ({ source, @@ -51,6 +52,7 @@ export const transform = async ({ rootPath, packageName, identOption, + globalAdapterIdentifier, }: TransformParams): Promise => { let code = source; @@ -74,5 +76,6 @@ export const transform = async ({ filePath, rootPath, packageName, + globalAdapterIdentifier, }); }; diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index 47f3f75de..4b259f1f5 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -21,7 +21,7 @@ "license": "MIT", "dependencies": { "@vanilla-extract/integration": "^6.0.2", - "esbuild": "^0.16.3" + "esbuild": "0.17.6" }, "devDependencies": { "@jest/transform": "^29.0.3" diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 280cd6f5d..c3083c31a 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -21,7 +21,7 @@ "@fixtures/themed": "*", "@rollup/plugin-json": "^4.1.0", "@vanilla-extract/css": "^1.9.5", - "esbuild": "^0.16.3", + "esbuild": "0.17.6", "rollup": "^2.7.0", "rollup-plugin-esbuild": "^4.9.1" }, diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index f1091feaa..434773c4e 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -21,7 +21,7 @@ "postcss-load-config": "^3.1.0" }, "devDependencies": { - "vite": "^2.7.0" + "vite": "npm:vite@^2.7.0" }, "peerDependencies": { "vite": "^2.2.3 || ^3.0.0 || ^4.0.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5fab3728..9e3c27ad1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,6 +34,7 @@ importers: rollup-plugin-node-externals: ^5.0.0 ts-node: ^10.0.0 typescript: ^4.9.4 + vitest: ^0.28.5 dependencies: '@babel/core': 7.20.7 '@babel/preset-env': 7.20.2_@babel+core@7.20.7 @@ -51,8 +52,8 @@ importers: '@vanilla-extract/jest-transform': link:packages/jest-transform babel-jest: 27.3.1_@babel+core@7.20.7 fast-glob: 3.2.12 - jest: 29.3.1_ts-node@10.9.1 - jest-environment-jsdom: 29.3.1 + jest: 29.4.3_ts-node@10.9.1 + jest-environment-jsdom: 29.4.3 prettier: 2.8.1 resolve.exports: 1.1.0 rollup: 2.79.1 @@ -60,6 +61,7 @@ importers: rollup-plugin-node-externals: 5.0.0_rollup@2.79.1 ts-node: 10.9.1_djsbtcegmovallx2poba2t3laq typescript: 4.9.4 + vitest: 0.28.5 examples/next: specifiers: @@ -217,11 +219,20 @@ importers: packages/esbuild-plugin: specifiers: '@vanilla-extract/integration': ^6.0.2 - esbuild: ^0.16.3 + esbuild: 0.17.6 dependencies: '@vanilla-extract/integration': link:../integration devDependencies: - esbuild: 0.16.17 + esbuild: 0.17.6 + + packages/esbuild-plugin-next: + specifiers: + '@vanilla-extract/integration': ^6.0.2 + esbuild: 0.17.6 + dependencies: + '@vanilla-extract/integration': link:../integration + devDependencies: + esbuild: 0.17.6 packages/integration: specifiers: @@ -231,25 +242,29 @@ importers: '@types/lodash': ^4.14.168 '@vanilla-extract/babel-plugin-debug-ids': ^1.0.2 '@vanilla-extract/css': ^1.9.4 - esbuild: ^0.16.3 + esbuild: 0.17.6 eval: 0.1.6 find-up: ^5.0.0 javascript-stringify: ^2.0.1 lodash: ^4.17.21 mlly: ^1.1.0 outdent: ^0.8.0 + vite: ^4.1.4 + vite-node: ^0.28.5 dependencies: '@babel/core': 7.20.7 '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.7 '@vanilla-extract/babel-plugin-debug-ids': link:../babel-plugin-debug-ids '@vanilla-extract/css': link:../css - esbuild: 0.16.17 + esbuild: 0.17.6 eval: 0.1.6 find-up: 5.0.0 javascript-stringify: 2.1.0 lodash: 4.17.21 mlly: 1.1.0 outdent: 0.8.0 + vite: 4.1.4 + vite-node: 0.28.5 devDependencies: '@types/babel__core': 7.1.20 '@types/lodash': 4.14.177 @@ -258,10 +273,10 @@ importers: specifiers: '@jest/transform': ^29.0.3 '@vanilla-extract/integration': ^6.0.2 - esbuild: ^0.16.3 + esbuild: 0.17.6 dependencies: '@vanilla-extract/integration': link:../integration - esbuild: 0.16.17 + esbuild: 0.17.6 devDependencies: '@jest/transform': 29.3.1 @@ -281,7 +296,7 @@ importers: '@parcel/plugin': ^2.7.0 '@vanilla-extract/integration': ^6.0.0 dependencies: - '@parcel/plugin': 2.7.0 + '@parcel/plugin': 2.8.3 '@vanilla-extract/integration': link:../integration packages/private: @@ -299,7 +314,7 @@ importers: '@rollup/plugin-json': ^4.1.0 '@vanilla-extract/css': ^1.9.5 '@vanilla-extract/integration': ^6.1.0 - esbuild: ^0.16.3 + esbuild: 0.17.6 rollup: ^2.7.0 rollup-plugin-esbuild: ^4.9.1 dependencies: @@ -308,9 +323,9 @@ importers: '@fixtures/themed': link:../../fixtures/themed '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@vanilla-extract/css': link:../css - esbuild: 0.16.17 + esbuild: 0.17.6 rollup: 2.79.1 - rollup-plugin-esbuild: 4.9.1_uiao7appyg7pvh5lt4amcal6cy + rollup-plugin-esbuild: 4.9.1_72vqmc7tx7ptj43i3kyzp2skqu packages/sprinkles: specifiers: @@ -327,11 +342,11 @@ importers: outdent: ^0.8.0 postcss: ^8.3.6 postcss-load-config: ^3.1.0 - vite: ^2.7.0 + vite: npm:vite@^2.7.0 dependencies: '@vanilla-extract/integration': link:../integration outdent: 0.8.0 - postcss: 8.4.16 + postcss: 8.4.21 postcss-load-config: 3.1.0 devDependencies: vite: 2.7.2 @@ -483,13 +498,14 @@ importers: '@types/serve-handler': ^6 '@types/webpack-dev-server': ^3.11.1 '@vanilla-extract/esbuild-plugin': '*' + '@vanilla-extract/esbuild-plugin-next': '*' '@vanilla-extract/parcel-transformer': '*' '@vanilla-extract/vite-plugin': '*' '@vanilla-extract/webpack-plugin': '*' babel-loader: ^8.2.2 css-loader: ^5.2.4 cssnano: ^5.0.8 - esbuild: ^0.16.3 + esbuild: 0.17.6 got: ^11.8.2 html-webpack-plugin: ^5.3.1 mini-css-extract-plugin: ^1.5.1 @@ -500,7 +516,7 @@ importers: prettier: ^2.8.1 serve-handler: ^6.1.3 style-loader: ^2.0.0 - vite: ^2.7.0 + vite: npm:vite@^2.7.0 webpack: ^5.36.1 webpack-dev-server: ^3.11.2 webpack-merge: ^5.7.3 @@ -512,30 +528,31 @@ importers: '@fixtures/sprinkles': link:../fixtures/sprinkles '@fixtures/themed': link:../fixtures/themed '@fixtures/unused-modules': link:../fixtures/unused-modules - '@parcel/config-default': 2.7.0_bt4okovxcciljru5eqxfyq6e2a - '@parcel/core': 2.7.0 - '@types/mini-css-extract-plugin': 1.4.3_esbuild@0.16.17 + '@parcel/config-default': 2.8.3_z7ftfhsu7i56anitrxzhopodiy + '@parcel/core': 2.8.3 + '@types/mini-css-extract-plugin': 1.4.3_esbuild@0.17.6 '@types/webpack-dev-server': 3.11.6 '@vanilla-extract/esbuild-plugin': link:../packages/esbuild-plugin + '@vanilla-extract/esbuild-plugin-next': link:../packages/esbuild-plugin-next '@vanilla-extract/parcel-transformer': link:../packages/parcel-transformer '@vanilla-extract/vite-plugin': link:../packages/vite-plugin '@vanilla-extract/webpack-plugin': link:../packages/webpack-plugin babel-loader: 8.2.3_rogvnekrnkqy3ozger37vg5xlu css-loader: 5.2.7_webpack@5.64.2 - cssnano: 5.0.11_postcss@8.4.16 - esbuild: 0.16.17 + cssnano: 5.0.11_postcss@8.4.21 + esbuild: 0.17.6 got: 11.8.3 html-webpack-plugin: 5.5.0_webpack@5.64.2 mini-css-extract-plugin: 1.6.2_webpack@5.64.2 minimist: 1.2.5 path-browserify: 1.0.1 portfinder: 1.0.28 - postcss: 8.4.16 + postcss: 8.4.21 prettier: 2.8.1 serve-handler: 6.1.3 style-loader: 2.0.0_webpack@5.64.2 vite: 2.7.2 - webpack: 5.64.2_esbuild@0.16.17 + webpack: 5.64.2_esbuild@0.17.6 webpack-dev-server: 3.11.3_webpack@5.64.2 webpack-merge: 5.8.0 devDependencies: @@ -551,6 +568,7 @@ importers: '@vanilla-extract-private/test-helpers': '*' '@vanilla-extract/css': '*' '@vanilla-extract/dynamic': '*' + '@vanilla-extract/integration': '*' '@vanilla-extract/recipes': '*' '@vanilla-extract/sprinkles': '*' dependencies: @@ -560,6 +578,7 @@ importers: '@vanilla-extract-private/test-helpers': link:../test-helpers '@vanilla-extract/css': link:../packages/css '@vanilla-extract/dynamic': link:../packages/dynamic + '@vanilla-extract/integration': link:../packages/integration '@vanilla-extract/recipes': link:../packages/recipes '@vanilla-extract/sprinkles': link:../packages/sprinkles @@ -714,7 +733,7 @@ packages: gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 - resolve: 1.20.0 + resolve: 1.22.1 semver: 5.7.1 source-map: 0.5.7 transitivePeerDependencies: @@ -853,7 +872,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.20.0 + resolve: 1.22.1 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -869,7 +888,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.20.0 + resolve: 1.22.1 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2997,7 +3016,7 @@ packages: '@changesets/types': 4.0.1 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.4 + micromatch: 4.0.5 dev: false /@changesets/errors/0.1.4: @@ -3168,6 +3187,15 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm/0.17.6: + resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true optional: true /@esbuild/android-arm64/0.16.17: @@ -3176,6 +3204,15 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64/0.17.6: + resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true /@esbuild/android-x64/0.16.17: @@ -3184,6 +3221,15 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64/0.17.6: + resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true optional: true /@esbuild/darwin-arm64/0.16.17: @@ -3192,6 +3238,15 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64/0.17.6: + resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true /@esbuild/darwin-x64/0.16.17: @@ -3200,6 +3255,15 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64/0.17.6: + resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true /@esbuild/freebsd-arm64/0.16.17: @@ -3208,6 +3272,15 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64/0.17.6: + resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true /@esbuild/freebsd-x64/0.16.17: @@ -3216,6 +3289,15 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64/0.17.6: + resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true /@esbuild/linux-arm/0.16.17: @@ -3224,6 +3306,15 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm/0.17.6: + resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-arm64/0.16.17: @@ -3232,6 +3323,15 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64/0.17.6: + resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-ia32/0.16.17: @@ -3240,6 +3340,15 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32/0.17.6: + resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-loong64/0.16.17: @@ -3248,6 +3357,15 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64/0.17.6: + resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-mips64el/0.16.17: @@ -3256,6 +3374,15 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el/0.17.6: + resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-ppc64/0.16.17: @@ -3264,6 +3391,15 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64/0.17.6: + resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-riscv64/0.16.17: @@ -3272,6 +3408,15 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64/0.17.6: + resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-s390x/0.16.17: @@ -3280,6 +3425,15 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x/0.17.6: + resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true /@esbuild/linux-x64/0.16.17: @@ -3288,6 +3442,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64/0.17.6: + resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true /@esbuild/netbsd-x64/0.16.17: @@ -3296,6 +3459,15 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64/0.17.6: + resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true /@esbuild/openbsd-x64/0.16.17: @@ -3304,6 +3476,15 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64/0.17.6: + resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true /@esbuild/sunos-x64/0.16.17: @@ -3312,6 +3493,15 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64/0.17.6: + resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true /@esbuild/win32-arm64/0.16.17: @@ -3320,6 +3510,15 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64/0.17.6: + resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true /@esbuild/win32-ia32/0.16.17: @@ -3328,6 +3527,15 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32/0.17.6: + resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true /@esbuild/win32-x64/0.16.17: @@ -3336,6 +3544,15 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64/0.17.6: + resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true /@hapi/accept/5.0.2: @@ -3370,20 +3587,20 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - /@jest/console/29.3.1: - resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + /@jest/console/29.4.3: + resolution: {integrity: sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/node': 16.11.10 chalk: 4.1.2 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-message-util: 29.4.3 + jest-util: 29.4.3 slash: 3.0.0 dev: false - /@jest/core/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + /@jest/core/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3391,32 +3608,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.3.1 - '@jest/reporters': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.4.3 + '@jest/reporters': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.0 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 29.2.0 - jest-config: 29.3.1_dzldzuw4l36u5566gumx6niqti - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-resolve-dependencies: 29.3.1 - jest-runner: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - jest-watcher: 29.3.1 - micromatch: 4.0.4 - pretty-format: 29.3.1 + jest-changed-files: 29.4.3 + jest-config: 29.4.3_dzldzuw4l36u5566gumx6niqti + jest-haste-map: 29.4.3 + jest-message-util: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-resolve-dependencies: 29.4.3 + jest-runner: 29.4.3 + jest-runtime: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 + jest-watcher: 29.4.3 + micromatch: 4.0.5 + pretty-format: 29.4.3 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -3424,59 +3641,59 @@ packages: - ts-node dev: false - /@jest/environment/29.3.1: - resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + /@jest/environment/29.4.3: + resolution: {integrity: sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 - jest-mock: 29.3.1 + jest-mock: 29.4.3 dev: false - /@jest/expect-utils/29.3.1: - resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + /@jest/expect-utils/29.4.3: + resolution: {integrity: sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 dev: false - /@jest/expect/29.3.1: - resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + /@jest/expect/29.4.3: + resolution: {integrity: sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.3.1 - jest-snapshot: 29.3.1 + expect: 29.4.3 + jest-snapshot: 29.4.3 transitivePeerDependencies: - supports-color dev: false - /@jest/fake-timers/29.3.1: - resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + /@jest/fake-timers/29.4.3: + resolution: {integrity: sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@sinonjs/fake-timers': 9.1.2 + '@jest/types': 29.4.3 + '@sinonjs/fake-timers': 10.0.2 '@types/node': 16.11.10 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-util: 29.3.1 + jest-message-util: 29.4.3 + jest-mock: 29.4.3 + jest-util: 29.4.3 dev: false - /@jest/globals/29.3.1: - resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + /@jest/globals/29.4.3: + resolution: {integrity: sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/types': 29.3.1 - jest-mock: 29.3.1 + '@jest/environment': 29.4.3 + '@jest/expect': 29.4.3 + '@jest/types': 29.4.3 + jest-mock: 29.4.3 transitivePeerDependencies: - supports-color dev: false - /@jest/reporters/29.3.1: - resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + /@jest/reporters/29.4.3: + resolution: {integrity: sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3485,10 +3702,10 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 '@types/node': 16.11.10 chalk: 4.1.2 @@ -3501,9 +3718,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.3.1 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-message-util: 29.4.3 + jest-util: 29.4.3 + jest-worker: 29.4.3 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -3517,9 +3734,16 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.24.41 + dev: true - /@jest/source-map/29.2.0: - resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + /@jest/schemas/29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.24 + + /@jest/source-map/29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.15 @@ -3527,23 +3751,23 @@ packages: graceful-fs: 4.2.10 dev: false - /@jest/test-result/29.3.1: - resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + /@jest/test-result/29.4.3: + resolution: {integrity: sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.4.3 + '@jest/types': 29.4.3 '@types/istanbul-lib-coverage': 2.0.3 collect-v8-coverage: 1.0.1 dev: false - /@jest/test-sequencer/29.3.1: - resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + /@jest/test-sequencer/29.4.3: + resolution: {integrity: sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 + '@jest/test-result': 29.4.3 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 + jest-haste-map: 29.4.3 slash: 3.0.0 dev: false @@ -3561,7 +3785,7 @@ packages: jest-haste-map: 27.3.1 jest-regex-util: 27.0.6 jest-util: 27.3.1 - micromatch: 4.0.4 + micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 source-map: 0.6.1 @@ -3591,6 +3815,30 @@ packages: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + dev: true + + /@jest/transform/29.4.3: + resolution: {integrity: sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.7 + '@jest/types': 29.4.3 + '@jridgewell/trace-mapping': 0.3.15 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.4.3 + jest-regex-util: 29.4.3 + jest-util: 29.4.3 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false /@jest/types/25.5.0: resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} @@ -3633,6 +3881,18 @@ packages: '@types/node': 16.11.10 '@types/yargs': 17.0.12 chalk: 4.1.2 + dev: true + + /@jest/types/29.4.3: + resolution: {integrity: sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.3 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.11.10 + '@types/yargs': 17.0.12 + chalk: 4.1.2 /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} @@ -4306,7 +4566,7 @@ packages: dependencies: execa: 6.1.0 map-obj: 5.0.2 - micromatch: 4.0.4 + micromatch: 4.0.5 moize: 6.1.3 path-exists: 5.0.0 dev: true @@ -4824,96 +5084,97 @@ packages: '@octokit/openapi-types': 12.11.0 dev: true - /@parcel/bundler-default/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/bundler-default/-/bundler-default-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/bundler-default/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/graph': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/cache/2.7.0: - resolution: {integrity: sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==} + /@parcel/cache/2.8.3: + resolution: {integrity: sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/fs': 2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/fs': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/utils': 2.8.3 lmdb: 2.5.2 dev: false - /@parcel/cache/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==} + /@parcel/cache/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/core': 2.7.0 - '@parcel/fs': 2.7.0_@parcel+core@2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/core': 2.8.3 + '@parcel/fs': 2.8.3_@parcel+core@2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/utils': 2.8.3 lmdb: 2.5.2 dev: false - /@parcel/codeframe/2.7.0: - resolution: {integrity: sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg==} + /@parcel/codeframe/2.8.3: + resolution: {integrity: sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==} engines: {node: '>= 12.0.0'} dependencies: chalk: 4.1.2 dev: false - /@parcel/compressor-raw/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/compressor-raw/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/config-default/2.7.0_bt4okovxcciljru5eqxfyq6e2a: - resolution: {integrity: sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/config-default/-/config-default-2.7.0.tgz} - peerDependencies: - '@parcel/core': ^2.7.0 - dependencies: - '@parcel/bundler-default': 2.7.0_@parcel+core@2.7.0 - '@parcel/compressor-raw': 2.7.0_@parcel+core@2.7.0 - '@parcel/core': 2.7.0 - '@parcel/namer-default': 2.7.0_@parcel+core@2.7.0 - '@parcel/optimizer-css': 2.7.0_@parcel+core@2.7.0 - '@parcel/optimizer-htmlnano': 2.7.0_bt4okovxcciljru5eqxfyq6e2a - '@parcel/optimizer-image': 2.7.0_@parcel+core@2.7.0 - '@parcel/optimizer-svgo': 2.7.0_@parcel+core@2.7.0 - '@parcel/optimizer-terser': 2.7.0_@parcel+core@2.7.0 - '@parcel/packager-css': 2.7.0_@parcel+core@2.7.0 - '@parcel/packager-html': 2.7.0_@parcel+core@2.7.0 - '@parcel/packager-js': 2.7.0_@parcel+core@2.7.0 - '@parcel/packager-raw': 2.7.0_@parcel+core@2.7.0 - '@parcel/packager-svg': 2.7.0_@parcel+core@2.7.0 - '@parcel/reporter-dev-server': 2.7.0_@parcel+core@2.7.0 - '@parcel/resolver-default': 2.7.0_@parcel+core@2.7.0 - '@parcel/runtime-browser-hmr': 2.7.0_@parcel+core@2.7.0 - '@parcel/runtime-js': 2.7.0_@parcel+core@2.7.0 - '@parcel/runtime-react-refresh': 2.7.0_@parcel+core@2.7.0 - '@parcel/runtime-service-worker': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-babel': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-css': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-html': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-image': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-js': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-json': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-postcss': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-posthtml': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-raw': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-react-refresh-wrap': 2.7.0_@parcel+core@2.7.0 - '@parcel/transformer-svg': 2.7.0_@parcel+core@2.7.0 + /@parcel/config-default/2.8.3_z7ftfhsu7i56anitrxzhopodiy: + resolution: {integrity: sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==} + peerDependencies: + '@parcel/core': ^2.8.3 + dependencies: + '@parcel/bundler-default': 2.8.3_@parcel+core@2.8.3 + '@parcel/compressor-raw': 2.8.3_@parcel+core@2.8.3 + '@parcel/core': 2.8.3 + '@parcel/namer-default': 2.8.3_@parcel+core@2.8.3 + '@parcel/optimizer-css': 2.8.3_@parcel+core@2.8.3 + '@parcel/optimizer-htmlnano': 2.8.3_z7ftfhsu7i56anitrxzhopodiy + '@parcel/optimizer-image': 2.8.3_@parcel+core@2.8.3 + '@parcel/optimizer-svgo': 2.8.3_@parcel+core@2.8.3 + '@parcel/optimizer-terser': 2.8.3_@parcel+core@2.8.3 + '@parcel/packager-css': 2.8.3_@parcel+core@2.8.3 + '@parcel/packager-html': 2.8.3_@parcel+core@2.8.3 + '@parcel/packager-js': 2.8.3_@parcel+core@2.8.3 + '@parcel/packager-raw': 2.8.3_@parcel+core@2.8.3 + '@parcel/packager-svg': 2.8.3_@parcel+core@2.8.3 + '@parcel/reporter-dev-server': 2.8.3_@parcel+core@2.8.3 + '@parcel/resolver-default': 2.8.3_@parcel+core@2.8.3 + '@parcel/runtime-browser-hmr': 2.8.3_@parcel+core@2.8.3 + '@parcel/runtime-js': 2.8.3_@parcel+core@2.8.3 + '@parcel/runtime-react-refresh': 2.8.3_@parcel+core@2.8.3 + '@parcel/runtime-service-worker': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-babel': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-css': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-html': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-image': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-js': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-json': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-postcss': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-posthtml': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-raw': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-react-refresh-wrap': 2.8.3_@parcel+core@2.8.3 + '@parcel/transformer-svg': 2.8.3_@parcel+core@2.8.3 transitivePeerDependencies: - cssnano - postcss @@ -4924,24 +5185,24 @@ packages: - uncss dev: false - /@parcel/core/2.7.0: - resolution: {integrity: sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/core/-/core-2.7.0.tgz} + /@parcel/core/2.8.3: + resolution: {integrity: sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==} engines: {node: '>= 12.0.0'} dependencies: '@mischnic/json-sourcemap': 0.1.0 - '@parcel/cache': 2.7.0_@parcel+core@2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/events': 2.7.0 - '@parcel/fs': 2.7.0_@parcel+core@2.7.0 - '@parcel/graph': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/package-manager': 2.7.0_@parcel+core@2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/cache': 2.8.3_@parcel+core@2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/events': 2.8.3 + '@parcel/fs': 2.8.3_@parcel+core@2.8.3 + '@parcel/graph': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/package-manager': 2.8.3_@parcel+core@2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 abortcontroller-polyfill: 1.7.3 base-x: 3.0.9 browserslist: 4.21.4 @@ -4954,133 +5215,125 @@ packages: semver: 5.7.1 dev: false - /@parcel/css/1.14.0: - resolution: {integrity: sha512-r5tJWe6NF6lesfPw1N3g7N7WUKpHqi2ONnw9wl5ccSGGIxkmgcPaPQxfvmhdjXvQnktSuIOR0HjQXVXu+/en/w==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/css/-/css-1.14.0.tgz} - engines: {node: '>= 12.0.0'} - dependencies: - lightningcss: 1.16.0 - dev: false - - /@parcel/diagnostic/2.7.0: - resolution: {integrity: sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug==} + /@parcel/diagnostic/2.8.3: + resolution: {integrity: sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==} engines: {node: '>= 12.0.0'} dependencies: '@mischnic/json-sourcemap': 0.1.0 nullthrows: 1.1.1 dev: false - /@parcel/events/2.7.0: - resolution: {integrity: sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig==} + /@parcel/events/2.8.3: + resolution: {integrity: sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==} engines: {node: '>= 12.0.0'} dev: false - /@parcel/fs-search/2.7.0: - resolution: {integrity: sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ==} + /@parcel/fs-search/2.8.3: + resolution: {integrity: sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==} engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 dev: false - /@parcel/fs/2.7.0: - resolution: {integrity: sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==} + /@parcel/fs/2.8.3: + resolution: {integrity: sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/fs-search': 2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/watcher': 2.0.5 - '@parcel/workers': 2.7.0 + '@parcel/fs-search': 2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/watcher': 2.1.0 + '@parcel/workers': 2.8.3 dev: false - /@parcel/fs/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==} + /@parcel/fs/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/core': 2.7.0 - '@parcel/fs-search': 2.7.0 - '@parcel/types': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/watcher': 2.0.5 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 + '@parcel/core': 2.8.3 + '@parcel/fs-search': 2.8.3 + '@parcel/types': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/watcher': 2.1.0 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 dev: false - /@parcel/graph/2.7.0: - resolution: {integrity: sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/graph/-/graph-2.7.0.tgz} + /@parcel/graph/2.8.3: + resolution: {integrity: sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==} engines: {node: '>= 12.0.0'} dependencies: - '@parcel/utils': 2.7.0 nullthrows: 1.1.1 dev: false - /@parcel/hash/2.7.0: - resolution: {integrity: sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA==} + /@parcel/hash/2.8.3: + resolution: {integrity: sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==} engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 xxhash-wasm: 0.4.2 dev: false - /@parcel/logger/2.7.0: - resolution: {integrity: sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw==} + /@parcel/logger/2.8.3: + resolution: {integrity: sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==} engines: {node: '>= 12.0.0'} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/events': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/events': 2.8.3 dev: false - /@parcel/markdown-ansi/2.7.0: - resolution: {integrity: sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag==} + /@parcel/markdown-ansi/2.8.3: + resolution: {integrity: sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==} engines: {node: '>= 12.0.0'} dependencies: chalk: 4.1.2 dev: false - /@parcel/namer-default/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/namer-default/-/namer-default-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/namer-default/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/node-resolver-core/2.7.0: - resolution: {integrity: sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz} + /@parcel/node-resolver-core/2.8.3: + resolution: {integrity: sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==} engines: {node: '>= 12.0.0'} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 semver: 5.7.1 dev: false - /@parcel/optimizer-css/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/optimizer-css/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/css': 1.14.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 + '@parcel/utils': 2.8.3 browserslist: 4.21.4 + lightningcss: 1.19.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/optimizer-htmlnano/2.7.0_bt4okovxcciljru5eqxfyq6e2a: - resolution: {integrity: sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/optimizer-htmlnano/2.8.3_z7ftfhsu7i56anitrxzhopodiy: + resolution: {integrity: sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - htmlnano: 2.0.3_vwmyjx2libiymgyhlnwgrk2lbe + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + htmlnano: 2.0.3_wrp22lcif6dxv2jmykrhdclx6y nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 @@ -5095,214 +5348,214 @@ packages: - uncss dev: false - /@parcel/optimizer-image/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/optimizer-image/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 detect-libc: 1.0.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/optimizer-svgo/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/optimizer-svgo/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/optimizer-terser/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/optimizer-terser/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 terser: 5.10.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/package-manager/2.7.0: - resolution: {integrity: sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==} + /@parcel/package-manager/2.8.3: + resolution: {integrity: sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/fs': 2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/workers': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/fs': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3 semver: 5.7.1 dev: false - /@parcel/package-manager/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==} + /@parcel/package-manager/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/core': 2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/fs': 2.7.0_@parcel+core@2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 + '@parcel/core': 2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/fs': 2.8.3_@parcel+core@2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 semver: 5.7.1 dev: false - /@parcel/packager-css/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/packager-css/-/packager-css-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/packager-css/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/packager-html/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/packager-html/-/packager-html-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/packager-html/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/packager-js/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/packager-js/-/packager-js-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/packager-js/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 + '@parcel/utils': 2.8.3 globals: 13.20.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/packager-raw/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/packager-raw/-/packager-raw-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/packager-raw/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/packager-svg/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/packager-svg/-/packager-svg-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/packager-svg/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/plugin/2.7.0: - resolution: {integrity: sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==} + /@parcel/plugin/2.8.3: + resolution: {integrity: sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==} engines: {node: '>= 12.0.0'} dependencies: - '@parcel/types': 2.7.0 + '@parcel/types': 2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/plugin/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==} + /@parcel/plugin/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==} engines: {node: '>= 12.0.0'} dependencies: - '@parcel/types': 2.7.0_@parcel+core@2.7.0 + '@parcel/types': 2.8.3_@parcel+core@2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/reporter-dev-server/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/reporter-dev-server/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/resolver-default/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/resolver-default/-/resolver-default-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/resolver-default/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/node-resolver-core': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/node-resolver-core': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/runtime-browser-hmr/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/runtime-browser-hmr/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/runtime-js/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/runtime-js/-/runtime-js-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/runtime-js/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/runtime-react-refresh/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/runtime-react-refresh/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 react-error-overlay: 6.0.9 react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/runtime-service-worker/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/runtime-service-worker/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -5315,14 +5568,14 @@ packages: detect-libc: 1.0.3 dev: false - /@parcel/transformer-babel/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-babel/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 + '@parcel/utils': 2.8.3 browserslist: 4.21.4 json5: 2.2.1 nullthrows: 1.1.1 @@ -5331,63 +5584,64 @@ packages: - '@parcel/core' dev: false - /@parcel/transformer-css/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-css/-/transformer-css-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-css/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/css': 1.14.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 + '@parcel/utils': 2.8.3 browserslist: 4.21.4 + lightningcss: 1.19.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/transformer-html/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-html/-/transformer-html-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-html/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 nullthrows: 1.1.1 posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 semver: 5.7.1 + srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/transformer-image/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-image/-/transformer-image-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-image/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/core': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 + '@parcel/core': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 nullthrows: 1.1.1 dev: false - /@parcel/transformer-js/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-js/-/transformer-js-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-js/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/core': 2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/core': 2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.7.0 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 - '@swc/helpers': 0.4.11 + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 + '@swc/helpers': 0.4.14 browserslist: 4.21.4 detect-libc: 1.0.3 nullthrows: 1.1.1 @@ -5395,24 +5649,24 @@ packages: semver: 5.7.1 dev: false - /@parcel/transformer-json/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-json/-/transformer-json-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-json/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 json5: 2.2.1 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/transformer-postcss/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-postcss/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 @@ -5421,12 +5675,12 @@ packages: - '@parcel/core' dev: false - /@parcel/transformer-posthtml/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-posthtml/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 nullthrows: 1.1.1 posthtml: 0.16.6 posthtml-parser: 0.10.2 @@ -5436,33 +5690,33 @@ packages: - '@parcel/core' dev: false - /@parcel/transformer-raw/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-raw/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/transformer-react-refresh-wrap/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-react-refresh-wrap/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 + '@parcel/utils': 2.8.3 react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/transformer-svg/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz} - engines: {node: '>= 12.0.0', parcel: ^2.7.0} + /@parcel/transformer-svg/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/plugin': 2.7.0_@parcel+core@2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/plugin': 2.8.3_@parcel+core@2.8.3 nullthrows: 1.1.1 posthtml: 0.16.6 posthtml-parser: 0.10.2 @@ -5472,81 +5726,83 @@ packages: - '@parcel/core' dev: false - /@parcel/types/2.7.0: - resolution: {integrity: sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==} + /@parcel/types/2.8.3: + resolution: {integrity: sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==} dependencies: - '@parcel/cache': 2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/fs': 2.7.0 - '@parcel/package-manager': 2.7.0 + '@parcel/cache': 2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/fs': 2.8.3 + '@parcel/package-manager': 2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.7.0 + '@parcel/workers': 2.8.3 utility-types: 3.10.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/types/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==} + /@parcel/types/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==} dependencies: - '@parcel/cache': 2.7.0_@parcel+core@2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/fs': 2.7.0_@parcel+core@2.7.0 - '@parcel/package-manager': 2.7.0_@parcel+core@2.7.0 + '@parcel/cache': 2.8.3_@parcel+core@2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/fs': 2.8.3_@parcel+core@2.8.3 + '@parcel/package-manager': 2.8.3_@parcel+core@2.8.3 '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.7.0_@parcel+core@2.7.0 + '@parcel/workers': 2.8.3_@parcel+core@2.8.3 utility-types: 3.10.0 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/utils/2.7.0: - resolution: {integrity: sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg==} + /@parcel/utils/2.8.3: + resolution: {integrity: sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==} engines: {node: '>= 12.0.0'} dependencies: - '@parcel/codeframe': 2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/hash': 2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/markdown-ansi': 2.7.0 + '@parcel/codeframe': 2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/markdown-ansi': 2.8.3 '@parcel/source-map': 2.1.1 chalk: 4.1.2 dev: false - /@parcel/watcher/2.0.5: - resolution: {integrity: sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==} + /@parcel/watcher/2.1.0: + resolution: {integrity: sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==} engines: {node: '>= 10.0.0'} requiresBuild: true dependencies: + is-glob: 4.0.3 + micromatch: 4.0.5 node-addon-api: 3.2.1 node-gyp-build: 4.5.0 dev: false - /@parcel/workers/2.7.0: - resolution: {integrity: sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==} + /@parcel/workers/2.8.3: + resolution: {integrity: sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/diagnostic': 2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/diagnostic': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 chrome-trace-event: 1.0.3 nullthrows: 1.1.1 dev: false - /@parcel/workers/2.7.0_@parcel+core@2.7.0: - resolution: {integrity: sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==} + /@parcel/workers/2.8.3_@parcel+core@2.8.3: + resolution: {integrity: sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==} engines: {node: '>= 12.0.0'} peerDependencies: - '@parcel/core': ^2.7.0 + '@parcel/core': ^2.8.3 dependencies: - '@parcel/core': 2.7.0 - '@parcel/diagnostic': 2.7.0 - '@parcel/logger': 2.7.0 - '@parcel/types': 2.7.0 - '@parcel/utils': 2.7.0 + '@parcel/core': 2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/types': 2.8.3 + '@parcel/utils': 2.8.3 chrome-trace-event: 1.0.3 nullthrows: 1.1.1 dev: false @@ -5642,7 +5898,7 @@ packages: glob: 7.2.0 is-reference: 1.2.1 magic-string: 0.25.7 - resolve: 1.20.0 + resolve: 1.22.1 rollup: 2.79.1 dev: false @@ -5665,7 +5921,7 @@ packages: builtin-modules: 3.3.0 deepmerge: 4.2.2 is-module: 1.0.0 - resolve: 1.20.0 + resolve: 1.22.1 rollup: 2.79.1 dev: false @@ -5718,6 +5974,10 @@ packages: /@sinclair/typebox/0.24.41: resolution: {integrity: sha512-TJCgQurls4FipFvHeC+gfAzb+GGstL0TDwYJKQVtTeSvJIznWzP7g3bAd5gEBlr8+bIxqnWS9VGVWREDhmE8jA==} + dev: true + + /@sinclair/typebox/0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} /@sindresorhus/is/0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} @@ -5770,16 +6030,16 @@ packages: lodash.deburr: 4.1.0 dev: true - /@sinonjs/commons/1.8.3: - resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} + /@sinonjs/commons/2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: false - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers/10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: - '@sinonjs/commons': 1.8.3 + '@sinonjs/commons': 2.0.0 dev: false /@swc/core-android-arm64/1.3.0: @@ -5924,8 +6184,8 @@ packages: '@swc/core-win32-x64-msvc': 1.3.0 dev: false - /@swc/helpers/0.4.11: - resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==, tarball: https://packages.atlassian.com/api/npm/npm-remote/@swc/helpers/-/helpers-0.4.11.tgz} + /@swc/helpers/0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: tslib: 2.5.0 dev: false @@ -6021,7 +6281,6 @@ packages: '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 - dev: true /@types/babel__generator/7.6.3: resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} @@ -6054,6 +6313,16 @@ packages: '@types/node': 16.11.10 '@types/responselike': 1.0.0 + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.4 + dev: false + + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + dev: false + /@types/classnames/2.3.1: resolution: {integrity: sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==} deprecated: This is a stub types definition. classnames provides its own type definitions, so you do not need this installed. @@ -6234,12 +6503,12 @@ packages: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} dev: false - /@types/mini-css-extract-plugin/1.4.3_esbuild@0.16.17: + /@types/mini-css-extract-plugin/1.4.3_esbuild@0.17.6: resolution: {integrity: sha512-jyOSVaF4ie2jUGr1uohqeyDrp7ktRthdFxDKzTgbPZtl0QI5geEopW7UKD/DEfn0XgV1KEq/RnZlUmnrEAWbmg==} dependencies: '@types/node': 16.11.10 tapable: 2.2.1 - webpack: 5.64.2_esbuild@0.16.17 + webpack: 5.64.2_esbuild@0.17.6 transitivePeerDependencies: - '@swc/core' - esbuild @@ -6526,13 +6795,13 @@ packages: hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.10 - acorn: 8.8.1 + acorn: 8.8.2 async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 glob: 7.2.0 graceful-fs: 4.2.10 - micromatch: 4.0.4 + micromatch: 4.0.5 node-gyp-build: 4.5.0 resolve-from: 5.0.0 rollup-pluginutils: 2.8.2 @@ -6546,13 +6815,13 @@ packages: hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.10_supports-color@9.2.3 - acorn: 8.8.1 + acorn: 8.8.2 async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 glob: 7.2.0 graceful-fs: 4.2.10 - micromatch: 4.0.4 + micromatch: 4.0.5 node-gyp-build: 4.5.0 resolve-from: 5.0.0 rollup-pluginutils: 2.8.2 @@ -6561,6 +6830,38 @@ packages: - supports-color dev: true + /@vitest/expect/0.28.5: + resolution: {integrity: sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==} + dependencies: + '@vitest/spy': 0.28.5 + '@vitest/utils': 0.28.5 + chai: 4.3.7 + dev: false + + /@vitest/runner/0.28.5: + resolution: {integrity: sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==} + dependencies: + '@vitest/utils': 0.28.5 + p-limit: 4.0.0 + pathe: 1.1.0 + dev: false + + /@vitest/spy/0.28.5: + resolution: {integrity: sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==} + dependencies: + tinyspy: 1.1.1 + dev: false + + /@vitest/utils/0.28.5: + resolution: {integrity: sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==} + dependencies: + cli-truncate: 3.1.0 + diff: 5.1.0 + loupe: 2.3.6 + picocolors: 1.0.0 + pretty-format: 27.5.1 + dev: false + /@webassemblyjs/ast/1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: @@ -6696,7 +6997,7 @@ packages: dev: true /abortcontroller-polyfill/1.7.3: - resolution: {integrity: sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==, tarball: https://packages.atlassian.com/api/npm/npm-remote/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz} + resolution: {integrity: sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==} dev: false /accepts/1.3.7: @@ -6709,7 +7010,7 @@ packages: /acorn-globals/7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 dev: false @@ -6750,6 +7051,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -6916,7 +7222,7 @@ packages: dev: true /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} /ansi-regex/3.0.0: @@ -6934,7 +7240,6 @@ packages: /ansi-regex/6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-styles/1.1.0: resolution: {integrity: sha512-f2PKUkN5QngiSemowa6Mrk9MPCdtFiOSmibjZ+j1qhLGHHYsqZwmBMRF3IRMVXo8sybDqx2fJl2d/8OphBoWkA==} @@ -6965,7 +7270,6 @@ packages: /ansi-styles/6.1.1: resolution: {integrity: sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==} engines: {node: '>=12'} - dev: true /ansi-to-html/0.7.2: resolution: {integrity: sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==} @@ -7003,7 +7307,7 @@ packages: engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.0 + picomatch: 2.3.1 /aproba/2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -7142,6 +7446,10 @@ packages: object-is: 1.1.5 util: 0.12.4 + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: false + /assign-symbols/1.0.0: resolution: {integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=} engines: {node: '>=0.10.0'} @@ -7210,17 +7518,17 @@ packages: - supports-color dev: false - /babel-jest/29.3.1_@babel+core@7.20.7: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + /babel-jest/29.4.3_@babel+core@7.20.7: + resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.20.7 - '@jest/transform': 29.3.1 - '@types/babel__core': 7.1.19 + '@jest/transform': 29.4.3 + '@types/babel__core': 7.1.20 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.7 + babel-preset-jest: 29.4.3_@babel+core@7.20.7 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -7240,7 +7548,7 @@ packages: loader-utils: 1.4.0 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.64.2_webpack-cli@4.9.1 + webpack: 5.64.2_esbuild@0.17.6 /babel-loader/8.2.3_webpack@5.64.2: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} @@ -7290,17 +7598,17 @@ packages: dependencies: '@babel/template': 7.20.7 '@babel/types': 7.20.7 - '@types/babel__core': 7.1.19 + '@types/babel__core': 7.1.20 '@types/babel__traverse': 7.14.2 dev: false - /babel-plugin-jest-hoist/29.2.0: - resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + /babel-plugin-jest-hoist/29.4.3: + resolution: {integrity: sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 '@babel/types': 7.20.7 - '@types/babel__core': 7.1.19 + '@types/babel__core': 7.1.20 '@types/babel__traverse': 7.14.2 dev: false @@ -7401,14 +7709,14 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 dev: false - /babel-preset-jest/29.2.0_@babel+core@7.20.7: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + /babel-preset-jest/29.4.3_@babel+core@7.20.7: + resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.20.7 - babel-plugin-jest-hoist: 29.2.0 + babel-plugin-jest-hoist: 29.4.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 dev: false @@ -7427,7 +7735,7 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} /base-x/3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/base-x/-/base-x-3.0.9.tgz} + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: safe-buffer: 5.2.1 dev: false @@ -7555,7 +7863,7 @@ packages: multicast-dns-service-types: 1.1.0 /boolbase/1.0.0: - resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false /boxen/1.3.0: @@ -7811,6 +8119,11 @@ packages: resolution: {integrity: sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==} engines: {node: '>= 0.8'} + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: false + /cache-base/1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} @@ -7907,7 +8220,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.3.1 + tslib: 2.5.0 dev: false /camelcase-css/2.0.1: @@ -7924,7 +8237,7 @@ packages: dev: false /camelcase/4.1.0: - resolution: {integrity: sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=} + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} engines: {node: '>=4'} dev: false @@ -7952,6 +8265,19 @@ packages: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: true + /chai/4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: false + /chalk/0.5.1: resolution: {integrity: sha512-bIKA54hP8iZhyDT81TOsJiQvR1gW+ZYSXFaZUAvoD4wCHdbHY2actmpTE4x344ZlFqHbvoxKOaESULTZN2gstg==} engines: {node: '>=0.10.0'} @@ -8048,6 +8374,10 @@ packages: /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + /check-error/1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: false + /chokidar/2.1.8_supports-color@6.1.0: resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} deprecated: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. @@ -8215,6 +8545,14 @@ packages: string-width: 1.0.2 dev: true + /cli-truncate/3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: false + /cli-width/2.2.1: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} dev: true @@ -8259,7 +8597,7 @@ packages: engines: {node: '>=0.8'} /clone/2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, tarball: https://packages.atlassian.com/api/npm/npm-remote/clone/-/clone-2.1.2.tgz} + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} dev: false @@ -8713,13 +9051,13 @@ packages: /css-color-names/0.0.4: resolution: {integrity: sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=} - /css-declaration-sorter/6.1.3_postcss@8.4.16: + /css-declaration-sorter/6.1.3_postcss@8.4.21: resolution: {integrity: sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==} engines: {node: '>= 10'} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 timsort: 0.3.0 dev: false @@ -8783,42 +9121,42 @@ packages: engines: {node: '>=4'} hasBin: true - /cssnano-preset-default/5.1.7_postcss@8.4.16: + /cssnano-preset-default/5.1.7_postcss@8.4.21: resolution: {integrity: sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.1.3_postcss@8.4.16 - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-calc: 8.0.0_postcss@8.4.16 - postcss-colormin: 5.2.1_postcss@8.4.16 - postcss-convert-values: 5.0.2_postcss@8.4.16 - postcss-discard-comments: 5.0.1_postcss@8.4.16 - postcss-discard-duplicates: 5.0.1_postcss@8.4.16 - postcss-discard-empty: 5.0.1_postcss@8.4.16 - postcss-discard-overridden: 5.0.1_postcss@8.4.16 - postcss-merge-longhand: 5.0.4_postcss@8.4.16 - postcss-merge-rules: 5.0.3_postcss@8.4.16 - postcss-minify-font-values: 5.0.1_postcss@8.4.16 - postcss-minify-gradients: 5.0.3_postcss@8.4.16 - postcss-minify-params: 5.0.2_postcss@8.4.16 - postcss-minify-selectors: 5.1.0_postcss@8.4.16 - postcss-normalize-charset: 5.0.1_postcss@8.4.16 - postcss-normalize-display-values: 5.0.1_postcss@8.4.16 - postcss-normalize-positions: 5.0.1_postcss@8.4.16 - postcss-normalize-repeat-style: 5.0.1_postcss@8.4.16 - postcss-normalize-string: 5.0.1_postcss@8.4.16 - postcss-normalize-timing-functions: 5.0.1_postcss@8.4.16 - postcss-normalize-unicode: 5.0.1_postcss@8.4.16 - postcss-normalize-url: 5.0.3_postcss@8.4.16 - postcss-normalize-whitespace: 5.0.1_postcss@8.4.16 - postcss-ordered-values: 5.0.2_postcss@8.4.16 - postcss-reduce-initial: 5.0.1_postcss@8.4.16 - postcss-reduce-transforms: 5.0.1_postcss@8.4.16 - postcss-svgo: 5.0.3_postcss@8.4.16 - postcss-unique-selectors: 5.0.2_postcss@8.4.16 + css-declaration-sorter: 6.1.3_postcss@8.4.21 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-calc: 8.0.0_postcss@8.4.21 + postcss-colormin: 5.2.1_postcss@8.4.21 + postcss-convert-values: 5.0.2_postcss@8.4.21 + postcss-discard-comments: 5.0.1_postcss@8.4.21 + postcss-discard-duplicates: 5.0.1_postcss@8.4.21 + postcss-discard-empty: 5.0.1_postcss@8.4.21 + postcss-discard-overridden: 5.0.1_postcss@8.4.21 + postcss-merge-longhand: 5.0.4_postcss@8.4.21 + postcss-merge-rules: 5.0.3_postcss@8.4.21 + postcss-minify-font-values: 5.0.1_postcss@8.4.21 + postcss-minify-gradients: 5.0.3_postcss@8.4.21 + postcss-minify-params: 5.0.2_postcss@8.4.21 + postcss-minify-selectors: 5.1.0_postcss@8.4.21 + postcss-normalize-charset: 5.0.1_postcss@8.4.21 + postcss-normalize-display-values: 5.0.1_postcss@8.4.21 + postcss-normalize-positions: 5.0.1_postcss@8.4.21 + postcss-normalize-repeat-style: 5.0.1_postcss@8.4.21 + postcss-normalize-string: 5.0.1_postcss@8.4.21 + postcss-normalize-timing-functions: 5.0.1_postcss@8.4.21 + postcss-normalize-unicode: 5.0.1_postcss@8.4.21 + postcss-normalize-url: 5.0.3_postcss@8.4.21 + postcss-normalize-whitespace: 5.0.1_postcss@8.4.21 + postcss-ordered-values: 5.0.2_postcss@8.4.21 + postcss-reduce-initial: 5.0.1_postcss@8.4.21 + postcss-reduce-transforms: 5.0.1_postcss@8.4.21 + postcss-svgo: 5.0.3_postcss@8.4.21 + postcss-unique-selectors: 5.0.2_postcss@8.4.21 dev: false /cssnano-preset-simple/3.0.0_postcss@8.2.15: @@ -8840,25 +9178,25 @@ packages: cssnano-preset-simple: 3.0.0_postcss@8.2.15 postcss: 8.2.15 - /cssnano-utils/2.0.1_postcss@8.4.16: + /cssnano-utils/2.0.1_postcss@8.4.21: resolution: {integrity: sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 dev: false - /cssnano/5.0.11_postcss@8.4.16: + /cssnano/5.0.11_postcss@8.4.21: resolution: {integrity: sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 5.1.7_postcss@8.4.16 + cssnano-preset-default: 5.1.7_postcss@8.4.21 is-resolvable: 1.1.0 lilconfig: 2.0.4 - postcss: 8.4.16 + postcss: 8.4.21 yaml: 1.10.2 dev: false @@ -9144,6 +9482,13 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: false + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: false + /deep-equal/1.1.1: resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} dependencies: @@ -9355,8 +9700,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: is-url: 1.2.4 - postcss: 8.4.16 - postcss-values-parser: 6.0.2_postcss@8.4.16 + postcss: 8.4.21 + postcss-values-parser: 6.0.2_postcss@8.4.21 dev: true /detective-sass/4.0.1: @@ -9416,8 +9761,8 @@ packages: /didyoumean/1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - /diff-sequences/29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + /diff-sequences/29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: false @@ -9425,6 +9770,11 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: false + /diffie-hellman/5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} dependencies: @@ -9519,7 +9869,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.3.1 + tslib: 2.5.0 dev: false /dot-prop/5.3.0: @@ -9544,7 +9894,7 @@ packages: dev: true /dotenv-expand/5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/dotenv-expand/-/dotenv-expand-5.1.0.tgz} + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} dev: false /dotenv/16.0.2: @@ -9553,7 +9903,7 @@ packages: dev: true /dotenv/7.0.0: - resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==, tarball: https://packages.atlassian.com/api/npm/npm-remote/dotenv/-/dotenv-7.0.0.tgz} + resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} engines: {node: '>=6'} dev: false @@ -9588,7 +9938,6 @@ packages: /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true /ecdsa-sig-formatter/1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} @@ -9631,7 +9980,6 @@ packages: /emoji-regex/9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true /emojis-list/2.1.0: resolution: {integrity: sha1-TapNnbAPmBmIDHn6RXrlsJof04k=} @@ -9681,7 +10029,7 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} /entities/3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==, tarball: https://packages.atlassian.com/api/npm/npm-remote/entities/-/entities-3.0.1.tgz} + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} dev: false @@ -9939,6 +10287,36 @@ packages: '@esbuild/win32-arm64': 0.16.17 '@esbuild/win32-ia32': 0.16.17 '@esbuild/win32-x64': 0.16.17 + dev: false + + /esbuild/0.17.6: + resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.6 + '@esbuild/android-arm64': 0.17.6 + '@esbuild/android-x64': 0.17.6 + '@esbuild/darwin-arm64': 0.17.6 + '@esbuild/darwin-x64': 0.17.6 + '@esbuild/freebsd-arm64': 0.17.6 + '@esbuild/freebsd-x64': 0.17.6 + '@esbuild/linux-arm': 0.17.6 + '@esbuild/linux-arm64': 0.17.6 + '@esbuild/linux-ia32': 0.17.6 + '@esbuild/linux-loong64': 0.17.6 + '@esbuild/linux-mips64el': 0.17.6 + '@esbuild/linux-ppc64': 0.17.6 + '@esbuild/linux-riscv64': 0.17.6 + '@esbuild/linux-s390x': 0.17.6 + '@esbuild/linux-x64': 0.17.6 + '@esbuild/netbsd-x64': 0.17.6 + '@esbuild/openbsd-x64': 0.17.6 + '@esbuild/sunos-x64': 0.17.6 + '@esbuild/win32-arm64': 0.17.6 + '@esbuild/win32-ia32': 0.17.6 + '@esbuild/win32-x64': 0.17.6 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -10064,7 +10442,7 @@ packages: dev: true /execa/0.7.0: - resolution: {integrity: sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=} + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} engines: {node: '>=4'} dependencies: cross-spawn: 5.1.0 @@ -10169,11 +10547,22 @@ packages: resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.3.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + '@jest/expect-utils': 29.4.3 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 + dev: false + + /expect/29.4.3: + resolution: {integrity: sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.4.3 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 dev: false /express-logging/1.1.1: @@ -10660,7 +11049,7 @@ packages: /find-yarn-workspace-root2/1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: - micromatch: 4.0.4 + micromatch: 4.0.5 pkg-dir: 4.2.0 dev: false @@ -10873,6 +11262,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + /get-func-name/2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + dev: false + /get-intrinsic/1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} dependencies: @@ -11059,7 +11452,7 @@ packages: engines: {node: '>=4'} /globals/13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/globals/-/globals-13.20.0.tgz} + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -11573,8 +11966,8 @@ packages: webpack: 5.64.2_webpack-cli@4.9.1 dev: false - /htmlnano/2.0.3_vwmyjx2libiymgyhlnwgrk2lbe: - resolution: {integrity: sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==, tarball: https://packages.atlassian.com/api/npm/npm-remote/htmlnano/-/htmlnano-2.0.3.tgz} + /htmlnano/2.0.3_wrp22lcif6dxv2jmykrhdclx6y: + resolution: {integrity: sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==} peerDependencies: cssnano: ^5.0.11 postcss: ^8.3.11 @@ -11603,8 +11996,8 @@ packages: optional: true dependencies: cosmiconfig: 7.0.1 - cssnano: 5.0.11_postcss@8.4.16 - postcss: 8.4.16 + cssnano: 5.0.11_postcss@8.4.21 + postcss: 8.4.21 posthtml: 0.16.6 svgo: 2.8.0 timsort: 0.3.0 @@ -11620,7 +12013,7 @@ packages: dev: false /htmlparser2/7.2.0: - resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==, tarball: https://packages.atlassian.com/api/npm/npm-remote/htmlparser2/-/htmlparser2-7.2.0.tgz} + resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} dependencies: domelementtype: 2.2.0 domhandler: 4.2.2 @@ -11712,7 +12105,7 @@ packages: http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.4 + micromatch: 4.0.5 transitivePeerDependencies: - debug dev: false @@ -11730,7 +12123,7 @@ packages: http-proxy: 1.18.1_debug@4.3.4 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.4 + micromatch: 4.0.5 transitivePeerDependencies: - debug dev: true @@ -11908,7 +12301,7 @@ packages: wrappy: 1.0.2 /inherits/2.0.3: - resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -12029,7 +12422,7 @@ packages: has-tostringtag: 1.0.0 /is-arrayish/0.2.1: - resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} /is-arrayish/0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -12173,7 +12566,7 @@ packages: dev: true /is-fullwidth-code-point/2.0.0: - resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} /is-fullwidth-code-point/3.0.0: @@ -12183,7 +12576,6 @@ packages: /is-fullwidth-code-point/4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - dev: true /is-generator-fn/2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} @@ -12232,7 +12624,7 @@ packages: dev: true /is-json/2.0.1: - resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/is-json/-/is-json-2.0.1.tgz} + resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} dev: false /is-lower-case/1.1.3: @@ -12562,43 +12954,43 @@ packages: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} dev: false - /jest-changed-files/29.2.0: - resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + /jest-changed-files/29.4.3: + resolution: {integrity: sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: false - /jest-circus/29.3.1: - resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + /jest-circus/29.4.3: + resolution: {integrity: sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/environment': 29.4.3 + '@jest/expect': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-each: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-runtime: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 p-limit: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: false - /jest-cli/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + /jest-cli/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -12607,16 +12999,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1_ts-node@10.9.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.4.3_ts-node@10.9.1 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.0.3 - jest-config: 29.3.1_ts-node@10.9.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-config: 29.4.3_ts-node@10.9.1 + jest-util: 29.4.3 + jest-validate: 29.4.3 prompts: 2.4.2 yargs: 17.5.1 transitivePeerDependencies: @@ -12625,8 +13017,8 @@ packages: - ts-node dev: false - /jest-config/29.3.1_dzldzuw4l36u5566gumx6niqti: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config/29.4.3_dzldzuw4l36u5566gumx6niqti: + resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -12638,26 +13030,26 @@ packages: optional: true dependencies: '@babel/core': 7.20.7 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 + '@jest/test-sequencer': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 - babel-jest: 29.3.1_@babel+core@7.20.7 + babel-jest: 29.4.3_@babel+core@7.20.7 chalk: 4.1.2 ci-info: 3.3.0 deepmerge: 4.2.2 glob: 7.2.0 graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - micromatch: 4.0.4 + jest-circus: 29.4.3 + jest-environment-node: 29.4.3 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runner: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 + micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 strip-json-comments: 3.1.1 ts-node: 10.9.1_djsbtcegmovallx2poba2t3laq @@ -12665,8 +13057,8 @@ packages: - supports-color dev: false - /jest-config/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -12678,25 +13070,25 @@ packages: optional: true dependencies: '@babel/core': 7.20.7 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 - babel-jest: 29.3.1_@babel+core@7.20.7 + '@jest/test-sequencer': 29.4.3 + '@jest/types': 29.4.3 + babel-jest: 29.4.3_@babel+core@7.20.7 chalk: 4.1.2 ci-info: 3.3.0 deepmerge: 4.2.2 glob: 7.2.0 graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - micromatch: 4.0.4 + jest-circus: 29.4.3 + jest-environment-node: 29.4.3 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runner: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 + micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 strip-json-comments: 3.1.1 ts-node: 10.9.1_djsbtcegmovallx2poba2t3laq @@ -12704,36 +13096,36 @@ packages: - supports-color dev: false - /jest-diff/29.3.1: - resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + /jest-diff/29.4.3: + resolution: {integrity: sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: false - /jest-docblock/29.2.0: - resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + /jest-docblock/29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: false - /jest-each/29.3.1: - resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + /jest-each/29.4.3: + resolution: {integrity: sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 chalk: 4.1.2 - jest-get-type: 29.2.0 - jest-util: 29.3.1 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + jest-util: 29.4.3 + pretty-format: 29.4.3 dev: false - /jest-environment-jsdom/29.3.1: - resolution: {integrity: sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==} + /jest-environment-jsdom/29.4.3: + resolution: {integrity: sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -12741,13 +13133,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/jsdom': 20.0.1 '@types/node': 16.11.10 - jest-mock: 29.3.1 - jest-util: 29.3.1 + jest-mock: 29.4.3 + jest-util: 29.4.3 jsdom: 20.0.3 transitivePeerDependencies: - bufferutil @@ -12755,16 +13147,16 @@ packages: - utf-8-validate dev: false - /jest-environment-node/29.3.1: - resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + /jest-environment-node/29.4.3: + resolution: {integrity: sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 - jest-mock: 29.3.1 - jest-util: 29.3.1 + jest-mock: 29.4.3 + jest-util: 29.4.3 dev: false /jest-get-type/25.2.6: @@ -12777,8 +13169,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-get-type/29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + /jest-get-type/29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: false @@ -12796,7 +13188,7 @@ packages: jest-serializer: 27.0.6 jest-util: 27.3.1 jest-worker: 27.3.1 - micromatch: 4.0.4 + micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 @@ -12806,63 +13198,83 @@ packages: resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 '@types/node': 16.11.10 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 jest-regex-util: 29.2.0 - jest-util: 29.3.1 + jest-util: 29.4.3 jest-worker: 29.3.1 micromatch: 4.0.4 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 + dev: true - /jest-leak-detector/29.3.1: - resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + /jest-haste-map/29.4.3: + resolution: {integrity: sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + '@jest/types': 29.4.3 + '@types/graceful-fs': 4.1.5 + '@types/node': 16.11.10 + anymatch: 3.1.2 + fb-watchman: 2.0.1 + graceful-fs: 4.2.10 + jest-regex-util: 29.4.3 + jest-util: 29.4.3 + jest-worker: 29.4.3 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 dev: false - /jest-matcher-utils/29.3.1: - resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + /jest-leak-detector/29.4.3: + resolution: {integrity: sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.4.3 + dev: false + + /jest-matcher-utils/29.4.3: + resolution: {integrity: sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: false - /jest-message-util/29.3.1: - resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + /jest-message-util/29.4.3: + resolution: {integrity: sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 - micromatch: 4.0.4 - pretty-format: 29.3.1 + micromatch: 4.0.5 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.5 dev: false - /jest-mock/29.3.1: - resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + /jest-mock/29.4.3: + resolution: {integrity: sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/node': 16.11.10 - jest-util: 29.3.1 + jest-util: 29.4.3 dev: false - /jest-pnp-resolver/1.2.2_jest-resolve@29.3.1: + /jest-pnp-resolver/1.2.2_jest-resolve@29.4.3: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -12871,7 +13283,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.3.1 + jest-resolve: 29.4.3 dev: false /jest-regex-util/27.0.6: @@ -12882,85 +13294,91 @@ packages: /jest-regex-util/29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-regex-util/29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false - /jest-resolve-dependencies/29.3.1: - resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + /jest-resolve-dependencies/29.4.3: + resolution: {integrity: sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.2.0 - jest-snapshot: 29.3.1 + jest-regex-util: 29.4.3 + jest-snapshot: 29.4.3 transitivePeerDependencies: - supports-color dev: false - /jest-resolve/29.3.1: - resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + /jest-resolve/29.4.3: + resolution: {integrity: sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-pnp-resolver: 1.2.2_jest-resolve@29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - resolve: 1.20.0 - resolve.exports: 1.1.0 + jest-haste-map: 29.4.3 + jest-pnp-resolver: 1.2.2_jest-resolve@29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 + resolve: 1.22.1 + resolve.exports: 2.0.0 slash: 3.0.0 dev: false - /jest-runner/29.3.1: - resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + /jest-runner/29.4.3: + resolution: {integrity: sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/environment': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.4.3 + '@jest/environment': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 - jest-docblock: 29.2.0 - jest-environment-node: 29.3.1 - jest-haste-map: 29.3.1 - jest-leak-detector: 29.3.1 - jest-message-util: 29.3.1 - jest-resolve: 29.3.1 - jest-runtime: 29.3.1 - jest-util: 29.3.1 - jest-watcher: 29.3.1 - jest-worker: 29.3.1 + jest-docblock: 29.4.3 + jest-environment-node: 29.4.3 + jest-haste-map: 29.4.3 + jest-leak-detector: 29.4.3 + jest-message-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runtime: 29.4.3 + jest-util: 29.4.3 + jest-watcher: 29.4.3 + jest-worker: 29.4.3 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: false - /jest-runtime/29.3.1: - resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + /jest-runtime/29.4.3: + resolution: {integrity: sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/globals': 29.3.1 - '@jest/source-map': 29.2.0 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/globals': 29.4.3 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.0 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-haste-map: 29.4.3 + jest-message-util: 29.4.3 + jest-mock: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: @@ -12975,8 +13393,8 @@ packages: graceful-fs: 4.2.10 dev: false - /jest-snapshot/29.3.1: - resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + /jest-snapshot/29.4.3: + resolution: {integrity: sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.7 @@ -12985,23 +13403,23 @@ packages: '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.7 '@babel/traverse': 7.20.10 '@babel/types': 7.20.7 - '@jest/expect-utils': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/expect-utils': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/babel__traverse': 7.14.2 '@types/prettier': 2.4.2 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 chalk: 4.1.2 - expect: 29.3.1 + expect: 29.4.3 graceful-fs: 4.2.10 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - jest-haste-map: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + jest-haste-map: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 natural-compare: 1.4.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 semver: 7.3.7 transitivePeerDependencies: - supports-color @@ -13016,19 +13434,31 @@ packages: chalk: 4.1.2 ci-info: 3.3.0 graceful-fs: 4.2.10 - picomatch: 2.3.0 + picomatch: 2.3.1 dev: false /jest-util/29.3.1: resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/node': 16.11.10 chalk: 4.1.2 ci-info: 3.3.0 graceful-fs: 4.2.10 picomatch: 2.3.0 + dev: true + + /jest-util/29.4.3: + resolution: {integrity: sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.3 + '@types/node': 16.11.10 + chalk: 4.1.2 + ci-info: 3.3.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 /jest-validate/25.5.0: resolution: {integrity: sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==} @@ -13054,29 +13484,29 @@ packages: pretty-format: 27.5.1 dev: true - /jest-validate/29.3.1: - resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + /jest-validate/29.4.3: + resolution: {integrity: sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 camelcase: 6.2.1 chalk: 4.1.2 - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 dev: false - /jest-watcher/29.3.1: - resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + /jest-watcher/29.4.3: + resolution: {integrity: sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 16.11.10 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.3.1 + jest-util: 29.4.3 string-length: 4.0.2 dev: false @@ -13110,12 +13540,23 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 16.11.10 - jest-util: 29.3.1 + jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true - /jest/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + /jest-worker/29.4.3: + resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 16.11.10 + jest-util: 29.4.3 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + + /jest/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -13124,10 +13565,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1_ts-node@10.9.1 - '@jest/types': 29.3.1 + '@jest/core': 29.4.3_ts-node@10.9.1 + '@jest/types': 29.4.3 import-local: 3.0.3 - jest-cli: 29.3.1_ts-node@10.9.1 + jest-cli: 29.4.3_ts-node@10.9.1 transitivePeerDependencies: - '@types/node' - supports-color @@ -13171,7 +13612,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.8.2 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -13400,8 +13841,8 @@ packages: prelude-ls: 1.1.2 type-check: 0.3.2 - /lightningcss-darwin-arm64/1.16.0: - resolution: {integrity: sha512-gIhz6eZFwsC4oVMjBGQ3QWDdLQY7vcXFyM/x91PilgHqu63B9uBa10EZA75YoTEkbKhoz0uDCqyHh/EoF1GrkQ==} + /lightningcss-darwin-arm64/1.19.0: + resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -13409,8 +13850,8 @@ packages: dev: false optional: true - /lightningcss-darwin-x64/1.16.0: - resolution: {integrity: sha512-kLPi+OEpDj3UGY6DC8TfjbcULJDKMP+TVKSlrEkNGn8t1YRzi2g4oy7UVTSB5AnSbT0CusUItzdVjHQ49EdoNA==} + /lightningcss-darwin-x64/1.19.0: + resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -13418,8 +13859,8 @@ packages: dev: false optional: true - /lightningcss-linux-arm-gnueabihf/1.16.0: - resolution: {integrity: sha512-oSwEbvXUPr//H/ainBRJXTxHerlheee/KgkTTmAQWiVnt8HV+bRohTBWWPBy5ZArgiGLwj7ogv45istgljPN2Q==} + /lightningcss-linux-arm-gnueabihf/1.19.0: + resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -13427,48 +13868,44 @@ packages: dev: false optional: true - /lightningcss-linux-arm64-gnu/1.16.0: - resolution: {integrity: sha512-Drq9BSVIvmV9zsDJbCZWCulMvKMQWFIlYXPCKV/iwRj+ZAJ1BRngma0cNHB6uW7Wac8Jg04CJN5IA4ELE3J+cQ==} + /lightningcss-linux-arm64-gnu/1.19.0: + resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] requiresBuild: true dev: false optional: true - /lightningcss-linux-arm64-musl/1.16.0: - resolution: {integrity: sha512-1QXWStnTEo4RFQf0mfGhRyNUeEHilCZ0NA97XgwKwrYr/M7sYKU/1HWY00dPxFJ6GITR2pfJGo9xi3ScSSBxbA==} + /lightningcss-linux-arm64-musl/1.19.0: + resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] requiresBuild: true dev: false optional: true - /lightningcss-linux-x64-gnu/1.16.0: - resolution: {integrity: sha512-gD2eQYD5OFs1p83R0TcMCEc5HRyJES4lR4THmclv7khm3dc9vc+2VT0kFBPxO1L2AwlZuvXaaMan7X1Ul7uSfA==} + /lightningcss-linux-x64-gnu/1.19.0: + resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] requiresBuild: true dev: false optional: true - /lightningcss-linux-x64-musl/1.16.0: - resolution: {integrity: sha512-HJsKeYxloEvg2WCQhtYPqzZUliLu9JBJNeI5y9cPQeDR/7ayGGLbVhJaotPtzJkElOFL/SaXsS+FRuH4w+yafg==} + /lightningcss-linux-x64-musl/1.19.0: + resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] requiresBuild: true dev: false optional: true - /lightningcss-win32-x64-msvc/1.16.0: - resolution: {integrity: sha512-h4ayyAlOMLUHV9NdofcIu79aEjmly93adVxcg5wDJpkvMiwDTufEN30M8G4gGcjo1JE5jFjAcyQcRpXYkYcemA==} + /lightningcss-win32-x64-msvc/1.19.0: + resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -13476,24 +13913,29 @@ packages: dev: false optional: true - /lightningcss/1.16.0: - resolution: {integrity: sha512-5+ZS9h+xeADcJTF2oRCT3yNZBlDYyOgQSdrWNBCqsIwm8ucKbF061OBVv/WHP4Zk8FToNhwFklk/hMuOngqsIg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/lightningcss/-/lightningcss-1.16.0.tgz} + /lightningcss/1.19.0: + resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.16.0 - lightningcss-darwin-x64: 1.16.0 - lightningcss-linux-arm-gnueabihf: 1.16.0 - lightningcss-linux-arm64-gnu: 1.16.0 - lightningcss-linux-arm64-musl: 1.16.0 - lightningcss-linux-x64-gnu: 1.16.0 - lightningcss-linux-x64-musl: 1.16.0 - lightningcss-win32-x64-msvc: 1.16.0 + lightningcss-darwin-arm64: 1.19.0 + lightningcss-darwin-x64: 1.19.0 + lightningcss-linux-arm-gnueabihf: 1.19.0 + lightningcss-linux-arm64-gnu: 1.19.0 + lightningcss-linux-arm64-musl: 1.19.0 + lightningcss-linux-x64-gnu: 1.19.0 + lightningcss-linux-x64-musl: 1.19.0 + lightningcss-win32-x64-msvc: 1.19.0 + dev: false + + /lilconfig/2.0.4: + resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} + engines: {node: '>=10'} dev: false - /lilconfig/2.0.4: - resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} /lines-and-columns/1.2.4: @@ -13605,6 +14047,11 @@ packages: emojis-list: 3.0.0 json5: 2.2.1 + /local-pkg/0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: false + /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -13782,6 +14229,12 @@ packages: dependencies: js-tokens: 4.0.0 + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.0 + dev: false + /lower-case-first/1.0.2: resolution: {integrity: sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=} dependencies: @@ -13795,7 +14248,7 @@ packages: /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.3.1 + tslib: 2.5.0 dev: false /lowercase-keys/1.0.0: @@ -14206,6 +14659,13 @@ packages: braces: 3.0.2 picomatch: 2.3.0 + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + /miller-rabin/4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true @@ -14901,7 +15361,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.3.1 + tslib: 2.5.0 dev: false /node-addon-api/3.2.1: @@ -15030,7 +15490,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.20.0 + resolve: 1.22.1 semver: 5.7.1 validate-npm-package-license: 3.0.4 @@ -15045,7 +15505,7 @@ packages: dev: true /normalize-path/2.1.1: - resolution: {integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=} + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 @@ -15413,7 +15873,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 - dev: true /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} @@ -15551,7 +16010,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.3.1 + tslib: 2.5.0 dev: false /parent-module/1.0.1: @@ -15653,7 +16112,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.3.1 + tslib: 2.5.0 dev: false /pascalcase/0.1.1: @@ -15673,7 +16132,7 @@ packages: resolution: {integrity: sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=} /path-exists/3.0.0: - resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} /path-exists/4.0.0: @@ -15740,6 +16199,10 @@ packages: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: false + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: false + /pbkdf2/3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} @@ -15761,6 +16224,10 @@ packages: resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + /pify/2.3.0: resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} engines: {node: '>=0.10.0'} @@ -15855,17 +16322,17 @@ packages: resolution: {integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=} engines: {node: '>=0.10.0'} - /postcss-calc/8.0.0_postcss@8.4.16: + /postcss-calc/8.0.0_postcss@8.4.21: resolution: {integrity: sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 postcss-selector-parser: 6.0.6 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: false - /postcss-colormin/5.2.1_postcss@8.4.16: + /postcss-colormin/5.2.1_postcss@8.4.21: resolution: {integrity: sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -15874,54 +16341,54 @@ packages: browserslist: 4.21.4 caniuse-api: 3.0.0 colord: 2.9.1 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-convert-values/5.0.2_postcss@8.4.16: + /postcss-convert-values/5.0.2_postcss@8.4.21: resolution: {integrity: sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-discard-comments/5.0.1_postcss@8.4.16: + /postcss-discard-comments/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 dev: false - /postcss-discard-duplicates/5.0.1_postcss@8.4.16: + /postcss-discard-duplicates/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 dev: false - /postcss-discard-empty/5.0.1_postcss@8.4.16: + /postcss-discard-empty/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 dev: false - /postcss-discard-overridden/5.0.1_postcss@8.4.16: + /postcss-discard-overridden/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 dev: false /postcss-js/3.0.3: @@ -15929,7 +16396,7 @@ packages: engines: {node: '>=10.0'} dependencies: camelcase-css: 2.0.1 - postcss: 8.4.16 + postcss: 8.4.21 /postcss-load-config/3.1.0: resolution: {integrity: sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==} @@ -15941,21 +16408,21 @@ packages: optional: true dependencies: import-cwd: 3.0.0 - lilconfig: 2.0.4 + lilconfig: 2.0.6 yaml: 1.10.2 - /postcss-merge-longhand/5.0.4_postcss@8.4.16: + /postcss-merge-longhand/5.0.4_postcss@8.4.21: resolution: {integrity: sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 - stylehacks: 5.0.1_postcss@8.4.16 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + stylehacks: 5.0.1_postcss@8.4.21 dev: false - /postcss-merge-rules/5.0.3_postcss@8.4.16: + /postcss-merge-rules/5.0.3_postcss@8.4.21: resolution: {integrity: sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -15963,34 +16430,34 @@ packages: dependencies: browserslist: 4.21.4 caniuse-api: 3.0.0 - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 postcss-selector-parser: 6.0.6 dev: false - /postcss-minify-font-values/5.0.1_postcss@8.4.16: + /postcss-minify-font-values/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-minify-gradients/5.0.3_postcss@8.4.16: + /postcss-minify-gradients/5.0.3_postcss@8.4.21: resolution: {integrity: sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.1 - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-minify-params/5.0.2_postcss@8.4.16: + /postcss-minify-params/5.0.2_postcss@8.4.21: resolution: {integrity: sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -15998,19 +16465,19 @@ packages: dependencies: alphanum-sort: 1.0.2 browserslist: 4.21.4 - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-minify-selectors/5.1.0_postcss@8.4.16: + /postcss-minify-selectors/5.1.0_postcss@8.4.21: resolution: {integrity: sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: alphanum-sort: 1.0.2 - postcss: 8.4.16 + postcss: 8.4.21 postcss-selector-parser: 6.0.6 dev: false @@ -16059,80 +16526,80 @@ packages: dependencies: postcss-selector-parser: 6.0.6 - /postcss-normalize-charset/5.0.1_postcss@8.4.16: + /postcss-normalize-charset/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 + postcss: 8.4.21 dev: false - /postcss-normalize-display-values/5.0.1_postcss@8.4.16: + /postcss-normalize-display-values/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-positions/5.0.1_postcss@8.4.16: + /postcss-normalize-positions/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-repeat-style/5.0.1_postcss@8.4.16: + /postcss-normalize-repeat-style/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-string/5.0.1_postcss@8.4.16: + /postcss-normalize-string/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-timing-functions/5.0.1_postcss@8.4.16: + /postcss-normalize-timing-functions/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-unicode/5.0.1_postcss@8.4.16: + /postcss-normalize-unicode/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.21.4 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-url/5.0.3_postcss@8.4.16: + /postcss-normalize-url/5.0.3_postcss@8.4.21: resolution: {integrity: sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -16140,32 +16607,32 @@ packages: dependencies: is-absolute-url: 3.0.3 normalize-url: 6.1.0 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-whitespace/5.0.1_postcss@8.4.16: + /postcss-normalize-whitespace/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-ordered-values/5.0.2_postcss@8.4.16: + /postcss-ordered-values/5.0.2_postcss@8.4.21: resolution: {integrity: sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-initial/5.0.1_postcss@8.4.16: + /postcss-reduce-initial/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -16173,18 +16640,18 @@ packages: dependencies: browserslist: 4.21.4 caniuse-api: 3.0.0 - postcss: 8.4.16 + postcss: 8.4.21 dev: false - /postcss-reduce-transforms/5.0.1_postcss@8.4.16: + /postcss-reduce-transforms/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 2.0.1_postcss@8.4.16 - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + cssnano-utils: 2.0.1_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false /postcss-selector-parser/6.0.6: @@ -16194,25 +16661,25 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-svgo/5.0.3_postcss@8.4.16: + /postcss-svgo/5.0.3_postcss@8.4.21: resolution: {integrity: sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: false - /postcss-unique-selectors/5.0.2_postcss@8.4.16: + /postcss-unique-selectors/5.0.2_postcss@8.4.21: resolution: {integrity: sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: alphanum-sort: 1.0.2 - postcss: 8.4.16 + postcss: 8.4.21 postcss-selector-parser: 6.0.6 dev: false @@ -16223,10 +16690,10 @@ packages: resolution: {integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==} /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz} + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss-values-parser/6.0.2_postcss@8.4.16: + /postcss-values-parser/6.0.2_postcss@8.4.21: resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} engines: {node: '>=10'} peerDependencies: @@ -16234,7 +16701,7 @@ packages: dependencies: color-name: 1.1.4 is-url-superb: 4.0.0 - postcss: 8.4.16 + postcss: 8.4.21 quote-unquote: 1.0.0 dev: true @@ -16254,29 +16721,37 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + /posthtml-parser/0.10.2: - resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/posthtml-parser/-/posthtml-parser-0.10.2.tgz} + resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} engines: {node: '>=12'} dependencies: htmlparser2: 7.2.0 dev: false /posthtml-parser/0.11.0: - resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==, tarball: https://packages.atlassian.com/api/npm/npm-remote/posthtml-parser/-/posthtml-parser-0.11.0.tgz} + resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} engines: {node: '>=12'} dependencies: htmlparser2: 7.2.0 dev: false /posthtml-render/3.0.0: - resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==, tarball: https://packages.atlassian.com/api/npm/npm-remote/posthtml-render/-/posthtml-render-3.0.0.tgz} + resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} engines: {node: '>=12'} dependencies: is-json: 2.0.1 dev: false /posthtml/0.16.6: - resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/posthtml/-/posthtml-0.16.6.tgz} + resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} engines: {node: '>=12.0.0'} dependencies: posthtml-parser: 0.11.0 @@ -16394,13 +16869,21 @@ packages: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true /pretty-format/29.3.1: resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: false + + /pretty-format/29.4.3: + resolution: {integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: false @@ -16505,7 +16988,7 @@ packages: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} /punycode/1.4.1: - resolution: {integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4=} + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false /punycode/2.1.1: @@ -16525,7 +17008,7 @@ packages: dependencies: commander: 6.2.1 glob: 7.2.0 - postcss: 8.4.16 + postcss: 8.4.21 postcss-selector-parser: 6.0.6 /qs/6.11.0: @@ -16645,7 +17128,7 @@ packages: dev: false /react-error-overlay/6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==, tarball: https://packages.atlassian.com/api/npm/npm-remote/react-error-overlay/-/react-error-overlay-6.0.9.tgz} + resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} dev: false /react-head/3.4.0_sfoxds7t5ydpegc3knd667wn6m: @@ -16674,7 +17157,7 @@ packages: engines: {node: '>=0.10.0'} /react-refresh/0.9.0: - resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==, tarball: https://packages.atlassian.com/api/npm/npm-remote/react-refresh/-/react-refresh-0.9.0.tgz} + resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} engines: {node: '>=0.10.0'} dev: false @@ -16862,7 +17345,7 @@ packages: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.20.0 + resolve: 1.22.1 /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -17090,7 +17573,7 @@ packages: dev: true /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} /require-from-string/2.0.2: @@ -17128,7 +17611,7 @@ packages: resolve-from: 5.0.0 /resolve-from/3.0.0: - resolution: {integrity: sha1-six699nWiBvItuZTM17rywoYh0g=} + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} engines: {node: '>=4'} /resolve-from/4.0.0: @@ -17152,12 +17635,25 @@ packages: engines: {node: '>=10'} dev: false + /resolve.exports/2.0.0: + resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} + engines: {node: '>=10'} + dev: false + /resolve/1.20.0: resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} dependencies: is-core-module: 2.10.0 path-parse: 1.0.7 + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + /resolve/2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true @@ -17260,7 +17756,7 @@ packages: '@babel/code-frame': 7.18.6 dev: false - /rollup-plugin-esbuild/4.9.1_uiao7appyg7pvh5lt4amcal6cy: + /rollup-plugin-esbuild/4.9.1_72vqmc7tx7ptj43i3kyzp2skqu: resolution: {integrity: sha512-qn/x7Wz9p3Xnva99qcb+nopH0d2VJwVnsxJTGEg+Sh2Z3tqQl33MhOwzekVo1YTKgv+yAmosjcBRJygMfGrtLw==} engines: {node: '>=12'} peerDependencies: @@ -17270,7 +17766,7 @@ packages: '@rollup/pluginutils': 4.2.1 debug: 4.3.4 es-module-lexer: 0.9.3 - esbuild: 0.16.17 + esbuild: 0.17.6 joycon: 3.1.1 jsonc-parser: 3.0.0 rollup: 2.79.1 @@ -17300,6 +17796,14 @@ packages: optionalDependencies: fsevents: 2.3.2 + /rollup/3.17.2: + resolution: {integrity: sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: false + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -17611,6 +18115,10 @@ packages: get-intrinsic: 1.1.1 object-inspect: 1.11.0 + /siginfo/2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: false + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -17656,7 +18164,6 @@ packages: dependencies: ansi-styles: 6.1.1 is-fullwidth-code-point: 4.0.0 - dev: true /smartwrap/1.2.5: resolution: {integrity: sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==} @@ -17905,8 +18412,14 @@ packages: /sprintf-js/1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /srcset/4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} + dev: false + /stable/0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: false /stack-generator/2.0.10: @@ -17926,6 +18439,10 @@ packages: escape-string-regexp: 2.0.0 dev: false + /stackback/0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: false + /stackframe/1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: true @@ -17968,6 +18485,10 @@ packages: resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} engines: {node: '>= 0.6'} + /std-env/3.3.2: + resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} + dev: false + /stream-browserify/3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -18054,7 +18575,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.0.1 - dev: true /string.prototype.trimend/1.0.4: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} @@ -18119,7 +18639,6 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true /strip-bom-string/1.0.0: resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=} @@ -18127,7 +18646,7 @@ packages: dev: true /strip-bom/3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: false @@ -18171,6 +18690,12 @@ packages: engines: {node: '>=8'} dev: false + /strip-literal/1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + dependencies: + acorn: 8.8.2 + dev: false + /strip-outer/1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} @@ -18186,7 +18711,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 5.64.2_esbuild@0.16.17 + webpack: 5.64.2_esbuild@0.17.6 dev: false /style-to-object/0.3.0: @@ -18236,14 +18761,14 @@ packages: stylis-rule-sheet: 0.0.10_stylis@3.5.4 dev: false - /stylehacks/5.0.1_postcss@8.4.16: + /stylehacks/5.0.1_postcss@8.4.21: resolution: {integrity: sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.21.4 - postcss: 8.4.16 + postcss: 8.4.21 postcss-selector-parser: 6.0.6 dev: false @@ -18308,7 +18833,6 @@ packages: /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /svgo/2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} @@ -18472,7 +18996,7 @@ packages: supports-hyperlinks: 2.2.0 dev: true - /terser-webpack-plugin/5.2.5_3unswyumjlk6wqviopuozqbhqm: + /terser-webpack-plugin/5.2.5_dhjlflamz74snw5vqhz4pqvd2u: resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -18488,14 +19012,13 @@ packages: uglify-js: optional: true dependencies: - esbuild: 0.16.17 + esbuild: 0.17.6 jest-worker: 27.3.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0 - webpack: 5.64.2_esbuild@0.16.17 - dev: false + webpack: 5.64.2_esbuild@0.17.6 /terser-webpack-plugin/5.2.5_webpack@5.64.2: resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} @@ -18518,7 +19041,7 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0 - webpack: 5.64.2 + webpack: 5.64.2_webpack-cli@4.9.1 /terser/5.10.0: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} @@ -18528,7 +19051,7 @@ packages: acorn: optional: true dependencies: - acorn: 8.8.1 + acorn: 8.8.2 commander: 2.20.3 source-map: 0.7.3 source-map-support: 0.5.21 @@ -18594,7 +19117,7 @@ packages: setimmediate: 1.0.5 /timsort/0.3.0: - resolution: {integrity: sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=} + resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false /tiny-invariant/1.2.0: @@ -18605,6 +19128,20 @@ packages: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} dev: false + /tinybench/2.3.1: + resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} + dev: false + + /tinypool/0.3.1: + resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} + engines: {node: '>=14.0.0'} + dev: false + + /tinyspy/1.1.1: + resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} + engines: {node: '>=14.0.0'} + dev: false + /title-case/2.1.1: resolution: {integrity: sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=} dependencies: @@ -18827,12 +19364,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.3.1: - resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - dev: false - /tslib/2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, tarball: https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-2.5.0.tgz} + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false /tsutils/3.21.0_typescript@4.9.4: @@ -19418,6 +19951,52 @@ packages: vfile-message: 2.0.4 dev: true + /vite-node/0.28.5: + resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} + engines: {node: '>=v14.16.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.1.0 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.1.4 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: false + + /vite-node/0.28.5_@types+node@16.11.10: + resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} + engines: {node: '>=v14.16.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.1.0 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.1.4_@types+node@16.11.10 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: false + /vite/2.7.2: resolution: {integrity: sha512-wMffVVdKZRZP/HwW3yttKL8X+IJePz7bUcnGm0vqljffpVwHpjWC3duZtJQHAGvy+wrTjmwU7vkULpZ1dVXY6w==} engines: {node: '>=12.2.0'} @@ -19435,12 +20014,134 @@ packages: optional: true dependencies: esbuild: 0.13.15 - postcss: 8.4.16 - resolve: 1.20.0 + postcss: 8.4.21 + resolve: 1.22.1 rollup: 2.79.1 optionalDependencies: fsevents: 2.3.2 + /vite/4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.17.2 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /vite/4.1.4_@types+node@16.11.10: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 16.11.10 + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.17.2 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /vitest/0.28.5: + resolution: {integrity: sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 16.11.10 + '@vitest/expect': 0.28.5 + '@vitest/runner': 0.28.5 + '@vitest/spy': 0.28.5 + '@vitest/utils': 0.28.5 + acorn: 8.8.2 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.3 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + std-env: 3.3.2 + strip-literal: 1.0.1 + tinybench: 2.3.1 + tinypool: 0.3.1 + tinyspy: 1.1.1 + vite: 4.1.4_@types+node@16.11.10 + vite-node: 0.28.5_@types+node@16.11.10 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: false + /vm-browserify/1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} @@ -19703,7 +20404,7 @@ packages: strip-ansi: 3.0.1 supports-color: 6.1.0 url: 0.11.0 - webpack: 5.64.2_esbuild@0.16.17 + webpack: 5.64.2_esbuild@0.17.6 webpack-dev-middleware: 3.7.3_webpack@5.64.2 webpack-log: 2.0.0 ws: 6.2.2 @@ -19779,8 +20480,9 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true - /webpack/5.64.2_esbuild@0.16.17: + /webpack/5.64.2_esbuild@0.17.6: resolution: {integrity: sha512-4KGc0+Ozi0aS3EaLNRvEppfZUer+CaORKqL6OBjDLZOPf9YfN8leagFzwe6/PoBdHFxc/utKArl8LMC0Ivtmdg==} engines: {node: '>=10.13.0'} hasBin: true @@ -19811,14 +20513,13 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.2.5_3unswyumjlk6wqviopuozqbhqm + terser-webpack-plugin: 5.2.5_dhjlflamz74snw5vqhz4pqvd2u watchpack: 2.3.0 webpack-sources: 3.2.2 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: false /webpack/5.64.2_webpack-cli@4.9.1: resolution: {integrity: sha512-4KGc0+Ozi0aS3EaLNRvEppfZUer+CaORKqL6OBjDLZOPf9YfN8leagFzwe6/PoBdHFxc/utKArl8LMC0Ivtmdg==} @@ -19954,6 +20655,15 @@ packages: dependencies: isexe: 2.0.0 + /why-is-node-running/2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: false + /wide-align/1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: @@ -20239,7 +20949,6 @@ packages: /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true /zip-stream/4.1.0: resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} diff --git a/test-helpers/package.json b/test-helpers/package.json index 063fa5e02..8ada3e8d7 100644 --- a/test-helpers/package.json +++ b/test-helpers/package.json @@ -18,13 +18,14 @@ "@types/mini-css-extract-plugin": "^1.2.2", "@types/webpack-dev-server": "^3.11.1", "@vanilla-extract/esbuild-plugin": "*", + "@vanilla-extract/esbuild-plugin-next": "*", "@vanilla-extract/parcel-transformer": "*", "@vanilla-extract/vite-plugin": "*", "@vanilla-extract/webpack-plugin": "*", "babel-loader": "^8.2.2", "css-loader": "^5.2.4", "cssnano": "^5.0.8", - "esbuild": "^0.16.3", + "esbuild": "0.17.6", "got": "^11.8.2", "html-webpack-plugin": "^5.3.1", "mini-css-extract-plugin": "^1.5.1", @@ -35,7 +36,7 @@ "prettier": "^2.8.1", "serve-handler": "^6.1.3", "style-loader": "^2.0.0", - "vite": "^2.7.0", + "vite": "npm:vite@^2.7.0", "webpack": "^5.36.1", "webpack-dev-server": "^3.11.2", "webpack-merge": "^5.7.3" diff --git a/test-helpers/src/startFixture/esbuild.ts b/test-helpers/src/startFixture/esbuild.ts index 3baeebfa2..cb2280bfa 100644 --- a/test-helpers/src/startFixture/esbuild.ts +++ b/test-helpers/src/startFixture/esbuild.ts @@ -2,12 +2,13 @@ import path from 'path'; import { existsSync, promises as fs } from 'fs'; import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; -import { serve } from 'esbuild'; +import { vanillaExtractPlugin as vanillaExtractPluginNext } from '@vanilla-extract/esbuild-plugin-next'; +import * as esbuild from 'esbuild'; import { TestServer } from './types'; export interface EsbuildFixtureOptions { - type: 'esbuild' | 'esbuild-runtime'; + type: 'esbuild' | 'esbuild-runtime' | 'esbuild-next' | 'esbuild-next-runtime'; mode?: 'development' | 'production'; port: number; } @@ -15,6 +16,9 @@ export const startEsbuildFixture = async ( fixtureName: string, { type, mode = 'development', port = 3000 }: EsbuildFixtureOptions, ): Promise => { + const plugin = type.includes('next') + ? vanillaExtractPluginNext + : vanillaExtractPlugin; const entry = require.resolve(`@fixtures/${fixtureName}/src/index.ts`); const absWorkingDir = path.dirname( require.resolve(`@fixtures/${fixtureName}/package.json`), @@ -27,23 +31,22 @@ export const startEsbuildFixture = async ( await fs.mkdir(outdir, { recursive: true }); - const server = await serve( - { servedir: outdir, port }, - { - entryPoints: [entry], - metafile: true, - platform: 'browser', - bundle: true, - minify: mode === 'production', - plugins: [ - vanillaExtractPlugin({ - runtime: type === 'esbuild-runtime', - }), - ], - absWorkingDir, - outdir, - }, - ); + const ctx = await esbuild.context({ + entryPoints: [entry], + metafile: true, + platform: 'browser', + bundle: true, + minify: mode === 'production', + plugins: [ + plugin({ + runtime: type.includes('runtime'), + }), + ], + absWorkingDir, + outdir, + }); + + const server = await ctx.serve({ servedir: outdir, port }); await fs.writeFile( path.join(outdir, 'index.html'), @@ -66,7 +69,7 @@ export const startEsbuildFixture = async ( url: `http://${server.host}:${port}`, stylesheet: 'index.css', close: () => { - server.stop(); + ctx.dispose(); return Promise.resolve(); }, diff --git a/test-helpers/src/startFixture/index.ts b/test-helpers/src/startFixture/index.ts index 8ee4f6488..755aa4d07 100644 --- a/test-helpers/src/startFixture/index.ts +++ b/test-helpers/src/startFixture/index.ts @@ -10,7 +10,9 @@ type BuildType = | 'mini-css-extract' | 'style-loader' | 'esbuild' + | 'esbuild-next' | 'esbuild-runtime' + | 'esbuild-next-runtime' | 'vite' | 'parcel'; @@ -50,7 +52,12 @@ export async function startFixture( ].join('\n'), ); - if (type === 'esbuild' || type === 'esbuild-runtime') { + if ( + type === 'esbuild' || + type === 'esbuild-runtime' || + type === 'esbuild-next' || + type === 'esbuild-next-runtime' + ) { return startEsbuildFixture(fixtureName, { type, port, diff --git a/tests/compiler/compiler.vitest.test.ts b/tests/compiler/compiler.vitest.test.ts new file mode 100644 index 000000000..4c1a89237 --- /dev/null +++ b/tests/compiler/compiler.vitest.test.ts @@ -0,0 +1,279 @@ +import { describe, beforeAll, afterAll, test, expect } from 'vitest'; +import path from 'path'; +import { createCompiler } from '@vanilla-extract/integration'; + +function toPosix(filePath: string) { + return filePath.split(path.sep).join(path.posix.sep); +} + +function getLocalFiles(files: Set) { + const posixDirname = toPosix(__dirname); + + return [...files] + .map(toPosix) + .filter((file) => file.startsWith(posixDirname)) + .map((file) => file.replace(posixDirname, '')); +} + +describe('compiler', () => { + let compilers: Record< + 'default' | 'cssImportSpecifier' | 'shortIdentifiers', + ReturnType + >; + + beforeAll(async () => { + compilers = { + default: createCompiler({ + root: __dirname, + }), + + cssImportSpecifier: createCompiler({ + root: __dirname, + cssImportSpecifier: (filePath) => filePath + '.custom-extension.css', + }), + + shortIdentifiers: createCompiler({ + root: __dirname, + identifiers: 'short', + }), + }; + }); + + test('absolute paths', async () => { + const compiler = compilers.default; + + const cssPath = path.join( + __dirname, + 'fixtures/class-composition/styles.css.ts', + ); + const sharedCssPath = path.join( + __dirname, + 'fixtures/class-composition/shared.css.ts', + ); + + const output = await compiler.processVanillaFile(cssPath); + expect(output.source).toMatchInlineSnapshot(` + "import 'fixtures/class-composition/shared.css.ts.vanilla.css'; + import 'fixtures/class-composition/styles.css.ts.vanilla.css'; + export var className = 'styles_className__q7x3ow0 shared_shared__16bmd920';" + `); + const localWatchFiles = getLocalFiles(output.watchFiles); + expect(localWatchFiles).toMatchInlineSnapshot(` + [ + "/fixtures/class-composition/styles.css.ts", + "/fixtures/class-composition/shared.css.ts", + ] + `); + + await (async () => { + const { css, filePath } = await compiler.getCssForFile(cssPath); + expect(css).toMatchInlineSnapshot(` + ".styles_className__q7x3ow0 { + color: red; + }" + `); + expect(toPosix(filePath)).toBe( + 'fixtures/class-composition/styles.css.ts', + ); + })(); + + await (async () => { + const { css, filePath } = await compiler.getCssForFile(sharedCssPath); + expect(css).toMatchInlineSnapshot(` + ".shared_shared__16bmd920 { + background: blue; + }" + `); + expect(toPosix(filePath)).toBe( + 'fixtures/class-composition/shared.css.ts', + ); + })(); + }); + + test('root relative paths', async () => { + const compiler = compilers.default; + + const cssPath = 'fixtures/class-composition/styles.css.ts'; + const sharedCssPath = 'fixtures/class-composition/shared.css.ts'; + + const output = await compiler.processVanillaFile(cssPath); + expect(output.source).toMatchInlineSnapshot(` + "import 'fixtures/class-composition/shared.css.ts.vanilla.css'; + import 'fixtures/class-composition/styles.css.ts.vanilla.css'; + export var className = 'styles_className__q7x3ow0 shared_shared__16bmd920';" + `); + + const localWatchFiles = getLocalFiles(output.watchFiles); + expect(localWatchFiles).toMatchInlineSnapshot(` + [ + "/fixtures/class-composition/styles.css.ts", + "/fixtures/class-composition/shared.css.ts", + ] + `); + + await (async () => { + const { css, filePath } = await compiler.getCssForFile(cssPath); + expect(css).toMatchInlineSnapshot(` + ".styles_className__q7x3ow0 { + color: red; + }" + `); + expect(toPosix(filePath)).toBe( + 'fixtures/class-composition/styles.css.ts', + ); + })(); + + await (async () => { + const { css, filePath } = await compiler.getCssForFile(sharedCssPath); + expect(css).toMatchInlineSnapshot(` + ".shared_shared__16bmd920 { + background: blue; + }" + `); + expect(toPosix(filePath)).toBe( + 'fixtures/class-composition/shared.css.ts', + ); + })(); + }); + + test('root relative paths starting with dot', async () => { + const compiler = compilers.default; + + const cssPath = './fixtures/class-composition/styles.css.ts'; + const sharedCssPath = './fixtures/class-composition/shared.css.ts'; + + const output = await compiler.processVanillaFile(cssPath); + expect(output.source).toMatchInlineSnapshot(` + "import 'fixtures/class-composition/shared.css.ts.vanilla.css'; + import 'fixtures/class-composition/styles.css.ts.vanilla.css'; + export var className = 'styles_className__q7x3ow0 shared_shared__16bmd920';" + `); + + const localWatchFiles = getLocalFiles(output.watchFiles); + expect(localWatchFiles).toMatchInlineSnapshot(` + [ + "/fixtures/class-composition/styles.css.ts", + "/fixtures/class-composition/shared.css.ts", + ] + `); + + await (async () => { + const { css, filePath } = await compiler.getCssForFile(cssPath); + expect(css).toMatchInlineSnapshot(` + ".styles_className__q7x3ow0 { + color: red; + }" + `); + expect(toPosix(filePath)).toBe( + 'fixtures/class-composition/styles.css.ts', + ); + })(); + + await (async () => { + const { css, filePath } = await compiler.getCssForFile(sharedCssPath); + expect(css).toMatchInlineSnapshot(` + ".shared_shared__16bmd920 { + background: blue; + }" + `); + expect(toPosix(filePath)).toBe( + 'fixtures/class-composition/shared.css.ts', + ); + })(); + }); + + test('throws on getCssForFile when file does not exist', async () => { + const compiler = compilers.default; + let error: Error | undefined; + + try { + await compiler.getCssForFile('does-not-exist.css.ts'); + } catch (_error) { + error = _error as Error; + } + + expect( + toPosix(error?.message.replace(__dirname, '{{__dirname}}') ?? ''), + ).toMatchInlineSnapshot( + `"No CSS for file: {{__dirname}}/does-not-exist.css.ts"`, + ); + }); + + test('short identifiers', async () => { + const compiler = compilers.shortIdentifiers; + + const cssPath = path.join( + __dirname, + 'fixtures/class-composition/styles.css.ts', + ); + const output = await compiler.processVanillaFile(cssPath); + expect(output.source).toMatchInlineSnapshot(` + "import 'fixtures/class-composition/shared.css.ts.vanilla.css'; + import 'fixtures/class-composition/styles.css.ts.vanilla.css'; + export var className = 'q7x3ow0 _16bmd920';" + `); + const { css } = await compiler.getCssForFile(cssPath); + expect(css).toMatchInlineSnapshot(` + ".q7x3ow0 { + color: red; + }" + `); + }); + + test('custom cssImportSpecifier', async () => { + const compiler = compilers.cssImportSpecifier; + + const cssPath = path.join( + __dirname, + 'fixtures/class-composition/styles.css.ts', + ); + const output = await compiler.processVanillaFile(cssPath); + expect(output.source).toMatchInlineSnapshot(` + "import 'fixtures/class-composition/shared.css.ts.custom-extension.css'; + import 'fixtures/class-composition/styles.css.ts.custom-extension.css'; + export var className = 'styles_className__q7x3ow0 shared_shared__16bmd920';" + `); + }); + + test('does not remove unused composition classes', async () => { + const compiler = compilers.default; + + const cssPathA = './fixtures/unused-compositions/styles_a.css.ts'; + const cssPathB = './fixtures/unused-compositions/styles_b.css.ts'; + const sharedCssPath = './fixtures/unused-compositions/shared.css.ts'; + + // Process the file multiple times with different args to test caching + await compiler.processVanillaFile(cssPathA, { outputCss: false }); + const outputA = await compiler.processVanillaFile(cssPathA); + + // The `root` className string should be a composition of multiple classes: + expect(outputA.source).toMatchInlineSnapshot(` + "import 'fixtures/unused-compositions/shared.css.ts.vanilla.css'; + export var root = 'styles_a_root__mh4uy80 shared_shared__5i7sy00';" + `); + + // Process the file multiple times with different args to test caching + await compiler.processVanillaFile(cssPathB, { outputCss: false }); + const outputB = await compiler.processVanillaFile(cssPathB); + + // The `root` className string should be a composition of multiple classes: + expect(outputB.source).toMatchInlineSnapshot(` + "import 'fixtures/unused-compositions/shared.css.ts.vanilla.css'; + export var root = 'styles_b_root__1k6843p0 shared_shared__5i7sy00';" + `); + + const { css } = await compiler.getCssForFile(sharedCssPath); + expect(css).toMatchInlineSnapshot(` + ".shared_shared__5i7sy00 { + padding: 20px; + background: peachpuff; + }" + `); + }); + + afterAll(async () => { + await Promise.allSettled( + Object.values(compilers).map((compiler) => compiler.close()), + ); + }); +}); diff --git a/tests/compiler/fixtures/class-composition/shared.css.ts b/tests/compiler/fixtures/class-composition/shared.css.ts new file mode 100644 index 000000000..d18c3dbe1 --- /dev/null +++ b/tests/compiler/fixtures/class-composition/shared.css.ts @@ -0,0 +1,3 @@ +import { style } from '@vanilla-extract/css'; + +export const shared = style({ background: 'blue' }); diff --git a/tests/compiler/fixtures/class-composition/styles.css.ts b/tests/compiler/fixtures/class-composition/styles.css.ts new file mode 100644 index 000000000..e68766e4f --- /dev/null +++ b/tests/compiler/fixtures/class-composition/styles.css.ts @@ -0,0 +1,4 @@ +import { style } from '@vanilla-extract/css'; +import { shared } from './shared.css'; + +export const className = style([shared, { color: 'red' }]); diff --git a/tests/compiler/fixtures/unused-compositions/shared.css.ts b/tests/compiler/fixtures/unused-compositions/shared.css.ts new file mode 100644 index 000000000..12f1a4390 --- /dev/null +++ b/tests/compiler/fixtures/unused-compositions/shared.css.ts @@ -0,0 +1,6 @@ +import { style } from '@vanilla-extract/css'; + +export const shared = style({ + padding: '20px', + background: 'peachpuff', +}); diff --git a/tests/compiler/fixtures/unused-compositions/styles_a.css.ts b/tests/compiler/fixtures/unused-compositions/styles_a.css.ts new file mode 100644 index 000000000..95cf9200d --- /dev/null +++ b/tests/compiler/fixtures/unused-compositions/styles_a.css.ts @@ -0,0 +1,4 @@ +import { style } from '@vanilla-extract/css'; +import { shared } from './shared.css'; + +export const root = style([shared]); diff --git a/tests/compiler/fixtures/unused-compositions/styles_b.css.ts b/tests/compiler/fixtures/unused-compositions/styles_b.css.ts new file mode 100644 index 000000000..95cf9200d --- /dev/null +++ b/tests/compiler/fixtures/unused-compositions/styles_b.css.ts @@ -0,0 +1,4 @@ +import { style } from '@vanilla-extract/css'; +import { shared } from './shared.css'; + +export const root = style([shared]); diff --git a/tests/e2e/features.playwright.ts b/tests/e2e/features.playwright.ts index 65c4d3ceb..12781a0af 100644 --- a/tests/e2e/features.playwright.ts +++ b/tests/e2e/features.playwright.ts @@ -15,6 +15,10 @@ const testCases = [ { type: 'esbuild', mode: 'production', snapshotCss: true }, { type: 'esbuild-runtime', mode: 'development', snapshotCss: false }, { type: 'esbuild-runtime', mode: 'production', snapshotCss: false }, + { type: 'esbuild-next', mode: 'development', snapshotCss: true }, + { type: 'esbuild-next', mode: 'production', snapshotCss: true }, + { type: 'esbuild-next-runtime', mode: 'development', snapshotCss: false }, + { type: 'esbuild-next-runtime', mode: 'production', snapshotCss: false }, { type: 'vite', mode: 'development', snapshotCss: false }, { type: 'vite', mode: 'production', snapshotCss: true }, { type: 'parcel', mode: 'development', snapshotCss: true }, diff --git a/tests/e2e/features.playwright.ts-snapshots/features-esbuild-next--development.css b/tests/e2e/features.playwright.ts-snapshots/features-esbuild-next--development.css new file mode 100644 index 000000000..202bc43f0 --- /dev/null +++ b/tests/e2e/features.playwright.ts-snapshots/features-esbuild-next--development.css @@ -0,0 +1,51 @@ +.features_mergedStyle__1o6ek500 { + height: 50px; +} +.features_mergedStyle__1o6ek500:after { + content: "Below 700px"; + display: block; +} +.features_styleWithComposition__1o6ek501 { + background-color: #b0e0e6; +} +.features_styleWithComposition__1o6ek501:hover { + background-color: #708090; +} +.features_styleVariantsWithComposition_variant__1o6ek502 { + background-color: #b0e0e6; +} +.features_styleVariantsWithComposition_variant__1o6ek502:hover { + background-color: #708090; +} +.features_styleVariantsWithMappedComposition_variant__1o6ek503 { + background-color: #b0e0e6; +} +.features_styleVariantsWithMappedComposition_variant__1o6ek503:hover { + background-color: #708090; +} +.features_styleCompositionInSelector__1o6ek505 { + color: #fff; +} +.features_styleCompositionInSelector__1o6ek506 { + background-color: #000; +} +body .features_styleCompositionInSelector__1o6ek507 { + font-size: 24px; +} +.features_styleVariantsCompositionInSelector_variant__1o6ek508 { + color: #fff; +} +.features_styleVariantsCompositionInSelector_variant__1o6ek509 { + background-color: #000; +} +body .features_styleVariantsCompositionInSelector_variant__1o6ek50a { + font-size: 24px; +} +@media screen and (min-width: 700px) { + .features_mergedStyle__1o6ek500 { + color: plum; + } + .features_mergedStyle__1o6ek500:after { + content: "Above 700px"; + } +} diff --git a/tests/e2e/features.playwright.ts-snapshots/features-esbuild-next--production.css b/tests/e2e/features.playwright.ts-snapshots/features-esbuild-next--production.css new file mode 100644 index 000000000..17c7bea0f --- /dev/null +++ b/tests/e2e/features.playwright.ts-snapshots/features-esbuild-next--production.css @@ -0,0 +1,51 @@ +._1o6ek500 { + height: 50px; +} +._1o6ek500:after { + content: "Below 700px"; + display: block; +} +._1o6ek501 { + background-color: #b0e0e6; +} +._1o6ek501:hover { + background-color: #708090; +} +._1o6ek502 { + background-color: #b0e0e6; +} +._1o6ek502:hover { + background-color: #708090; +} +._1o6ek503 { + background-color: #b0e0e6; +} +._1o6ek503:hover { + background-color: #708090; +} +._1o6ek505 { + color: #fff; +} +._1o6ek506 { + background-color: #000; +} +body ._1o6ek507 { + font-size: 24px; +} +._1o6ek508 { + color: #fff; +} +._1o6ek509 { + background-color: #000; +} +body ._1o6ek50a { + font-size: 24px; +} +@media screen and (min-width: 700px) { + ._1o6ek500 { + color: plum; + } + ._1o6ek500:after { + content: "Above 700px"; + } +} diff --git a/tests/e2e/low-level.playwright.ts b/tests/e2e/low-level.playwright.ts index 287a9d81e..ea82fe32c 100644 --- a/tests/e2e/low-level.playwright.ts +++ b/tests/e2e/low-level.playwright.ts @@ -15,6 +15,10 @@ const testCases = [ { type: 'esbuild', mode: 'production', snapshotCss: true }, { type: 'esbuild-runtime', mode: 'development', snapshotCss: false }, { type: 'esbuild-runtime', mode: 'production', snapshotCss: false }, + { type: 'esbuild-next', mode: 'development', snapshotCss: true }, + { type: 'esbuild-next', mode: 'production', snapshotCss: true }, + { type: 'esbuild-next-runtime', mode: 'development', snapshotCss: false }, + { type: 'esbuild-next-runtime', mode: 'production', snapshotCss: false }, { type: 'vite', mode: 'development', snapshotCss: false }, { type: 'vite', mode: 'production', snapshotCss: true }, { type: 'parcel', mode: 'development', snapshotCss: true }, diff --git a/tests/e2e/low-level.playwright.ts-snapshots/low-level-esbuild-next--development.css b/tests/e2e/low-level.playwright.ts-snapshots/low-level-esbuild-next--development.css new file mode 100644 index 000000000..ff452bc89 --- /dev/null +++ b/tests/e2e/low-level.playwright.ts-snapshots/low-level-esbuild-next--development.css @@ -0,0 +1,17 @@ +.styles_container__1amv5mo2 { + container-type: size; + container-name: styles_my-container__1amv5mo1; + width: 500px; +} +.styles_block__1amv5mo3 { + --color__1amv5mo0: blue; + background-color: var(--color__1amv5mo0); + padding: 20px; +} +@media screen and (min-width: 200px) { + @container styles_my-container__1amv5mo1 (min-width: 400px) { + .styles_block__1amv5mo3 { + color: #fff; + } + } +} diff --git a/tests/e2e/low-level.playwright.ts-snapshots/low-level-esbuild-next--production.css b/tests/e2e/low-level.playwright.ts-snapshots/low-level-esbuild-next--production.css new file mode 100644 index 000000000..8d635f93e --- /dev/null +++ b/tests/e2e/low-level.playwright.ts-snapshots/low-level-esbuild-next--production.css @@ -0,0 +1,17 @@ +._1amv5mo2 { + container-type: size; + container-name: _1amv5mo1; + width: 500px; +} +._1amv5mo3 { + --_1amv5mo0: blue; + background-color: var(--_1amv5mo0); + padding: 20px; +} +@media screen and (min-width: 200px) { + @container _1amv5mo1 (min-width: 400px) { + ._1amv5mo3 { + color: #fff; + } + } +} diff --git a/tests/e2e/recipes.playwright.ts b/tests/e2e/recipes.playwright.ts index 870d2ca21..43a487ea3 100644 --- a/tests/e2e/recipes.playwright.ts +++ b/tests/e2e/recipes.playwright.ts @@ -15,6 +15,10 @@ const testCases = [ { type: 'esbuild', mode: 'production', snapshotCss: true }, { type: 'esbuild-runtime', mode: 'development', snapshotCss: false }, { type: 'esbuild-runtime', mode: 'production', snapshotCss: false }, + { type: 'esbuild-next', mode: 'development', snapshotCss: true }, + { type: 'esbuild-next', mode: 'production', snapshotCss: true }, + { type: 'esbuild-next-runtime', mode: 'development', snapshotCss: false }, + { type: 'esbuild-next-runtime', mode: 'production', snapshotCss: false }, { type: 'vite', mode: 'development', snapshotCss: false }, { type: 'vite', mode: 'production', snapshotCss: true }, { type: 'parcel', mode: 'development', snapshotCss: true }, diff --git a/tests/e2e/recipes.playwright.ts-snapshots/recipes-esbuild-next--development.css b/tests/e2e/recipes.playwright.ts-snapshots/recipes-esbuild-next--development.css new file mode 100644 index 000000000..3a4efb1c0 --- /dev/null +++ b/tests/e2e/recipes.playwright.ts-snapshots/recipes-esbuild-next--development.css @@ -0,0 +1,50 @@ +.styles_calm__103pmpm2 { + --bg__103pmpm0: #b0e0e6; + --fg__103pmpm1: #fff; +} +.styles_angry__103pmpm3 { + --bg__103pmpm0: crimson; + --fg__103pmpm1: #000; +} +.styles_reset__103pmpm4 { + border: 0; +} +.styles_button__103pmpm5 { + background: var(--bg__103pmpm0); + border-radius: 6px; + color: var(--fg__103pmpm1); + transition: all 0.2s ease; +} +.styles_button__103pmpm5:hover { + transform: translateY(-3px); +} +.styles_button_size_small__103pmpm6 { + font-size: 16px; + line-height: 24px; +} +.styles_button_size_standard__103pmpm7 { + font-size: 24px; + line-height: 40px; +} +.styles_button_tone_angry__103pmpm9:hover { + box-shadow: 0 10px 6px -6px #777; +} +.styles_button_bold_true__103pmpma { + font-weight: 700; +} +.styles_stack__103pmpmc { + align-items: flex-start; + display: flex; + flex-direction: column; +} +.styles_stack_space_medium__103pmpmd { + gap: 20px; +} +@media only screen and (min-width: 600px) { + .styles_button_compound_0__103pmpmb { + border: 2px solid green; + } + .styles_stack_space_medium__103pmpmd { + gap: 30px; + } +} diff --git a/tests/e2e/recipes.playwright.ts-snapshots/recipes-esbuild-next--production.css b/tests/e2e/recipes.playwright.ts-snapshots/recipes-esbuild-next--production.css new file mode 100644 index 000000000..11a7d3328 --- /dev/null +++ b/tests/e2e/recipes.playwright.ts-snapshots/recipes-esbuild-next--production.css @@ -0,0 +1,50 @@ +._103pmpm2 { + --_103pmpm0: #b0e0e6; + --_103pmpm1: #fff; +} +._103pmpm3 { + --_103pmpm0: crimson; + --_103pmpm1: #000; +} +._103pmpm4 { + border: 0; +} +._103pmpm5 { + background: var(--_103pmpm0); + border-radius: 6px; + color: var(--_103pmpm1); + transition: all 0.2s ease; +} +._103pmpm5:hover { + transform: translateY(-3px); +} +._103pmpm6 { + font-size: 16px; + line-height: 24px; +} +._103pmpm7 { + font-size: 24px; + line-height: 40px; +} +._103pmpm9:hover { + box-shadow: 0 10px 6px -6px #777; +} +._103pmpma { + font-weight: 700; +} +._103pmpmc { + align-items: flex-start; + display: flex; + flex-direction: column; +} +._103pmpmd { + gap: 20px; +} +@media only screen and (min-width: 600px) { + ._103pmpmb { + border: 2px solid green; + } + ._103pmpmd { + gap: 30px; + } +} diff --git a/tests/e2e/sprinkles.playwright.ts b/tests/e2e/sprinkles.playwright.ts index 314357920..9a68e0222 100644 --- a/tests/e2e/sprinkles.playwright.ts +++ b/tests/e2e/sprinkles.playwright.ts @@ -15,6 +15,10 @@ const testCases = [ { type: 'esbuild', mode: 'production', snapshotCss: true }, { type: 'esbuild-runtime', mode: 'development', snapshotCss: false }, { type: 'esbuild-runtime', mode: 'production', snapshotCss: false }, + { type: 'esbuild-next', mode: 'development', snapshotCss: true }, + { type: 'esbuild-next', mode: 'production', snapshotCss: true }, + { type: 'esbuild-next-runtime', mode: 'development', snapshotCss: false }, + { type: 'esbuild-next-runtime', mode: 'production', snapshotCss: false }, { type: 'vite', mode: 'development', snapshotCss: false }, { type: 'vite', mode: 'production', snapshotCss: true }, { type: 'parcel', mode: 'development', snapshotCss: true }, diff --git a/tests/e2e/sprinkles.playwright.ts-snapshots/sprinkles-esbuild-next--development.css b/tests/e2e/sprinkles.playwright.ts-snapshots/sprinkles-esbuild-next--development.css new file mode 100644 index 000000000..c1ae0eb94 --- /dev/null +++ b/tests/e2e/sprinkles.playwright.ts-snapshots/sprinkles-esbuild-next--development.css @@ -0,0 +1,154 @@ +.styles_container__1j5zl923 { + container-name: styles_containerName__1j5zl922; + container-type: size; +} +.styles_display_flex_mobile__1j5zl924 { + display: flex; +} +.styles_display_none_mobile__1j5zl928 { + display: none; +} +.styles_display_block_mobile__1j5zl92c { + display: block; +} +.styles_paddingTop_small_mobile__1j5zl92g { + padding-top: 10px; +} +.styles_paddingTop_medium_mobile__1j5zl92k { + padding-top: 20px; +} +.styles_background_red_mobile__1j5zl92o { + --alpha__1j5zl920: 1; + background: rgba(255, 0, 0, var(--alpha__1j5zl920)); +} +.styles_backgroundOpacity_1_mobile__1j5zl92s { + --alpha__1j5zl920: 1; +} +.styles_backgroundOpacity_0\.1_mobile__1j5zl92w { + --alpha__1j5zl920: 0.1; +} +.styles_backgroundOpacity_0\.2_mobile__1j5zl9210 { + --alpha__1j5zl920: 0.2; +} +.styles_backgroundOpacity_0\.3_mobile__1j5zl9214 { + --alpha__1j5zl920: 0.3; +} +.styles_color_red__1j5zl9218 { + --textAlpha__1j5zl921: 1; + color: rgba(255, 0, 0, var(--textAlpha__1j5zl921)); +} +.styles_textOpacity_1__1j5zl9219 { + --textAlpha__1j5zl921: 1; +} +.styles_textOpacity_0\.8__1j5zl921a { + --textAlpha__1j5zl921: 0.8; +} +body { + margin: 0; +} +body .styles__1j5zl921c { + background: red; +} +@media screen and (min-width: 768px) { + @container styles_containerName__1j5zl922 (min-width: 768px) { + .styles_display_flex_tablet__1j5zl925 { + display: flex; + } + .styles_display_none_tablet__1j5zl929 { + display: none; + } + .styles_display_block_tablet__1j5zl92d { + display: block; + } + .styles_paddingTop_small_tablet__1j5zl92h { + padding-top: 10px; + } + .styles_paddingTop_medium_tablet__1j5zl92l { + padding-top: 20px; + } + .styles_background_red_tablet__1j5zl92p { + --alpha__1j5zl920: 1; + background: rgba(255, 0, 0, var(--alpha__1j5zl920)); + } + .styles_backgroundOpacity_1_tablet__1j5zl92t { + --alpha__1j5zl920: 1; + } + .styles_backgroundOpacity_0\.1_tablet__1j5zl92x { + --alpha__1j5zl920: 0.1; + } + .styles_backgroundOpacity_0\.2_tablet__1j5zl9211 { + --alpha__1j5zl920: 0.2; + } + .styles_backgroundOpacity_0\.3_tablet__1j5zl9215 { + --alpha__1j5zl920: 0.3; + } + } +} +@media screen and (min-width: 1024px) { + @container styles_containerName__1j5zl922 (min-width: 1024px) { + .styles_display_flex_desktop__1j5zl926 { + display: flex; + } + .styles_display_none_desktop__1j5zl92a { + display: none; + } + .styles_display_block_desktop__1j5zl92e { + display: block; + } + .styles_paddingTop_small_desktop__1j5zl92i { + padding-top: 10px; + } + .styles_paddingTop_medium_desktop__1j5zl92m { + padding-top: 20px; + } + .styles_background_red_desktop__1j5zl92q { + --alpha__1j5zl920: 1; + background: rgba(255, 0, 0, var(--alpha__1j5zl920)); + } + .styles_backgroundOpacity_1_desktop__1j5zl92u { + --alpha__1j5zl920: 1; + } + .styles_backgroundOpacity_0\.1_desktop__1j5zl92y { + --alpha__1j5zl920: 0.1; + } + .styles_backgroundOpacity_0\.2_desktop__1j5zl9212 { + --alpha__1j5zl920: 0.2; + } + .styles_backgroundOpacity_0\.3_desktop__1j5zl9216 { + --alpha__1j5zl920: 0.3; + } + } + @supports not (display: grid) { + [data-dark-mode] .styles_display_flex_darkDesktop__1j5zl927 { + display: flex; + } + [data-dark-mode] .styles_display_none_darkDesktop__1j5zl92b { + display: none; + } + [data-dark-mode] .styles_display_block_darkDesktop__1j5zl92f { + display: block; + } + [data-dark-mode] .styles_paddingTop_small_darkDesktop__1j5zl92j { + padding-top: 10px; + } + [data-dark-mode] .styles_paddingTop_medium_darkDesktop__1j5zl92n { + padding-top: 20px; + } + [data-dark-mode] .styles_background_red_darkDesktop__1j5zl92r { + --alpha__1j5zl920: 1; + background: rgba(255, 0, 0, var(--alpha__1j5zl920)); + } + [data-dark-mode] .styles_backgroundOpacity_1_darkDesktop__1j5zl92v { + --alpha__1j5zl920: 1; + } + [data-dark-mode] .styles_backgroundOpacity_0\.1_darkDesktop__1j5zl92z { + --alpha__1j5zl920: 0.1; + } + [data-dark-mode] .styles_backgroundOpacity_0\.2_darkDesktop__1j5zl9213 { + --alpha__1j5zl920: 0.2; + } + [data-dark-mode] .styles_backgroundOpacity_0\.3_darkDesktop__1j5zl9217 { + --alpha__1j5zl920: 0.3; + } + } +} diff --git a/tests/e2e/sprinkles.playwright.ts-snapshots/sprinkles-esbuild-next--production.css b/tests/e2e/sprinkles.playwright.ts-snapshots/sprinkles-esbuild-next--production.css new file mode 100644 index 000000000..f090da566 --- /dev/null +++ b/tests/e2e/sprinkles.playwright.ts-snapshots/sprinkles-esbuild-next--production.css @@ -0,0 +1,154 @@ +._1j5zl923 { + container-name: _1j5zl922; + container-type: size; +} +._1j5zl924 { + display: flex; +} +._1j5zl928 { + display: none; +} +._1j5zl92c { + display: block; +} +._1j5zl92g { + padding-top: 10px; +} +._1j5zl92k { + padding-top: 20px; +} +._1j5zl92o { + background: rgba(255, 0, 0, var(--_1j5zl920)); +} +._1j5zl92o, +._1j5zl92s { + --_1j5zl920: 1; +} +._1j5zl92w { + --_1j5zl920: 0.1; +} +._1j5zl9210 { + --_1j5zl920: 0.2; +} +._1j5zl9214 { + --_1j5zl920: 0.3; +} +._1j5zl9218 { + color: rgba(255, 0, 0, var(--_1j5zl921)); +} +._1j5zl9218, +._1j5zl9219 { + --_1j5zl921: 1; +} +._1j5zl921a { + --_1j5zl921: 0.8; +} +body { + margin: 0; +} +body ._1j5zl921c { + background: red; +} +@media screen and (min-width: 768px) { + @container _1j5zl922 (min-width: 768px) { + ._1j5zl925 { + display: flex; + } + ._1j5zl929 { + display: none; + } + ._1j5zl92d { + display: block; + } + ._1j5zl92h { + padding-top: 10px; + } + ._1j5zl92l { + padding-top: 20px; + } + ._1j5zl92p { + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + ._1j5zl92p, + ._1j5zl92t { + --_1j5zl920: 1; + } + ._1j5zl92x { + --_1j5zl920: 0.1; + } + ._1j5zl9211 { + --_1j5zl920: 0.2; + } + ._1j5zl9215 { + --_1j5zl920: 0.3; + } + } +} +@media screen and (min-width: 1024px) { + @container _1j5zl922 (min-width: 1024px) { + ._1j5zl926 { + display: flex; + } + ._1j5zl92a { + display: none; + } + ._1j5zl92e { + display: block; + } + ._1j5zl92i { + padding-top: 10px; + } + ._1j5zl92m { + padding-top: 20px; + } + ._1j5zl92q { + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + ._1j5zl92q, + ._1j5zl92u { + --_1j5zl920: 1; + } + ._1j5zl92y { + --_1j5zl920: 0.1; + } + ._1j5zl9212 { + --_1j5zl920: 0.2; + } + ._1j5zl9216 { + --_1j5zl920: 0.3; + } + } + @supports not (display: grid) { + [data-dark-mode] ._1j5zl927 { + display: flex; + } + [data-dark-mode] ._1j5zl92b { + display: none; + } + [data-dark-mode] ._1j5zl92f { + display: block; + } + [data-dark-mode] ._1j5zl92j { + padding-top: 10px; + } + [data-dark-mode] ._1j5zl92n { + padding-top: 20px; + } + [data-dark-mode] ._1j5zl92r { + --_1j5zl920: 1; + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + [data-dark-mode] ._1j5zl92v { + --_1j5zl920: 1; + } + [data-dark-mode] ._1j5zl92z { + --_1j5zl920: 0.1; + } + [data-dark-mode] ._1j5zl9213 { + --_1j5zl920: 0.2; + } + [data-dark-mode] ._1j5zl9217 { + --_1j5zl920: 0.3; + } + } +} diff --git a/tests/e2e/themed.playwright.ts b/tests/e2e/themed.playwright.ts index ab95ae9f9..08a273300 100644 --- a/tests/e2e/themed.playwright.ts +++ b/tests/e2e/themed.playwright.ts @@ -15,6 +15,10 @@ const testCases = [ { type: 'esbuild', mode: 'production', snapshotCss: true }, { type: 'esbuild-runtime', mode: 'development', snapshotCss: false }, { type: 'esbuild-runtime', mode: 'production', snapshotCss: false }, + { type: 'esbuild-next', mode: 'development', snapshotCss: true }, + { type: 'esbuild-next', mode: 'production', snapshotCss: true }, + { type: 'esbuild-next-runtime', mode: 'development', snapshotCss: false }, + { type: 'esbuild-next-runtime', mode: 'production', snapshotCss: false }, { type: 'vite', mode: 'development', snapshotCss: false }, { type: 'vite', mode: 'production', snapshotCss: true }, { type: 'parcel', mode: 'development', snapshotCss: true }, diff --git a/tests/e2e/themed.playwright.ts-snapshots/themed-esbuild-next--development.css b/tests/e2e/themed.playwright.ts-snapshots/themed-esbuild-next--development.css new file mode 100644 index 000000000..93d90cc06 --- /dev/null +++ b/tests/e2e/themed.playwright.ts-snapshots/themed-esbuild-next--development.css @@ -0,0 +1,90 @@ +.themes_theme__cvta170, +:root { + --colors-backgroundColor__cvta171: blue; + --colors-text__cvta172: #fff; + --space-1__cvta173: 4px; + --space-2__cvta174: 8px; + --space-3__cvta175: 12px; +} +.themes_altTheme__cvta176 { + --colors-backgroundColor__cvta171: green; + --colors-text__cvta172: #fff; + --space-1__cvta173: 8px; + --space-2__cvta174: 12px; + --space-3__cvta175: 16px; +} +.themes_responsiveTheme__cvta177 { + --colors-backgroundColor__cvta171: pink; + --colors-text__cvta172: purple; + --space-1__cvta173: 6px; + --space-2__cvta174: 12px; + --space-3__cvta175: 18px; +} +@media screen and (min-width: 768px) { + .themes_responsiveTheme__cvta177 { + --colors-backgroundColor__cvta171: purple; + --colors-text__cvta172: pink; + } +} +.shared_shadow__4dtfen0 { + box-shadow: 0 0 5px red; +} +body { + background-color: skyblue; +} +@font-face { + font-family: styles_impact__jteyb10; + src: local("Impact"); +} +@font-face { + font-family: MyGlobalComicSans; + src: local("Comic Sans MS"); +} +.styles_container__jteyb11 { + display: flex; + flex-direction: column; + gap: var(--space-2__cvta174); + padding: var(--space-3__cvta175); +} +.styles_iDunno__jteyb12 { + position: relative; + z-index: 1; +} +.styles_button__jteyb13 { + background-color: var( + --colors-backgroundColor__cvta171, + "THIS FALLBACK VALUE SHOULD NEVER BE USED" + ); + border-radius: 9999px; + color: var(--colors-text__cvta172); + font-family: styles_impact__jteyb10; +} +.themes_altTheme__cvta176 + .themes_theme__cvta170 + .styles_container__jteyb11 + .styles_button__jteyb13 { + font-family: MyGlobalComicSans; + outline: 5px solid red; +} +body .styles_iDunno__jteyb12:after { + content: "I am content"; +} +html .styles_opacity_1\/2__jteyb16 { + opacity: var(--blankVar1__jteyb14, 0.5); +} +html .styles_opacity_1\/4__jteyb17 { + opacity: var(--blankVar1__jteyb14, var(--blankVar2__jteyb15, 0.25)); +} +@media only screen and (min-width: 500px) { + .styles_container__jteyb11 { + border: 1px solid var(--colors-backgroundColor__cvta171); + } + .styles_button__jteyb13 { + padding: var(--space-1__cvta173); + } +} +@media only screen and (min-width: 1000px) { + .styles_button__jteyb13 { + padding: var(--space-2__cvta174); + } +} diff --git a/tests/e2e/themed.playwright.ts-snapshots/themed-esbuild-next--production.css b/tests/e2e/themed.playwright.ts-snapshots/themed-esbuild-next--production.css new file mode 100644 index 000000000..2f1848cc0 --- /dev/null +++ b/tests/e2e/themed.playwright.ts-snapshots/themed-esbuild-next--production.css @@ -0,0 +1,84 @@ +.cvta170, +:root { + --cvta171: blue; + --cvta172: #fff; + --cvta173: 4px; + --cvta174: 8px; + --cvta175: 12px; +} +.cvta176 { + --cvta171: green; + --cvta172: #fff; + --cvta173: 8px; + --cvta174: 12px; + --cvta175: 16px; +} +.cvta177 { + --cvta171: pink; + --cvta172: purple; + --cvta173: 6px; + --cvta174: 12px; + --cvta175: 18px; +} +@media screen and (min-width: 768px) { + .cvta177 { + --cvta171: purple; + --cvta172: pink; + } +} +._4dtfen0 { + box-shadow: 0 0 5px red; +} +body { + background-color: #87ceeb; +} +@font-face { + font-family: jteyb10; + src: local("Impact"); +} +@font-face { + font-family: MyGlobalComicSans; + src: local("Comic Sans MS"); +} +.jteyb11 { + display: flex; + flex-direction: column; + gap: var(--cvta174); + padding: var(--cvta175); +} +.jteyb12 { + position: relative; + z-index: 1; +} +.jteyb13 { + background-color: var(--cvta171, "THIS FALLBACK VALUE SHOULD NEVER BE USED"); + border-radius: 9999px; + color: var(--cvta172); + font-family: jteyb10; +} +.cvta176 .cvta170 .jteyb11 .jteyb13 { + font-family: MyGlobalComicSans; + outline: 5px solid red; +} +body .jteyb12:after { + content: "I am content"; +} +html .jteyb16 { + opacity: var(--jteyb14, 0.5); +} +html .jteyb17 { + opacity: var(--jteyb14, var(--jteyb15, 0.25)); +} +@media only screen and (min-width: 500px) { + .jteyb11 { + border: 1px solid var(--cvta171); + } + .jteyb13 { + padding: var(--cvta173); + } +} +@media only screen and (min-width: 1000px) { + .jteyb13 { + padding: var(--cvta174); + } +} diff --git a/tests/package.json b/tests/package.json index d43dcb267..192300abe 100644 --- a/tests/package.json +++ b/tests/package.json @@ -11,6 +11,7 @@ "@vanilla-extract-private/test-helpers": "*", "@vanilla-extract/css": "*", "@vanilla-extract/dynamic": "*", + "@vanilla-extract/integration": "*", "@vanilla-extract/recipes": "*", "@vanilla-extract/sprinkles": "*" } diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 000000000..59922daec --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vitest/config'; +import { join, dirname, basename } from 'path'; + +export default defineConfig({ + test: { + include: ['**/*.vitest.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + resolveSnapshotPath: (testPath, snapExtension) => { + return join( + join(dirname(testPath), '__vitestSnapshots__'), + `${basename(testPath)}${snapExtension}`, + ); + }, + }, +});