diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index ab5d598..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: CI - -on: - pull_request: - push: - branches: [main] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/cache@v4 - id: yarn-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: Build and test the library - run: | - yarn - yarn prepack - yarn test diff --git a/.github/workflows/publish-to-npm.yml b/.github/workflows/publish-to-npm.yml new file mode 100644 index 0000000..f48462a --- /dev/null +++ b/.github/workflows/publish-to-npm.yml @@ -0,0 +1,27 @@ +on: + push: + tags: + - "v*" + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "20.x" + registry-url: "https://registry.npmjs.org" + + - name: Publish package + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + + # Currently, only npm supports publishing packages with provenance + # https://docs.npmjs.com/generating-provenance-statements + run: | + npm install --force + npm publish --provenance --access public diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..fb8a606 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,16 @@ +on: + pull_request: + push: + branches: [master] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v1 + + - name: Run unit tests + run: | + bun install + bun test diff --git a/.gitignore b/.gitignore index f571355..1a96244 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .DS_Store -/node_modules -/dist -/src/*.js -!/src/carbon-components-svelte.js \ No newline at end of file +node_modules +dist +build +public/build/ +.svelte-kit +*.tgz \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index ed4e54d..0000000 --- a/.prettierignore +++ /dev/null @@ -1,5 +0,0 @@ -/dist -/src/*.js -/tests/**/build -/tests/**/*.test.svelte -/tests/**/.svelte \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1fb0fdc..a3af6d8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## Prerequisites -For MacOS, prerequisites include [Node.js](https://nodejs.org/en/download/package-manager/#macos)(version 14 or greater) and [Yarn](https://yarnpkg.com/en/docs/install#mac-stable). +For MacOS, prerequisites include Node.js and Bun. ## Set-up @@ -16,7 +16,7 @@ cd carbon-preprocess-svelte Set the original repository as the upstream: ```sh -git remote add upstream git@github.com:IBM/carbon-preprocess-svelte.git +git remote add upstream git@github.com:carbon-design-system/carbon-preprocess-svelte.git # verify that the upstream is added git remote -v ``` @@ -24,35 +24,28 @@ git remote -v Finally, install the project dependencies: ```sh -yarn install +bun install ``` ## Workflow -Each preprocessor or plugin should have an integration test. Before running tests, be sure to build the library at least once. +Imports for `carbon-components-svelte` must be regenerated if the `carbon-components-svelte` package is updated. + +To update the imports, run the following command: ```sh -yarn prepack +bun run index:components ``` -### Unit tests - -Run `yarn test:unit` to execute the unit tests (located in `/tests/unit`). - -### Integration tests +This will update `src/component-index.ts`, which should be checked into source control. -Run `yarn test:integration` to execute the integration tests (located in `/tests/integration`). - -### Continuous Integration - -The `yarn prepack` command is executed in Travis CI. +### Unit tests -It does the following: +Run `bun test` to execute the unit tests (located in `/tests`). -1. Build the library -2. Run unit/integration tests in parallel +For watch mode, run `bun test --watch`. -The CI should pass if no unexpected errors occur. +To update snapshots, run `bun test --update-snapshots`. ## Submitting a Pull Request @@ -62,10 +55,10 @@ Before submitting a pull request, make sure your fork is up to date with the lat ```sh git fetch upstream -git checkout master -git merge upstream/master +git checkout main +git merge upstream/main ``` ### Submit a PR -After you've pushed your changes to remote, submit your PR. Make sure you are comparing `/feature` to `origin/master`. +After you've pushed your changes to remote, submit your PR. Make sure you are comparing `/feature` to `origin/main`. diff --git a/LICENSE b/LICENSE index 72f0361..a5d3e9e 100644 --- a/LICENSE +++ b/LICENSE @@ -198,4 +198,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index ae3f81f..e28ee0f 100644 --- a/README.md +++ b/README.md @@ -4,42 +4,31 @@ ![GitHub](https://img.shields.io/github/license/ibm/carbon-preprocess-svelte?color=262626&style=for-the-badge) ![npm downloads to date](https://img.shields.io/npm/dt/carbon-preprocess-svelte?color=262626&style=for-the-badge) -> Collection of [Svelte preprocessors](https://svelte.dev/docs#svelte_preprocess) for the Carbon Design System +> [Svelte preprocessors](https://svelte.dev/docs/svelte-compiler#types-preprocessor) for the Carbon Design System ## Installation -**Yarn** +Install `carbon-preprocess-svelte` as a development dependency. ```sh +# Yarn yarn add -D carbon-preprocess-svelte -``` - -**NPM** -```sh +# npm npm i -D carbon-preprocess-svelte -``` - -**pnpm** -```sh +# pnpm pnpm i -D carbon-preprocess-svelte ``` ## Usage -This library contains the following preprocessors and plugins: - -- **optimizeImports**: rewrites Carbon Svelte imports to their source path in the `script` block -- **optimizeCss**: Rollup plugin that removes unused CSS using [PurgeCSS](https://github.com/FullHuman/purgecss) -- **elements**: computes [Carbon tokens](https://www.carbondesignsystem.com/guidelines/themes/overview#tokens) in the `style` block -- **icons**: inlines [Carbon icons](https://www.carbondesignsystem.com/guidelines/icons/library/) in the `markup` block -- **pictograms**: inlines [Carbon pictograms](https://www.carbondesignsystem.com/guidelines/pictograms/library/) in the `markup` block -- **collectHeadings**: extracts heading elements (e.g., `

`, `

`) from the `markup` +- [**optimizeImports**](#optimizeimports): Svelte preprocessor that rewrites Carbon Svelte imports to their source path in the `script` block, making development compile times dramatically faster. +- [**optimizeCss**](#optimizecss): Vite/Rollup plugin that removes unused Carbon styles, resulting in smaller CSS bundles. ### `optimizeImports` -`optimizeImports` is a Svelte script preprocessor that rewrites base imports from Carbon components/icons/pictograms packages to their source Svelte code paths. This can greatly speed up compile times during development while preserving typeahead and autocompletion hinting offered by integrated development environments (IDE) like VSCode. +`optimizeImports` is a Svelte preprocessor that rewrites barrel imports from Carbon components/icons/pictograms packages to their source Svelte code paths. This can significantly speed up development and production build compile times while preserving typeahead and autocompletion offered by integrated development environments (IDE) like VS Code. The preprocessor optimizes imports from the following packages: @@ -47,420 +36,245 @@ The preprocessor optimizes imports from the following packages: - [carbon-icons-svelte](https://github.com/carbon-design-system/carbon-icons-svelte) - [carbon-pictograms-svelte](https://github.com/carbon-design-system/carbon-pictograms-svelte) -**Example** - ```diff - import { Button } from "carbon-components-svelte"; -- import { Add16 } from "carbon-icons-svelte"; -- import { Airplane } from "carbon-pictograms-svelte"; -+ import Button from "carbon-components-svelte/Button.svelte"; -+ import Add16 from "carbon-icons-svelte/lib/Add16.svelte"; -+ import Airplane from "carbon-pictograms-svelte/lib/Airplane.svelte"; -``` - -**Note** - -A minimum version of `carbon-preprocess-svelte@0.9.0` is required for `carbon-component-svelte@0.63.0`. - -A minimum version of `carbon-preprocess-svelte@0.8.0` is required for `carbon-icons-svelte@11`. ++ import Button from "carbon-components-svelte/src/Button/Button.svelte"; -#### Usage - -```js -// svelte.config.js -import { optimizeImports } from "carbon-preprocess-svelte"; +- import { Add } from "carbon-icons-svelte"; ++ import Add from "carbon-icons-svelte/lib/Add.svelte"; -export default { - preprocess: [optimizeImports()], -}; +- import { Airplane } from "carbon-pictograms-svelte"; ++ import Airplane from "carbon-pictograms-svelte/lib/Airplane.svelte"; ``` -### `optimizeCss` +> [!NOTE] +> When this preprocessor was first created, there was no workaround to optimize slow cold start times with Vite in development. +> As of today, [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte) enables [`prebundleSvelteLibraries`](https://github.com/sveltejs/vite-plugin-svelte/blob/ba4ac32cf5c3e9c048d1ac430c1091ca08eaa130/docs/config.md#prebundlesveltelibraries), which pre-bundles Svelte libraries to improve cold start times for Vite-based set-ups. +> However, this preprocessor is still useful for non-Vite bundlers, like Rollup and Webpack. -`optimizeCss` is a Rollup plugin that removes unused Carbon CSS. It extracts selectors based on a Svelte component's markup and style content and uses [PurgeCSS](https://github.com/FullHuman/purgecss) to prune any unused styles. +#### SvelteKit -#### Usage - -`optimizeCss` should be added to the list of `vite.plugins`. Take care to only run the plugin when building for production. +See [examples/sveltekit](examples/sveltekit). ```js // svelte.config.js import adapter from "@sveltejs/adapter-static"; -import { optimizeCss } from "carbon-preprocess-svelte"; +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; +import { optimizeImports } from "carbon-preprocess-svelte"; -export default { +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: [ + // Preprocessors are run in sequence. + // If using TypeScript, the code must be transpiled first. + vitePreprocess(), + optimizeImports(), + ], kit: { adapter: adapter(), - vite: { - plugins: [process.env.NODE_ENV === "production" && optimizeCss()], - }, }, }; -``` -#### API - -```ts -interface OptimizeCssOptions { - safelist: { - standard?: Array; - deep?: RegExp[]; - greedy?: RegExp[]; - }; -} +export default config; ``` -### `elements` - -`elements` is a Svelte style preprocessor that rewrites [Carbon Design System tokens](https://www.carbondesignsystem.com/guidelines/themes/overview#tokens) to their computed values. The purpose is to use design system token names (e.g., `"interactive-01"`) instead of hardcoded values (e.g., `"#0f62fe"`). - -**Before** +#### Vite -```svelte - +/** @type {import('vite').UserConfig} */ +export default { + plugins: [ + svelte({ + preprocess: [ + // Preprocessors are run in sequence. + // If using TypeScript, the code must be transpiled first. + vitePreprocess(), + optimizeImports(), + ], + }), + ], +}; ``` -**After** - -```svelte - -``` +#### Rollup -#### Usage +This code is abridged; see [examples/rollup](examples/rollup) for a full set-up. ```js -// svelte.config.js -import { elements } from "carbon-preprocess-svelte"; +// rollup.config.js +import svelte from "rollup-plugin-svelte"; +import { optimizeImports } from "carbon-preprocess-svelte"; export default { - preprocess: [elements()], + plugins: [ + svelte({ + preprocess: [optimizeImports()], + }), + ], }; ``` -#### API +#### Webpack -```ts -interface ElementsOptions { - /** - * Specify the Carbon theme - * Setting to "all" will also enable `cssVars` - * @default "white" - */ - theme: "white" | "g10" | "g90" | "g100" | "all"; +This code is abridged; see [examples/webpack](examples/webpack) for a full set-up. - /** - * Set to `true` for tokens to be re-written as CSS variables - * Automatically set to `true` if theme is "all" - * @example - * "spacing-05" --> var(--cds-spacing-05) - * "ui-01" --> var(--cds-ui-01) - * @default false - */ - cssVars: boolean; -} +```js +// webpack.config.js +const { optimizeImports } = require("carbon-preprocess-svelte"); + +module.exports = { + module: { + rules: [ + { + test: /\.svelte$/, + use: { + loader: "svelte-loader", + options: { + hotReload: !PROD, + preprocess: [optimizeImports()], + compilerOptions: { dev: !PROD }, + }, + }, + }, + ], + }, +}; ``` -### `icons` - -`icons` is a Svelte markup preprocessor that inlines [Carbon SVG icons](https://www.carbondesignsystem.com/guidelines/icons/library/). +### `optimizeCss` -The only required attribute is `name`, which represents the module name of the icon. Refer to [carbon-icons-svelte/ICON_INDEX.md](https://github.com/carbon-design-system/carbon-icons-svelte/blob/master/ICON_INDEX.md) for a list of supported icons. +`optimizeCss` is a Vite plugin that removes unused Carbon styles at build time. The plugin is compatible with Rollup ([Vite](https://vitejs.dev/guide/api-plugin) extends the Rollup plugin API). -**Example** +`carbon-components-svelte@0.85.0` or greater is required. ```diff -- -+ -``` +$ vite build -#### Usage +Optimized index-CU4gbKFa.css +- Before: 606.26 kB ++ After: 53.22 kB (-91.22%) -```js -// svelte.config.js -import { icons } from "carbon-preprocess-svelte"; - -export default { - preprocess: [icons()], -}; +dist/index.html 0.34 kB │ gzip: 0.24 kB +dist/assets/index-CU4gbKFa.css 53.22 kB │ gzip: 6.91 kB +dist/assets/index-Ceijs3eO.js 53.65 kB │ gzip: 15.88 kB ``` -### `pictograms` - -`pictograms` is a Svelte markup preprocessor that inlines [Carbon SVG pictograms](https://www.carbondesignsystem.com/guidelines/pictograms/library/). +> [!NOTE] +> This is a plugin and not a Svelte preprocessor. It should be added to the list of `vite.plugins`. For Vite set-ups, this plugin is only run when building the app. For Rollup and Webpack, you should conditionally apply the plugin to only execute when building for production. -The only required attribute is `name`, which represents the module name of the pictogram. Refer to [carbon-pictograms-svelte/PICTOGRAM_INDEX.md](https://github.com/carbon-design-system/carbon-pictograms-svelte/blob/master/PICTOGRAM_INDEX.md) for a list of supported pictograms. +#### SvelteKit -**Example** +See [examples/sveltekit](examples/sveltekit). -```diff -- -+ +```js +// vite.config.js +import { sveltekit } from "@sveltejs/kit/vite"; +import { optimizeCss } from "carbon-preprocess-svelte"; +import { defineConfig } from "vite"; +export default defineConfig({ + plugins: [sveltekit(), optimizeCss()], +}); ``` -#### Usage +#### Vite + +See [examples/vite](examples/vite). ```js -// svelte.config.js -import { pictograms } from "carbon-preprocess-svelte"; +// vite.config.js +import { svelte } from "@sveltejs/vite-plugin-svelte"; +import { optimizeCss } from "carbon-preprocess-svelte"; +/** @type {import('vite').UserConfig} */ export default { - preprocess: [pictograms()], + plugins: [svelte(), optimizeCss()], }; ``` -### `collectHeadings` - -`collectHeadings` extracts heading elements from markup with an optional callback to modify the source content. This can be used to create a table of contents. - -**Example** - -Markup: - -```svelte -
- -

Heading 1

-

Heading 2

-

Heading 3

-
-``` +#### Rollup -Extracted headings: +This code is abridged; see [examples/rollup](examples/rollup) for a full set-up. ```js -const headings = [ - { id: "h1", text: "Heading 1", level: 1 }, - { id: "h2-0", text: "Heading 2", level: 2 }, - { id: "h2-1", text: "Heading 2", level: 2 }, - { id: undefined, text: "Heading 3", level: 3 }, -]; -``` - -#### Usage +// rollup.config.js +import svelte from "rollup-plugin-svelte"; +import { optimizeCss } from "carbon-preprocess-svelte"; -In the following example, we create a table of contents from the `

