@hh.ru/magritte-design-tokens-utils 2.0.3
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/cli/index.d.ts +1 -0
- package/cli/index.js +39 -0
- package/cli/index.js.map +1 -0
- package/cli/tokenize.d.ts +2 -0
- package/cli/tokenize.js +47 -0
- package/cli/tokenize.js.map +1 -0
- package/cli.js +3 -0
- package/constants.d.ts +2 -0
- package/constants.js +5 -0
- package/constants.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +7 -0
- package/index.js.map +1 -0
- package/package.json +29 -0
- package/prepare.d.ts +5 -0
- package/prepare.js +48 -0
- package/prepare.js.map +1 -0
- package/purify.d.ts +2 -0
- package/purify.js +32 -0
- package/purify.js.map +1 -0
- package/tokenize.d.ts +31 -0
- package/tokenize.js +105 -0
- package/tokenize.js.map +1 -0
- package/types.d.ts +5 -0
- package/types.js +2 -0
- package/types.js.map +1 -0
package/cli/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/cli/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { tokenize } from './tokenize.js';
|
|
4
|
+
import { filterThemeSets, prepareThemesTokens } from '../prepare.js';
|
|
5
|
+
import { purify } from '../purify.js';
|
|
6
|
+
import 'style-dictionary';
|
|
7
|
+
import '../tokenize.js';
|
|
8
|
+
import 'change-case';
|
|
9
|
+
import 'token-transformer';
|
|
10
|
+
import '../constants.js';
|
|
11
|
+
|
|
12
|
+
const main = () => {
|
|
13
|
+
if (process.argv.length < 3) {
|
|
14
|
+
console.error('Missing required argument: file');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const inputFile = process.argv[2];
|
|
18
|
+
let tokens;
|
|
19
|
+
try {
|
|
20
|
+
tokens = fs.readFileSync(path.resolve(process.cwd(), inputFile), 'utf8');
|
|
21
|
+
tokens = JSON.parse(tokens);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
console.error('Error while reading tokens file');
|
|
25
|
+
console.error(e);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
const purifiedTokens = purify(tokens);
|
|
29
|
+
const themes = filterThemeSets(purifiedTokens);
|
|
30
|
+
if (themes.length !== 1) {
|
|
31
|
+
console.error('Tokens must contain exactly one theme');
|
|
32
|
+
console.error(`Themes found: [${themes.join(', ')}}]`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
const prepareTheme = prepareThemesTokens(purifiedTokens)[0];
|
|
36
|
+
tokenize(prepareTheme);
|
|
37
|
+
};
|
|
38
|
+
main();
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
package/cli/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { tokenize } from '@hh.ru/magritte-design-tokens-utils/cli/tokenize';\nimport { filterThemeSets, prepareThemesTokens } from '@hh.ru/magritte-design-tokens-utils/prepare';\nimport { purify } from '@hh.ru/magritte-design-tokens-utils/purify';\nimport { Tokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\nconst main = () => {\n if (process.argv.length < 3) {\n console.error('Missing required argument: file');\n process.exit(1);\n }\n const inputFile = process.argv[2];\n\n let tokens;\n try {\n tokens = fs.readFileSync(path.resolve(process.cwd(), inputFile), 'utf8');\n tokens = JSON.parse(tokens) as Tokens;\n } catch (e) {\n console.error('Error while reading tokens file');\n console.error(e);\n process.exit(1);\n }\n const purifiedTokens = purify(tokens);\n const themes = filterThemeSets(purifiedTokens);\n if (themes.length !== 1) {\n console.error('Tokens must contain exactly one theme');\n console.error(`Themes found: [${themes.join(', ')}}]`);\n process.exit(1);\n }\n const prepareTheme = prepareThemesTokens(purifiedTokens)[0];\n\n tokenize(prepareTheme);\n};\n\nmain();\n"],"names":[],"mappings":";;;;;;;;;;;AAQA,MAAM,IAAI,GAAG,MAAK;AACd,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,KAAA;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAElC,IAAA,IAAI,MAAM,CAAC;IACX,IAAI;AACA,QAAA,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,CAAC;AACzC,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,KAAA;AACD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;AAC/C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,KAAK,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,KAAA;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,IAAI,EAAE"}
|
package/cli/tokenize.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import StyleDictionary from 'style-dictionary';
|
|
3
|
+
import { kebabWithUnderscoreTransformer, cssFormatter } from '../tokenize.js';
|
|
4
|
+
import 'change-case';
|
|
5
|
+
|
|
6
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
7
|
+
const versionPostfix = '-v${major}-${minor}-${patch}';
|
|
8
|
+
const tokenize = ({ themeTokens: tokens, themeName }) => {
|
|
9
|
+
const tmpFileName = `tokens.${Date.now()}.json`;
|
|
10
|
+
fs.writeFileSync(tmpFileName, JSON.stringify(tokens, null, 2));
|
|
11
|
+
const config = {
|
|
12
|
+
source: [tmpFileName],
|
|
13
|
+
platforms: {
|
|
14
|
+
ts: {
|
|
15
|
+
transformGroup: 'ts',
|
|
16
|
+
transforms: ['name/cti/kebabWithUnderscore'],
|
|
17
|
+
prefix: 'magritte-',
|
|
18
|
+
buildPath: './',
|
|
19
|
+
files: [
|
|
20
|
+
{
|
|
21
|
+
destination: `magritte${themeName.charAt(0).toUpperCase()}${themeName.slice(1)}Theme.ts`,
|
|
22
|
+
format: 'ts/variables',
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
const build = StyleDictionary.extend(config);
|
|
29
|
+
build.registerTransform(kebabWithUnderscoreTransformer);
|
|
30
|
+
build.registerFormat({
|
|
31
|
+
name: 'ts/variables',
|
|
32
|
+
formatter({ dictionary }) {
|
|
33
|
+
return `export default (tokensVersion: string): { tokensString: string; themeClassName: string } => {
|
|
34
|
+
const [major, minor, patch] = tokensVersion.split('.');
|
|
35
|
+
const tokensString = \`
|
|
36
|
+
.magritte-${themeName}-theme {\n${cssFormatter(dictionary, versionPostfix)}\n}\`;
|
|
37
|
+
|
|
38
|
+
return { tokensString, themeClassName: 'magritte-${themeName}-theme' };
|
|
39
|
+
};\n`;
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
build.buildAllPlatforms();
|
|
43
|
+
fs.unlinkSync(tmpFileName);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export { tokenize };
|
|
47
|
+
//# sourceMappingURL=tokenize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.js","sources":["../../src/cli/tokenize.ts"],"sourcesContent":["import fs from 'fs';\nimport StyleDictionary, { Config } from 'style-dictionary';\n\nimport { kebabWithUnderscoreTransformer, cssFormatter } from '@hh.ru/magritte-design-tokens-utils/tokenize';\nimport { PreparedThemesTokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\n// eslint-disable-next-line no-template-curly-in-string\nconst versionPostfix = '-v${major}-${minor}-${patch}';\n\nexport const tokenize = ({ themeTokens: tokens, themeName }: PreparedThemesTokens): void => {\n const tmpFileName = `tokens.${Date.now()}.json`;\n fs.writeFileSync(tmpFileName, JSON.stringify(tokens, null, 2));\n\n const config: Config = {\n source: [tmpFileName],\n platforms: {\n ts: {\n transformGroup: 'ts',\n transforms: ['name/cti/kebabWithUnderscore'],\n prefix: 'magritte-',\n buildPath: './',\n files: [\n {\n destination: `magritte${themeName.charAt(0).toUpperCase()}${themeName.slice(1)}Theme.ts`,\n format: 'ts/variables',\n },\n ],\n },\n },\n };\n\n const build = StyleDictionary.extend(config);\n\n build.registerTransform(kebabWithUnderscoreTransformer);\n\n build.registerFormat({\n name: 'ts/variables',\n formatter({ dictionary }) {\n return `export default (tokensVersion: string): { tokensString: string; themeClassName: string } => {\n const [major, minor, patch] = tokensVersion.split('.');\n const tokensString = \\`\n.magritte-${themeName}-theme {\\n${cssFormatter(dictionary, versionPostfix)}\\n}\\`;\n\n return { tokensString, themeClassName: 'magritte-${themeName}-theme' };\n};\\n`;\n },\n });\n\n build.buildAllPlatforms();\n fs.unlinkSync(tmpFileName);\n};\n"],"names":[],"mappings":";;;;;AAMA;AACA,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAE/C,MAAM,QAAQ,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAwB,KAAU;IACvF,MAAM,WAAW,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AAChD,IAAA,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/D,IAAA,MAAM,MAAM,GAAW;QACnB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,QAAA,SAAS,EAAE;AACP,YAAA,EAAE,EAAE;AACA,gBAAA,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,CAAC,8BAA8B,CAAC;AAC5C,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE;AACH,oBAAA;AACI,wBAAA,WAAW,EAAE,CAAW,QAAA,EAAA,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAU,QAAA,CAAA;AACxF,wBAAA,MAAM,EAAE,cAAc;AACzB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE7C,IAAA,KAAK,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,CAAC;IAExD,KAAK,CAAC,cAAc,CAAC;AACjB,QAAA,IAAI,EAAE,cAAc;QACpB,SAAS,CAAC,EAAE,UAAU,EAAE,EAAA;YACpB,OAAO,CAAA;;;AAGP,UAAA,EAAA,SAAS,aAAa,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;;uDAEnB,SAAS,CAAA;KAC3D,CAAC;SACG;AACJ,KAAA,CAAC,CAAC;IAEH,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,IAAA,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC/B;;;;"}
|
package/cli.js
ADDED
package/constants.d.ts
ADDED
package/constants.js
ADDED
package/constants.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const BASE_SET = ['core', 'colors', 'semantic', 'typography'];\n\nexport const TOKENS_DEFAULT_THEME = 'hh-day';\n"],"names":[],"mappings":"AAAO,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE;AAE9D,MAAM,oBAAoB,GAAG;;;;"}
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { purify } from './purify.js';
|
|
2
|
+
export { TYPES, cssFormatter, getVariableUnit, kebabWithUnderscoreTransformer, typographyTransformations } from './tokenize.js';
|
|
3
|
+
export { filterThemeSets, prepareBaseTokens, prepareThemesTokens } from './prepare.js';
|
|
4
|
+
export { BASE_SET, TOKENS_DEFAULT_THEME } from './constants.js';
|
|
5
|
+
import 'change-case';
|
|
6
|
+
import 'token-transformer';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hh.ru/magritte-design-tokens-utils",
|
|
3
|
+
"version": "2.0.3",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"types": "index.d.ts",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": "cli.js",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "yarn root:build $(pwd) && bash tools/build.sh",
|
|
10
|
+
"build-test-branch": "yarn root:build-test-branch $(pwd)",
|
|
11
|
+
"changelog": "yarn root:changelog $(pwd)",
|
|
12
|
+
"prepack": "yarn root:prepack $(pwd)",
|
|
13
|
+
"postpublish": "yarn root:postpublish $(pwd)",
|
|
14
|
+
"stylelint-test": "yarn root:stylelint-test $(pwd)",
|
|
15
|
+
"eslint-test": "yarn root:eslint-test $(pwd)",
|
|
16
|
+
"ts-config": "yarn root:ts-config $(pwd)",
|
|
17
|
+
"ts-check": "yarn root:ts-check $(pwd)",
|
|
18
|
+
"test": "yarn root:test $(pwd)"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"change-case": "4.1.2",
|
|
22
|
+
"style-dictionary": "^3.7.1",
|
|
23
|
+
"token-transformer": "^0.0.32"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"gitHead": "b660dd64fca3eaad5ec44ea9a73f92bb0d9694aa"
|
|
29
|
+
}
|
package/prepare.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Options } from 'token-transformer';
|
|
2
|
+
import { Tokens, PreparedThemesTokens } from './types';
|
|
3
|
+
export declare const prepareBaseTokens: (tokens: Tokens, config?: Options) => Tokens;
|
|
4
|
+
export declare const filterThemeSets: (tokens: Tokens) => string[];
|
|
5
|
+
export declare const prepareThemesTokens: (tokens: Tokens, config?: Options, includeThemes?: string[]) => PreparedThemesTokens[];
|
package/prepare.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { transformTokens } from 'token-transformer';
|
|
2
|
+
import { BASE_SET } from './constants.js';
|
|
3
|
+
|
|
4
|
+
const isObject = (obj) => {
|
|
5
|
+
return typeof obj === 'object';
|
|
6
|
+
};
|
|
7
|
+
const traverse = (tokens) => {
|
|
8
|
+
Object.keys(tokens).forEach((key) => {
|
|
9
|
+
const objKey = tokens[key];
|
|
10
|
+
if (objKey && isObject(objKey)) {
|
|
11
|
+
if (objKey.value && !objKey.type) {
|
|
12
|
+
objKey['#value'] = objKey.value;
|
|
13
|
+
delete objKey.value;
|
|
14
|
+
}
|
|
15
|
+
traverse(objKey);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return tokens;
|
|
19
|
+
};
|
|
20
|
+
const prepareBaseTokens = (tokens, config) => {
|
|
21
|
+
const transformerOptions = {
|
|
22
|
+
expandShadow: true,
|
|
23
|
+
preserveRawValue: true,
|
|
24
|
+
...config,
|
|
25
|
+
};
|
|
26
|
+
const baseTokens = transformTokens(tokens, BASE_SET, [], transformerOptions);
|
|
27
|
+
return traverse(baseTokens);
|
|
28
|
+
};
|
|
29
|
+
const filterThemeSets = (tokens) => {
|
|
30
|
+
const sets = Object.keys(tokens).filter((set) => !set.startsWith('$'));
|
|
31
|
+
return sets.filter((set) => !BASE_SET.includes(set));
|
|
32
|
+
};
|
|
33
|
+
const prepareThemesTokens = (tokens, config, includeThemes = []) => {
|
|
34
|
+
const themes = includeThemes.length ? includeThemes : filterThemeSets(tokens);
|
|
35
|
+
const transformerOptions = {
|
|
36
|
+
expandShadow: true,
|
|
37
|
+
...config,
|
|
38
|
+
};
|
|
39
|
+
const result = themes.reduce((res, theme) => {
|
|
40
|
+
const themeTokens = transformTokens(tokens, [...BASE_SET, theme], BASE_SET, transformerOptions);
|
|
41
|
+
res.push({ themeTokens: traverse(themeTokens), themeName: theme });
|
|
42
|
+
return res;
|
|
43
|
+
}, []);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { filterThemeSets, prepareBaseTokens, prepareThemesTokens };
|
|
48
|
+
//# sourceMappingURL=prepare.js.map
|
package/prepare.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.js","sources":["../src/prepare.ts"],"sourcesContent":["import { Options, transformTokens } from 'token-transformer';\n\nimport { BASE_SET } from '@hh.ru/magritte-design-tokens-utils/constants';\nimport { Tokens, PreparedThemesTokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\nconst isObject = (obj: unknown): obj is Record<string, unknown> => {\n return typeof obj === 'object';\n};\n\nconst traverse = (tokens: Tokens): Tokens => {\n Object.keys(tokens).forEach((key) => {\n const objKey = tokens[key];\n if (objKey && isObject(objKey)) {\n if (objKey.value && !objKey.type) {\n objKey['#value'] = objKey.value;\n delete objKey.value;\n }\n traverse(objKey);\n }\n });\n return tokens;\n};\n\nexport const prepareBaseTokens = (tokens: Tokens, config?: Options): Tokens => {\n const transformerOptions = {\n expandShadow: true,\n preserveRawValue: true,\n ...config,\n };\n const baseTokens = transformTokens(tokens, BASE_SET, [], transformerOptions);\n return traverse(baseTokens);\n};\n\nexport const filterThemeSets = (tokens: Tokens): string[] => {\n const sets = Object.keys(tokens).filter((set) => !set.startsWith('$'));\n return sets.filter((set) => !BASE_SET.includes(set));\n};\n\nexport const prepareThemesTokens = (\n tokens: Tokens,\n config?: Options,\n includeThemes: string[] = []\n): PreparedThemesTokens[] => {\n const themes = includeThemes.length ? includeThemes : filterThemeSets(tokens);\n const transformerOptions = {\n expandShadow: true,\n ...config,\n };\n const result = themes.reduce<PreparedThemesTokens[]>((res, theme) => {\n const themeTokens = transformTokens(tokens, [...BASE_SET, theme], BASE_SET, transformerOptions);\n res.push({ themeTokens: traverse(themeTokens), themeName: theme });\n return res;\n }, []);\n\n return result;\n};\n"],"names":[],"mappings":";;;AAKA,MAAM,QAAQ,GAAG,CAAC,GAAY,KAAoC;AAC9D,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,MAAc,KAAY;IACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAChC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,QAAA,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC5B,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9B,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBAChC,OAAO,MAAM,CAAC,KAAK,CAAC;AACvB,aAAA;YACD,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpB,SAAA;AACL,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;MAEW,iBAAiB,GAAG,CAAC,MAAc,EAAE,MAAgB,KAAY;AAC1E,IAAA,MAAM,kBAAkB,GAAG;AACvB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,GAAG,MAAM;KACZ,CAAC;AACF,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC7E,IAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAChC,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,MAAc,KAAc;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,EAAE;AAEK,MAAM,mBAAmB,GAAG,CAC/B,MAAc,EACd,MAAgB,EAChB,aAAA,GAA0B,EAAE,KACJ;AACxB,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC9E,IAAA,MAAM,kBAAkB,GAAG;AACvB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,GAAG,MAAM;KACZ,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,KAAK,KAAI;AAChE,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAChG,QAAA,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,QAAA,OAAO,GAAG,CAAC;KACd,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,OAAO,MAAM,CAAC;AAClB;;;;"}
|
package/purify.d.ts
ADDED
package/purify.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const purify = (tokensData) => {
|
|
2
|
+
const removeEmptyValues = (obj) => {
|
|
3
|
+
if (Array.isArray(obj)) {
|
|
4
|
+
const filteredObj = obj.filter((item) => item);
|
|
5
|
+
filteredObj.map((item) => {
|
|
6
|
+
if (typeof item === 'object') {
|
|
7
|
+
return removeEmptyValues(item);
|
|
8
|
+
}
|
|
9
|
+
else if (Array.isArray(item)) {
|
|
10
|
+
return removeEmptyValues(item);
|
|
11
|
+
}
|
|
12
|
+
return item;
|
|
13
|
+
});
|
|
14
|
+
return filteredObj;
|
|
15
|
+
}
|
|
16
|
+
const filteredObj = Object.keys(obj).reduce((acc, key) => (obj[key] ? { ...acc, [key]: obj[key] } : acc), {});
|
|
17
|
+
Object.keys(filteredObj).forEach((key) => {
|
|
18
|
+
const item = filteredObj[key];
|
|
19
|
+
if (typeof item === 'object') {
|
|
20
|
+
filteredObj[key] = removeEmptyValues(item);
|
|
21
|
+
}
|
|
22
|
+
else if (Array.isArray(item)) {
|
|
23
|
+
filteredObj[key] = removeEmptyValues(item);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return filteredObj;
|
|
27
|
+
};
|
|
28
|
+
return removeEmptyValues(tokensData);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { purify };
|
|
32
|
+
//# sourceMappingURL=purify.js.map
|
package/purify.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purify.js","sources":["../src/purify.ts"],"sourcesContent":["import { Tokens } from '@hh.ru/magritte-design-tokens-utils/types';\n\nexport const purify = (tokensData: Tokens): Tokens => {\n const removeEmptyValues = (obj: Tokens | Array<unknown>): Tokens | Array<unknown> => {\n if (Array.isArray(obj)) {\n const filteredObj: unknown[] = obj.filter((item) => item);\n filteredObj.map((item) => {\n if (typeof item === 'object') {\n return removeEmptyValues(item as Record<string, unknown>);\n } else if (Array.isArray(item)) {\n return removeEmptyValues(item);\n }\n return item;\n });\n return filteredObj;\n }\n const filteredObj = Object.keys(obj).reduce<Tokens>(\n (acc, key) => (obj[key] ? { ...acc, [key]: obj[key] } : acc),\n {}\n );\n Object.keys(filteredObj).forEach((key) => {\n const item = filteredObj[key];\n if (typeof item === 'object') {\n filteredObj[key] = removeEmptyValues(item as Record<string, unknown>);\n } else if (Array.isArray(item)) {\n filteredObj[key] = removeEmptyValues(item);\n }\n });\n return filteredObj;\n };\n\n return removeEmptyValues(tokensData) as Tokens;\n};\n"],"names":[],"mappings":"AAEa,MAAA,MAAM,GAAG,CAAC,UAAkB,KAAY;AACjD,IAAA,MAAM,iBAAiB,GAAG,CAAC,GAA4B,KAA6B;AAChF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB,YAAA,MAAM,WAAW,GAAc,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,YAAA,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACrB,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,oBAAA,OAAO,iBAAiB,CAAC,IAA+B,CAAC,CAAC;AAC7D,iBAAA;AAAM,qBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5B,oBAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAClC,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAC5D,EAAE,CACL,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrC,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,IAA+B,CAAC,CAAC;AACzE,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,WAAW,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC;AAEF,IAAA,OAAO,iBAAiB,CAAC,UAAU,CAAW,CAAC;AACnD;;;;"}
|
package/tokenize.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';
|
|
2
|
+
export declare const TYPES: {
|
|
3
|
+
BORDER_RADIUS: string;
|
|
4
|
+
BORDER_WIDTH: string;
|
|
5
|
+
COLOR: string;
|
|
6
|
+
FONT_FAMILY: string;
|
|
7
|
+
FONT_SIZE: string;
|
|
8
|
+
FONT_WEIGHT: string;
|
|
9
|
+
LETTER_SPACING: string;
|
|
10
|
+
LINE_HEIGHT: string;
|
|
11
|
+
PARAGRAPH_SPACING: string;
|
|
12
|
+
SIZING: string;
|
|
13
|
+
SPACING: string;
|
|
14
|
+
TEXT_CASE: string;
|
|
15
|
+
TEXT_DECORATION: string;
|
|
16
|
+
X: string;
|
|
17
|
+
Y: string;
|
|
18
|
+
BLUR: string;
|
|
19
|
+
SPREAD: string;
|
|
20
|
+
};
|
|
21
|
+
type TokenCasualValue = string | number;
|
|
22
|
+
type TypographyTransformationsResult = Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
value: TokenCasualValue;
|
|
25
|
+
}>;
|
|
26
|
+
type TypographyTransformations = Record<string, (value: TokenCasualValue) => TypographyTransformationsResult>;
|
|
27
|
+
export declare const typographyTransformations: TypographyTransformations;
|
|
28
|
+
export declare const getVariableUnit: (token: TransformedToken) => string;
|
|
29
|
+
export declare const cssFormatter: (dictionary: Dictionary, versionPostfix: string) => string;
|
|
30
|
+
export declare const kebabWithUnderscoreTransformer: Named<Transform>;
|
|
31
|
+
export {};
|
package/tokenize.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { paramCase } from 'change-case';
|
|
2
|
+
|
|
3
|
+
const TYPES = {
|
|
4
|
+
BORDER_RADIUS: 'borderRadius',
|
|
5
|
+
BORDER_WIDTH: 'borderWidth',
|
|
6
|
+
COLOR: 'color',
|
|
7
|
+
FONT_FAMILY: 'fontFamily',
|
|
8
|
+
FONT_SIZE: 'fontSizes',
|
|
9
|
+
FONT_WEIGHT: 'fontWeights',
|
|
10
|
+
LETTER_SPACING: 'letterSpacing',
|
|
11
|
+
LINE_HEIGHT: 'lineHeights',
|
|
12
|
+
PARAGRAPH_SPACING: 'paragraphSpacing',
|
|
13
|
+
SIZING: 'sizing',
|
|
14
|
+
SPACING: 'spacing',
|
|
15
|
+
TEXT_CASE: 'textCase',
|
|
16
|
+
TEXT_DECORATION: 'textDecoration',
|
|
17
|
+
// shadows
|
|
18
|
+
X: 'x',
|
|
19
|
+
Y: 'y',
|
|
20
|
+
BLUR: 'blur',
|
|
21
|
+
SPREAD: 'spread',
|
|
22
|
+
};
|
|
23
|
+
const typographyTransformations = {
|
|
24
|
+
fontFamily: (value) => [{ name: 'font-family', value: `"${value}"` }],
|
|
25
|
+
fontWeight: (value) => [
|
|
26
|
+
{
|
|
27
|
+
name: 'font-weight',
|
|
28
|
+
value: { Bold: 700, 'Semi Bold': 600, Regular: 400, Italic: 200 }[value],
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
fontSize: (value) => [{ name: 'font-size', value: `${value}px` }],
|
|
32
|
+
lineHeight: (value) => [{ name: 'line-height', value: `${value}px` }],
|
|
33
|
+
letterSpacing: (value) => [{ name: 'letter-spacing', value: `${parseFloat(value) / 100}em` }],
|
|
34
|
+
textCase: (value) => [{ name: 'text-transform', value: value.toLowerCase() }],
|
|
35
|
+
textDecoration: (value) => [{ name: 'text-decoration', value: value.toLowerCase() }],
|
|
36
|
+
paragraphIndent: (value) => [{ name: 'text-indent', value }],
|
|
37
|
+
};
|
|
38
|
+
const getVariableUnit = (token) => {
|
|
39
|
+
const { type } = token;
|
|
40
|
+
switch (type) {
|
|
41
|
+
case TYPES.BORDER_RADIUS:
|
|
42
|
+
case TYPES.BORDER_WIDTH:
|
|
43
|
+
case TYPES.PARAGRAPH_SPACING:
|
|
44
|
+
case TYPES.SIZING:
|
|
45
|
+
case TYPES.SPACING:
|
|
46
|
+
case TYPES.X:
|
|
47
|
+
case TYPES.Y:
|
|
48
|
+
case TYPES.BLUR:
|
|
49
|
+
case TYPES.SPREAD:
|
|
50
|
+
case TYPES.FONT_SIZE:
|
|
51
|
+
return 'px';
|
|
52
|
+
default:
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const expandTypographyCss = (token, versionPostfix) => {
|
|
57
|
+
const tokenValue = token.value;
|
|
58
|
+
return Object.keys(tokenValue)
|
|
59
|
+
.reduce((result, key) => {
|
|
60
|
+
if (!typographyTransformations[key]) {
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
const transformed = typographyTransformations[key](tokenValue[key]);
|
|
64
|
+
result.push(...transformed);
|
|
65
|
+
return result;
|
|
66
|
+
}, [])
|
|
67
|
+
.map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);
|
|
68
|
+
};
|
|
69
|
+
const cssFormatter = (dictionary, versionPostfix) => {
|
|
70
|
+
const props = dictionary.allProperties
|
|
71
|
+
.reduce((result, token) => {
|
|
72
|
+
const { name, value, type, rawValue } = token;
|
|
73
|
+
if (type === 'typography') {
|
|
74
|
+
result.push(...expandTypographyCss(token, versionPostfix));
|
|
75
|
+
}
|
|
76
|
+
else if (type === 'animation') {
|
|
77
|
+
const { x1, y1, x2, y2, duration } = rawValue;
|
|
78
|
+
result.push(` --${name}-timing-function${versionPostfix}: cubic-bezier(${x1}, ${y1}, ${x2}, ${y2});`);
|
|
79
|
+
result.push(` --${name}-duration${versionPostfix}: ${duration}ms;`);
|
|
80
|
+
}
|
|
81
|
+
else if (type === 'border') {
|
|
82
|
+
const { width, style } = rawValue;
|
|
83
|
+
result.push(` --${name}${versionPostfix}: ${width}px ${style};`);
|
|
84
|
+
}
|
|
85
|
+
else if (type === 'letterSpacing') {
|
|
86
|
+
result.push(` --${name}${versionPostfix}: ${parseFloat(value) / 100}em;`);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
result.push(` --${name}${versionPostfix}: ${value}${getVariableUnit(token)};`);
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}, [])
|
|
93
|
+
.join('\n');
|
|
94
|
+
return props;
|
|
95
|
+
};
|
|
96
|
+
const kebabWithUnderscoreTransformer = {
|
|
97
|
+
type: 'name',
|
|
98
|
+
name: 'name/cti/kebabWithUnderscore',
|
|
99
|
+
transformer: (token, options = {}) => paramCase([options.prefix].concat(token.path).join(' '), {
|
|
100
|
+
stripRegexp: /[^A-Z0-9_]+/gi,
|
|
101
|
+
}),
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export { TYPES, cssFormatter, getVariableUnit, kebabWithUnderscoreTransformer, typographyTransformations };
|
|
105
|
+
//# sourceMappingURL=tokenize.js.map
|
package/tokenize.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.js","sources":["../src/tokenize.ts"],"sourcesContent":["import { paramCase } from 'change-case';\nimport { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';\n\nexport const TYPES = {\n BORDER_RADIUS: 'borderRadius',\n BORDER_WIDTH: 'borderWidth',\n COLOR: 'color',\n FONT_FAMILY: 'fontFamily',\n FONT_SIZE: 'fontSizes',\n FONT_WEIGHT: 'fontWeights',\n LETTER_SPACING: 'letterSpacing',\n LINE_HEIGHT: 'lineHeights',\n PARAGRAPH_SPACING: 'paragraphSpacing',\n SIZING: 'sizing',\n SPACING: 'spacing',\n TEXT_CASE: 'textCase',\n\n TEXT_DECORATION: 'textDecoration',\n // shadows\n X: 'x',\n Y: 'y',\n BLUR: 'blur',\n SPREAD: 'spread',\n};\n\ntype TypographyTokenValue = Record<string, string | number>;\ntype TokenCasualValue = string | number;\ntype TokenValue = TokenCasualValue | TypographyTokenValue;\n\ntype TypographyTransformationsResult = Array<{ name: string; value: TokenCasualValue }>;\ntype TypographyTransformations = Record<string, (value: TokenCasualValue) => TypographyTransformationsResult>;\n\ntype RealTransformedToken = Omit<TransformedToken, 'value'> & {\n value: TokenValue;\n rawValue?: TokenValue;\n};\n\nexport const typographyTransformations: TypographyTransformations = {\n fontFamily: (value) => [{ name: 'font-family', value: `\"${value}\"` }],\n fontWeight: (value) => [\n {\n name: 'font-weight',\n value: { Bold: 700, 'Semi Bold': 600, Regular: 400, Italic: 200 }[value] as number,\n },\n ],\n fontSize: (value) => [{ name: 'font-size', value: `${value}px` }],\n lineHeight: (value) => [{ name: 'line-height', value: `${value}px` }],\n letterSpacing: (value) => [{ name: 'letter-spacing', value: `${parseFloat(value as string) / 100}em` }],\n textCase: (value) => [{ name: 'text-transform', value: (value as string).toLowerCase() }],\n textDecoration: (value) => [{ name: 'text-decoration', value: (value as string).toLowerCase() }],\n paragraphIndent: (value) => [{ name: 'text-indent', value }],\n};\n\nexport const getVariableUnit = (token: TransformedToken): string => {\n const { type } = token;\n\n switch (type) {\n case TYPES.BORDER_RADIUS:\n case TYPES.BORDER_WIDTH:\n case TYPES.PARAGRAPH_SPACING:\n case TYPES.SIZING:\n case TYPES.SPACING:\n case TYPES.X:\n case TYPES.Y:\n case TYPES.BLUR:\n case TYPES.SPREAD:\n case TYPES.FONT_SIZE:\n return 'px';\n default:\n return '';\n }\n};\n\nconst expandTypographyCss = (token: RealTransformedToken, versionPostfix: string) => {\n const tokenValue = token.value as TypographyTokenValue;\n return Object.keys(tokenValue)\n .reduce<TypographyTransformationsResult>((result, key) => {\n if (!typographyTransformations[key]) {\n return result;\n }\n const transformed = typographyTransformations[key](tokenValue[key]);\n result.push(...transformed);\n return result;\n }, [])\n .map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);\n};\n\nexport const cssFormatter = (dictionary: Dictionary, versionPostfix: string): string => {\n const props = dictionary.allProperties\n .reduce<string[]>((result, token) => {\n const { name, value, type, rawValue } = token as RealTransformedToken;\n if (type === 'typography') {\n result.push(...expandTypographyCss(token, versionPostfix));\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Record<string, string | number>;\n result.push(` --${name}-timing-function${versionPostfix}: cubic-bezier(${x1}, ${y1}, ${x2}, ${y2});`);\n result.push(` --${name}-duration${versionPostfix}: ${duration}ms;`);\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(` --${name}${versionPostfix}: ${width}px ${style};`);\n } else if (type === 'letterSpacing') {\n result.push(` --${name}${versionPostfix}: ${parseFloat(value as string) / 100}em;`);\n } else {\n result.push(` --${name}${versionPostfix}: ${value}${getVariableUnit(token)};`);\n }\n return result;\n }, [])\n .join('\\n');\n\n return props;\n};\n\nexport const kebabWithUnderscoreTransformer: Named<Transform> = {\n type: 'name',\n name: 'name/cti/kebabWithUnderscore',\n transformer: (token, options = {}) =>\n paramCase([options.prefix].concat(token.path).join(' '), {\n stripRegexp: /[^A-Z0-9_]+/gi,\n }),\n};\n"],"names":[],"mappings":"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"}
|
package/types.d.ts
ADDED
package/types.js
ADDED
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|