@terrazzo/cli 0.2.4 → 0.2.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @terrazzo/cli@0.2.4 build /home/runner/work/terrazzo/terrazzo/packages/cli
2
+ > @terrazzo/cli@0.2.6 build /home/runner/work/terrazzo/terrazzo/packages/cli
3
3
  > tsc -p tsconfig.build.json
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @terrazzo/cli
2
2
 
3
+ ## 0.2.6
4
+
5
+ ### Patch Changes
6
+
7
+ - [#374](https://github.com/terrazzoapp/terrazzo/pull/374) [`cb64063`](https://github.com/terrazzoapp/terrazzo/commit/cb640631220f1abb72dd9e39806c5e1b61e92baf) Thanks [@drwpow](https://github.com/drwpow)! - Add normalize CLI command, which can upgrade a giant tokens file to the latest DTCG format.
8
+
9
+ - Updated dependencies [[`cb64063`](https://github.com/terrazzoapp/terrazzo/commit/cb640631220f1abb72dd9e39806c5e1b61e92baf)]:
10
+ - @terrazzo/token-tools@0.2.6
11
+ - @terrazzo/parser@0.2.6
12
+
13
+ ## 0.2.5
14
+
15
+ ### Patch Changes
16
+
17
+ - [#372](https://github.com/terrazzoapp/terrazzo/pull/372) [`d19df01`](https://github.com/terrazzoapp/terrazzo/commit/d19df016cd804971a190a8602d575aecdec00d5e) Thanks [@drwpow](https://github.com/drwpow)! - Ignore token-like structures inside $extensions
18
+
19
+ - Updated dependencies [[`d19df01`](https://github.com/terrazzoapp/terrazzo/commit/d19df016cd804971a190a8602d575aecdec00d5e)]:
20
+ - @terrazzo/parser@0.2.5
21
+ - @terrazzo/token-tools@0.2.5
22
+
3
23
  ## 0.2.4
4
24
 
5
25
  ### Patch Changes
package/bin/cli.js CHANGED
@@ -32,6 +32,7 @@ import { buildCmd } from '../dist/build.js';
32
32
  import { checkCmd } from '../dist/check.js';
33
33
  import { helpCmd } from '../dist/help.js';
34
34
  import { initCmd } from '../dist/init.js';
35
+ import { normalizeCmd } from '../dist/normalize.js';
35
36
  import { loadConfig } from '../dist/shared.js';
36
37
  import { versionCmd } from '../dist/version.js';
37
38
 
@@ -89,6 +90,12 @@ export default async function main() {
89
90
  process.exit(0);
90
91
  }
91
92
 
93
+ // normalize
94
+ if (cmd === 'normalize') {
95
+ await normalizeCmd(positionals[1], { logger, output: flags.out });
96
+ process.exit(0);
97
+ }
98
+
92
99
  const { config, configPath } = await loadConfig({ cmd, flags, logger });
93
100
 
94
101
  // ---
@@ -0,0 +1,6 @@
1
+ import { type Logger } from '@terrazzo/parser';
2
+ export interface NormalizeOptions {
3
+ logger: Logger;
4
+ output: URL;
5
+ }
6
+ export declare function normalizeCmd(filename: string, { logger, output }: NormalizeOptions): Promise<void>;
@@ -0,0 +1,55 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { parse as parseJSON, print } from '@humanwhocodes/momoa';
4
+ import { defineConfig, parse, traverse } from '@terrazzo/parser';
5
+ import { cwd, printError } from './shared.js';
6
+ function find$value(member) {
7
+ return member.name.type === 'String' && member.name.value === '$value';
8
+ }
9
+ export async function normalizeCmd(filename, { logger, output }) {
10
+ try {
11
+ if (!filename) {
12
+ logger.error({ message: 'Expected input: `tz normalize input.json -o output.json`' });
13
+ return;
14
+ }
15
+ const sourceLoc = new URL(filename, cwd);
16
+ if (!fs.existsSync(sourceLoc)) {
17
+ logger.error({ message: `Couldn’t find ${path.relative(cwd.href, sourceLoc.href)}. Does it exist?` });
18
+ }
19
+ const sourceData = fs.readFileSync(sourceLoc, 'utf8');
20
+ const document = parseJSON(sourceData);
21
+ const { tokens } = await parse([{ src: sourceData, filename: sourceLoc }], {
22
+ config: defineConfig({}, { cwd }),
23
+ logger,
24
+ });
25
+ traverse(document, {
26
+ enter(node, _parent, nodePath) {
27
+ const token = tokens[nodePath.join('.')];
28
+ if (!token || token.aliasOf || node.type !== 'Member' || node.value.type !== 'Object') {
29
+ return;
30
+ }
31
+ const $valueI = node.value.members.findIndex(find$value);
32
+ const newValueContainer = parseJSON(JSON.stringify({ $value: token.$value })).body;
33
+ const newValueNode = newValueContainer.members.find(find$value);
34
+ switch (token.$type) {
35
+ case 'color':
36
+ case 'dimension':
37
+ case 'duration': {
38
+ if (node.value.members[$valueI].value.type === 'String') {
39
+ node.value.members[$valueI] = newValueNode;
40
+ }
41
+ break;
42
+ }
43
+ }
44
+ },
45
+ });
46
+ const outputLoc = new URL(output, cwd);
47
+ fs.mkdirSync(new URL('.', outputLoc), { recursive: true });
48
+ fs.writeFileSync(outputLoc, print(document, { indent: 2 }));
49
+ }
50
+ catch (err) {
51
+ printError(err.message);
52
+ process.exit(1);
53
+ }
54
+ }
55
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terrazzo/cli",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "CLI for managing design tokens using the Design Tokens Community Group (DTCG) standard and generating code for any platform via plugins.",
5
5
  "type": "module",
6
6
  "author": {
@@ -41,6 +41,7 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@clack/prompts": "^0.8.2",
44
+ "@humanwhocodes/momoa": "^3.3.4",
44
45
  "@types/escodegen": "^0.0.10",
45
46
  "chokidar": "^3.6.0",
46
47
  "detect-package-manager": "^3.0.2",
@@ -50,8 +51,8 @@
50
51
  "meriyah": "^6.0.3",
51
52
  "picocolors": "^1.1.1",
52
53
  "yaml-to-momoa": "^0.0.3",
53
- "@terrazzo/parser": "^0.2.4",
54
- "@terrazzo/token-tools": "^0.2.4"
54
+ "@terrazzo/parser": "^0.2.6",
55
+ "@terrazzo/token-tools": "^0.2.6"
55
56
  },
56
57
  "scripts": {
57
58
  "build": "tsc -p tsconfig.build.json",