@lapidist/dtif-parser 0.2.1 → 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 +6 -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 +9 -1
@@ -0,0 +1,107 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { hashJsonValue } from '../utils/hash-json.js';
3
+ const DEFAULT_MAX_ENTRIES = 100;
4
+ const DEFAULT_CACHE_VARIANT_OPTIONS = Object.freeze({
5
+ flatten: true,
6
+ includeGraphs: true
7
+ });
8
+ export class InMemoryParseCache {
9
+ #maxEntries;
10
+ #ttlMs;
11
+ #store = new Map();
12
+ constructor(options = {}) {
13
+ this.#maxEntries = options.maxEntries ?? DEFAULT_MAX_ENTRIES;
14
+ this.#ttlMs = options.ttlMs;
15
+ }
16
+ get(key) {
17
+ const id = serializeKey(key);
18
+ const stored = this.#store.get(id);
19
+ if (!stored) {
20
+ return undefined;
21
+ }
22
+ if (this.#ttlMs && Date.now() - stored.createdAt > this.#ttlMs) {
23
+ this.#store.delete(id);
24
+ return undefined;
25
+ }
26
+ // refresh LRU ordering
27
+ this.#store.delete(id);
28
+ this.#store.set(id, { entry: stored.entry, createdAt: stored.createdAt });
29
+ return stored.entry;
30
+ }
31
+ set(key, value) {
32
+ const id = serializeKey(key);
33
+ this.#store.delete(id);
34
+ this.#store.set(id, { entry: value, createdAt: Date.now() });
35
+ this.#evict();
36
+ }
37
+ #evict() {
38
+ if (this.#store.size <= this.#maxEntries) {
39
+ return;
40
+ }
41
+ const iterator = this.#store.keys();
42
+ while (this.#store.size > this.#maxEntries) {
43
+ const next = iterator.next();
44
+ if (next.done) {
45
+ break;
46
+ }
47
+ this.#store.delete(next.value);
48
+ }
49
+ }
50
+ }
51
+ export function createParseCache(options) {
52
+ return new InMemoryParseCache(options);
53
+ }
54
+ export function computeDocumentHash(input) {
55
+ if (input instanceof Uint8Array) {
56
+ return createHash('sha256').update(input).digest('hex');
57
+ }
58
+ if (input.data !== undefined) {
59
+ return hashJsonValue(input.data, { algorithm: 'sha256' });
60
+ }
61
+ return createHash('sha256').update(input.bytes).digest('hex');
62
+ }
63
+ export function createCacheKey(uri, options, variantOptions) {
64
+ const resolvedVariantOptions = resolveVariantOptions(variantOptions);
65
+ return {
66
+ uri,
67
+ variant: createOptionsVariant(options, resolvedVariantOptions)
68
+ };
69
+ }
70
+ function createOptionsVariant(options, variantOptions) {
71
+ const payload = {
72
+ maxDepth: options.maxDepth,
73
+ context: normalizeContext(options.overrideContext),
74
+ plugins: normalizePlugins(options.plugins),
75
+ flatten: variantOptions.flatten,
76
+ includeGraphs: variantOptions.includeGraphs
77
+ };
78
+ return createHash('sha1').update(JSON.stringify(payload)).digest('hex');
79
+ }
80
+ function normalizeContext(context) {
81
+ if (!context) {
82
+ return undefined;
83
+ }
84
+ const entries = Array.from(context.entries()).sort(([a], [b]) => a.localeCompare(b));
85
+ const normalized = {};
86
+ for (const [key, value] of entries) {
87
+ normalized[key] = value;
88
+ }
89
+ return normalized;
90
+ }
91
+ function normalizePlugins(plugins) {
92
+ if (!plugins) {
93
+ return undefined;
94
+ }
95
+ const transformCount = plugins.transforms.length;
96
+ return [`transforms:${transformCount}`];
97
+ }
98
+ function resolveVariantOptions(variantOptions) {
99
+ return {
100
+ flatten: variantOptions?.flatten ?? DEFAULT_CACHE_VARIANT_OPTIONS.flatten,
101
+ includeGraphs: variantOptions?.includeGraphs ?? DEFAULT_CACHE_VARIANT_OPTIONS.includeGraphs
102
+ };
103
+ }
104
+ function serializeKey(key) {
105
+ return `${key.uri}::${key.variant}`;
106
+ }
107
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tokens/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Diagnostic } from '../types.js';
2
+ import { type FormatTokenDiagnosticOptions, type TokenDiagnostic, type TokenDiagnosticContext } from './types.js';
3
+ export declare function toTokenDiagnostic(diagnostic: Diagnostic, context?: TokenDiagnosticContext): TokenDiagnostic;
4
+ export declare function formatTokenDiagnostic(diagnostic: TokenDiagnostic, options?: FormatTokenDiagnosticOptions): string;
5
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/tokens/diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA+C,MAAM,aAAa,CAAC;AAE3F,OAAO,EACL,KAAK,4BAA4B,EAEjC,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAIpB,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAgBjB;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,eAAe,EAC3B,OAAO,GAAE,4BAAiC,GACzC,MAAM,CAeR"}
@@ -0,0 +1,122 @@
1
+ import * as path from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { normalizeJsonPointer } from '../utils/json-pointer.js';
4
+ import {} from './types.js';
5
+ const DEFAULT_URI = 'unknown://dtif-token';
6
+ export function toTokenDiagnostic(diagnostic, context = {}) {
7
+ const span = resolveSpan(diagnostic.span, diagnostic.pointer, context);
8
+ const targetUri = span?.uri?.href ?? context.documentUri ?? DEFAULT_URI;
9
+ const targetRange = span ? toRange(span) : createZeroRange();
10
+ return {
11
+ severity: diagnostic.severity,
12
+ code: String(diagnostic.code),
13
+ message: diagnostic.message,
14
+ source: 'dtif-parser',
15
+ target: {
16
+ uri: targetUri,
17
+ range: targetRange
18
+ },
19
+ related: mapRelated(diagnostic.related, context)
20
+ };
21
+ }
22
+ export function formatTokenDiagnostic(diagnostic, options = {}) {
23
+ const colorize = options.color ? selectColorizer(diagnostic.severity) : passthrough;
24
+ const severityLabel = diagnostic.severity.toUpperCase();
25
+ const header = `${colorize(severityLabel)} ${diagnostic.code}: ${diagnostic.message}`;
26
+ const location = formatTarget(diagnostic.target, options.cwd);
27
+ const lines = [header, ` at ${location}`];
28
+ if (diagnostic.related && diagnostic.related.length > 0) {
29
+ for (const related of diagnostic.related) {
30
+ lines.push(` related: ${related.message}`);
31
+ lines.push(` at ${formatTarget(related.target, options.cwd)}`);
32
+ }
33
+ }
34
+ return lines.join('\n');
35
+ }
36
+ function resolveSpan(span, pointer, context) {
37
+ if (span) {
38
+ return span;
39
+ }
40
+ if (!pointer || !context.pointerSpans) {
41
+ return undefined;
42
+ }
43
+ const normalized = normalizeJsonPointer(pointer);
44
+ return context.pointerSpans.get(normalized);
45
+ }
46
+ function toRange(span) {
47
+ return {
48
+ start: toPosition(span.start),
49
+ end: toPosition(span.end)
50
+ };
51
+ }
52
+ function toPosition(position) {
53
+ const line = Number.isFinite(position.line) ? position.line - 1 : 0;
54
+ const column = Number.isFinite(position.column) ? position.column - 1 : 0;
55
+ return {
56
+ line: line >= 0 ? line : 0,
57
+ character: column >= 0 ? column : 0
58
+ };
59
+ }
60
+ function createZeroRange() {
61
+ return {
62
+ start: { line: 0, character: 0 },
63
+ end: { line: 0, character: 0 }
64
+ };
65
+ }
66
+ function mapRelated(related, context) {
67
+ if (!related || related.length === 0) {
68
+ return undefined;
69
+ }
70
+ const entries = [];
71
+ for (const item of related) {
72
+ const span = resolveSpan(item.span, item.pointer, context);
73
+ const uri = span?.uri?.href ?? context.documentUri ?? DEFAULT_URI;
74
+ entries.push({
75
+ message: item.message,
76
+ target: {
77
+ uri,
78
+ range: span ? toRange(span) : createZeroRange()
79
+ }
80
+ });
81
+ }
82
+ return entries;
83
+ }
84
+ function selectColorizer(severity) {
85
+ switch (severity) {
86
+ case 'error':
87
+ return (value) => `\u001b[31m${value}\u001b[0m`;
88
+ case 'warning':
89
+ return (value) => `\u001b[33m${value}\u001b[0m`;
90
+ case 'info':
91
+ default:
92
+ return (value) => `\u001b[36m${value}\u001b[0m`;
93
+ }
94
+ }
95
+ function passthrough(value) {
96
+ return value;
97
+ }
98
+ function formatTarget(target, cwd) {
99
+ const { uri, range } = target;
100
+ const location = formatUri(uri, cwd);
101
+ const line = range.start.line + 1;
102
+ const character = range.start.character + 1;
103
+ return `${location}:${line}:${character}`;
104
+ }
105
+ function formatUri(uri, cwd) {
106
+ try {
107
+ const parsed = new URL(uri);
108
+ if (parsed.protocol === 'file:') {
109
+ const filePath = fileURLToPath(parsed);
110
+ if (cwd) {
111
+ const relative = path.relative(cwd, filePath);
112
+ return relative.startsWith('..') ? filePath : relative || '.';
113
+ }
114
+ return filePath;
115
+ }
116
+ return parsed.href;
117
+ }
118
+ catch {
119
+ return uri;
120
+ }
121
+ }
122
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tokens/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DocumentGraph } from '../graph/nodes.js';
2
+ import type { DtifFlattenedToken, ResolvedTokenView, TokenId } from './types.js';
3
+ export declare function flattenTokens(graph: DocumentGraph, resolutionIndex: ReadonlyMap<TokenId, ResolvedTokenView>): DtifFlattenedToken[];
4
+ //# sourceMappingURL=flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/tokens/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGjF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EACpB,eAAe,EAAE,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,GACvD,kBAAkB,EAAE,CAyBtB"}
@@ -0,0 +1,26 @@
1
+ import { getBaseType, getBaseValue, getTokenId, iterateTokenNodes } from './internal/graph.js';
2
+ import { toPlainJson } from './internal/utils.js';
3
+ import { normalizeJsonPointer } from '../utils/json-pointer.js';
4
+ export function flattenTokens(graph, resolutionIndex) {
5
+ const nodes = Array.from(iterateTokenNodes(graph));
6
+ nodes.sort((left, right) => left.pointer.localeCompare(right.pointer));
7
+ const flattened = [];
8
+ for (const node of nodes) {
9
+ const id = getTokenId(node.pointer);
10
+ const pointer = normalizeJsonPointer(node.pointer);
11
+ const resolution = resolutionIndex.get(id);
12
+ const baseType = getBaseType(node);
13
+ const baseValue = toPlainJson(getBaseValue(node));
14
+ flattened.push({
15
+ id,
16
+ pointer,
17
+ name: node.name,
18
+ path: node.path,
19
+ type: resolution?.type ?? baseType,
20
+ value: resolution?.value ?? baseValue,
21
+ raw: baseValue
22
+ });
23
+ }
24
+ return flattened;
25
+ }
26
+ //# sourceMappingURL=flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/tokens/flatten.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,UAAU,aAAa,CAC3B,KAAoB,EACpB,eAAwD;IAExD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAyB,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,SAAS,CAAC,IAAI,CAAC;YACb,EAAE;YACF,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,QAAQ;YAClC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,SAAS;YACrC,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DocumentGraph, GraphAliasNode, GraphNode, GraphTokenNode } from '../../graph/nodes.js';
2
+ import type { TokenId } from '../types.js';
3
+ export declare function isTokenLikeNode(node: GraphNode): node is GraphTokenNode | GraphAliasNode;
4
+ export declare function iterateTokenNodes(graph: DocumentGraph): IterableIterator<GraphTokenNode | GraphAliasNode>;
5
+ export declare function getTokenId(pointer: string): TokenId;
6
+ export declare function getBaseType(node: GraphTokenNode | GraphAliasNode): string | undefined;
7
+ export declare function getBaseValue(node: GraphTokenNode | GraphAliasNode): unknown;
8
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/tokens/internal/graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,cAAc,GAAG,cAAc,CAExF;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,GACnB,gBAAgB,CAAC,cAAc,GAAG,cAAc,CAAC,CAQnD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,CAKrF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,OAAO,CAK3E"}
@@ -0,0 +1,29 @@
1
+ import { normalizeJsonPointer } from '../../utils/json-pointer.js';
2
+ export function isTokenLikeNode(node) {
3
+ return node.kind === 'token' || node.kind === 'alias';
4
+ }
5
+ export function iterateTokenNodes(graph) {
6
+ return (function* () {
7
+ for (const node of graph.nodes.values()) {
8
+ if (isTokenLikeNode(node)) {
9
+ yield node;
10
+ }
11
+ }
12
+ })();
13
+ }
14
+ export function getTokenId(pointer) {
15
+ return normalizeJsonPointer(pointer);
16
+ }
17
+ export function getBaseType(node) {
18
+ if (node.kind === 'alias') {
19
+ return node.type.value;
20
+ }
21
+ return node.type?.value;
22
+ }
23
+ export function getBaseValue(node) {
24
+ if (node.kind === 'alias') {
25
+ return undefined;
26
+ }
27
+ return node.value?.value;
28
+ }
29
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/tokens/internal/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASnE,MAAM,UAAU,eAAe,CAAC,IAAe;IAC7C,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAoB;IAEpB,OAAO,CAAC,QAAQ,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,oBAAoB,CAAC,OAAO,CAAY,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAqC;IAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAqC;IAChE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { JsonValue, TokenPointer } from '../types.js';
2
+ export declare function toPlainJson(value: unknown): JsonValue | undefined;
3
+ export declare function dedupePointers(pointers: readonly TokenPointer[]): TokenPointer[];
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tokens/internal/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAyCjE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE,CAchF"}
@@ -0,0 +1,51 @@
1
+ export function toPlainJson(value) {
2
+ if (value === undefined) {
3
+ return undefined;
4
+ }
5
+ if (value === null ||
6
+ typeof value === 'string' ||
7
+ typeof value === 'boolean' ||
8
+ (typeof value === 'number' && Number.isFinite(value))) {
9
+ return value;
10
+ }
11
+ if (Array.isArray(value)) {
12
+ const result = [];
13
+ for (const entry of value) {
14
+ const normalized = toPlainJson(entry);
15
+ if (normalized !== undefined) {
16
+ result.push(normalized);
17
+ }
18
+ }
19
+ return result;
20
+ }
21
+ if (typeof value === 'object') {
22
+ const result = {};
23
+ for (const [key, entry] of Object.entries(value)) {
24
+ const normalized = toPlainJson(entry);
25
+ if (normalized !== undefined) {
26
+ result[key] = normalized;
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+ try {
32
+ return JSON.parse(JSON.stringify(value));
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
38
+ export function dedupePointers(pointers) {
39
+ if (pointers.length === 0) {
40
+ return [];
41
+ }
42
+ const unique = new Map();
43
+ for (const pointer of pointers) {
44
+ const key = `${pointer.uri}::${pointer.pointer}`;
45
+ if (!unique.has(key)) {
46
+ unique.set(key, pointer);
47
+ }
48
+ }
49
+ return Array.from(unique.values());
50
+ }
51
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tokens/internal/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EACrD,CAAC;QACD,OAAO,KAAkB,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAA8B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC5E,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAc,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAiC;IAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { DesignTokenInterchangeFormat } from '@lapidist/dtif-schema';
2
+ import type { ParseSessionOptions } from '../session.js';
3
+ import type { ParseInput, RawDocument } from '../types.js';
4
+ import type { DocumentGraph } from '../graph/nodes.js';
5
+ import type { DocumentResolver } from '../resolver/index.js';
6
+ import { type ParseCache } from './cache.js';
7
+ import type { DtifFlattenedToken, ResolvedTokenView, TokenDiagnostic, TokenId, TokenMetadataSnapshot } from './types.js';
8
+ export interface ParseTokensOptions extends Omit<ParseSessionOptions, 'cache'> {
9
+ readonly flatten?: boolean;
10
+ readonly includeGraphs?: boolean;
11
+ readonly cache?: ParseCache;
12
+ readonly documentCache?: ParseSessionOptions['cache'];
13
+ readonly onDiagnostic?: (diagnostic: TokenDiagnostic) => void;
14
+ readonly warn?: (diagnostic: TokenDiagnostic) => void;
15
+ }
16
+ export type ParseTokensInput = ParseInput | DesignTokenInterchangeFormat | {
17
+ readonly contents: string;
18
+ readonly uri?: string;
19
+ };
20
+ export interface ParseTokensResult {
21
+ readonly document?: RawDocument;
22
+ readonly graph?: DocumentGraph;
23
+ readonly resolver?: DocumentResolver;
24
+ readonly flattened: readonly DtifFlattenedToken[];
25
+ readonly metadataIndex: ReadonlyMap<TokenId, TokenMetadataSnapshot>;
26
+ readonly resolutionIndex: ReadonlyMap<TokenId, ResolvedTokenView>;
27
+ readonly diagnostics: readonly TokenDiagnostic[];
28
+ }
29
+ export declare function parseTokens(input: ParseTokensInput, options?: ParseTokensOptions): Promise<ParseTokensResult>;
30
+ export declare function parseTokensSync(input: ParseTokensInput, options?: ParseTokensOptions): ParseTokensResult;
31
+ //# sourceMappingURL=parse-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-tokens.d.ts","sourceRoot":"","sources":["../../src/tokens/parse-tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAI1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EACV,UAAU,EAEV,WAAW,EAIZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAIL,KAAK,UAAU,EAGhB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAEf,OAAO,EACP,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,4BAA4B,GAC5B;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACpE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAClE,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CAClD;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAgC5B;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CA8EnB"}