From 50bae14bf38c8a971ad1727cb8e827c86da06772 Mon Sep 17 00:00:00 2001 From: mattcompiles Date: Tue, 7 Sep 2021 14:40:47 +1000 Subject: [PATCH] Cleanup adapter after processing styles (#343) --- .changeset/few-lions-deny.md | 6 + .github/workflows/screenshots.yml | 36 - .github/workflows/validate.yml | 31 + packages/css/src/adapter.ts | 29 +- packages/integration/package.json | 1 - .../integration/src/processVanillaFile.ts | 28 +- test-helpers/package.json | 4 + test-helpers/src/getStylesheet.ts | 12 +- test-helpers/src/startFixture/esbuild.ts | 1 + test-helpers/src/startFixture/webpack.ts | 1 + .../__snapshots__/esbuild.test.ts.snap | 21 - .../__snapshots__/features.test.ts.snap | 166 +++++ .../__snapshots__/sprinkles.test.ts.snap | 442 ++++++++++++ .../__snapshots__/themed.test.ts.snap | 265 +++++++ .../__snapshots__/unused-modules.test.ts.snap | 64 ++ .../__snapshots__/vite.test.ts.snap | 9 - .../__snapshots__/webpack.test.ts.snap | 315 -------- tests/stylesheets/esbuild.test.ts | 28 - tests/stylesheets/features.test.ts | 32 + tests/stylesheets/sprinkles.test.ts | 32 + tests/stylesheets/themed.test.ts | 32 + tests/stylesheets/unused-modules.test.ts | 32 + tests/stylesheets/vite.test.ts | 30 - tests/stylesheets/webpack.test.ts | 28 - yarn.lock | 678 +++++++++++++++++- 25 files changed, 1835 insertions(+), 488 deletions(-) create mode 100644 .changeset/few-lions-deny.md delete mode 100644 .github/workflows/screenshots.yml delete mode 100644 tests/stylesheets/__snapshots__/esbuild.test.ts.snap create mode 100644 tests/stylesheets/__snapshots__/features.test.ts.snap create mode 100644 tests/stylesheets/__snapshots__/sprinkles.test.ts.snap create mode 100644 tests/stylesheets/__snapshots__/themed.test.ts.snap create mode 100644 tests/stylesheets/__snapshots__/unused-modules.test.ts.snap delete mode 100644 tests/stylesheets/__snapshots__/vite.test.ts.snap delete mode 100644 tests/stylesheets/__snapshots__/webpack.test.ts.snap delete mode 100644 tests/stylesheets/esbuild.test.ts create mode 100644 tests/stylesheets/features.test.ts create mode 100644 tests/stylesheets/sprinkles.test.ts create mode 100644 tests/stylesheets/themed.test.ts create mode 100644 tests/stylesheets/unused-modules.test.ts delete mode 100644 tests/stylesheets/vite.test.ts delete mode 100644 tests/stylesheets/webpack.test.ts diff --git a/.changeset/few-lions-deny.md b/.changeset/few-lions-deny.md new file mode 100644 index 000000000..3b4f0bb1e --- /dev/null +++ b/.changeset/few-lions-deny.md @@ -0,0 +1,6 @@ +--- +'@vanilla-extract/css': patch +'@vanilla-extract/integration': patch +--- + +Cleanup adapter after processing styles diff --git a/.github/workflows/screenshots.yml b/.github/workflows/screenshots.yml deleted file mode 100644 index 8a0d7c6b5..000000000 --- a/.github/workflows/screenshots.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Screenshots - -on: [push, pull_request] - -jobs: - test: - name: Lint & Test - runs-on: macos-latest - env: - CI: true - steps: - - name: Checkout Repo - uses: actions/checkout@main - - - name: Setup Node.js 14.x - uses: actions/setup-node@main - with: - node-version: 14.x - - - name: Install Dependencies - run: yarn --immutable - - - name: Install Browsers - run: yarn playwright install chromium - - - name: Build packages - run: yarn build - - - name: Screenshot tests - run: yarn test:playwright - - - uses: actions/upload-artifact@v2 - if: failure() - with: - name: test-results - path: test-results/ diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 7074e774e..c443d11f4 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -28,3 +28,34 @@ jobs: - name: Test run: yarn test:jest + playwright: + name: Playwright tests + runs-on: macos-latest + env: + CI: true + steps: + - name: Checkout Repo + uses: actions/checkout@main + + - name: Setup Node.js 14.x + uses: actions/setup-node@main + with: + node-version: 14.x + + - name: Install Dependencies + run: yarn --immutable + + - name: Install Browsers + run: yarn playwright install chromium + + - name: Build packages + run: yarn build + + - name: Screenshot tests + run: yarn test:playwright + + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: test-results + path: test-results/ diff --git a/packages/css/src/adapter.ts b/packages/css/src/adapter.ts index 5143eb96e..ff5eee427 100644 --- a/packages/css/src/adapter.ts +++ b/packages/css/src/adapter.ts @@ -9,7 +9,15 @@ export const mockAdapter: Adapter = { getIdentOption: () => 'debug', }; -let adapter: Adapter = mockAdapter; +const adapterStack: Array = [mockAdapter]; + +const currentAdapter = () => { + if (adapterStack.length < 1) { + throw new Error('No adapter configured'); + } + + return adapterStack[adapterStack.length - 1]; +}; let hasConfiguredAdapter = false; @@ -21,34 +29,41 @@ export const setAdapterIfNotSet = (newAdapter: Adapter) => { export const setAdapter = (newAdapter: Adapter) => { hasConfiguredAdapter = true; - adapter = newAdapter; + + adapterStack.push(newAdapter); +}; + +export const removeAdapter = () => { + adapterStack.pop(); }; export const appendCss: Adapter['appendCss'] = (...props) => { - return adapter.appendCss(...props); + return currentAdapter().appendCss(...props); }; export const registerClassName: Adapter['registerClassName'] = (...props) => { - return adapter.registerClassName(...props); + return currentAdapter().registerClassName(...props); }; export const registerComposition: Adapter['registerComposition'] = ( ...props ) => { - return adapter.registerComposition(...props); + return currentAdapter().registerComposition(...props); }; export const markCompositionUsed: Adapter['markCompositionUsed'] = ( ...props ) => { - return adapter.markCompositionUsed(...props); + return currentAdapter().markCompositionUsed(...props); }; export const onEndFileScope: Adapter['onEndFileScope'] = (...props) => { - return adapter.onEndFileScope(...props); + return currentAdapter().onEndFileScope(...props); }; export const getIdentOption: Adapter['getIdentOption'] = (...props) => { + const adapter = currentAdapter(); + // Backwards compatibility with old versions of the integration package if (!('getIdentOption' in adapter)) { return process.env.NODE_ENV === 'production' ? 'short' : 'debug'; diff --git a/packages/integration/package.json b/packages/integration/package.json index 0bcfc110f..7a3679c8c 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -3,7 +3,6 @@ "version": "1.2.0", "description": "Zero-runtime Stylesheets-in-TypeScript", "main": "dist/vanilla-extract-integration.cjs.js", - "module": "dist/vanilla-extract-integration.esm.js", "files": [ "/dist" ], diff --git a/packages/integration/src/processVanillaFile.ts b/packages/integration/src/processVanillaFile.ts index 6be072375..5054e2313 100644 --- a/packages/integration/src/processVanillaFile.ts +++ b/packages/integration/src/processVanillaFile.ts @@ -1,5 +1,4 @@ import { FileScope, Adapter } from '@vanilla-extract/css'; -import { setAdapter } from '@vanilla-extract/css/adapter'; import { transformCss } from '@vanilla-extract/css/transformCss'; // @ts-expect-error import evalCode from 'eval'; @@ -75,21 +74,22 @@ export function processVanillaFile({ getIdentOption: () => identOption, }; - setAdapter(cssAdapter); - const currentNodeEnv = process.env.NODE_ENV; - const sourceWithBoundLoaderInstance = `require('@vanilla-extract/css/adapter').setAdapter(__adapter__);${source};`; - // Vite sometimes modifies NODE_ENV which causes different versions (e.g. dev/prod) of vanilla packages to be loaded // This can cause CSS to be bound to the wrong instance, resulting in no CSS output // To get around this we set the NODE_ENV back to the original value ONLY during eval process.env.NODE_ENV = originalNodeEnv; + const adapterBoundSource = ` + require('@vanilla-extract/css/adapter').setAdapter(__adapter__); + ${source} + `; + const evalResult = evalCode( - sourceWithBoundLoaderInstance, + adapterBoundSource, filePath, - { console, __adapter__: cssAdapter, process }, + { console, process, __adapter__: cssAdapter }, true, ); @@ -119,6 +119,20 @@ export function processVanillaFile({ cssImports.push(virtualCssFilePath); } + // We run this code inside eval as jest seems to create a difrerent instance of the adapter file + // for requires executed within the eval and all CSS can be lost. + evalCode( + `const { removeAdapter } = require('@vanilla-extract/css/adapter'); + // Backwards compat with older versions of @vanilla-extract/css + if (removeAdapter) { + removeAdapter(); + } + `, + filePath, + { console, process }, + true, + ); + const unusedCompositions = composedClassLists .filter(({ identifier }) => !usedCompositions.has(identifier)) .map(({ identifier }) => identifier); diff --git a/test-helpers/package.json b/test-helpers/package.json index ad20bcb0b..7ce390b09 100644 --- a/test-helpers/package.json +++ b/test-helpers/package.json @@ -15,12 +15,15 @@ "@vanilla-extract/webpack-plugin": "*", "babel-loader": "^8.2.2", "css-loader": "^5.2.4", + "cssnano": "^5.0.8", "got": "^11.8.2", "html-webpack-plugin": "^5.3.1", "mini-css-extract-plugin": "^1.5.1", "minimist": "^1.2.5", "path-browserify": "^1.0.1", "portfinder": "^1.0.28", + "postcss": "^8.3.6", + "prettier": "^2.3.2", "serve-handler": "^6.1.3", "snowpack": "^3.5.1", "style-loader": "^2.0.0", @@ -31,6 +34,7 @@ }, "devDependencies": { "@types/minimist": "^1", + "@types/prettier": "^2", "@types/serve-handler": "^6" } } diff --git a/test-helpers/src/getStylesheet.ts b/test-helpers/src/getStylesheet.ts index 39535c3b8..b16c7cf33 100644 --- a/test-helpers/src/getStylesheet.ts +++ b/test-helpers/src/getStylesheet.ts @@ -1,9 +1,19 @@ +import postcss from 'postcss'; +import prettier from 'prettier'; +// @ts-expect-error +import cssnano from 'cssnano'; import got from 'got'; export const stylesheetName = 'main.css'; export async function getStylesheet(url: string, stylesheetName = 'main.css') { const response = await got(`${url}/${stylesheetName}`); + const { css } = await postcss([cssnano({ preset: 'default' })]).process( + response.body, + { + from: undefined, + }, + ); - return response.body; + return prettier.format(css, { parser: 'css' }); } diff --git a/test-helpers/src/startFixture/esbuild.ts b/test-helpers/src/startFixture/esbuild.ts index e93f7ac13..55d33399a 100644 --- a/test-helpers/src/startFixture/esbuild.ts +++ b/test-helpers/src/startFixture/esbuild.ts @@ -65,6 +65,7 @@ export const startEsbuildFixture = async ( return { type: 'esbuild', url: `http://localhost:${port}`, + stylesheet: 'index.css', close: () => { server.stop(); diff --git a/test-helpers/src/startFixture/webpack.ts b/test-helpers/src/startFixture/webpack.ts index e0e857bb2..5da3819f1 100644 --- a/test-helpers/src/startFixture/webpack.ts +++ b/test-helpers/src/startFixture/webpack.ts @@ -110,6 +110,7 @@ export const startWebpackFixture = ( }), ), type, + stylesheet: 'main.css', }); }, }); diff --git a/tests/stylesheets/__snapshots__/esbuild.test.ts.snap b/tests/stylesheets/__snapshots__/esbuild.test.ts.snap deleted file mode 100644 index 1ee3fe531..000000000 --- a/tests/stylesheets/__snapshots__/esbuild.test.ts.snap +++ /dev/null @@ -1,21 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`esbuild - features should create valid stylesheet 1`] = ` -"._1o6ek500{height:50px}._1o6ek500:after{display:block;content:\\"Below 700px\\"}._1o6ek501{background-color:#b0e0e6}._1o6ek501:hover{background-color:#708090}._1o6ek502{background-color:#b0e0e6}._1o6ek502:hover{background-color:#708090}._1o6ek503{background-color:#b0e0e6}._1o6ek503:hover{background-color:#708090}._1o6ek505{color:#fff}._1o6ek506{background-color:#000}body ._1o6ek507{font-size:24px}._1o6ek508{color:#fff}._1o6ek509{background-color:#000}body ._1o6ek50a{font-size:24px}@media screen and (min-width: 700px){._1o6ek500{color:plum}._1o6ek500:after{content:\\"Above 700px\\"}} -" -`; - -exports[`esbuild - sprinkles should create valid stylesheet 1`] = ` -"._1j5zl922{display:flex}._1j5zl926{display:none}._1j5zl92a{display:block}._1j5zl92e{padding-top:10px}._1j5zl92i{padding-top:20px}._1j5zl92m{--_1j5zl920: 1;background:rgba(255,0,0,var(--_1j5zl920))}._1j5zl92q{--_1j5zl920: 1}._1j5zl92u{--_1j5zl920: .1}._1j5zl92y{--_1j5zl920: .2}._1j5zl9212{--_1j5zl920: .3}._1j5zl9216{--_1j5zl921: 1;color:rgba(255,0,0,var(--_1j5zl921))}._1j5zl9217{--_1j5zl921: 1}._1j5zl9218{--_1j5zl921: .8}body>._1j5zl921a{background:red}@media screen and (min-width: 768px){._1j5zl923{display:flex}._1j5zl927{display:none}._1j5zl92b{display:block}._1j5zl92f{padding-top:10px}._1j5zl92j{padding-top:20px}._1j5zl92n{--_1j5zl920: 1;background:rgba(255,0,0,var(--_1j5zl920))}._1j5zl92r{--_1j5zl920: 1}._1j5zl92v{--_1j5zl920: .1}._1j5zl92z{--_1j5zl920: .2}._1j5zl9213{--_1j5zl920: .3}}@media screen and (min-width: 1024px){._1j5zl924{display:flex}._1j5zl928{display:none}._1j5zl92c{display:block}._1j5zl92g{padding-top:10px}._1j5zl92k{padding-top:20px}._1j5zl92o{--_1j5zl920: 1;background:rgba(255,0,0,var(--_1j5zl920))}._1j5zl92s{--_1j5zl920: 1}._1j5zl92w{--_1j5zl920: .1}._1j5zl9210{--_1j5zl920: .2}._1j5zl9214{--_1j5zl920: .3}@supports not (display: grid){[data-dark-mode] ._1j5zl925{display:flex}[data-dark-mode] ._1j5zl929{display:none}[data-dark-mode] ._1j5zl92d{display:block}[data-dark-mode] ._1j5zl92h{padding-top:10px}[data-dark-mode] ._1j5zl92l{padding-top:20px}[data-dark-mode] ._1j5zl92p{--_1j5zl920: 1;background:rgba(255,0,0,var(--_1j5zl920))}[data-dark-mode] ._1j5zl92t{--_1j5zl920: 1}[data-dark-mode] ._1j5zl92x{--_1j5zl920: .1}[data-dark-mode] ._1j5zl9211{--_1j5zl920: .2}[data-dark-mode] ._1j5zl9215{--_1j5zl920: .3}}} -" -`; - -exports[`esbuild - themed should create valid stylesheet 1`] = ` -":root,.cvta170{--cvta171: blue;--cvta172: white;--cvta173: 4px;--cvta174: 8px;--cvta175: 12px}.cvta176{--cvta171: green;--cvta172: white;--cvta173: 8px;--cvta174: 12px;--cvta175: 16px}.cvta177{--cvta171: pink;--cvta172: purple;--cvta173: 6px;--cvta174: 12px;--cvta175: 18px}@media screen and (min-width: 768px){.cvta177{--cvta171: purple;--cvta172: pink}}._4dtfen0{box-shadow:0 0 5px red}body{background-color:#87ceeb}@font-face{src:local(\\"Impact\\");font-family:\\"jteyb10\\"}@font-face{src:local(\\"Comic Sans MS\\");font-family:MyGlobalComicSans}.jteyb11{display:flex;flex-direction:column;gap:var(--cvta174);padding:var(--cvta175)}.jteyb12{z-index:1;position:relative}.jteyb13{font-family:\\"jteyb10\\";background-color:var(--cvta171, \\"THIS FALLBACK VALUE SHOULD NEVER BE USED\\");color:var(--cvta172);border-radius:9999px}.cvta176 .cvta170 .jteyb11 .jteyb13{font-family:MyGlobalComicSans;outline:5px solid red}body .jteyb12:after{content:\\"I am content\\"}html .jteyb16{opacity:var(--jteyb14, .5)}html .jteyb17{opacity:var(--jteyb14, var(--jteyb15, .25))}@media only screen and (min-width: 500px){.jteyb11{border:1px solid var(--cvta171)}.jteyb13{padding:var(--cvta173)}}@media only screen and (min-width: 1000px){.jteyb13{padding:var(--cvta174)}} -" -`; - -exports[`esbuild - unused-modules should create valid stylesheet 1`] = ` -"body{background-color:#e6e6fa}body{border:5px solid black}.fbihc60{display:flex}._36o3zb0{height:100px;width:100px;background:green}._1j78ztq0{box-sizing:border-box} -" -`; diff --git a/tests/stylesheets/__snapshots__/features.test.ts.snap b/tests/stylesheets/__snapshots__/features.test.ts.snap new file mode 100644 index 000000000..1aac4bf9e --- /dev/null +++ b/tests/stylesheets/__snapshots__/features.test.ts.snap @@ -0,0 +1,166 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`features - esbuild should create valid stylesheet 1`] = ` +"._1o6ek500 { + height: 50px; +} +._1o6ek500:after { + content: \\"Below 700px\\"; + display: block; +} +._1o6ek501 { + background-color: #b0e0e6; +} +._1o6ek501:hover { + background-color: #708090; +} +._1o6ek502 { + background-color: #b0e0e6; +} +._1o6ek502:hover { + background-color: #708090; +} +._1o6ek503 { + background-color: #b0e0e6; +} +._1o6ek503:hover { + background-color: #708090; +} +._1o6ek505 { + color: #fff; +} +._1o6ek506 { + background-color: #000; +} +body ._1o6ek507 { + font-size: 24px; +} +._1o6ek508 { + color: #fff; +} +._1o6ek509 { + background-color: #000; +} +body ._1o6ek50a { + font-size: 24px; +} +@media screen and (min-width: 700px) { + ._1o6ek500 { + color: plum; + } + ._1o6ek500:after { + content: \\"Above 700px\\"; + } +} +" +`; + +exports[`features - mini-css-extract should create valid stylesheet 1`] = ` +"._87f2ru0 { + height: 50px; +} +._87f2ru0:after { + content: \\"Below 700px\\"; + display: block; +} +._87f2ru1 { + background-color: #b0e0e6; +} +._87f2ru1:hover { + background-color: #708090; +} +._87f2ru2 { + background-color: #b0e0e6; +} +._87f2ru2:hover { + background-color: #708090; +} +._87f2ru3 { + background-color: #b0e0e6; +} +._87f2ru3:hover { + background-color: #708090; +} +._87f2ru5 { + color: #fff; +} +._87f2ru6 { + background-color: #000; +} +body ._87f2ru7 { + font-size: 24px; +} +._87f2ru8 { + color: #fff; +} +._87f2ru9 { + background-color: #000; +} +body ._87f2rua { + font-size: 24px; +} +@media screen and (min-width: 700px) { + ._87f2ru0 { + color: plum; + } + ._87f2ru0:after { + content: \\"Above 700px\\"; + } +} +" +`; + +exports[`features - vite should create valid stylesheet 1`] = ` +"._1o6ek500 { + height: 50px; +} +._1o6ek500:after { + content: \\"Below 700px\\"; + display: block; +} +._1o6ek501 { + background-color: #b0e0e6; +} +._1o6ek501:hover { + background-color: #708090; +} +._1o6ek502 { + background-color: #b0e0e6; +} +._1o6ek502:hover { + background-color: #708090; +} +._1o6ek503 { + background-color: #b0e0e6; +} +._1o6ek503:hover { + background-color: #708090; +} +._1o6ek505 { + color: #fff; +} +._1o6ek506 { + background-color: #000; +} +body ._1o6ek507 { + font-size: 24px; +} +._1o6ek508 { + color: #fff; +} +._1o6ek509 { + background-color: #000; +} +body ._1o6ek50a { + font-size: 24px; +} +@media screen and (min-width: 700px) { + ._1o6ek500 { + color: plum; + } + ._1o6ek500:after { + content: \\"Above 700px\\"; + } +} +" +`; diff --git a/tests/stylesheets/__snapshots__/sprinkles.test.ts.snap b/tests/stylesheets/__snapshots__/sprinkles.test.ts.snap new file mode 100644 index 000000000..87378ea79 --- /dev/null +++ b/tests/stylesheets/__snapshots__/sprinkles.test.ts.snap @@ -0,0 +1,442 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`features - esbuild should create valid stylesheet 1`] = ` +"._1j5zl922 { + display: flex; +} +._1j5zl926 { + display: none; +} +._1j5zl92a { + display: block; +} +._1j5zl92e { + padding-top: 10px; +} +._1j5zl92i { + padding-top: 20px; +} +._1j5zl92m { + background: rgba(255, 0, 0, var(--_1j5zl920)); +} +._1j5zl92m, +._1j5zl92q { + --_1j5zl920: 1; +} +._1j5zl92u { + --_1j5zl920: 0.1; +} +._1j5zl92y { + --_1j5zl920: 0.2; +} +._1j5zl9212 { + --_1j5zl920: 0.3; +} +._1j5zl9216 { + color: rgba(255, 0, 0, var(--_1j5zl921)); +} +._1j5zl9216, +._1j5zl9217 { + --_1j5zl921: 1; +} +._1j5zl9218 { + --_1j5zl921: 0.8; +} +body > ._1j5zl921a { + background: red; +} +@media screen and (min-width: 768px) { + ._1j5zl923 { + display: flex; + } + ._1j5zl927 { + display: none; + } + ._1j5zl92b { + display: block; + } + ._1j5zl92f { + padding-top: 10px; + } + ._1j5zl92j { + padding-top: 20px; + } + ._1j5zl92n { + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + ._1j5zl92n, + ._1j5zl92r { + --_1j5zl920: 1; + } + ._1j5zl92v { + --_1j5zl920: 0.1; + } + ._1j5zl92z { + --_1j5zl920: 0.2; + } + ._1j5zl9213 { + --_1j5zl920: 0.3; + } +} +@media screen and (min-width: 1024px) { + ._1j5zl924 { + display: flex; + } + ._1j5zl928 { + display: none; + } + ._1j5zl92c { + display: block; + } + ._1j5zl92g { + padding-top: 10px; + } + ._1j5zl92k { + padding-top: 20px; + } + ._1j5zl92o { + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + ._1j5zl92o, + ._1j5zl92s { + --_1j5zl920: 1; + } + ._1j5zl92w { + --_1j5zl920: 0.1; + } + ._1j5zl9210 { + --_1j5zl920: 0.2; + } + ._1j5zl9214 { + --_1j5zl920: 0.3; + } + @supports not (display: grid) { + [data-dark-mode] ._1j5zl925 { + display: flex; + } + [data-dark-mode] ._1j5zl929 { + display: none; + } + [data-dark-mode] ._1j5zl92d { + display: block; + } + [data-dark-mode] ._1j5zl92h { + padding-top: 10px; + } + [data-dark-mode] ._1j5zl92l { + padding-top: 20px; + } + [data-dark-mode] ._1j5zl92p { + --_1j5zl920: 1; + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + [data-dark-mode] ._1j5zl92t { + --_1j5zl920: 1; + } + [data-dark-mode] ._1j5zl92x { + --_1j5zl920: 0.1; + } + [data-dark-mode] ._1j5zl9211 { + --_1j5zl920: 0.2; + } + [data-dark-mode] ._1j5zl9215 { + --_1j5zl920: 0.3; + } + } +} +" +`; + +exports[`features - mini-css-extract should create valid stylesheet 1`] = ` +"._3nw5tz2 { + display: flex; +} +._3nw5tz6 { + display: none; +} +._3nw5tza { + display: block; +} +._3nw5tze { + padding-top: 10px; +} +._3nw5tzi { + padding-top: 20px; +} +._3nw5tzm { + background: rgba(255, 0, 0, var(--_3nw5tz0)); +} +._3nw5tzm, +._3nw5tzq { + --_3nw5tz0: 1; +} +._3nw5tzu { + --_3nw5tz0: 0.1; +} +._3nw5tzy { + --_3nw5tz0: 0.2; +} +._3nw5tz12 { + --_3nw5tz0: 0.3; +} +._3nw5tz16 { + color: rgba(255, 0, 0, var(--_3nw5tz1)); +} +._3nw5tz16, +._3nw5tz17 { + --_3nw5tz1: 1; +} +._3nw5tz18 { + --_3nw5tz1: 0.8; +} +body > ._3nw5tz1a { + background: red; +} +@media screen and (min-width: 768px) { + ._3nw5tz3 { + display: flex; + } + ._3nw5tz7 { + display: none; + } + ._3nw5tzb { + display: block; + } + ._3nw5tzf { + padding-top: 10px; + } + ._3nw5tzj { + padding-top: 20px; + } + ._3nw5tzn { + background: rgba(255, 0, 0, var(--_3nw5tz0)); + } + ._3nw5tzn, + ._3nw5tzr { + --_3nw5tz0: 1; + } + ._3nw5tzv { + --_3nw5tz0: 0.1; + } + ._3nw5tzz { + --_3nw5tz0: 0.2; + } + ._3nw5tz13 { + --_3nw5tz0: 0.3; + } +} +@media screen and (min-width: 1024px) { + ._3nw5tz4 { + display: flex; + } + ._3nw5tz8 { + display: none; + } + ._3nw5tzc { + display: block; + } + ._3nw5tzg { + padding-top: 10px; + } + ._3nw5tzk { + padding-top: 20px; + } + ._3nw5tzo { + background: rgba(255, 0, 0, var(--_3nw5tz0)); + } + ._3nw5tzo, + ._3nw5tzs { + --_3nw5tz0: 1; + } + ._3nw5tzw { + --_3nw5tz0: 0.1; + } + ._3nw5tz10 { + --_3nw5tz0: 0.2; + } + ._3nw5tz14 { + --_3nw5tz0: 0.3; + } + @supports not (display: grid) { + [data-dark-mode] ._3nw5tz5 { + display: flex; + } + [data-dark-mode] ._3nw5tz9 { + display: none; + } + [data-dark-mode] ._3nw5tzd { + display: block; + } + [data-dark-mode] ._3nw5tzh { + padding-top: 10px; + } + [data-dark-mode] ._3nw5tzl { + padding-top: 20px; + } + [data-dark-mode] ._3nw5tzp { + --_3nw5tz0: 1; + background: rgba(255, 0, 0, var(--_3nw5tz0)); + } + [data-dark-mode] ._3nw5tzt { + --_3nw5tz0: 1; + } + [data-dark-mode] ._3nw5tzx { + --_3nw5tz0: 0.1; + } + [data-dark-mode] ._3nw5tz11 { + --_3nw5tz0: 0.2; + } + [data-dark-mode] ._3nw5tz15 { + --_3nw5tz0: 0.3; + } + } +} +" +`; + +exports[`features - vite should create valid stylesheet 1`] = ` +"._1j5zl922 { + display: flex; +} +._1j5zl926 { + display: none; +} +._1j5zl92a { + display: block; +} +._1j5zl92e { + padding-top: 10px; +} +._1j5zl92i { + padding-top: 20px; +} +._1j5zl92m { + background: rgba(255, 0, 0, var(--_1j5zl920)); +} +._1j5zl92m, +._1j5zl92q { + --_1j5zl920: 1; +} +._1j5zl92u { + --_1j5zl920: 0.1; +} +._1j5zl92y { + --_1j5zl920: 0.2; +} +._1j5zl9212 { + --_1j5zl920: 0.3; +} +._1j5zl9216 { + color: rgba(255, 0, 0, var(--_1j5zl921)); +} +._1j5zl9216, +._1j5zl9217 { + --_1j5zl921: 1; +} +._1j5zl9218 { + --_1j5zl921: 0.8; +} +body > ._1j5zl921a { + background: red; +} +@media screen and (min-width: 768px) { + ._1j5zl923 { + display: flex; + } + ._1j5zl927 { + display: none; + } + ._1j5zl92b { + display: block; + } + ._1j5zl92f { + padding-top: 10px; + } + ._1j5zl92j { + padding-top: 20px; + } + ._1j5zl92n { + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + ._1j5zl92n, + ._1j5zl92r { + --_1j5zl920: 1; + } + ._1j5zl92v { + --_1j5zl920: 0.1; + } + ._1j5zl92z { + --_1j5zl920: 0.2; + } + ._1j5zl9213 { + --_1j5zl920: 0.3; + } +} +@media screen and (min-width: 1024px) { + ._1j5zl924 { + display: flex; + } + ._1j5zl928 { + display: none; + } + ._1j5zl92c { + display: block; + } + ._1j5zl92g { + padding-top: 10px; + } + ._1j5zl92k { + padding-top: 20px; + } + ._1j5zl92o { + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + ._1j5zl92o, + ._1j5zl92s { + --_1j5zl920: 1; + } + ._1j5zl92w { + --_1j5zl920: 0.1; + } + ._1j5zl9210 { + --_1j5zl920: 0.2; + } + ._1j5zl9214 { + --_1j5zl920: 0.3; + } + @supports not (display: grid) { + [data-dark-mode] ._1j5zl925 { + display: flex; + } + [data-dark-mode] ._1j5zl929 { + display: none; + } + [data-dark-mode] ._1j5zl92d { + display: block; + } + [data-dark-mode] ._1j5zl92h { + padding-top: 10px; + } + [data-dark-mode] ._1j5zl92l { + padding-top: 20px; + } + [data-dark-mode] ._1j5zl92p { + --_1j5zl920: 1; + background: rgba(255, 0, 0, var(--_1j5zl920)); + } + [data-dark-mode] ._1j5zl92t { + --_1j5zl920: 1; + } + [data-dark-mode] ._1j5zl92x { + --_1j5zl920: 0.1; + } + [data-dark-mode] ._1j5zl9211 { + --_1j5zl920: 0.2; + } + [data-dark-mode] ._1j5zl9215 { + --_1j5zl920: 0.3; + } + } +} +" +`; diff --git a/tests/stylesheets/__snapshots__/themed.test.ts.snap b/tests/stylesheets/__snapshots__/themed.test.ts.snap new file mode 100644 index 000000000..5230407c0 --- /dev/null +++ b/tests/stylesheets/__snapshots__/themed.test.ts.snap @@ -0,0 +1,265 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`features - esbuild should create valid stylesheet 1`] = ` +".cvta170, +:root { + --cvta171: blue; + --cvta172: #fff; + --cvta173: 4px; + --cvta174: 8px; + --cvta175: 12px; +} +.cvta176 { + --cvta171: green; + --cvta172: #fff; + --cvta173: 8px; + --cvta174: 12px; + --cvta175: 16px; +} +.cvta177 { + --cvta171: pink; + --cvta172: purple; + --cvta173: 6px; + --cvta174: 12px; + --cvta175: 18px; +} +@media screen and (min-width: 768px) { + .cvta177 { + --cvta171: purple; + --cvta172: pink; + } +} +._4dtfen0 { + box-shadow: 0 0 5px red; +} +body { + background-color: #87ceeb; +} +@font-face { + font-family: jteyb10; + src: local(\\"Impact\\"); +} +@font-face { + font-family: MyGlobalComicSans; + src: local(\\"Comic Sans MS\\"); +} +.jteyb11 { + display: flex; + flex-direction: column; + gap: var(--cvta174); + padding: var(--cvta175); +} +.jteyb12 { + position: relative; + z-index: 1; +} +.jteyb13 { + background-color: var(--cvta171, \\"THIS FALLBACK VALUE SHOULD NEVER BE USED\\"); + border-radius: 9999px; + color: var(--cvta172); + font-family: jteyb10; +} +.cvta176 .cvta170 .jteyb11 .jteyb13 { + font-family: MyGlobalComicSans; + outline: 5px solid red; +} +body .jteyb12:after { + content: \\"I am content\\"; +} +html .jteyb16 { + opacity: var(--jteyb14, 0.5); +} +html .jteyb17 { + opacity: var(--jteyb14, var(--jteyb15, 0.25)); +} +@media only screen and (min-width: 500px) { + .jteyb11 { + border: 1px solid var(--cvta171); + } + .jteyb13 { + padding: var(--cvta173); + } +} +@media only screen and (min-width: 1000px) { + .jteyb13 { + padding: var(--cvta174); + } +} +" +`; + +exports[`features - mini-css-extract should create valid stylesheet 1`] = ` +".cdwe0v0, +:root { + --cdwe0v1: blue; + --cdwe0v2: #fff; + --cdwe0v3: 4px; + --cdwe0v4: 8px; + --cdwe0v5: 12px; +} +.cdwe0v6 { + --cdwe0v1: green; + --cdwe0v2: #fff; + --cdwe0v3: 8px; + --cdwe0v4: 12px; + --cdwe0v5: 16px; +} +.cdwe0v7 { + --cdwe0v1: pink; + --cdwe0v2: purple; + --cdwe0v3: 6px; + --cdwe0v4: 12px; + --cdwe0v5: 18px; +} +@media screen and (min-width: 768px) { + .cdwe0v7 { + --cdwe0v1: purple; + --cdwe0v2: pink; + } +} +._5iqv0q0 { + box-shadow: 0 0 5px red; +} +body { + background-color: skyblue; +} +@font-face { + font-family: blj6yb0; + src: local(\\"Impact\\"); +} +@font-face { + font-family: MyGlobalComicSans; + src: local(\\"Comic Sans MS\\"); +} +.blj6yb1 { + display: flex; + flex-direction: column; + gap: var(--cdwe0v4); + padding: var(--cdwe0v5); +} +.blj6yb2 { + position: relative; + z-index: 1; +} +.blj6yb3 { + background-color: var(--cdwe0v1, \\"THIS FALLBACK VALUE SHOULD NEVER BE USED\\"); + border-radius: 9999px; + color: var(--cdwe0v2); + font-family: blj6yb0; +} +.cdwe0v6 .cdwe0v0 .blj6yb1 .blj6yb3 { + font-family: MyGlobalComicSans; + outline: 5px solid red; +} +body .blj6yb2:after { + content: \\"I am content\\"; +} +html .blj6yb6 { + opacity: var(--blj6yb4, 0.5); +} +html .blj6yb7 { + opacity: var(--blj6yb4, var(--blj6yb5, 0.25)); +} +@media only screen and (min-width: 500px) { + .blj6yb1 { + border: 1px solid var(--cdwe0v1); + } + .blj6yb3 { + padding: var(--cdwe0v3); + } +} +@media only screen and (min-width: 1000px) { + .blj6yb3 { + padding: var(--cdwe0v4); + } +} +" +`; + +exports[`features - vite should create valid stylesheet 1`] = ` +".cvta170, +:root { + --cvta171: blue; + --cvta172: #fff; + --cvta173: 4px; + --cvta174: 8px; + --cvta175: 12px; +} +.cvta176 { + --cvta171: green; + --cvta172: #fff; + --cvta173: 8px; + --cvta174: 12px; + --cvta175: 16px; +} +.cvta177 { + --cvta171: pink; + --cvta172: purple; + --cvta173: 6px; + --cvta174: 12px; + --cvta175: 18px; +} +@media screen and (min-width: 768px) { + .cvta177 { + --cvta171: purple; + --cvta172: pink; + } +} +._4dtfen0 { + box-shadow: 0 0 5px red; +} +body { + background-color: #87ceeb; +} +@font-face { + font-family: jteyb10; + src: local(\\"Impact\\"); +} +@font-face { + font-family: MyGlobalComicSans; + src: local(\\"Comic Sans MS\\"); +} +.jteyb11 { + display: flex; + flex-direction: column; + gap: var(--cvta174); + padding: var(--cvta175); +} +.jteyb12 { + position: relative; + z-index: 1; +} +.jteyb13 { + background-color: var(--cvta171, \\"THIS FALLBACK VALUE SHOULD NEVER BE USED\\"); + border-radius: 9999px; + color: var(--cvta172); + font-family: jteyb10; +} +.cvta176 .cvta170 .jteyb11 .jteyb13 { + font-family: MyGlobalComicSans; + outline: 5px solid red; +} +body .jteyb12:after { + content: \\"I am content\\"; +} +html .jteyb16 { + opacity: var(--jteyb14, 0.5); +} +html .jteyb17 { + opacity: var(--jteyb14, var(--jteyb15, 0.25)); +} +@media only screen and (min-width: 500px) { + .jteyb11 { + border: 1px solid var(--cvta171); + } + .jteyb13 { + padding: var(--cvta173); + } +} +@media only screen and (min-width: 1000px) { + .jteyb13 { + padding: var(--cvta174); + } +} +" +`; diff --git a/tests/stylesheets/__snapshots__/unused-modules.test.ts.snap b/tests/stylesheets/__snapshots__/unused-modules.test.ts.snap new file mode 100644 index 000000000..4c4585498 --- /dev/null +++ b/tests/stylesheets/__snapshots__/unused-modules.test.ts.snap @@ -0,0 +1,64 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`features - esbuild should create valid stylesheet 1`] = ` +"body { + background-color: #e6e6fa; + border: 5px solid #000; +} +.fbihc60 { + display: flex; +} +._36o3zb0 { + background: green; + height: 100px; + width: 100px; +} +._1j78ztq0 { + box-sizing: border-box; +} +" +`; + +exports[`features - mini-css-extract should create valid stylesheet 1`] = ` +"body { + background-color: #e6e6fa; +} +._13dn9qt0 { + box-sizing: border-box; +} +body { + border: 5px solid #000; +} +._1mtonhh0 { + display: flex; +} +.plqi3i0 { + background: green; + height: 100px; + width: 100px; +} +" +`; + +exports[`features - vite should create valid stylesheet 1`] = ` +"body { + background-color: #e6e6fa; + border: 5px solid #000; +} +.fbihc60 { + display: flex; +} +.g6ndup0 { + background-color: #00f; + color: red; +} +._36o3zb0 { + background: green; + height: 100px; + width: 100px; +} +._1j78ztq0 { + box-sizing: border-box; +} +" +`; diff --git a/tests/stylesheets/__snapshots__/vite.test.ts.snap b/tests/stylesheets/__snapshots__/vite.test.ts.snap deleted file mode 100644 index 6f0a910bb..000000000 --- a/tests/stylesheets/__snapshots__/vite.test.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`vite - features should create valid stylesheet 1`] = `"._1o6ek500{height:50px}._1o6ek500:after{display:block;content:\\"Below 700px\\"}._1o6ek501{background-color:#b0e0e6}._1o6ek501:hover{background-color:#708090}._1o6ek502{background-color:#b0e0e6}._1o6ek502:hover{background-color:#708090}._1o6ek503{background-color:#b0e0e6}._1o6ek503:hover{background-color:#708090}._1o6ek505{color:#fff}._1o6ek506{background-color:#000}body ._1o6ek507{font-size:24px}._1o6ek508{color:#fff}._1o6ek509{background-color:#000}body ._1o6ek50a{font-size:24px}@media screen and (min-width:700px){._1o6ek500{color:plum}._1o6ek500:after{content:\\"Above 700px\\"}}"`; - -exports[`vite - sprinkles should create valid stylesheet 1`] = `"._1j5zl922{display:flex}._1j5zl926{display:none}._1j5zl92a{display:block}._1j5zl92e{padding-top:10px}._1j5zl92i{padding-top:20px}._1j5zl92m{--_1j5zl920:1;background:rgba(255,0,0,var(--_1j5zl920))}._1j5zl92q{--_1j5zl920:1}._1j5zl92u{--_1j5zl920:0.1}._1j5zl92y{--_1j5zl920:0.2}._1j5zl9212{--_1j5zl920:0.3}._1j5zl9216{--_1j5zl921:1;color:rgba(255,0,0,var(--_1j5zl921))}._1j5zl9217{--_1j5zl921:1}._1j5zl9218{--_1j5zl921:0.8}body>._1j5zl921a{background:red}@media screen and (min-width:768px){._1j5zl923{display:flex}._1j5zl927{display:none}._1j5zl92b{display:block}._1j5zl92f{padding-top:10px}._1j5zl92j{padding-top:20px}._1j5zl92n{--_1j5zl920:1;background:rgba(255,0,0,var(--_1j5zl920))}._1j5zl92r{--_1j5zl920:1}._1j5zl92v{--_1j5zl920:0.1}._1j5zl92z{--_1j5zl920:0.2}._1j5zl9213{--_1j5zl920:0.3}}@media screen and (min-width:1024px){._1j5zl924{display:flex}._1j5zl928{display:none}._1j5zl92c{display:block}._1j5zl92g{padding-top:10px}._1j5zl92k{padding-top:20px}._1j5zl92o{--_1j5zl920:1;background:rgba(255,0,0,var(--_1j5zl920))}._1j5zl92s{--_1j5zl920:1}._1j5zl92w{--_1j5zl920:0.1}._1j5zl9210{--_1j5zl920:0.2}._1j5zl9214{--_1j5zl920:0.3}@supports not (display:grid){[data-dark-mode] ._1j5zl925{display:flex}[data-dark-mode] ._1j5zl929{display:none}[data-dark-mode] ._1j5zl92d{display:block}[data-dark-mode] ._1j5zl92h{padding-top:10px}[data-dark-mode] ._1j5zl92l{padding-top:20px}[data-dark-mode] ._1j5zl92p{--_1j5zl920:1;background:rgba(255,0,0,var(--_1j5zl920))}[data-dark-mode] ._1j5zl92t{--_1j5zl920:1}[data-dark-mode] ._1j5zl92x{--_1j5zl920:0.1}[data-dark-mode] ._1j5zl9211{--_1j5zl920:0.2}[data-dark-mode] ._1j5zl9215{--_1j5zl920:0.3}}}"`; - -exports[`vite - themed should create valid stylesheet 1`] = `".cvta170,:root{--cvta171:blue;--cvta172:white;--cvta173:4px;--cvta174:8px;--cvta175:12px}.cvta176{--cvta171:green;--cvta172:white;--cvta173:8px;--cvta174:12px;--cvta175:16px}.cvta177{--cvta171:pink;--cvta172:purple;--cvta173:6px;--cvta174:12px;--cvta175:18px}@media screen and (min-width:768px){.cvta177{--cvta171:purple;--cvta172:pink}}._4dtfen0{box-shadow:0 0 5px red}body{background-color:#87ceeb}@font-face{src:local(\\"Impact\\");font-family:jteyb10}@font-face{src:local(\\"Comic Sans MS\\");font-family:MyGlobalComicSans}.jteyb11{display:flex;flex-direction:column;gap:var(--cvta174);padding:var(--cvta175)}.jteyb12{z-index:1;position:relative}.jteyb13{font-family:jteyb10;background-color:var(--cvta171, \\"THIS FALLBACK VALUE SHOULD NEVER BE USED\\");color:var(--cvta172);border-radius:9999px}.cvta176 .cvta170 .jteyb11 .jteyb13{font-family:MyGlobalComicSans;outline:5px solid red}body .jteyb12:after{content:'I am content'}html .jteyb16{opacity:var(--jteyb14,.5)}html .jteyb17{opacity:var(--jteyb14,var(--jteyb15,.25))}@media only screen and (min-width:500px){.jteyb11{border:1px solid var(--cvta171)}.jteyb13{padding:var(--cvta173)}}@media only screen and (min-width:1000px){.jteyb13{padding:var(--cvta174)}}"`; - -exports[`vite - unused-modules should create valid stylesheet 1`] = `"body{background-color:#e6e6fa}body{border:5px solid #000}.fbihc60{display:flex}.g6ndup0{color:red;background-color:#00f}._36o3zb0{height:100px;width:100px;background:green}._1j78ztq0{box-sizing:border-box}"`; diff --git a/tests/stylesheets/__snapshots__/webpack.test.ts.snap b/tests/stylesheets/__snapshots__/webpack.test.ts.snap deleted file mode 100644 index 83a9a2a97..000000000 --- a/tests/stylesheets/__snapshots__/webpack.test.ts.snap +++ /dev/null @@ -1,315 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`webpack - features should create valid stylesheet 1`] = ` -"._87f2ru0 { - height: 50px; -} -._87f2ru0:after { - display: block; - content: \\"Below 700px\\"; -} -._87f2ru1 { - background-color: powderblue; -} -._87f2ru1:hover { - background-color: slategray; -} -._87f2ru2 { - background-color: powderblue; -} -._87f2ru2:hover { - background-color: slategray; -} -._87f2ru3 { - background-color: powderblue; -} -._87f2ru3:hover { - background-color: slategray; -} -._87f2ru5 { - color: white; -} -._87f2ru6 { - background-color: black; -} -body ._87f2ru7 { - font-size: 24px; -} -._87f2ru8 { - color: white; -} -._87f2ru9 { - background-color: black; -} -body ._87f2rua { - font-size: 24px; -} -@media screen and (min-width: 700px) { - ._87f2ru0 { - color: plum; - } - ._87f2ru0:after { - content: \\"Above 700px\\"; - } -} - -/*# sourceMappingURL=main.css.map*/" -`; - -exports[`webpack - sprinkles should create valid stylesheet 1`] = ` -"._3nw5tz2 { - display: flex; -} -._3nw5tz6 { - display: none; -} -._3nw5tza { - display: block; -} -._3nw5tze { - padding-top: 10px; -} -._3nw5tzi { - padding-top: 20px; -} -._3nw5tzm { - --_3nw5tz0: 1; - background: rgba(255, 0, 0, var(--_3nw5tz0)); -} -._3nw5tzq { - --_3nw5tz0: 1; -} -._3nw5tzu { - --_3nw5tz0: 0.1; -} -._3nw5tzy { - --_3nw5tz0: 0.2; -} -._3nw5tz12 { - --_3nw5tz0: 0.3; -} -._3nw5tz16 { - --_3nw5tz1: 1; - color: rgba(255, 0, 0, var(--_3nw5tz1)); -} -._3nw5tz17 { - --_3nw5tz1: 1; -} -._3nw5tz18 { - --_3nw5tz1: 0.8; -} -body > ._3nw5tz1a { - background: red; -} -@media screen and (min-width: 768px) { - ._3nw5tz3 { - display: flex; - } - ._3nw5tz7 { - display: none; - } - ._3nw5tzb { - display: block; - } - ._3nw5tzf { - padding-top: 10px; - } - ._3nw5tzj { - padding-top: 20px; - } - ._3nw5tzn { - --_3nw5tz0: 1; - background: rgba(255, 0, 0, var(--_3nw5tz0)); - } - ._3nw5tzr { - --_3nw5tz0: 1; - } - ._3nw5tzv { - --_3nw5tz0: 0.1; - } - ._3nw5tzz { - --_3nw5tz0: 0.2; - } - ._3nw5tz13 { - --_3nw5tz0: 0.3; - } -} -@media screen and (min-width: 1024px) { - ._3nw5tz4 { - display: flex; - } - ._3nw5tz8 { - display: none; - } - ._3nw5tzc { - display: block; - } - ._3nw5tzg { - padding-top: 10px; - } - ._3nw5tzk { - padding-top: 20px; - } - ._3nw5tzo { - --_3nw5tz0: 1; - background: rgba(255, 0, 0, var(--_3nw5tz0)); - } - ._3nw5tzs { - --_3nw5tz0: 1; - } - ._3nw5tzw { - --_3nw5tz0: 0.1; - } - ._3nw5tz10 { - --_3nw5tz0: 0.2; - } - ._3nw5tz14 { - --_3nw5tz0: 0.3; - } - @supports not (display: grid) { - [data-dark-mode] ._3nw5tz5 { - display: flex; - } - [data-dark-mode] ._3nw5tz9 { - display: none; - } - [data-dark-mode] ._3nw5tzd { - display: block; - } - [data-dark-mode] ._3nw5tzh { - padding-top: 10px; - } - [data-dark-mode] ._3nw5tzl { - padding-top: 20px; - } - [data-dark-mode] ._3nw5tzp { - --_3nw5tz0: 1; - background: rgba(255, 0, 0, var(--_3nw5tz0)); - } - [data-dark-mode] ._3nw5tzt { - --_3nw5tz0: 1; - } - [data-dark-mode] ._3nw5tzx { - --_3nw5tz0: 0.1; - } - [data-dark-mode] ._3nw5tz11 { - --_3nw5tz0: 0.2; - } - [data-dark-mode] ._3nw5tz15 { - --_3nw5tz0: 0.3; - } - } -} - -/*# sourceMappingURL=main.css.map*/" -`; - -exports[`webpack - themed should create valid stylesheet 1`] = ` -":root, .cdwe0v0 { - --cdwe0v1: blue; - --cdwe0v2: white; - --cdwe0v3: 4px; - --cdwe0v4: 8px; - --cdwe0v5: 12px; -} -.cdwe0v6 { - --cdwe0v1: green; - --cdwe0v2: white; - --cdwe0v3: 8px; - --cdwe0v4: 12px; - --cdwe0v5: 16px; -} -.cdwe0v7 { - --cdwe0v1: pink; - --cdwe0v2: purple; - --cdwe0v3: 6px; - --cdwe0v4: 12px; - --cdwe0v5: 18px; -} -@media screen and (min-width: 768px) { - .cdwe0v7 { - --cdwe0v1: purple; - --cdwe0v2: pink; - } -} -._5iqv0q0 { - box-shadow: 0 0 5px red; -} -body { - background-color: skyblue; -} -@font-face { - src: local(\\"Impact\\"); - font-family: \\"blj6yb0\\"; -} -@font-face { - src: local(\\"Comic Sans MS\\"); - font-family: MyGlobalComicSans; -} -.blj6yb1 { - display: flex; - flex-direction: column; - gap: var(--cdwe0v4); - padding: var(--cdwe0v5); -} -.blj6yb2 { - z-index: 1; - position: relative; -} -.blj6yb3 { - font-family: \\"blj6yb0\\"; - background-color: var(--cdwe0v1, \\"THIS FALLBACK VALUE SHOULD NEVER BE USED\\"); - color: var(--cdwe0v2); - border-radius: 9999px; -} -.cdwe0v6 .cdwe0v0 .blj6yb1 .blj6yb3 { - font-family: MyGlobalComicSans; - outline: 5px solid red; -} -body .blj6yb2:after { - content: 'I am content'; -} -html .blj6yb6 { - opacity: var(--blj6yb4, 0.5); -} -html .blj6yb7 { - opacity: var(--blj6yb4, var(--blj6yb5, 0.25)); -} -@media only screen and (min-width: 500px) { - .blj6yb1 { - border: 1px solid var(--cdwe0v1); - } - .blj6yb3 { - padding: var(--cdwe0v3); - } -} -@media only screen and (min-width: 1000px) { - .blj6yb3 { - padding: var(--cdwe0v4); - } -} - -/*# sourceMappingURL=main.css.map*/" -`; - -exports[`webpack - unused-modules should create valid stylesheet 1`] = ` -"body { - background-color: lavender; -} -._13dn9qt0 { - box-sizing: border-box; -} -body { - border: 5px solid black; -} -._1mtonhh0 { - display: flex; -} -.plqi3i0 { - height: 100px; - width: 100px; - background: green; -} - -/*# sourceMappingURL=main.css.map*/" -`; diff --git a/tests/stylesheets/esbuild.test.ts b/tests/stylesheets/esbuild.test.ts deleted file mode 100644 index f89c2736b..000000000 --- a/tests/stylesheets/esbuild.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { getStylesheet, startFixture, TestServer } from 'test-helpers'; - -const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); - -const fixtures = ['unused-modules', 'themed', 'sprinkles', 'features']; - -let testCounter = 0; - -describe.each(fixtures)('esbuild - %s', (fixture) => { - let server: TestServer; - - beforeAll(async () => { - const portRange = 100 * workerIndex; - server = await startFixture(fixture, { - type: 'esbuild', - mode: 'production', - basePort: 12000 + portRange + testCounter++, - }); - }); - - it('should create valid stylesheet', async () => { - expect(await getStylesheet(server.url, 'index.css')).toMatchSnapshot(); - }); - - afterAll(async () => { - await server.close(); - }); -}); diff --git a/tests/stylesheets/features.test.ts b/tests/stylesheets/features.test.ts new file mode 100644 index 000000000..51ddaca4f --- /dev/null +++ b/tests/stylesheets/features.test.ts @@ -0,0 +1,32 @@ +import { getStylesheet, startFixture, TestServer } from 'test-helpers'; + +const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); +let testCounter = 0; + +const buildTypes = ['vite', 'esbuild', 'mini-css-extract'] as const; + +buildTypes.forEach((buildType) => { + describe(`features - ${buildType}`, () => { + let server: TestServer; + + beforeAll(async () => { + const portRange = 100 * workerIndex; + + server = await startFixture('features', { + type: buildType, + mode: 'production', + basePort: 12000 + portRange + testCounter++, + }); + }); + + test('should create valid stylesheet', async () => { + expect( + await getStylesheet(server.url, server.stylesheet), + ).toMatchSnapshot(); + }); + + afterAll(async () => { + await server.close(); + }); + }); +}); diff --git a/tests/stylesheets/sprinkles.test.ts b/tests/stylesheets/sprinkles.test.ts new file mode 100644 index 000000000..593651461 --- /dev/null +++ b/tests/stylesheets/sprinkles.test.ts @@ -0,0 +1,32 @@ +import { getStylesheet, startFixture, TestServer } from 'test-helpers'; + +const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); +let testCounter = 0; + +const buildTypes = ['vite', 'esbuild', 'mini-css-extract'] as const; + +buildTypes.forEach((buildType) => { + describe(`features - ${buildType}`, () => { + let server: TestServer; + + beforeAll(async () => { + const portRange = 100 * workerIndex; + + server = await startFixture('sprinkles', { + type: buildType, + mode: 'production', + basePort: 12000 + portRange + testCounter++, + }); + }); + + test('should create valid stylesheet', async () => { + expect( + await getStylesheet(server.url, server.stylesheet), + ).toMatchSnapshot(); + }); + + afterAll(async () => { + await server.close(); + }); + }); +}); diff --git a/tests/stylesheets/themed.test.ts b/tests/stylesheets/themed.test.ts new file mode 100644 index 000000000..b11fea23a --- /dev/null +++ b/tests/stylesheets/themed.test.ts @@ -0,0 +1,32 @@ +import { getStylesheet, startFixture, TestServer } from 'test-helpers'; + +const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); +let testCounter = 0; + +const buildTypes = ['vite', 'esbuild', 'mini-css-extract'] as const; + +buildTypes.forEach((buildType) => { + describe(`features - ${buildType}`, () => { + let server: TestServer; + + beforeAll(async () => { + const portRange = 100 * workerIndex; + + server = await startFixture('themed', { + type: buildType, + mode: 'production', + basePort: 12000 + portRange + testCounter++, + }); + }); + + test('should create valid stylesheet', async () => { + expect( + await getStylesheet(server.url, server.stylesheet), + ).toMatchSnapshot(); + }); + + afterAll(async () => { + await server.close(); + }); + }); +}); diff --git a/tests/stylesheets/unused-modules.test.ts b/tests/stylesheets/unused-modules.test.ts new file mode 100644 index 000000000..c3a5e335b --- /dev/null +++ b/tests/stylesheets/unused-modules.test.ts @@ -0,0 +1,32 @@ +import { getStylesheet, startFixture, TestServer } from 'test-helpers'; + +const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); +let testCounter = 0; + +const buildTypes = ['vite', 'esbuild', 'mini-css-extract'] as const; + +buildTypes.forEach((buildType) => { + describe(`features - ${buildType}`, () => { + let server: TestServer; + + beforeAll(async () => { + const portRange = 100 * workerIndex; + + server = await startFixture('unused-modules', { + type: buildType, + mode: 'production', + basePort: 12000 + portRange + testCounter++, + }); + }); + + test('should create valid stylesheet', async () => { + expect( + await getStylesheet(server.url, server.stylesheet), + ).toMatchSnapshot(); + }); + + afterAll(async () => { + await server.close(); + }); + }); +}); diff --git a/tests/stylesheets/vite.test.ts b/tests/stylesheets/vite.test.ts deleted file mode 100644 index a29ef29cf..000000000 --- a/tests/stylesheets/vite.test.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { getStylesheet, startFixture, TestServer } from 'test-helpers'; - -const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); - -const fixtures = ['unused-modules', 'themed', 'sprinkles', 'features']; - -let testCounter = 0; - -describe.each(fixtures)('vite - %s', (fixture) => { - let server: TestServer; - - beforeAll(async () => { - const portRange = 100 * workerIndex; - server = await startFixture(fixture, { - type: 'vite', - mode: 'production', - basePort: 12000 + portRange + testCounter++, - }); - }); - - it('should create valid stylesheet', async () => { - expect( - await getStylesheet(server.url, server.stylesheet), - ).toMatchSnapshot(); - }); - - afterAll(async () => { - await server.close(); - }); -}); diff --git a/tests/stylesheets/webpack.test.ts b/tests/stylesheets/webpack.test.ts deleted file mode 100644 index 738fffb1c..000000000 --- a/tests/stylesheets/webpack.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { getStylesheet, startFixture, TestServer } from 'test-helpers'; - -const workerIndex = parseInt(process.env.JEST_WORKER_ID ?? '', 10); - -const fixtures = ['unused-modules', 'themed', 'sprinkles', 'features']; - -let testCounter = 0; - -describe.each(fixtures)('webpack - %s', (fixture) => { - let server: TestServer; - - beforeAll(async () => { - const portRange = 100 * workerIndex; - server = await startFixture(fixture, { - type: 'mini-css-extract', - mode: 'production', - basePort: 12000 + portRange + testCounter++, - }); - }); - - it('should create valid stylesheet', async () => { - expect(await getStylesheet(server.url)).toMatchSnapshot(); - }); - - afterAll(async () => { - await server.close(); - }); -}); diff --git a/yarn.lock b/yarn.lock index 93f681d12..82b6caa1c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3143,6 +3143,13 @@ __metadata: languageName: node linkType: hard +"@trysound/sax@npm:0.1.1": + version: 0.1.1 + resolution: "@trysound/sax@npm:0.1.1" + checksum: 0ffcea622248d234faad26761c6a152856acbf0153bd54178adc0c84607355b769ea7eda096f51590b1897bed7d51e01dc7582dc97ff94a8c0f97ee03d707cd5 + languageName: node + linkType: hard + "@types/anymatch@npm:*": version: 1.3.1 resolution: "@types/anymatch@npm:1.3.1" @@ -3525,6 +3532,13 @@ __metadata: languageName: node linkType: hard +"@types/prettier@npm:^2": + version: 2.3.2 + resolution: "@types/prettier@npm:2.3.2" + checksum: 7b425386aaf3b03fa63382ed1aceff367477ef9a52a2705978bfb1495fa1d8795316e1ab84671f6c8c5920de59a33d1567d837b9eb033996983efdfdbce84cb3 + languageName: node + linkType: hard + "@types/prettier@npm:^2.0.0": version: 2.2.3 resolution: "@types/prettier@npm:2.2.3" @@ -4268,6 +4282,13 @@ __metadata: languageName: node linkType: hard +"alphanum-sort@npm:^1.0.2": + version: 1.0.2 + resolution: "alphanum-sort@npm:1.0.2" + checksum: 28bad91719e15959e36a791a3538924e07da356ebe3b5f992e7668e8018cfc417a7ba4a69512771e5ffa306c7e028435c7748546f66f72d4f7b0ad694cf55069 + languageName: node + linkType: hard + "anser@npm:1.4.9": version: 1.4.9 resolution: "anser@npm:1.4.9" @@ -5119,6 +5140,21 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.0.0, browserslist@npm:^4.16.0": + version: 4.17.0 + resolution: "browserslist@npm:4.17.0" + dependencies: + caniuse-lite: ^1.0.30001254 + colorette: ^1.3.0 + electron-to-chromium: ^1.3.830 + escalade: ^3.1.1 + node-releases: ^1.1.75 + bin: + browserslist: cli.js + checksum: e7c4b78520f1e6f547112891d4a2298fa2d9bcba0156fd62b8229d654cd7a6c72db74254d774a55cacf604fbee0966189ac6fb1ce71e8c1a24bb5ce1c2ed9644 + languageName: node + linkType: hard + "browserslist@npm:^4.14.5, browserslist@npm:^4.16.3": version: 4.16.3 resolution: "browserslist@npm:4.16.3" @@ -5419,6 +5455,25 @@ __metadata: languageName: node linkType: hard +"caniuse-api@npm:^3.0.0": + version: 3.0.0 + resolution: "caniuse-api@npm:3.0.0" + dependencies: + browserslist: ^4.0.0 + caniuse-lite: ^1.0.0 + lodash.memoize: ^4.1.2 + lodash.uniq: ^4.5.0 + checksum: 6822fb3d421b438f9274b15f9a20f54937402730c978285ceb07b569de5876882b0bbc94274519f7308baaae8dc84227d846fc7dacc4f4b54fac7d2515aca582 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001254": + version: 1.0.30001255 + resolution: "caniuse-lite@npm:1.0.30001255" + checksum: 8ddc64e193f513374c7b20816cab58b69edad18710a0bb579d1a292052cb3a2ed1fe829301581148df7263a29e69dadecfb893d82af26ba6ebb76ce18752e5ad + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001181": version: 1.0.30001204 resolution: "caniuse-lite@npm:1.0.30001204" @@ -5870,6 +5925,13 @@ __metadata: languageName: node linkType: hard +"colord@npm:^2.0.1, colord@npm:^2.6": + version: 2.7.0 + resolution: "colord@npm:2.7.0" + checksum: 93811e757a95e71616d645c89f98c074e8f80201497569a610cad08d134cb42fa87db5e74325487e03f26a0c5a455a2f39943b3dd542e366a815f0599c65a69d + languageName: node + linkType: hard + "colorette@npm:^1.2.1, colorette@npm:^1.2.2": version: 1.2.2 resolution: "colorette@npm:1.2.2" @@ -5928,7 +5990,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^7.0.0": +"commander@npm:^7.0.0, commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" checksum: bdc0eca5e25cd24af8440163d3c9a996785bbac4b49a590365699cdc1ed08cefbac8f268153208ab2bc5dc3cb1d3fb573fd1590c681e36e371342186bd331a4c @@ -6220,6 +6282,24 @@ __metadata: languageName: node linkType: hard +"css-color-names@npm:^1.0.1": + version: 1.0.1 + resolution: "css-color-names@npm:1.0.1" + checksum: c75974dacd6950ad1a7ba649bd3c8a41a3c9ecf097069cbe3cab090e9b676e08c8f2ee6e28115acac3e602854f5619be2797f3314ab465057825bc5b144e2b41 + languageName: node + linkType: hard + +"css-declaration-sorter@npm:^6.0.3": + version: 6.1.1 + resolution: "css-declaration-sorter@npm:6.1.1" + dependencies: + timsort: ^0.3.0 + peerDependencies: + postcss: ^8.0.9 + checksum: ea9e86aafe935ef31591d94cefabae33025f69d4b32f75e6568b2dfb82e7ff65c7774cb3fc34234a846f49b9e920dfb3620c77db753440b92b164b555f8dd3bf + languageName: node + linkType: hard + "css-loader@npm:^5.2.4": version: 5.2.4 resolution: "css-loader@npm:5.2.4" @@ -6253,6 +6333,29 @@ __metadata: languageName: node linkType: hard +"css-select@npm:^4.1.3": + version: 4.1.3 + resolution: "css-select@npm:4.1.3" + dependencies: + boolbase: ^1.0.0 + css-what: ^5.0.0 + domhandler: ^4.2.0 + domutils: ^2.6.0 + nth-check: ^2.0.0 + checksum: 0259932ad2f37dd6fd0ba7a16a1bedb58d9ac2f0dd6888a27ea860193340ec4599568d126740ae8809eb814c3a6e848fb6ce674c420dc439877becccb91b03af + languageName: node + linkType: hard + +"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": + version: 1.1.3 + resolution: "css-tree@npm:1.1.3" + dependencies: + mdn-data: 2.0.14 + source-map: ^0.6.1 + checksum: 5b1bf44c457f4682feef5d1fccf0758aabaec3b77f264418a022826a0e4c2dc9f2283205223ddba147eba8ee4cb88caa91298b54c4b7e9af345bb820e9a32868 + languageName: node + linkType: hard + "css-unit-converter@npm:^1.1.1": version: 1.1.2 resolution: "css-unit-converter@npm:1.1.2" @@ -6267,7 +6370,7 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^5.0.1": +"css-what@npm:^5.0.0, css-what@npm:^5.0.1": version: 5.0.1 resolution: "css-what@npm:5.0.1" checksum: 051bcda396ef25fbc58f66a0c9b54c3bd11f5b8a9f9cdf138865c3bff029fddb6df8fffb487a079110d691856385769fe4e9345262fabeb7a09783dd6f6a7bc2 @@ -6301,6 +6404,45 @@ __metadata: languageName: node linkType: hard +"cssnano-preset-default@npm:^5.1.4": + version: 5.1.4 + resolution: "cssnano-preset-default@npm:5.1.4" + dependencies: + css-declaration-sorter: ^6.0.3 + cssnano-utils: ^2.0.1 + postcss-calc: ^8.0.0 + postcss-colormin: ^5.2.0 + postcss-convert-values: ^5.0.1 + postcss-discard-comments: ^5.0.1 + postcss-discard-duplicates: ^5.0.1 + postcss-discard-empty: ^5.0.1 + postcss-discard-overridden: ^5.0.1 + postcss-merge-longhand: ^5.0.2 + postcss-merge-rules: ^5.0.2 + postcss-minify-font-values: ^5.0.1 + postcss-minify-gradients: ^5.0.2 + postcss-minify-params: ^5.0.1 + postcss-minify-selectors: ^5.1.0 + postcss-normalize-charset: ^5.0.1 + postcss-normalize-display-values: ^5.0.1 + postcss-normalize-positions: ^5.0.1 + postcss-normalize-repeat-style: ^5.0.1 + postcss-normalize-string: ^5.0.1 + postcss-normalize-timing-functions: ^5.0.1 + postcss-normalize-unicode: ^5.0.1 + postcss-normalize-url: ^5.0.2 + postcss-normalize-whitespace: ^5.0.1 + postcss-ordered-values: ^5.0.2 + postcss-reduce-initial: ^5.0.1 + postcss-reduce-transforms: ^5.0.1 + postcss-svgo: ^5.0.2 + postcss-unique-selectors: ^5.0.1 + peerDependencies: + postcss: ^8.2.15 + checksum: 2c3e33496c2832e169070f0ad37226ab53d64274be8419f59fd37e826e2940772fc2789db9d4a07b95b1af4ec124dd010ef1209d1411b696730799bd185e6202 + languageName: node + linkType: hard + "cssnano-preset-simple@npm:^3.0.0": version: 3.0.0 resolution: "cssnano-preset-simple@npm:3.0.0" @@ -6326,6 +6468,38 @@ __metadata: languageName: node linkType: hard +"cssnano-utils@npm:^2.0.1": + version: 2.0.1 + resolution: "cssnano-utils@npm:2.0.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 23da158ab963d2afc5da0fd93331984d357364573d01a95cea448075458711984b7ba66da2112149229dd68e1465c49d3d601f12a3e45d1cd16f7e0b6fdf5a00 + languageName: node + linkType: hard + +"cssnano@npm:^5.0.8": + version: 5.0.8 + resolution: "cssnano@npm:5.0.8" + dependencies: + cssnano-preset-default: ^5.1.4 + is-resolvable: ^1.1.0 + lilconfig: ^2.0.3 + yaml: ^1.10.2 + peerDependencies: + postcss: ^8.2.15 + checksum: 9dfcd57d9f887d986443f6ed55a07b17a4d28e1c288cdfe05f4a2c2065513d94236062e1cb2847c9835db29011828fc6eef2de38b6872fe9d9e94ce97487dd0f + languageName: node + linkType: hard + +"csso@npm:^4.2.0": + version: 4.2.0 + resolution: "csso@npm:4.2.0" + dependencies: + css-tree: ^1.1.2 + checksum: 757304b1c78052e74d2235b775b9a5fee287c66a189944732165021a0bb45b65ba8e1b9cfa478884d5721967f98c9c6d998240c5c78b2a003e4ab76a5a5b7b10 + languageName: node + linkType: hard + "cssom@npm:^0.4.4": version: 0.4.4 resolution: "cssom@npm:0.4.4" @@ -6865,6 +7039,17 @@ __metadata: languageName: node linkType: hard +"dom-serializer@npm:^1.0.1": + version: 1.3.2 + resolution: "dom-serializer@npm:1.3.2" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.2.0 + entities: ^2.0.0 + checksum: 1a5d6970d27a4fac3e7a372f60c544704174b7cc63178a0bae80edfbe5bec7cb2a8c2c3931fc4cb0270b909fadaa19d34506650559dcf1a35edc8db605da98b6 + languageName: node + linkType: hard + "domain-browser@npm:4.19.0": version: 4.19.0 resolution: "domain-browser@npm:4.19.0" @@ -6893,6 +7078,13 @@ __metadata: languageName: node linkType: hard +"domelementtype@npm:^2.2.0": + version: 2.2.0 + resolution: "domelementtype@npm:2.2.0" + checksum: 70af22cd69a8e0c0cd4fbbba0459991aacb015f60765050b4a6d1750fd201b4bd4fd1e6922e945200f9cc725cd61be1cd393a3b9b576187759e3b046f33a4a30 + languageName: node + linkType: hard + "domexception@npm:^2.0.1": version: 2.0.1 resolution: "domexception@npm:2.0.1" @@ -6911,6 +7103,15 @@ __metadata: languageName: node linkType: hard +"domhandler@npm:^4.2.0": + version: 4.2.2 + resolution: "domhandler@npm:4.2.2" + dependencies: + domelementtype: ^2.2.0 + checksum: bc4dd6f6a1b99514d8c94fd599c8e33879d9403e9f6f79e137aa7fc9d195574647601694b7e693a917251dffff1218259f0fa1f8327f051645c2d8582ac65741 + languageName: node + linkType: hard + "domutils@npm:^1.5.1, domutils@npm:^1.7.0": version: 1.7.0 resolution: "domutils@npm:1.7.0" @@ -6921,6 +7122,17 @@ __metadata: languageName: node linkType: hard +"domutils@npm:^2.6.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: ^1.0.1 + domelementtype: ^2.2.0 + domhandler: ^4.2.0 + checksum: f1d0cfab0649e530a26ac23a636ab6574302b9c4bb271acb08fdcb84dd3957d5340670bf5eb587871585813c0b3727c33e50be7389e317cd758d837e5442f971 + languageName: node + linkType: hard + "dot-case@npm:^2.1.0": version: 2.1.1 resolution: "dot-case@npm:2.1.1" @@ -6992,7 +7204,7 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.723": +"electron-to-chromium@npm:^1.3.723, electron-to-chromium@npm:^1.3.830": version: 1.3.830 resolution: "electron-to-chromium@npm:1.3.830" checksum: c89e19c1545015bcbe4114208e3d59b6ef69b205a09eb1095dc9e1d7817e5ba8f0efd32ffcb64c852ccbf8534a12ff51ced4c3dec14ecff92fafdd3518f8ed3a @@ -9659,6 +9871,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"is-resolvable@npm:^1.1.0": + version: 1.1.0 + resolution: "is-resolvable@npm:1.1.0" + checksum: ef1a289c54e1115f668cd4fbfd6dc53d6bfa02c2c12e812a578aefbe795b72339cde37e9ee5709d15a21009cadadba2c61cf810f2dd1da29e3c651776c98dda8 + languageName: node + linkType: hard + "is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" @@ -10626,6 +10845,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"lilconfig@npm:^2.0.3": + version: 2.0.3 + resolution: "lilconfig@npm:2.0.3" + checksum: c792addea06835943362dc3d7fccedbd256202ec4a1f424399bd0f3ab8888e0f5c1df9abf6fd6c644fcd87b152b37c6914c1de57146a12862abe9c9c5a0f45fc + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.1.6 resolution: "lines-and-columns@npm:1.1.6" @@ -10720,6 +10946,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 080c1095b7795b293a06078737550dc0c8138192cadbafb4e4b1303357d367ac589a1a570fad8de154175b008ca7b2b48d6a7f1755a143e13b764e20a7104080 + languageName: node + linkType: hard + "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -10748,7 +10981,7 @@ fsevents@~2.1.2: languageName: node linkType: hard -"lodash.uniq@npm:4.5.0": +"lodash.uniq@npm:4.5.0, lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" checksum: 47cb25b59bf40ef3bdf441b7b6cb41d0b95ae0ca576be2c206724dd66041fa8aadab55c1210792671aa0b1c9878d5c0be48927bf4d22f3ed50e5f79d3b2e90b7 @@ -11040,6 +11273,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"mdn-data@npm:2.0.14": + version: 2.0.14 + resolution: "mdn-data@npm:2.0.14" + checksum: 57a27f585adb0ab978b0229aa2347dfbdb897e340a3cd3547a7de3162680af641bf2cdf185771b3bca29fabf8c46b486a45a4809dd5d9321465c80e6adad98f4 + languageName: node + linkType: hard + "mdurl@npm:^1.0.0, mdurl@npm:^1.0.1": version: 1.0.1 resolution: "mdurl@npm:1.0.1" @@ -11895,6 +12135,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 5fb69e98c149f4a54a7bb0f1904cc524627c0d23327a9feafacacf135d01d9595c65e80ced6f27c17c1959541ea732815b604ff8a6ec52ec3fe7a391b92cfba9 + languageName: node + linkType: hard + "npm-bundled@npm:^1.1.1": version: 1.1.1 resolution: "npm-bundled@npm:1.1.1" @@ -12025,6 +12272,15 @@ fsevents@~2.1.2: languageName: node linkType: hard +"nth-check@npm:^2.0.0": + version: 2.0.0 + resolution: "nth-check@npm:2.0.0" + dependencies: + boolbase: ^1.0.0 + checksum: 380a6dcf32910c783f30c62d6ae02194e8ac860faf99ff46b2248942477304351755a7ee2fa26ce289b6d078350fa14703da5cf4b3c65275032b43008a275064 + languageName: node + linkType: hard + "number-is-nan@npm:^1.0.0": version: 1.0.1 resolution: "number-is-nan@npm:1.0.1" @@ -12832,6 +13088,79 @@ fsevents@~2.1.2: languageName: node linkType: hard +"postcss-calc@npm:^8.0.0": + version: 8.0.0 + resolution: "postcss-calc@npm:8.0.0" + dependencies: + postcss-selector-parser: ^6.0.2 + postcss-value-parser: ^4.0.2 + peerDependencies: + postcss: ^8.2.2 + checksum: 675bcd4c2e8df1c85a31e65e03284d6260effada92f9cf783de4bb4b127fe85b2cd3a8453082f28d1a2421715a466a06f3c7550ee2dd96363acc68ac7d50191f + languageName: node + linkType: hard + +"postcss-colormin@npm:^5.2.0": + version: 5.2.0 + resolution: "postcss-colormin@npm:5.2.0" + dependencies: + browserslist: ^4.16.6 + caniuse-api: ^3.0.0 + colord: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 9afcc0a9f12a64ca77278aaa8d6f41565d465ea6e7f0b345f67c601ccf10ef7b04f158aaafc67da14c420c68a6f729321d5b619bc24abb3365194e2070dd79c2 + languageName: node + linkType: hard + +"postcss-convert-values@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-convert-values@npm:5.0.1" + dependencies: + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 42e437817d83a2d1678a5178dfc4ff975b12010c5868ea40c5eb653858385f4ae39b01b2050700cadd568db631c8b7fdc5e3b015d2bb05f741318454efc6d383 + languageName: node + linkType: hard + +"postcss-discard-comments@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-discard-comments@npm:5.0.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 836d8f57e0874b8bf7fbf8fe152be925c746889f413e7a25008da988df83fb1761b087beec72faaa3b60e3059966f21ac5ce39b8ac77b8cd754e5363a006eb78 + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-discard-duplicates@npm:5.0.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 52be3c55782ebd72596f5df62f556bcaa4008c88585fc06a042cfa5d9e9ccd2da89c8f4e2393ba0f235950284dca146f03bfc804eba8f782097a57465b41fc0d + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-discard-empty@npm:5.0.1" + peerDependencies: + postcss: ^8.2.15 + checksum: c5c19ad5837850d8a87f5a9e444993d02908101a0b84e0fbf8acd1dd1b38f6af43d104a3890e2dac061aa60a7b62a4414c5494cb2aa00154c280e05ea4547c93 + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-discard-overridden@npm:5.0.1" + peerDependencies: + postcss: ^8.2.15 + checksum: d9609824a3f486815809f8c7b213009e6052e41b15fb1b7f0357e6f18ca7f359904a62077656732bf17a53c43b05900611666fa9482c2a286a13413920cd7462 + languageName: node + linkType: hard + "postcss-functions@npm:^3": version: 3.0.0 resolution: "postcss-functions@npm:3.0.0" @@ -12854,6 +13183,85 @@ fsevents@~2.1.2: languageName: node linkType: hard +"postcss-merge-longhand@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-merge-longhand@npm:5.0.2" + dependencies: + css-color-names: ^1.0.1 + postcss-value-parser: ^4.1.0 + stylehacks: ^5.0.1 + peerDependencies: + postcss: ^8.2.15 + checksum: 484574489b4f7e33988dc896eb6bf482d188b14e6e52d018a26d7a4b1f854f7d3b6c7ec716646795ae41c36ac6c79d2a7c845b0c0fd89139b2685af20bdb5c66 + languageName: node + linkType: hard + +"postcss-merge-rules@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-merge-rules@npm:5.0.2" + dependencies: + browserslist: ^4.16.6 + caniuse-api: ^3.0.0 + cssnano-utils: ^2.0.1 + postcss-selector-parser: ^6.0.5 + vendors: ^1.0.3 + peerDependencies: + postcss: ^8.2.15 + checksum: 07b28781a38ef0131a7e3f99400971f3e32a47fc5db7da3c83df6141b7cd8356708c40e6b34526117a795d7ad7a5686fce9e56fef657cb77566256f8cd4abb47 + languageName: node + linkType: hard + +"postcss-minify-font-values@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-minify-font-values@npm:5.0.1" + dependencies: + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: d958852e20caa1b089d89e3b2ae75680f0ae77a015e119a9a4be88eb98a9098251d0d77d128daa7b7aad25c5998f0869c02d7ed6dcaa4d3f54578616cd9a7217 + languageName: node + linkType: hard + +"postcss-minify-gradients@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-minify-gradients@npm:5.0.2" + dependencies: + colord: ^2.6 + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 1d518ae8ada6f1a301f0ad5275710a352aec7a57c75958256d6b3239ebb96cbbe5d5628bb90144bdf250ea01cc6f33ab9aefdd46f2980b0f58f2ec6885b244c7 + languageName: node + linkType: hard + +"postcss-minify-params@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-minify-params@npm:5.0.1" + dependencies: + alphanum-sort: ^1.0.2 + browserslist: ^4.16.0 + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + uniqs: ^2.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: f3b93613b44add90000b0d894d58eaf1b2fb7fdccb54045846f6c2fd46ae1b381e5677c17cbc693a068977077089ebe3eb353e1b53bc25117b46ad757453e7ba + languageName: node + linkType: hard + +"postcss-minify-selectors@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-minify-selectors@npm:5.1.0" + dependencies: + alphanum-sort: ^1.0.2 + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: a888558bf846bdb60c11109726ede303195004f5ee46d521bde0f2b6a63c3a4eeb884defb4ffd4de700a0b189f570355c4d946d19a8222af190956e192d6c69f + languageName: node + linkType: hard + "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" @@ -12909,6 +13317,145 @@ fsevents@~2.1.2: languageName: node linkType: hard +"postcss-normalize-charset@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-charset@npm:5.0.1" + peerDependencies: + postcss: ^8.2.15 + checksum: c1a51d11faefed0a398ce69bd6450d210e5ad81d49ff165b62d29889621af7e07f61605134a88d83b5a0171ced79f3a7c1b89d9562378468f1142cdb9d862f58 + languageName: node + linkType: hard + +"postcss-normalize-display-values@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-display-values@npm:5.0.1" + dependencies: + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: d202aa431344b720d62de403c4a85aa20d16e90f15619a5685eeaddf69d62814206b4f84f57af868b893f3014c7159cf861efc0e56207dd0d89425f2d985fef9 + languageName: node + linkType: hard + +"postcss-normalize-positions@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-positions@npm:5.0.1" + dependencies: + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: bd49b5f45f629b874ac54804a6642a11ca4d6ffdacbb1243d1ce168faa6440e1a00bc1d7ad7f352b208697ea72b4ebd3720b6142611cf74148cf6213550e7502 + languageName: node + linkType: hard + +"postcss-normalize-repeat-style@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-repeat-style@npm:5.0.1" + dependencies: + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 73935299bd2455adefb4eaf989d4deba823d8bbb5465e1b59b02bcb99d3c7e6cf556f54b4991749ca0be81175c788afa049b0a4b5a959ce314e422be8b7733c0 + languageName: node + linkType: hard + +"postcss-normalize-string@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-string@npm:5.0.1" + dependencies: + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: bc80d4cf11435bef3c435d81a821bb926b887f9b2df25a5dc7128ae3c30c62b1fc07945f9f44a7f0064fc788771b07245cc887accb2b23a41eb26167d1386b45 + languageName: node + linkType: hard + +"postcss-normalize-timing-functions@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-timing-functions@npm:5.0.1" + dependencies: + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 27b4d526834a166b69e3aa59d833a3e2890a502a5b269d4e87044262e8bffc5ceceef32c4ff95915ec314d5410f1c13c3163b87ead12e89bc1e00ef0e50e4691 + languageName: node + linkType: hard + +"postcss-normalize-unicode@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-unicode@npm:5.0.1" + dependencies: + browserslist: ^4.16.0 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 37c1d83bd235ad485407bcf5007dfead93b45a057e379c7691fb671c274ad001b29677655c7a944d47ef1fd85a7f19226274b7dcbc6e951a46ab80c25eceb270 + languageName: node + linkType: hard + +"postcss-normalize-url@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-normalize-url@npm:5.0.2" + dependencies: + is-absolute-url: ^3.0.3 + normalize-url: ^6.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 6a939267f58b5ed7c89e0771bded5dbf31342c0131ffd42d928afb110430622a08ce85b057fe66382407ce8ff4dbd448952278bacf61274c94afe516adaa74d5 + languageName: node + linkType: hard + +"postcss-normalize-whitespace@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-normalize-whitespace@npm:5.0.1" + dependencies: + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 3cc76516771d4e8a256ce6375ed123743f12f25a5fbaa28318607fbc06736525ff00f123e6add05ac8f5e92922762e196c4a970fd695711e2b398749585ca0c7 + languageName: node + linkType: hard + +"postcss-ordered-values@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-ordered-values@npm:5.0.2" + dependencies: + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 479311212309ec73d0e7bbc19fb81345f4eb8d69e504337e774adc3dd6403a53d99c0ed687989b0ddf4bbbfc981e8dfacefa1112fd22179bbf11e11525735eba + languageName: node + linkType: hard + +"postcss-reduce-initial@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-reduce-initial@npm:5.0.1" + dependencies: + browserslist: ^4.16.0 + caniuse-api: ^3.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 0b5b85ec4c3396e689ed667224ec246273f239ea195efa63efe5e9807916d18ae96c747e934de08b48250112885ed1d3ce1b1ba8c12b0bf2072e21746558ada2 + languageName: node + linkType: hard + +"postcss-reduce-transforms@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-reduce-transforms@npm:5.0.1" + dependencies: + cssnano-utils: ^2.0.1 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 632e34a2872b013210077c93054af39ceee9a91670531760ef2f0e52a3db1e8a5c3b93a32ac7f4125746243d3a463297798db709da8b58fc369524d3e17243d2 + languageName: node + linkType: hard + "postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": version: 6.0.4 resolution: "postcss-selector-parser@npm:6.0.4" @@ -12921,6 +13468,41 @@ fsevents@~2.1.2: languageName: node linkType: hard +"postcss-selector-parser@npm:^6.0.5": + version: 6.0.6 + resolution: "postcss-selector-parser@npm:6.0.6" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: 7e4854e82faa14bab0c5affbdf49b67cc0bf3e6fd9b0273e7f72c8ec957b5c5bcb7c64ae3cb6f8fe5b3ef965ec7e235d4e4d1a8868bd02139072e7a545221f09 + languageName: node + linkType: hard + +"postcss-svgo@npm:^5.0.2": + version: 5.0.2 + resolution: "postcss-svgo@npm:5.0.2" + dependencies: + postcss-value-parser: ^4.1.0 + svgo: ^2.3.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 2a43e97df2ead8d5232f04906962f94394a5f72fb31874a2b1571e6946a1ae125b606ff96c34018b2bcd0e641f2141366421ecde2229f44879fd09e05c016c59 + languageName: node + linkType: hard + +"postcss-unique-selectors@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-unique-selectors@npm:5.0.1" + dependencies: + alphanum-sort: ^1.0.2 + postcss-selector-parser: ^6.0.5 + uniqs: ^2.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 56a284c08c2b48bfcaff6ce3576c776d4b950fc228b6564ed5d8f8c51627360136cf742401722b35f80fe29f8f043a324929d25fcc4664bd579254b0c6954571 + languageName: node + linkType: hard + "postcss-value-parser@npm:^3.3.0": version: 3.3.1 resolution: "postcss-value-parser@npm:3.3.1" @@ -12928,7 +13510,7 @@ fsevents@~2.1.2: languageName: node linkType: hard -"postcss-value-parser@npm:^4.1.0": +"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0": version: 4.1.0 resolution: "postcss-value-parser@npm:4.1.0" checksum: 70831403886859289f650550a38889857022c5bbe264fd5d39cfad5207b3e1d33422edc031c1a922f3ae29d0dff98837a8bf126c840374d2b0079e7d57cf7d71 @@ -12968,6 +13550,17 @@ fsevents@~2.1.2: languageName: node linkType: hard +"postcss@npm:^8.3.6": + version: 8.3.6 + resolution: "postcss@npm:8.3.6" + dependencies: + colorette: ^1.2.2 + nanoid: ^3.1.23 + source-map-js: ^0.6.2 + checksum: 515c26472861ce0f3b0a7945b9ac4732756d2aab6b12950137f72c7c6d90967136ba56e878815edcbf132c5643005dad1e9bbcb14139a948802af10245a8f6e3 + languageName: node + linkType: hard + "preferred-pm@npm:^3.0.0": version: 3.0.3 resolution: "preferred-pm@npm:3.0.3" @@ -14831,6 +15424,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"source-map-js@npm:^0.6.2": + version: 0.6.2 + resolution: "source-map-js@npm:0.6.2" + checksum: 8e2f992cfbedb71286fa6f6e011e2fa756b7f4d944ea4b0f49e9ff6ea34ad0a17dc655f067fdddb32efa7b45000e8c59e47a2e875d91744c86a56329b5f58b32 + languageName: node + linkType: hard + "source-map-resolve@npm:^0.5.0": version: 0.5.3 resolution: "source-map-resolve@npm:0.5.3" @@ -15041,6 +15641,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"stable@npm:^0.1.8": + version: 0.1.8 + resolution: "stable@npm:0.1.8" + checksum: a430967bb543d4d1a5cbec81b48034006a467464f5d4bdf72bd7279da406956e1f8edaa56aab74ec17cc4e56ee61668dc4f1b380255507cf2f70c6ba589f7c48 + languageName: node + linkType: hard + "stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "stack-utils@npm:2.0.3" @@ -15380,6 +15987,18 @@ fsevents@~2.1.2: languageName: node linkType: hard +"stylehacks@npm:^5.0.1": + version: 5.0.1 + resolution: "stylehacks@npm:5.0.1" + dependencies: + browserslist: ^4.16.0 + postcss-selector-parser: ^6.0.4 + peerDependencies: + postcss: ^8.2.15 + checksum: eb0d80f973c3b2d9680c979a1eeb34be403a070419b6bc13b1f1188259de1c976d03b5a74bb1adc4dfcb24bb316512afb27ec6f30479a6b6c352061fc9e43038 + languageName: node + linkType: hard + "stylis-rule-sheet@npm:0.0.10": version: 0.0.10 resolution: "stylis-rule-sheet@npm:0.0.10" @@ -15442,6 +16061,23 @@ fsevents@~2.1.2: languageName: node linkType: hard +"svgo@npm:^2.3.0": + version: 2.5.0 + resolution: "svgo@npm:2.5.0" + dependencies: + "@trysound/sax": 0.1.1 + colorette: ^1.3.0 + commander: ^7.2.0 + css-select: ^4.1.3 + css-tree: ^1.1.3 + csso: ^4.2.0 + stable: ^0.1.8 + bin: + svgo: bin/svgo + checksum: 8cbc20b0aee682eddc036507c3cd96b3ec379b6bbf891287cdf09735451205b20f814dedbca7d851d2ef0cbab35cb76006304fadef00ec9c8ff936945853973b + languageName: node + linkType: hard + "swap-case@npm:^1.1.0": version: 1.1.2 resolution: "swap-case@npm:1.1.2" @@ -15607,6 +16243,7 @@ fsevents@~2.1.2: "@babel/core": ^7.13.10 "@types/mini-css-extract-plugin": ^1.2.2 "@types/minimist": ^1 + "@types/prettier": ^2 "@types/serve-handler": ^6 "@types/webpack-dev-server": ^3.11.1 "@vanilla-extract/esbuild-plugin": "*" @@ -15614,12 +16251,15 @@ fsevents@~2.1.2: "@vanilla-extract/webpack-plugin": "*" babel-loader: ^8.2.2 css-loader: ^5.2.4 + cssnano: ^5.0.8 got: ^11.8.2 html-webpack-plugin: ^5.3.1 mini-css-extract-plugin: ^1.5.1 minimist: ^1.2.5 path-browserify: ^1.0.1 portfinder: ^1.0.28 + postcss: ^8.3.6 + prettier: ^2.3.2 serve-handler: ^6.1.3 snowpack: ^3.5.1 style-loader: ^2.0.0 @@ -15662,6 +16302,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"timsort@npm:^0.3.0": + version: 0.3.0 + resolution: "timsort@npm:0.3.0" + checksum: d8300c3ecf1a3751413de82b04ad283b461ab6fb1041820c825d13b4ae74526e2101ab5fb84c57a0c6e1f4d7f67173b5d8754ed8bb7447c6a9ce1db8562eb82c + languageName: node + linkType: hard + "tiny-emitter@npm:^2.0.0": version: 2.1.0 resolution: "tiny-emitter@npm:2.1.0" @@ -16197,6 +16844,13 @@ typescript@^4.1.3: languageName: node linkType: hard +"uniqs@npm:^2.0.0": + version: 2.0.0 + resolution: "uniqs@npm:2.0.0" + checksum: f6467e9cb94e25d40e25dc600bec69ec5c6c3ba58ec168fecfd2a74cd8a92f54383dfbcbb9f8a50ba389c7e6e9cfd08e03ae80391792357d6a4e616f907af3f6 + languageName: node + linkType: hard + "unique-filename@npm:^1.1.1": version: 1.1.1 resolution: "unique-filename@npm:1.1.1" @@ -16683,6 +17337,13 @@ typescript@^4.1.3: languageName: node linkType: hard +"vendors@npm:^1.0.3": + version: 1.0.4 + resolution: "vendors@npm:1.0.4" + checksum: f49cf918e866901eb36e0dc85970fde99929a3f298e1c55b4e20517eda18e16fb57da3eee72801e7d371f9b33684492879ed5ceebae4d1bed48c6e1a62ef6e58 + languageName: node + linkType: hard + "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" @@ -17402,6 +18063,13 @@ typescript@^4.1.3: languageName: node linkType: hard +"yaml@npm:^1.10.2": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 8d72062ea3dbfd8fae3d6ddd5b741c2aeb5835a31b0719bf14fac71dd84adde0829763d6fbac46387309da00af1440194c796da5efc349b0baf9de39d82ae69e + languageName: node + linkType: hard + "yargs-parser@npm:^13.1.2": version: 13.1.2 resolution: "yargs-parser@npm:13.1.2"