@lapidist/dtif-parser 0.2.0 → 0.3.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.
Files changed (71) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +62 -0
  3. package/dist/adapters/node/index.d.ts +3 -0
  4. package/dist/adapters/node/index.d.ts.map +1 -0
  5. package/dist/adapters/node/index.js +2 -0
  6. package/dist/adapters/node/index.js.map +1 -0
  7. package/dist/adapters/node/token-parser.d.ts +17 -0
  8. package/dist/adapters/node/token-parser.d.ts.map +1 -0
  9. package/dist/adapters/node/token-parser.js +83 -0
  10. package/dist/adapters/node/token-parser.js.map +1 -0
  11. package/dist/index.d.ts +11 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +6 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/io/decoder/synthetic-source-map.d.ts +3 -0
  16. package/dist/io/decoder/synthetic-source-map.d.ts.map +1 -0
  17. package/dist/io/decoder/synthetic-source-map.js +31 -0
  18. package/dist/io/decoder/synthetic-source-map.js.map +1 -0
  19. package/dist/io/decoder.d.ts.map +1 -1
  20. package/dist/io/decoder.js +31 -0
  21. package/dist/io/decoder.js.map +1 -1
  22. package/dist/io/document-loader.d.ts.map +1 -1
  23. package/dist/io/document-loader.js +62 -7
  24. package/dist/io/document-loader.js.map +1 -1
  25. package/dist/tokens/cache.d.ts +38 -0
  26. package/dist/tokens/cache.d.ts.map +1 -0
  27. package/dist/tokens/cache.js +107 -0
  28. package/dist/tokens/cache.js.map +1 -0
  29. package/dist/tokens/diagnostics.d.ts +5 -0
  30. package/dist/tokens/diagnostics.d.ts.map +1 -0
  31. package/dist/tokens/diagnostics.js +122 -0
  32. package/dist/tokens/diagnostics.js.map +1 -0
  33. package/dist/tokens/flatten.d.ts +4 -0
  34. package/dist/tokens/flatten.d.ts.map +1 -0
  35. package/dist/tokens/flatten.js +26 -0
  36. package/dist/tokens/flatten.js.map +1 -0
  37. package/dist/tokens/internal/graph.d.ts +8 -0
  38. package/dist/tokens/internal/graph.d.ts.map +1 -0
  39. package/dist/tokens/internal/graph.js +29 -0
  40. package/dist/tokens/internal/graph.js.map +1 -0
  41. package/dist/tokens/internal/utils.d.ts +4 -0
  42. package/dist/tokens/internal/utils.d.ts.map +1 -0
  43. package/dist/tokens/internal/utils.js +51 -0
  44. package/dist/tokens/internal/utils.js.map +1 -0
  45. package/dist/tokens/parse-tokens.d.ts +31 -0
  46. package/dist/tokens/parse-tokens.d.ts.map +1 -0
  47. package/dist/tokens/parse-tokens.js +425 -0
  48. package/dist/tokens/parse-tokens.js.map +1 -0
  49. package/dist/tokens/snapshots.d.ts +9 -0
  50. package/dist/tokens/snapshots.d.ts.map +1 -0
  51. package/dist/tokens/snapshots.js +162 -0
  52. package/dist/tokens/snapshots.js.map +1 -0
  53. package/dist/tokens/types.d.ts +77 -0
  54. package/dist/tokens/types.d.ts.map +1 -0
  55. package/dist/tokens/types.js +2 -0
  56. package/dist/tokens/types.js.map +1 -0
  57. package/dist/types.d.ts +9 -1
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/utils/clone-json.d.ts +2 -0
  60. package/dist/utils/clone-json.d.ts.map +1 -0
  61. package/dist/utils/clone-json.js +15 -0
  62. package/dist/utils/clone-json.js.map +1 -0
  63. package/dist/utils/hash-json.d.ts +5 -0
  64. package/dist/utils/hash-json.d.ts.map +1 -0
  65. package/dist/utils/hash-json.js +74 -0
  66. package/dist/utils/hash-json.js.map +1 -0
  67. package/dist/utils/stable-json.d.ts +2 -0
  68. package/dist/utils/stable-json.d.ts.map +1 -0
  69. package/dist/utils/stable-json.js +18 -0
  70. package/dist/utils/stable-json.js.map +1 -0
  71. package/package.json +11 -3
