From a69120cad76101730a7fc9aefa146025da559cae Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Mon, 22 Apr 2024 12:10:51 +0200 Subject: [PATCH] chore: Update `cli` (#1851) --- apps/storefront/tokens/altinn.ts | 4 +- apps/storefront/tokens/brreg.ts | 4 +- apps/storefront/tokens/digdir.ts | 4 +- apps/storefront/tokens/tilsynet.ts | 4 +- package.json | 2 +- packages/cli/bin/designsystemet.ts | 48 ++ packages/cli/declarations.d.ts | 7 - packages/cli/package.json | 23 +- packages/cli/src/build.ts | 224 ------ packages/cli/src/codemods/migrations.ts | 8 + .../cli/src/codemods/migrations/light-dark.ts | 59 +- packages/cli/src/formatters.ts | 125 ---- packages/cli/src/tokens/build.ts | 172 +++++ packages/cli/src/tokens/formatters.ts | 134 ++++ packages/cli/src/{ => tokens}/noCase.ts | 0 packages/cli/src/tokens/transformers.ts | 56 ++ packages/cli/src/transformers.ts | 149 ---- packages/cli/tsconfig.json | 6 +- packages/theme/brand/altinn/tokens.css | 4 +- packages/theme/brand/brreg/tokens.css | 4 +- packages/theme/brand/digdir/tokens.css | 4 +- packages/theme/brand/tilsynet/tokens.css | 4 +- yarn.lock | 700 +++++++++++------- 23 files changed, 917 insertions(+), 828 deletions(-) create mode 100644 packages/cli/bin/designsystemet.ts delete mode 100644 packages/cli/declarations.d.ts delete mode 100644 packages/cli/src/build.ts create mode 100644 packages/cli/src/codemods/migrations.ts delete mode 100644 packages/cli/src/formatters.ts create mode 100644 packages/cli/src/tokens/build.ts create mode 100644 packages/cli/src/tokens/formatters.ts rename packages/cli/src/{ => tokens}/noCase.ts (100%) create mode 100644 packages/cli/src/tokens/transformers.ts delete mode 100644 packages/cli/src/transformers.ts diff --git a/apps/storefront/tokens/altinn.ts b/apps/storefront/tokens/altinn.ts index cef3ca0697..c409625fd5 100644 --- a/apps/storefront/tokens/altinn.ts +++ b/apps/storefront/tokens/altinn.ts @@ -4088,7 +4088,7 @@ export const borderRadius = [ export const spacing = [ { - value: "0rem", + value: "0", type: "spacing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, @@ -4411,7 +4411,7 @@ export const spacing = [ export const sizing = [ { - value: "0rem", + value: "0", type: "sizing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, diff --git a/apps/storefront/tokens/brreg.ts b/apps/storefront/tokens/brreg.ts index 8e3c7a1679..5424e7ba67 100644 --- a/apps/storefront/tokens/brreg.ts +++ b/apps/storefront/tokens/brreg.ts @@ -4136,7 +4136,7 @@ export const borderRadius = [ export const spacing = [ { - value: "0rem", + value: "0", type: "spacing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, @@ -4459,7 +4459,7 @@ export const spacing = [ export const sizing = [ { - value: "0rem", + value: "0", type: "sizing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, diff --git a/apps/storefront/tokens/digdir.ts b/apps/storefront/tokens/digdir.ts index eb1266845a..e9c3f4f74f 100644 --- a/apps/storefront/tokens/digdir.ts +++ b/apps/storefront/tokens/digdir.ts @@ -4082,7 +4082,7 @@ export const borderRadius = [ export const spacing = [ { - value: "0rem", + value: "0", type: "spacing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, @@ -4405,7 +4405,7 @@ export const spacing = [ export const sizing = [ { - value: "0rem", + value: "0", type: "sizing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, diff --git a/apps/storefront/tokens/tilsynet.ts b/apps/storefront/tokens/tilsynet.ts index 41c2b891cb..ad54a4b669 100644 --- a/apps/storefront/tokens/tilsynet.ts +++ b/apps/storefront/tokens/tilsynet.ts @@ -4034,7 +4034,7 @@ export const borderRadius = [ export const spacing = [ { - value: "0rem", + value: "0", type: "spacing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, @@ -4357,7 +4357,7 @@ export const spacing = [ export const sizing = [ { - value: "0rem", + value: "0", type: "sizing", filePath: "../../design-tokens/Base/Semantic.json", isSource: false, diff --git a/package.json b/package.json index bc379f5620..3999dfa601 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "devsite": "yarn workspace dev dev", "build": "lerna run build", "build:react": "yarn workspace @digdir/designsystemet-react build", - "build:tokens": "yarn workspace @digdir/designsystemet-cli build", + "build:tokens": "yarn workspace @digdir/designsystemet build", "build:css": "yarn workspace @digdir/designsystemet-css build", "build:storybook": "storybook build -o ./dist/storybook", "build:storefront": "yarn workspace storefront building", diff --git a/packages/cli/bin/designsystemet.ts b/packages/cli/bin/designsystemet.ts new file mode 100644 index 0000000000..1de85c37fe --- /dev/null +++ b/packages/cli/bin/designsystemet.ts @@ -0,0 +1,48 @@ +#!/usr/bin/env node +import { Argument, program } from '@commander-js/extra-typings'; + +import migrations from './../src/codemods/migrations.js'; +import { run } from './../src/tokens/build.js'; + +program + .name('Designsystemet') + .description('CLI for working with Designsystemet'); + +program + .command('tokens') + .description('run Designsystemet token builder') + .option( + '-t, --tokens ', + 'Path to "design-tokens"', + '../../design-tokens', + ) + .option( + '-b, --brands [brands...]', + 'Brand files in "design-tokens" to include', + ['Digdir'], + ) + .option('-p, --preview') + .action((opts) => { + const brands = Array.isArray(opts.brands) ? opts.brands : []; + const tokens = typeof opts.tokens === 'string' ? opts.tokens : ''; + return run({ brands, tokens }); + }); + +program + .command('migrate') + .description('run a Designsystemet migration') + .addArgument( + new Argument('', 'Migration to run').choices( + Object.keys(migrations), + ), + ) + .action((migrationKey) => { + const migration = migrations[migrationKey as keyof typeof migrations]; + if (!migration) { + console.error('Migration not found!'); + throw 'Aborting'; + } + migration?.(); + }); + +await program.parseAsync(process.argv); diff --git a/packages/cli/declarations.d.ts b/packages/cli/declarations.d.ts deleted file mode 100644 index deed14b884..0000000000 --- a/packages/cli/declarations.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module '@tokens-studio/sd-transforms' { - import { Core } from 'style-dictionary'; - export declare function registerTransforms(sd: Core): Promise; - export declare function transformDimension( - value: string | undefined | number, - ): string | undefined; -} diff --git a/packages/cli/package.json b/packages/cli/package.json index 96adbd3ddb..911f8cdfca 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,43 +1,42 @@ { - "name": "@digdir/designsystemet-cli", + "name": "@digdir/designsystemet", "version": "0.0.1", "description": "CLI for Designsystemet", "author": "Designsystemet team", "repository": "https://github.com/digdir/designsystemet", "homepage": "https://github.com/digdir/designsystemet/tree/main/scripts/cli", "license": "MIT", + "type": "module", "private": true, "publishConfig": { "access": "public" }, "scripts": { - "start": "esno ./src/build.ts", - "build": "yarn clean && yarn start -t ../../design-tokens -b Digdir Tilsynet Altinn Brreg", + "designsystemet": "esno ./bin/designsystemet.ts", + "build": "yarn clean && yarn designsystemet tokens -t ../../design-tokens -b Digdir Tilsynet Altinn Brreg", "prepublish": "tsc", "clean": "yarn workspace @digdir/designsystemet-theme clean", - "css-light-dark-codemod": "esno ./src/codemods/migrations/light-dark.ts" + "css-light-dark-codemod": "esno ./bin/designsystemet.ts migrate tokens-rename-light-dark" }, "files": [ "./dist/**" ], - "bin": { - "designsystemet": "./dist/build/build.js" - }, + "bin": "./dist/build/bin/designsystemet.js", "dependencies": { "esno": "^4.7.0", "fast-glob": "^3.3.2", "postcss": "^8.4.38" }, "devDependencies": { - "@tokens-studio/sd-transforms": "^0.9.3", + "@commander-js/extra-typings": "^12.0.1", + "@tokens-studio/sd-transforms": "^0.15.2", "@types/glob": "^8.1.0", "@types/node": "^20.12.7", "@types/ramda": "^0.29.9", - "@types/yargs": "^17.0.32", + "commander": "^12.0.0", "ramda": "^0.29.1", "rimraf": "^5.0.5", - "style-dictionary": "^3.8.0", - "typescript": "^5.4.5", - "yargs": "^17.7.2" + "style-dictionary": "^4.0.0-prerelease.26", + "typescript": "^5.4.5" } } diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts deleted file mode 100644 index a52e695c0f..0000000000 --- a/packages/cli/src/build.ts +++ /dev/null @@ -1,224 +0,0 @@ -#!/usr/bin/env node -import path from 'path'; - -import StyleDictionary from 'style-dictionary'; -import type { - Config, - TransformedToken, - Named, - FileHeader, -} from 'style-dictionary'; -import { registerTransforms } from '@tokens-studio/sd-transforms'; -import yargs from 'yargs'; - -import { - sizePx, - nameKebab, - nameKebabUnderscore, - typographyShorthand, - fluidFontSize, - calc, - fontScaleHackFormat, - sizeRem, -} from './transformers.js'; -import { scopedReferenceVariables, groupedTokens } from './formatters.js'; - -const argv = yargs(process.argv.slice(2)) - .options({ - brands: { - type: 'array', - default: [], - describe: 'Brand files to build', - alias: 'b', - }, - tokens: { - type: 'string', - describe: 'Location for design-tokens', - demandOption: true, - alias: 't', - }, - preview: { - alias: 'p', - type: 'boolean', - describe: 'Generate typescript token preview files', - }, - }) - .parseSync(); - -void registerTransforms(StyleDictionary); - -const pickBrands = (x: string | number): x is string => typeof x === 'string'; -type Brand = string; - -const prefix = 'fds'; -const basePxFontSize = 16; -const fileheader: Named<{ fileHeader: FileHeader }> = { - name: 'fileheader', - fileHeader: () => [ - 'Do not edit directly', - `These files are generated from design tokens defined in Figma using Token Studio`, - ], -}; - -const storefrontTokensPath = path.resolve('../../apps/storefront/tokens'); -const packageTokensPath = path.resolve('../../packages/theme/brand'); -const tokensPath = argv.tokens; - -StyleDictionary.registerTransform(sizePx); -StyleDictionary.registerTransform(sizeRem); -StyleDictionary.registerTransform(nameKebab); -StyleDictionary.registerTransform(nameKebabUnderscore); -StyleDictionary.registerTransform(typographyShorthand); -StyleDictionary.registerTransform(fluidFontSize); -StyleDictionary.registerTransform(calc); - -StyleDictionary.registerFormat(fontScaleHackFormat); -StyleDictionary.registerFormat(scopedReferenceVariables); -StyleDictionary.registerFormat(groupedTokens); - -StyleDictionary.registerFileHeader(fileheader); - -StyleDictionary.registerTransformGroup({ - name: 'fds/css', - transforms: [ - 'ts/resolveMath', - nameKebab.name, - typographyShorthand.name, - 'ts/size/lineheight', - sizeRem.name, - 'ts/shadow/css/shorthand', - 'ts/color/modifiers', - 'ts/color/css/hexrgba', - ], -}); - -const baseConfig = (brand: Brand): Partial => { - return { - include: [ - `${tokensPath}/Brand/${brand}.json`, - `${tokensPath}/Base/Semantic.json`, - ], - source: [`${tokensPath}/Base/Core.json`], - }; -}; - -const excludeSource = (token: TransformedToken) => - !token.filePath.includes('Core.json'); - -const getTokensPackageConfig = (brand: Brand, targetFolder = ''): Config => { - const destinationPath = `${targetFolder}/${brand.toLowerCase()}`; - - return { - ...baseConfig(brand), - platforms: { - hack: { - prefix, - basePxFontSize, - transforms: ['ts/resolveMath', nameKebab.name], - files: [ - { - format: 'global-values-hack', - destination: 'ignore/hack', - }, - ], - }, - css: { - prefix, - basePxFontSize, - transformGroup: 'fds/css', - files: [ - { - destination: `${destinationPath}/tokens.css`, - format: 'css/variables-scoped-references', - // filter: excludeSource, - }, - ], - options: { - fileHeader: fileheader.name, - referencesFilter: (token: TransformedToken) => - !(token.path[0] === 'viewport') && - ['color'].includes(token.type as string), - // outputReferences: true, - }, - }, - }, - }; -}; - -const getStorefrontConfig = (brand: Brand, targetFolder = ''): Config => { - const destinationPath = `${targetFolder}/${brand.toLowerCase()}`; - - return { - ...baseConfig(brand), - platforms: { - hack: { - prefix, - basePxFontSize, - transforms: ['ts/resolveMath', nameKebab.name], - files: [ - { - format: 'global-values-hack', - destination: 'ignore/hack', - }, - ], - }, - storefront: { - prefix, - basePxFontSize, - transformGroup: 'fds/css', - files: [ - { - destination: `${destinationPath}.ts`, - format: groupedTokens.name, - filter: excludeSource, - }, - ], - options: { - fileHeader: fileheader.name, - }, - }, - }, - }; -}; - -const brands = argv.brands.filter(pickBrands) as string[]; - -if (brands.length > 0) { - console.log('➡️ Recieved following brands: ', brands); - - console.log('🏗️ Start building CSS tokens'); - - brands.map((brand) => { - console.log('\n---------------------------------------'); - - console.log(`\n👷 Processing ${brand}`); - - const tokensPackageSD = StyleDictionary.extend( - getTokensPackageConfig(brand, packageTokensPath), - ); - - tokensPackageSD.buildAllPlatforms(); - }); - - console.log('\n---------------------------------------'); - console.log('\n🏁 Finished building package tokens!'); -} - -console.log('\n======================================='); -console.log('\n🏗️ Started building storefront tokens…'); - -brands.map((brand) => { - console.log('\n---------------------------------------'); - - console.log(`\n👷 Processing ${brand}`); - - const storefrontSD = StyleDictionary.extend( - getStorefrontConfig(brand, storefrontTokensPath), - ); - - storefrontSD.buildAllPlatforms(); -}); - -console.log('\n---------------------------------------'); - -console.log('\n🏁 Finished building storefront tokens!'); diff --git a/packages/cli/src/codemods/migrations.ts b/packages/cli/src/codemods/migrations.ts new file mode 100644 index 0000000000..cfe25d81af --- /dev/null +++ b/packages/cli/src/codemods/migrations.ts @@ -0,0 +1,8 @@ +import lightDark from './migrations/light-dark.js'; + +export default { + 'tokens-rename-light-dark': lightDark, + 'someother-script': () => { + console.log('yay'); + }, +}; diff --git a/packages/cli/src/codemods/migrations/light-dark.ts b/packages/cli/src/codemods/migrations/light-dark.ts index cf9bc68a6c..b2b0615702 100644 --- a/packages/cli/src/codemods/migrations/light-dark.ts +++ b/packages/cli/src/codemods/migrations/light-dark.ts @@ -1,29 +1,32 @@ -import { cssVarCodemod } from '../css-var-codemod'; +import { cssVarCodemod } from '../css-var-codemod.js'; -void cssVarCodemod({ - '--fds-semantic-surface-first-light': '--fds-semantic-surface-first-subtle', - '--fds-semantic-surface-first-light-hover': - '--fds-semantic-surface-first-subtle-hover', - '--fds-semantic-surface-first-light-active': - '--fds-semantic-surface-first-subtle-active', - '--fds-semantic-surface-first-dark': '--fds-semantic-surface-first-strong', - '--fds-semantic-surface-second-light': '--fds-semantic-surface-second-subtle', - '--fds-semantic-surface-second-light-hover': - '--fds-semantic-surface-second-subtle-hover', - '--fds-semantic-surface-second-light-active': - '--fds-semantic-surface-second-subtle-active', - '--fds-semantic-surface-second-dark': '--fds-semantic-surface-second-strong', - '--fds-semantic-surface-third-light': '--fds-semantic-surface-third-subtle', - '--fds-semantic-surface-third-light-hover': - '--fds-semantic-surface-third-subtle-hover', - '--fds-semantic-surface-third-light-active': - '--fds-semantic-surface-third-subtle-active', - '--fds-semantic-surface-third-dark': '--fds-semantic-surface-third-strong', - '--fds-semantic-surface-neutral-dark': - '--fds-semantic-surface-neutral-strong', - '--fds-semantic-surface-neutral-dark-hover': - '--fds-semantic-surface-neutral-strong-hover', - '--fds-semantic-border-action-dark': '--fds-semantic-border-action-strong', - '--fds-semantic-border-action-dark-hover': - '--fds-semantic-border-action-strong-hover', -}); +export default () => + cssVarCodemod({ + '--fds-semantic-surface-first-light': '--fds-semantic-surface-first-subtle', + '--fds-semantic-surface-first-light-hover': + '--fds-semantic-surface-first-subtle-hover', + '--fds-semantic-surface-first-light-active': + '--fds-semantic-surface-first-subtle-active', + '--fds-semantic-surface-first-dark': '--fds-semantic-surface-first-strong', + '--fds-semantic-surface-second-light': + '--fds-semantic-surface-second-subtle', + '--fds-semantic-surface-second-light-hover': + '--fds-semantic-surface-second-subtle-hover', + '--fds-semantic-surface-second-light-active': + '--fds-semantic-surface-second-subtle-active', + '--fds-semantic-surface-second-dark': + '--fds-semantic-surface-second-strong', + '--fds-semantic-surface-third-light': '--fds-semantic-surface-third-subtle', + '--fds-semantic-surface-third-light-hover': + '--fds-semantic-surface-third-subtle-hover', + '--fds-semantic-surface-third-light-active': + '--fds-semantic-surface-third-subtle-active', + '--fds-semantic-surface-third-dark': '--fds-semantic-surface-third-strong', + '--fds-semantic-surface-neutral-dark': + '--fds-semantic-surface-neutral-strong', + '--fds-semantic-surface-neutral-dark-hover': + '--fds-semantic-surface-neutral-strong-hover', + '--fds-semantic-border-action-dark': '--fds-semantic-border-action-strong', + '--fds-semantic-border-action-dark-hover': + '--fds-semantic-border-action-strong-hover', + }); diff --git a/packages/cli/src/formatters.ts b/packages/cli/src/formatters.ts deleted file mode 100644 index bfe3b4b757..0000000000 --- a/packages/cli/src/formatters.ts +++ /dev/null @@ -1,125 +0,0 @@ -import * as R from 'ramda'; -import StyleDictionary from 'style-dictionary'; -import type { Named, TransformedToken, Format } from 'style-dictionary'; - -const { fileHeader, createPropertyFormatter } = StyleDictionary.formatHelpers; - -type ReferencesFilter = (token: TransformedToken) => boolean; - -/** - * CSS variables format with option to include source references for matched token through `options.referencesFilter` - */ -export const scopedReferenceVariables: Named = { - name: 'css/variables-scoped-references', - formatter: function ({ dictionary, options, file }) { - const { outputReferences } = options; - const includeReferences = options.referencesFilter as ReferencesFilter; - let referencedTokens: TransformedToken[] = []; - - const format = createPropertyFormatter({ - outputReferences, - dictionary, - format: 'css', - }); - - const formatWithReference = createPropertyFormatter({ - outputReferences: true, - dictionary, - format: 'css', - }); - - const tokens = dictionary.allTokens - .map((token) => { - if ( - dictionary.usesReference(token.original.value) && - includeReferences(token) - ) { - const refs = dictionary.getReferences(token.original.value); - - referencedTokens = [ - ...referencedTokens, - ...refs.filter((x) => x.isSource), - ]; - - return formatWithReference(token); - } - - return !token.isSource && format(token); - }) - .filter((x) => x); - - const referenceTokens = referencedTokens - .reduce<{ name: string; formatted: string }[]>((acc, token) => { - if (acc.find((x) => x.name === token.name)) { - return acc; - } - - return [...acc, { name: token.name, formatted: format(token) }]; - }, []) - .map((x) => x.formatted) - .filter((x) => x); - - return ( - fileHeader({ file }) + - ':root {\n' + - ' /** Referenced source tokens */ \n' + - ' /** DO NOT OVERRIDE */ \n' + - referenceTokens.join('\n') + - '\n\n /** Tokens */ \n' + - tokens.join('\n') + - '\n}\n' - ); - }, -}; - -const groupByType = R.groupBy( - (token: TransformedToken) => token.type as string, -); - -/** Add token name with prefix to list for removal */ -const removeUnwatedTokens = R.filter( - (token: TransformedToken) => - !['fds-base_spacing', 'fds-base_sizing'].includes(token.name), -); - -const toCssVarName = R.pipe(R.split(':'), R.head, R.trim); - -/** - * Format for displaying tokens in storefront - */ -export const groupedTokens: Named = { - name: 'groupedTokens', - formatter: function ({ dictionary, file }) { - const format = createPropertyFormatter({ - dictionary, - format: 'css', - }); - - const formatTokens = R.map((token: TransformedToken) => ({ - ...token, - name: toCssVarName(format(token)), - })); - - const processTokens = R.pipe( - removeUnwatedTokens, - formatTokens, - groupByType, - ); - - const tokens = processTokens(dictionary.allTokens); - - const content = - fileHeader({ file }) + - Object.entries(tokens) - .map( - ([name, token]) => - `export const ${name} = ${JSON.stringify(token, null, 2).replace( - /"([^"]+)":/g, - '$1:', - )} \n`, - ) - .join('\n'); - - return content; - }, -}; diff --git a/packages/cli/src/tokens/build.ts b/packages/cli/src/tokens/build.ts new file mode 100644 index 0000000000..d9d99f1642 --- /dev/null +++ b/packages/cli/src/tokens/build.ts @@ -0,0 +1,172 @@ +import path from 'path'; + +import { registerTransforms } from '@tokens-studio/sd-transforms'; +import StyleDictionary from 'style-dictionary'; +import type { Config, TransformedToken } from 'style-dictionary/types'; + +import { nameKebab, typographyShorthand, sizeRem } from './transformers.js'; +import { groupedTokens, scopedReferenceVariables } from './formatters.js'; + +void registerTransforms(StyleDictionary); + +type Brand = string; + +const prefix = 'fds'; +const basePxFontSize = 16; + +const fileHeader = () => [ + 'Do not edit directly', + `These files are generated from design tokens defined in Figma using Token Studio`, +]; + +StyleDictionary.registerTransform(sizeRem); +StyleDictionary.registerTransform(nameKebab); +StyleDictionary.registerTransform(typographyShorthand); + +StyleDictionary.registerFormat(groupedTokens); +StyleDictionary.registerFormat(scopedReferenceVariables); + +StyleDictionary.registerTransformGroup({ + name: 'fds/css', + transforms: [ + `ts/resolveMath`, + nameKebab.name, + sizeRem.name, + typographyShorthand.name, + 'ts/color/modifiers', + 'ts/color/css/hexrgba', + 'ts/size/lineheight', + 'ts/shadow/css/shorthand', + ], +}); + +const baseConfig = (brand: Brand, tokensPath: string): Partial => { + return { + log: { verbosity: 'silent' }, + include: [ + `${tokensPath}/Brand/${brand}.json`, + `${tokensPath}/Base/Semantic.json`, + ], + source: [`${tokensPath}/Base/Core.json`], + }; +}; + +const excludeSource = (token: TransformedToken) => { + if (token.filePath.includes('Core.json')) return false; + + if (token.path[0] === 'viewport' && ['color'].includes(token.type as string)) + return false; + + return true; +}; + +const getCSSTokensConfig = ( + brand: Brand, + targetFolder = '', + tokensPath: string, +): Config => { + const destinationPath = `${targetFolder}/${brand.toLowerCase()}`; + + return { + ...baseConfig(brand, tokensPath), + platforms: { + css: { + prefix, + basePxFontSize, + transformGroup: 'fds/css', + files: [ + { + destination: `${destinationPath}/tokens.css`, + format: scopedReferenceVariables.name, + filter: excludeSource, + }, + ], + options: { + fileHeader, + includeReferences: (token: TransformedToken) => + ['color'].includes(token.type as string) && + !(token.value as string).startsWith('rgba'), + }, + }, + }, + }; +}; + +const getStorefrontConfig = ( + brand: Brand, + targetFolder = '', + tokensPath: string, +): Config => { + const destinationPath = `${targetFolder}/${brand.toLowerCase()}`; + + return { + ...baseConfig(brand, tokensPath), + platforms: { + storefront: { + prefix, + basePxFontSize, + transformGroup: 'fds/css', + files: [ + { + destination: `${destinationPath}.ts`, + format: groupedTokens.name, + filter: excludeSource, + }, + ], + options: { + fileHeader, + }, + }, + }, + }; +}; + +type Options = { + /** Design tokens path */ + tokens: string; + /** File names of Token studio brand files located in @type {Options['tokens']} */ + brands: string[]; +}; + +export async function run(options: Options): Promise { + const brands = options.brands; + + const storefrontTokensPath = path.resolve('../../apps/storefront/tokens'); + const packageTokensPath = path.resolve('../../packages/theme/brand'); + const tokensPath = options.tokens; + + if (brands.length > 0) { + console.log('🍱 Staring token builder'); + console.log('➡️ Tokens path: ', tokensPath); + console.log('➡️ Brands: ', brands); + + console.log('\n🏗️ Start building CSS tokens'); + await Promise.all( + brands.map(async (brand) => { + console.log(`👷 Processing ${brand}`); + + const sd = new StyleDictionary(); + const tokensPackageSD = await sd.extend( + getCSSTokensConfig(brand, packageTokensPath, tokensPath), + ); + + return tokensPackageSD.buildAllPlatforms(); + }), + ); + console.log('🏁 Finished building package tokens!'); + + console.log('\n🏗️ Started building storefront tokens…'); + await Promise.all( + brands.map(async (brand) => { + console.log(`👷 Processing ${brand}`); + + const storefrontSD = new StyleDictionary( + getStorefrontConfig(brand, storefrontTokensPath, tokensPath), + ); + + return storefrontSD.buildAllPlatforms(); + }), + ); + console.log('🏁 Finished building storefront tokens!'); + } +} diff --git a/packages/cli/src/tokens/formatters.ts b/packages/cli/src/tokens/formatters.ts new file mode 100644 index 0000000000..7e3c70e3eb --- /dev/null +++ b/packages/cli/src/tokens/formatters.ts @@ -0,0 +1,134 @@ +import * as R from 'ramda'; +import type { TransformedToken, Format } from 'style-dictionary/types'; +import { + fileHeader, + createPropertyFormatter, + usesReferences, + getReferences, +} from 'style-dictionary/utils'; + +type IncludeReferences = (token: TransformedToken) => boolean; + +/** + * CSS variables format with option to include source references for matched token through `options.referencesFilter` + */ +export const scopedReferenceVariables: Format = { + name: 'css/variables-scoped-references', + formatter: async function ({ dictionary, file, options }) { + const { allTokens, unfilteredTokens } = dictionary; + const { usesDtcg, outputReferences } = options; + const includeReferences = options.includeReferences as IncludeReferences; + let referencedTokens: TransformedToken[] = []; + + const format = createPropertyFormatter({ + outputReferences, + dictionary, + format: 'css', + }); + + const formatWithReference = createPropertyFormatter({ + outputReferences: true, + dictionary, + format: 'css', + }); + + const tokens = allTokens + .map((token) => { + const originalValue = ( + usesDtcg ? token.original.$value : token.original.value + ) as string; + + if (usesReferences(originalValue) && includeReferences(token)) { + const refs = getReferences( + originalValue, + unfilteredTokens ? unfilteredTokens : {}, + ); + + referencedTokens = [ + ...referencedTokens, + ...refs.filter((x) => x.isSource), + ]; + + return formatWithReference(token); + } + + return !token.isSource && format(token); + }) + .filter((x) => x); + + const referenceTokens = referencedTokens + .reduce((acc, token) => { + if (acc.find((x) => x.name === token.name)) { + return acc; + } + + return [...acc, token]; + }, []) + .map((token) => format(token)) + .filter((formattedValue) => formattedValue); + + return fileHeader({ file }).then( + (fileHeaderText) => + fileHeaderText + + ':root {\n' + + ' /** Referenced source tokens */ \n' + + ' /** DO NOT OVERRIDE */ \n' + + referenceTokens.join('\n') + + '\n\n /** Tokens */ \n' + + tokens.join('\n') + + '\n}\n', + ); + }, +}; + +const groupByType = R.groupBy( + (token: TransformedToken) => token.type as string, +); + +/** Add token name with prefix to list for removal */ +const removeUnwatedTokens = R.filter( + (token: TransformedToken) => + !['fds-base_spacing', 'fds-base_sizing'].includes(token.name), +); + +const toCssVarName = R.pipe(R.split(':'), R.head, R.trim); + +/** + * Format for displaying tokens in storefront + */ +export const groupedTokens: Format = { + name: 'groupedTokens', + formatter: async function ({ dictionary, file }) { + const format = createPropertyFormatter({ + dictionary, + format: 'css', + }); + + const formatTokens = R.map((token: TransformedToken) => ({ + ...token, + name: toCssVarName(format(token)), + })); + + const processTokens = R.pipe( + removeUnwatedTokens, + formatTokens, + groupByType, + ); + + const tokens = processTokens(dictionary.allTokens); + + const content = Object.entries(tokens) + .map( + ([name, token]) => + `export const ${name} = ${JSON.stringify(token, null, 2).replace( + /"([^"]+)":/g, + '$1:', + )} \n`, + ) + .join('\n'); + + return fileHeader({ file }).then( + (fileHeaderText) => fileHeaderText + content, + ); + }, +}; diff --git a/packages/cli/src/noCase.ts b/packages/cli/src/tokens/noCase.ts similarity index 100% rename from packages/cli/src/noCase.ts rename to packages/cli/src/tokens/noCase.ts diff --git a/packages/cli/src/tokens/transformers.ts b/packages/cli/src/tokens/transformers.ts new file mode 100644 index 0000000000..49a48456a0 --- /dev/null +++ b/packages/cli/src/tokens/transformers.ts @@ -0,0 +1,56 @@ +import type { Transform } from 'style-dictionary/types'; + +import { noCase } from './noCase.js'; + +export const sizeRem: Transform = { + name: 'fds/size/toRem', + type: 'value', + transitive: true, + matcher: (token) => + ['sizing', 'spacing'].includes(token.type as string) && + !token.name.includes('base'), + transformer: (token, options) => { + const baseFont = options.basePxFontSize || 16; + const value = parseInt(token.value as string); + + if (value === 0) { + return '0'; + } + + return `${value / baseFont}rem`; + }, +}; + +export const nameKebab: Transform = { + name: 'name/cti/hierarchical-kebab', + type: 'name', + transformer: (token, options) => { + return noCase([options?.prefix].concat(token.path).join('-'), { + delimiter: '-', + stripRegexp: /[^A-Z0-9_]+/gi, + }); + }, +}; + +type Typgraphy = { + fontWeight: string; + fontSize: string; + lineHeight: number; + fontFamily: string; +}; + +export const typographyShorthand: Transform = { + name: 'typography/shorthand', + type: 'value', + transitive: true, + matcher: (token) => token.type === 'typography', + transformer: (token, config, options) => { + const { usesDtcg } = options; + const typography = (usesDtcg ? token.$value : token.value) as Typgraphy; + + const baseFontPx = config?.basePxFontSize || 16; + const fontSize = `${parseInt(typography.fontSize) / baseFontPx}rem`; + + return `${typography.fontWeight} ${fontSize}/${typography.lineHeight} '${typography.fontFamily}'`; + }, +}; diff --git a/packages/cli/src/transformers.ts b/packages/cli/src/transformers.ts deleted file mode 100644 index 866b47a18b..0000000000 --- a/packages/cli/src/transformers.ts +++ /dev/null @@ -1,149 +0,0 @@ -import type { - Transform, - Named, - TransformedToken, - TransformedTokens, - Format, -} from 'style-dictionary'; -import { transformDimension } from '@tokens-studio/sd-transforms'; - -import { noCase } from './noCase.js'; - -export const sizePx: Named = { - name: 'fds/size/px', - type: 'value', - transitive: true, - matcher: (token) => - ['sizing', 'spacing'].includes(token.type as string) && - !token.name.includes('base'), - transformer: (token) => transformDimension(token.value as number), -}; - -export const sizeRem: Named = { - name: 'fds/size/toRem', - type: 'value', - transitive: true, - matcher: (token) => - ['sizing', 'spacing'].includes(token.type as string) && - !token.name.includes('base'), - transformer: (token, options) => { - const baseFont = options.basePxFontSize || 16; - const value = token.value as number; - - if (value === 0) { - return '0'; - } - - return `${value / baseFont}rem`; - }, -}; - -export const nameKebab: Named = { - name: 'name/cti/hierarchical-kebab', - type: 'name', - transformer: (token, options) => { - return noCase([options?.prefix].concat(token.path).join('-'), { - delimiter: '-', - stripRegexp: /[^A-Z0-9_]+/gi, - }); - }, -}; - -export const nameKebabUnderscore: Named = { - name: 'name/cti/camel_underscore', - type: 'name', - transformer: function (token, options) { - return noCase([options?.prefix].concat(token.path).join(' '), { - delimiter: '_', - stripRegexp: /[^A-Z0-9_]+/gi, - }); - }, -}; - -type Typgraphy = { - fontWeight: string; - fontSize: string; - lineHeight: number; - fontFamily: string; -}; - -export const typographyShorthand: Named = { - name: 'typography/shorthand', - type: 'value', - transitive: true, - matcher: (token) => token.type === 'typography', - transformer: (token, options) => { - const typography = token.value as Typgraphy; - let fontSize = typography.fontSize; - - if (!fontSize.startsWith('clamp')) { - const baseFontPx = options?.basePxFontSize || 1; - fontSize = `${parseFloat(fontSize) / baseFontPx}rem`; - } - return `${typography.fontWeight} ${fontSize}/${typography.lineHeight} '${typography.fontFamily}'`; - }, -}; - -export const calc: Named = { - name: 'fds/calc', - type: 'value', - transitive: true, - matcher: (token) => - (token.type === 'spacing' && token.path[0] === 'spacing') || - (token.type === 'sizing' && token.path[0] === 'sizing'), - transformer: (token) => { - const value = token.value as string; - - return `calc(${value})`; - }, -}; - -type FontScale = { - min: TransformedToken; - max: TransformedToken; - v: TransformedToken; - r: TransformedToken; - fluid: TransformedToken; -}; - -let fontScale: TransformedTokens; - -export const fluidFontSize: Named = { - name: 'css/fontSizes/fluid', - type: 'value', - transitive: true, - matcher: (token) => - token.type === 'fontSizes' && - token.path[0] === 'font-size' && - token.path[1].startsWith('f'), - transformer: (token, options) => { - if (fontScale) { - const baseFontPx = options?.basePxFontSize || 1; - - const scale = fontScale[token.path[1]] as unknown as FontScale; - - const { min, max, v, r } = scale; - const minRem = (parseFloat(min.value as string) / baseFontPx).toFixed(2); - const maxRem = (parseFloat(max.value as string) / baseFontPx).toFixed(2); - const fontR = (parseFloat(r.value as string) / baseFontPx).toFixed(2); - const fontV = parseFloat(v.value as string).toFixed(2); - - const fluid = `clamp(${minRem}rem, calc(${fontV}vw + ${fontR}rem), ${maxRem}rem)`; - - return fluid; - } - - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return token.value; - }, -}; -/** This should be in formatters but needs to be here due to global var `fontScale` used in transformer `fluidFontSize` */ -export const fontScaleHackFormat: Named = { - name: 'global-values-hack', - formatter: ({ dictionary }) => { - console.info('\x1b[34m✔ Setting global values'); - fontScale = dictionary.tokens['font-scale']; - - return `/** Style Dictionary hack because it must write to file for some reason... */\n`; - }, -}; diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 7441049e4f..51def22fe8 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -7,8 +7,10 @@ "allowSyntheticDefaultImports": true, "emitDeclarationOnly": false, "noEmit": false, - "esModuleInterop": true + "esModuleInterop": true, + "module": "NodeNext", + "moduleResolution": "NodeNext" }, "rootDir": "./src", - "include": ["./src/", "./declarations.d.ts"] + "include": ["./src/", "./bin/", "./declarations.d.ts"] } diff --git a/packages/theme/brand/altinn/tokens.css b/packages/theme/brand/altinn/tokens.css index 0078be974a..1906be52e5 100644 --- a/packages/theme/brand/altinn/tokens.css +++ b/packages/theme/brand/altinn/tokens.css @@ -256,7 +256,7 @@ --fds-border_radius-xxxlarge: 24px; --fds-border_radius-xxxxlarge: 32px; --fds-border_radius-full: 9999px; - --fds-spacing-0: 0rem; + --fds-spacing-0: 0; --fds-spacing-1: 0.25rem; --fds-spacing-2: 0.5rem; --fds-spacing-3: 0.75rem; @@ -277,7 +277,7 @@ --fds-spacing-26: 6.5rem; --fds-spacing-30: 7.5rem; --fds-base_spacing: 4; - --fds-sizing-0: 0rem; + --fds-sizing-0: 0; --fds-sizing-1: 0.25rem; --fds-sizing-2: 0.5rem; --fds-sizing-3: 0.75rem; diff --git a/packages/theme/brand/brreg/tokens.css b/packages/theme/brand/brreg/tokens.css index 471d9696c3..5c61a2a989 100644 --- a/packages/theme/brand/brreg/tokens.css +++ b/packages/theme/brand/brreg/tokens.css @@ -262,7 +262,7 @@ --fds-border_radius-xxxlarge: 24px; --fds-border_radius-xxxxlarge: 32px; --fds-border_radius-full: 9999px; - --fds-spacing-0: 0rem; + --fds-spacing-0: 0; --fds-spacing-1: 0.25rem; --fds-spacing-2: 0.5rem; --fds-spacing-3: 0.75rem; @@ -283,7 +283,7 @@ --fds-spacing-26: 6.5rem; --fds-spacing-30: 7.5rem; --fds-base_spacing: 4; - --fds-sizing-0: 0rem; + --fds-sizing-0: 0; --fds-sizing-1: 0.25rem; --fds-sizing-2: 0.5rem; --fds-sizing-3: 0.75rem; diff --git a/packages/theme/brand/digdir/tokens.css b/packages/theme/brand/digdir/tokens.css index f95430a29c..2303000eeb 100644 --- a/packages/theme/brand/digdir/tokens.css +++ b/packages/theme/brand/digdir/tokens.css @@ -256,7 +256,7 @@ --fds-border_radius-xxxlarge: 24px; --fds-border_radius-xxxxlarge: 32px; --fds-border_radius-full: 9999px; - --fds-spacing-0: 0rem; + --fds-spacing-0: 0; --fds-spacing-1: 0.25rem; --fds-spacing-2: 0.5rem; --fds-spacing-3: 0.75rem; @@ -277,7 +277,7 @@ --fds-spacing-26: 6.5rem; --fds-spacing-30: 7.5rem; --fds-base_spacing: 4; - --fds-sizing-0: 0rem; + --fds-sizing-0: 0; --fds-sizing-1: 0.25rem; --fds-sizing-2: 0.5rem; --fds-sizing-3: 0.75rem; diff --git a/packages/theme/brand/tilsynet/tokens.css b/packages/theme/brand/tilsynet/tokens.css index 67b3c13ceb..259921281f 100644 --- a/packages/theme/brand/tilsynet/tokens.css +++ b/packages/theme/brand/tilsynet/tokens.css @@ -256,7 +256,7 @@ --fds-border_radius-xxxlarge: 24px; --fds-border_radius-xxxxlarge: 32px; --fds-border_radius-full: 9999px; - --fds-spacing-0: 0rem; + --fds-spacing-0: 0; --fds-spacing-1: 0.25rem; --fds-spacing-2: 0.5rem; --fds-spacing-3: 0.75rem; @@ -277,7 +277,7 @@ --fds-spacing-26: 6.5rem; --fds-spacing-30: 7.5rem; --fds-base_spacing: 4; - --fds-sizing-0: 0rem; + --fds-sizing-0: 0; --fds-sizing-1: 0.25rem; --fds-sizing-2: 0.5rem; --fds-sizing-3: 0.75rem; diff --git a/yarn.lock b/yarn.lock index aeb13fc0fa..e6fedf2d74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2517,6 +2517,46 @@ __metadata: languageName: node linkType: hard +"@bundled-es-modules/deepmerge@npm:^4.3.1": + version: 4.3.1 + resolution: "@bundled-es-modules/deepmerge@npm:4.3.1" + dependencies: + deepmerge: "npm:^4.3.1" + checksum: b96ad879ec052591ea9f3f3570294ee7a808df9f60c7e21977ee8dbdc3156324de7f85a432c9b290c73fec3519ee169a963002ddec9bc00cbca9582aa092910b + languageName: node + linkType: hard + +"@bundled-es-modules/glob@npm:^10.3.13": + version: 10.3.13 + resolution: "@bundled-es-modules/glob@npm:10.3.13" + dependencies: + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + glob: "npm:^10.3.10" + patch-package: "npm:^8.0.0" + path: "npm:^0.12.7" + stream: "npm:^0.0.2" + string_decoder: "npm:^1.3.0" + url: "npm:^0.11.1" + checksum: 1051fb1437b106f95fdf386919c465fc2c5a0b35353ebe7b24c1148f42c685fa855380ae41689e086040d638ed6b11f306561ee78fc64808a7b1d07b773450d3 + languageName: node + linkType: hard + +"@bundled-es-modules/memfs@npm:^4.8.1": + version: 4.8.1 + resolution: "@bundled-es-modules/memfs@npm:4.8.1" + dependencies: + assert: "npm:^2.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + memfs: "npm:^4.8.1" + path: "npm:^0.12.7" + stream: "npm:^0.0.2" + util: "npm:^0.12.5" + checksum: 3c8c378eb8faf84de3d7b108c7f118c798d4bf0d65bb0a563729a033750a72739d08cce02d601e04e3fdd8b02de1164c3367a01213406f8c6ec71fc3dc68aeaf + languageName: node + linkType: hard + "@chromatic-com/storybook@npm:^1": version: 1.3.2 resolution: "@chromatic-com/storybook@npm:1.3.2" @@ -2537,6 +2577,15 @@ __metadata: languageName: node linkType: hard +"@commander-js/extra-typings@npm:^12.0.1": + version: 12.0.1 + resolution: "@commander-js/extra-typings@npm:12.0.1" + peerDependencies: + commander: ~12.0.0 + checksum: cd094ec7fa789dd91e20942727f18811b05bdd0006dfeefddbd3054e4ef89592bb20b7a1e93edfa86a77603045c714231a8ae7804ad153775258e74f9f378208 + languageName: node + linkType: hard + "@csstools/css-parser-algorithms@npm:^2.3.2": version: 2.4.0 resolution: "@csstools/css-parser-algorithms@npm:2.4.0" @@ -2596,28 +2645,6 @@ __metadata: languageName: unknown linkType: soft -"@digdir/designsystemet-cli@workspace:packages/cli": - version: 0.0.0-use.local - resolution: "@digdir/designsystemet-cli@workspace:packages/cli" - dependencies: - "@tokens-studio/sd-transforms": "npm:^0.9.3" - "@types/glob": "npm:^8.1.0" - "@types/node": "npm:^20.12.7" - "@types/ramda": "npm:^0.29.9" - "@types/yargs": "npm:^17.0.32" - esno: "npm:^4.7.0" - fast-glob: "npm:^3.3.2" - postcss: "npm:^8.4.38" - ramda: "npm:^0.29.1" - rimraf: "npm:^5.0.5" - style-dictionary: "npm:^3.8.0" - typescript: "npm:^5.4.5" - yargs: "npm:^17.7.2" - bin: - designsystemet: ./dist/build/build.js - languageName: unknown - linkType: soft - "@digdir/designsystemet-css@npm:0.4.0": version: 0.4.0 resolution: "@digdir/designsystemet-css@npm:0.4.0" @@ -2692,6 +2719,28 @@ __metadata: languageName: unknown linkType: soft +"@digdir/designsystemet@workspace:packages/cli": + version: 0.0.0-use.local + resolution: "@digdir/designsystemet@workspace:packages/cli" + dependencies: + "@commander-js/extra-typings": "npm:^12.0.1" + "@tokens-studio/sd-transforms": "npm:^0.15.2" + "@types/glob": "npm:^8.1.0" + "@types/node": "npm:^20.12.7" + "@types/ramda": "npm:^0.29.9" + commander: "npm:^12.0.0" + esno: "npm:^4.7.0" + fast-glob: "npm:^3.3.2" + postcss: "npm:^8.4.38" + ramda: "npm:^0.29.1" + rimraf: "npm:^5.0.5" + style-dictionary: "npm:^4.0.0-prerelease.26" + typescript: "npm:^5.4.5" + bin: + designsystemet: ./dist/build/bin/designsystemet.js + languageName: unknown + linkType: soft + "@discoveryjs/json-ext@npm:^0.5.3": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" @@ -5414,27 +5463,26 @@ __metadata: languageName: node linkType: hard -"@tokens-studio/sd-transforms@npm:^0.9.3": - version: 0.9.3 - resolution: "@tokens-studio/sd-transforms@npm:0.9.3" +"@tokens-studio/sd-transforms@npm:^0.15.2": + version: 0.15.2 + resolution: "@tokens-studio/sd-transforms@npm:0.15.2" dependencies: - "@tokens-studio/types": "npm:^0.2.1" - browser-style-dictionary: "npm:^3.1.1-browser.1" + "@tokens-studio/types": "npm:^0.4.0" color2k: "npm:^2.0.1" colorjs.io: "npm:^0.4.3" deepmerge: "npm:^4.3.1" - expr-eval: "npm:^2.0.2" + expr-eval-fork: "npm:^2.0.2" is-mergeable-object: "npm:^1.1.1" postcss-calc-ast-parser: "npm:^0.1.4" - style-dictionary: "npm:^3.7.2" - checksum: 95efdd06cef2659e4f3d9d2302aed9e2d6ca162615a88a216097d4d51138b1b4fa4e9665b2a04639ae56e1bb40fe46fa5c5719eb5f046cea42fd6460d9e7cd99 + style-dictionary: "npm:^4.0.0-prerelease.22" + checksum: 8a7ff6ed0a56fd950be642b57b0406ab7073fb39b02c8c43bdfd3cc4a983d6daf02cdff05b30ce4720f3a26e50e3d7473f90306c827aedc2dc4a0cd0839b0f70 languageName: node linkType: hard -"@tokens-studio/types@npm:^0.2.1": - version: 0.2.2 - resolution: "@tokens-studio/types@npm:0.2.2" - checksum: 4c4d9f6de95c1dabbcf9ad6a0deef414c7c2dde1e20178701118031c9a110ac79de0e522c0850865548a8ebe190695e154a1e4d6b6ccabeee17009476e7fe703 +"@tokens-studio/types@npm:^0.4.0": + version: 0.4.0 + resolution: "@tokens-studio/types@npm:0.4.0" + checksum: 3280d41483d5bf53e4dbc26f93ab159206cdba9ed83d4e148a0d0ab6feb3a6a97212fb390778af4a724400384931cca67264187876bf31e187d771e657999bec languageName: node linkType: hard @@ -6123,22 +6171,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: a794eb750e8ebc6273a51b12a0002de41343ffe46befef460bdbb57262d187fdf608bc6615b7b11c462c63c3ceb70abe2564c8dd8ee0f7628f38a314f74a9b9b - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.32": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 1e2b2673847011ce43607df690d392f137d95a2d6ea85aa319403eadda2ef4277365efd4982354d8843f2611ef3846c88599660aaeb537fa9ccddae83c2a89de - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:6.15.0": version: 6.15.0 resolution: "@typescript-eslint/eslint-plugin@npm:6.15.0" @@ -7177,6 +7209,13 @@ __metadata: languageName: node linkType: hard +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.19": version: 10.4.19 resolution: "autoprefixer@npm:10.4.19" @@ -7457,25 +7496,6 @@ __metadata: languageName: node linkType: hard -"browser-style-dictionary@npm:^3.1.1-browser.1": - version: 3.1.1-browser.2 - resolution: "browser-style-dictionary@npm:3.1.1-browser.2" - dependencies: - chalk: "npm:^4.0.0" - change-case: "npm:^4.1.2" - commander: "npm:^8.3.0" - fs-extra: "npm:^10.0.0" - glob: "npm:^7.2.0" - json5: "npm:^2.2.0" - jsonc-parser: "npm:^3.0.0" - lodash: "npm:^4.17.15" - tinycolor2: "npm:^1.4.1" - bin: - style-dictionary: bin/style-dictionary - checksum: 6a780b74edf901a62ad6fe0fd61502018807815a52f87519bef2bb8e11bb38b343f44ab658fa9baeabbea82749304ceec516cacf4958b8b98dea3866262ad8f0 - languageName: node - linkType: hard - "browserify-zlib@npm:^0.1.4": version: 0.1.4 resolution: "browserify-zlib@npm:0.1.4" @@ -7530,6 +7550,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: b6bc68237ebf29bdacae48ce60e5e28fc53ae886301f2ad9496618efac49427ed79096750033e7eab1897a4f26ae374ace49106a5758f38fb70c78c9fda2c3b1 + languageName: node + linkType: hard + "builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" @@ -7667,6 +7697,19 @@ __metadata: languageName: node linkType: hard +"call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -7674,16 +7717,6 @@ __metadata: languageName: node linkType: hard -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: "npm:^3.1.2" - tslib: "npm:^2.0.3" - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - "camelcase-keys@npm:^6.2.2": version: 6.2.2 resolution: "camelcase-keys@npm:6.2.2" @@ -7735,17 +7768,6 @@ __metadata: languageName: node linkType: hard -"capital-case@npm:^1.0.4": - version: 1.0.4 - resolution: "capital-case@npm:1.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - upper-case-first: "npm:^2.0.2" - checksum: 41fa8fa87f6d24d0835a2b4a9341a3eaecb64ac29cd7c5391f35d6175a0fa98ab044e7f2602e1ec3afc886231462ed71b5b80c590b8b41af903ec2c15e5c5931 - languageName: node - linkType: hard - "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -7809,23 +7831,17 @@ __metadata: languageName: node linkType: hard -"change-case@npm:^4.1.2": - version: 4.1.2 - resolution: "change-case@npm:4.1.2" - dependencies: - camel-case: "npm:^4.1.2" - capital-case: "npm:^1.0.4" - constant-case: "npm:^3.0.4" - dot-case: "npm:^3.0.4" - header-case: "npm:^2.0.4" - no-case: "npm:^3.0.4" - param-case: "npm:^3.0.4" - pascal-case: "npm:^3.1.2" - path-case: "npm:^3.0.4" - sentence-case: "npm:^3.0.4" - snake-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: e4bc4a093a1f7cce8b33896665cf9e456e3bc3cc0def2ad7691b1994cfca99b3188d0a513b16855b01a6bd20692fcde12a7d4d87a5615c4c515bbbf0e651f116 +"chalk@npm:^5.3.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea + languageName: node + linkType: hard + +"change-case@npm:^5.3.0": + version: 5.4.4 + resolution: "change-case@npm:5.4.4" + checksum: 446e5573f3c854290a91292afef92b957d2e43a928260c91989b482aa860caaa29711b6725fc40c200af68061cbab357b033446d16a17bc5c553636994074e92 languageName: node linkType: hard @@ -7960,6 +7976,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.7.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 75bc67902b4d1c7b435497adeb91598f6d52a3389398e44294f6601b20cfef32cf2176f7be0eb961d9e085bb333a8a5cae121cb22f81cf238ae7f58eb80e9397 + languageName: node + linkType: hard + "ci-info@npm:^4.0.0": version: 4.0.0 resolution: "ci-info@npm:4.0.0" @@ -8180,6 +8203,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^12.0.0": + version: 12.0.0 + resolution: "commander@npm:12.0.0" + checksum: 62062e2ffe6abd5aa42a551e62fd5eb9b2620f6ac4299382b2aa9fb02f95cda0242d7e84acb890479bd6491edb805f7f91aecb5b4f5c70dc57df49ed7f02ef14 + languageName: node + linkType: hard + "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -8284,17 +8314,6 @@ __metadata: languageName: node linkType: hard -"constant-case@npm:^3.0.4": - version: 3.0.4 - resolution: "constant-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - upper-case: "npm:^2.0.2" - checksum: 6c3346d51afc28d9fae922e966c68eb77a19d94858dba230dd92d7b918b37d36db50f0311e9ecf6847e43e934b1c01406a0936973376ab17ec2c471fbcfb2cf3 - languageName: node - linkType: hard - "content-disposition@npm:0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" @@ -8967,6 +8986,17 @@ __metadata: languageName: node linkType: hard +"define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: abdcb2505d80a53524ba871273e5da75e77e52af9e15b3aa65d8aad82b8a3a424dad7aee2cc0b71470ac7acf501e08defac362e8b6a73cdb4309f028061df4ae + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -9250,16 +9280,6 @@ __metadata: languageName: node linkType: hard -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -9348,6 +9368,13 @@ __metadata: languageName: node linkType: hard +"emitter-component@npm:^1.1.1": + version: 1.1.2 + resolution: "emitter-component@npm:1.1.2" + checksum: d30a241962a7fdc6c84c654576876b4a496bd75cd608dcd4e615f8e61b1cf0a938799d6b20592432155b3a9ab2c7a800df5535de0643d8eae6100e93788c719f + languageName: node + linkType: hard + "emoji-regex@npm:^10.2.1": version: 10.3.0 resolution: "emoji-regex@npm:10.3.0" @@ -9527,6 +9554,22 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 + languageName: node + linkType: hard + "es-get-iterator@npm:^1.1.2": version: 1.1.2 resolution: "es-get-iterator@npm:1.1.2" @@ -10325,7 +10368,7 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.2.0": +"events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be @@ -10390,10 +10433,10 @@ __metadata: languageName: node linkType: hard -"expr-eval@npm:^2.0.2": +"expr-eval-fork@npm:^2.0.2": version: 2.0.2 - resolution: "expr-eval@npm:2.0.2" - checksum: b603f1ed2423636d84fd9984ed47af5cf90b42139faf5c535a778a12e916347b1e722364e3946ff3fc59537e01ea2eb3b4c3cc32a47bf80a097d1796e0b56fa6 + resolution: "expr-eval-fork@npm:2.0.2" + checksum: f88219215365bbf57d3cd0a6af5dfda62789dc81a771ae9ab9b98365f32b38deb28651f5630b77b0f75272cedbbbbe77f7e448ac959a7300b0ea4435d5abc554 languageName: node linkType: hard @@ -10673,6 +10716,15 @@ __metadata: languageName: node linkType: hard +"find-yarn-workspace-root@npm:^2.0.0": + version: 2.0.0 + resolution: "find-yarn-workspace-root@npm:2.0.0" + dependencies: + micromatch: "npm:^4.0.2" + checksum: 7fa7942849eef4d5385ee96a0a9a5a9afe885836fd72ed6a4280312a38690afea275e7d09b343fe97daf0412d833f8ac4b78c17fc756386d9ebebf0759d707a7 + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.1.1 resolution: "flat-cache@npm:3.1.1" @@ -10804,25 +10856,26 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.0.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" +"fs-extra@npm:^11.2.0": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" dependencies: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 05ce2c3b59049bcb7b52001acd000e44b3c4af4ec1f8839f383ef41ec0048e3cfa7fd8a637b1bddfefad319145db89be91f4b7c1db2908205d38bf91e7d1d3b7 + checksum: 0579bf6726a4cd054d4aa308f10b483f52478bb16284f32cf60b4ce0542063d551fca1a08a2af365e35db21a3fa5a06cf2a6ed614004b4368982bc754cb816b3 languageName: node linkType: hard -"fs-extra@npm:^11.2.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" +"fs-extra@npm:^9.0.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" dependencies: + at-least-node: "npm:^1.0.0" graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 0579bf6726a4cd054d4aa308f10b483f52478bb16284f32cf60b4ce0542063d551fca1a08a2af365e35db21a3fa5a06cf2a6ed614004b4368982bc754cb816b3 + checksum: 08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca languageName: node linkType: hard @@ -10954,6 +11007,19 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d + languageName: node + linkType: hard + "get-npm-tarball-url@npm:^2.0.3": version: 2.0.3 resolution: "get-npm-tarball-url@npm:2.0.3" @@ -11415,6 +11481,15 @@ __metadata: languageName: node linkType: hard +"has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 + languageName: node + linkType: hard + "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" @@ -11574,16 +11649,6 @@ __metadata: languageName: node linkType: hard -"header-case@npm:^2.0.4": - version: 2.0.4 - resolution: "header-case@npm:2.0.4" - dependencies: - capital-case: "npm:^1.0.4" - tslib: "npm:^2.0.3" - checksum: 571c83eeb25e8130d172218712f807c0b96d62b020981400bccc1503a7cf14b09b8b10498a962d2739eccf231d950e3848ba7d420b58a6acd2f9283439546cd9 - languageName: node - linkType: hard - "highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": version: 10.7.3 resolution: "highlight.js@npm:10.7.3" @@ -11794,7 +11859,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 @@ -11934,6 +11999,13 @@ __metadata: languageName: node linkType: hard +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 8771303d66c51be433b564427c16011a8e3fbc3449f1f11ea50efb30a4369495f1d0e89f0fc12bdec0bd7e49102ced5d137e031d39ea09821cb3c717fcf21e69 + languageName: node + linkType: hard + "ini@npm:^1.3.2, ini@npm:^1.3.5, ini@npm:^1.3.8": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -12371,7 +12443,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^4.0.0": +"is-plain-obj@npm:^4.0.0, is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce @@ -12551,7 +12623,7 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.2.0": +"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -12845,6 +12917,18 @@ __metadata: languageName: node linkType: hard +"json-stable-stringify@npm:^1.0.2": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.5" + isarray: "npm:^2.0.5" + jsonify: "npm:^0.0.1" + object-keys: "npm:^1.1.1" + checksum: 60853c1f63451319b5c7953465a555aa816cf84e60e3ca36b6c05225d8fdc4615127fb4ecb92f9f5ad880c552ab8cbae9a519f78b995e7788d6d89e57afafdeb + languageName: node + linkType: hard + "json-stringify-safe@npm:^5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" @@ -12863,7 +12947,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.0, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -12872,7 +12956,7 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:3.2.0, jsonc-parser@npm:^3.0.0": +"jsonc-parser@npm:3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" checksum: bd68b902e5f9394f01da97921f49c5084b2dc03a0c5b4fdb2a429f8d6f292686c1bf87badaeb0a8148d024192a88f5ad2e57b2918ba43fe25cf15f3371db64d4 @@ -12899,6 +12983,13 @@ __metadata: languageName: node linkType: hard +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 7b86b6f4518582ff1d8b7624ed6c6277affd5246445e864615dbdef843a4057ac58587684faf129ea111eeb80e01c15f0a4d9d03820eb3f3985fa67e81b12398 + languageName: node + linkType: hard + "jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" @@ -12934,6 +13025,15 @@ __metadata: languageName: node linkType: hard +"klaw-sync@npm:^6.0.0": + version: 6.0.0 + resolution: "klaw-sync@npm:6.0.0" + dependencies: + graceful-fs: "npm:^4.1.11" + checksum: 0da397f8961313c3ef8f79fb63af9002cde5a8fb2aeb1a37351feff0dd6006129c790400c3f5c3b4e757bedcabb13d21ec0a5eaef5a593d59515d4f2c291e475 + languageName: node + linkType: hard + "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -13368,15 +13468,6 @@ __metadata: languageName: node linkType: hard -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - "lowlight@npm:^1.17.0": version: 1.20.0 resolution: "lowlight@npm:1.20.0" @@ -14138,6 +14229,15 @@ __metadata: languageName: node linkType: hard +"memfs@npm:^4.8.1": + version: 4.8.2 + resolution: "memfs@npm:4.8.2" + dependencies: + tslib: "npm:^2.0.0" + checksum: 9cc1d1ce0ecb7cf91b1c0a29cb661ff0bde7471e8d902bbd465da6e0c49b4b3917309042a0ce7af82fa130b130e8b55688f7ac306c03e51639eb44eea6ffd75a + languageName: node + linkType: hard + "memoizerific@npm:^1.11.3": version: 1.11.3 resolution: "memoizerific@npm:1.11.3" @@ -15094,7 +15194,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -15543,16 +15643,6 @@ __metadata: languageName: node linkType: hard -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: "npm:^2.0.2" - tslib: "npm:^2.0.3" - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - "node-dir@npm:^0.1.17": version: 0.1.17 resolution: "node-dir@npm:0.1.17" @@ -16171,6 +16261,16 @@ __metadata: languageName: node linkType: hard +"open@npm:^7.4.2": + version: 7.4.2 + resolution: "open@npm:7.4.2" + dependencies: + is-docker: "npm:^2.0.0" + is-wsl: "npm:^2.1.1" + checksum: 4fc02ed3368dcd5d7247ad3566433ea2695b0713b041ebc0eeb2f0f9e5d4e29fc2068f5cdd500976b3464e77fe8b61662b1b059c73233ccc601fe8b16d6c1cd6 + languageName: node + linkType: hard + "open@npm:^8.0.4, open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" @@ -16406,16 +16506,6 @@ __metadata: languageName: node linkType: hard -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -16531,23 +16621,28 @@ __metadata: languageName: node linkType: hard -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - -"path-case@npm:^3.0.4": - version: 3.0.4 - resolution: "path-case@npm:3.0.4" +"patch-package@npm:^8.0.0": + version: 8.0.0 + resolution: "patch-package@npm:8.0.0" dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 61de0526222629f65038a66f63330dd22d5b54014ded6636283e1d15364da38b3cf29e4433aa3f9d8b0dba407ae2b059c23b0104a34ee789944b1bc1c5c7e06d + "@yarnpkg/lockfile": "npm:^1.1.0" + chalk: "npm:^4.1.2" + ci-info: "npm:^3.7.0" + cross-spawn: "npm:^7.0.3" + find-yarn-workspace-root: "npm:^2.0.0" + fs-extra: "npm:^9.0.0" + json-stable-stringify: "npm:^1.0.2" + klaw-sync: "npm:^6.0.0" + minimist: "npm:^1.2.6" + open: "npm:^7.4.2" + rimraf: "npm:^2.6.3" + semver: "npm:^7.5.3" + slash: "npm:^2.0.0" + tmp: "npm:^0.0.33" + yaml: "npm:^2.2.2" + bin: + patch-package: index.js + checksum: 8714322c35b29266e71c82d58443ce5322400a546a3327f1b8907b8eeb7e366dff33c4fdfbd25e3f0b3a9927189c26e9ac60636ca1e4140d6dbc11cca10f9b5d languageName: node linkType: hard @@ -16633,6 +16728,23 @@ __metadata: languageName: node linkType: hard +"path-unified@npm:^0.1.0": + version: 0.1.0 + resolution: "path-unified@npm:0.1.0" + checksum: 6a433dc924a04be67860c09deba737013f4e8834c1514072a8b9e346fb0b50f20bbdc39d37ede1da5d37c9ccb1b1a99faa730750020b056444dcbbbedf722330 + languageName: node + linkType: hard + +"path@npm:^0.12.7": + version: 0.12.7 + resolution: "path@npm:0.12.7" + dependencies: + process: "npm:^0.11.1" + util: "npm:^0.10.3" + checksum: d49d101f9596613cf4cd1d4ebc4e64ba9a9df5d9cd75a410cfe87a88ce4bf0e2617ff44b92025376f7ecb02e88a6308b27f7f39d810f2335a5126f762487adfb + languageName: node + linkType: hard + "pathe@npm:^1.1.0": version: 1.1.0 resolution: "pathe@npm:1.1.0" @@ -17734,7 +17846,7 @@ __metadata: languageName: node linkType: hard -"process@npm:^0.11.10": +"process@npm:^0.11.1, process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" checksum: dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b @@ -17880,6 +17992,13 @@ __metadata: languageName: node linkType: hard +"punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: af2700dde1a116791ff8301348ff344c47d6c224e875057237d1b5112035655fb07a6175cfdb8bf0e3a8cdfd2dc82b3a622e0aefd605566c0e949a6d0d1256a4 + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -17912,6 +18031,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.11.2": + version: 6.12.1 + resolution: "qs@npm:6.12.1" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 035bcad2a1ab0175bac7a74c904c15913bdac252834149ccff988c93a51de02642fe7be10e43058ba4dc4094bb28ce9b59d12b9e91d40997f445cfde3ecc1c29 + languageName: node + linkType: hard + "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -18737,6 +18865,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^2.6.3": + version: 2.7.1 + resolution: "rimraf@npm:2.7.1" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 4586c296c736483e297da7cffd19475e4a3e41d07b1ae124aad5d687c79e4ffa716bdac8732ed1db942caf65271cee9dd39f8b639611de161a2753e2112ffe1d + languageName: node + linkType: hard + "rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" @@ -19213,17 +19352,6 @@ __metadata: languageName: node linkType: hard -"sentence-case@npm:^3.0.4": - version: 3.0.4 - resolution: "sentence-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - upper-case-first: "npm:^2.0.2" - checksum: 3cfe6c0143e649132365695706702d7f729f484fa7b25f43435876efe7af2478243eefb052bacbcce10babf9319fd6b5b6bc59b94c80a1c819bcbb40651465d5 - languageName: node - linkType: hard - "serialize-javascript@npm:^6.0.1": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" @@ -19271,6 +19399,20 @@ __metadata: languageName: node linkType: hard +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 505d62b8e088468917ca4e3f8f39d0e29f9a563b97dbebf92f4bd2c3172ccfb3c5b8e4566d5fcd00784a00433900e7cb8fbc404e2dbd8c3818ba05bb9d4a8a6d + languageName: node + linkType: hard + "set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": version: 2.0.1 resolution: "set-function-name@npm:2.0.1" @@ -19325,6 +19467,18 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d + languageName: node + linkType: hard + "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -19394,6 +19548,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 512d4350735375bd11647233cb0e2f93beca6f53441015eea241fe784d8068281c3987fbaa93e7ef1c38df68d9c60013045c92837423c69115297d6169aa85e6 + languageName: node + linkType: hard + "slash@npm:^5.0.0, slash@npm:^5.1.0": version: 5.1.0 resolution: "slash@npm:5.1.0" @@ -19419,16 +19580,6 @@ __metadata: languageName: node linkType: hard -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 0a7a79900bbb36f8aaa922cf111702a3647ac6165736d5dc96d3ef367efc50465cac70c53cd172c382b022dac72ec91710608e5393de71f76d7142e6fd80e8a3 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -19689,6 +19840,15 @@ __metadata: languageName: node linkType: hard +"stream@npm:^0.0.2": + version: 0.0.2 + resolution: "stream@npm:0.0.2" + dependencies: + emitter-component: "npm:^1.1.1" + checksum: 271dfdd7d25848ff04f644215c0064e38883bcd27239c4a10b3d00e173429949b62b81571862c3eac659c4c93bebdba0f73e0be955a378b1a9280cab2844c6db + languageName: node + linkType: hard + "streamsearch@npm:^1.1.0": version: 1.1.0 resolution: "streamsearch@npm:1.1.0" @@ -19786,7 +19946,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -19914,22 +20074,24 @@ __metadata: languageName: node linkType: hard -"style-dictionary@npm:^3.7.2, style-dictionary@npm:^3.8.0": - version: 3.8.0 - resolution: "style-dictionary@npm:3.8.0" +"style-dictionary@npm:^4.0.0-prerelease.22, style-dictionary@npm:^4.0.0-prerelease.26": + version: 4.0.0-prerelease.26 + resolution: "style-dictionary@npm:4.0.0-prerelease.26" dependencies: - chalk: "npm:^4.0.0" - change-case: "npm:^4.1.2" + "@bundled-es-modules/deepmerge": "npm:^4.3.1" + "@bundled-es-modules/glob": "npm:^10.3.13" + "@bundled-es-modules/memfs": "npm:^4.8.1" + chalk: "npm:^5.3.0" + change-case: "npm:^5.3.0" commander: "npm:^8.3.0" - fs-extra: "npm:^10.0.0" - glob: "npm:^7.2.0" + is-plain-obj: "npm:^4.1.0" json5: "npm:^2.2.2" - jsonc-parser: "npm:^3.0.0" - lodash: "npm:^4.17.15" - tinycolor2: "npm:^1.4.1" + patch-package: "npm:^8.0.0" + path-unified: "npm:^0.1.0" + tinycolor2: "npm:^1.6.0" bin: - style-dictionary: bin/style-dictionary - checksum: 6b4e6237a4c084a1e19928a0cb2031d599beceaf6bf52f1a75fb60f03a1a474e6438330d43744780745c608222842111f1719b47047797aa2f3b87d0c4bfcc12 + style-dictionary: bin/style-dictionary.js + checksum: 16e3bd2bfa4a91d46cb6100b3206bf1b1417d2e3f355f28944310a12a1b487f7b1d09dfc29390d9e31f1f85979ce4a7a93716f6edae55b365e7b7cba2ff58dee languageName: node linkType: hard @@ -20464,7 +20626,7 @@ __metadata: languageName: node linkType: hard -"tinycolor2@npm:^1.4.1": +"tinycolor2@npm:^1.6.0": version: 1.6.0 resolution: "tinycolor2@npm:1.6.0" checksum: 066c3acf4f82b81c58a0d3ab85f49407efe95ba87afc3c7a16b1d77625193dfbe10dd46c26d0a263c1137361dd5a6a68bff2fb71def5fb9b9aec940fb030bcd4 @@ -20646,20 +20808,20 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: ea556fbdf396fe15dbd45e242754e86e7c36e0dce8644404a7c8a81ae1e940744dc639569aeca1ae370a7f804d82872f3fd8564eb23be9adb7618201d0314dac - languageName: node - linkType: hard - -"tslib@npm:^2.6.2": +"tslib@npm:^2.0.0, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca languageName: node linkType: hard +"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0": + version: 2.5.0 + resolution: "tslib@npm:2.5.0" + checksum: ea556fbdf396fe15dbd45e242754e86e7c36e0dce8644404a7c8a81ae1e940744dc639569aeca1ae370a7f804d82872f3fd8564eb23be9adb7618201d0314dac + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -21366,24 +21528,6 @@ __metadata: languageName: node linkType: hard -"upper-case-first@npm:^2.0.2": - version: 2.0.2 - resolution: "upper-case-first@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 4487db4701effe3b54ced4b3e4aa4d9ab06c548f97244d04aafb642eedf96a76d5a03cf5f38f10f415531d5792d1ac6e1b50f2a76984dc6964ad530f12876409 - languageName: node - linkType: hard - -"upper-case@npm:^2.0.2": - version: 2.0.2 - resolution: "upper-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 508723a2b03ab90cf1d6b7e0397513980fab821cbe79c87341d0e96cedefadf0d85f9d71eac24ab23f526a041d585a575cfca120a9f920e44eb4f8a7cf89121c - languageName: node - linkType: hard - "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -21403,6 +21547,16 @@ __metadata: languageName: node linkType: hard +"url@npm:^0.11.1": + version: 0.11.3 + resolution: "url@npm:0.11.3" + dependencies: + punycode: "npm:^1.4.1" + qs: "npm:^6.11.2" + checksum: a3a5ba64d8afb4dda111355d94073a9754b88b1de4035554c398b75f3e4d4244d5e7ae9e4554f0d91be72efd416aedbb646fbb1f3dd4cacecca45ed6c9b75145 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -21410,6 +21564,15 @@ __metadata: languageName: node linkType: hard +"util@npm:^0.10.3": + version: 0.10.4 + resolution: "util@npm:0.10.4" + dependencies: + inherits: "npm:2.0.3" + checksum: 1200a1ca2b474758342b3a0c5261c56f14ef09ad7eeaec3e6f449f5776ecdfce09a153cad62652b823e74647cdcfd2918552eadd2434783dfb58dabc5061803a + languageName: node + linkType: hard + "util@npm:^0.12.4, util@npm:^0.12.5": version: 0.12.5 resolution: "util@npm:0.12.5" @@ -22108,6 +22271,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.2.2": + version: 2.4.1 + resolution: "yaml@npm:2.4.1" + bin: + yaml: bin.mjs + checksum: 2c54fd69ef59126758ae710f9756405a7d41abcbb61aca894250d0e81e76057c14dc9bb00a9528f72f99b8f24077f694a6f7fd09cdd6711fcec2eebfbb5df409 + languageName: node + linkType: hard + "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -22122,7 +22294,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.0.0, yargs@npm:^17.6.2, yargs@npm:^17.7.2": +"yargs@npm:17.7.2, yargs@npm:^17.0.0, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: