@terrazzo/plugin-sass 2.0.0-beta.5 → 2.0.0-rc.0
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 +10 -20
- package/dist/index.js.map +1 -1
- package/package.json +8 -9
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
|
-
|
|
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) => [`${
|
|
220
|
-
if ("font-size" in tokenValue && "font-family" in tokenValue) typographySassVars.set(
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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 =
|
|
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-
|
|
3
|
+
"version": "2.0.0-rc.0",
|
|
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-
|
|
31
|
-
"@terrazzo/parser": "^2.0.0-
|
|
32
|
-
"@terrazzo/plugin-css": "^2.0.0-
|
|
30
|
+
"@terrazzo/cli": "^2.0.0-rc.0",
|
|
31
|
+
"@terrazzo/parser": "^2.0.0-rc.0",
|
|
32
|
+
"@terrazzo/plugin-css": "^2.0.0-rc.0"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"
|
|
36
|
-
"@terrazzo/token-tools": "^2.0.0-beta.5"
|
|
35
|
+
"@terrazzo/token-tools": "^2.0.0-rc.0"
|
|
37
36
|
},
|
|
38
37
|
"devDependencies": {
|
|
39
|
-
"@terrazzo/cli": "^2.0.0-
|
|
40
|
-
"@terrazzo/parser": "^2.0.0-
|
|
41
|
-
"@terrazzo/plugin-css": "^2.0.0-
|
|
38
|
+
"@terrazzo/cli": "^2.0.0-rc.0",
|
|
39
|
+
"@terrazzo/parser": "^2.0.0-rc.0",
|
|
40
|
+
"@terrazzo/plugin-css": "^2.0.0-rc.0"
|
|
42
41
|
},
|
|
43
42
|
"scripts": {
|
|
44
43
|
"build": "rolldown -c && attw --profile esm-only --pack .",
|