@@ -0,0 +1,77 @@
1
+ import type { JsonPointer, SourceSpan } from '../types.js';
2
+ export type JsonPrimitive = string | number | boolean | null;
3
+ export type JsonValue = JsonPrimitive | JsonValue[] | {
4
+ readonly [key: string]: JsonValue;
5
+ };
6
+ export type TokenId = string;
7
+ export type TokenType = string;
8
+ export interface Position {
9
+ readonly line: number;
10
+ readonly character: number;
11
+ }
12
+ export interface Range {
13
+ readonly start: Position;
14
+ readonly end: Position;
15
+ }
16
+ export interface TokenPointer {
17
+ readonly uri: string;
18
+ readonly pointer: JsonPointer;
19
+ }
20
+ export interface DtifFlattenedToken {
21
+ readonly id: TokenId;
22
+ readonly pointer: JsonPointer;
23
+ readonly name: string;
24
+ readonly path: readonly string[];
25
+ readonly type?: TokenType;
26
+ readonly value?: JsonValue;
27
+ readonly raw?: JsonValue;
28
+ }
29
+ export interface TokenMetadataSnapshot {
30
+ readonly description?: string;
31
+ readonly extensions: Record<string, unknown>;
32
+ readonly deprecated?: {
33
+ readonly since?: string;
34
+ readonly reason?: string;
35
+ readonly supersededBy?: TokenPointer;
36
+ };
37
+ readonly source: {
38
+ readonly uri: string;
39
+ readonly line: number;
40
+ readonly column: number;
41
+ };
42
+ }
43
+ export interface ResolvedTokenView {
44
+ readonly id: TokenId;
45
+ readonly type?: TokenType;
46
+ readonly value?: JsonValue;
47
+ readonly raw?: JsonValue;
48
+ readonly references: readonly TokenPointer[];
49
+ readonly resolutionPath: readonly TokenPointer[];
50
+ readonly appliedAliases: readonly TokenPointer[];
51
+ }
52
+ export interface TokenDiagnostic {
53
+ readonly severity: 'error' | 'warning' | 'info';
54
+ readonly code: string;
55
+ readonly message: string;
56
+ readonly source: 'dtif-parser';
57
+ readonly target: {
58
+ readonly uri: string;
59
+ readonly range: Range;
60
+ };
61
+ readonly related?: readonly {
62
+ readonly message: string;
63
+ readonly target: {
64
+ readonly uri: string;
65
+ readonly range: Range;
66
+ };
67
+ }[];
68
+ }
69
+ export interface TokenDiagnosticContext {
70
+ readonly documentUri?: string;
71
+ readonly pointerSpans?: ReadonlyMap<JsonPointer, SourceSpan>;
72
+ }
73
+ export interface FormatTokenDiagnosticOptions {
74
+ readonly color?: boolean;
75
+ readonly cwd?: string;
76
+ }
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tokens/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tokens/types.ts"],"names":[],"mappings":""}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { DesignTokenInterchangeFormat } from '@lapidist/dtif-schema';
1
2
  import type { DiagnosticBag } from './diagnostics/bag.js';
2
3
  import type { DiagnosticCode } from './diagnostics/codes.js';
3
4
  import type { DiagnosticSeverity } from './diagnostics/severity.js';
@@ -6,12 +7,17 @@ import type { DocumentGraph } from './graph/nodes.js';
6
7
  import type { DocumentResolver } from './resolver/index.js';
7
8
  import type { ExtensionEvaluation } from './plugins/index.js';
8
9
  export type JsonPointer = `#${string}`;
9
- export type ParseInput = string | Uint8Array | URL | ParseInputRecord;
10
+ export type ParseInput = string | Uint8Array | URL | ParseInputRecord | ParseDataInputRecord | DesignTokenInterchangeFormat;
10
11
  export interface ParseInputRecord {
11
12
  readonly uri?: string | URL;
12
13
  readonly content: string | Uint8Array;
13
14
  readonly contentType?: ContentType;
14
15
  }
16
+ export interface ParseDataInputRecord {
17
+ readonly uri?: string | URL;
18
+ readonly data: DesignTokenInterchangeFormat;
19
+ readonly contentType?: ContentType;
20
+ }
15
21
  export type ContentType = 'application/json' | 'application/yaml';
