diff --git a/.changeset/nine-brooms-nail.md b/.changeset/nine-brooms-nail.md new file mode 100644 index 00000000..253e33fa --- /dev/null +++ b/.changeset/nine-brooms-nail.md @@ -0,0 +1,7 @@ +--- +'@cobalt-ui/plugin-css': patch +'@cobalt-ui/core': patch +'@cobalt-ui/cli': patch +--- + +Replace better-color-tools with culori for faster, more accurate color operations diff --git a/docs/package.json b/docs/package.json index 2ca70d37..c62691ad 100644 --- a/docs/package.json +++ b/docs/package.json @@ -22,7 +22,7 @@ "@cobalt-ui/core": "workspace:*", "@cobalt-ui/plugin-css": "workspace:*", "@cobalt-ui/plugin-sass": "workspace:*", - "astro": "^2.9.3", + "astro": "^2.9.4", "npm-run-all": "^4.1.5", "sass": "^1.64.1", "shiki": "^0.14.3", diff --git a/docs/src/pages/docs/tokens/index.astro b/docs/src/pages/docs/tokens/index.astro index 23e2290e..fbb41e87 100644 --- a/docs/src/pages/docs/tokens/index.astro +++ b/docs/src/pages/docs/tokens/index.astro @@ -59,7 +59,7 @@ const tokenDef = { $value string - Though the spec limits valid colors to hex, Cobalt allows any valid CSS color, including OKLAB and OKLCH (parsed by better-color-tools) + Though the spec limits valid colors to hex, Cobalt allows any color (parsed by culori, a fast and accurate color library) diff --git a/examples/salesforce/package.json b/examples/salesforce/package.json index c67be4c3..4d39f297 100644 --- a/examples/salesforce/package.json +++ b/examples/salesforce/package.json @@ -13,7 +13,7 @@ "@cobalt-ui/plugin-js": "workspace:*", "@cobalt-ui/plugin-sass": "workspace:*", "@salesforce-ux/design-system": "^2.21.3", - "better-color-tools": "^0.12.3", + "culori": "^3.2.0", "postcss": "^8.4.26" } } diff --git a/examples/salesforce/scripts/update.js b/examples/salesforce/scripts/update.js index eb696102..96ba3da1 100644 --- a/examples/salesforce/scripts/update.js +++ b/examples/salesforce/scripts/update.js @@ -1,5 +1,5 @@ -import color from 'better-color-tools'; import themeOne from '@salesforce-ux/design-system/design-tokens/dist/theme-one-salesforce.common.js'; +import {formatHex, useMode, modeRgb} from 'culori/fn'; import fs from 'node:fs'; import {URL} from 'node:url'; @@ -9,6 +9,7 @@ const schema = JSON.parse(fs.readFileSync(tokensPath)); // color const palette = Object.entries(themeOne).filter(([k]) => k.startsWith('palette')); palette.sort((a, b) => a[0].localeCompare(b[0], 'en-us', {numeric: true})); +const rgb = useMode(modeRgb); for (const [colorName, value] of palette) { schema.tokens.palette[ colorName @@ -18,7 +19,7 @@ for (const [colorName, value] of palette) { .toLocaleLowerCase() ] = { type: 'color', - value: color.from(value).hex, + value: formatHex(rgb(value)), }; } diff --git a/packages/cli/package.json b/packages/cli/package.json index 0dc0e6a3..3a6bb922 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -42,8 +42,9 @@ "dependencies": { "@cobalt-ui/core": "^1.3.0", "@cobalt-ui/utils": "^1.1.1", - "better-color-tools": "^0.12.3", + "@types/culori": "^2.0.0", "chokidar": "^3.5.3", + "culori": "^3.2.0", "dotenv": "^16.3.1", "js-yaml": "^4.1.0", "piscina": "^3.2.0", @@ -51,8 +52,8 @@ "yargs-parser": "^21.1.1" }, "devDependencies": { - "@types/node": "^20.4.2", - "execa": "^7.1.1", + "@types/node": "^20.4.5", + "execa": "^7.2.0", "figma-api": "^1.11.0", "npm-run-all": "^4.1.5", "vitest": "^0.33.0" diff --git a/packages/core/package.json b/packages/core/package.json index 6d56057f..1da52bd0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,11 +38,12 @@ }, "dependencies": { "@cobalt-ui/utils": "^1.1.1", - "better-color-tools": "^0.12.3" + "@types/culori": "^2.0.0", + "culori": "^3.2.0" }, "devDependencies": { - "@types/node": "^20.4.2", - "esbuild": "^0.18.12", + "@types/node": "^20.4.5", + "esbuild": "^0.18.17", "npm-run-all": "^4.1.5", "vitest": "^0.33.0" } diff --git a/packages/core/src/parse/tokens/color.ts b/packages/core/src/parse/tokens/color.ts index 48cceefc..dbba70a8 100644 --- a/packages/core/src/parse/tokens/color.ts +++ b/packages/core/src/parse/tokens/color.ts @@ -1,4 +1,4 @@ -import color from 'better-color-tools'; +import {formatHex, formatHex8, parse} from 'culori'; import type {ParsedColorToken} from '../../token.js'; export interface ParseColorOptions { @@ -17,15 +17,13 @@ export interface ParseColorOptions { */ export function normalizeColorValue(value: unknown, options: ParseColorOptions): ParsedColorToken['$value'] { if (!value) throw new Error('missing value'); - if (typeof value === 'string' || typeof value === 'number') { - try { - if (options.convertToHex === false && typeof value === 'string') { - return value; - } - return color.from(value).hex; - } catch (err) { - throw new Error(`invalid color "${value}"`); + if (typeof value === 'string') { + if (options.convertToHex === false) { + return value; } + const parsed = parse(value); + if (!parsed) throw new Error(`invalid color "${value}"`); + return typeof parsed.alpha === 'number' && parsed.alpha < 1 ? formatHex8(parsed) : formatHex(parsed); } throw new Error(`expected string, received ${typeof value}`); } diff --git a/packages/core/test/tokens-studio.test.ts b/packages/core/test/tokens-studio.test.ts index dd5adaec..00e923a1 100644 --- a/packages/core/test/tokens-studio.test.ts +++ b/packages/core/test/tokens-studio.test.ts @@ -84,7 +84,6 @@ describe('Spacing', () => { describe('Color', () => { test('CSS color', () => { - // note: better-color-tools will parse any CSS-valid color so we don’t need to be exhaustive here const json = { global: { color: { diff --git a/packages/plugin-css/package.json b/packages/plugin-css/package.json index 8089f743..3c0d17eb 100644 --- a/packages/plugin-css/package.json +++ b/packages/plugin-css/package.json @@ -31,15 +31,16 @@ }, "dependencies": { "@cobalt-ui/utils": "^1.1.1", - "better-color-tools": "^0.12.3", + "@types/culori": "^2.0.0", + "@types/mime": "^3.0.1", + "culori": "^3.2.0", "mime": "^3.0.0", "svgo": "^3.0.2" }, "devDependencies": { "@cobalt-ui/cli": "^1.3.0", "@cobalt-ui/core": "^1.3.0", - "@types/mime": "^2.0.3", - "@types/node": "^20.4.2", + "@types/node": "^20.4.5", "npm-run-all": "^4.1.5", "vitest": "^0.33.0" } diff --git a/packages/plugin-css/src/index.ts b/packages/plugin-css/src/index.ts index e36bcf75..2c105c70 100644 --- a/packages/plugin-css/src/index.ts +++ b/packages/plugin-css/src/index.ts @@ -19,7 +19,7 @@ import type { Plugin, ResolvedConfig, } from '@cobalt-ui/core'; -import color from 'better-color-tools'; +import {converter, formatCss} from 'culori'; import {indent, isAlias, kebabinate, FG_YELLOW, RESET} from '@cobalt-ui/utils'; import {encode, formatFontNames} from './util.js'; @@ -44,6 +44,9 @@ export interface Options { p3?: boolean; } +/** ⚠️ Important! We do NOT want to parse as P3. We want to parse as sRGB, then expand 1:1 to P3. @see https://webkit.org/blog/10042/wide-gamut-color-in-css-with-display-p3/ */ +const rgb = converter('rgb'); + export default function pluginCSS(options?: Options): Plugin { let config: ResolvedConfig; let filename = options?.filename || './tokens.css'; @@ -70,7 +73,9 @@ export default function pluginCSS(options?: Options): Plugin { if (!matches || !matches.length) continue; let newVal = line; for (const c of matches) { - newVal = newVal.replace(c, color.from(c).p3); + const parsed = rgb(c); + if (!parsed) throw new Error(`invalid color "${c}"`); + newVal = newVal.replace(c, formatCss({...parsed, mode: 'p3'})); } output.push(newVal); } diff --git a/packages/plugin-css/test/border/want.css b/packages/plugin-css/test/border/want.css index 0e073193..a63b4172 100644 --- a/packages/plugin-css/test/border/want.css +++ b/packages/plugin-css/test/border/want.css @@ -22,17 +22,17 @@ @supports (color: color(display-p3 1 1 1)) { :root { - --ds-color-gray: color(display-p3 0.329412 0.278431 0.254902); - --ds-border: 1px solid color(display-p3 0.05098 0.011765 0); + --ds-color-gray: color(display-p3 0.32941176470588235 0.2784313725490196 0.2549019607843137); + --ds-border: 1px solid color(display-p3 0.050980392156862744 0.011764705882352941 0); } [data-color-theme="light"] { - --ds-color-gray: color(display-p3 0.329412 0.278431 0.254902); - --ds-border: 1px solid color(display-p3 0.05098 0.011765 0); + --ds-color-gray: color(display-p3 0.32941176470588235 0.2784313725490196 0.2549019607843137); + --ds-border: 1px solid color(display-p3 0.050980392156862744 0.011764705882352941 0); } [data-color-theme="dark"] { - --ds-color-gray: color(display-p3 0.733333 0.713725 0.701961); + --ds-color-gray: color(display-p3 0.7333333333333333 0.7137254901960784 0.7019607843137254); --ds-border: 1px solid color(display-p3 1 1 1); } } diff --git a/packages/plugin-css/test/color/want.css b/packages/plugin-css/test/color/want.css index 178af654..ab383cb3 100644 --- a/packages/plugin-css/test/color/want.css +++ b/packages/plugin-css/test/color/want.css @@ -47,35 +47,35 @@ @supports (color: color(display-p3 1 1 1)) { :root { - --ds-color-blue: color(display-p3 0.129412 0.545098 1); - --ds-gradient: color(display-p3 0.129412 0.545098 1) 0%, color(display-p3 0.909804 0.352941 0.678431) 100%; + --ds-color-blue: color(display-p3 0.12941176470588237 0.5450980392156862 1); + --ds-gradient: color(display-p3 0.12941176470588237 0.5450980392156862 1) 0%, color(display-p3 0.9098039215686274 0.35294117647058826 0.6784313725490196) 100%; } [data-color-theme="light"] { - --ds-color-blue: color(display-p3 0.129412 0.545098 1); + --ds-color-blue: color(display-p3 0.12941176470588237 0.5450980392156862 1); } [data-color-theme="dark"] { - --ds-color-blue: color(display-p3 0.219608 0.545098 0.992157); + --ds-color-blue: color(display-p3 0.2196078431372549 0.5450980392156862 0.9921568627450981); } [data-color-theme="light-colorblind"] { - --ds-color-blue: color(display-p3 0.129412 0.545098 1); + --ds-color-blue: color(display-p3 0.12941176470588237 0.5450980392156862 1); } [data-color-theme="light-high-contrast"] { - --ds-color-blue: color(display-p3 0.066667 0.407843 0.890196); + --ds-color-blue: color(display-p3 0.06666666666666667 0.40784313725490196 0.8901960784313725); } [data-color-theme="dark-dimmed"] { - --ds-color-blue: color(display-p3 0.254902 0.517647 0.894118); + --ds-color-blue: color(display-p3 0.2549019607843137 0.5176470588235295 0.8941176470588236); } [data-color-theme="high-contrast"] { - --ds-color-blue: color(display-p3 0.25098 0.619608 1); + --ds-color-blue: color(display-p3 0.25098039215686274 0.6196078431372549 1); } [data-color-theme="dark-colorblind"] { - --ds-color-blue: color(display-p3 0.219608 0.545098 0.992157); + --ds-color-blue: color(display-p3 0.2196078431372549 0.5450980392156862 0.9921568627450981); } } diff --git a/packages/plugin-js/package.json b/packages/plugin-js/package.json index 7bb3ee0c..4bd931a0 100644 --- a/packages/plugin-js/package.json +++ b/packages/plugin-js/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@cobalt-ui/cli": "^1.3.0", "@cobalt-ui/core": "^1.3.0", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.1", "npm-run-all": "^4.1.5", "vitest": "^0.33.0" } diff --git a/packages/plugin-sass/package.json b/packages/plugin-sass/package.json index 40eb727d..c4fa3027 100644 --- a/packages/plugin-sass/package.json +++ b/packages/plugin-sass/package.json @@ -30,7 +30,8 @@ "@cobalt-ui/cli": "^1.3.0" }, "dependencies": { - "@cobalt-ui/utils": "^1.1.1", + "@cobalt-ui/utils": "^1.1.0", + "@types/mime": "^3.0.1", "mime": "^3.0.0", "svgo": "^3.0.2" }, @@ -38,8 +39,7 @@ "@cobalt-ui/cli": "^1.3.0", "@cobalt-ui/core": "^1.3.0", "@cobalt-ui/plugin-css": "^1.3.0", - "@types/mime": "^3.0.1", - "@types/node": "^20.4.2", + "@types/node": "^20.4.5", "npm-run-all": "^4.1.5", "vitest": "^0.33.0" } diff --git a/packages/plugin-sass/test/plugin-css/tokens.css b/packages/plugin-sass/test/plugin-css/tokens.css index 471747cf..de622eec 100644 --- a/packages/plugin-sass/test/plugin-css/tokens.css +++ b/packages/plugin-sass/test/plugin-css/tokens.css @@ -36,9 +36,9 @@ @supports (color: color(display-p3 1 1 1)) { :root { - --ds-border-std: 1px solid color(display-p3 0.05098 0.011765 0); + --ds-border-std: 1px solid color(display-p3 0.050980392156862744 0.011764705882352941 0); --ds-color-green: color(display-p3 0 1 0); --ds-gradient-g-b: color(display-p3 0 1 0) 0%, color(display-p3 0 0 1) 100%; - --ds-shadow: 0 4px 8px 0 color(display-p3 0 0 0/0.10196); + --ds-shadow: 0 4px 8px 0 color(display-p3 0 0 0 / 0.10196078431372549); } } diff --git a/packages/utils/package.json b/packages/utils/package.json index 53bb1124..88791b3c 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -14,6 +14,6 @@ "dev": "tsc -w" }, "devDependencies": { - "@types/node": "^20.4.2" + "@types/node": "^20.4.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c49626e..914e6f6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,8 +64,8 @@ importers: specifier: workspace:* version: link:../packages/plugin-sass astro: - specifier: ^2.9.3 - version: 2.9.3(sass@1.64.1) + specifier: ^2.9.4 + version: 2.9.4(sass@1.64.1) npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -171,9 +171,9 @@ importers: '@salesforce-ux/design-system': specifier: ^2.21.3 version: 2.21.3(postcss@8.4.26) - better-color-tools: - specifier: ^0.12.3 - version: 0.12.3 + culori: + specifier: ^3.2.0 + version: 3.2.0 postcss: specifier: ^8.4.26 version: 8.4.26 @@ -201,12 +201,15 @@ importers: '@cobalt-ui/utils': specifier: ^1.1.1 version: link:../utils - better-color-tools: - specifier: ^0.12.3 - version: 0.12.3 + '@types/culori': + specifier: ^2.0.0 + version: 2.0.0 chokidar: specifier: ^3.5.3 version: 3.5.3 + culori: + specifier: ^3.2.0 + version: 3.2.0 dotenv: specifier: ^16.3.1 version: 16.3.1 @@ -224,11 +227,11 @@ importers: version: 21.1.1 devDependencies: '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.4.5 + version: 20.4.5 execa: - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.2.0 + version: 7.2.0 figma-api: specifier: ^1.11.0 version: 1.11.0 @@ -244,16 +247,19 @@ importers: '@cobalt-ui/utils': specifier: ^1.1.1 version: link:../utils - better-color-tools: - specifier: ^0.12.3 - version: 0.12.3 + '@types/culori': + specifier: ^2.0.0 + version: 2.0.0 + culori: + specifier: ^3.2.0 + version: 3.2.0 devDependencies: '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.4.5 + version: 20.4.5 esbuild: - specifier: ^0.18.12 - version: 0.18.12 + specifier: ^0.18.17 + version: 0.18.17 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -266,9 +272,15 @@ importers: '@cobalt-ui/utils': specifier: ^1.1.1 version: link:../utils - better-color-tools: - specifier: ^0.12.3 - version: 0.12.3 + '@types/culori': + specifier: ^2.0.0 + version: 2.0.0 + '@types/mime': + specifier: ^3.0.1 + version: 3.0.1 + culori: + specifier: ^3.2.0 + version: 3.2.0 mime: specifier: ^3.0.0 version: 3.0.0 @@ -282,12 +294,9 @@ importers: '@cobalt-ui/core': specifier: ^1.3.0 version: link:../core - '@types/mime': - specifier: ^2.0.3 - version: 2.0.3 '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.4.5 + version: 20.4.5 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -308,8 +317,8 @@ importers: specifier: ^1.3.0 version: link:../core fast-glob: - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.3.1 + version: 3.3.1 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -320,8 +329,11 @@ importers: packages/plugin-sass: dependencies: '@cobalt-ui/utils': - specifier: ^1.1.1 + specifier: ^1.1.0 version: link:../utils + '@types/mime': + specifier: ^3.0.1 + version: 3.0.1 mime: specifier: ^3.0.0 version: 3.0.0 @@ -338,12 +350,9 @@ importers: '@cobalt-ui/plugin-css': specifier: ^1.3.0 version: link:../plugin-css - '@types/mime': - specifier: ^3.0.1 - version: 3.0.1 '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.4.5 + version: 20.4.5 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -354,8 +363,8 @@ importers: packages/utils: devDependencies: '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.4.5 + version: 20.4.5 packages: @@ -376,8 +385,8 @@ packages: resolution: {integrity: sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==} dev: false - /@astrojs/compiler@1.6.2: - resolution: {integrity: sha512-2grH0lSm/Su88ZUd1kF0OdR/CT4ClWKvCwVz4yDdpgLgpzXhs1LdO2V58YfSqnx/z+G5EBWv6yEkp3tDG3GQYQ==} + /@astrojs/compiler@1.6.3: + resolution: {integrity: sha512-n0xTuBznKspc0plk6RHBOlSv/EwQGyMNSxEOPj7HMeiRNnXX4woeSopN9hQsLkqraDds1eRvB4u99buWgVNJig==} dev: true /@astrojs/internal-helpers@0.1.1: @@ -388,7 +397,7 @@ packages: resolution: {integrity: sha512-gssRxLGb8XnvKpqSzrDW5jdzdFnXD7eBXVkPCkkt2hv7Qzb+SAzv6hVgMok3jDCxpR1aeB+XNd9Qszj2h29iog==} hasBin: true dependencies: - '@astrojs/compiler': 1.6.2 + '@astrojs/compiler': 1.6.3 '@jridgewell/trace-mapping': 0.3.18 '@vscode/emmet-helper': 2.9.2 events: 3.3.0 @@ -403,13 +412,13 @@ packages: vscode-uri: 3.0.7 dev: true - /@astrojs/markdown-remark@2.2.1(astro@2.9.3): + /@astrojs/markdown-remark@2.2.1(astro@2.9.4): resolution: {integrity: sha512-VF0HRv4GpC1XEMLnsKf6jth7JSmlt9qpqP0josQgA2eSpCIAC/Et+y94mgdBIZVBYH/yFnMoIxgKVe93xfO2GA==} peerDependencies: astro: ^2.5.0 dependencies: '@astrojs/prism': 2.1.2 - astro: 2.9.3(sass@1.64.1) + astro: 2.9.4(sass@1.64.1) github-slugger: 1.5.0 import-meta-resolve: 2.2.2 rehype-raw: 6.1.1 @@ -944,15 +953,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.18.12: - resolution: {integrity: sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.18.17: resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} engines: {node: '>=12'} @@ -971,15 +971,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.12: - resolution: {integrity: sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.17: resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} engines: {node: '>=12'} @@ -998,15 +989,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.12: - resolution: {integrity: sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.17: resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} engines: {node: '>=12'} @@ -1025,15 +1007,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.12: - resolution: {integrity: sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.17: resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} engines: {node: '>=12'} @@ -1052,15 +1025,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.12: - resolution: {integrity: sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.17: resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} engines: {node: '>=12'} @@ -1079,15 +1043,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.12: - resolution: {integrity: sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.17: resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==} engines: {node: '>=12'} @@ -1106,15 +1061,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.12: - resolution: {integrity: sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.17: resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} engines: {node: '>=12'} @@ -1133,15 +1079,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.12: - resolution: {integrity: sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.17: resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} engines: {node: '>=12'} @@ -1160,15 +1097,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.12: - resolution: {integrity: sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.17: resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} engines: {node: '>=12'} @@ -1187,15 +1115,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.12: - resolution: {integrity: sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.17: resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} engines: {node: '>=12'} @@ -1214,15 +1133,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.12: - resolution: {integrity: sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.18.17: resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} engines: {node: '>=12'} @@ -1241,15 +1151,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.12: - resolution: {integrity: sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.17: resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} engines: {node: '>=12'} @@ -1268,15 +1169,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.12: - resolution: {integrity: sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.17: resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} engines: {node: '>=12'} @@ -1295,15 +1187,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.12: - resolution: {integrity: sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.17: resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} engines: {node: '>=12'} @@ -1322,15 +1205,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.12: - resolution: {integrity: sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.17: resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} engines: {node: '>=12'} @@ -1349,15 +1223,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.12: - resolution: {integrity: sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.17: resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} engines: {node: '>=12'} @@ -1376,15 +1241,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.12: - resolution: {integrity: sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.17: resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} engines: {node: '>=12'} @@ -1403,15 +1259,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.12: - resolution: {integrity: sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.17: resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} engines: {node: '>=12'} @@ -1430,15 +1277,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.12: - resolution: {integrity: sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.17: resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} engines: {node: '>=12'} @@ -1457,15 +1295,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.12: - resolution: {integrity: sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.17: resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} engines: {node: '>=12'} @@ -1484,15 +1313,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.12: - resolution: {integrity: sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.17: resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} engines: {node: '>=12'} @@ -1511,15 +1331,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.12: - resolution: {integrity: sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.17: resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} engines: {node: '>=12'} @@ -1746,6 +1557,10 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true + /@types/culori@2.0.0: + resolution: {integrity: sha512-bKpEra39sQS9UZ+1JoWhuGJEzwKS0dUkNCohVYmn6CAEBkqyIXimKiPDRZWtiOB7sKgkWMaTUpHFimygRoGIlg==} + dev: false + /@types/debug@4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: @@ -1782,13 +1597,9 @@ packages: '@types/unist': 2.0.7 dev: true - /@types/mime@2.0.3: - resolution: {integrity: sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==} - dev: true - /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true + dev: false /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} @@ -1812,8 +1623,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@20.4.2: - resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} + /@types/node@20.4.5: + resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} dev: true /@types/normalize-package-data@2.4.1: @@ -1991,9 +1802,9 @@ packages: /@vitest/snapshot@0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.1 + magic-string: 0.30.2 pathe: 1.1.1 - pretty-format: 29.6.1 + pretty-format: 29.6.2 dev: true /@vitest/spy@0.33.0: @@ -2007,7 +1818,7 @@ packages: dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 - pretty-format: 29.6.1 + pretty-format: 29.6.2 dev: true /@vscode/emmet-helper@2.9.2: @@ -2081,8 +1892,8 @@ packages: engines: {node: '>=12'} dev: true - /ansi-sequence-parser@1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} dev: true /ansi-styles@3.2.1: @@ -2172,8 +1983,8 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /astro@2.9.3(sass@1.64.1): - resolution: {integrity: sha512-EcFYnJytMgDhBf1MxWIG1GNwfDL2yRvVt+4aguYbcFDNz8EjLKgpLYbbTzR2VlIQu1vpxImZZ0bmPy8Hd+tAfw==} + /astro@2.9.4(sass@1.64.1): + resolution: {integrity: sha512-6mIAFTkfrLn1aAOVO7clTz3NqJNyPdJXLZEkAFTl+s5iuaIdoYnuqItkcjWP1qoEeGPF+0w9rTr0388pkTK+lg==} engines: {node: '>=16.12.0', npm: '>=6.14.0'} hasBin: true peerDependencies: @@ -2182,10 +1993,10 @@ packages: sharp: optional: true dependencies: - '@astrojs/compiler': 1.6.2 + '@astrojs/compiler': 1.6.3 '@astrojs/internal-helpers': 0.1.1 '@astrojs/language-server': 1.0.8 - '@astrojs/markdown-remark': 2.2.1(astro@2.9.3) + '@astrojs/markdown-remark': 2.2.1(astro@2.9.4) '@astrojs/telemetry': 2.1.1 '@astrojs/webapi': 2.2.0 '@babel/core': 7.22.9 @@ -2275,9 +2086,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /better-color-tools@0.12.3: - resolution: {integrity: sha512-0XEdDUO1JpAM1++x7dYJA6ggRypAkGbGHWsD/eirddkC8p+5qNU1nbfOwraqMDsJr6ttktpeqEI0VH3VS+ZkPw==} - /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -2352,7 +2160,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.471 + electron-to-chromium: 1.4.475 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true @@ -2685,6 +2493,10 @@ packages: stream-transform: 2.1.3 dev: true + /culori@3.2.0: + resolution: {integrity: sha512-HIEbTSP7vs1mPq/2P9In6QyFE0Tkpevh0k9a+FkjhD+cwsYm9WRSbn4uMdW9O0yXlNYC3ppxL3gWWPOcvEl57w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true @@ -2755,7 +2567,7 @@ packages: dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 - execa: 7.1.1 + execa: 7.2.0 titleize: 3.0.0 dev: true @@ -2889,8 +2701,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.471: - resolution: {integrity: sha512-GpmGRC1vTl60w/k6YpQ18pSiqnmr0j3un//5TV1idPi6aheNfkT1Ye71tMEabWyNDO6sBMgAR+95Eb0eUUr1tA==} + /electron-to-chromium@1.4.475: + resolution: {integrity: sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==} dev: true /emmet@2.4.5: @@ -2926,87 +2738,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - dev: true - - /es-abstract@1.21.3: - resolution: {integrity: sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.10 - dev: true - /es-abstract@1.22.1: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} @@ -3110,36 +2841,6 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /esbuild@0.18.12: - resolution: {integrity: sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.12 - '@esbuild/android-arm64': 0.18.12 - '@esbuild/android-x64': 0.18.12 - '@esbuild/darwin-arm64': 0.18.12 - '@esbuild/darwin-x64': 0.18.12 - '@esbuild/freebsd-arm64': 0.18.12 - '@esbuild/freebsd-x64': 0.18.12 - '@esbuild/linux-arm': 0.18.12 - '@esbuild/linux-arm64': 0.18.12 - '@esbuild/linux-ia32': 0.18.12 - '@esbuild/linux-loong64': 0.18.12 - '@esbuild/linux-mips64el': 0.18.12 - '@esbuild/linux-ppc64': 0.18.12 - '@esbuild/linux-riscv64': 0.18.12 - '@esbuild/linux-s390x': 0.18.12 - '@esbuild/linux-x64': 0.18.12 - '@esbuild/netbsd-x64': 0.18.12 - '@esbuild/openbsd-x64': 0.18.12 - '@esbuild/sunos-x64': 0.18.12 - '@esbuild/win32-arm64': 0.18.12 - '@esbuild/win32-ia32': 0.18.12 - '@esbuild/win32-x64': 0.18.12 - dev: true - /esbuild@0.18.17: resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} engines: {node: '>=12'} @@ -3357,8 +3058,8 @@ packages: strip-final-newline: 3.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -3404,17 +3105,6 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -3552,7 +3242,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 functions-have-names: 1.2.3 dev: true @@ -3933,7 +3623,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true /is-arrayish@0.2.1: @@ -4344,8 +4034,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.1: - resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + /magic-string@0.30.2: + resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -4848,15 +4538,6 @@ packages: engines: {node: '>= 8.0.0'} dev: true - /mlly@1.3.0: - resolution: {integrity: sha512-HT5mcgIQKkOrZecOjOX3DJorTikWXwsBfpcr/MGBkhfWcjiqvnaL/9ppxvIUXfjT6xt4DVIAsN9fMUz1ev4bIw==} - dependencies: - acorn: 8.10.0 - pathe: 1.1.1 - pkg-types: 1.0.3 - ufo: 1.1.2 - dev: true - /mlly@1.4.0: resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} dependencies: @@ -5298,7 +4979,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.3.0 + mlly: 1.4.0 pathe: 1.1.1 dev: true @@ -5346,7 +5027,7 @@ packages: resolution: {integrity: sha512-pYZXSbdq0eElvzoIMArzv1SBn1NUXzopjlcnt6Ql8VW32PjC12NovwBjXJ6rh8qQLi7vF8jNqAbraKW03UPfag==} engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} dependencies: - '@astrojs/compiler': 1.6.2 + '@astrojs/compiler': 1.6.3 prettier: 2.8.8 sass-formatter: 0.7.6 synckit: 0.8.5 @@ -5358,8 +5039,8 @@ packages: hasBin: true dev: true - /pretty-format@29.6.1: - resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} + /pretty-format@29.6.2: + resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.0 @@ -5807,7 +5488,7 @@ packages: /shiki@0.14.3: resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} dependencies: - ansi-sequence-parser: 1.1.0 + ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 @@ -5942,7 +5623,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true /string.prototype.trim@1.2.7: @@ -5951,7 +5632,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true /string.prototype.trimend@1.0.6: @@ -5959,7 +5640,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true /string.prototype.trimstart@1.0.6: @@ -5967,7 +5648,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true /string_decoder@1.3.0: @@ -6443,7 +6124,7 @@ packages: vfile-message: 3.1.4 dev: true - /vite-node@0.33.0(@types/node@20.4.2): + /vite-node@0.33.0(@types/node@20.4.5): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -6453,7 +6134,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.7(@types/node@20.4.2) + vite: 4.4.7(@types/node@20.4.5) transitivePeerDependencies: - '@types/node' - less @@ -6465,7 +6146,7 @@ packages: - terser dev: true - /vite@4.4.7(@types/node@20.4.2): + /vite@4.4.7(@types/node@20.4.5): resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -6493,7 +6174,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.2 + '@types/node': 20.4.5 esbuild: 0.18.17 postcss: 8.4.27 rollup: 3.26.3 @@ -6581,7 +6262,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.4.2 + '@types/node': 20.4.5 '@vitest/expect': 0.33.0 '@vitest/runner': 0.33.0 '@vitest/snapshot': 0.33.0 @@ -6593,15 +6274,15 @@ packages: chai: 4.3.7 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.7(@types/node@20.4.2) - vite-node: 0.33.0(@types/node@20.4.2) + vite: 4.4.7(@types/node@20.4.5) + vite-node: 0.33.0(@types/node@20.4.5) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6722,18 +6403,6 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.10: - resolution: {integrity: sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: true - /which-typed-array@1.1.11: resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} @@ -6745,18 +6414,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: true - /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true