` elements in a Svelte file. In the `afterCollect` callback, we replace `` with the table of contents. - -```js -// svelte.config.js -import { collectHeadings } from "carbon-preprocess-svelte"; +const production = !process.env.ROLLUP_WATCH; export default { - preprocess: [ - collectHeadings({ - afterCollect: (headings, content) => { - const toc = headings - .filter((heading) => heading.level === 2) - .map((item) => `
  • ${item.text}
  • `) - .join(""); - - return content.replace("", `
      ${toc}
    `); - }, + plugins: [ + svelte({ + preprocess: [optimizeImports()], }), + + // Only apply the plugin when building for production. + production && optimizeCss(), ], }; ``` -#### API - -```js -interface CollectHeadingsOptions { - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test: RegExp; - - /** - * Optional callback to transform the content after extracting all headings - */ - afterCollect: ( - headings: Array<{ - id?: string, - text: string, - level: 1 | 2 | 3 | 4 | 5 | 6, - }>, - content: string - ) => string; -} -``` - -### `include` - -`include` prepends or appends arbitrary content to the script and markup blocks. - -**Example** - -```diff - - -+ - -

    Title

    - -+

    Summary

    -``` +#### Webpack -#### Usage +Webpack users should use the `OptimizeCssPlugin`. The plugin API is identical to the Vite plugin. -In the above example, we prepend script content that imports the `CodeSnippet` component from `carbon-components-svelte`. In the markup, we prepend `` and append `

    Summary

    `. +This code is abridged; see [examples/webpack](examples/webpack) for a full set-up. ```js -// svelte.config.js -import { include } from "carbon-preprocess-svelte"; +// webpack.config.js +const { OptimizeCssPlugin } = require("carbon-preprocess-svelte"); -export default { - preprocess: [ - include({ - script: [ - { - content: 'import { CodeSnippet } from "carbon-components-svelte";', - }, - ], - markup: [ - { content: "" }, - { - content: "

    Summary

    ", - behavior: "append", - }, - ], - }), +const PROD = process.env.NODE_ENV === "production"; + +module.exports = { + plugins: [ + // Only apply the plugin when building for production. + PROD && new OptimizeCssPlugin(), ], }; ``` -#### API +#### `optimizeCss` API -By default, the `include` preprocessor will _prepend_ content to the content block. Set `behavior` to `"append"` to append the content. - -```js -interface PreprocessIncludeOptions { +```ts +optimizeCss({ /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ + * By default, the plugin will print the size + * difference between the original and optimized CSS. + * + * Set to `false` to disable verbose logging. + * @default true */ - test?: RegExp; - - script: Array<{ - /** - * Specify the content the prepend or append - * @example - * import { CodeSnippet } from "carbon-components-svelte"; - */ - content: string, - - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test?: RegExp, - - /** - * Specify whether the content should be prepended or appended - * @default "prepend" - */ - behavior?: "prepend" | "append", - }>; - - markup: Array<{ - /** - * Specify the content the prepend or append - * @example - *
      Table of Contents
    - */ - content: string, - - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test?: RegExp, - - /** - * Specify whether the content should be prepended or appended - * @default "prepend" - */ - behavior?: "prepend" | "append", - }>; -} -``` - -## Presets - -```js -// svelte.config.js -import { presetCarbon } from "carbon-preprocess-svelte"; + verbose: false, -export default { - preprocess: presetCarbon(), - - // if using other preprocessors - // preprocess: [...presetCarbon()], -}; + /** + * By default, pre-compiled Carbon StyleSheets ship `@font-face` rules + * for all available IBM Plex fonts, many of which are not actually + * used in Carbon Svelte components. + * + * The default behavior is to preserve the following IBM Plex fonts: + * - IBM Plex Sans (300/400/600-weight and normal-font-style rules) + * - IBM Plex Mono (400-weight and normal-font-style rules) + * + * Set to `true` to disable this behavior and + * retain *all* IBM Plex `@font-face` rules. + * @default false + */ + preserveAllIBMFonts: false, +}); ``` -## Sample SvelteKit set-up +## Examples -```js -// svelte.config.js -import adapter from "@sveltejs/adapter-static"; -import { optimizeImports, optimizeCss } from "carbon-preprocess-svelte"; - -/** @type {import('@sveltejs/kit').Config} */ -export default { - preprocess: [optimizeImports()], - kit: { - adapter: adapter(), - vite: { - plugins: [process.env.NODE_ENV === "production" && optimizeCss()], - }, - }, -}; -``` +Refer to [examples](examples) for common set-ups. ## Contributing diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..a051597 Binary files /dev/null and b/bun.lockb differ diff --git a/examples/rollup/.gitignore b/examples/rollup/.gitignore new file mode 100644 index 0000000..faa19f7 --- /dev/null +++ b/examples/rollup/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +.vscode +node_modules +public/build diff --git a/examples/rollup/README.md b/examples/rollup/README.md new file mode 100644 index 0000000..cab9b67 --- /dev/null +++ b/examples/rollup/README.md @@ -0,0 +1,32 @@ +# rollup + +> Used for end-to-end testing and development purposes. + +## Quick Start + +```sh +# Rebuild the library when making changes +bun prepack -w + +# Create a local link to the library +bun link +``` + +In this folder, you can run the following commands: + +```sh +# Install dependencies +bun i +``` + +Run the app in development mode. This should only apply the `optimizeImports` preprocessor. + +```sh +bun run dev +``` + +Build the app for production. This should run both the `optimizeImports` and `optimizeCss` preprocessors. + +```sh +bun run build +``` diff --git a/examples/rollup/bun.lockb b/examples/rollup/bun.lockb new file mode 100755 index 0000000..dbd5f6c Binary files /dev/null and b/examples/rollup/bun.lockb differ diff --git a/examples/rollup/package.json b/examples/rollup/package.json new file mode 100644 index 0000000..847bcb8 --- /dev/null +++ b/examples/rollup/package.json @@ -0,0 +1,19 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "rollup -cw", + "build": "rollup -c" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "latest", + "@rollup/plugin-node-resolve": "latest", + "carbon-components-svelte": "^0.85.0", + "carbon-preprocess-svelte": "link:carbon-preprocess-svelte", + "rollup": "latest", + "rollup-plugin-css-only": "latest", + "rollup-plugin-svelte": "latest", + "rollup-plugin-terser": "latest", + "svelte": "latest" + } +} diff --git a/examples/rollup/public/index.html b/examples/rollup/public/index.html new file mode 100644 index 0000000..3231907 --- /dev/null +++ b/examples/rollup/public/index.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/examples/rollup/rollup.config.js b/examples/rollup/rollup.config.js new file mode 100644 index 0000000..04d367f --- /dev/null +++ b/examples/rollup/rollup.config.js @@ -0,0 +1,30 @@ +import commonjs from "@rollup/plugin-commonjs"; +import resolve from "@rollup/plugin-node-resolve"; +import { optimizeCss, optimizeImports } from "carbon-preprocess-svelte"; +import css from "rollup-plugin-css-only"; +import svelte from "rollup-plugin-svelte"; +import { terser } from "rollup-plugin-terser"; + +const production = !process.env.ROLLUP_WATCH; + +export default { + input: "src/index.js", + output: { + sourcemap: !production, + format: "iife", + name: "app", + file: "public/build/bundle.js", + inlineDynamicImports: true, + }, + plugins: [ + svelte({ + preprocess: [optimizeImports()], + compilerOptions: { dev: !production }, + }), + resolve({ browser: true, dedupe: ["svelte"] }), + commonjs(), + css({ output: "bundle.css" }), + production && terser(), + production && optimizeCss(), + ], +}; diff --git a/examples/rollup/src/App.svelte b/examples/rollup/src/App.svelte new file mode 100644 index 0000000..af1a4c5 --- /dev/null +++ b/examples/rollup/src/App.svelte @@ -0,0 +1,58 @@ + + + diff --git a/examples/rollup/src/index.js b/examples/rollup/src/index.js new file mode 100644 index 0000000..aba70f6 --- /dev/null +++ b/examples/rollup/src/index.js @@ -0,0 +1,5 @@ +import App from "./App.svelte"; + +const app = new App({ target: document.body }); + +export default app; diff --git a/tests/e2e/sveltekit/.gitignore b/examples/sveltekit/.gitignore similarity index 68% rename from tests/e2e/sveltekit/.gitignore rename to examples/sveltekit/.gitignore index 380fd86..4c97a25 100644 --- a/tests/e2e/sveltekit/.gitignore +++ b/examples/sveltekit/.gitignore @@ -1,4 +1,4 @@ .DS_Store -/node_modules -/.svelte-kit +node_modules /build +/.svelte-kit diff --git a/examples/sveltekit/README.md b/examples/sveltekit/README.md new file mode 100644 index 0000000..e9f2572 --- /dev/null +++ b/examples/sveltekit/README.md @@ -0,0 +1,32 @@ +# sveltekit + +> Used for end-to-end testing and development purposes. + +## Quick Start + +```sh +# Rebuild the library when making changes +bun prepack -w + +# Create a local link to the library +bun link +``` + +In this folder, you can run the following commands: + +```sh +# Install dependencies +bun i +``` + +Run the app in development mode. This should only apply the `optimizeImports` preprocessor. + +```sh +bun run dev +``` + +Build the app for production. This should run both the `optimizeImports` and `optimizeCss` preprocessors. + +```sh +bun run build +``` diff --git a/examples/sveltekit/bun.lockb b/examples/sveltekit/bun.lockb new file mode 100755 index 0000000..e99ee2d Binary files /dev/null and b/examples/sveltekit/bun.lockb differ diff --git a/examples/sveltekit/package.json b/examples/sveltekit/package.json new file mode 100644 index 0000000..c1bd324 --- /dev/null +++ b/examples/sveltekit/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@sveltejs/adapter-static": "latest", + "@sveltejs/kit": "latest", + "@sveltejs/vite-plugin-svelte": "latest", + "carbon-components-svelte": "^0.85.0", + "carbon-preprocess-svelte": "link:carbon-preprocess-svelte", + "svelte": "latest", + "vite": "latest" + }, + "type": "module" +} diff --git a/examples/sveltekit/src/app.html b/examples/sveltekit/src/app.html new file mode 100644 index 0000000..84ffad1 --- /dev/null +++ b/examples/sveltekit/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
    %sveltekit.body%
    + + diff --git a/examples/sveltekit/src/routes/+layout.js b/examples/sveltekit/src/routes/+layout.js new file mode 100644 index 0000000..189f71e --- /dev/null +++ b/examples/sveltekit/src/routes/+layout.js @@ -0,0 +1 @@ +export const prerender = true; diff --git a/examples/sveltekit/src/routes/+page.svelte b/examples/sveltekit/src/routes/+page.svelte new file mode 100644 index 0000000..af1a4c5 --- /dev/null +++ b/examples/sveltekit/src/routes/+page.svelte @@ -0,0 +1,58 @@ + + + diff --git a/examples/sveltekit/static/favicon.png b/examples/sveltekit/static/favicon.png new file mode 100644 index 0000000..825b9e6 Binary files /dev/null and b/examples/sveltekit/static/favicon.png differ diff --git a/examples/sveltekit/svelte.config.js b/examples/sveltekit/svelte.config.js new file mode 100644 index 0000000..8c82e17 --- /dev/null +++ b/examples/sveltekit/svelte.config.js @@ -0,0 +1,12 @@ +import adapter from "@sveltejs/adapter-static"; +import { optimizeImports } from "carbon-preprocess-svelte"; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: [optimizeImports()], + kit: { + adapter: adapter(), + }, +}; + +export default config; diff --git a/examples/sveltekit/vite.config.js b/examples/sveltekit/vite.config.js new file mode 100644 index 0000000..89b5388 --- /dev/null +++ b/examples/sveltekit/vite.config.js @@ -0,0 +1,17 @@ +import { sveltekit } from "@sveltejs/kit/vite"; +import { optimizeCss } from "carbon-preprocess-svelte"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [sveltekit(), optimizeCss()], + + // Optional, but recommended for even faster cold starts. + // Instruct Vite to exclude packages that `optimizeImports` will resolve. + optimizeDeps: { + exclude: [ + "carbon-components-svelte", + "carbon-icons-svelte", + "carbon-pictograms-svelte", + ], + }, +}); diff --git a/examples/vite/.gitignore b/examples/vite/.gitignore new file mode 100644 index 0000000..690975f --- /dev/null +++ b/examples/vite/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +public diff --git a/examples/vite/README.md b/examples/vite/README.md new file mode 100644 index 0000000..755d009 --- /dev/null +++ b/examples/vite/README.md @@ -0,0 +1,32 @@ +# vite + +> Used for end-to-end testing and development purposes. + +## Quick Start + +```sh +# Rebuild the library when making changes +bun prepack -w + +# Create a local link to the library +bun link +``` + +In this folder, you can run the following commands: + +```sh +# Install dependencies +bun i +``` + +Run the app in development mode. This should only apply the `optimizeImports` preprocessor. + +```sh +bun run dev +``` + +Build the app for production. This should run both the `optimizeImports` and `optimizeCss` preprocessors. + +```sh +bun run build +``` diff --git a/examples/vite/bun.lockb b/examples/vite/bun.lockb new file mode 100755 index 0000000..fb0ae52 Binary files /dev/null and b/examples/vite/bun.lockb differ diff --git a/tests/e2e/sveltekit/src/app.html b/examples/vite/index.html similarity index 52% rename from tests/e2e/sveltekit/src/app.html rename to examples/vite/index.html index 8c172db..4ef7529 100644 --- a/tests/e2e/sveltekit/src/app.html +++ b/examples/vite/index.html @@ -1,11 +1,14 @@ - + - %svelte.head% -
    %svelte.body%
    + diff --git a/examples/vite/package.json b/examples/vite/package.json new file mode 100644 index 0000000..dc95559 --- /dev/null +++ b/examples/vite/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "latest", + "carbon-components-svelte": "^0.85.0", + "carbon-preprocess-svelte": "link:carbon-preprocess-svelte", + "svelte": "latest", + "vite": "latest" + } +} diff --git a/examples/vite/src/App.svelte b/examples/vite/src/App.svelte new file mode 100644 index 0000000..70e7f60 --- /dev/null +++ b/examples/vite/src/App.svelte @@ -0,0 +1,58 @@ + + + diff --git a/examples/vite/vite.config.ts b/examples/vite/vite.config.ts new file mode 100644 index 0000000..a010759 --- /dev/null +++ b/examples/vite/vite.config.ts @@ -0,0 +1,22 @@ +import { svelte, vitePreprocess } from "@sveltejs/vite-plugin-svelte"; +import { optimizeCss, optimizeImports } from "carbon-preprocess-svelte"; + +/** @type {import('vite').UserConfig} */ +export default { + plugins: [ + svelte({ + preprocess: [vitePreprocess(), optimizeImports()], + }), + optimizeCss(), + ], + + // Optional, but recommended for even faster cold starts. + // Instruct Vite to exclude packages that `optimizeImports` will resolve. + optimizeDeps: { + exclude: [ + "carbon-components-svelte", + "carbon-icons-svelte", + "carbon-pictograms-svelte", + ], + }, +}; diff --git a/examples/webpack/.gitignore b/examples/webpack/.gitignore new file mode 100644 index 0000000..690975f --- /dev/null +++ b/examples/webpack/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +public diff --git a/examples/webpack/README.md b/examples/webpack/README.md new file mode 100644 index 0000000..efb8321 --- /dev/null +++ b/examples/webpack/README.md @@ -0,0 +1,35 @@ +# example + +> Used for end-to-end testing and development purposes. + +> [!NOTE] +> Currently, the `optimizeCss` plugin does not support Webpack. + +## Quick Start + +```sh +# Rebuild the library when making changes +bun prepack -w + +# Create a local link to the library +bun link +``` + +In this folder, you can run the following commands: + +```sh +# Install dependencies +bun i +``` + +Run the app in development mode. This should only apply the `optimizeImports` preprocessor. + +```sh +bun run dev +``` + +Build the app for production. This should run both the `optimizeImports` and `optimizeCss` preprocessors. + +```sh +bun run build +``` diff --git a/examples/webpack/bun.lockb b/examples/webpack/bun.lockb new file mode 100755 index 0000000..698e810 Binary files /dev/null and b/examples/webpack/bun.lockb differ diff --git a/examples/webpack/package.json b/examples/webpack/package.json new file mode 100644 index 0000000..13f4db9 --- /dev/null +++ b/examples/webpack/package.json @@ -0,0 +1,19 @@ +{ + "private": true, + "scripts": { + "dev": "webpack serve", + "build": "NODE_ENV=production webpack" + }, + "devDependencies": { + "carbon-components-svelte": "^0.85.0", + "carbon-preprocess-svelte": "link:carbon-preprocess-svelte", + "css-loader": "latest", + "html-webpack-plugin": "latest", + "mini-css-extract-plugin": "latest", + "svelte": "latest", + "svelte-loader": "latest", + "webpack": "latest", + "webpack-cli": "latest", + "webpack-dev-server": "latest" + } +} diff --git a/examples/webpack/src/App.svelte b/examples/webpack/src/App.svelte new file mode 100644 index 0000000..70e7f60 --- /dev/null +++ b/examples/webpack/src/App.svelte @@ -0,0 +1,58 @@ + + + diff --git a/examples/webpack/src/index.js b/examples/webpack/src/index.js new file mode 100644 index 0000000..aba70f6 --- /dev/null +++ b/examples/webpack/src/index.js @@ -0,0 +1,5 @@ +import App from "./App.svelte"; + +const app = new App({ target: document.body }); + +export default app; diff --git a/examples/webpack/webpack.config.js b/examples/webpack/webpack.config.js new file mode 100644 index 0000000..81ae1ba --- /dev/null +++ b/examples/webpack/webpack.config.js @@ -0,0 +1,74 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const path = require("path"); +const { + optimizeImports, + OptimizeCssPlugin, +} = require("carbon-preprocess-svelte"); + +const NODE_ENV = process.env.NODE_ENV || "development"; +const PROD = NODE_ENV === "production"; + +module.exports = { + entry: { "build/bundle": ["./src/index.js"] }, + resolve: { + alias: { + svelte: path.resolve("node_modules", "svelte/src/runtime"), + }, + extensions: [".mjs", ".js", ".svelte"], + mainFields: ["svelte", "browser", "module", "main"], + conditionNames: ["svelte", "browser", "import"], + }, + output: { + publicPath: "/", + path: path.join(__dirname, "/public"), + filename: PROD ? "[name].[contenthash].js" : "[name].js", + chunkFilename: "[name].[id].js", + clean: true, + }, + module: { + rules: [ + { + test: /\.svelte$/, + use: { + loader: "svelte-loader", + options: { + hotReload: !PROD, + preprocess: [optimizeImports()], + compilerOptions: { dev: !PROD }, + }, + }, + }, + { + test: /\.css$/, + use: [MiniCssExtractPlugin.loader, "css-loader"], + }, + { + test: /node_modules\/svelte\/.*\.mjs$/, + resolve: { fullySpecified: false }, + }, + ], + }, + mode: NODE_ENV, + plugins: [ + PROD && new OptimizeCssPlugin(), + new MiniCssExtractPlugin({ + filename: PROD ? "[name].[chunkhash].css" : "[name].css", + }), + new HtmlWebpackPlugin({ + templateContent: ` + + + + + + + + + `, + }), + ], + stats: "errors-only", + devtool: PROD ? false : "source-map", + devServer: { hot: true, historyApiFallback: true }, +}; diff --git a/examples/webpack/yarn.lock b/examples/webpack/yarn.lock new file mode 100644 index 0000000..e201c21 --- /dev/null +++ b/examples/webpack/yarn.lock @@ -0,0 +1,2960 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.1": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@ibm/telemetry-js@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@ibm/telemetry-js/-/telemetry-js-1.2.1.tgz#0b12801a683af23bcd2b90d1b83f332b3cca7f0e" + integrity sha512-ZNuqoclscha2RC089RBPkiGzv8g+mQfBOnHDJZEGBFrvsXg0B9lfRGFBSLzCuTR5nFDqVFYb6XqMRu36EiHIDA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.56.5" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.5.tgz#94b88cab77588fcecdd0771a6d576fa1c0af9d02" + integrity sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.1", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.43" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54" + integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.21": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mime@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "20.11.25" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.25.tgz#0f50d62f274e54dd7a49f7704cc16bfbcccaf49f" + integrity sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw== + dependencies: + undici-types "~5.26.4" + +"@types/pug@^2.0.6": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.10.tgz#52f8dbd6113517aef901db20b4f3fca543b88c1f" + integrity sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA== + +"@types/qs@*": + version "6.9.12" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.12.tgz#afa96b383a3a6fdc859453a1892d41b607fc7756" + integrity sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.15.5": + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.36": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.10": + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn@^8.10.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +axobject-query@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.0.0.tgz#04a4c90dce33cc5d606c76d6216e3b250ff70dab" + integrity sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw== + dependencies: + dequal "^2.0.3" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.10: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-crc32@^0.2.5: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +caniuse-lite@^1.0.30001587: + version "1.0.30001596" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz#da06b79c3d9c3d9958eb307aa832ac68ead79bee" + integrity sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ== + +carbon-components-svelte@^0.84.0: + version "0.84.0" + resolved "https://registry.yarnpkg.com/carbon-components-svelte/-/carbon-components-svelte-0.84.0.tgz#75b1a2c588e4c120af429f1f86e677ec3d842ff0" + integrity sha512-NSIGFYsmUJ04aOuQaS8e5ldnufj8gJpYnaPnMM3O+jQJdd6bEpGKhuh7fpdB0U67QEQYbSrxmuRzThLh85Qpnw== + dependencies: + "@ibm/telemetry-js" "^1.2.1" + flatpickr "4.6.9" + +carbon-preprocess-svelte@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.10.0.tgz#6a8790d5bf38e3cf26e6d5ac8a72c742768c4a88" + integrity sha512-jsmVvLcCKuxyoEkyRXvBux4JdatglTuqlDt95TiXiXmOS4XCcrHYSNiBzJ9vsOHpQIaRy8lGQxx6mh6G1lr6FQ== + dependencies: + purgecss "^4.1.3" + svelte-preprocess "^5.0.3" + typescript "^4.7.4" + +chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +clean-css@^5.2.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +code-red@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/code-red/-/code-red-1.0.4.tgz#59ba5c9d1d320a4ef795bc10a28bd42bfebe3e35" + integrity sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + "@types/estree" "^1.0.1" + acorn "^8.10.0" + estree-walker "^3.0.3" + periscopic "^3.1.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^8.0.0, commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^7.0.0, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-loader@^6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" + integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.4" + postcss-modules-scope "^3.1.1" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-data-property@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.699" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz#dd53c939e13da64e94b341e563f0a3011b4ef0e9" + integrity sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +enhanced-resolve@^5.15.0: + version "5.15.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz#384391e025f099e67b4b00bfd7f0906a408214e1" + integrity sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +envinfo@^7.7.3: + version "7.11.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + +es6-promise@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^3.0.0, estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.3: + version "4.18.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.3.tgz#6870746f3ff904dee1819b82e4b51509afffb0d4" + integrity sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatpickr@4.6.9: + version "4.6.9" + resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499" + integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw== + +follow-redirects@^1.0.0: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3, glob@^7.1.7: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hasown@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.4.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-network-error@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.0.1.tgz#a68061a20387e9144e145571bea693056a370b92" + integrity sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-reference@^3.0.0, is-reference@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" + integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== + dependencies: + "@types/estree" "*" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +launch-editor@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-character@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-character/-/locate-character-3.0.0.tgz#0305c5b8744f61028ef5d01f444009e00779f974" + integrity sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + +magic-string@^0.30.4, magic-string@^0.30.5: + version "0.30.8" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^4.6.0: + version "4.7.7" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.7.7.tgz#bcf09cab1646d655f659e7cf832dfc75ccb95b2d" + integrity sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw== + dependencies: + tslib "^2.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7" + integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^10.0.3: + version "10.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-retry@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" + integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +periscopic@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" + integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^3.0.0" + is-reference "^3.0.0" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.3.5, postcss@^8.4.33: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +purgecss@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.1.3.tgz#683f6a133c8c4de7aa82fe2746d1393b214918f7" + integrity sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw== + dependencies: + commander "^8.0.0" + glob "^7.1.7" + postcss "^8.3.5" + postcss-selector-parser "^6.0.6" + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +rimraf@^2.5.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== + dependencies: + glob "^10.3.7" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sander@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" + integrity sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA== + dependencies: + es6-promise "^3.1.2" + graceful-fs "^4.1.3" + mkdirp "^0.5.1" + rimraf "^2.5.2" + +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sorcery@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.11.0.tgz#310c80ee993433854bb55bb9aa4003acd147fca8" + integrity sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.14" + buffer-crc32 "^0.2.5" + minimist "^1.2.0" + sander "^0.5.0" + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svelte-dev-helper@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz#7d187db5c6cdbbd64d75a32f91b8998bde3273c3" + integrity sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ== + +svelte-hmr@^0.14.2: + version "0.14.12" + resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.12.tgz#a127aec02f1896500b10148b2d4d21ddde39973f" + integrity sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w== + +svelte-loader@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/svelte-loader/-/svelte-loader-3.1.9.tgz#950015ad5b30fb205fceee0dd6d37f228237605c" + integrity sha512-RITPqze3TppOhaZF8SEFTDTwFHov17k3UkOjpxyL/No/YVrvckKmXWOEj7QEpsZZZSNQPb28tMZbHEI2xLhJMQ== + dependencies: + loader-utils "^2.0.4" + svelte-dev-helper "^1.1.9" + svelte-hmr "^0.14.2" + +svelte-preprocess@^5.0.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz#7682239fe53f724c845b53026816fdfe15d028f9" + integrity sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw== + dependencies: + "@types/pug" "^2.0.6" + detect-indent "^6.1.0" + magic-string "^0.30.5" + sorcery "^0.11.0" + strip-indent "^3.0.0" + +svelte@^4.2.12: + version "4.2.12" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-4.2.12.tgz#13d98d2274d24d3ad216c8fdc801511171c70bb1" + integrity sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug== + dependencies: + "@ampproject/remapping" "^2.2.1" + "@jridgewell/sourcemap-codec" "^1.4.15" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/estree" "^1.0.1" + acorn "^8.9.0" + aria-query "^5.3.0" + axobject-query "^4.0.0" + code-red "^1.0.3" + css-tree "^2.3.1" + estree-walker "^3.0.3" + is-reference "^3.0.1" + locate-character "^3.0.0" + magic-string "^0.30.4" + periscopic "^3.1.0" + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.10.0, terser@^5.26.0: + version "5.29.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.29.1.tgz#44e58045b70c09792ba14bfb7b4e14ca8755b9fa" + integrity sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tslib@^2.0.0, tslib@^2.0.3: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^4.7.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.0.0.tgz#13595dc038a400e3ac9c76f0c9a8c75a59a7d4da" + integrity sha512-tZ5hqsWwww/8DislmrzXE3x+4f+v10H1z57mA2dWFrILb4i3xX+dPhTkcdR0DLyQztrhF2AUmO5nN085UYjd/Q== + dependencies: + colorette "^2.0.10" + memfs "^4.6.0" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.0.2.tgz#3035972dae4b768de020f91418de471e4ef12b6c" + integrity sha512-IVj3qsQhiLJR82zVg3QdPtngMD05CYP/Am+9NG5QSl+XwUR/UPtFwllRBKrMwM9ttzFsC6Zj3DMgniPyn/Z0hQ== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" + ansi-html-community "^0.0.8" + bonjour-service "^1.2.1" + chokidar "^3.6.0" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.4.0" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + rimraf "^5.0.5" + schema-utils "^4.2.0" + selfsigned "^2.4.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^7.0.0" + ws "^8.16.0" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.90.3: + version "5.90.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" + integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/package.json b/package.json index 20fc838..068b004 100644 --- a/package.json +++ b/package.json @@ -2,58 +2,32 @@ "name": "carbon-preprocess-svelte", "version": "0.10.0", "license": "Apache-2.0", - "description": "Collection of Svelte preprocessors for the Carbon Design System", - "module": "./dist/index.mjs", + "description": "Svelte preprocessors for the Carbon Design System", + "author": "Eric Liu (https://github.com/metonym)", "main": "./dist/index.js", "types": "./dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.js" - } - }, "scripts": { - "build:api": "run-p build:api:*", - "build:api:components": "ts-node src/build/build-components", - "build:api:elements": "ts-node src/build/build-elements", - "build:api:icons": "ts-node src/build/build-icons", - "build:api:pictograms": "ts-node src/build/build-pictograms", - "build:lib": "run-p build:lib:*", - "build:lib:cjs": "esbuild src/index.cjs.ts --bundle --platform=node --target=node10.4 --external:purgecss --external:svelte-preprocess --external:typescript --outfile=dist/index.js", - "build:lib:esm": "esbuild src/index.ts --bundle --platform=node --target=es6 --format=esm --external:purgecss --external:svelte-preprocess --external:typescript --outfile=dist/index.mjs", - "build:lib:types": "tsc", - "prepack": "run-s build:api build:lib", - "test": "run-p test:*", - "test:unit": "ts-node tests/unit", - "test:integration": "ts-node tests/integration", - "format": "prettier --write '.'" + "index:components": "bun scripts/index-components.ts", + "prepack": "tsc -p tsconfig.build.json", + "format": "prettier --write ." }, "dependencies": { - "purgecss": "^4.1.3", - "svelte-preprocess": "^5.0.3", - "typescript": "^4.7.4" + "magic-string": "^0.30.8", + "postcss": "^8.4.36", + "postcss-discard-empty": "^6.0.3" }, "devDependencies": { - "@carbon/elements": "10.31.0", - "@carbon/icon-helpers": "^10.16.0", - "@carbon/icons": "^11.0.1", - "@carbon/pictograms": "^12.0.2", - "@types/carbon__elements": "10.31.0", - "@types/carbon__icon-helpers": "^10.7.1", - "@types/node": "^15.0.2", - "carbon-components-svelte": "^0.75.1", - "esbuild": "^0.11.19", - "npm-run-all": "^4.1.5", - "prettier": "^2.6.2", - "prettier-plugin-svelte": "^2.7.0", - "rollup": "^2.70.2", - "svelte": "^3.47.0", - "totalist": "^3.0.0", - "ts-node": "^10.7.0" + "@types/bun": "latest", + "carbon-components-svelte": "0.85.0", + "prettier": "latest", + "svelte": "latest", + "typescript": "latest", + "vite": "latest", + "webpack": "latest" }, "repository": { "type": "git", - "url": "https://github.com/carbon-design-system/carbon-preprocess-svelte.git" + "url": "git+https://github.com/carbon-design-system/carbon-preprocess-svelte.git" }, "homepage": "https://github.com/carbon-design-system/carbon-preprocess-svelte", "bugs": "https://github.com/carbon-design-system/carbon-preprocess-svelte/issues", @@ -63,15 +37,13 @@ "carbon preprocess", "svelte", "preprocessor", - "optimize imports" + "optimize imports", + "optimize CSS" ], "files": [ "dist" ], - "contributors": [ + "maintainers": [ "Eric Liu (https://github.com/metonym)" - ], - "resolutions": { - "path-parse": ">=1.0.7" - } + ] } diff --git a/scripts/extract-selectors.ts b/scripts/extract-selectors.ts new file mode 100644 index 0000000..4ef4962 --- /dev/null +++ b/scripts/extract-selectors.ts @@ -0,0 +1,81 @@ +import { parse, walk } from "svelte/compiler"; + +const CARBON_PREFIX = /bx--/; + +type ExtractSelectorsProps = { + code: string; + filename: string; +}; + +export function extractSelectors(props: ExtractSelectorsProps) { + const { code, filename } = props; + const ast = parse(code, { filename }); + const selectors: Map = new Map(); + + walk(ast, { + enter(node) { + if (node.type === "Attribute" && node.name === "class") { + // class="c1" + // class="c1 c2" + // class="{c} c1 c2 c3" + node.value?.map((value) => { + if (value.type === "Text") { + value.data + .split(/\s+/) + .filter(Boolean) + .forEach((selector) => + selectors.set(selector, { type: node.type }), + ); + } + }); + } + + // class:directive + if (node.type === "Class") { + selectors.set(node.name, { type: node.type }); + } + + if (node.type === "PseudoClassSelector" && node.name === "global") { + // global selector + // :global(div) {} + node.children[0]?.value.split(",").forEach((selector: string) => { + selectors.set(selector.trim(), { type: node.type, name: node.name }); + }); + } + + if (node.type === "Literal" && CARBON_PREFIX.test(node.value)) { + selectors.set(node.value, { type: "Class" }); + } + + if ( + node.type === "TemplateElement" && + CARBON_PREFIX.test(node.value.raw) + ) { + selectors.set(node.value.raw, { type: "Class" }); + } + }, + }); + + const classes: string[] = []; + + // Iterate through all class attribute identifiers + Array.from(selectors).forEach((selector) => { + const [v = ""] = selector; + + if (typeof v === "string") { + const value = v.trim(); + + if (value.startsWith("bx--") && !value.startsWith(".")) { + classes.push("." + value); + } else { + if (value.startsWith(".")) { + classes.push(value); + } else { + classes.push("." + value); + } + } + } + }); + + return classes; +} diff --git a/scripts/index-components.ts b/scripts/index-components.ts new file mode 100644 index 0000000..2dcddd2 --- /dev/null +++ b/scripts/index-components.ts @@ -0,0 +1,72 @@ +import { Glob } from "bun"; +import path from "node:path"; +import { parse, walk } from "svelte/compiler"; +import { CarbonSvelte } from "../src/constants"; +import { isSvelteFile } from "../src/utils"; +import { extractSelectors } from "./extract-selectors"; + +const carbon_path = path.join("node_modules", CarbonSvelte.Components); +const index_js = path.join(carbon_path, "src/index.js"); +const index_file = await Bun.file(index_js).text(); + +/** + * The exportee from `carbon-components-svelte`. + * @example Accordion, breakpoints, etc. + */ +type Identifier = string; + +type IdentifierValue = { path: string; classes: string[] }; + +const exports_map = new Map(); + +walk(parse(``), { + enter(node) { + if (node.type === "Identifier") { + exports_map.set(node.name, null); + } + }, +}); + +const files = new Glob("**/*.{js,svelte}").scan(path.join(carbon_path, "src")); + +for await (const file of files) { + const moduleName = path.parse(file).name; + + if (exports_map.has(moduleName)) { + const map: IdentifierValue = { + path: `${CarbonSvelte.Components}/src/${file}`, + classes: [], + }; + + if (isSvelteFile(file)) { + const file_path = path.join(carbon_path, "src/", file); + const file_text = await Bun.file(file_path).text(); + map.classes = extractSelectors({ code: file_text, filename: file }); + } + + exports_map.set(moduleName, map); + } +} + +// Sort Map keys alphabetically and convert to object. +const components = Object.fromEntries( + new Map( + [...exports_map.entries()] + .sort((a, b) => a.toLocaleString().localeCompare(b.toLocaleString())) + .filter(([_, value]) => value !== null), + ), +); + +await Bun.write( + "src/component-index.ts", + `// @generated +// This file was automatically generated and should not be edited. +// @see scripts/index-components.ts +// prettier-ignore + +export const components: Record = Object.freeze(${JSON.stringify( + components, + null, + 2, + )});\n`, +); diff --git a/src/build/build-components.ts b/src/build/build-components.ts deleted file mode 100644 index d3fb206..0000000 --- a/src/build/build-components.ts +++ /dev/null @@ -1,66 +0,0 @@ -import path from "path"; -import fs from "fs"; -import { totalist } from "totalist"; -import { parse, walk } from "svelte/compiler"; -import { getPackageJson, writeFile } from "../utils"; -import { CARBON_SVELTE, API_COMPONENTS } from "../constants"; -import type { BuildApi } from "../build"; -import type { Node } from "../walk-and-replace"; - -type ExportName = string; - -interface BuildComponentsApi { - path: string; -} -export interface BuildComponents extends BuildApi { - components: Record; -} - -(async () => { - const pkg = getPackageJson("node_modules/carbon-components-svelte"); - const components: BuildComponents = { - metadata: { - package: pkg.name!, - version: pkg.version!, - exports: 0, - }, - components: {}, - }; - - const indexJs = fs.readFileSync( - `node_modules/${CARBON_SVELTE.components}/src/index.js`, - "utf-8" - ); - const ast = parse(``); - const exports = new Set(); - - walk(ast, { - enter(node: Node) { - if (node.type === "Identifier") { - exports.add(node.name); - } - }, - }); - - components.metadata.exports = exports.size; - - const moduleNames = new Map(); - - await totalist(`node_modules/${CARBON_SVELTE.components}/src`, (file) => { - const moduleName = path.parse(file).name; - - if (exports.has(moduleName)) { - const path = `${CARBON_SVELTE.components}/src/${file}`; - moduleNames.set(moduleName, { path }); - } - }); - - [...moduleNames.entries()].sort().forEach(([moduleName, value]) => { - components.components[moduleName] = value; - }); - - await writeFile( - API_COMPONENTS, - `export const components = ${JSON.stringify(components, null, 2)}` - ); -})(); diff --git a/src/build/build-elements.ts b/src/build/build-elements.ts deleted file mode 100644 index 0c5d2aa..0000000 --- a/src/build/build-elements.ts +++ /dev/null @@ -1,186 +0,0 @@ -import * as elements from "@carbon/elements"; -import * as build from "../build"; -import { API_ELEMENTS } from "../constants"; -import { getPackageJson, writeFile } from "../utils"; - -export type TokenTypeStyles = - | build.type.TypeStylesComputed - | { - css: string; - breakpoints: Array<{ mediaQuery: string; css: string }>; - }; - -export type TokenUI = - | "interactive-01" - | "interactive-02" - | "interactive-03" - | "interactive-04" - | "ui-background" - | "ui-01" - | "ui-02" - | "ui-03" - | "ui-04" - | "ui-05" - | "text-01" - | "text-02" - | "text-03" - | "text-04" - | "text-05" - | "text-error" - | "icon-01" - | "icon-02" - | "icon-03" - | "link-01" - | "inverse-link" - | "field-01" - | "field-02" - | "inverse-01" - | "inverse-02" - | "support-01" - | "support-02" - | "support-03" - | "support-04" - | "inverse-support-01" - | "inverse-support-02" - | "inverse-support-03" - | "inverse-support-04" - | "overlay-01" - | "danger-01" - | "danger-02" - | "focus" - | "inverse-focus-ui" - | "hover-primary" - | "active-primary" - | "hover-primary-text" - | "hover-secondary" - | "active-secondary" - | "hover-tertiary" - | "active-tertiary" - | "hover-ui" - | "hover-light-ui" - | "hover-selected-ui" - | "active-ui" - | "active-light-ui" - | "selected-ui" - | "selected-light-ui" - | "inverse-hover-ui" - | "hover-danger" - | "active-danger" - | "hover-row" - | "visited-link" - | "disabled-01" - | "disabled-02" - | "disabled-03" - | "highlight" - | "decorative-01" - | "button-separator" - | "skeleton-01" - | "skeleton-02" - | "brand-01" - | "brand-02" - | "brand-03" - | "active-01" - | "hover-field" - | "danger"; - -export type v10_theme = "white" | "g10" | "g90" | "g100"; - -interface BuildElements extends build.BuildApi { - tokens: Record; - tokens_ui: Record>; -} - -const v10_THEMES: v10_theme[] = ["white", "g10", "g90", "g100"]; - -(async () => { - const pkg = getPackageJson("node_modules/@carbon/elements"); - const buildElements: BuildElements = { - metadata: { - package: pkg.name!, - version: pkg.version!, - exports: 0, - }, - - tokens: {}, - - // @ts-ignore - tokens_ui: {}, - }; - - function addToken(token: string, value?: any) { - const formatted = elements.formatTokenName(token); - buildElements.tokens[formatted] = value ?? formatted; - } - - // colors - const { colors } = elements; - - Object.entries(colors).forEach(([color, colorMap]) => { - Object.entries(colorMap).forEach(([grade, hex]) => { - const name = elements.formatTokenName(color); - const token = grade === "0" ? name : `${name}-${grade}`; - - buildElements.tokens[token] = hex; - }); - }); - - elements.tokens.type.forEach((type) => { - const { css, breakpoints } = build.type.serializeTypeStyles(elements[type]); - - buildElements.tokens[elements.formatTokenName(type)] = { - css, - breakpoints, - }; - }); - - // UI Colors - elements.tokens.colors.forEach((color) => { - addToken(color, undefined); - - const name = elements.formatTokenName(color) as TokenUI; - - buildElements.tokens_ui[name] = { - white: {}, - g10: {}, - g90: {}, - g100: {}, - }; - - v10_THEMES.forEach((theme) => { - buildElements.tokens_ui[name][theme] = elements[theme][color]; - }); - }); - - elements.tokens.layout.forEach((token) => { - const formatted = elements.formatTokenName(token); - buildElements.tokens[formatted] = elements[token]; - }); - - Object.entries(elements.fontWeights).forEach(([fontWeight, value]) => { - buildElements.tokens[elements.formatTokenName(fontWeight)] = value; - }); - - Object.entries(elements.fontFamilies).forEach(([fontFamily, value]) => { - buildElements.tokens[elements.formatTokenName(fontFamily)] = value; - }); - - // motion tokens - addToken("fast01", elements.fast01); - addToken("fast02", elements.fast02); - addToken("moderate01", elements.moderate01); - addToken("moderate02", elements.moderate02); - addToken("slow01", elements.slow01); - addToken("slow02", elements.slow02); - - Object.entries(elements.easings).forEach(([easing, types]) => { - Object.entries(types).forEach(([type, value]) => { - const key = `easing.${easing}.${type}`; - buildElements.tokens[key] = value; - }); - }); - - await writeFile( - API_ELEMENTS, - `export const elements = ${JSON.stringify(buildElements, null, 2)}` - ); -})(); diff --git a/src/build/build-icons.ts b/src/build/build-icons.ts deleted file mode 100644 index 1570826..0000000 --- a/src/build/build-icons.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { toString } from "@carbon/icon-helpers"; -import { getPackageJson, readFile, writeFile } from "../utils"; -import { API_ICONS } from "../constants"; -import { BuildApi } from "../build"; - -/** - * @example - * "Add16" - * "Add20" - */ -export type IconName = string; - -export interface BuildIcons extends BuildApi { - icons: Record; -} - -interface CarbonIconModule { - attributes: Record; - children: string; -} - -interface CarbonIconsMetadata { - icons: Array<{ - output: Array<{ - moduleName: IconName; - descriptor: { attrs: Record; content: any[] }; - }>; - }>; -} - -(async () => { - const pkg = getPackageJson("node_modules/@carbon/icons"); - const icons: BuildIcons = { - metadata: { - package: pkg.name!, - version: pkg.version!, - exports: 0, - }, - icons: {}, - }; - - const metadataJson = await readFile( - "node_modules/@carbon/icons/metadata.json", - "utf-8" - ); - const metadata: CarbonIconsMetadata = JSON.parse(metadataJson); - - icons.metadata.exports = metadata.icons.length; - - metadata.icons.map(({ output }) => { - output.forEach((output) => { - const { moduleName, descriptor } = output; - - icons.icons[moduleName] = { - attributes: { - width: descriptor.attrs.width, - height: descriptor.attrs.height, - }, - children: descriptor.content - .map((element) => toString(element)) - .join(""), - }; - }); - }); - - await writeFile( - API_ICONS, - `export const icons = ${JSON.stringify(icons, null, 2)}` - ); -})(); diff --git a/src/build/build-pictograms.ts b/src/build/build-pictograms.ts deleted file mode 100644 index 15cc65d..0000000 --- a/src/build/build-pictograms.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { toString } from "@carbon/icon-helpers"; -import { getPackageJson, readFile, writeFile } from "../utils"; -import { API_PICTOGRAMS } from "../constants"; -import { BuildApi } from "../build"; - -/** - * @example - * "Airplane" - * "ActiveServer" - */ -export type PictogramName = string; - -export interface BuildPictograms extends BuildApi { - pictograms: Record; -} - -interface CarbonPictogramModule { - attributes: Record; - children: string; -} - -export interface CarbonPictogramsMetadata { - icons: ReadonlyArray<{ - name: string; - friendlyName: string; - namespace: []; - assets: [ - { - filepath: string; - source: string; - optimized: { - data: string; - info: {}; - path: string; - }; - } - ]; - output: [ - pictogram: { - moduleName: PictogramName; - filepath: string; - descriptor: { - elem: "svg"; - attrs: { - xmlns: "http://www.w3.org/2000/svg"; - viewBox: "0 0 48 48"; - width: "48"; - height: "48"; - }; - content: { elem: string; attrs: object }[]; - name: string; - }; - } - ]; - category: string; - }>; -} - -(async () => { - const pkg = getPackageJson("node_modules/@carbon/pictograms"); - const pictograms: BuildPictograms = { - metadata: { - package: pkg.name!, - version: pkg.version!, - exports: 0, - }, - pictograms: {}, - }; - - const metadataJson = await readFile( - "node_modules/@carbon/pictograms/metadata.json", - "utf-8" - ); - const metadata: CarbonPictogramsMetadata = JSON.parse(metadataJson); - - pictograms.metadata.exports = metadata.icons.length; - - metadata.icons.map(({ output }) => { - output.forEach((output) => { - const { moduleName, descriptor } = output; - - pictograms.pictograms[moduleName] = { - attributes: { - width: descriptor.attrs.width, - height: descriptor.attrs.height, - }, - children: descriptor.content - .map((element) => toString(element)) - .join(""), - }; - }); - }); - - await writeFile( - API_PICTOGRAMS, - `export const pictograms = ${JSON.stringify(pictograms, null, 2)}` - ); -})(); diff --git a/src/build/index.ts b/src/build/index.ts deleted file mode 100644 index 2870c1c..0000000 --- a/src/build/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -export * as type from "./type"; - -export interface BuildApi { - metadata: { - /** - * Package name - * @example "carbon-components-svelte" - */ - package: string; - - /** - * Package version - * @example "0.32.0" - */ - version: string; - - /** - * Number of exports - */ - exports: number; - }; -} diff --git a/src/build/type.ts b/src/build/type.ts deleted file mode 100644 index 83c525e..0000000 --- a/src/build/type.ts +++ /dev/null @@ -1,46 +0,0 @@ -import * as elements from "@carbon/elements"; - -type TypeStylesBreakpoint = Partial< - Record ->; - -interface TypeStyles - extends Record { - breakpoints?: TypeStylesBreakpoint; -} - -export interface TypeStylesComputed { - css: string; - breakpoints: Array; -} - -export function serializeTypeStyles(type: TypeStyles): TypeStylesComputed { - let fn: TypeStylesComputed = { - css: "", - breakpoints: [], - }; - - const entries = Object.entries(type); - - entries.forEach(([key, value], i) => { - const property = elements.formatTokenName(key); - - if (key === "breakpoints") { - fn.breakpoints = Object.entries(value as TypeStylesBreakpoint).map( - ([breakpointName, value]) => { - const mediaQuery = elements.breakpoint( - breakpointName as elements.BreakpointName - ); - - return { mediaQuery, css: serializeTypeStyles(value!).css }; - } - ); - } else { - const semicolon = i === entries.length - 1 ? "" : ";"; - - fn.css += `${property}: ${value}${semicolon}`; - } - }); - - return fn; -} diff --git a/src/carbon-components-svelte.js b/src/carbon-components-svelte.js deleted file mode 100644 index ef90297..0000000 --- a/src/carbon-components-svelte.js +++ /dev/null @@ -1,513 +0,0 @@ -export const components = { - "metadata": { - "package": "carbon-components-svelte", - "version": "0.75.1", - "exports": 169 - }, - "components": { - "Accordion": { - "path": "carbon-components-svelte/src/Accordion/Accordion.svelte" - }, - "AccordionItem": { - "path": "carbon-components-svelte/src/Accordion/AccordionItem.svelte" - }, - "AccordionSkeleton": { - "path": "carbon-components-svelte/src/Accordion/AccordionSkeleton.svelte" - }, - "AspectRatio": { - "path": "carbon-components-svelte/src/AspectRatio/AspectRatio.svelte" - }, - "Breadcrumb": { - "path": "carbon-components-svelte/src/Breadcrumb/Breadcrumb.svelte" - }, - "BreadcrumbItem": { - "path": "carbon-components-svelte/src/Breadcrumb/BreadcrumbItem.svelte" - }, - "BreadcrumbSkeleton": { - "path": "carbon-components-svelte/src/Breadcrumb/BreadcrumbSkeleton.svelte" - }, - "Breakpoint": { - "path": "carbon-components-svelte/src/Breakpoint/Breakpoint.svelte" - }, - "Button": { - "path": "carbon-components-svelte/src/Button/Button.svelte" - }, - "ButtonSet": { - "path": "carbon-components-svelte/src/Button/ButtonSet.svelte" - }, - "ButtonSkeleton": { - "path": "carbon-components-svelte/src/Button/ButtonSkeleton.svelte" - }, - "Checkbox": { - "path": "carbon-components-svelte/src/Checkbox/Checkbox.svelte" - }, - "CheckboxSkeleton": { - "path": "carbon-components-svelte/src/Checkbox/CheckboxSkeleton.svelte" - }, - "ClickableTile": { - "path": "carbon-components-svelte/src/Tile/ClickableTile.svelte" - }, - "CodeSnippet": { - "path": "carbon-components-svelte/src/CodeSnippet/CodeSnippet.svelte" - }, - "CodeSnippetSkeleton": { - "path": "carbon-components-svelte/src/CodeSnippet/CodeSnippetSkeleton.svelte" - }, - "Column": { - "path": "carbon-components-svelte/src/Grid/Column.svelte" - }, - "ComboBox": { - "path": "carbon-components-svelte/src/ComboBox/ComboBox.svelte" - }, - "ComposedModal": { - "path": "carbon-components-svelte/src/ComposedModal/ComposedModal.svelte" - }, - "Content": { - "path": "carbon-components-svelte/src/UIShell/Content.svelte" - }, - "ContentSwitcher": { - "path": "carbon-components-svelte/src/ContentSwitcher/ContentSwitcher.svelte" - }, - "ContextMenu": { - "path": "carbon-components-svelte/src/ContextMenu/ContextMenu.svelte" - }, - "ContextMenuDivider": { - "path": "carbon-components-svelte/src/ContextMenu/ContextMenuDivider.svelte" - }, - "ContextMenuGroup": { - "path": "carbon-components-svelte/src/ContextMenu/ContextMenuGroup.svelte" - }, - "ContextMenuOption": { - "path": "carbon-components-svelte/src/ContextMenu/ContextMenuOption.svelte" - }, - "ContextMenuRadioGroup": { - "path": "carbon-components-svelte/src/ContextMenu/ContextMenuRadioGroup.svelte" - }, - "CopyButton": { - "path": "carbon-components-svelte/src/CopyButton/CopyButton.svelte" - }, - "DataTable": { - "path": "carbon-components-svelte/src/DataTable/DataTable.svelte" - }, - "DataTableSkeleton": { - "path": "carbon-components-svelte/src/DataTable/DataTableSkeleton.svelte" - }, - "DatePicker": { - "path": "carbon-components-svelte/src/DatePicker/DatePicker.svelte" - }, - "DatePickerInput": { - "path": "carbon-components-svelte/src/DatePicker/DatePickerInput.svelte" - }, - "DatePickerSkeleton": { - "path": "carbon-components-svelte/src/DatePicker/DatePickerSkeleton.svelte" - }, - "Dropdown": { - "path": "carbon-components-svelte/src/Dropdown/Dropdown.svelte" - }, - "DropdownSkeleton": { - "path": "carbon-components-svelte/src/Dropdown/DropdownSkeleton.svelte" - }, - "ExpandableTile": { - "path": "carbon-components-svelte/src/Tile/ExpandableTile.svelte" - }, - "FileUploader": { - "path": "carbon-components-svelte/src/FileUploader/FileUploader.svelte" - }, - "FileUploaderButton": { - "path": "carbon-components-svelte/src/FileUploader/FileUploaderButton.svelte" - }, - "FileUploaderDropContainer": { - "path": "carbon-components-svelte/src/FileUploader/FileUploaderDropContainer.svelte" - }, - "FileUploaderItem": { - "path": "carbon-components-svelte/src/FileUploader/FileUploaderItem.svelte" - }, - "FileUploaderSkeleton": { - "path": "carbon-components-svelte/src/FileUploader/FileUploaderSkeleton.svelte" - }, - "Filename": { - "path": "carbon-components-svelte/src/FileUploader/Filename.svelte" - }, - "FluidForm": { - "path": "carbon-components-svelte/src/FluidForm/FluidForm.svelte" - }, - "Form": { - "path": "carbon-components-svelte/src/Form/Form.svelte" - }, - "FormGroup": { - "path": "carbon-components-svelte/src/FormGroup/FormGroup.svelte" - }, - "FormItem": { - "path": "carbon-components-svelte/src/FormItem/FormItem.svelte" - }, - "FormLabel": { - "path": "carbon-components-svelte/src/FormLabel/FormLabel.svelte" - }, - "Grid": { - "path": "carbon-components-svelte/src/Grid/Grid.svelte" - }, - "Header": { - "path": "carbon-components-svelte/src/UIShell/Header.svelte" - }, - "HeaderAction": { - "path": "carbon-components-svelte/src/UIShell/HeaderAction.svelte" - }, - "HeaderActionLink": { - "path": "carbon-components-svelte/src/UIShell/HeaderActionLink.svelte" - }, - "HeaderGlobalAction": { - "path": "carbon-components-svelte/src/UIShell/HeaderGlobalAction.svelte" - }, - "HeaderNav": { - "path": "carbon-components-svelte/src/UIShell/HeaderNav.svelte" - }, - "HeaderNavItem": { - "path": "carbon-components-svelte/src/UIShell/HeaderNavItem.svelte" - }, - "HeaderNavMenu": { - "path": "carbon-components-svelte/src/UIShell/HeaderNavMenu.svelte" - }, - "HeaderPanelDivider": { - "path": "carbon-components-svelte/src/UIShell/HeaderPanelDivider.svelte" - }, - "HeaderPanelLink": { - "path": "carbon-components-svelte/src/UIShell/HeaderPanelLink.svelte" - }, - "HeaderPanelLinks": { - "path": "carbon-components-svelte/src/UIShell/HeaderPanelLinks.svelte" - }, - "HeaderSearch": { - "path": "carbon-components-svelte/src/UIShell/HeaderSearch.svelte" - }, - "HeaderUtilities": { - "path": "carbon-components-svelte/src/UIShell/HeaderUtilities.svelte" - }, - "ImageLoader": { - "path": "carbon-components-svelte/src/ImageLoader/ImageLoader.svelte" - }, - "InlineLoading": { - "path": "carbon-components-svelte/src/InlineLoading/InlineLoading.svelte" - }, - "InlineNotification": { - "path": "carbon-components-svelte/src/Notification/InlineNotification.svelte" - }, - "Link": { - "path": "carbon-components-svelte/src/Link/Link.svelte" - }, - "ListBox": { - "path": "carbon-components-svelte/src/ListBox/ListBox.svelte" - }, - "ListBoxField": { - "path": "carbon-components-svelte/src/ListBox/ListBoxField.svelte" - }, - "ListBoxMenu": { - "path": "carbon-components-svelte/src/ListBox/ListBoxMenu.svelte" - }, - "ListBoxMenuIcon": { - "path": "carbon-components-svelte/src/ListBox/ListBoxMenuIcon.svelte" - }, - "ListBoxMenuItem": { - "path": "carbon-components-svelte/src/ListBox/ListBoxMenuItem.svelte" - }, - "ListBoxSelection": { - "path": "carbon-components-svelte/src/ListBox/ListBoxSelection.svelte" - }, - "ListItem": { - "path": "carbon-components-svelte/src/ListItem/ListItem.svelte" - }, - "Loading": { - "path": "carbon-components-svelte/src/Loading/Loading.svelte" - }, - "LocalStorage": { - "path": "carbon-components-svelte/src/LocalStorage/LocalStorage.svelte" - }, - "Modal": { - "path": "carbon-components-svelte/src/Modal/Modal.svelte" - }, - "ModalBody": { - "path": "carbon-components-svelte/src/ComposedModal/ModalBody.svelte" - }, - "ModalFooter": { - "path": "carbon-components-svelte/src/ComposedModal/ModalFooter.svelte" - }, - "ModalHeader": { - "path": "carbon-components-svelte/src/ComposedModal/ModalHeader.svelte" - }, - "MultiSelect": { - "path": "carbon-components-svelte/src/MultiSelect/MultiSelect.svelte" - }, - "NotificationActionButton": { - "path": "carbon-components-svelte/src/Notification/NotificationActionButton.svelte" - }, - "NotificationButton": { - "path": "carbon-components-svelte/src/Notification/NotificationButton.svelte" - }, - "NotificationIcon": { - "path": "carbon-components-svelte/src/Notification/NotificationIcon.svelte" - }, - "NumberInput": { - "path": "carbon-components-svelte/src/NumberInput/NumberInput.svelte" - }, - "NumberInputSkeleton": { - "path": "carbon-components-svelte/src/NumberInput/NumberInputSkeleton.svelte" - }, - "OrderedList": { - "path": "carbon-components-svelte/src/OrderedList/OrderedList.svelte" - }, - "OutboundLink": { - "path": "carbon-components-svelte/src/Link/OutboundLink.svelte" - }, - "OverflowMenu": { - "path": "carbon-components-svelte/src/OverflowMenu/OverflowMenu.svelte" - }, - "OverflowMenuItem": { - "path": "carbon-components-svelte/src/OverflowMenu/OverflowMenuItem.svelte" - }, - "Pagination": { - "path": "carbon-components-svelte/src/Pagination/Pagination.svelte" - }, - "PaginationNav": { - "path": "carbon-components-svelte/src/PaginationNav/PaginationNav.svelte" - }, - "PaginationSkeleton": { - "path": "carbon-components-svelte/src/Pagination/PaginationSkeleton.svelte" - }, - "PasswordInput": { - "path": "carbon-components-svelte/src/TextInput/PasswordInput.svelte" - }, - "Popover": { - "path": "carbon-components-svelte/src/Popover/Popover.svelte" - }, - "ProgressBar": { - "path": "carbon-components-svelte/src/ProgressBar/ProgressBar.svelte" - }, - "ProgressIndicator": { - "path": "carbon-components-svelte/src/ProgressIndicator/ProgressIndicator.svelte" - }, - "ProgressIndicatorSkeleton": { - "path": "carbon-components-svelte/src/ProgressIndicator/ProgressIndicatorSkeleton.svelte" - }, - "ProgressStep": { - "path": "carbon-components-svelte/src/ProgressIndicator/ProgressStep.svelte" - }, - "RadioButton": { - "path": "carbon-components-svelte/src/RadioButton/RadioButton.svelte" - }, - "RadioButtonGroup": { - "path": "carbon-components-svelte/src/RadioButtonGroup/RadioButtonGroup.svelte" - }, - "RadioButtonSkeleton": { - "path": "carbon-components-svelte/src/RadioButton/RadioButtonSkeleton.svelte" - }, - "RadioTile": { - "path": "carbon-components-svelte/src/Tile/RadioTile.svelte" - }, - "RecursiveList": { - "path": "carbon-components-svelte/src/RecursiveList/RecursiveList.svelte" - }, - "Row": { - "path": "carbon-components-svelte/src/Grid/Row.svelte" - }, - "Search": { - "path": "carbon-components-svelte/src/Search/Search.svelte" - }, - "SearchSkeleton": { - "path": "carbon-components-svelte/src/Search/SearchSkeleton.svelte" - }, - "Select": { - "path": "carbon-components-svelte/src/Select/Select.svelte" - }, - "SelectItem": { - "path": "carbon-components-svelte/src/Select/SelectItem.svelte" - }, - "SelectItemGroup": { - "path": "carbon-components-svelte/src/Select/SelectItemGroup.svelte" - }, - "SelectSkeleton": { - "path": "carbon-components-svelte/src/Select/SelectSkeleton.svelte" - }, - "SelectableTile": { - "path": "carbon-components-svelte/src/Tile/SelectableTile.svelte" - }, - "SideNav": { - "path": "carbon-components-svelte/src/UIShell/SideNav.svelte" - }, - "SideNavDivider": { - "path": "carbon-components-svelte/src/UIShell/SideNavDivider.svelte" - }, - "SideNavItems": { - "path": "carbon-components-svelte/src/UIShell/SideNavItems.svelte" - }, - "SideNavLink": { - "path": "carbon-components-svelte/src/UIShell/SideNavLink.svelte" - }, - "SideNavMenu": { - "path": "carbon-components-svelte/src/UIShell/SideNavMenu.svelte" - }, - "SideNavMenuItem": { - "path": "carbon-components-svelte/src/UIShell/SideNavMenuItem.svelte" - }, - "SkeletonPlaceholder": { - "path": "carbon-components-svelte/src/SkeletonPlaceholder/SkeletonPlaceholder.svelte" - }, - "SkeletonText": { - "path": "carbon-components-svelte/src/SkeletonText/SkeletonText.svelte" - }, - "SkipToContent": { - "path": "carbon-components-svelte/src/UIShell/SkipToContent.svelte" - }, - "Slider": { - "path": "carbon-components-svelte/src/Slider/Slider.svelte" - }, - "SliderSkeleton": { - "path": "carbon-components-svelte/src/Slider/SliderSkeleton.svelte" - }, - "StructuredList": { - "path": "carbon-components-svelte/src/StructuredList/StructuredList.svelte" - }, - "StructuredListBody": { - "path": "carbon-components-svelte/src/StructuredList/StructuredListBody.svelte" - }, - "StructuredListCell": { - "path": "carbon-components-svelte/src/StructuredList/StructuredListCell.svelte" - }, - "StructuredListHead": { - "path": "carbon-components-svelte/src/StructuredList/StructuredListHead.svelte" - }, - "StructuredListInput": { - "path": "carbon-components-svelte/src/StructuredList/StructuredListInput.svelte" - }, - "StructuredListRow": { - "path": "carbon-components-svelte/src/StructuredList/StructuredListRow.svelte" - }, - "StructuredListSkeleton": { - "path": "carbon-components-svelte/src/StructuredList/StructuredListSkeleton.svelte" - }, - "Switch": { - "path": "carbon-components-svelte/src/ContentSwitcher/Switch.svelte" - }, - "Tab": { - "path": "carbon-components-svelte/src/Tabs/Tab.svelte" - }, - "TabContent": { - "path": "carbon-components-svelte/src/Tabs/TabContent.svelte" - }, - "Table": { - "path": "carbon-components-svelte/src/DataTable/Table.svelte" - }, - "TableBody": { - "path": "carbon-components-svelte/src/DataTable/TableBody.svelte" - }, - "TableCell": { - "path": "carbon-components-svelte/src/DataTable/TableCell.svelte" - }, - "TableContainer": { - "path": "carbon-components-svelte/src/DataTable/TableContainer.svelte" - }, - "TableHead": { - "path": "carbon-components-svelte/src/DataTable/TableHead.svelte" - }, - "TableHeader": { - "path": "carbon-components-svelte/src/DataTable/TableHeader.svelte" - }, - "TableRow": { - "path": "carbon-components-svelte/src/DataTable/TableRow.svelte" - }, - "Tabs": { - "path": "carbon-components-svelte/src/Tabs/Tabs.svelte" - }, - "TabsSkeleton": { - "path": "carbon-components-svelte/src/Tabs/TabsSkeleton.svelte" - }, - "Tag": { - "path": "carbon-components-svelte/src/Tag/Tag.svelte" - }, - "TagSkeleton": { - "path": "carbon-components-svelte/src/Tag/TagSkeleton.svelte" - }, - "TextArea": { - "path": "carbon-components-svelte/src/TextArea/TextArea.svelte" - }, - "TextAreaSkeleton": { - "path": "carbon-components-svelte/src/TextArea/TextAreaSkeleton.svelte" - }, - "TextInput": { - "path": "carbon-components-svelte/src/TextInput/TextInput.svelte" - }, - "TextInputSkeleton": { - "path": "carbon-components-svelte/src/TextInput/TextInputSkeleton.svelte" - }, - "Theme": { - "path": "carbon-components-svelte/src/Theme/Theme.svelte" - }, - "Tile": { - "path": "carbon-components-svelte/src/Tile/Tile.svelte" - }, - "TileGroup": { - "path": "carbon-components-svelte/src/Tile/TileGroup.svelte" - }, - "TimePicker": { - "path": "carbon-components-svelte/src/TimePicker/TimePicker.svelte" - }, - "TimePickerSelect": { - "path": "carbon-components-svelte/src/TimePicker/TimePickerSelect.svelte" - }, - "ToastNotification": { - "path": "carbon-components-svelte/src/Notification/ToastNotification.svelte" - }, - "Toggle": { - "path": "carbon-components-svelte/src/Toggle/Toggle.svelte" - }, - "ToggleSkeleton": { - "path": "carbon-components-svelte/src/Toggle/ToggleSkeleton.svelte" - }, - "Toolbar": { - "path": "carbon-components-svelte/src/DataTable/Toolbar.svelte" - }, - "ToolbarBatchActions": { - "path": "carbon-components-svelte/src/DataTable/ToolbarBatchActions.svelte" - }, - "ToolbarContent": { - "path": "carbon-components-svelte/src/DataTable/ToolbarContent.svelte" - }, - "ToolbarMenu": { - "path": "carbon-components-svelte/src/DataTable/ToolbarMenu.svelte" - }, - "ToolbarMenuItem": { - "path": "carbon-components-svelte/src/DataTable/ToolbarMenuItem.svelte" - }, - "ToolbarSearch": { - "path": "carbon-components-svelte/src/DataTable/ToolbarSearch.svelte" - }, - "Tooltip": { - "path": "carbon-components-svelte/src/Tooltip/Tooltip.svelte" - }, - "TooltipDefinition": { - "path": "carbon-components-svelte/src/TooltipDefinition/TooltipDefinition.svelte" - }, - "TooltipFooter": { - "path": "carbon-components-svelte/src/Tooltip/TooltipFooter.svelte" - }, - "TooltipIcon": { - "path": "carbon-components-svelte/src/TooltipIcon/TooltipIcon.svelte" - }, - "TreeView": { - "path": "carbon-components-svelte/src/TreeView/TreeView.svelte" - }, - "Truncate": { - "path": "carbon-components-svelte/src/Truncate/Truncate.svelte" - }, - "UnorderedList": { - "path": "carbon-components-svelte/src/UnorderedList/UnorderedList.svelte" - }, - "breakpointObserver": { - "path": "carbon-components-svelte/src/Breakpoint/breakpointObserver.js" - }, - "breakpoints": { - "path": "carbon-components-svelte/src/Breakpoint/breakpoints.js" - }, - "truncate": { - "path": "carbon-components-svelte/src/Truncate/truncate.js" - } - } -} \ No newline at end of file diff --git a/src/component-index.ts b/src/component-index.ts new file mode 100644 index 0000000..a2e6b99 --- /dev/null +++ b/src/component-index.ts @@ -0,0 +1,1922 @@ +// @generated +// This file was automatically generated and should not be edited. +// @see scripts/index-components.ts +// prettier-ignore + +export const components: Record = Object.freeze({ + "Accordion": { + "path": "carbon-components-svelte/src/Accordion/Accordion.svelte", + "classes": [ + ".bx--accordion", + ".bx--accordion--start", + ".bx--accordion--end", + ".bx--accordion--sm", + ".bx--accordion--xl" + ] + }, + "AccordionItem": { + "path": "carbon-components-svelte/src/Accordion/AccordionItem.svelte", + "classes": [ + ".bx--accordion__item", + ".bx--accordion__item--active", + ".bx--accordion__item--disabled", + ".bx--accordion__item--expanding", + ".bx--accordion__item--collapsing", + ".bx--accordion__heading", + ".bx--accordion__arrow", + ".bx--accordion__title", + ".bx--accordion__content" + ] + }, + "AccordionSkeleton": { + "path": "carbon-components-svelte/src/Accordion/AccordionSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--accordion", + ".bx--accordion--start", + ".bx--accordion--end", + ".bx--accordion--sm", + ".bx--accordion--xl", + ".bx--accordion__item", + ".bx--accordion__item--active", + ".bx--accordion__heading", + ".bx--accordion__arrow", + ".bx--accordion__title", + ".bx--accordion__content" + ] + }, + "AspectRatio": { + "path": "carbon-components-svelte/src/AspectRatio/AspectRatio.svelte", + "classes": [ + ".bx--aspect-ratio", + ".bx--aspect-ratio--2x1", + ".bx--aspect-ratio--2x3", + ".bx--aspect-ratio--16x9", + ".bx--aspect-ratio--4x3", + ".bx--aspect-ratio--1x1", + ".bx--aspect-ratio--3x4", + ".bx--aspect-ratio--3x2", + ".bx--aspect-ratio--9x16", + ".bx--aspect-ratio--1x2", + ".bx--aspect-ratio--object" + ] + }, + "Breadcrumb": { + "path": "carbon-components-svelte/src/Breadcrumb/Breadcrumb.svelte", + "classes": [ + ".bx--breadcrumb", + ".bx--breadcrumb--no-trailing-slash" + ] + }, + "BreadcrumbItem": { + "path": "carbon-components-svelte/src/Breadcrumb/BreadcrumbItem.svelte", + "classes": [ + ".bx--breadcrumb-item", + ".bx--breadcrumb-item--current", + ".bx--link" + ] + }, + "BreadcrumbSkeleton": { + "path": "carbon-components-svelte/src/Breadcrumb/BreadcrumbSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--breadcrumb", + ".bx--breadcrumb--no-trailing-slash", + ".bx--breadcrumb-item", + ".bx--link" + ] + }, + "Breakpoint": { + "path": "carbon-components-svelte/src/Breakpoint/Breakpoint.svelte", + "classes": [] + }, + "breakpointObserver": { + "path": "carbon-components-svelte/src/Breakpoint/breakpointObserver.js", + "classes": [] + }, + "breakpoints": { + "path": "carbon-components-svelte/src/Breakpoint/breakpoints.js", + "classes": [] + }, + "Button": { + "path": "carbon-components-svelte/src/Button/Button.svelte", + "classes": [ + ".bx--assistive-text", + ".bx--btn__icon", + ".bx--btn", + ".bx--btn--expressive", + ".bx--btn--sm", + ".bx--btn--md", + ".bx--btn--field", + ".bx--btn--lg", + ".bx--btn--xl", + ".bx--btn--", + ".bx--btn--disabled", + ".bx--btn--icon-only", + ".bx--tooltip__trigger", + ".bx--tooltip--a11y", + ".bx--btn--icon-only--", + ".bx--tooltip--align-", + ".bx--btn--selected" + ] + }, + "ButtonSet": { + "path": "carbon-components-svelte/src/Button/ButtonSet.svelte", + "classes": [ + ".bx--btn-set", + ".bx--btn-set--stacked" + ] + }, + "ButtonSkeleton": { + "path": "carbon-components-svelte/src/Button/ButtonSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--btn", + ".bx--btn--field", + ".bx--btn--sm", + ".bx--btn--lg", + ".bx--btn--xl" + ] + }, + "Checkbox": { + "path": "carbon-components-svelte/src/Checkbox/Checkbox.svelte", + "classes": [ + ".bx--form-item", + ".bx--checkbox-wrapper", + ".bx--checkbox", + ".bx--checkbox-label", + ".bx--checkbox-label-text", + ".bx--visually-hidden" + ] + }, + "CheckboxSkeleton": { + "path": "carbon-components-svelte/src/Checkbox/CheckboxSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--checkbox-wrapper", + ".bx--checkbox-label", + ".bx--checkbox-label-text", + ".bx--skeleton" + ] + }, + "ClickableTile": { + "path": "carbon-components-svelte/src/Tile/ClickableTile.svelte", + "classes": [ + ".bx--tile", + ".bx--tile--clickable", + ".bx--tile--is-clicked", + ".bx--tile--light" + ] + }, + "CodeSnippet": { + "path": "carbon-components-svelte/src/CodeSnippet/CodeSnippet.svelte", + "classes": [ + ".bx--snippet", + ".bx--snippet--expand", + ".bx--snippet--light", + ".bx--snippet--no-copy", + ".bx--snippet--wraptext", + ".bx--snippet--single", + ".bx--snippet--inline", + ".bx--snippet--multi", + ".bx--copy", + ".bx--btn--copy", + ".bx--copy-btn--animating", + ".bx--copy-btn--fade-in", + ".bx--copy-btn--fade-out", + ".bx--assistive-text", + ".bx--copy-btn__feedback", + ".bx--snippet--disabled", + ".bx--snippet-container", + ".bx--snippet-btn--expand", + ".bx--snippet-btn--text", + ".bx--icon-chevron--down", + ".bx--snippet__icon" + ] + }, + "CodeSnippetSkeleton": { + "path": "carbon-components-svelte/src/CodeSnippet/CodeSnippetSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--snippet", + ".bx--snippet--single", + ".bx--snippet--multi", + ".bx--snippet-container" + ] + }, + "Column": { + "path": "carbon-components-svelte/src/Grid/Column.svelte", + "classes": [ + ".bx--col-", + ".bx--offset-", + ".bx--col", + ".bx--no-gutter", + ".bx--no-gutter--left", + ".bx--no-gutter--right", + ".bx--aspect-ratio bx--aspect-ratio--", + ".bx--col-padding" + ] + }, + "ComboBox": { + "path": "carbon-components-svelte/src/ComboBox/ComboBox.svelte", + "classes": [ + ".bx--list-box__wrapper", + ".bx--label", + ".bx--label--disabled", + ".bx--combo-box", + ".bx--list-box--up", + ".bx--combo-box--warning", + ".bx--text-input", + ".bx--text-input--light", + ".bx--text-input--empty", + ".bx--list-box__invalid-icon", + ".bx--list-box__invalid-icon--warning", + ".bx--list-box__menu-item__selected-icon", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled" + ] + }, + "ComposedModal": { + "path": "carbon-components-svelte/src/ComposedModal/ComposedModal.svelte", + "classes": [ + ".bx--modal", + ".is-visible", + ".bx--modal--danger", + ".bx--modal-container", + ".bx--modal-container--xs", + ".bx--modal-container--sm", + ".bx--modal-container--lg" + ] + }, + "Content": { + "path": "carbon-components-svelte/src/UIShell/Content.svelte", + "classes": [ + ".bx--content" + ] + }, + "ContentSwitcher": { + "path": "carbon-components-svelte/src/ContentSwitcher/ContentSwitcher.svelte", + "classes": [ + ".bx--content-switcher", + ".bx--content-switcher--sm", + ".bx--content-switcher--xl" + ] + }, + "ContextMenu": { + "path": "carbon-components-svelte/src/ContextMenu/ContextMenu.svelte", + "classes": [ + ".bx--menu", + ".bx--menu--open", + ".bx--menu--invisible", + ".bx--menu--root" + ] + }, + "ContextMenuDivider": { + "path": "carbon-components-svelte/src/ContextMenu/ContextMenuDivider.svelte", + "classes": [ + ".bx--menu-divider" + ] + }, + "ContextMenuGroup": { + "path": "carbon-components-svelte/src/ContextMenu/ContextMenuGroup.svelte", + "classes": [] + }, + "ContextMenuOption": { + "path": "carbon-components-svelte/src/ContextMenu/ContextMenuOption.svelte", + "classes": [ + ".bx--menu-option", + ".bx--menu-option--disabled", + ".bx--menu-option--active", + ".bx--menu-option--danger", + ".bx--menu", + ".bx--menu-option__content", + ".bx--menu-option__content--disabled", + ".bx--menu-option__icon", + ".bx--menu-option__label", + ".bx--menu-option__info" + ] + }, + "ContextMenuRadioGroup": { + "path": "carbon-components-svelte/src/ContextMenu/ContextMenuRadioGroup.svelte", + "classes": [] + }, + "CopyButton": { + "path": "carbon-components-svelte/src/CopyButton/CopyButton.svelte", + "classes": [ + ".bx--copy-btn", + ".bx--copy", + ".bx--copy-btn--animating", + ".bx--copy-btn--fade-in", + ".bx--copy-btn--fade-out", + ".bx--snippet__icon", + ".bx--assistive-text", + ".bx--copy-btn__feedback" + ] + }, + "DataTable": { + "path": "carbon-components-svelte/src/DataTable/DataTable.svelte", + "classes": [ + ".bx--data-table-header", + ".bx--data-table-header__title", + ".bx--data-table-header__description", + ".bx--table-expand", + ".bx--table-expand__button", + ".bx--table-expand__svg", + ".bx--table-column-checkbox", + ".bx--data-table--selected", + ".bx--expandable-row", + ".bx--parent-row", + ".bx--expandable-row--hover", + ".bx--table-column-radio", + ".bx--table-column-menu", + ".bx--child-row-inner-container" + ] + }, + "DataTableSkeleton": { + "path": "carbon-components-svelte/src/DataTable/DataTableSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--data-table-container", + ".bx--data-table-header", + ".bx--data-table-header__title", + ".bx--data-table-header__description", + ".bx--table-toolbar", + ".bx--toolbar-content", + ".bx--btn", + ".bx--btn--sm", + ".bx--data-table", + ".bx--data-table--compact", + ".bx--data-table--short", + ".bx--data-table--tall", + ".bx--data-table--zebra" + ] + }, + "DatePicker": { + "path": "carbon-components-svelte/src/DatePicker/DatePicker.svelte", + "classes": [ + ".bx--form-item", + ".bx--date-picker", + ".bx--date-picker--short", + ".bx--date-picker--light", + ".bx--date-picker--simple", + ".bx--date-picker--single", + ".bx--date-picker--range", + ".bx--date-picker--nolabel" + ] + }, + "DatePickerInput": { + "path": "carbon-components-svelte/src/DatePicker/DatePickerInput.svelte", + "classes": [ + ".bx--date-picker-container", + ".bx--date-picker--nolabel", + ".bx--label", + ".bx--visually-hidden", + ".bx--label--disabled", + ".bx--date-picker-input__wrapper", + ".bx--date-picker-input__wrapper--invalid", + ".bx--date-picker-input__wrapper--warn", + ".bx--date-picker__input", + ".bx--date-picker__input--invalid", + ".bx--date-picker__input--sm", + ".bx--date-picker__input--xl", + ".bx--date-picker__icon", + ".bx--date-picker__icon--invalid", + ".bx--date-picker__icon--warn", + ".bx--form-requirement", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled" + ] + }, + "DatePickerSkeleton": { + "path": "carbon-components-svelte/src/DatePicker/DatePickerSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--date-picker", + ".bx--skeleton", + ".bx--date-picker--range", + ".bx--date-picker--short", + ".bx--date-picker--simple", + ".bx--date-picker-container", + ".bx--label", + ".bx--date-picker__input" + ] + }, + "Dropdown": { + "path": "carbon-components-svelte/src/Dropdown/Dropdown.svelte", + "classes": [ + ".bx--dropdown__wrapper", + ".bx--list-box__wrapper", + ".bx--dropdown__wrapper--inline", + ".bx--list-box__wrapper--inline", + ".bx--dropdown__wrapper--inline--invalid", + ".bx--label", + ".bx--label--disabled", + ".bx--visually-hidden", + ".bx--dropdown", + ".bx--list-box--up", + ".bx--dropdown--invalid", + ".bx--dropdown--warning", + ".bx--dropdown--open", + ".bx--dropdown--sm", + ".bx--dropdown--xl", + ".bx--dropdown--inline", + ".bx--dropdown--disabled", + ".bx--dropdown--light", + ".bx--list-box__invalid-icon", + ".bx--list-box__invalid-icon--warning", + ".bx--list-box__field", + ".bx--list-box__label", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled" + ] + }, + "DropdownSkeleton": { + "path": "carbon-components-svelte/src/Dropdown/DropdownSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--dropdown-v2", + ".bx--list-box", + ".bx--form-item", + ".bx--list-box--inline", + ".bx--list-box__field", + ".bx--list-box__label" + ] + }, + "ExpandableTile": { + "path": "carbon-components-svelte/src/Tile/ExpandableTile.svelte", + "classes": [ + ".bx--tile", + ".bx--tile--expandable", + ".bx--tile--is-expanded", + ".bx--tile--light", + ".bx--tile-content", + ".bx--tile-content__above-the-fold", + ".bx--tile__chevron", + ".bx--tile-content__below-the-fold" + ] + }, + "Filename": { + "path": "carbon-components-svelte/src/FileUploader/Filename.svelte", + "classes": [ + ".bx--file-invalid", + ".bx--file-close", + ".bx--file-complete" + ] + }, + "FileUploader": { + "path": "carbon-components-svelte/src/FileUploader/FileUploader.svelte", + "classes": [ + ".bx--form-item", + ".bx--file--label", + ".bx--label-description--disabled", + ".bx--label-description", + ".bx--file-container", + ".bx--file__selected-file", + ".bx--file-filename", + ".bx--file__state-container" + ] + }, + "FileUploaderButton": { + "path": "carbon-components-svelte/src/FileUploader/FileUploaderButton.svelte", + "classes": [ + ".bx--btn", + ".bx--btn--disabled", + ".bx--btn--primary", + ".bx--btn--secondary", + ".bx--btn--tertiary", + ".bx--btn--ghost", + ".bx--btn--danger", + ".bx--btn--danger-tertiary", + ".bx--btn--danger-ghost", + ".bx--btn--sm", + ".bx--btn--field", + ".bx--btn--lg", + ".bx--btn--xl", + ".bx--visually-hidden" + ] + }, + "FileUploaderDropContainer": { + "path": "carbon-components-svelte/src/FileUploader/FileUploaderDropContainer.svelte", + "classes": [ + ".bx--file", + ".bx--file-browse-btn", + ".bx--file-browse-btn--disabled", + ".bx--file__drop-container", + ".bx--file__drop-container--drag-over", + ".bx--file-input" + ] + }, + "FileUploaderItem": { + "path": "carbon-components-svelte/src/FileUploader/FileUploaderItem.svelte", + "classes": [ + ".bx--file__selected-file", + ".bx--file__selected-file--invalid", + ".bx--file__selected-file--md", + ".bx--file__selected-file--sm", + ".bx--file-filename", + ".bx--file__state-container", + ".bx--form-requirement", + ".bx--form-requirement__title", + ".bx--form-requirement__supplement" + ] + }, + "FileUploaderSkeleton": { + "path": "carbon-components-svelte/src/FileUploader/FileUploaderSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--label-description" + ] + }, + "FluidForm": { + "path": "carbon-components-svelte/src/FluidForm/FluidForm.svelte", + "classes": [ + ".bx--form--fluid" + ] + }, + "Form": { + "path": "carbon-components-svelte/src/Form/Form.svelte", + "classes": [ + ".bx--form" + ] + }, + "FormGroup": { + "path": "carbon-components-svelte/src/FormGroup/FormGroup.svelte", + "classes": [ + ".bx--fieldset", + ".bx--fieldset--no-margin", + ".bx--label", + ".bx--form__requirement" + ] + }, + "FormItem": { + "path": "carbon-components-svelte/src/FormItem/FormItem.svelte", + "classes": [ + ".bx--form-item" + ] + }, + "FormLabel": { + "path": "carbon-components-svelte/src/FormLabel/FormLabel.svelte", + "classes": [ + ".bx--label" + ] + }, + "Grid": { + "path": "carbon-components-svelte/src/Grid/Grid.svelte", + "classes": [ + ".bx--grid", + ".bx--grid--condensed", + ".bx--grid--narrow", + ".bx--grid--full-width", + ".bx--no-gutter", + ".bx--no-gutter--left", + ".bx--no-gutter--right", + ".bx--row-padding" + ] + }, + "Header": { + "path": "carbon-components-svelte/src/UIShell/Header.svelte", + "classes": [ + ".bx--header", + ".bx--header__name", + ".bx--header__name--prefix" + ] + }, + "HeaderAction": { + "path": "carbon-components-svelte/src/UIShell/HeaderAction.svelte", + "classes": [ + ".bx--header__action", + ".bx--header__action--active", + ".bx--header__action--text", + ".bx--header__action-text", + ".bx--header-panel", + ".bx--header-panel--expanded", + ".bx--header__action--text", + ".bx--header__action-text" + ] + }, + "HeaderActionLink": { + "path": "carbon-components-svelte/src/UIShell/HeaderActionLink.svelte", + "classes": [ + ".bx--header__action", + ".bx--header__action--active", + ".bx--header__action" + ] + }, + "HeaderGlobalAction": { + "path": "carbon-components-svelte/src/UIShell/HeaderGlobalAction.svelte", + "classes": [ + ".bx--header__action", + ".bx--header__action--active" + ] + }, + "HeaderNav": { + "path": "carbon-components-svelte/src/UIShell/HeaderNav.svelte", + "classes": [ + ".bx--header__nav", + ".bx--header__menu-bar" + ] + }, + "HeaderNavItem": { + "path": "carbon-components-svelte/src/UIShell/HeaderNavItem.svelte", + "classes": [ + ".bx--header__menu-item", + ".bx--text-truncate--end" + ] + }, + "HeaderNavMenu": { + "path": "carbon-components-svelte/src/UIShell/HeaderNavMenu.svelte", + "classes": [ + ".bx--header__submenu", + ".bx--header__submenu--current", + ".bx--header__menu-item", + ".bx--header__menu-title", + ".bx--header__menu-arrow", + ".bx--header__menu" + ] + }, + "HeaderPanelDivider": { + "path": "carbon-components-svelte/src/UIShell/HeaderPanelDivider.svelte", + "classes": [ + ".bx--header-panel-divider", + ".bx--switcher__item--divider", + ".bx--header-panel-divider" + ] + }, + "HeaderPanelLink": { + "path": "carbon-components-svelte/src/UIShell/HeaderPanelLink.svelte", + "classes": [ + ".bx--switcher__item", + ".bx--switcher__item-link" + ] + }, + "HeaderPanelLinks": { + "path": "carbon-components-svelte/src/UIShell/HeaderPanelLinks.svelte", + "classes": [ + ".bx--switcher__item" + ] + }, + "HeaderSearch": { + "path": "carbon-components-svelte/src/UIShell/HeaderSearch.svelte", + "classes": [ + ".bx--header__search", + ".bx--header__search--active", + ".bx--header__search-label", + ".bx--header__search-menu", + ".bx--header-search-button", + ".bx--header__action", + ".bx--header-search-button--disabled", + ".bx--header__search-input", + ".bx--header-search-button--hidden", + ".bx--header-search-menu", + ".bx--header-search-menu-item", + ".bx--header-search-menu-item--selected", + ".bx--header-search-menu-description", + ".bx--header__search-label", + ".bx--header__search", + ".bx--header__search:not(.bx--header__search--active)", + ".bx--header__search.bx--header__search--active", + ".bx--header__search-menu", + ".bx--header__search-input", + ".bx--header__search-input:not(.bx--header__search--active)", + ".bx--header-search-button", + ".bx--header-search-button--disabled", + ".bx--header-search-button:hover", + ".bx--header-search-button--hidden", + ".bx--header-search-menu", + ".bx--header-search-menu-item", + ".bx--header-search-menu-item--selected", + ".bx--header-search-menu-item:hover", + ".bx--header-search-menu-description" + ] + }, + "HeaderUtilities": { + "path": "carbon-components-svelte/src/UIShell/HeaderUtilities.svelte", + "classes": [ + ".bx--header__global" + ] + }, + "ImageLoader": { + "path": "carbon-components-svelte/src/ImageLoader/ImageLoader.svelte", + "classes": [] + }, + "InlineLoading": { + "path": "carbon-components-svelte/src/InlineLoading/InlineLoading.svelte", + "classes": [ + ".bx--inline-loading", + ".bx--inline-loading__animation", + ".bx--inline-loading--error", + ".bx--inline-loading__checkmark-container", + ".bx--inline-loading__text" + ] + }, + "InlineNotification": { + "path": "carbon-components-svelte/src/Notification/InlineNotification.svelte", + "classes": [ + ".bx--inline-notification", + ".bx--inline-notification--low-contrast", + ".bx--inline-notification--hide-close-button", + ".bx--inline-notification--error", + ".bx--inline-notification--info", + ".bx--inline-notification--info-square", + ".bx--inline-notification--success", + ".bx--inline-notification--warning", + ".bx--inline-notification--warning-alt", + ".bx--inline-notification__details", + ".bx--inline-notification__text-wrapper", + ".bx--inline-notification__title", + ".bx--inline-notification__subtitle" + ] + }, + "Link": { + "path": "carbon-components-svelte/src/Link/Link.svelte", + "classes": [ + ".bx--link", + ".bx--link--disabled", + ".bx--link--inline", + ".bx--link--visited", + ".bx--link__icon", + ".bx--link--sm", + ".bx--link--lg" + ] + }, + "ListBox": { + "path": "carbon-components-svelte/src/ListBox/ListBox.svelte", + "classes": [ + ".bx--list-box", + ".bx--list-box--sm", + ".bx--list-box--xl", + ".bx--list-box--inline", + ".bx--list-box--disabled", + ".bx--list-box--expanded", + ".bx--list-box--light", + ".bx--list-box--warning", + ".bx--form-requirement" + ] + }, + "ListBoxField": { + "path": "carbon-components-svelte/src/ListBox/ListBoxField.svelte", + "classes": [ + ".bx--list-box__field" + ] + }, + "ListBoxMenu": { + "path": "carbon-components-svelte/src/ListBox/ListBoxMenu.svelte", + "classes": [ + ".bx--list-box__menu" + ] + }, + "ListBoxMenuIcon": { + "path": "carbon-components-svelte/src/ListBox/ListBoxMenuIcon.svelte", + "classes": [ + ".bx--list-box__menu-icon", + ".bx--list-box__menu-icon--open" + ] + }, + "ListBoxMenuItem": { + "path": "carbon-components-svelte/src/ListBox/ListBoxMenuItem.svelte", + "classes": [ + ".bx--list-box__menu-item", + ".bx--list-box__menu-item--active", + ".bx--list-box__menu-item--highlighted", + ".bx--list-box__menu-item__option" + ] + }, + "ListBoxSelection": { + "path": "carbon-components-svelte/src/ListBox/ListBoxSelection.svelte", + "classes": [ + ".bx--tag", + ".bx--tag--filter", + ".bx--tag--high-contrast", + ".bx--tag--disabled", + ".bx--tag__label", + ".bx--tag__close-icon", + ".bx--list-box__selection", + ".bx--list-box__selection--multi" + ] + }, + "ListItem": { + "path": "carbon-components-svelte/src/ListItem/ListItem.svelte", + "classes": [ + ".bx--list__item" + ] + }, + "Loading": { + "path": "carbon-components-svelte/src/Loading/Loading.svelte", + "classes": [ + ".bx--loading-overlay", + ".bx--loading-overlay--stop", + ".bx--loading", + ".bx--loading--small", + ".bx--loading--stop", + ".bx--loading__svg", + ".bx--loading__background", + ".bx--loading__stroke" + ] + }, + "LocalStorage": { + "path": "carbon-components-svelte/src/LocalStorage/LocalStorage.svelte", + "classes": [] + }, + "Modal": { + "path": "carbon-components-svelte/src/Modal/Modal.svelte", + "classes": [ + ".bx--modal", + ".bx--modal-tall", + ".is-visible", + ".bx--modal--danger", + ".bx--modal-container", + ".bx--modal-container--xs", + ".bx--modal-container--sm", + ".bx--modal-container--lg", + ".bx--modal-header", + ".bx--modal-close", + ".bx--modal-close__icon", + ".bx--modal-header__label", + ".bx--modal-header__heading", + ".bx--modal-content", + ".bx--modal-content--with-form", + ".bx--modal-scroll-content", + ".bx--modal-content--overflow-indicator", + ".bx--modal-footer", + ".bx--modal-footer--three-button", + ".bx--modal-header__label--modal-", + ".bx--modal-header__heading--modal-", + ".bx--modal-body--" + ] + }, + "ModalBody": { + "path": "carbon-components-svelte/src/ComposedModal/ModalBody.svelte", + "classes": [ + ".bx--modal-content", + ".bx--modal-content--with-form", + ".bx--modal-scroll-content", + ".bx--modal-content--overflow-indicator" + ] + }, + "ModalFooter": { + "path": "carbon-components-svelte/src/ComposedModal/ModalFooter.svelte", + "classes": [ + ".bx--modal-footer", + ".bx--modal-footer--three-button" + ] + }, + "ModalHeader": { + "path": "carbon-components-svelte/src/ComposedModal/ModalHeader.svelte", + "classes": [ + ".bx--modal-header", + ".bx--modal-header__label", + ".bx--type-delta", + ".bx--modal-header__heading", + ".bx--type-beta", + ".bx--modal-close", + ".bx--modal-close__icon" + ] + }, + "MultiSelect": { + "path": "carbon-components-svelte/src/MultiSelect/MultiSelect.svelte", + "classes": [ + ".bx--multi-select__wrapper", + ".bx--list-box__wrapper", + ".bx--multi-select__wrapper--inline", + ".bx--list-box__wrapper--inline", + ".bx--multi-select__wrapper--inline--invalid", + ".bx--label", + ".bx--label--disabled", + ".bx--visually-hidden", + ".bx--multi-select", + ".bx--list-box--up", + ".bx--combo-box", + ".bx--multi-select--filterable", + ".bx--multi-select--invalid", + ".bx--multi-select--inline", + ".bx--multi-select--selected", + ".bx--list-box__invalid-icon", + ".bx--list-box__invalid-icon--warning", + ".bx--text-input", + ".bx--text-input--empty", + ".bx--text-input--light", + ".bx--list-box__label", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled" + ] + }, + "NotificationActionButton": { + "path": "carbon-components-svelte/src/Notification/NotificationActionButton.svelte", + "classes": [ + ".bx--inline-notification__action-button" + ] + }, + "NotificationButton": { + "path": "carbon-components-svelte/src/Notification/NotificationButton.svelte", + "classes": [ + ".bx--toast-notification__close-button", + ".bx--inline-notification__close-button", + ".bx--toast-notification__close-icon", + ".bx--inline-notification__close-icon" + ] + }, + "NotificationIcon": { + "path": "carbon-components-svelte/src/Notification/NotificationIcon.svelte", + "classes": [ + ".bx--toast-notification__icon", + ".bx--inline-notification__icon" + ] + }, + "NumberInput": { + "path": "carbon-components-svelte/src/NumberInput/NumberInput.svelte", + "classes": [ + ".bx--form-item", + ".bx--number", + ".bx--number--helpertext", + ".bx--number--readonly", + ".bx--number--light", + ".bx--number--nolabel", + ".bx--number--nosteppers", + ".bx--number--sm", + ".bx--number--xl", + ".bx--label", + ".bx--label--disabled", + ".bx--visually-hidden", + ".bx--number__input-wrapper", + ".bx--number__input-wrapper--warning", + ".bx--text-input__readonly-icon", + ".bx--number__invalid", + ".bx--number__invalid--warning", + ".bx--number__controls", + ".bx--number__control-btn", + ".down-icon", + ".bx--number__rule-divider", + ".up-icon", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled", + ".bx--form-requirement" + ] + }, + "NumberInputSkeleton": { + "path": "carbon-components-svelte/src/NumberInput/NumberInputSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--label", + ".bx--skeleton", + ".bx--number" + ] + }, + "OrderedList": { + "path": "carbon-components-svelte/src/OrderedList/OrderedList.svelte", + "classes": [ + ".bx--list--ordered", + ".bx--list--ordered--native", + ".bx--list--nested", + ".bx--list--expressive" + ] + }, + "OutboundLink": { + "path": "carbon-components-svelte/src/Link/OutboundLink.svelte", + "classes": [] + }, + "OverflowMenu": { + "path": "carbon-components-svelte/src/OverflowMenu/OverflowMenu.svelte", + "classes": [ + ".bx--overflow-menu", + ".bx--overflow-menu--open", + ".bx--overflow-menu--light", + ".bx--overflow-menu--sm", + ".bx--overflow-menu--xl", + ".bx--overflow-menu__icon", + ".bx--overflow-menu-options", + ".bx--overflow-menu--flip", + ".bx--overflow-menu-options--open", + ".bx--overflow-menu-options--light", + ".bx--overflow-menu-options--sm", + ".bx--overflow-menu-options--xl", + ".bx--breadcrumb-menu-options", + ".bx--overflow-menu-options.bx--overflow-menu-options:after {\n width:" + ] + }, + "OverflowMenuItem": { + "path": "carbon-components-svelte/src/OverflowMenu/OverflowMenuItem.svelte", + "classes": [ + ".bx--overflow-menu-options__option", + ".bx--overflow-menu--divider", + ".bx--overflow-menu-options__option--danger", + ".bx--overflow-menu-options__option--disabled", + ".bx--overflow-menu-options__option-content", + ".bx--overflow-menu-options__btn" + ] + }, + "Pagination": { + "path": "carbon-components-svelte/src/Pagination/Pagination.svelte", + "classes": [ + ".bx--pagination", + ".bx--pagination__left", + ".bx--pagination__text", + ".bx--select__item-count", + ".bx--pagination__right", + ".bx--select__page-number", + ".bx--pagination__button", + ".bx--pagination__button--backward", + ".bx--pagination__button--no-index", + ".bx--pagination__button--forward" + ] + }, + "PaginationNav": { + "path": "carbon-components-svelte/src/PaginationNav/PaginationNav.svelte", + "classes": [ + ".bx--pagination-nav", + ".bx--pagination-nav__list", + ".bx--pagination-nav__list-item", + ".bx--pagination-nav__accessibility-label" + ] + }, + "PaginationSkeleton": { + "path": "carbon-components-svelte/src/Pagination/PaginationSkeleton.svelte", + "classes": [ + ".bx--pagination", + ".bx--skeleton", + ".bx--pagination__left", + ".bx--pagination__right", + ".bx--pagination--inline" + ] + }, + "PasswordInput": { + "path": "carbon-components-svelte/src/TextInput/PasswordInput.svelte", + "classes": [ + ".bx--form-item", + ".bx--text-input-wrapper", + ".bx--password-input-wrapper", + ".bx--text-input-wrapper--light", + ".bx--text-input-wrapper--inline", + ".bx--label", + ".bx--visually-hidden", + ".bx--label--disabled", + ".bx--label--inline", + ".bx--label--inline--sm", + ".bx--label--inline--xl", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled", + ".bx--form__helper-text--inline", + ".bx--text-input__field-outer-wrapper", + ".bx--text-input__field-outer-wrapper--inline", + ".bx--text-input__field-wrapper", + ".bx--text-input__field-wrapper--warning", + ".bx--text-input__invalid-icon", + ".bx--text-input__invalid-icon--warning", + ".bx--text-input", + ".bx--password-input", + ".bx--text-input--light", + ".bx--text-input--invalid", + ".bx--text-input--warning", + ".bx--text-input--sm", + ".bx--text-input--xl", + ".bx--text-input__divider", + ".bx--form-requirement", + ".bx--text-input--password__visibility__toggle", + ".bx--btn", + ".bx--btn--icon-only", + ".bx--btn--disabled", + ".bx--tooltip__trigger", + ".bx--tooltip--a11y", + ".bx--tooltip--top", + ".bx--tooltip--right", + ".bx--tooltip--bottom", + ".bx--tooltip--left", + ".bx--tooltip--align-start", + ".bx--tooltip--align-center", + ".bx--tooltip--align-end", + ".bx--assistive-text", + ".bx--icon-visibility-off", + ".bx--icon-visibility-on" + ] + }, + "Popover": { + "path": "carbon-components-svelte/src/Popover/Popover.svelte", + "classes": [ + ".bx--popover", + ".bx--popover--caret", + ".bx--popover--light", + ".bx--popover--high-contrast", + ".bx--popover--top", + ".bx--popover--top-left", + ".bx--popover--top-right", + ".bx--popover--bottom", + ".bx--popover--bottom-left", + ".bx--popover--bottom-right", + ".bx--popover--left", + ".bx--popover--left-bottom", + ".bx--popover--left-top", + ".bx--popover--right", + ".bx--popover--right-bottom", + ".bx--popover--right-top", + ".bx--popover--open", + ".bx--popover--relative", + ".bx--popover-contents" + ] + }, + "ProgressBar": { + "path": "carbon-components-svelte/src/ProgressBar/ProgressBar.svelte", + "classes": [ + ".bx--progress-bar", + ".bx--progress-bar--indeterminate", + ".bx--progress-bar--big", + ".bx--progress-bar--small", + ".bx--progress-bar--inline", + ".bx--progress-bar--indented", + ".bx--progress-bar--error", + ".bx--progress-bar--finished", + ".bx--progress-bar__label", + ".bx--visually-hidden", + ".bx--progress-bar__status-icon", + ".bx--progress-bar__track", + ".bx--progress-bar__bar", + ".bx--progress-bar__helper-text" + ] + }, + "ProgressIndicator": { + "path": "carbon-components-svelte/src/ProgressIndicator/ProgressIndicator.svelte", + "classes": [ + ".bx--progress", + ".bx--progress--vertical", + ".bx--progress--space-equal" + ] + }, + "ProgressIndicatorSkeleton": { + "path": "carbon-components-svelte/src/ProgressIndicator/ProgressIndicatorSkeleton.svelte", + "classes": [ + ".bx--progress", + ".bx--progress--vertical", + ".bx--skeleton", + ".bx--progress-step", + ".bx--progress-step--incomplete", + ".bx--progress-step-button", + ".bx--progress-step-button--unclickable", + ".bx--progress-label", + ".bx--progress-line" + ] + }, + "ProgressStep": { + "path": "carbon-components-svelte/src/ProgressIndicator/ProgressStep.svelte", + "classes": [ + ".bx--progress-step", + ".bx--progress-step--current", + ".bx--progress-step--complete", + ".bx--progress-step--incomplete", + ".bx--progress-step--disabled", + ".bx--progress-step-button", + ".bx--progress-step-button--unclickable", + ".bx--progress__warning", + ".bx--progress-text", + ".bx--progress-label", + ".bx--progress-optional", + ".bx--progress-line" + ] + }, + "RadioButton": { + "path": "carbon-components-svelte/src/RadioButton/RadioButton.svelte", + "classes": [ + ".bx--radio-button-wrapper", + ".bx--radio-button-wrapper--label-left", + ".bx--radio-button", + ".bx--radio-button__label", + ".bx--radio-button__appearance", + ".bx--visually-hidden" + ] + }, + "RadioButtonGroup": { + "path": "carbon-components-svelte/src/RadioButtonGroup/RadioButtonGroup.svelte", + "classes": [ + ".bx--form-item", + ".bx--radio-button-group", + ".bx--radio-button-group--vertical", + ".bx--radio-button-group--label-left", + ".bx--radio-button-group--label-right", + ".bx--label", + ".bx--visually-hidden" + ] + }, + "RadioButtonSkeleton": { + "path": "carbon-components-svelte/src/RadioButton/RadioButtonSkeleton.svelte", + "classes": [ + ".bx--radio-button-wrapper", + ".bx--radio-button", + ".bx--skeleton", + ".bx--radio-button__label" + ] + }, + "RadioTile": { + "path": "carbon-components-svelte/src/Tile/RadioTile.svelte", + "classes": [ + ".bx--tile-input", + ".bx--tile", + ".bx--tile--selectable", + ".bx--tile--is-selected", + ".bx--tile--light", + ".bx--tile--disabled", + ".bx--tile__checkmark", + ".bx--tile-content" + ] + }, + "RecursiveList": { + "path": "carbon-components-svelte/src/RecursiveList/RecursiveList.svelte", + "classes": [] + }, + "Row": { + "path": "carbon-components-svelte/src/Grid/Row.svelte", + "classes": [ + ".bx--row", + ".bx--row--condensed", + ".bx--row--narrow", + ".bx--no-gutter", + ".bx--no-gutter--left", + ".bx--no-gutter--right", + ".bx--row-padding" + ] + }, + "Search": { + "path": "carbon-components-svelte/src/Search/Search.svelte", + "classes": [ + ".bx--search", + ".bx--search--light", + ".bx--search--disabled", + ".bx--search--sm", + ".bx--search--lg", + ".bx--search--xl", + ".bx--search--expandable", + ".bx--search--expanded", + ".bx--search-magnifier", + ".bx--search-magnifier-icon", + ".bx--label", + ".bx--search-input", + ".bx--search-close", + ".bx--search-close--hidden" + ] + }, + "SearchSkeleton": { + "path": "carbon-components-svelte/src/Search/SearchSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--search--sm", + ".bx--search--lg", + ".bx--search--xl", + ".bx--label", + ".bx--search-input" + ] + }, + "Select": { + "path": "carbon-components-svelte/src/Select/Select.svelte", + "classes": [ + ".bx--form-item", + ".bx--select", + ".bx--select--inline", + ".bx--select--light", + ".bx--select--invalid", + ".bx--select--disabled", + ".bx--select--warning", + ".bx--label", + ".bx--visually-hidden", + ".bx--label--disabled", + ".bx--select-input--inline__wrapper", + ".bx--select-input__wrapper", + ".bx--select-input", + ".bx--select-input--sm", + ".bx--select-input--xl", + ".bx--select__arrow", + ".bx--select__invalid-icon", + ".bx--form-requirement", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled", + ".bx--select__invalid-icon--warning" + ] + }, + "SelectableTile": { + "path": "carbon-components-svelte/src/Tile/SelectableTile.svelte", + "classes": [ + ".bx--tile-input", + ".bx--tile", + ".bx--tile--selectable", + ".bx--tile--is-selected", + ".bx--tile--light", + ".bx--tile--disabled", + ".bx--tile__checkmark", + ".bx--tile-content" + ] + }, + "SelectItem": { + "path": "carbon-components-svelte/src/Select/SelectItem.svelte", + "classes": [ + ".bx--select-option" + ] + }, + "SelectItemGroup": { + "path": "carbon-components-svelte/src/Select/SelectItemGroup.svelte", + "classes": [ + ".bx--select-optgroup" + ] + }, + "SelectSkeleton": { + "path": "carbon-components-svelte/src/Select/SelectSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--label", + ".bx--skeleton", + ".bx--select", + ".bx--select-input" + ] + }, + "SideNav": { + "path": "carbon-components-svelte/src/UIShell/SideNav.svelte", + "classes": [ + ".bx--side-nav__overlay", + ".bx--side-nav__overlay-active", + ".bx--side-nav__navigation", + ".bx--side-nav", + ".bx--side-nav--ux", + ".bx--side-nav--expanded", + ".bx--side-nav--collapsed", + ".bx--side-nav--rail" + ] + }, + "SideNavDivider": { + "path": "carbon-components-svelte/src/UIShell/SideNavDivider.svelte", + "classes": [ + ".bx--side-nav__divider" + ] + }, + "SideNavItems": { + "path": "carbon-components-svelte/src/UIShell/SideNavItems.svelte", + "classes": [ + ".bx--side-nav__items" + ] + }, + "SideNavLink": { + "path": "carbon-components-svelte/src/UIShell/SideNavLink.svelte", + "classes": [ + ".bx--side-nav__item", + ".bx--side-nav__link", + ".bx--side-nav__link--current", + ".bx--side-nav__icon", + ".bx--side-nav__icon--small", + ".bx--side-nav__link-text" + ] + }, + "SideNavMenu": { + "path": "carbon-components-svelte/src/UIShell/SideNavMenu.svelte", + "classes": [ + ".bx--side-nav__item", + ".bx--side-nav__item--icon", + ".bx--side-nav__submenu", + ".bx--side-nav__icon", + ".bx--side-nav__submenu-title", + ".bx--side-nav__icon--small", + ".bx--side-nav__submenu-chevron", + ".bx--side-nav__menu" + ] + }, + "SideNavMenuItem": { + "path": "carbon-components-svelte/src/UIShell/SideNavMenuItem.svelte", + "classes": [ + ".bx--side-nav__menu-item", + ".bx--side-nav__link", + ".bx--side-nav__link-text" + ] + }, + "SkeletonPlaceholder": { + "path": "carbon-components-svelte/src/SkeletonPlaceholder/SkeletonPlaceholder.svelte", + "classes": [ + ".bx--skeleton__placeholder" + ] + }, + "SkeletonText": { + "path": "carbon-components-svelte/src/SkeletonText/SkeletonText.svelte", + "classes": [ + ".bx--skeleton__text", + ".bx--skeleton__heading" + ] + }, + "SkipToContent": { + "path": "carbon-components-svelte/src/UIShell/SkipToContent.svelte", + "classes": [ + ".bx--skip-to-content" + ] + }, + "Slider": { + "path": "carbon-components-svelte/src/Slider/Slider.svelte", + "classes": [ + ".bx--form-item", + ".bx--label", + ".bx--label--disabled", + ".bx--visually-hidden", + ".bx--slider-container", + ".bx--slider__range-label", + ".bx--slider", + ".bx--slider--disabled", + ".bx--slider__thumb", + ".bx--slider__track", + ".bx--slider__filled-track", + ".bx--text-input", + ".bx--slider-text-input", + ".bx--text-input--light", + ".bx--text-input--invalid" + ] + }, + "SliderSkeleton": { + "path": "carbon-components-svelte/src/Slider/SliderSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--label", + ".bx--skeleton", + ".bx--slider-container", + ".bx--slider__range-label", + ".bx--slider", + ".bx--slider__track", + ".bx--slider__filled-track", + ".bx--slider__thumb" + ] + }, + "StructuredList": { + "path": "carbon-components-svelte/src/StructuredList/StructuredList.svelte", + "classes": [ + ".bx--structured-list", + ".bx--structured-list--selection", + ".bx--structured-list--condensed", + ".bx--structured-list--flush" + ] + }, + "StructuredListBody": { + "path": "carbon-components-svelte/src/StructuredList/StructuredListBody.svelte", + "classes": [ + ".bx--structured-list-tbody" + ] + }, + "StructuredListCell": { + "path": "carbon-components-svelte/src/StructuredList/StructuredListCell.svelte", + "classes": [ + ".bx--structured-list-th", + ".bx--structured-list-td", + ".bx--structured-list-content--nowrap" + ] + }, + "StructuredListHead": { + "path": "carbon-components-svelte/src/StructuredList/StructuredListHead.svelte", + "classes": [ + ".bx--structured-list-thead" + ] + }, + "StructuredListInput": { + "path": "carbon-components-svelte/src/StructuredList/StructuredListInput.svelte", + "classes": [ + ".bx--structured-list-input" + ] + }, + "StructuredListRow": { + "path": "carbon-components-svelte/src/StructuredList/StructuredListRow.svelte", + "classes": [ + ".bx--structured-list-row", + ".bx--structured-list-row--header-row" + ] + }, + "StructuredListSkeleton": { + "path": "carbon-components-svelte/src/StructuredList/StructuredListSkeleton.svelte", + "classes": [ + ".bx--skeleton", + ".bx--structured-list", + ".bx--structured-list-thead", + ".bx--structured-list-row", + ".bx--structured-list-row--header-row", + ".bx--structured-list-th", + ".bx--structured-list-tbody", + ".bx--structured-list-td" + ] + }, + "Switch": { + "path": "carbon-components-svelte/src/ContentSwitcher/Switch.svelte", + "classes": [ + ".bx--content-switcher-btn", + ".bx--content-switcher--selected", + ".bx--content-switcher__label" + ] + }, + "Tab": { + "path": "carbon-components-svelte/src/Tabs/Tab.svelte", + "classes": [ + ".bx--tabs__nav-item", + ".bx--tabs__nav-item--disabled", + ".bx--tabs__nav-item--selected", + ".bx--tabs__nav-link" + ] + }, + "TabContent": { + "path": "carbon-components-svelte/src/Tabs/TabContent.svelte", + "classes": [ + ".bx--tab-content" + ] + }, + "Table": { + "path": "carbon-components-svelte/src/DataTable/Table.svelte", + "classes": [ + ".bx--data-table_inner-container", + ".bx--data-table", + ".bx--data-table--compact", + ".bx--data-table--short", + ".bx--data-table--tall", + ".bx--data-table--md", + ".bx--data-table--sort", + ".bx--data-table--zebra", + ".bx--data-table--static", + ".bx--data-table--sticky-header" + ] + }, + "TableBody": { + "path": "carbon-components-svelte/src/DataTable/TableBody.svelte", + "classes": [] + }, + "TableCell": { + "path": "carbon-components-svelte/src/DataTable/TableCell.svelte", + "classes": [] + }, + "TableContainer": { + "path": "carbon-components-svelte/src/DataTable/TableContainer.svelte", + "classes": [ + ".bx--data-table-container", + ".bx--data-table-container--static", + ".bx--data-table--max-width", + ".bx--data-table-header", + ".bx--data-table-header__title", + ".bx--data-table-header__description" + ] + }, + "TableHead": { + "path": "carbon-components-svelte/src/DataTable/TableHead.svelte", + "classes": [] + }, + "TableHeader": { + "path": "carbon-components-svelte/src/DataTable/TableHeader.svelte", + "classes": [ + ".bx--table-sort", + ".bx--table-sort--active", + ".bx--table-sort--ascending", + ".bx--table-header-label", + ".bx--table-sort__icon", + ".bx--table-sort__icon-unsorted" + ] + }, + "TableRow": { + "path": "carbon-components-svelte/src/DataTable/TableRow.svelte", + "classes": [] + }, + "Tabs": { + "path": "carbon-components-svelte/src/Tabs/Tabs.svelte", + "classes": [ + ".bx--tabs", + ".bx--tabs--container", + ".bx--tabs-trigger", + ".bx--tabs-trigger-text", + ".bx--tabs__nav", + ".bx--tabs__nav--hidden" + ] + }, + "TabsSkeleton": { + "path": "carbon-components-svelte/src/Tabs/TabsSkeleton.svelte", + "classes": [ + ".bx--tabs", + ".bx--skeleton", + ".bx--tabs--scrollable", + ".bx--tabs--scrollable--container", + ".bx--tabs--scrollable__nav", + ".bx--tabs--scrollable__nav-item", + ".bx--tabs__nav-link" + ] + }, + "Tag": { + "path": "carbon-components-svelte/src/Tag/Tag.svelte", + "classes": [ + ".bx--tag", + ".bx--tag--disabled", + ".bx--tag--filter", + ".bx--tag--sm", + ".bx--tag--red", + ".bx--tag--magenta", + ".bx--tag--purple", + ".bx--tag--blue", + ".bx--tag--cyan", + ".bx--tag--teal", + ".bx--tag--green", + ".bx--tag--gray", + ".bx--tag--cool-gray", + ".bx--tag--warm-gray", + ".bx--tag--high-contrast", + ".bx--tag--outline", + ".bx--tag__label", + ".bx--tag__close-icon", + ".bx--tag--interactive", + ".bx--tag__custom-icon" + ] + }, + "TagSkeleton": { + "path": "carbon-components-svelte/src/Tag/TagSkeleton.svelte", + "classes": [ + ".bx--tag", + ".bx--tag--sm", + ".bx--skeleton" + ] + }, + "TextArea": { + "path": "carbon-components-svelte/src/TextArea/TextArea.svelte", + "classes": [ + ".bx--form-item", + ".bx--text-area__label-wrapper", + ".bx--label", + ".bx--visually-hidden", + ".bx--label--disabled", + ".bx--text-area__wrapper", + ".bx--text-area__invalid-icon", + ".bx--text-area", + ".bx--text-area--light", + ".bx--text-area--invalid", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled", + ".bx--form-requirement" + ] + }, + "TextAreaSkeleton": { + "path": "carbon-components-svelte/src/TextArea/TextAreaSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--label", + ".bx--skeleton", + ".bx--text-area" + ] + }, + "TextInput": { + "path": "carbon-components-svelte/src/TextInput/TextInput.svelte", + "classes": [ + ".bx--form-item", + ".bx--text-input-wrapper", + ".bx--text-input-wrapper--inline", + ".bx--text-input-wrapper--light", + ".bx--text-input-wrapper--readonly", + ".bx--text-input__label-helper-wrapper", + ".bx--label", + ".bx--visually-hidden", + ".bx--label--disabled", + ".bx--label--inline", + ".bx--label--inline--sm", + ".bx--label--inline--xl", + ".bx--form__helper-text", + ".bx--form__helper-text--disabled", + ".bx--form__helper-text--inline", + ".bx--label--inline-sm", + ".bx--label--inline-xl", + ".bx--text-input__field-outer-wrapper", + ".bx--text-input__field-outer-wrapper--inline", + ".bx--text-input__field-wrapper", + ".bx--text-input__field-wrapper--warning", + ".bx--text-input__readonly-icon", + ".bx--text-input__invalid-icon", + ".bx--text-input__invalid-icon--warning", + ".bx--text-input", + ".bx--text-input--light", + ".bx--text-input--invalid", + ".bx--text-input--warning", + ".bx--text-input--sm", + ".bx--text-input--xl", + ".bx--text-input__divider", + ".bx--form-requirement" + ] + }, + "TextInputSkeleton": { + "path": "carbon-components-svelte/src/TextInput/TextInputSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--label", + ".bx--skeleton", + ".bx--text-input" + ] + }, + "Theme": { + "path": "carbon-components-svelte/src/Theme/Theme.svelte", + "classes": [] + }, + "Tile": { + "path": "carbon-components-svelte/src/Tile/Tile.svelte", + "classes": [ + ".bx--tile", + ".bx--tile--light" + ] + }, + "TileGroup": { + "path": "carbon-components-svelte/src/Tile/TileGroup.svelte", + "classes": [ + ".bx--tile-group", + ".bx--label" + ] + }, + "TimePicker": { + "path": "carbon-components-svelte/src/TimePicker/TimePicker.svelte", + "classes": [ + ".bx--form-item", + ".bx--time-picker", + ".bx--time-picker--light", + ".bx--time-picker--invalid", + ".bx--time-picker--sm", + ".bx--time-picker--xl", + ".bx--select--light", + ".bx--time-picker__input", + ".bx--label", + ".bx--visually-hidden", + ".bx--label--disabled", + ".bx--time-picker__input-field", + ".bx--text-input", + ".bx--text-input--light", + ".bx--text-input--invalid", + ".bx--form-requirement" + ] + }, + "TimePickerSelect": { + "path": "carbon-components-svelte/src/TimePicker/TimePickerSelect.svelte", + "classes": [ + ".bx--select", + ".bx--time-picker__select", + ".bx--label", + ".bx--visually-hidden", + ".bx--select-input", + ".bx--select__arrow" + ] + }, + "ToastNotification": { + "path": "carbon-components-svelte/src/Notification/ToastNotification.svelte", + "classes": [ + ".bx--toast-notification", + ".bx--toast-notification--low-contrast", + ".bx--toast-notification--error", + ".bx--toast-notification--info", + ".bx--toast-notification--info-square", + ".bx--toast-notification--success", + ".bx--toast-notification--warning", + ".bx--toast-notification--warning-alt", + ".bx--toast-notification__details", + ".bx--toast-notification__title", + ".bx--toast-notification__subtitle", + ".bx--toast-notification__caption" + ] + }, + "Toggle": { + "path": "carbon-components-svelte/src/Toggle/Toggle.svelte", + "classes": [ + ".bx--form-item", + ".bx--toggle-input", + ".bx--toggle-input--small", + ".bx--toggle-input__label", + ".bx--visually-hidden", + ".bx--toggle__switch", + ".bx--toggle__text--off", + ".bx--toggle__text--on" + ] + }, + "ToggleSkeleton": { + "path": "carbon-components-svelte/src/Toggle/ToggleSkeleton.svelte", + "classes": [ + ".bx--form-item", + ".bx--toggle", + ".bx--toggle--small", + ".bx--skeleton", + ".bx--toggle__label", + ".bx--toggle__label-text", + ".bx--toggle__text--left", + ".bx--toggle__appearance", + ".bx--toggle__text--right" + ] + }, + "Toolbar": { + "path": "carbon-components-svelte/src/DataTable/Toolbar.svelte", + "classes": [ + ".bx--table-toolbar", + ".bx--table-toolbar--small", + ".bx--table-toolbar--normal" + ] + }, + "ToolbarBatchActions": { + "path": "carbon-components-svelte/src/DataTable/ToolbarBatchActions.svelte", + "classes": [ + ".bx--batch-actions", + ".bx--batch-actions--active", + ".bx--batch-summary", + ".bx--batch-summary__para", + ".bx--action-list", + ".bx--batch-summary__cancel" + ] + }, + "ToolbarContent": { + "path": "carbon-components-svelte/src/DataTable/ToolbarContent.svelte", + "classes": [ + ".bx--toolbar-content" + ] + }, + "ToolbarMenu": { + "path": "carbon-components-svelte/src/DataTable/ToolbarMenu.svelte", + "classes": [ + ".bx--toolbar-action", + ".bx--overflow-menu" + ] + }, + "ToolbarMenuItem": { + "path": "carbon-components-svelte/src/DataTable/ToolbarMenuItem.svelte", + "classes": [] + }, + "ToolbarSearch": { + "path": "carbon-components-svelte/src/DataTable/ToolbarSearch.svelte", + "classes": [ + ".bx--toolbar-search-container-active", + ".bx--toolbar-search-container-persistent", + ".bx--toolbar-search-container-expandable", + ".bx--toolbar-search-container-disabled" + ] + }, + "Tooltip": { + "path": "carbon-components-svelte/src/Tooltip/Tooltip.svelte", + "classes": [ + ".bx--tooltip__label", + ".bx--tooltip", + ".bx--tooltip--shown", + ".bx--tooltip--top", + ".bx--tooltip--right", + ".bx--tooltip--bottom", + ".bx--tooltip--left", + ".bx--tooltip--align-center", + ".bx--tooltip--align-start", + ".bx--tooltip--align-end", + ".bx--tooltip__caret", + ".bx--tooltip__content", + ".bx--tooltip__trigger" + ] + }, + "TooltipDefinition": { + "path": "carbon-components-svelte/src/TooltipDefinition/TooltipDefinition.svelte", + "classes": [ + ".bx--tooltip--definition", + ".bx--tooltip--a11y", + ".bx--tooltip__trigger", + ".bx--tooltip__trigger--definition", + ".bx--tooltip--hidden", + ".bx--tooltip--visible", + ".bx--tooltip--top", + ".bx--tooltip--bottom", + ".bx--tooltip--align-start", + ".bx--tooltip--align-center", + ".bx--tooltip--align-end", + ".bx--assistive-text" + ] + }, + "TooltipFooter": { + "path": "carbon-components-svelte/src/Tooltip/TooltipFooter.svelte", + "classes": [ + ".bx--tooltip__footer" + ] + }, + "TooltipIcon": { + "path": "carbon-components-svelte/src/TooltipIcon/TooltipIcon.svelte", + "classes": [ + ".bx--tooltip__trigger", + ".bx--tooltip--a11y", + ".bx--tooltip--hidden", + ".bx--tooltip--top", + ".bx--tooltip--right", + ".bx--tooltip--bottom", + ".bx--tooltip--left", + ".bx--tooltip--align-start", + ".bx--tooltip--align-center", + ".bx--tooltip--align-end", + ".bx--assistive-text" + ] + }, + "TreeView": { + "path": "carbon-components-svelte/src/TreeView/TreeView.svelte", + "classes": [ + ".bx--label", + ".bx--tree", + ".bx--tree--default", + ".bx--tree--compact", + ".li.bx--tree-node:not(.bx--tree-node--disabled)", + ".bx--tree-node--disabled", + ".li.bx--tree-node" + ] + }, + "truncate": { + "path": "carbon-components-svelte/src/Truncate/truncate.js", + "classes": [] + }, + "Truncate": { + "path": "carbon-components-svelte/src/Truncate/Truncate.svelte", + "classes": [ + ".bx--text-truncate--end", + ".bx--text-truncate--front" + ] + }, + "UnorderedList": { + "path": "carbon-components-svelte/src/UnorderedList/UnorderedList.svelte", + "classes": [ + ".bx--list--unordered", + ".bx--list--nested", + ".bx--list--expressive" + ] + } +}); diff --git a/src/constants.ts b/src/constants.ts index 70f182e..389f650 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,19 +1,12 @@ -export const CARBON_SVELTE = { - components: "carbon-components-svelte", - icons: "carbon-icons-svelte", - pictograms: "carbon-pictograms-svelte", -}; +export const enum CarbonSvelte { + Components = "carbon-components-svelte", + Icons = "carbon-icons-svelte", + Pictograms = "carbon-pictograms-svelte", +} -export const LATEST_MAJOR_VERSION = { - [CARBON_SVELTE.components]: "0", - [CARBON_SVELTE.icons]: "11", - [CARBON_SVELTE.pictograms]: "12", -}; +export const RE_EXT_SVELTE = /\.svelte$/; -export const API_COMPONENTS = `src/${CARBON_SVELTE.components}.js`; -export const API_ELEMENTS = "src/carbon-elements.js"; -export const API_ICONS = "src/carbon-icons.js"; -export const API_PICTOGRAMS = "src/carbon-pictograms.js"; +export const RE_EXT_CSS = /\.css$/; -export const EXT_SVELTE = /\.(svelte)$/; -export const EXT_CSS = /\.(css)$/; +// Vite uses the decimal system for file sizes. +export const BITS_DENOM = 1_000; diff --git a/src/extractors/extract-selectors.ts b/src/extractors/extract-selectors.ts deleted file mode 100644 index 99a0d37..0000000 --- a/src/extractors/extract-selectors.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { parse, walk } from "svelte/compiler"; - -interface SelectorMarkup { - type: "Element" | "Attribute" | "Class"; -} - -interface SelectorStyle { - type: "PseudoClassSelector"; - name: "global" | string; -} - -interface SelectorFromIdentifier { - type: "FromIdentifier"; -} - -type Selector = SelectorMarkup | SelectorStyle | SelectorFromIdentifier; - -export type ExtractedSelectors = [string, Selector][]; - -interface NodeClassAttributeMustacheTag { - type: "MustacheTag"; - expression?: { - type: "Identifier"; - name: string; - }; -} - -interface NodeClassAttributeText { - type: "Text"; - data: string; -} - -type NodeClassAttribute = - | NodeClassAttributeMustacheTag - | NodeClassAttributeText; - -interface NodeIdentifierLiteral { - init?: { - type: "Literal"; - value: string; - }; -} - -interface NodeIdentifierCallExpression { - init?: { - type: "CallExpression"; - callee?: { - object?: { - elements?: Array< - | { type: "Literal"; value: string } - | { type: "LogicalExpression"; right?: { value: string } } - >; - }; - }; - }; -} - -type ParentNode = NodeIdentifierLiteral | NodeIdentifierCallExpression; - -interface NodeIdentifier { - type: "Identifier"; - name: string; -} - -interface NodeElement { - type: "Element"; - name: string; -} - -interface NodeAttribute { - type: "Attribute"; - name: string; - value?: NodeClassAttribute[]; -} - -interface NodeClass { - type: "Class"; - name: string; -} - -interface NodePseudoClassSelector { - type: "PseudoClassSelector"; - name: "global" | string; - children: [child?: { value: string }]; -} - -interface NodeLiteral { - type: "Literal"; - value: string; -} - -interface NodeTemplateElement { - type: "TemplateElement"; - value: { raw: string }; -} - -type Node = - | NodeIdentifier - | NodeElement - | NodeAttribute - | NodeClass - | NodePseudoClassSelector - | NodeLiteral - | NodeTemplateElement; - -function toArray(value: any) { - if (typeof value === "string") { - return value.split(/\s+/).map((value) => value.trim()); - } - - return []; -} - -const MARKUP_SELECTOR = ["Element"]; -const CLASS_SELECTOR = ["Attribute", "Class", "FromIdentifier"]; -const STYLE_SELECTOR = ["PseudoClassSelector"]; -const CARBON_PREFIX = /bx--/; - -export function extractSelectors( - template: string, - filename?: string -): ExtractedSelectors { - const ast = parse(template, { filename }); - const selectors: Map = new Map(); - const identifiers: Set = new Set(); - const ids: Map = new Map(); - - walk(ast, { - enter(node: Node, parent: ParentNode) { - if (node.type === "Identifier") { - const id = node.name; - - if (parent.init?.type === "Literal") { - ids.set(id, { value: toArray(parent.init.value) }); - } - - if (parent.init?.type === "CallExpression") { - parent.init.callee?.object?.elements?.forEach((element) => { - if (element.type === "Literal") { - ids.set(id, { value: toArray(element.value) }); - } - - if (element.type === "LogicalExpression" && element.right?.value) { - ids.set(id, { value: toArray(element.right?.value) }); - } - }); - } - } - - if (node.type === "Element") { - //
    - selectors.set(node.name, { type: node.type }); - } - - if (node.type === "Attribute" && node.name === "class") { - // class="c1" - // class="c1 c2" - // class="{c} c1 c2 c3" - node.value?.map((value: NodeClassAttribute) => { - if (value.type === "MustacheTag") { - if (value.expression?.type === "Identifier") { - identifiers.add(value.expression.name); - } - } else if (value.type === "Text") { - value.data - .split(/\s+/) - .filter(Boolean) - .forEach((selector) => - selectors.set(selector, { type: node.type }) - ); - } - }); - } - - // class:directive - if (node.type === "Class") { - selectors.set(node.name, { type: node.type }); - } - - if (node.type === "PseudoClassSelector" && node.name === "global") { - // global selector - // :global(div) {} - node.children[0]?.value.split(",").forEach((selector: string) => { - selectors.set(selector.trim(), { type: node.type, name: node.name }); - }); - } - - if (node.type === "Literal" && CARBON_PREFIX.test(node.value)) { - selectors.set(node.value, { type: "Class" }); - } - - if ( - node.type === "TemplateElement" && - CARBON_PREFIX.test(node.value.raw) - ) { - selectors.set(node.value.raw, { type: "Class" }); - } - }, - }); - - identifiers.forEach((id) => { - if (ids.has(id)) { - ids.get(id)!.value.forEach((value) => { - selectors.set(value, { type: "FromIdentifier" }); - }); - } - }); - - // iterate through all class attribute identifiers - return Array.from(selectors).map((selector) => { - const [value, meta] = selector; - - if (CLASS_SELECTOR.includes(meta.type)) { - return ["." + value, meta]; - } - - return selector; - }); -} diff --git a/src/extractors/index.ts b/src/extractors/index.ts deleted file mode 100644 index 09ef185..0000000 --- a/src/extractors/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./extract-selectors"; diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..fa59a96 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,60 @@ +declare module "svelte/compiler" { + import type { Ast, Element, Text } from "svelte/types/compiler/interfaces"; + + type CustomElement = Omit & T; + + type Literal = CustomElement<{ + type: "Literal"; + value: string; + }>; + + type TemplateElement = CustomElement<{ + type: "TemplateElement"; + value: { raw: string }; + }>; + + type PseudoClassSelector = CustomElement<{ + type: "PseudoClassSelector"; + name: "global" | string; + }>; + + type Class = CustomElement<{ + type: "Class"; + }>; + + type Attribute = CustomElement<{ + type: "Attribute"; + name: string; + value?: Array; + }>; + + type Identifier = CustomElement<{ + type: "Identifier"; + }>; + + type ImportDeclaration = CustomElement<{ + type: "ImportDeclaration"; + source: { value: string }; + specifiers: Array<{ + local: { name: string }; + imported: { name: string }; + }>; + }>; + + type ANode = + | Element + | Literal + | TemplateElement + | PseudoClassSelector + | Class + | Attribute + | Identifier + | ImportDeclaration; + + export function walk( + ast: Ast, + options: { + enter: (node: ANode, parentNode: ANode) => void; + }, + ): void; +} diff --git a/src/index.cjs.ts b/src/index.cjs.ts deleted file mode 100644 index eef2022..0000000 --- a/src/index.cjs.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./preprocessors"; -export * from "./extractors"; -export * from "./plugins/optimize-css.cjs"; -export * from "./presets"; diff --git a/src/index.ts b/src/index.ts index 5a83bd2..7d64e5a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ -export * from "./preprocessors"; -export * from "./extractors"; -export * from "./plugins"; -export * from "./presets"; +export { default as OptimizeCssPlugin } from "./plugins/OptimizeCssPlugin"; +export { optimizeCss } from "./plugins/optimize-css"; +export { optimizeImports } from "./preprocessors/optimize-imports"; diff --git a/src/plugins/OptimizeCssPlugin.ts b/src/plugins/OptimizeCssPlugin.ts new file mode 100644 index 0000000..4734582 --- /dev/null +++ b/src/plugins/OptimizeCssPlugin.ts @@ -0,0 +1,75 @@ +import type { Compiler } from "webpack"; +import { isCarbonSvelteImport, isCssFile } from "../utils"; +import { compareDiff } from "./compare-diff"; +import type { OptimizeCssOptions } from "./create-optimized-css"; +import { createOptimizedCss } from "./create-optimized-css"; + +// Webpack plugin to optimize CSS for Carbon Svelte components. +class OptimizeCssPlugin { + private options: OptimizeCssOptions; + + public constructor(options?: OptimizeCssOptions) { + this.options = { + verbose: options?.verbose !== false, + preserveAllIBMFonts: options?.preserveAllIBMFonts === true, + }; + } + + public apply(compiler: Compiler) { + const { + webpack: { + Compilation, + NormalModule, + sources: { RawSource }, + }, + } = compiler; + + compiler.hooks.thisCompilation.tap( + OptimizeCssPlugin.name, + (compilation) => { + const hooks = NormalModule.getCompilationHooks(compilation); + const ids: string[] = []; + + hooks.beforeSnapshot.tap(OptimizeCssPlugin.name, ({ buildInfo }) => { + if (buildInfo?.fileDependencies) { + for (const id of buildInfo.fileDependencies) { + if (isCarbonSvelteImport(id)) { + ids.push(id); + } + } + } + }); + + compilation.hooks.processAssets.tap( + { + name: OptimizeCssPlugin.name, + stage: Compilation.PROCESS_ASSETS_STAGE_DERIVED, + }, + (assets) => { + // Skip processing if no Carbon Svelte imports are found. + if (ids.length === 0) return; + + for (const [id] of Object.entries(assets)) { + if (isCssFile(id)) { + const original_css = assets[id].source(); + const optimized_css = createOptimizedCss( + original_css, + ids, + this.options, + ); + + compilation.updateAsset(id, new RawSource(optimized_css)); + + if (this.options.verbose) { + compareDiff({ original_css, optimized_css, id }); + } + } + } + }, + ); + }, + ); + } +} + +export default OptimizeCssPlugin; diff --git a/src/plugins/compare-diff.ts b/src/plugins/compare-diff.ts new file mode 100644 index 0000000..44c97e5 --- /dev/null +++ b/src/plugins/compare-diff.ts @@ -0,0 +1,45 @@ +import { BITS_DENOM } from "../constants"; + +const formatter = new Intl.NumberFormat("en-US", { maximumFractionDigits: 2 }); + +function toHumanReadableSize(size_in_kb: number) { + if (size_in_kb >= BITS_DENOM) { + return formatter.format(size_in_kb / BITS_DENOM) + " MB"; + } + + return formatter.format(size_in_kb) + " kB"; +} + +function percentageDiff(a: number, b: number) { + return formatter.format(((a - b) / a) * 100) + "%"; +} + +function stringSizeInKB(str: string) { + const blob = new Blob([str], { type: "text/plain" }); + return blob.size / BITS_DENOM; +} + +function padIfNeeded(a: string, b: string) { + return a.length > b.length ? a : a.padStart(b.length, " "); +} + +export function compareDiff(props: { + original_css: Uint8Array | Buffer | string; + optimized_css: string; + id: string; +}) { + const { original_css, optimized_css, id } = props; + + const original_size = stringSizeInKB(original_css.toString()); + const optimized_size = stringSizeInKB(optimized_css); + const original = toHumanReadableSize(original_size); + const optimized = toHumanReadableSize(optimized_size); + const original_display = padIfNeeded(original, optimized); + const optimized_display = padIfNeeded(optimized, original); + const diff = percentageDiff(original_size, optimized_size); + + console.log("\n"); + console.log("Optimized", id); + console.log("Before:", original_display); + console.log("After: ", optimized_display, `(-${diff})\n`); +} diff --git a/src/plugins/create-optimized-css.ts b/src/plugins/create-optimized-css.ts new file mode 100644 index 0000000..44186fb --- /dev/null +++ b/src/plugins/create-optimized-css.ts @@ -0,0 +1,126 @@ +import path from "node:path"; +import postcss from "postcss"; +import discardEmpty from "postcss-discard-empty"; +import { components } from "../component-index"; + +export type OptimizeCssOptions = { + /** + * By default, the plugin will print the size + * difference between the original and optimized CSS. + * + * Set to `false` to disable verbose logging. + * @default true + */ + verbose?: boolean; + + /** + * By default, pre-compiled Carbon StyleSheets ship `@font-face` rules + * for all available IBM Plex fonts, many of which are not actually + * used in Carbon Svelte components. + * + * The default behavior is to preserve the following IBM Plex fonts: + * - IBM Plex Sans (300/400/600-weight and normal-font-style rules) + * - IBM Plex Mono (400-weight and normal-font-style rules) + * + * Set to `true` to disable this behavior and + * retain *all* IBM Plex `@font-face` rules. + * @default false + */ + preserveAllIBMFonts?: boolean; +}; + +export function createOptimizedCss( + original_css: Uint8Array | string, + ids: string[], + options?: OptimizeCssOptions, +) { + const preserveAllIBMFonts = options?.preserveAllIBMFonts === true; + + // List of Carbon classes that must be preserved in the CSS + // but that are not referenced in Carbon Svelte components. + const css_allowlist = [".bx--body"]; + + for (const id of ids) { + const { name } = path.parse(id); + + if (name in components) { + css_allowlist.push(...components[name].classes); + } + } + + return postcss([ + { + postcssPlugin: "postcss-plugin:carbon:optimize-css", + Rule(node) { + const selector = node.selector; + + // Ensure that the selector contains a class. + if (selector.includes(".")) { + // Selectors may contain multiple classes, separated by a comma. + const classes = selector.split(",").filter((selectee) => { + const value = selectee.trim() ?? ""; + // Some Carbon classes are prefixed with a tag for higher specificity. + // E.g., a.bx--header + const [, rest] = value.split("."); + return Boolean(rest); + }); + + let remove_rule = true; + + for (const name of classes) { + for (const selector of css_allowlist) { + // If at least one class is in the allowlist, keep the rule. + // This is a simplistic approach and can be further optimized. + if (name.includes(selector)) { + remove_rule = false; + break; + } + } + } + + if (remove_rule) { + node.remove(); + } + } + }, + AtRule(node) { + if (!preserveAllIBMFonts && node.name === "font-face") { + const attributes = { + "font-family": "", + "font-style": "", + "font-weight": "", + }; + + node.walkDecls((decl) => { + switch (decl.prop) { + case "font-family": + attributes["font-family"] = decl.value; + break; + case "font-style": + attributes["font-style"] = decl.value; + break; + case "font-weight": + attributes["font-weight"] = decl.value; + break; + } + }); + + const is_mono = + attributes["font-style"] === "normal" && + attributes["font-family"] === "IBM Plex Mono" && + attributes["font-weight"] === "400"; + + const is_sans = + attributes["font-style"] === "normal" && + attributes["font-family"] === "IBM Plex Sans" && + ["300", "400", "600"].includes(attributes["font-weight"]); + + if (!(is_sans || is_mono)) { + node.remove(); + } + } + }, + }, + discardEmpty(), + ]).process(original_css).css; +} diff --git a/src/plugins/index.ts b/src/plugins/index.ts deleted file mode 100644 index 723533d..0000000 --- a/src/plugins/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./optimize-css"; diff --git a/src/plugins/optimize-css.cjs.ts b/src/plugins/optimize-css.cjs.ts deleted file mode 100644 index e9e09fd..0000000 --- a/src/plugins/optimize-css.cjs.ts +++ /dev/null @@ -1,87 +0,0 @@ -import Rollup from "rollup"; -import sveltePreprocess from "svelte-preprocess"; -import { preprocess } from "svelte/compiler"; -import { extractSelectors, ExtractedSelectors } from "../extractors"; -import { PurgeCSS } from "purgecss"; -import { readFile } from "../utils"; -import { EXT_SVELTE, EXT_CSS } from "../constants"; - -// @ts-ignore -const { typescript } = sveltePreprocess; - -interface OptimizeCssOptions { - safelist: { - standard?: Array; - deep?: RegExp[]; - greedy?: RegExp[]; - }; -} - -export function optimizeCss( - options?: Partial -): Rollup.Plugin { - const selectors: ExtractedSelectors = []; - const standard = [ - "*", - "html", - "body", - /aria-current/, - /^svelte-/, - ...(options?.safelist?.standard ?? []), - ]; - const deep = options?.safelist?.deep ?? []; - const greedy = options?.safelist?.greedy ?? []; - - return { - name: "plugin-optimize-css", - async transform(code, id) { - if (EXT_SVELTE.test(id)) { - const source = await readFile(id, "utf-8"); - const result = await preprocess(source, [typescript()], { - filename: id, - }); - selectors.push(...extractSelectors(result.code, id)); - return { code, map: null }; - } - }, - async generateBundle({}, bundle) { - for (const fileName in bundle) { - const chunkOrAsset = bundle[fileName]; - - if (chunkOrAsset.type === "asset" && EXT_CSS.test(fileName)) { - const content = [...selectors.map((selector) => selector[0] + "{}")]; - const purgeCSSResult = await new PurgeCSS().purge({ - content: [{ raw: content.join(" "), extension: "css" }], - css: [{ raw: chunkOrAsset.source as string }], - keyframes: true, - fontFace: true, - safelist: { - standard, - deep, - greedy: [ - ...greedy, - ...selectors - .filter((selector) => selector[0].endsWith("-")) - .map((selector) => { - if (selector[0][0] === ".") { - return new RegExp(selector[0].slice(1)); - } - - return new RegExp(selector[0]); - }), - ], - }, - }); - - if (purgeCSSResult[0]) { - this.emitFile({ - type: "asset", - fileName, - source: purgeCSSResult[0].css, - }); - } - } - } - }, - }; -} diff --git a/src/plugins/optimize-css.ts b/src/plugins/optimize-css.ts index a5984b9..613e657 100644 --- a/src/plugins/optimize-css.ts +++ b/src/plugins/optimize-css.ts @@ -1,90 +1,41 @@ -import Rollup from "rollup"; -import sveltePreprocess from "svelte-preprocess"; -import { preprocess } from "svelte/compiler"; -import { extractSelectors, ExtractedSelectors } from "../extractors"; -import purgecss from "purgecss"; -import { readFile } from "../utils"; -import { EXT_SVELTE, EXT_CSS } from "../constants"; +import type { Plugin } from "vite"; +import { isCarbonSvelteImport, isCssFile } from "../utils"; +import { compareDiff } from "./compare-diff"; +import type { OptimizeCssOptions } from "./create-optimized-css"; +import { createOptimizedCss } from "./create-optimized-css"; -// @ts-ignore -const { typescript } = sveltePreprocess; - -// @ts-ignore -const { PurgeCSS } = purgecss; - -interface OptimizeCssOptions { - safelist: { - standard?: Array; - deep?: RegExp[]; - greedy?: RegExp[]; - }; -} - -export function optimizeCss( - options?: Partial -): Rollup.Plugin { - const selectors: ExtractedSelectors = []; - const standard = [ - "*", - "html", - "body", - /aria-current/, - /^svelte-/, - ...(options?.safelist?.standard ?? []), - ]; - const deep = options?.safelist?.deep ?? []; - const greedy = options?.safelist?.greedy ?? []; +// Vite plugin (Rollup-compatible) to optimize CSS for Carbon Svelte components. +export const optimizeCss = (options?: OptimizeCssOptions): Plugin => { + const verbose = options?.verbose !== false; + const ids: string[] = []; return { - name: "plugin-optimize-css", - async transform(code, id) { - if (EXT_SVELTE.test(id)) { - const source = await readFile(id, "utf-8"); - const result = await preprocess(source, [typescript()], { - filename: id, - }); - selectors.push(...extractSelectors(result.code, id)); - return { code, map: null }; + name: "vite:carbon:optimize-css", + apply: "build", + enforce: "post", + transform(_, id) { + if (isCarbonSvelteImport(id)) { + ids.push(id); } }, - async generateBundle({}, bundle) { - for (const fileName in bundle) { - const chunkOrAsset = bundle[fileName]; + async generateBundle(_, bundle) { + // Skip processing if no Carbon Svelte imports are found. + if (ids.length === 0) return; + + for (const id in bundle) { + const file = bundle[id]; - if (chunkOrAsset.type === "asset" && EXT_CSS.test(fileName)) { - const content = [...selectors.map((selector) => selector[0] + "{}")]; - const purgeCSSResult = await new PurgeCSS().purge({ - content: [{ raw: content.join(" "), extension: "css" }], - css: [{ raw: chunkOrAsset.source as string }], - keyframes: true, - fontFace: true, - safelist: { - standard, - deep, - greedy: [ - ...greedy, - ...selectors - .filter((selector) => selector[0].endsWith("-")) - .map((selector) => { - if (selector[0][0] === ".") { - return new RegExp(selector[0].slice(1)); - } + if (file.type === "asset" && isCssFile(id)) { + const original_css = file.source; + const optimized_css = createOptimizedCss(original_css, ids, options); - return new RegExp(selector[0]); - }), - ], - }, - }); + file.source = optimized_css; - if (purgeCSSResult[0]) { - this.emitFile({ - type: "asset", - fileName, - source: purgeCSSResult[0].css, - }); + if (verbose) { + compareDiff({ original_css, optimized_css, id }); } } } }, }; -} +}; diff --git a/src/preprocessors/collect-headings.ts b/src/preprocessors/collect-headings.ts deleted file mode 100644 index c2d1e8a..0000000 --- a/src/preprocessors/collect-headings.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { PreprocessorGroup } from "svelte/types/compiler/preprocess"; -import { EXT_SVELTE } from "../constants"; -import { NodeText, walkAndReplace } from "../walk-and-replace"; - -/** - * Corresponds to the semantic heading element number - * @example - *

    --> 1 - *

    --> 2 - */ -type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6; - -type Headings = Array<{ id?: string; text: string; level: HeadingLevel }>; - -interface CollectHeadingsOptions { - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test: RegExp; - - /** - * Optional callback to transform the content after extracting all headings - */ - afterCollect: (headings: Headings, content: string) => string; -} - -const ELEMENT_HEADING = /^h(1|2|3|4|5|6)$/; - -export function collectHeadings( - options?: Partial -): Pick { - const test = options?.test ?? EXT_SVELTE; - - return { - markup({ filename, content }) { - if (filename && !/node_modules/.test(filename) && test.test(filename)) { - const headings: Headings = []; - - walkAndReplace({ type: "markup", content, filename }, ({ node }) => { - if (node.type === "Element" && ELEMENT_HEADING.test(node.name)) { - const id = node.attributes.find( - (attribute) => attribute.name === "id" - ); - - headings.push({ - id: Array.isArray(id?.value) ? id!.value[0].raw : undefined, - text: node.children - .flatMap((child) => { - if (child.type === "Element") return child.children; - return child; - }) - .filter((child) => child.type === "Text") - .map((child) => (child as NodeText).raw) - .join(""), - level: Number(node.name.slice(-1)) as HeadingLevel, - }); - } - }); - - content = - options?.afterCollect?.apply(this, [headings, content]) ?? content; - - return { code: content }; - } - - return { code: content }; - }, - }; -} diff --git a/src/preprocessors/elements.ts b/src/preprocessors/elements.ts deleted file mode 100644 index f4f2fe3..0000000 --- a/src/preprocessors/elements.ts +++ /dev/null @@ -1,313 +0,0 @@ -import { PreprocessorGroup } from "svelte/types/compiler/preprocess"; -import { - rgba, - rem, - em, - px, - breakpoint, - breakpointDown, - breakpointUp, - breakpoints, - BreakpointName, -} from "@carbon/elements"; -import { TokenTypeStyles, TokenUI, v10_theme } from "../build/build-elements"; -import { MediaFeature, walkAndReplace } from "../walk-and-replace"; -import * as carbonElements from "../carbon-elements"; - -interface PreprocessElementsOptions { - /** - * Specify the Carbon theme - * Setting to "all" will also enable `cssVars` - * @default "white" - */ - theme: v10_theme | "all"; - - /** - * Set to `true` for tokens to be re-written as CSS variables - * Automatically set to `true` if theme is "all" - * @example - * "spacing-05" --> var(--cds-spacing-05) - * "ui-01" --> var(--cds-ui-01) - * @default false - */ - cssVars: boolean; -} - -export type ElementsOptions = Partial; - -type Token = keyof typeof carbonElements.elements.tokens; - -const PROPERTY_ALIAS = { - font: "font", -}; - -const TOKEN_TYPE = { - font: "font", -}; - -const BREAKPOINTS = Object.keys(breakpoints); - -function getMediaFeatureValue(feature: MediaFeature) { - if (feature.value == null) { - if (BREAKPOINTS.includes(feature.name)) { - return breakpoints[feature.name as BreakpointName].width; - } else { - console.warn( - `[carbon:elements] Invalid breakpoint name "${feature.name}"` - ); - - return null; - } - } - - if ("unit" in feature.value) { - return feature.value.value + feature.value.unit; - } -} - -export function elements( - options?: ElementsOptions -): Pick { - const theme = options?.theme ?? "white"; - const cssVars = options?.cssVars === true || theme === "all"; - - return { - style({ filename, content }) { - if (filename && !/node_modules/.test(filename)) { - const code = walkAndReplace( - { type: "style", content, filename }, - ({ node }, replaceContent, getContent) => { - if (node.type === "Rule") { - node.block.children.forEach((child) => { - let operator: string | undefined = undefined; - let operatorValue: string | undefined = undefined; - - const hasOperator = child.value.children.some( - (child, index) => index > 0 && child.type === "Operator" - ); - - if (hasOperator) { - operator = child.value.children.find( - (child) => child.type === "Operator" - )!.value; - - operatorValue = child.value.children.find( - (child) => child.type === "Number" - )?.value; - } - - child.value.children.forEach((childValue) => { - if (childValue.type === "String") { - const token = childValue.value.replace(/(\"|\')/g, ""); - - if ( - token !== undefined && - token in carbonElements.elements.tokens - ) { - const tokenValue = - carbonElements.elements.tokens[token as Token]; - if (child.property in TOKEN_TYPE) { - if ( - (tokenValue as TokenTypeStyles).breakpoints.length > 0 - ) { - // TODO: generate responsive styles - } - - replaceContent( - node, - (tokenValue as TokenTypeStyles).css, - getContent(child) - ); - - return (tokenValue as TokenTypeStyles).css; - } - - if (token in carbonElements.elements.tokens_ui) { - let Value: TokenUI | string; - - if (theme === "all" || cssVars) - Value = `var(--cds-${token})`; - else - Value = - carbonElements.elements.tokens_ui[token as TokenUI][ - theme - ]; - - const oldValue = getContent(child.value); - const newValue = oldValue.replace( - childValue.value, - Value - ); - - replaceContent( - node, - `${child.property}: ${newValue}`, - getContent(child) - ); - - if (theme === "all") return `var(--cds-${token})`; - return carbonElements.elements.tokens_ui[ - token as TokenUI - ][theme]; - } - - const oldValue = getContent(child.value); - - let newValue = oldValue.replace( - childValue.value, - tokenValue as string - ); - - if (hasOperator && operatorValue !== undefined) { - newValue = `calc(${tokenValue} ${operator} ${operatorValue})`; - } - - replaceContent( - node, - `${child.property}: ${newValue}`, - getContent(child) - ); - - return tokenValue; - } - } - - return getContent(childValue); - }); - }); - } - - if (node.type === "Atrule" && node.name === "media") { - const mediaFeatures: MediaFeature[] = []; - - node.prelude.children - .flatMap((child) => child.children ?? []) - .forEach((node) => { - node.children.forEach((child) => { - if (child.type === "MediaFeature") { - mediaFeatures.push(child); - } - }); - }); - - if (mediaFeatures.length === 1) { - const { name, value } = mediaFeatures[0]; - - let featureValue: string = ""; - - if (value != null && "name" in value) { - featureValue = value.name; - } - - if (BREAKPOINTS.includes(featureValue)) { - switch (name) { - case "up": - replaceContent( - node, - `${breakpointUp( - featureValue as BreakpointName - )} ${getContent(node.block)}` - ); - break; - case "down": - replaceContent( - node, - `${breakpointDown( - featureValue as BreakpointName - )} ${getContent(node.block)}` - ); - break; - case "bp": - replaceContent( - node, - `${breakpoint( - featureValue as BreakpointName - )} ${getContent(node.block)}` - ); - break; - } - } else { - console.warn( - `[carbon:elements] Invalid breakpoint name "${name}"` - ); - } - } else { - const firstValue = getMediaFeatureValue(mediaFeatures[0]); - const secondValue = getMediaFeatureValue(mediaFeatures[1]); - - if (firstValue && secondValue) { - replaceContent( - node, - `@media (min-width: ${firstValue}) and (max-width: ${secondValue}) ${getContent( - node.block - )}` - ); - } - } - } - - if (node.type === "Function") { - if (node.name === "rgba") { - const [hex, operator, number] = node.children; - - if (hex.value.length < 6) { - console.warn( - `[carbon:elements] rgba hex value must be six characters. Received "#${hex.value}"` - ); - return; - } - - let opacity = 1; - - if (number !== undefined) { - opacity = Number(number.value); - - if (opacity > 1) { - console.warn( - `[carbon:elements] rgba opacity value cannot be greater than 1. Received ${opacity}` - ); - opacity = 1; - } - - if (opacity < 0) { - console.warn( - `[carbon:elements] rgba opacity value cannot be less than 0. Received ${opacity}` - ); - opacity = 0; - } - } - - replaceContent(node, rgba(hex.value, opacity)); - } - - if (node.name === "rem") { - const dimension = node.children[0]; - const px = Number(dimension?.value ?? 0); - - replaceContent(node, rem(px)); - } - - if (node.name === "em") { - const dimension = node.children[0]; - const px = Number(dimension?.value ?? 0); - - replaceContent(node, em(px)); - } - - if (node.name === "px") { - const dimension = node.children[0]; - const value = Number(dimension?.value ?? 0); - - replaceContent(node, px(value)); - } - } - } - ); - - return { code }; - } - - return { code: content }; - }, - }; -} diff --git a/src/preprocessors/icons.ts b/src/preprocessors/icons.ts deleted file mode 100644 index 8915cd3..0000000 --- a/src/preprocessors/icons.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { PreprocessorGroup } from "svelte/types/compiler/preprocess"; -import { BuildIcons, IconName } from "../build/build-icons"; -import { walkAndReplace } from "../walk-and-replace"; -import * as Icons from "../carbon-icons"; -import { EXT_SVELTE } from "../constants"; - -const carbonIcons = Icons.icons as BuildIcons; - -const defaultIconAttributes = { - xmlns: "http://www.w3.org/2000/svg", - viewBox: "0 0 32 32", - fill: "currentColor", - focusable: "false", - preserveAspectRatio: "xMidYMid meet", -}; - -export function icons(): Pick { - return { - markup({ filename, content }) { - if (filename && !/node_modules/.test(filename) && EXT_SVELTE.test(filename)) { - const code = walkAndReplace( - { type: "markup", content, filename }, - ({ node }, replaceContent, getContent) => { - if (node.type === "Element" && node.name === "icon") { - let name: string | undefined; - - const attributes = node.attributes - .map((attribute) => { - if (attribute.name === "name") { - if (Array.isArray(attribute.value)) { - name = attribute.value[0].raw; - } - - return undefined; - } - - return attribute; - }) - .filter(Boolean); - - if (name === undefined) - console.warn("[carbon:icons] Icon name is required"); - - if (name !== undefined && name in carbonIcons.icons) { - const icon = carbonIcons.icons[name as IconName]; - const svgAttributes: Record = {}; - - Object.entries(defaultIconAttributes).forEach( - ([attribute, value]) => { - svgAttributes[attribute] = JSON.stringify(value); - } - ); - - Object.entries(icon.attributes).forEach( - ([attribute, value]) => { - svgAttributes[attribute] = JSON.stringify(value); - } - ); - - attributes.forEach((attribute) => { - const value = getContent(attribute!); - - if (/^\{|$\}/.test(value)) { - svgAttributes[attribute!.name] = value; - } else { - svgAttributes[attribute!.name] = value.slice( - attribute!.name.length + 1 - ); - } - }); - - const attrs = Object.entries(svgAttributes) - .map(([attribute, value]) => `${attribute}=${value}`) - .join(" "); - - const markup = `${icon.children}`; - - replaceContent(node, markup); - } else { - console.warn(`[carbon:icons] invalid icon name "${name}"`); - } - } - } - ); - - return { code }; - } - - return { code: content }; - }, - }; -} diff --git a/src/preprocessors/include.ts b/src/preprocessors/include.ts deleted file mode 100644 index 0a54f84..0000000 --- a/src/preprocessors/include.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { PreprocessorGroup } from "svelte/types/compiler/preprocess"; -import { EXT_SVELTE } from "../constants"; -import { parse } from "path"; - -interface PreprocessIncludeOptions { - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test?: RegExp; - - script: Array<{ - /** - * Specify the content the prepend or append - * @example - * import { CodeSnippet } from "carbon-components-svelte"; - */ - content: string; - - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test?: RegExp; - - /** - * Specify whether the content should be prepended or appended - * @default "prepend" - */ - behavior?: "prepend" | "append"; - }>; - - markup: Array<{ - /** - * Specify the content the prepend or append - * @example - *
      Table of Contents
    - */ - content: string; - - /** - * Specify the filename pattern to process - * Defaults to files ending with ".svelte" - * @default /\.(svelte)$/ - */ - test?: RegExp; - - /** - * Specify whether the content should be prepended or appended - * @default "prepend" - */ - behavior?: "prepend" | "append"; - }>; -} - -export function include( - options?: Partial -): Pick { - const script = options?.script ?? []; - const markup = options?.markup ?? []; - const test = options?.test ?? EXT_SVELTE; - - return { - script({ filename, content }) { - if ( - script.length > 0 && - filename !== undefined && - !/node_modules/.test(filename) && - test.test(filename) - ) { - script.forEach((entry) => { - const behavior = entry.behavior ?? "prepend"; - const testEntry = entry.test ?? test; - - if (testEntry.test(filename)) { - if (behavior === "prepend") { - content = entry.content + content; - } else if (behavior === "append") { - content += entry.content; - } - } - }); - - return { code: content }; - } - - return { code: content }; - }, - markup({ filename, content }) { - - if ( - markup.length > 0 && - filename && - !/node_modules/.test(filename) && - // ignore SvelteKit layout/error files to prevent duplicate markup - !/.svelte-kit/.test(filename) && - !/^(__layout)/.test(parse(filename).name) && - test.test(filename) - ) { - markup.forEach((entry) => { - const behavior = entry.behavior ?? "prepend"; - const testEntry = entry.test ?? test; - - if (testEntry.test(filename)) { - if (behavior === "prepend") { - content = entry.content + content; - } else if (behavior === "append") { - content += entry.content; - } - } - }); - - return { code: content }; - } - - return { code: content }; - }, - }; -} diff --git a/src/preprocessors/index.ts b/src/preprocessors/index.ts deleted file mode 100644 index 198355f..0000000 --- a/src/preprocessors/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./elements"; -export * from "./optimize-imports"; -export * from "./collect-headings"; -export * from "./icons"; -export * from "./pictograms"; -export * from "./include"; diff --git a/src/preprocessors/optimize-imports.ts b/src/preprocessors/optimize-imports.ts index eeb0df5..6abc6c5 100644 --- a/src/preprocessors/optimize-imports.ts +++ b/src/preprocessors/optimize-imports.ts @@ -1,93 +1,70 @@ -import { PreprocessorGroup } from "svelte/types/compiler/preprocess"; -import { BuildComponents } from "../build/build-components"; -import { components } from "../carbon-components-svelte.js"; -import { CARBON_SVELTE } from "../constants"; -import { getCarbonVersions } from "../utils"; -import { walkAndReplace } from "../walk-and-replace"; +import MagicString from "magic-string"; +import type { ImportDeclaration } from "svelte/compiler"; +import { parse, walk } from "svelte/compiler"; +import type { SveltePreprocessor } from "svelte/types/compiler/preprocess"; +import { components } from "../component-index"; +import { CarbonSvelte } from "../constants"; -const Components: Pick = components; -const CARBON_VERSIONS: Record = getCarbonVersions(); +function rewriteImport( + s: MagicString, + node: ImportDeclaration, + map: (specifier: ImportDeclaration["specifiers"][0]) => string, +) { + let content = ""; -export function optimizeImports(): Pick { - return { - script({ filename, content }) { - if (filename && !/node_modules/.test(filename)) { - const code = walkAndReplace( - { - type: "script", - content, - filename, - }, - ({ node }, replaceContent) => { - if (node.type === "ImportDeclaration") { - switch (node.source.value) { - case CARBON_SVELTE.components: - replaceContent( - node, - node.specifiers - .map(({ local, imported }) => { - if (imported.name in Components.components) { - return `import ${local.name} from "${ - Components.components[imported.name].path - }";`; - } + for (const specifier of node.specifiers) { + const fragment = map(specifier); + if (fragment) content += fragment; + } + + if (content) s.overwrite(node.start, node.end, content); +} - console.warn( - `[carbon:optimizeImports] ${imported.name} is not a valid Carbon component` - ); - return ""; - }) - .join("\n") - ); - break; +export const optimizeImports: SveltePreprocessor<"script"> = () => { + return { + name: "carbon:optimize-imports", + script({ filename, content: raw }) { + // Skip files in node_modules to minimize unnecessary preprocessing + if (!filename) return; + if (/node_modules/.test(filename)) return; - case CARBON_SVELTE.icons: - replaceContent( - node, - node.specifiers - .map(({ local, imported }) => { - if ( - CARBON_VERSIONS[CARBON_SVELTE.icons] === "11" || - CARBON_VERSIONS[CARBON_SVELTE.icons] === "12" - ) { - return `import ${local.name} from "${CARBON_SVELTE.icons}/lib/${imported.name}.svelte";`; - } + // Wrap the content in a ``; + const s = new MagicString(content); - return `import ${local.name} from "${CARBON_SVELTE.icons}/lib/${imported.name}/${imported.name}.svelte";`; - }) - .join("\n") - ); - break; + walk(parse(content), { + enter(node) { + if (node.type === "ImportDeclaration") { + const import_name = node.source.value; - case CARBON_SVELTE.pictograms: - replaceContent( - node, - node.specifiers - .map(({ local, imported }) => { - if ( - CARBON_VERSIONS[CARBON_SVELTE.pictograms] === "11" || - CARBON_VERSIONS[CARBON_SVELTE.pictograms] === "12" - ) { - return `import ${local.name} from "${CARBON_SVELTE.pictograms}/lib/${imported.name}.svelte";`; - } + switch (import_name) { + case CarbonSvelte.Components: + rewriteImport(s, node, ({ imported, local }) => { + const import_path = components[imported.name]?.path; + return import_path + ? `import ${local.name} from "${import_path}";` + : ""; + }); + break; - return `import ${local.name} from "${CARBON_SVELTE.pictograms}/lib/${imported.name}/${imported.name}.svelte";`; - }) - .join("\n") - ); - break; - } + case CarbonSvelte.Icons: + case CarbonSvelte.Pictograms: + rewriteImport(s, node, ({ imported, local }) => { + return `import ${local.name} from "${import_name}/lib/${imported.name}.svelte";`; + }); + break; } } - ); + }, + }); - return { code }; - } + s.replace(/^`; - case "style": - return ``; - default: - return content; - } -}; - -type GetAst = (type: ContentType, ast: Ast) => TemplateNode | Style | Script | undefined; - -const getAst: GetAst = (type, ast) => { - switch (type) { - case "script": - return ast.instance; - case "style": - return ast.css; - case "markup": - return ast.html; - default: - return undefined - } -}; - -interface NodeMeta { - start: number; - end: number; -} - -interface NodeElement extends NodeMeta { - type: "Element"; - name: string; - attributes: Array< - NodeMeta & { - type: "Attribute"; - name: string; - value: true | [{ type?: "Text"; raw: string }]; - } - >; - children: Array; -} - -export interface NodeText { - type?: "Text"; - raw: string; -} - -interface NodeImportDeclaration extends NodeMeta { - type: "ImportDeclaration"; - source: { value: string }; - specifiers: Array<{ - local: { name: string }; - imported: { name: string }; - }>; -} - -interface NodeIdentifier extends NodeMeta { - type: "Identifier"; - name: string; -} - -interface NodeDeclaration extends NodeMeta { - type: "Declaration"; - property: string; - value: NodeMeta & { - children: NodeChildString[]; - }; -} - -interface NodeRule extends NodeMeta { - type: "Rule"; - prelude: NodeMeta & { - type: "SelectorList"; - children: Array< - NodeMeta & { - type: "Selector"; - name: "div"; - } - >; - }; - block: NodeMeta & { - children: NodeDeclaration[]; - }; -} - -export interface MediaFeature { - type: "MediaFeature"; - name: "down" | "up" | "bp" | "between" | BreakpointName; - value: - | null - | { name: BreakpointName } - | { type: "Dimension"; value: string; unit: string }; -} - -interface NodeAtRule extends NodeMeta { - type: "Atrule"; - name: string; - prelude: NodeMeta & { - type: string; - children: Array<{ - type: "MediaQueryList"; - children: Array<{ - type: "MediaQuery"; - children: Array< - | MediaFeature - | { - type: "WhiteSpace"; - } - | { - type: "Identifier"; - name: string; // "and" | "lg" | "321px" - } - >; - }>; - }>; - }; - block: NodeMeta & { - type: "Block"; - }; -} - -interface NodeFunction extends NodeMeta { - type: "Function"; - name: string; // "rgba" | "rem" | "em" | "px"; - children: Array<{ - type: "HexColor" | "Operator" | "Number" | "Dimension"; - value: string; - }>; -} - -export interface NodeChildString extends NodeMeta { - type?: string; - value: string; -} - -export type Node = - | NodeElement - | NodeImportDeclaration - | NodeIdentifier - | NodeDeclaration - | NodeRule - | NodeAtRule - | NodeFunction; -export function walkAndReplace( - options: WalkAndReplaceOptions, - replaceWith: ( - enter: { node: Node; parentNode: Node }, - replaceContent: ( - node: Node, - replaceWith: string, - replacee?: string - ) => void, - getContent: (node: NodeMeta) => string - ) => void -) { - let content = options.content; - - const ast = parse(clampContent(options.type, content), { - filename: options.filename, - }); - - let cursor = -1 * OFFSET[options.type].length; - - function replaceContent(node: Node, replaceWith: string, replacee?: string) { - let replaced = - replacee ?? content.slice(node.start + cursor, node.end + cursor); - content = content.replace(replaced, replaceWith); - cursor += replaceWith.length - replaced.length; - } - - function getContent(node: NodeMeta) { - return content.slice(node.start + cursor, node.end + cursor); - } - - walk(getAst(options.type, ast), { - enter(node: Node, parentNode: Node) { - replaceWith.apply(this, [ - { node, parentNode }, - replaceContent, - getContent, - ]); - }, - }); - - return content; -} diff --git a/tests/__snapshots__/optimize-imports.test.ts.snap b/tests/__snapshots__/optimize-imports.test.ts.snap new file mode 100644 index 0000000..7ca30cd --- /dev/null +++ b/tests/__snapshots__/optimize-imports.test.ts.snap @@ -0,0 +1,35 @@ +// Bun Snapshot v1, https://goo.gl/fbAQLP + +exports[`optimizeImports 1`] = ` +" + import Accordion from "carbon-components-svelte/src/Accordion/Accordion.svelte";import AccordionItem from "carbon-components-svelte/src/Accordion/AccordionItem.svelte"; + import Accordion2 from "carbon-components-svelte/src/Accordion/Accordion.svelte"; + import breakpoints from "carbon-components-svelte/src/Breakpoint/breakpoints.js"; + import { invalid } from "carbon-components-svelte"; + + import Add from "carbon-icons-svelte/lib/Add.svelte"; + import Add2 from "carbon-icons-svelte/lib/Add.svelte"; + import Add3 from "carbon-icons-svelte/lib/Add.svelte"; + + import Airplane from "carbon-pictograms-svelte/lib/Airplane.svelte"; + import Airplane2 from "carbon-pictograms-svelte/lib/Airplane.svelte"; + import Airplane3 from "carbon-pictograms-svelte/lib/Airplane.svelte"; + " +`; + +exports[`optimizeImports barrel imports 1`] = ` +" + import Accordion from "carbon-components-svelte/src/Accordion/Accordion.svelte";import AccordionItem from "carbon-components-svelte/src/Accordion/AccordionItem.svelte"; + import Accordion2 from "carbon-components-svelte/src/Accordion/Accordion.svelte"; + import breakpoints from "carbon-components-svelte/src/Breakpoint/breakpoints.js"; + import { invalid } from "carbon-components-svelte"; + + import Add from "carbon-icons-svelte/lib/Add.svelte"; + import Add2 from "carbon-icons-svelte/lib/Add.svelte"; + import Add3 from "carbon-icons-svelte/lib/Add.svelte"; + + import Airplane from "carbon-pictograms-svelte/lib/Airplane.svelte"; + import Airplane2 from "carbon-pictograms-svelte/lib/Airplane.svelte"; + import Airplane3 from "carbon-pictograms-svelte/lib/Airplane.svelte"; + " +`; diff --git a/tests/compare-diff.test.ts b/tests/compare-diff.test.ts new file mode 100644 index 0000000..5409dc5 --- /dev/null +++ b/tests/compare-diff.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, spyOn, test } from "bun:test"; +import { compareDiff } from "../src/plugins/compare-diff"; + +describe("compare-diff", () => { + test("output", () => { + const log = spyOn(console, "log"); + + expect( + compareDiff({ + original_css: "body { color: red; } .bx--btn {}", + optimized_css: "body { color: red; }", + id: "id", + }), + ); + expect(log.mock.calls).toEqual([ + ["\n"], + ["Optimized", "id"], + ["Before:", "0.03 kB"], + ["After: ", "0.02 kB", "(-37.5%)\n"], + ]); + }); +}); diff --git a/tests/e2e/sveltekit/jsconfig.json b/tests/e2e/sveltekit/jsconfig.json deleted file mode 100644 index 0588bc6..0000000 --- a/tests/e2e/sveltekit/jsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "$lib/*": ["src/lib/*"] - } - }, - "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] -} diff --git a/tests/e2e/sveltekit/package.json b/tests/e2e/sveltekit/package.json deleted file mode 100644 index be36e3a..0000000 --- a/tests/e2e/sveltekit/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "private": true, - "type": "module", - "scripts": { - "dev": "svelte-kit dev", - "build": "svelte-kit build", - "preview": "svelte-kit preview" - }, - "devDependencies": { - "carbon-components-svelte": "^0.32.2", - "@sveltejs/adapter-static": "next", - "@sveltejs/kit": "next", - "svelte": "^3.37.0", - "vite": "^2.2.2" - } -} diff --git a/tests/e2e/sveltekit/src/global.d.ts b/tests/e2e/sveltekit/src/global.d.ts deleted file mode 100644 index 79d7d7f..0000000 --- a/tests/e2e/sveltekit/src/global.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -/// -/// diff --git a/tests/e2e/sveltekit/src/routes/__layout.svelte b/tests/e2e/sveltekit/src/routes/__layout.svelte deleted file mode 100644 index 4fa864c..0000000 --- a/tests/e2e/sveltekit/src/routes/__layout.svelte +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tests/e2e/sveltekit/src/routes/index.svelte b/tests/e2e/sveltekit/src/routes/index.svelte deleted file mode 100644 index 99b9e44..0000000 --- a/tests/e2e/sveltekit/src/routes/index.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - -

    Welcome to SvelteKit

    -

    - Visit kit.svelte.dev to read the documentation -

    - -

    Carbon button

    - - - -

    Inline pictograms

    - - - - -{JSON.stringify(data, null, 2)} - - diff --git a/tests/e2e/sveltekit/svelte.config.js b/tests/e2e/sveltekit/svelte.config.js deleted file mode 100644 index 7762837..0000000 --- a/tests/e2e/sveltekit/svelte.config.js +++ /dev/null @@ -1,45 +0,0 @@ -import adapter from "@sveltejs/adapter-static"; -import * as carbon from "carbon-preprocess-svelte"; - -/** @type {import('@sveltejs/kit').Config} */ -export default { - preprocess: [ - ...carbon.presetCarbon(), - carbon.pictograms(), - carbon.icons(), - carbon.collectHeadings({ - afterCollect: (headings, content) => { - const h2 = headings - .filter((heading) => heading.level === 2) - .map((heading) => `
  • ${heading.text}
  • `) - .join("\n"); - - return content.replace("", h2); - }, - }), - carbon.include({ - script: [ - { - content: `const data = {};`, - }, - ], - markup: [ - { - content: "", - }, - { - content: "

    Summary

    ", - behavior: "append", - }, - ], - }), - ], - kit: { - target: "#svelte", - adapter: adapter(), - vite: { - optimizeDeps: { include: ["clipboard-copy"] }, - plugins: [process.env.NODE_ENV === "production" && carbon.optimizeCss()], - }, - }, -}; diff --git a/tests/e2e/sveltekit/yarn.lock b/tests/e2e/sveltekit/yarn.lock deleted file mode 100644 index 240f9ad..0000000 --- a/tests/e2e/sveltekit/yarn.lock +++ /dev/null @@ -1,257 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@rollup/pluginutils@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838" - integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@sveltejs/adapter-static@next": - version "1.0.0-next.11" - resolved "https://registry.yarnpkg.com/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.11.tgz#f7bac062b96644d7a4617a3f44bf6f084b0e0052" - integrity sha512-flqdt6nJxzRPfhYDZbvrw1iFmc87E3rLJ/Rz7K+d4or/slyqHSxH+yOmQ7CJKej5DidliuTpAOvulithuDc0yw== - -"@sveltejs/kit@next": - version "1.0.0-next.109" - resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-1.0.0-next.109.tgz#27eb301f891449d1ac374690eab50b32d2fbda09" - integrity sha512-72iHsgcZTj9WU2VMq/qzMdFidTrSlJ1+KE0Iiw43Gee8TkKi5tMOyeu/f8lWa4HzdHLFZ2CJdvmcL7w3F4SWjg== - dependencies: - "@sveltejs/vite-plugin-svelte" "^1.0.0-next.10" - cheap-watch "^1.0.3" - sade "^1.7.4" - vite "^2.3.1" - -"@sveltejs/vite-plugin-svelte@^1.0.0-next.10": - version "1.0.0-next.10" - resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.10.tgz#15526067ea2edd334420b1e14602e29b370be25e" - integrity sha512-ImvxbhPePm2hWNTKBSA3LHAYGwiEjHjvvgfPLXm4R87sfZ+BMXql9jBmDpzUC/URBLT4BB3Jxos/i523qkJBHg== - dependencies: - "@rollup/pluginutils" "^4.1.0" - chalk "^4.1.1" - debug "^4.3.2" - hash-sum "^2.0.0" - require-relative "^0.8.7" - slash "^4.0.0" - source-map "^0.7.3" - svelte-hmr "^0.14.2" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -carbon-components-svelte@^0.32.2: - version "0.32.2" - resolved "https://registry.yarnpkg.com/carbon-components-svelte/-/carbon-components-svelte-0.32.2.tgz#3b29d3c67836f5336bd00c056a8ed9f8b9e30512" - integrity sha512-hEfUqM2Fen1CqUYh0u+zbWiNZcGJ9at5oX4bDbsFk+kbS5BQzFY8DxGy3bfeWKVKpJvi/qiPdxn4MYOmmDnWHA== - dependencies: - carbon-icons-svelte "^10.27.0" - clipboard-copy "3.2.0" - flatpickr "4.6.9" - -carbon-icons-svelte@^10.27.0: - version "10.28.0" - resolved "https://registry.yarnpkg.com/carbon-icons-svelte/-/carbon-icons-svelte-10.28.0.tgz#812a6eae858d0c9e043067c714910fcfb6249cd2" - integrity sha512-C3K+U2PRy63WHFZme1HQNju89rhVIQmUkfgBrZzcezdutkhXbSPOY+o/MI0B2mDcQ7G9gfhEpqsXET8gBTWfJQ== - -chalk@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -cheap-watch@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cheap-watch/-/cheap-watch-1.0.3.tgz#3c4265718bcf8f1ae08f5e450f9f4693432e028e" - integrity sha512-xC5CruMhLzjPwJ5ecUxGu1uGmwJQykUhqd2QrCrYbwvsFYdRyviu6jG9+pccwDXJR/OpmOTOJ9yLFunVgQu9wg== - -clipboard-copy@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-3.2.0.tgz#3c5b8651d3512dcfad295d77a9eb09e7fac8d5fb" - integrity sha512-vooFaGFL6ulEP1liiaWFBmmfuPm3cY3y7T9eB83ZTnYc/oFeAKsq3NcDrOkBC8XaauEE8zHQwI7k0+JSYiVQSQ== - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -esbuild@^0.11.23: - version "0.11.23" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.23.tgz#c42534f632e165120671d64db67883634333b4b8" - integrity sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -flatpickr@4.6.9: - version "4.6.9" - resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499" - integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw== - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-sum@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== - -is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -mri@^1.1.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" - integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -picomatch@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - -postcss@^8.2.10: - version "8.3.0" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" - integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map-js "^0.6.2" - -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" - integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= - -resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -rollup@^2.38.5: - version "2.48.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.48.0.tgz#fceb01ed771f991f29f7bd2ff7838146e55acb74" - integrity sha512-wl9ZSSSsi5579oscSDYSzGn092tCS076YB+TQrzsGuSfYyJeep8eEWj0eaRjuC5McuMNmcnR8icBqiE/FWNB1A== - optionalDependencies: - fsevents "~2.3.1" - -sade@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" - integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA== - dependencies: - mri "^1.1.0" - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svelte-hmr@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.4.tgz#b7ef2bfeef23916e0e912828c50645ca572ac355" - integrity sha512-kItFF7vqzStckSigoFmMnxJpTOdB9TWnQAW6Js+yAB4277tLbJIIE5KBlGHNmJNpA7MguqidsPB27Uw5UzQPCA== - -svelte@^3.37.0: - version "3.38.2" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.38.2.tgz#55e5c681f793ae349b5cc2fe58e5782af4275ef5" - integrity sha512-q5Dq0/QHh4BLJyEVWGe7Cej5NWs040LWjMbicBGZ+3qpFWJ1YObRmUDZKbbovddLC9WW7THTj3kYbTOFmU9fbg== - -vite@^2.2.2, vite@^2.3.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-2.3.3.tgz#7e88a71abd03985c647789938d784cce0ee3b0fd" - integrity sha512-eO1iwRbn3/BfkNVMNJDeANAFCZ5NobYOFPu7IqfY7DcI7I9nFGjJIZid0EViTmLDGwwSUPmRAq3cRBbO3+DsMA== - dependencies: - esbuild "^0.11.23" - postcss "^8.2.10" - resolve "^1.19.0" - rollup "^2.38.5" - optionalDependencies: - fsevents "~2.3.1" diff --git a/tests/integration/collect-headings.test.ts b/tests/integration/collect-headings.test.ts deleted file mode 100644 index ef447bc..0000000 --- a/tests/integration/collect-headings.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import assert from "assert"; -import { testFiles } from "./utils"; -import { collectHeadings } from "../../src"; - -testFiles({ - name: "collect-headings", - preprocessor: [ - collectHeadings({ - afterCollect: (headings, content) => { - assert.deepStrictEqual(headings, [ - { id: "h1", text: "Heading 1", level: 1 }, - { id: undefined, text: "Heading 2 with missing id", level: 2 }, - { id: "h2-0", text: "Heading 2", level: 2 }, - { id: "h2-1", text: "Heading 2", level: 2 }, - { id: "h3", text: "Heading 3", level: 3 }, - ]); - - const h2 = headings - .filter((heading) => heading.level === 2) - .map((heading) => `
  • ${heading.text}
  • `) - .join("\n"); - - return content.replace("", h2); - }, - }), - ], -}); diff --git a/tests/integration/elements-css-vars.test.ts b/tests/integration/elements-css-vars.test.ts deleted file mode 100644 index e858d58..0000000 --- a/tests/integration/elements-css-vars.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { testFiles } from "./utils"; -import { elements } from "../../src"; - -testFiles({ - name: "elements-css-vars", - preprocessor: [elements({ cssVars: true })], -}); diff --git a/tests/integration/elements.test.ts b/tests/integration/elements.test.ts deleted file mode 100644 index 07bdc10..0000000 --- a/tests/integration/elements.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { testFiles } from "./utils"; -import { elements } from "../../src"; - -testFiles({ - name: "elements", - preprocessor: [elements()], -}); diff --git a/tests/integration/extract-selectors.test.ts b/tests/integration/extract-selectors.test.ts deleted file mode 100644 index 9b2a552..0000000 --- a/tests/integration/extract-selectors.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { testFiles } from "./utils"; -import { extractSelectors } from "../../src"; - -testFiles({ - name: "extract-selectors", - outFileFormat: "json", - onReadFile: (content, filename) => extractSelectors(content, filename), -}); diff --git a/tests/integration/icons.test.ts b/tests/integration/icons.test.ts deleted file mode 100644 index aa9a2a5..0000000 --- a/tests/integration/icons.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { testFiles } from "./utils"; -import { icons } from "../../src"; - -testFiles({ - name: "icons", - preprocessor: [icons()], -}); diff --git a/tests/integration/include.test.ts b/tests/integration/include.test.ts deleted file mode 100644 index 0265fab..0000000 --- a/tests/integration/include.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { testFiles } from "./utils"; -import { include } from "../../src"; - -testFiles({ - name: "include", - preprocessor: [ - include({ - script: [ - { - content: ` - import { CodeSnippet } from "carbon-components-svelte"; - `, - behavior: "append", - }, - ], - markup: [ - { - content: "", - }, - { - content: "

    Text

    ", - behavior: "append", - }, - ], - }), - ], -}); diff --git a/tests/integration/index.ts b/tests/integration/index.ts deleted file mode 100644 index b170aaa..0000000 --- a/tests/integration/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import "./elements.test"; -import "./icons.test"; -import "./optimize-imports.test"; -import "./collect-headings.test"; -import "./pictograms.test"; -import "./extract-selectors.test"; -import "./include.test"; diff --git a/tests/integration/input/collect-headings.test.svelte b/tests/integration/input/collect-headings.test.svelte deleted file mode 100644 index 512db86..0000000 --- a/tests/integration/input/collect-headings.test.svelte +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Heading 1

    -

    Heading 2 with missing id

    -

    Heading 2

    -

    Heading 2

    -

    Heading 3

    -
    diff --git a/tests/integration/input/elements-css-vars.test.svelte b/tests/integration/input/elements-css-vars.test.svelte deleted file mode 100644 index 9cc04f6..0000000 --- a/tests/integration/input/elements-css-vars.test.svelte +++ /dev/null @@ -1,57 +0,0 @@ -

    Heading 1

    -

    Heading 2

    -
    Hello world
    - - diff --git a/tests/integration/input/elements.test.svelte b/tests/integration/input/elements.test.svelte deleted file mode 100644 index f24df56..0000000 --- a/tests/integration/input/elements.test.svelte +++ /dev/null @@ -1,77 +0,0 @@ -

    Heading 1

    -

    Heading 2

    -
    Hello world
    - - diff --git a/tests/integration/input/extract-selectors.test.svelte b/tests/integration/input/extract-selectors.test.svelte deleted file mode 100644 index f04d289..0000000 --- a/tests/integration/input/extract-selectors.test.svelte +++ /dev/null @@ -1,154 +0,0 @@ - - -{#if skeleton} - -{:else if as} - -{:else if href && !disabled} - - - {#if hasIconOnly} - {iconDescription} - {/if} - -{:else} - -{/if} diff --git a/tests/integration/input/icons.test.svelte b/tests/integration/input/icons.test.svelte deleted file mode 100644 index 89af44c..0000000 --- a/tests/integration/input/icons.test.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/tests/integration/input/include.test.svelte b/tests/integration/input/include.test.svelte deleted file mode 100644 index 4feae37..0000000 --- a/tests/integration/input/include.test.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -

    Heading 1

    \ No newline at end of file diff --git a/tests/integration/input/optimize-imports.test.svelte b/tests/integration/input/optimize-imports.test.svelte deleted file mode 100644 index 63d7795..0000000 --- a/tests/integration/input/optimize-imports.test.svelte +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/tests/integration/input/pictograms.test.svelte b/tests/integration/input/pictograms.test.svelte deleted file mode 100644 index 0f8879d..0000000 --- a/tests/integration/input/pictograms.test.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/tests/integration/optimize-imports.test.ts b/tests/integration/optimize-imports.test.ts deleted file mode 100644 index c442f24..0000000 --- a/tests/integration/optimize-imports.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { testFiles } from "./utils"; -import { optimizeImports } from "../../src"; - -testFiles({ - name: "optimize-imports", - preprocessor: [optimizeImports()], -}); diff --git a/tests/integration/output/collect-headings.test.svelte b/tests/integration/output/collect-headings.test.svelte deleted file mode 100644 index 61271fd..0000000 --- a/tests/integration/output/collect-headings.test.svelte +++ /dev/null @@ -1,10 +0,0 @@ -
    -
  • Heading 2 with missing id
  • -
  • Heading 2
  • -
  • Heading 2
  • -

    Heading 1

    -

    Heading 2 with missing id

    -

    Heading 2

    -

    Heading 2

    -

    Heading 3

    -
    diff --git a/tests/integration/output/elements-css-vars.test.svelte b/tests/integration/output/elements-css-vars.test.svelte deleted file mode 100644 index 3de522b..0000000 --- a/tests/integration/output/elements-css-vars.test.svelte +++ /dev/null @@ -1,57 +0,0 @@ -

    Heading 1

    -

    Heading 2

    -
    Hello world
    - - diff --git a/tests/integration/output/elements.test.svelte b/tests/integration/output/elements.test.svelte deleted file mode 100644 index 4b9678f..0000000 --- a/tests/integration/output/elements.test.svelte +++ /dev/null @@ -1,77 +0,0 @@ -

    Heading 1

    -

    Heading 2

    -
    Hello world
    - - diff --git a/tests/integration/output/extract-selectors.test.json b/tests/integration/output/extract-selectors.test.json deleted file mode 100644 index 501e67a..0000000 --- a/tests/integration/output/extract-selectors.test.json +++ /dev/null @@ -1,98 +0,0 @@ -[ - [ - "a", - { - "type": "Element" - } - ], - [ - "span", - { - "type": "Element" - } - ], - [ - ".bx--assistive-text", - { - "type": "Class" - } - ], - [ - ".bx--btn__icon", - { - "type": "Attribute" - } - ], - [ - "button", - { - "type": "Element" - } - ], - [ - ".bx--btn", - { - "type": "Class" - } - ], - [ - ".bx--btn--field", - { - "type": "Class" - } - ], - [ - ".bx--btn--sm", - { - "type": "Class" - } - ], - [ - ".bx--btn--", - { - "type": "Class" - } - ], - [ - ".bx--btn--disabled", - { - "type": "Class" - } - ], - [ - ".bx--btn--icon-only", - { - "type": "Class" - } - ], - [ - ".bx--tooltip__trigger", - { - "type": "Class" - } - ], - [ - ".bx--tooltip--a11y", - { - "type": "Class" - } - ], - [ - ".bx--tooltip--", - { - "type": "Class" - } - ], - [ - ".bx--tooltip--align-", - { - "type": "Class" - } - ], - [ - ".bx--btn--selected", - { - "type": "Class" - } - ] -] \ No newline at end of file diff --git a/tests/integration/output/icons.test.svelte b/tests/integration/output/icons.test.svelte deleted file mode 100644 index 3708cff..0000000 --- a/tests/integration/output/icons.test.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/tests/integration/output/include.test.svelte b/tests/integration/output/include.test.svelte deleted file mode 100644 index 1a609d6..0000000 --- a/tests/integration/output/include.test.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -

    Heading 1

    Text

    \ No newline at end of file diff --git a/tests/integration/output/optimize-imports.test.svelte b/tests/integration/output/optimize-imports.test.svelte deleted file mode 100644 index 7cfb4eb..0000000 --- a/tests/integration/output/optimize-imports.test.svelte +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/tests/integration/output/pictograms.test.svelte b/tests/integration/output/pictograms.test.svelte deleted file mode 100644 index 3bb2c34..0000000 --- a/tests/integration/output/pictograms.test.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/tests/integration/pictograms.test.ts b/tests/integration/pictograms.test.ts deleted file mode 100644 index 0a4872e..0000000 --- a/tests/integration/pictograms.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { testFiles } from "./utils"; -import { pictograms } from "../../src"; - -testFiles({ - name: "pictograms", - preprocessor: [pictograms()], -}); diff --git a/tests/integration/utils.ts b/tests/integration/utils.ts deleted file mode 100644 index dc23ca9..0000000 --- a/tests/integration/utils.ts +++ /dev/null @@ -1,43 +0,0 @@ -import path from "path"; -import { totalist } from "totalist"; -import { preprocess } from "svelte/compiler"; -import { readFile, writeFile } from "../../src/utils"; -import { EXT_SVELTE } from "../../src/constants"; -import { PreprocessorGroup } from "svelte/types/compiler/preprocess"; - -interface TestFilesOptions { - name: string; - outFileFormat?: "json"; - preprocessor?: Partial[]; - onReadFile?: (content: string, filename: string) => string | object; -} - -export async function testFiles(options: TestFilesOptions) { - const input = path.resolve(__dirname, "input"); - const testFile = new RegExp(`^${options.name}.test`); - - await totalist(input, async (file, filename) => { - if (testFile.test(file)) { - let content = await readFile(filename, "utf-8"); - let outfile = filename.replace(/input/, "output"); - let result: string | object = ""; - - if (options.onReadFile) { - result = options.onReadFile.apply(null, [content, filename]); - } else { - const { code } = await preprocess(content, options.preprocessor!, { - filename, - }); - result = code; - } - - if (options.outFileFormat === "json") { - outfile = outfile.replace(EXT_SVELTE, ".json"); - result = JSON.stringify(result, null, 2); - } - - await writeFile(outfile, result as string); - console.info(`[tests:${options.name}] processed ${file}`); - } - }); -} diff --git a/tests/optimize-imports.test.ts b/tests/optimize-imports.test.ts new file mode 100644 index 0000000..b2b42e2 --- /dev/null +++ b/tests/optimize-imports.test.ts @@ -0,0 +1,46 @@ +import { describe, expect, test } from "bun:test"; +import type { Preprocessor, Processed } from "svelte/types/compiler/preprocess"; +import { optimizeImports } from "../src"; + +const preprocess = (options?: Partial[0]>) => { + return ( + optimizeImports().script({ + attributes: {}, + filename: "test.svelte", + content: "", + markup: "", + ...options, + }) as Processed + )?.code; +}; + +describe("optimizeImports", () => { + test("preprocessor is skipped", () => { + expect(preprocess({ filename: undefined })).toBeUndefined(); + expect(preprocess({ filename: "node_modules" })).toBeUndefined(); + expect( + preprocess({ filename: "node_modules/carbon-components-svelte" }), + ).toBeUndefined(); + }); + + test("barrel imports", () => { + expect( + preprocess({ + content: ` + import { Accordion, AccordionItem } from "carbon-components-svelte"; + import { Accordion as Accordion2 } from "carbon-components-svelte"; + import { breakpoints } from "carbon-components-svelte"; + import { invalid } from "carbon-components-svelte"; + + import { Add } from "carbon-icons-svelte"; + import { Add as Add2 } from "carbon-icons-svelte"; + import Add3 from "carbon-icons-svelte/lib/Add.svelte"; + + import { Airplane } from "carbon-pictograms-svelte"; + import { Airplane as Airplane2 } from "carbon-pictograms-svelte"; + import Airplane3 from "carbon-pictograms-svelte/lib/Airplane.svelte"; + `, + }), + ).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/api.test.ts b/tests/unit/api.test.ts deleted file mode 100644 index 998162f..0000000 --- a/tests/unit/api.test.ts +++ /dev/null @@ -1,12 +0,0 @@ -import assert from "assert"; -import * as api from "../../src"; - -assert.strictEqual(typeof api.collectHeadings, "function"); -assert.strictEqual(typeof api.elements, "function"); -assert.strictEqual(typeof api.extractSelectors, "function"); -assert.strictEqual(typeof api.icons, "function"); -assert.strictEqual(typeof api.optimizeCss, "function"); -assert.strictEqual(typeof api.optimizeImports, "function"); -assert.strictEqual(typeof api.optimizeCarbonImports, "function"); -assert.strictEqual(typeof api.pictograms, "function"); -assert.strictEqual(typeof api.presetCarbon, "function"); diff --git a/tests/unit/elements.test.ts b/tests/unit/elements.test.ts deleted file mode 100644 index 5d8b604..0000000 --- a/tests/unit/elements.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import assert from "assert"; -import { elements } from "../../src/carbon-elements"; - -assert.strictEqual( - elements.tokens["expressive-heading-03"].breakpoints.length, - 2 -); diff --git a/tests/unit/index.ts b/tests/unit/index.ts deleted file mode 100644 index d34359f..0000000 --- a/tests/unit/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import "./type.test"; -import "./elements.test"; -import "./api.test"; diff --git a/tests/unit/type.test.ts b/tests/unit/type.test.ts deleted file mode 100644 index 98f7efe..0000000 --- a/tests/unit/type.test.ts +++ /dev/null @@ -1,13 +0,0 @@ -import assert from "assert"; -import * as build from "../../src/build"; - -const result = build.type.serializeTypeStyles({ - fontSize: 4, - breakpoints: { md: { fontSize: 2 } }, -}); - -assert.strictEqual(result.css, "font-size: 4;"); -assert.deepStrictEqual(result.breakpoints[0], { - css: "font-size: 2", - mediaQuery: "@media (min-width: 42rem)", -}); diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..2702017 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "dist", + "target": "ES6", + "module": "CommonJS" + }, + "include": ["src/**/*"] +} diff --git a/tsconfig.json b/tsconfig.json index d48fd38..6cacb39 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,12 @@ { "compilerOptions": { - "allowJs": true, - "declaration": true, - "emitDeclarationOnly": true, "esModuleInterop": true, - "downlevelIteration": true, - "lib": ["ESNext", "DOM.Iterable"], - "moduleResolution": "Node", - "outDir": "dist", + "target": "ESNext", + "module": "ESNext", + "lib": ["ESNext"], + "moduleResolution": "node", "skipLibCheck": true, "strict": true }, - "include": ["src/**/*"] + "include": ["scripts/**/*", "src/**/*", "tests/**/*"] } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 7edca1a..0000000 --- a/yarn.lock +++ /dev/null @@ -1,959 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@carbon/colors@^10.22.0": - version "10.22.0" - resolved "https://registry.yarnpkg.com/@carbon/colors/-/colors-10.22.0.tgz#a8cb6c9ee23ab6f49173bb7e71acfe41a1ee9d9d" - integrity sha512-09QWa1EmoO6VYJhe5Wj2MVJ4wbQY+fKcnVFFJ0DHkc5K4Pw0K6Kt7CoVKgRDl+pzr1gfcdNDCnG8O5F4UQFb3w== - -"@carbon/elements@10.31.0": - version "10.31.0" - resolved "https://registry.yarnpkg.com/@carbon/elements/-/elements-10.31.0.tgz#b89b505a2ebfbfd32df301599ebb8d07d7add902" - integrity sha512-0lOsiAEc8ag3fYdKp4KvbSvJpYYG5bjliMR0k7pNthKVC0u5mZoTxJtHyJMo9y5TDbq7xAL0TFJhV93XsIIvQA== - dependencies: - "@carbon/colors" "^10.22.0" - "@carbon/grid" "^10.24.0" - "@carbon/icons" "^10.29.0" - "@carbon/import-once" "^10.6.0" - "@carbon/layout" "^10.22.0" - "@carbon/motion" "^10.15.0" - "@carbon/themes" "^10.31.0" - "@carbon/type" "^10.25.0" - -"@carbon/grid@^10.24.0": - version "10.24.0" - resolved "https://registry.yarnpkg.com/@carbon/grid/-/grid-10.24.0.tgz#2d1ad3fad152bf0462eeb4dd8112f5e48314ce64" - integrity sha512-ZZFHbQQi9wpwq+0PtvEF+1tq0RoS3vghPRnoxKH/MbvbD9VQg9V8az+FKRIwQVkUtxUxAw+CBcMTP/FiLkXEwg== - dependencies: - "@carbon/import-once" "^10.6.0" - "@carbon/layout" "^10.22.0" - -"@carbon/icon-helpers@^10.16.0": - version "10.16.0" - resolved "https://registry.yarnpkg.com/@carbon/icon-helpers/-/icon-helpers-10.16.0.tgz#66f20b9bba49c6ec4c956b8e9e7ec65bdf40da8f" - integrity sha512-cN1sM0xvlDEN1pYPDWoHcikGysCTnfA49/12H92dBkn14fpRmB87shIe3hzKlW6h4QP7CrnF0hB5SCkA2KC7Ng== - -"@carbon/icons@^10.29.0": - version "10.29.0" - resolved "https://registry.yarnpkg.com/@carbon/icons/-/icons-10.29.0.tgz#98d33c721b7621614bbfdcf5862fb389f9dfc999" - integrity sha512-HMlQTUfCI50UDBUHKnk5DvTCypEQS3fzJQDi5anbzf7zcvljnkrdZy7jT42qAYAn6oV04TCWEH5CSshm4Nej9A== - -"@carbon/icons@^11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@carbon/icons/-/icons-11.0.1.tgz#a23e7716ce10b1af5a3cc6b4d162153351aa9ea9" - integrity sha512-mS/cO6dGbdNZuWBmYKfV89p+HwCk0u2Bf53lzRX5Sn2Bahel4T0Q04beXKMpncP3wBjCpgww7usJ70kl7CbjRw== - -"@carbon/import-once@^10.6.0": - version "10.6.0" - resolved "https://registry.yarnpkg.com/@carbon/import-once/-/import-once-10.6.0.tgz#a8fb846d9dc3eea9d45d9131a235e898d0f8db1e" - integrity sha512-vi0lnmZot9J5uW2p9chtyLBwe3nCTY4HrDWuglLOZVOHu7dbLQiRjD/r3uOjB4lr5qduRwk2hblBXKBhpVDBpg== - -"@carbon/layout@^10.22.0": - version "10.22.0" - resolved "https://registry.yarnpkg.com/@carbon/layout/-/layout-10.22.0.tgz#470833b5862be984213658c7f06f83e4c8713959" - integrity sha512-XJ7FZzNbRtGrgC4WK7G5RF9NvlscHoW3xg0DAZZxxumqcR3t7E9ARF78aNVjsATUA7+dEN54yQ0TM7WRSTTXlg== - -"@carbon/motion@^10.15.0": - version "10.15.0" - resolved "https://registry.yarnpkg.com/@carbon/motion/-/motion-10.15.0.tgz#ddf38a5d4bf594abf0adb9302bb1101c5ae93346" - integrity sha512-hyGUNm+5TB9NlXgtbAmXlVN7ivjdBxoV8h/f+461eQ5BLiu/MibcLtTM3zeIypUYxd3PUNAx9DcMN12t/J3EpA== - -"@carbon/pictograms@^12.0.2": - version "12.0.2" - resolved "https://registry.yarnpkg.com/@carbon/pictograms/-/pictograms-12.0.2.tgz#5f561f72de870e952b0755e6fcae3f5214e39efa" - integrity sha512-vxiNC9kZkNAFMJIMKZtlNVYFuVIx6+27kqY+SJcoH9DhkGem8B6TRUAbQKp5YTjlDRnY/WgJ38tNq79nVxMIZw== - -"@carbon/themes@^10.31.0": - version "10.31.0" - resolved "https://registry.yarnpkg.com/@carbon/themes/-/themes-10.31.0.tgz#bd193fa3932c8eea09dbf870a7e8324d4177270a" - integrity sha512-OzrS6vOuuN7+BbFQ/UdfGZUhDYHtqBJHeSPBX5P0hU5YZOd7HiWCu1uDAZq4M6JtcfgC5RxL777flSXgdoFr4A== - dependencies: - "@carbon/colors" "^10.22.0" - "@carbon/layout" "^10.22.0" - "@carbon/type" "^10.25.0" - color "^3.1.2" - -"@carbon/type@^10.25.0": - version "10.25.0" - resolved "https://registry.yarnpkg.com/@carbon/type/-/type-10.25.0.tgz#23e3ff0c2829912335ac17d09e2dbd609707c30e" - integrity sha512-lsYQ2gTUubD7ZVPa+SNrjZe0zZzdd8069jooaNXRv2i18/QQeBcDAvogOFRfRA/8NDMQ1Q9jlnlQdkLcijoZDg== - dependencies: - "@carbon/import-once" "^10.6.0" - "@carbon/layout" "^10.22.0" - -"@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" - integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== - -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" - integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== - dependencies: - "@cspotcode/source-map-consumer" "0.8.0" - -"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== - -"@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== - -"@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== - -"@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== - -"@types/carbon__elements@10.31.0": - version "10.31.0" - resolved "https://registry.yarnpkg.com/@types/carbon__elements/-/carbon__elements-10.31.0.tgz#6e3ea3b0c830e0c3a8d225b4e7390a386ced64e2" - integrity sha512-oA/jW/CmalR1xNePwfxUG6bpTniPh4yrhh1KrrFW9/lAsmsXs8+rlbBwNQm2ytjLK0+CpH7zOFBITo3HJ4exLg== - -"@types/carbon__icon-helpers@^10.7.1": - version "10.7.1" - resolved "https://registry.yarnpkg.com/@types/carbon__icon-helpers/-/carbon__icon-helpers-10.7.1.tgz#f1c4d637308d87f83906aea4c7c2399592e408ef" - integrity sha512-At07tODyK5f1tsPIg8ziZm3SHpHbfjh8YdyXLNbD9RdUa416EgUEFa6Xlxb9lgt2YHtRS/qLmy+ysbGx+zMgQg== - -"@types/node@^15.0.2": - version "15.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" - integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== - -"@types/pug@^2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" - integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-crc32@^0.2.5: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -carbon-components-svelte@^0.75.1: - version "0.75.1" - resolved "https://registry.yarnpkg.com/carbon-components-svelte/-/carbon-components-svelte-0.75.1.tgz#3cb70fe57869d220303deda52188fbcf38ede20e" - integrity sha512-q1aCDbUW9U8NJMLj/FesL9E2ymqWONWlGDEKoawRtVK7XvsD5ynK1amu2l3cs5mFvagLnkVAcSmyzyTAaie5ug== - dependencies: - flatpickr "4.6.9" - -chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" - -commander@^8.0.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -detect-indent@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@^3.1.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= - -esbuild@^0.11.19: - version "0.11.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.19.tgz#59289d9c6ee3f45d0db289a662c31473da25c199" - integrity sha512-X2h8UThAwKLxmc1OChHVegIScphS/qU9cUB5vCEV2T0A024E8Ptpg9xssXXcs+j1uEgXrDJZuVRzx2JsmGzq7A== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -flatpickr@4.6.9: - version "4.6.9" - resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499" - integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -glob@^7.1.3, glob@^7.1.7: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -graceful-fs@^4.1.2: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -graceful-fs@^4.1.3: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -nanoid@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" - integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -npm-run-all@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-parse@>=1.0.7, path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -postcss-selector-parser@^6.0.6: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss@^8.3.5: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== - dependencies: - nanoid "^3.3.1" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prettier-plugin-svelte@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz#ecfa4fe824238a4466a3497df1a96d15cf43cabb" - integrity sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA== - -prettier@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== - -purgecss@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.1.3.tgz#683f6a133c8c4de7aa82fe2746d1393b214918f7" - integrity sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw== - dependencies: - commander "^8.0.0" - glob "^7.1.7" - postcss "^8.3.5" - postcss-selector-parser "^6.0.6" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -resolve@^1.10.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -rimraf@^2.5.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rollup@^2.70.2: - version "2.70.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.2.tgz#808d206a8851628a065097b7ba2053bd83ba0c0d" - integrity sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg== - optionalDependencies: - fsevents "~2.3.2" - -sander@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" - integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= - dependencies: - es6-promise "^3.1.2" - graceful-fs "^4.1.3" - mkdirp "^0.5.1" - rimraf "^2.5.2" - -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sorcery@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.11.0.tgz#310c80ee993433854bb55bb9aa4003acd147fca8" - integrity sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.14" - buffer-crc32 "^0.2.5" - minimist "^1.2.0" - sander "^0.5.0" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - -string.prototype.padend@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" - integrity sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -svelte-preprocess@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz#2123898e079a074f7f4ef1799e10e037f5bcc55b" - integrity sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw== - dependencies: - "@types/pug" "^2.0.6" - detect-indent "^6.1.0" - magic-string "^0.27.0" - sorcery "^0.11.0" - strip-indent "^3.0.0" - -svelte@^3.47.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.47.0.tgz#ba46fe4aea99fc650d6939c215cd4694f5325a19" - integrity sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q== - -totalist@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.0.tgz#4ef9c58c5f095255cdc3ff2a0a55091c57a3a1bd" - integrity sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw== - -ts-node@^10.7.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" - integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== - dependencies: - "@cspotcode/source-map-support" "0.7.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.0" - yn "3.1.1" - -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -unbox-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache-lib@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" - integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==