16
22
  export interface SourcePosition {
17
23
  readonly offset: number;
@@ -44,6 +50,8 @@ export interface DocumentHandle {
44
50
  readonly uri: URL;
45
51
  readonly contentType: ContentType;
46
52
  readonly bytes: Uint8Array;
53
+ readonly text?: string;
54
+ readonly data?: unknown;
47
55
  }
48
56
  export interface RawDocument extends DocumentHandle {
49
57
  readonly text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function cloneJsonValue<T>(value: T): T;
2
+ //# sourceMappingURL=clone-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone-json.d.ts","sourceRoot":"","sources":["../../src/utils/clone-json.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAiB7C"}
@@ -0,0 +1,15 @@
1
+ export function cloneJsonValue(value) {
2
+ if (Array.isArray(value)) {
3
+ return value.map((item) => cloneJsonValue(item));
4
+ }
5
+ if (value && typeof value === 'object') {
6
+ const prototype = Object.getPrototypeOf(value);
7
+ const clone = Object.create(prototype ?? null);
8
+ for (const [key, entry] of Object.entries(value)) {
9
+ clone[key] = cloneJsonValue(entry);
10
+ }
11
+ return clone;
12
+ }
13
+ return value;
14
+ }
15
+ //# sourceMappingURL=clone-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone-json.js","sourceRoot":"","sources":["../../src/utils/clone-json.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAI,KAAQ;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAiB,CAAC;IACnE,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAe,CAAC,CAAC;QACzD,MAAM,KAAK,GAA4B,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAExE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC5E,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,KAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface HashJsonValueOptions {
2
+ readonly algorithm?: string;
3
+ }
4
+ export declare function hashJsonValue(value: unknown, options?: HashJsonValueOptions): string;
5
+ //# sourceMappingURL=hash-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-json.d.ts","sourceRoot":"","sources":["../../src/utils/hash-json.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAKxF"}
@@ -0,0 +1,74 @@
1
+ import { createHash } from 'node:crypto';
2
+ export function hashJsonValue(value, options = {}) {
3
+ const { algorithm = 'sha256' } = options;
4
+ const hash = createHash(algorithm);
5
+ updateHashWithValue(hash, value);
6
+ return hash.digest('hex');
7
+ }
8
+ function updateHashWithValue(hash, value) {
9
+ if (value === null) {
10
+ hash.update('null');
11
+ return;
12
+ }
13
+ switch (typeof value) {
14
+ case 'undefined': {
15
+ hash.update('undefined');
16
+ return;
17
+ }
18
+ case 'boolean': {
19
+ hash.update('bool:');
20
+ hash.update(value ? '1' : '0');
21
+ return;
22
+ }
23
+ case 'number': {
24
+ hash.update('number:');
25
+ hash.update(Number.isFinite(value) ? value.toString() : 'NaN');
26
+ return;
27
+ }
28
+ case 'bigint': {
29
+ hash.update('bigint:');
30
+ hash.update(value.toString());
31
+ return;
32
+ }
33
+ case 'string': {
34
+ hash.update('string:');
35
+ hash.update(value);
36
+ return;
37
+ }
38
+ case 'symbol': {
39
+ hash.update('symbol:');
40
+ hash.update(String(value.description ?? ''));
41
+ return;
42
+ }
43
+ case 'function': {
44
+ hash.update('function');
45
+ return;
46
+ }
47
+ case 'object': {
48
+ if (Array.isArray(value)) {
49
+ hash.update('array[');
50
+ hash.update(value.length.toString());
51
+ hash.update(']:');
52
+ for (const item of value) {
53
+ updateHashWithValue(hash, item);
54
+ hash.update(';');
55
+ }
56
+ return;
57
+ }
58
+ hash.update('object{');
59
+ const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
60
+ for (const [key, entryValue] of entries) {
61
+ hash.update(key);
62
+ hash.update(':');
63
+ updateHashWithValue(hash, entryValue);
64
+ hash.update(';');
65
+ }
66
+ hash.update('}');
67
+ return;
68
+ }
69
+ default: {
70
+ hash.update('unknown');
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=hash-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-json.js","sourceRoot":"","sources":["../../src/utils/hash-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function stableStringify(value: unknown): string;
2
+ //# sourceMappingURL=stable-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-json.d.ts","sourceRoot":"","sources":["../../src/utils/stable-json.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,18 @@
1
+ export function stableStringify(value) {
2
+ return JSON.stringify(normalizeForStringify(value));
3
+ }
4
+ function normalizeForStringify(value) {
5
+ if (Array.isArray(value)) {
6
+ return value.map(normalizeForStringify);
7
+ }
8
+ if (value && typeof value === 'object') {
9
+ const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
10
+ const normalized = {};
11
+ for (const [key, entry] of entries) {
12
+ normalized[key] = normalizeForStringify(entry);
13
+ }
14
+ return normalized;
15
+ }
16
+ return value;
17
+ }
18
+ //# sourceMappingURL=stable-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-json.js","sourceRoot":"","sources":["../../src/utils/stable-json.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACjF,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;QACF,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lapidist/dtif-parser",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Canonical parser and runtime for Design Token Interchange Format (DTIF) documents.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -15,6 +15,14 @@
15
15
  "types": "./dist/index.d.ts",
16
16
  "import": "./dist/index.js"
17
17
  },
18
+ "./parse-tokens": {
19
+ "types": "./dist/tokens/parse-tokens.d.ts",
20
+ "import": "./dist/tokens/parse-tokens.js"
21
+ },
22
+ "./adapters/node": {
23
+ "types": "./dist/adapters/node/index.d.ts",
24
+ "import": "./dist/adapters/node/index.js"
25
+ },
18
26
  "./package.json": "./package.json"
19
27
  },
20
28
  "files": [
@@ -29,8 +37,8 @@
29
37
  "prepack": "npm run build"
30
38
  },
31
39
  "dependencies": {
32
- "@lapidist/dtif-schema": "^0.1.7",
33
- "@lapidist/dtif-validator": "^0.1.7",
40
+ "@lapidist/dtif-schema": "^0.2.1",
41
+ "@lapidist/dtif-validator": "^0.2.1",
34
42
  "yaml": "^2.8.1"
35
43
  },
36
44
  "devDependencies": {