@terrazzo/plugin-sass 2.0.0-beta.5 → 2.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -206,42 +206,33 @@ async function build({ getTransforms, options }) {
206
206
  root.appendBlankLine();
207
207
  const tokenValuesMap = root.createMap();
208
208
  const exclude = options?.exclude ? cachedMatcher.tokenIDMatch(options.exclude) : void 0;
209
- for (const token of getTransforms({
210
- format: FORMAT_ID,
211
- id: "*",
212
- mode: "."
213
- })) {
214
- if (exclude?.(token.token.id)) continue;
215
- const tokenId = token.token.id;
216
- const tokenName = token.localID ?? tokenId;
209
+ for (const token of getTransforms({ format: FORMAT_ID })) {
210
+ if (exclude?.(token.id)) continue;
211
+ const tokenName = token.localID ?? token.id;
217
212
  if (token.token.$type === "typography" && token.type === MULTI_VALUE) {
218
213
  const tokenValue = token.value;
219
- const typographySassVars = new Map(Object.keys(tokenValue).map((key) => [`${tokenId}.${key}`, new CssVarReferenceSassToken(`${tokenName}-${key}`)]));
220
- if ("font-size" in tokenValue && "font-family" in tokenValue) typographySassVars.set(tokenId, new CssVarReferenceSassToken(tokenName));
214
+ const typographySassVars = new Map(Object.keys(tokenValue).map((key) => [`${token.id}.${key}`, new CssVarReferenceSassToken(`${tokenName}-${key}`)]));
215
+ if ("font-size" in tokenValue && "font-family" in tokenValue) typographySassVars.set(token.id, new CssVarReferenceSassToken(tokenName));
221
216
  tokenValuesMap.extend(typographySassVars);
222
- } else tokenValuesMap.set(tokenId, new CssVarReferenceSassToken(tokenName));
217
+ } else tokenValuesMap.set(token.id, new CssVarReferenceSassToken(tokenName));
223
218
  }
224
219
  root.appendVariableDefinition("$__token-values", tokenValuesMap);
225
220
  root.appendBlankLine();
226
221
  const tokenTypographyMixinsMap = root.createMap();
227
222
  for (const token of getTransforms({
228
223
  format: "css",
229
- id: "*",
230
- mode: ".",
231
224
  $type: "typography"
232
225
  })) {
233
226
  if (typeof token.value === "string") continue;
234
- const tokenId = token.token.id;
235
- const tokenName = token.localID ?? tokenId;
236
- const tokenValue = token.value;
227
+ const tokenName = token.localID ?? token.id;
237
228
  const values = { ...token.value };
238
229
  const fontMap = tokenTypographyMixinsMap.createMap();
239
- if ("font-size" in tokenValue && "font-family" in tokenValue) {
230
+ if ("font-size" in token.value && "font-family" in token.value) {
240
231
  fontMap.set("font", new CssVarReferenceSassToken(`${tokenName}`));
241
232
  for (const property of FONT_SHORTHAND_PROPERTIES) delete values[property];
242
233
  }
243
234
  fontMap.extend(Object.keys(values).map((propertyName) => [propertyName, new CssVarReferenceSassToken(`${tokenName}-${propertyName}`)]));
244
- tokenTypographyMixinsMap.set(tokenId, fontMap);
235
+ tokenTypographyMixinsMap.set(token.id, fontMap);
245
236
  }
246
237
  root.appendVariableDefinition("$__token-typography-mixins", tokenTypographyMixinsMap);
247
238
  root.appendBlankLine();
@@ -265,12 +256,11 @@ Please install @terrazzo/plugin-css and follow setup to add to your config.`);
265
256
  for (const token of tokens) {
266
257
  const value = `var(${token.localID})`;
267
258
  let listingName = `token("${token.token.id}")`;
268
- if (token.token.$type === "typography") listingName = token.mode !== "." ? `typography("${token.token.id}", "${token.mode}")` : `typography("${token.token.id}")`;
259
+ if (token.token.$type === "typography") listingName = `typography("${token.token.id}")`;
269
260
  setTransform(token.id, {
270
261
  format: FORMAT_ID,
271
262
  localID: token.id,
272
263
  value,
273
- mode: token.mode,
274
264
  meta: { "token-listing": { name: listingName } }
275
265
  });
276
266
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CSS_FORMAT_ID"],"sources":["../src/lib.ts","../src/node.ts","../src/build.ts","../src/index.ts"],"sourcesContent":["import type { CSSPluginOptions } from '@terrazzo/plugin-css';\nimport { CachedWildcardMatcher } from '@terrazzo/token-tools';\n\nexport const FORMAT_ID = 'sass';\n\nexport interface SassPluginOptions {\n /** Where to output CSS */\n filename?: CSSPluginOptions['filename'];\n /** Glob patterns to exclude tokens from output */\n exclude?: CSSPluginOptions['exclude'];\n}\n\nexport const cachedMatcher = new CachedWildcardMatcher();\n\nexport const FILE_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n\n@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";`;\n\nexport const MIXIN_TOKEN = `@function token($tokenName) {\n @if map.has-key($__token-values, $tokenName) == false {\n @error 'No token named \"#{$tokenName}\"';\n }\n $_token: map.get($__token-values, $tokenName);\n @if meta.type-of($_token) == map and map.has-key($_token, \"__tz-error\") {\n @error map.get($_token, \"__tz-error\");\n }\n\n @return $_token;\n}`;\n\nexport const MIXIN_TYPOGRAPHY = `@mixin typography($tokenName, $modeName: \".\") {\n @if map.has-key($__token-typography-mixins, $tokenName) == false {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n $_mixin: map.get($__token-typography-mixins, $tokenName);\n $_properties: map.get($_mixin, \".\");\n @if map.has-key($_mixin) {\n $_properties: map.get($_mixin);\n }\n @each $_property, $_value in $_properties {\n #{$_property}: #{$_value};\n }\n}`;\n\nconst INDENT_NUM_SPACES = 2;\n\nexport function getIndent(indentationLevel: number): string {\n return indentationLevel > 0 ? ' '.repeat(indentationLevel * INDENT_NUM_SPACES) : '';\n}\n","import { makeCSSVar } from '@terrazzo/token-tools/css';\nimport { getIndent } from './lib.js';\n\nexport type SassMapKey = string | number;\nexport type SassMapValue = string | SassToken;\nexport type SassMapValues = Record<SassMapKey, SassMapValue> | Iterable<[SassMapKey, SassMapValue]>;\n\nexport abstract class SassToken {\n constructor(public readonly indentationLevel: number = 0) {}\n\n abstract format(): string;\n\n public toString(): string {\n return `${getIndent(this.indentationLevel)}${this.format()}`;\n }\n\n public createMap(values?: SassMapValues): SassMap {\n return new SassMap(this.indentationLevel + 1, values);\n }\n\n public createVariableDefinition(name: string, value: SassToken): VariableDefinitionSassToken {\n return new VariableDefinitionSassToken(this.indentationLevel + 1, name, value);\n }\n}\n\nexport abstract class ValueSassToken extends SassToken {\n public toString(): string {\n return this.format();\n }\n}\n\nexport class StringSassToken extends SassToken {\n constructor(\n public readonly value: string,\n indentationLevel = 0,\n ) {\n super(indentationLevel);\n }\n\n public format(): string {\n return this.value;\n }\n}\n\nexport class CssVarReferenceSassToken extends StringSassToken {\n public format(): string {\n return `${makeCSSVar(this.value, { wrapVar: true })}`;\n }\n}\n\nexport class BlankLineSassToken extends StringSassToken {\n constructor() {\n super('');\n }\n}\n\nexport class RootSassToken extends SassToken {\n private readonly SEPARATOR = '\\n';\n\n private sassTokens: SassToken[];\n\n constructor() {\n super(-1);\n this.sassTokens = [];\n }\n\n public append(sassToken: SassToken) {\n this.sassTokens.push(sassToken);\n }\n\n public appendString(value: string) {\n this.append(new StringSassToken(value));\n }\n\n public appendVariableDefinition(name: string, sassToken: SassToken) {\n this.append(this.createVariableDefinition(name, sassToken));\n }\n\n public appendBlankLine() {\n this.append(new BlankLineSassToken());\n }\n\n public appendUse(value: string, as_?: string) {\n this.append(new UseSassToken(value, as_));\n }\n\n public format(): string {\n return this.sassTokens.map((sassToken) => sassToken).join(this.SEPARATOR);\n }\n}\n\nexport class SassMap extends ValueSassToken {\n private readonly MAP_OPEN = '(';\n private readonly MAP_CLOSE = ')';\n private readonly MAP_VALUE_SEPARATOR = ',\\n';\n\n private readonly SEPARATOR = '\\n';\n\n private readonly values: Map<SassMapKey, SassMapValue>;\n\n constructor(indentationLevel: number, values?: SassMapValues) {\n super(indentationLevel);\n this.values = new Map<SassMapKey, SassMapValue>(values ? this.sassMapValuesToIter(values) : undefined);\n }\n\n public set(key: SassMapKey, value: SassMapValue) {\n this.values.set(key, value);\n }\n\n public extend(values: SassMapValues) {\n for (const [key, value] of this.sassMapValuesToIter(values)) {\n this.set(key, value);\n }\n }\n\n public setMap(key: SassMapKey, values: SassMapValues) {\n const nestedMap = this.createMap(values);\n this.set(key, nestedMap);\n return nestedMap;\n }\n\n public format(): string {\n return [\n this.MAP_OPEN,\n Array.from(\n this.values\n .entries()\n .map(([key, value]) => new StringSassToken(`\"${key}\": ${value}`, this.indentationLevel + 1)),\n ).join(this.MAP_VALUE_SEPARATOR),\n new StringSassToken(this.MAP_CLOSE, this.indentationLevel),\n ].join(this.SEPARATOR);\n }\n\n private sassMapValuesToIter(values: SassMapValues) {\n return Symbol.iterator in values && typeof values[Symbol.iterator] === 'function' ? values : Object.entries(values);\n }\n}\n\nexport class UseSassToken extends StringSassToken {\n constructor(value: string, as_?: string) {\n const valueQuoted = `\"${value}\"`;\n const atUseUrl = as_ ? `${valueQuoted} as ${as_}` : valueQuoted;\n super(`@use ${atUseUrl};`);\n }\n}\n\nexport class VariableDefinitionSassToken extends SassToken {\n constructor(\n indentationLevel: number,\n public readonly name: string,\n public readonly value: SassToken,\n ) {\n super(indentationLevel);\n }\n\n public format(): string {\n return `${this.name}: ${this.value};`;\n }\n}\n","import { type BuildHookOptions, MULTI_VALUE } from '@terrazzo/parser';\nimport { cachedMatcher, FORMAT_ID, type SassPluginOptions } from './lib.js';\nimport { CssVarReferenceSassToken, RootSassToken, type SassMapKey, type SassMapValue, type SassToken } from './node.js';\n\nexport interface BuildParams {\n getTransforms: BuildHookOptions['getTransforms'];\n options?: SassPluginOptions;\n}\n\nconst FONT_SHORTHAND_PROPERTIES = [\n 'font-family',\n 'font-size',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'line-height',\n];\n\nconst SASS_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n`;\n\nconst SASS_LIB = `@function token($tokenName) {\n @if not map.has-key($__token-values, $tokenName) {\n @error 'No token named \"#{$tokenName}\"';\n }\n\n $token: map.get($__token-values, $tokenName);\n\n @if $token == \"__tz-error-typography\" {\n @error \"This is a typography mixin. Use \\`@include typography(\"#{tokenId}\")\\` instead.\";\n }\n\n @return $token;\n}\n\n@mixin typography($tokenName) {\n @if not map.has-key($__token-typography-mixins, $tokenName) {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n\n $mixin: map.get($__token-typography-mixins, $tokenName);\n\n @each $_property, $_value in $mixin {\n #{$_property}: #{$_value};\n }\n}\n`;\n\nexport default async function build({ getTransforms, options }: BuildParams): Promise<string> {\n const root = new RootSassToken();\n root.appendString(SASS_HEADER);\n root.appendUse('sass:list');\n root.appendUse('sass:map');\n root.appendBlankLine();\n\n const tokenValuesMap = root.createMap();\n\n const exclude = options?.exclude ? cachedMatcher.tokenIDMatch(options.exclude) : undefined;\n\n for (const token of getTransforms({ format: FORMAT_ID, id: '*', mode: '.' })) {\n if (exclude?.(token.token.id)) {\n continue;\n }\n const tokenId = token.token.id;\n const tokenName = token.localID ?? tokenId;\n if (token.token.$type === 'typography' && token.type === MULTI_VALUE) {\n const tokenValue = token.value;\n const typographySassVars = new Map<SassMapKey, SassToken>(\n Object.keys(tokenValue).map((key) => [\n `${tokenId}.${key}`,\n new CssVarReferenceSassToken(`${tokenName}-${key}`),\n ]),\n );\n if ('font-size' in tokenValue && 'font-family' in tokenValue) {\n typographySassVars.set(tokenId, new CssVarReferenceSassToken(tokenName));\n }\n tokenValuesMap.extend(typographySassVars);\n } else {\n tokenValuesMap.set(tokenId, new CssVarReferenceSassToken(tokenName));\n }\n }\n root.appendVariableDefinition('$__token-values', tokenValuesMap);\n root.appendBlankLine();\n const tokenTypographyMixinsMap = root.createMap();\n\n for (const token of getTransforms({ format: 'css', id: '*', mode: '.', $type: 'typography' })) {\n if (typeof token.value === 'string') {\n continue;\n }\n const tokenId = token.token.id;\n const tokenName = token.localID ?? tokenId;\n const tokenValue = token.value;\n const values = { ...token.value };\n const fontMap = tokenTypographyMixinsMap.createMap();\n if ('font-size' in tokenValue && 'font-family' in tokenValue) {\n fontMap.set('font', new CssVarReferenceSassToken(`${tokenName}`));\n for (const property of FONT_SHORTHAND_PROPERTIES) {\n delete values[property];\n }\n }\n fontMap.extend(\n Object.keys(values).map(\n (propertyName) =>\n [propertyName, new CssVarReferenceSassToken(`${tokenName}-${propertyName}`)] as [SassMapKey, SassMapValue],\n ),\n );\n tokenTypographyMixinsMap.set(tokenId, fontMap);\n }\n\n root.appendVariableDefinition('$__token-typography-mixins', tokenTypographyMixinsMap);\n root.appendBlankLine();\n root.appendString(SASS_LIB);\n return root.toString();\n}\n","import type { Plugin } from '@terrazzo/parser';\nimport { FORMAT_ID as CSS_FORMAT_ID } from '@terrazzo/plugin-css';\nimport build from './build.js';\nimport { FORMAT_ID, type SassPluginOptions } from './lib.js';\n\nexport * from './build.js';\nexport * from './lib.js';\nexport * from './node.js';\n\nexport default function pluginSass(options?: SassPluginOptions): Plugin {\n const filename = options?.filename ?? 'index.scss';\n\n return {\n name: '@terrazzo/plugin-sass',\n enforce: 'post',\n config(config) {\n // plugin-css is required for transforms. throw error\n if (!config.plugins.some((p) => p.name === '@terrazzo/plugin-css')) {\n throw new Error(\n `@terrazzo/plugin-sass relies on @terrazzo/plugin-css.\nPlease install @terrazzo/plugin-css and follow setup to add to your config.`,\n );\n }\n },\n\n async transform({ getTransforms, setTransform }) {\n const tokens = getTransforms({ format: CSS_FORMAT_ID });\n for (const token of tokens) {\n const value = `var(${token.localID})`;\n let listingName = `token(\"${token.token.id}\")`;\n if (token.token.$type === 'typography') {\n listingName =\n token.mode !== '.' ? `typography(\"${token.token.id}\", \"${token.mode}\")` : `typography(\"${token.token.id}\")`;\n }\n setTransform(token.id, {\n format: FORMAT_ID,\n localID: token.id,\n value,\n mode: token.mode,\n meta: { 'token-listing': { name: listingName } },\n });\n }\n },\n\n async build({ getTransforms, outputFile }) {\n const output = await build({ getTransforms, options });\n outputFile(filename, output);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["CSS_FORMAT_ID"],"sources":["../src/lib.ts","../src/node.ts","../src/build.ts","../src/index.ts"],"sourcesContent":["import type { CSSPluginOptions } from '@terrazzo/plugin-css';\nimport { CachedWildcardMatcher } from '@terrazzo/token-tools';\n\nexport const FORMAT_ID = 'sass';\n\nexport interface SassPluginOptions {\n /** Where to output CSS */\n filename?: CSSPluginOptions['filename'];\n /** Glob patterns to exclude tokens from output */\n exclude?: CSSPluginOptions['exclude'];\n}\n\nexport const cachedMatcher = new CachedWildcardMatcher();\n\nexport const FILE_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n\n@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";`;\n\nexport const MIXIN_TOKEN = `@function token($tokenName) {\n @if map.has-key($__token-values, $tokenName) == false {\n @error 'No token named \"#{$tokenName}\"';\n }\n $_token: map.get($__token-values, $tokenName);\n @if meta.type-of($_token) == map and map.has-key($_token, \"__tz-error\") {\n @error map.get($_token, \"__tz-error\");\n }\n\n @return $_token;\n}`;\n\nexport const MIXIN_TYPOGRAPHY = `@mixin typography($tokenName, $modeName: \".\") {\n @if map.has-key($__token-typography-mixins, $tokenName) == false {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n $_mixin: map.get($__token-typography-mixins, $tokenName);\n $_properties: map.get($_mixin, \".\");\n @if map.has-key($_mixin) {\n $_properties: map.get($_mixin);\n }\n @each $_property, $_value in $_properties {\n #{$_property}: #{$_value};\n }\n}`;\n\nconst INDENT_NUM_SPACES = 2;\n\nexport function getIndent(indentationLevel: number): string {\n return indentationLevel > 0 ? ' '.repeat(indentationLevel * INDENT_NUM_SPACES) : '';\n}\n","import { makeCSSVar } from '@terrazzo/token-tools/css';\nimport { getIndent } from './lib.js';\n\nexport type SassMapKey = string | number;\nexport type SassMapValue = string | SassToken;\nexport type SassMapValues = Record<SassMapKey, SassMapValue> | Iterable<[SassMapKey, SassMapValue]>;\n\nexport abstract class SassToken {\n constructor(public readonly indentationLevel: number = 0) {}\n\n abstract format(): string;\n\n public toString(): string {\n return `${getIndent(this.indentationLevel)}${this.format()}`;\n }\n\n public createMap(values?: SassMapValues): SassMap {\n return new SassMap(this.indentationLevel + 1, values);\n }\n\n public createVariableDefinition(name: string, value: SassToken): VariableDefinitionSassToken {\n return new VariableDefinitionSassToken(this.indentationLevel + 1, name, value);\n }\n}\n\nexport abstract class ValueSassToken extends SassToken {\n public toString(): string {\n return this.format();\n }\n}\n\nexport class StringSassToken extends SassToken {\n constructor(\n public readonly value: string,\n indentationLevel = 0,\n ) {\n super(indentationLevel);\n }\n\n public format(): string {\n return this.value;\n }\n}\n\nexport class CssVarReferenceSassToken extends StringSassToken {\n public format(): string {\n return `${makeCSSVar(this.value, { wrapVar: true })}`;\n }\n}\n\nexport class BlankLineSassToken extends StringSassToken {\n constructor() {\n super('');\n }\n}\n\nexport class RootSassToken extends SassToken {\n private readonly SEPARATOR = '\\n';\n\n private sassTokens: SassToken[];\n\n constructor() {\n super(-1);\n this.sassTokens = [];\n }\n\n public append(sassToken: SassToken) {\n this.sassTokens.push(sassToken);\n }\n\n public appendString(value: string) {\n this.append(new StringSassToken(value));\n }\n\n public appendVariableDefinition(name: string, sassToken: SassToken) {\n this.append(this.createVariableDefinition(name, sassToken));\n }\n\n public appendBlankLine() {\n this.append(new BlankLineSassToken());\n }\n\n public appendUse(value: string, as_?: string) {\n this.append(new UseSassToken(value, as_));\n }\n\n public format(): string {\n return this.sassTokens.map((sassToken) => sassToken).join(this.SEPARATOR);\n }\n}\n\nexport class SassMap extends ValueSassToken {\n private readonly MAP_OPEN = '(';\n private readonly MAP_CLOSE = ')';\n private readonly MAP_VALUE_SEPARATOR = ',\\n';\n\n private readonly SEPARATOR = '\\n';\n\n private readonly values: Map<SassMapKey, SassMapValue>;\n\n constructor(indentationLevel: number, values?: SassMapValues) {\n super(indentationLevel);\n this.values = new Map<SassMapKey, SassMapValue>(values ? this.sassMapValuesToIter(values) : undefined);\n }\n\n public set(key: SassMapKey, value: SassMapValue) {\n this.values.set(key, value);\n }\n\n public extend(values: SassMapValues) {\n for (const [key, value] of this.sassMapValuesToIter(values)) {\n this.set(key, value);\n }\n }\n\n public setMap(key: SassMapKey, values: SassMapValues) {\n const nestedMap = this.createMap(values);\n this.set(key, nestedMap);\n return nestedMap;\n }\n\n public format(): string {\n return [\n this.MAP_OPEN,\n Array.from(\n this.values\n .entries()\n .map(([key, value]) => new StringSassToken(`\"${key}\": ${value}`, this.indentationLevel + 1)),\n ).join(this.MAP_VALUE_SEPARATOR),\n new StringSassToken(this.MAP_CLOSE, this.indentationLevel),\n ].join(this.SEPARATOR);\n }\n\n private sassMapValuesToIter(values: SassMapValues) {\n return Symbol.iterator in values && typeof values[Symbol.iterator] === 'function' ? values : Object.entries(values);\n }\n}\n\nexport class UseSassToken extends StringSassToken {\n constructor(value: string, as_?: string) {\n const valueQuoted = `\"${value}\"`;\n const atUseUrl = as_ ? `${valueQuoted} as ${as_}` : valueQuoted;\n super(`@use ${atUseUrl};`);\n }\n}\n\nexport class VariableDefinitionSassToken extends SassToken {\n constructor(\n indentationLevel: number,\n public readonly name: string,\n public readonly value: SassToken,\n ) {\n super(indentationLevel);\n }\n\n public format(): string {\n return `${this.name}: ${this.value};`;\n }\n}\n","import { type BuildHookOptions, MULTI_VALUE } from '@terrazzo/parser';\nimport { cachedMatcher, FORMAT_ID, type SassPluginOptions } from './lib.js';\nimport { CssVarReferenceSassToken, RootSassToken, type SassMapKey, type SassMapValue, type SassToken } from './node.js';\n\nexport interface BuildParams {\n getTransforms: BuildHookOptions['getTransforms'];\n options?: SassPluginOptions;\n}\n\nconst FONT_SHORTHAND_PROPERTIES = [\n 'font-family',\n 'font-size',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'line-height',\n];\n\nconst SASS_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n`;\n\nconst SASS_LIB = `@function token($tokenName) {\n @if not map.has-key($__token-values, $tokenName) {\n @error 'No token named \"#{$tokenName}\"';\n }\n\n $token: map.get($__token-values, $tokenName);\n\n @if $token == \"__tz-error-typography\" {\n @error \"This is a typography mixin. Use \\`@include typography(\"#{tokenId}\")\\` instead.\";\n }\n\n @return $token;\n}\n\n@mixin typography($tokenName) {\n @if not map.has-key($__token-typography-mixins, $tokenName) {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n\n $mixin: map.get($__token-typography-mixins, $tokenName);\n\n @each $_property, $_value in $mixin {\n #{$_property}: #{$_value};\n }\n}\n`;\n\nexport default async function build({ getTransforms, options }: BuildParams): Promise<string> {\n const root = new RootSassToken();\n root.appendString(SASS_HEADER);\n root.appendUse('sass:list');\n root.appendUse('sass:map');\n root.appendBlankLine();\n\n const tokenValuesMap = root.createMap();\n\n const exclude = options?.exclude ? cachedMatcher.tokenIDMatch(options.exclude) : undefined;\n\n for (const token of getTransforms({ format: FORMAT_ID })) {\n if (exclude?.(token.id)) {\n continue;\n }\n const tokenName = token.localID ?? token.id;\n if (token.token.$type === 'typography' && token.type === MULTI_VALUE) {\n const tokenValue = token.value;\n const typographySassVars = new Map<SassMapKey, SassToken>(\n Object.keys(tokenValue).map((key) => [\n `${token.id}.${key}`,\n new CssVarReferenceSassToken(`${tokenName}-${key}`),\n ]),\n );\n if ('font-size' in tokenValue && 'font-family' in tokenValue) {\n typographySassVars.set(token.id, new CssVarReferenceSassToken(tokenName));\n }\n tokenValuesMap.extend(typographySassVars);\n } else {\n tokenValuesMap.set(token.id, new CssVarReferenceSassToken(tokenName));\n }\n }\n root.appendVariableDefinition('$__token-values', tokenValuesMap);\n root.appendBlankLine();\n const tokenTypographyMixinsMap = root.createMap();\n\n for (const token of getTransforms({ format: 'css', $type: 'typography' })) {\n if (typeof token.value === 'string') {\n continue;\n }\n const tokenName = token.localID ?? token.id;\n const values = { ...token.value };\n const fontMap = tokenTypographyMixinsMap.createMap();\n if ('font-size' in token.value && 'font-family' in token.value) {\n fontMap.set('font', new CssVarReferenceSassToken(`${tokenName}`));\n for (const property of FONT_SHORTHAND_PROPERTIES) {\n delete values[property];\n }\n }\n fontMap.extend(\n Object.keys(values).map(\n (propertyName) =>\n [propertyName, new CssVarReferenceSassToken(`${tokenName}-${propertyName}`)] as [SassMapKey, SassMapValue],\n ),\n );\n tokenTypographyMixinsMap.set(token.id, fontMap);\n }\n\n root.appendVariableDefinition('$__token-typography-mixins', tokenTypographyMixinsMap);\n root.appendBlankLine();\n root.appendString(SASS_LIB);\n return root.toString();\n}\n","import type { Plugin } from '@terrazzo/parser';\nimport { FORMAT_ID as CSS_FORMAT_ID } from '@terrazzo/plugin-css';\nimport build from './build.js';\nimport { FORMAT_ID, type SassPluginOptions } from './lib.js';\n\nexport * from './build.js';\nexport * from './lib.js';\nexport * from './node.js';\n\nexport default function pluginSass(options?: SassPluginOptions): Plugin {\n const filename = options?.filename ?? 'index.scss';\n\n return {\n name: '@terrazzo/plugin-sass',\n enforce: 'post',\n config(config) {\n // plugin-css is required for transforms. throw error\n if (!config.plugins.some((p) => p.name === '@terrazzo/plugin-css')) {\n throw new Error(\n `@terrazzo/plugin-sass relies on @terrazzo/plugin-css.\nPlease install @terrazzo/plugin-css and follow setup to add to your config.`,\n );\n }\n },\n\n async transform({ getTransforms, setTransform }) {\n const tokens = getTransforms({ format: CSS_FORMAT_ID });\n for (const token of tokens) {\n const value = `var(${token.localID})`;\n\n // TODO: don’t embed listingName into plugin-sass\n let listingName = `token(\"${token.token.id}\")`;\n if (token.token.$type === 'typography') {\n listingName = `typography(\"${token.token.id}\")`;\n }\n\n setTransform(token.id, {\n format: FORMAT_ID,\n localID: token.id,\n value,\n meta: { 'token-listing': { name: listingName } },\n });\n }\n },\n\n async build({ getTransforms, outputFile }) {\n const output = await build({ getTransforms, options });\n outputFile(filename, output);\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terrazzo/plugin-sass",
3
- "version": "2.0.0-beta.5",
3
+ "version": "2.0.0-beta.6",
4
4
  "description": "Generate .scss from your DTCG design tokens JSON.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,18 +27,17 @@
27
27
  "directory": "packages/plugin-sass"
28
28
  },
29
29
  "peerDependencies": {
30
- "@terrazzo/cli": "^2.0.0-beta.5",
31
- "@terrazzo/parser": "^2.0.0-beta.5",
32
- "@terrazzo/plugin-css": "^2.0.0-beta.5"
30
+ "@terrazzo/cli": "^2.0.0-beta.6",
31
+ "@terrazzo/parser": "^2.0.0-beta.6",
32
+ "@terrazzo/plugin-css": "^2.0.0-beta.6"
33
33
  },
34
34
  "dependencies": {
35
- "wildcard-match": "^5.1.4",
36
- "@terrazzo/token-tools": "^2.0.0-beta.5"
35
+ "@terrazzo/token-tools": "^2.0.0-beta.6"
37
36
  },
38
37
  "devDependencies": {
39
- "@terrazzo/cli": "^2.0.0-beta.5",
40
- "@terrazzo/parser": "^2.0.0-beta.5",
41
- "@terrazzo/plugin-css": "^2.0.0-beta.5"
38
+ "@terrazzo/cli": "^2.0.0-beta.6",
39
+ "@terrazzo/parser": "^2.0.0-beta.6",
40
+ "@terrazzo/plugin-css": "^2.0.0-beta.6"
42
41
  },
43
42
  "scripts": {
44
43
  "build": "rolldown -c && attw --profile esm-only --pack .",