@lapidist/dtif-parser 0.5.0 → 1.0.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 (170) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +24 -6
  3. package/dist/adapters/domain/diagnostics.d.ts +7 -0
  4. package/dist/adapters/domain/diagnostics.d.ts.map +1 -0
  5. package/dist/adapters/domain/diagnostics.js +30 -0
  6. package/dist/adapters/domain/diagnostics.js.map +1 -0
  7. package/dist/adapters/domain/document-source.d.ts +12 -0
  8. package/dist/adapters/domain/document-source.d.ts.map +1 -0
  9. package/dist/adapters/domain/document-source.js +96 -0
  10. package/dist/adapters/domain/document-source.js.map +1 -0
  11. package/dist/adapters/domain/index.d.ts +8 -0
  12. package/dist/adapters/domain/index.d.ts.map +1 -0
  13. package/dist/adapters/domain/index.js +5 -0
  14. package/dist/adapters/domain/index.js.map +1 -0
  15. package/dist/adapters/domain/plugins.d.ts +20 -0
  16. package/dist/adapters/domain/plugins.d.ts.map +1 -0
  17. package/dist/adapters/domain/plugins.js +99 -0
  18. package/dist/adapters/domain/plugins.js.map +1 -0
  19. package/dist/adapters/domain/services.d.ts +82 -0
  20. package/dist/adapters/domain/services.d.ts.map +1 -0
  21. package/dist/adapters/domain/services.js +368 -0
  22. package/dist/adapters/domain/services.js.map +1 -0
  23. package/dist/adapters/node/token-parser.d.ts +7 -6
  24. package/dist/adapters/node/token-parser.d.ts.map +1 -1
  25. package/dist/adapters/node/token-parser.js +4 -4
  26. package/dist/adapters/node/token-parser.js.map +1 -1
  27. package/dist/application/factory.d.ts +14 -0
  28. package/dist/application/factory.d.ts.map +1 -0
  29. package/dist/application/factory.js +81 -0
  30. package/dist/application/factory.js.map +1 -0
  31. package/dist/application/index.d.ts +6 -0
  32. package/dist/application/index.d.ts.map +1 -0
  33. package/dist/application/index.js +4 -0
  34. package/dist/application/index.js.map +1 -0
  35. package/dist/application/inline.d.ts +6 -0
  36. package/dist/application/inline.d.ts.map +1 -0
  37. package/dist/application/inline.js +82 -0
  38. package/dist/application/inline.js.map +1 -0
  39. package/dist/application/requests.d.ts +12 -0
  40. package/dist/application/requests.d.ts.map +1 -0
  41. package/dist/application/requests.js +82 -0
  42. package/dist/application/requests.js.map +1 -0
  43. package/dist/application/use-cases.d.ts +61 -0
  44. package/dist/application/use-cases.d.ts.map +1 -0
  45. package/dist/application/use-cases.js +545 -0
  46. package/dist/application/use-cases.js.map +1 -0
  47. package/dist/ast/normaliser/context.d.ts +7 -6
  48. package/dist/ast/normaliser/context.d.ts.map +1 -1
  49. package/dist/ast/normaliser/context.js +1 -1
  50. package/dist/ast/normaliser/context.js.map +1 -1
  51. package/dist/ast/normaliser/document.js +1 -1
  52. package/dist/ast/normaliser/document.js.map +1 -1
  53. package/dist/ast/normaliser.d.ts +2 -2
  54. package/dist/ast/normaliser.d.ts.map +1 -1
  55. package/dist/ast/normaliser.js.map +1 -1
  56. package/dist/cli/parse.d.ts.map +1 -1
  57. package/dist/cli/parse.js +29 -12
  58. package/dist/cli/parse.js.map +1 -1
  59. package/dist/cli/serialize.d.ts +3 -4
  60. package/dist/cli/serialize.d.ts.map +1 -1
  61. package/dist/cli/serialize.js +19 -5
  62. package/dist/cli/serialize.js.map +1 -1
  63. package/dist/diagnostics/format.d.ts +7 -0
  64. package/dist/diagnostics/format.d.ts.map +1 -0
  65. package/dist/diagnostics/format.js +94 -0
  66. package/dist/diagnostics/format.js.map +1 -0
  67. package/dist/domain/index.d.ts +5 -0
  68. package/dist/domain/index.d.ts.map +1 -0
  69. package/dist/domain/index.js +5 -0
  70. package/dist/domain/index.js.map +1 -0
  71. package/dist/domain/models.d.ts +88 -0
  72. package/dist/domain/models.d.ts.map +1 -0
  73. package/dist/domain/models.js +2 -0
  74. package/dist/domain/models.js.map +1 -0
  75. package/dist/domain/ports.d.ts +69 -0
  76. package/dist/domain/ports.d.ts.map +1 -0
  77. package/dist/domain/ports.js +2 -0
  78. package/dist/domain/ports.js.map +1 -0
  79. package/dist/domain/primitives.d.ts +17 -0
  80. package/dist/domain/primitives.d.ts.map +1 -0
  81. package/dist/domain/primitives.js +2 -0
  82. package/dist/domain/primitives.js.map +1 -0
  83. package/dist/domain/services.d.ts +35 -0
  84. package/dist/domain/services.d.ts.map +1 -0
  85. package/dist/domain/services.js +2 -0
  86. package/dist/domain/services.js.map +1 -0
  87. package/dist/index.d.ts +10 -6
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +5 -3
  90. package/dist/index.js.map +1 -1
  91. package/dist/io/decoder.d.ts +3 -2
  92. package/dist/io/decoder.d.ts.map +1 -1
  93. package/dist/io/decoder.js +14 -8
  94. package/dist/io/decoder.js.map +1 -1
  95. package/dist/io/document-cache.d.ts +3 -2
  96. package/dist/io/document-cache.d.ts.map +1 -1
  97. package/dist/io/document-cache.js +8 -5
  98. package/dist/io/document-cache.js.map +1 -1
  99. package/dist/plugins/registry.d.ts +3 -2
  100. package/dist/plugins/registry.d.ts.map +1 -1
  101. package/dist/plugins/registry.js.map +1 -1
  102. package/dist/plugins/types.d.ts +8 -8
  103. package/dist/plugins/types.d.ts.map +1 -1
  104. package/dist/resolver/document-resolver.d.ts +1 -1
  105. package/dist/resolver/document-resolver.d.ts.map +1 -1
  106. package/dist/resolver/document-resolver.js +22 -30
  107. package/dist/resolver/document-resolver.js.map +1 -1
  108. package/dist/resolver/internal/constants.d.ts +3 -3
  109. package/dist/resolver/internal/constants.d.ts.map +1 -1
  110. package/dist/resolver/internal/constants.js.map +1 -1
  111. package/dist/resolver/internal/context.d.ts +1 -1
  112. package/dist/resolver/internal/context.d.ts.map +1 -1
  113. package/dist/resolver/internal/diagnostics.d.ts +8 -0
  114. package/dist/resolver/internal/diagnostics.d.ts.map +1 -0
  115. package/dist/resolver/internal/diagnostics.js +21 -0
  116. package/dist/resolver/internal/diagnostics.js.map +1 -0
  117. package/dist/resolver/internal/helpers.d.ts +7 -6
  118. package/dist/resolver/internal/helpers.d.ts.map +1 -1
  119. package/dist/resolver/internal/helpers.js.map +1 -1
  120. package/dist/resolver/internal/resolved-token.d.ts +4 -3
  121. package/dist/resolver/internal/resolved-token.d.ts.map +1 -1
  122. package/dist/resolver/internal/resolved-token.js.map +1 -1
  123. package/dist/resolver/types.d.ts +6 -5
  124. package/dist/resolver/types.d.ts.map +1 -1
  125. package/dist/session/internal/options.d.ts +2 -2
  126. package/dist/session/internal/options.d.ts.map +1 -1
  127. package/dist/session/internal/options.js +1 -1
  128. package/dist/session/internal/options.js.map +1 -1
  129. package/dist/session/types.d.ts +2 -2
  130. package/dist/session/types.d.ts.map +1 -1
  131. package/dist/session.d.ts +13 -8
  132. package/dist/session.d.ts.map +1 -1
  133. package/dist/session.js +12 -167
  134. package/dist/session.js.map +1 -1
  135. package/dist/tokens/cache.d.ts +24 -20
  136. package/dist/tokens/cache.d.ts.map +1 -1
  137. package/dist/tokens/cache.js +25 -24
  138. package/dist/tokens/cache.js.map +1 -1
  139. package/dist/tokens/inputs.d.ts +16 -0
  140. package/dist/tokens/inputs.d.ts.map +1 -0
  141. package/dist/tokens/inputs.js +180 -0
  142. package/dist/tokens/inputs.js.map +1 -0
  143. package/dist/tokens/parse-tokens.d.ts +12 -15
  144. package/dist/tokens/parse-tokens.d.ts.map +1 -1
  145. package/dist/tokens/parse-tokens.js +57 -444
  146. package/dist/tokens/parse-tokens.js.map +1 -1
  147. package/dist/tokens/snapshots.d.ts +2 -2
  148. package/dist/tokens/snapshots.d.ts.map +1 -1
  149. package/dist/tokens/snapshots.js.map +1 -1
  150. package/dist/tokens/types.d.ts +1 -34
  151. package/dist/tokens/types.d.ts.map +1 -1
  152. package/dist/types.d.ts +13 -58
  153. package/dist/types.d.ts.map +1 -1
  154. package/dist/utils/bytes.d.ts +2 -0
  155. package/dist/utils/bytes.d.ts.map +1 -0
  156. package/dist/utils/bytes.js +15 -0
  157. package/dist/utils/bytes.js.map +1 -0
  158. package/dist/validation/schema-guard.d.ts +3 -3
  159. package/dist/validation/schema-guard.d.ts.map +1 -1
  160. package/dist/validation/schema-guard.js +1 -1
  161. package/dist/validation/schema-guard.js.map +1 -1
  162. package/package.json +3 -3
  163. package/dist/diagnostics/bag.d.ts +0 -26
  164. package/dist/diagnostics/bag.d.ts.map +0 -1
  165. package/dist/diagnostics/bag.js +0 -106
  166. package/dist/diagnostics/bag.js.map +0 -1
  167. package/dist/tokens/diagnostics.d.ts +0 -5
  168. package/dist/tokens/diagnostics.d.ts.map +0 -1
  169. package/dist/tokens/diagnostics.js +0 -124
  170. package/dist/tokens/diagnostics.js.map +0 -1
package/dist/session.js CHANGED
@@ -1,11 +1,7 @@
1
- import { normalizeDocument } from './ast/normaliser.js';
2
- import { DiagnosticBag } from './diagnostics/bag.js';
3
- import { DiagnosticCodes } from './diagnostics/codes.js';
4
- import { buildDocumentGraph } from './graph/builder.js';
5
- import { DocumentLoaderError } from './io/document-loader.js';
6
- import { decodeDocument } from './io/decoder.js';
7
- import { createDocumentResolver } from './resolver/index.js';
1
+ import { ParseDocumentUseCase } from './application/use-cases.js';
8
2
  import { resolveOptions } from './session/internal/options.js';
3
+ import { createParseDocumentUseCase } from './application/factory.js';
4
+ import { createDocumentRequest } from './application/requests.js';
9
5
  function isAsyncIterable(value) {
10
6
  const root = value;
11
7
  let current = root;
@@ -44,182 +40,31 @@ async function* toAsyncIterable(inputs) {
44
40
  }
45
41
  export class ParseSession {
46
42
  options;
43
+ #documents;
47
44
  constructor(options = {}) {
48
45
  this.options = resolveOptions(options);
46
+ this.#documents = createParseDocumentUseCase(this.options);
49
47
  }
50
48
  async parseDocument(input) {
51
- const diagnostics = new DiagnosticBag();
52
- const handle = await this.loadDocumentHandle(input, diagnostics);
53
- if (!handle) {
54
- return { diagnostics };
55
- }
56
- const cachedDocument = await this.getCachedDocument(handle, diagnostics);
57
- const document = cachedDocument ?? (await this.decodeDocumentHandle(handle, diagnostics));
58
- if (!document) {
59
- return { diagnostics };
60
- }
61
- if (!cachedDocument) {
62
- await this.storeDocumentInCache(document, diagnostics);
63
- }
64
- const schemaValid = this.validateDocumentSchema(document, diagnostics);
65
- if (!schemaValid) {
66
- return {
67
- document,
68
- diagnostics
69
- };
70
- }
71
- const normalised = normalizeDocument(document, {
72
- extensions: this.options.plugins
73
- });
74
- diagnostics.addMany(normalised.diagnostics);
75
- if (!normalised.ast) {
76
- return {
77
- document,
78
- extensions: normalised.extensions,
79
- diagnostics
80
- };
81
- }
82
- const graphResult = buildDocumentGraph(normalised.ast);
83
- diagnostics.addMany(graphResult.diagnostics);
84
- const graph = graphResult.graph;
85
- const resolver = graph &&
86
- createDocumentResolver(graph, {
87
- context: this.options.overrideContext,
88
- maxDepth: this.options.maxDepth,
89
- document,
90
- transforms: this.options.plugins?.transforms
91
- });
92
- return {
93
- document,
94
- ast: normalised.ast,
95
- graph,
96
- resolver,
97
- extensions: normalised.extensions,
98
- diagnostics
99
- };
49
+ const request = createDocumentRequest(input);
50
+ const execution = await this.#documents.execute({ request });
51
+ return execution;
100
52
  }
101
53
  async parseCollection(inputs) {
102
54
  const results = [];
103
- const diagnostics = new DiagnosticBag();
55
+ const diagnostics = [];
104
56
  for await (const input of toAsyncIterable(inputs)) {
105
57
  const result = await this.parseDocument(input);
106
58
  results.push(result);
107
- diagnostics.extend(result.diagnostics);
59
+ if (result.diagnostics.length > 0) {
60
+ diagnostics.push(...result.diagnostics);
61
+ }
108
62
  }
109
63
  return {
110
64
  results,
111
65
  diagnostics
112
66
  };
113
67
  }
114
- async loadDocumentHandle(input, diagnostics) {
115
- try {
116
- return await this.options.loader.load(input);
117
- }
118
- catch (error) {
119
- if (error instanceof DocumentLoaderError) {
120
- diagnostics.add({
121
- code: DiagnosticCodes.loader.TOO_LARGE,
122
- message: error.message,
123
- severity: 'error'
124
- });
125
- }
126
- else {
127
- diagnostics.add({
128
- code: DiagnosticCodes.loader.FAILED,
129
- message: error instanceof Error ? error.message : 'Failed to load DTIF document.',
130
- severity: 'error'
131
- });
132
- }
133
- return undefined;
134
- }
135
- }
136
- async decodeDocumentHandle(handle, diagnostics) {
137
- try {
138
- return await decodeDocument(handle);
139
- }
140
- catch (error) {
141
- diagnostics.add({
142
- code: DiagnosticCodes.decoder.FAILED,
143
- message: error instanceof Error ? error.message : 'Failed to decode DTIF document.',
144
- severity: 'error'
145
- });
146
- return undefined;
147
- }
148
- }
149
- validateDocumentSchema(document, diagnostics) {
150
- try {
151
- const result = this.options.schemaGuard.validate(document);
152
- if (!result.valid) {
153
- diagnostics.addMany(result.diagnostics);
154
- }
155
- return result.valid;
156
- }
157
- catch (error) {
158
- diagnostics.add({
159
- code: DiagnosticCodes.schemaGuard.FAILED,
160
- message: error instanceof Error
161
- ? error.message
162
- : 'Failed to validate DTIF document against the schema.',
163
- severity: 'error'
164
- });
165
- return false;
166
- }
167
- }
168
- async getCachedDocument(handle, diagnostics) {
169
- const cache = this.options.cache;
170
- if (!cache) {
171
- return undefined;
172
- }
173
- try {
174
- const cached = await cache.get(handle.uri);
175
- if (!cached) {
176
- return undefined;
177
- }
178
- return areByteArraysEqual(cached.bytes, handle.bytes) ? cached : undefined;
179
- }
180
- catch (error) {
181
- diagnostics.add({
182
- code: DiagnosticCodes.core.CACHE_FAILED,
183
- message: error instanceof Error
184
- ? `Failed to read DTIF document from cache: ${error.message}`
185
- : 'Failed to read DTIF document from cache.',
186
- severity: 'warning'
187
- });
188
- return undefined;
189
- }
190
- }
191
- async storeDocumentInCache(document, diagnostics) {
192
- const cache = this.options.cache;
193
- if (!cache) {
194
- return;
195
- }
196
- try {
197
- await cache.set(document);
198
- }
199
- catch (error) {
200
- diagnostics.add({
201
- code: DiagnosticCodes.core.CACHE_FAILED,
202
- message: error instanceof Error
203
- ? `Failed to update DTIF document cache: ${error.message}`
204
- : 'Failed to update DTIF document cache.',
205
- severity: 'warning'
206
- });
207
- }
208
- }
209
- }
210
- function areByteArraysEqual(left, right) {
211
- if (left === right) {
212
- return true;
213
- }
214
- if (left.byteLength !== right.byteLength) {
215
- return false;
216
- }
217
- for (let index = 0; index < left.byteLength; index++) {
218
- if (left[index] !== right[index]) {
219
- return false;
220
- }
221
- }
222
- return true;
223
68
  }
224
69
  export function createSession(options = {}) {
225
70
  return new ParseSession(options);
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,42 @@
1
- import type { ResolvedParseSessionOptions } from '../session/internal/options.js';
2
- import type { DtifFlattenedToken, ResolvedTokenView, TokenDiagnostic, TokenId, TokenMetadataSnapshot } from './types.js';
1
+ import type { DtifFlattenedToken, ResolvedTokenView, TokenId, TokenMetadataSnapshot } from './types.js';
3
2
  import type { RawDocument } from '../types.js';
4
- export interface ParseCacheKey {
5
- readonly uri: string;
6
- readonly variant: string;
7
- }
8
- export interface CacheVariantOptions {
3
+ import type { TokenCachePort, TokenCacheKey as DomainTokenCacheKey } from '../domain/ports.js';
4
+ import type { RawDocumentIdentity } from '../domain/models.js';
5
+ import type { DiagnosticEvent } from '../domain/models.js';
6
+ export type TokenCacheKey = DomainTokenCacheKey;
7
+ export interface TokenCacheVariantOptions {
9
8
  readonly flatten: boolean;
10
9
  readonly includeGraphs: boolean;
11
10
  }
12
- export type CacheVariantOverrides = Partial<CacheVariantOptions>;
13
- export interface ParseCacheEntry {
11
+ export type TokenCacheVariantOverrides = Partial<TokenCacheVariantOptions>;
12
+ export interface TokenCacheSnapshot {
14
13
  readonly documentHash: string;
15
14
  readonly flattened?: readonly DtifFlattenedToken[];
16
15
  readonly metadataIndex?: ReadonlyMap<TokenId, TokenMetadataSnapshot>;
17
16
  readonly resolutionIndex?: ReadonlyMap<TokenId, ResolvedTokenView>;
18
- readonly diagnostics?: readonly TokenDiagnostic[];
17
+ readonly diagnostics?: readonly DiagnosticEvent[];
19
18
  readonly timestamp: number;
20
19
  }
21
- export interface ParseCache {
22
- get(key: ParseCacheKey): ParseCacheEntry | undefined | Promise<ParseCacheEntry | undefined>;
23
- set(key: ParseCacheKey, value: ParseCacheEntry): void | Promise<void>;
20
+ export interface TokenCacheConfiguration {
21
+ readonly resolutionDepth: number;
22
+ readonly overrideContext?: ReadonlyMap<string, unknown>;
23
+ readonly transformSignature?: string;
24
+ readonly variantSignature?: string;
24
25
  }
25
- export interface InMemoryParseCacheOptions {
26
+ export type TokenCache = TokenCachePort<TokenCacheSnapshot>;
27
+ export interface InMemoryTokenCacheOptions {
26
28
  readonly maxEntries?: number;
27
29
  readonly ttlMs?: number;
30
+ readonly defaultVariant?: string;
28
31
  }
29
- export declare class InMemoryParseCache implements ParseCache {
32
+ export declare class InMemoryTokenCache implements TokenCache {
30
33
  #private;
31
- constructor(options?: InMemoryParseCacheOptions);
32
- get(key: ParseCacheKey): ParseCacheEntry | undefined;
33
- set(key: ParseCacheKey, value: ParseCacheEntry): void;
34
+ constructor(options?: InMemoryTokenCacheOptions);
35
+ get(key: TokenCacheKey): TokenCacheSnapshot | undefined;
36
+ set(key: TokenCacheKey, value: TokenCacheSnapshot): void;
34
37
  }
35
- export declare function createParseCache(options?: InMemoryParseCacheOptions): InMemoryParseCache;
38
+ export declare function createTokenCache(options?: InMemoryTokenCacheOptions): InMemoryTokenCache;
36
39
  export declare function computeDocumentHash(input: Uint8Array | RawDocument): string;
37
- export declare function createCacheKey(uri: string, options: ResolvedParseSessionOptions, variantOptions?: CacheVariantOverrides): ParseCacheKey;
40
+ export declare function createTokenCacheVariant(configuration: TokenCacheConfiguration, variantOptions?: TokenCacheVariantOverrides): string;
41
+ export declare function createTokenCacheKey(identity: RawDocumentIdentity, configuration: TokenCacheConfiguration, variantOptions?: TokenCacheVariantOverrides): TokenCacheKey;
38
42
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/tokens/cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,OAAO,EACP,qBAAqB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACrE,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC5F,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAQD,qBAAa,kBAAmB,YAAW,UAAU;;gBAQvC,OAAO,GAAE,yBAA8B;IAKnD,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAkBpD,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;CAqBtD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,kBAAkB,CAExF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAU3E;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,2BAA2B,EACpC,cAAc,CAAC,EAAE,qBAAqB,GACrC,aAAa,CAMf"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/tokens/cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,qBAAqB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAEhD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACrE,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAE5D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AASD,qBAAa,kBAAmB,YAAW,UAAU;;gBASvC,OAAO,GAAE,yBAA8B;IAMnD,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS;IAkBvD,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;CAqBzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,kBAAkB,CAExF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAU3E;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,uBAAuB,EACtC,cAAc,CAAC,EAAE,0BAA0B,GAC1C,MAAM,CAGR;AAkBD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,mBAAmB,EAC7B,aAAa,EAAE,uBAAuB,EACtC,cAAc,CAAC,EAAE,0BAA0B,GAC1C,aAAa,CAKf"}
@@ -5,16 +5,19 @@ const DEFAULT_CACHE_VARIANT_OPTIONS = Object.freeze({
5
5
  flatten: true,
6
6
  includeGraphs: true
7
7
  });
8
- export class InMemoryParseCache {
8
+ const DEFAULT_VARIANT = 'default';
9
+ export class InMemoryTokenCache {
9
10
  #maxEntries;
10
11
  #ttlMs;
11
12
  #store = new Map();
13
+ #defaultVariant;
12
14
  constructor(options = {}) {
13
15
  this.#maxEntries = options.maxEntries ?? DEFAULT_MAX_ENTRIES;
14
16
  this.#ttlMs = options.ttlMs;
17
+ this.#defaultVariant = options.defaultVariant ?? DEFAULT_VARIANT;
15
18
  }
16
19
  get(key) {
17
- const id = serializeKey(key);
20
+ const id = serializeKey(key, this.#defaultVariant);
18
21
  const stored = this.#store.get(id);
19
22
  if (!stored) {
20
23
  return undefined;
@@ -29,7 +32,7 @@ export class InMemoryParseCache {
29
32
  return stored.entry;
30
33
  }
31
34
  set(key, value) {
32
- const id = serializeKey(key);
35
+ const id = serializeKey(key, this.#defaultVariant);
33
36
  this.#store.delete(id);
34
37
  this.#store.set(id, { entry: value, createdAt: Date.now() });
35
38
  this.#evict();
@@ -48,8 +51,8 @@ export class InMemoryParseCache {
48
51
  }
49
52
  }
50
53
  }
51
- export function createParseCache(options) {
52
- return new InMemoryParseCache(options);
54
+ export function createTokenCache(options) {
55
+ return new InMemoryTokenCache(options);
53
56
  }
54
57
  export function computeDocumentHash(input) {
55
58
  if (input instanceof Uint8Array) {
@@ -60,25 +63,29 @@ export function computeDocumentHash(input) {
60
63
  }
61
64
  return createHash('sha256').update(input.bytes).digest('hex');
62
65
  }
63
- export function createCacheKey(uri, options, variantOptions) {
66
+ export function createTokenCacheVariant(configuration, variantOptions) {
64
67
  const resolvedVariantOptions = resolveVariantOptions(variantOptions);
65
- return {
66
- uri,
67
- variant: createOptionsVariant(options, resolvedVariantOptions)
68
- };
68
+ return createOptionsVariant(configuration, resolvedVariantOptions);
69
69
  }
70
- function createOptionsVariant(options, variantOptions) {
70
+ function createOptionsVariant(configuration, variantOptions) {
71
71
  const payload = {
72
- maxDepth: options.maxDepth,
73
- context: normalizeContext(options.overrideContext),
74
- plugins: normalizePlugins(options.plugins),
72
+ depth: configuration.resolutionDepth,
73
+ context: normalizeContext(configuration.overrideContext),
74
+ transforms: configuration.transformSignature,
75
+ variant: configuration.variantSignature,
75
76
  flatten: variantOptions.flatten,
76
77
  includeGraphs: variantOptions.includeGraphs
77
78
  };
78
79
  return createHash('sha1').update(JSON.stringify(payload)).digest('hex');
79
80
  }
81
+ export function createTokenCacheKey(identity, configuration, variantOptions) {
82
+ return {
83
+ document: identity,
84
+ variant: createTokenCacheVariant(configuration, variantOptions)
85
+ };
86
+ }
80
87
  function normalizeContext(context) {
81
- if (context.size === 0) {
88
+ if (!context || context.size === 0) {
82
89
  return undefined;
83
90
  }
84
91
  const entries = Array.from(context.entries()).sort(([a], [b]) => a.localeCompare(b));
@@ -88,20 +95,14 @@ function normalizeContext(context) {
88
95
  }
89
96
  return normalized;
90
97
  }
91
- function normalizePlugins(plugins) {
92
- if (!plugins) {
93
- return undefined;
94
- }
95
- const transformCount = String(plugins.transforms.length);
96
- return [`transforms:${transformCount}`];
97
- }
98
98
  function resolveVariantOptions(variantOptions) {
99
99
  return {
100
100
  flatten: variantOptions?.flatten ?? DEFAULT_CACHE_VARIANT_OPTIONS.flatten,
101
101
  includeGraphs: variantOptions?.includeGraphs ?? DEFAULT_CACHE_VARIANT_OPTIONS.includeGraphs
102
102
  };
103
103
  }
104
- function serializeKey(key) {
105
- return `${key.uri}::${key.variant}`;
104
+ function serializeKey(key, defaultVariant) {
105
+ const variant = key.variant ?? defaultVariant;
106
+ return `${key.document.uri.href}::${variant}`;
106
107
  }
107
108
  //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tokens/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tokens/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { DesignTokenInterchangeFormat } from '@lapidist/dtif-schema';
2
+ import type { ParseDataInputRecord, ParseInput, ParseInputRecord } from '../types.js';
3
+ import type { InlineDocumentRequestInput } from '../application/requests.js';
4
+ export type ParseTokensInput = ParseInput | DesignTokenInterchangeFormat | {
5
+ readonly contents: string;
6
+ readonly uri?: string;
7
+ };
8
+ export type InlineInput = InlineDocumentRequestInput;
9
+ export declare function normalizeInput(input: ParseTokensInput): ParseInput;
10
+ export declare function normalizeInlineInput(input: ParseTokensInput): InlineInput | undefined;
11
+ export declare function createMemoryUriFromText(text: string): string;
12
+ export declare function createMemoryUriFromDesignTokens(value: DesignTokenInterchangeFormat, kind: string): string;
13
+ export declare function isParseInputRecord(value: unknown): value is ParseInputRecord;
14
+ export declare function isParseDataRecord(value: unknown): value is ParseDataInputRecord;
15
+ export declare function isDesignTokenDocument(value: unknown): value is DesignTokenInterchangeFormat;
16
+ //# sourceMappingURL=inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/tokens/inputs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAe,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGnG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7E,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,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAErD,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAmBlE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,GAAG,SAAS,CA8ErF;AAiCD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,4BAA4B,EACnC,IAAI,EAAE,MAAM,GACX,MAAM,CAGR;AAcD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAkB5E;AAeD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAU/E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,4BAA4B,CAW3F"}
@@ -0,0 +1,180 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { hashJsonValue } from '../utils/hash-json.js';
3
+ import { isSingleLineInlineYaml } from '../io/decoder/inline-yaml.js';
4
+ export function normalizeInput(input) {
5
+ if (typeof input === 'string' || input instanceof Uint8Array || input instanceof URL) {
6
+ return input;
7
+ }
8
+ if (isRecord(input)) {
9
+ if (isParseInputRecord(input) || isParseDataRecord(input) || isDesignTokenDocument(input)) {
10
+ return input;
11
+ }
12
+ if (isContentsRecord(input)) {
13
+ return {
14
+ uri: input.uri,
15
+ content: input.contents
16
+ };
17
+ }
18
+ }
19
+ throw new TypeError('Unsupported parse tokens input.');
20
+ }
21
+ export function normalizeInlineInput(input) {
22
+ if (typeof input === 'string') {
23
+ if (!looksLikeInlineDocument(input)) {
24
+ return undefined;
25
+ }
26
+ return {
27
+ uri: createMemoryUriFromText(input),
28
+ text: input,
29
+ contentType: detectContentTypeFromContent(input) ?? 'application/json'
30
+ };
31
+ }
32
+ if (input instanceof Uint8Array) {
33
+ const text = new TextDecoder().decode(input);
34
+ return {
35
+ uri: createMemoryUriFromText(text),
36
+ text,
37
+ contentType: detectContentTypeFromContent(text) ?? 'application/json'
38
+ };
39
+ }
40
+ if (input instanceof URL) {
41
+ return undefined;
42
+ }
43
+ if (isRecord(input)) {
44
+ if (isParseInputRecord(input)) {
45
+ if (typeof input.content === 'string') {
46
+ const content = input.content;
47
+ return {
48
+ uri: resolveInlineUri(input.uri, () => createMemoryUriFromText(content)),
49
+ text: content,
50
+ contentType: input.contentType ?? detectContentTypeFromContent(content) ?? 'application/json'
51
+ };
52
+ }
53
+ const decoded = new TextDecoder().decode(input.content);
54
+ return {
55
+ uri: resolveInlineUri(input.uri, () => createMemoryUriFromText(decoded)),
56
+ text: decoded,
57
+ contentType: input.contentType ?? detectContentTypeFromContent(decoded) ?? 'application/json'
58
+ };
59
+ }
60
+ if (isContentsRecord(input)) {
61
+ const uri = input.uri ?? createMemoryUriFromText(input.contents);
62
+ return {
63
+ uri,
64
+ text: input.contents,
65
+ contentType: detectContentTypeFromContent(input.contents) ?? 'application/json'
66
+ };
67
+ }
68
+ if (isParseDataRecord(input)) {
69
+ const uri = resolveInlineUri(input.uri, () => createMemoryUriFromDesignTokens(input.data, 'token'));
70
+ return {
71
+ uri,
72
+ contentType: input.contentType ?? 'application/json',
73
+ data: input.data
74
+ };
75
+ }
76
+ if (isDesignTokenDocument(input)) {
77
+ const uri = createMemoryUriFromDesignTokens(input, 'token');
78
+ return {
79
+ uri,
80
+ contentType: 'application/json',
81
+ data: input
82
+ };
83
+ }
84
+ }
85
+ return undefined;
86
+ }
87
+ function looksLikeInlineDocument(value) {
88
+ const trimmed = value.trimStart();
89
+ if (trimmed.length === 0) {
90
+ return true;
91
+ }
92
+ if (trimmed.startsWith('{') || trimmed.startsWith('[') || trimmed.startsWith('---')) {
93
+ return true;
94
+ }
95
+ if (trimmed.startsWith('%YAML') || trimmed.includes('\n')) {
96
+ return true;
97
+ }
98
+ if (isSingleLineInlineYaml(trimmed)) {
99
+ return true;
100
+ }
101
+ return false;
102
+ }
103
+ function detectContentTypeFromContent(value) {
104
+ const trimmed = value.trimStart();
105
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
106
+ return 'application/json';
107
+ }
108
+ if (trimmed.startsWith('---') || trimmed.startsWith('%YAML') || trimmed.includes('\n')) {
109
+ return 'application/yaml';
110
+ }
111
+ if (isSingleLineInlineYaml(trimmed)) {
112
+ return 'application/yaml';
113
+ }
114
+ return undefined;
115
+ }
116
+ export function createMemoryUriFromText(text) {
117
+ const hash = createHash('sha1').update(text).digest('hex');
118
+ return `memory://dtif-inline/${hash}.txt`;
119
+ }
120
+ export function createMemoryUriFromDesignTokens(value, kind) {
121
+ const hash = hashJsonValue(value, { algorithm: 'sha1' });
122
+ return `memory://dtif-${kind}/${hash}.json`;
123
+ }
124
+ function resolveInlineUri(value, fallback) {
125
+ if (typeof value === 'string') {
126
+ return value;
127
+ }
128
+ if (value instanceof URL) {
129
+ return value.toString();
130
+ }
131
+ return fallback();
132
+ }
133
+ export function isParseInputRecord(value) {
134
+ if (!isRecord(value)) {
135
+ return false;
136
+ }
137
+ const content = value.content;
138
+ if (typeof content !== 'string' && !(content instanceof Uint8Array)) {
139
+ return false;
140
+ }
141
+ const { uri, contentType } = value;
142
+ const validUri = uri === undefined || typeof uri === 'string' || uri instanceof URL;
143
+ const validContentType = contentType === undefined ||
144
+ contentType === 'application/json' ||
145
+ contentType === 'application/yaml';
146
+ return validUri && validContentType;
147
+ }
148
+ function isContentsRecord(value) {
149
+ if (!isRecord(value)) {
150
+ return false;
151
+ }
152
+ if (typeof value.contents !== 'string') {
153
+ return false;
154
+ }
155
+ const { uri } = value;
156
+ return uri === undefined || typeof uri === 'string';
157
+ }
158
+ export function isParseDataRecord(value) {
159
+ if (!isRecord(value)) {
160
+ return false;
161
+ }
162
+ if (!('data' in value)) {
163
+ return false;
164
+ }
165
+ return isDesignTokenDocument(value.data);
166
+ }
167
+ export function isDesignTokenDocument(value) {
168
+ if (!value || typeof value !== 'object') {
169
+ return false;
170
+ }
171
+ if (value instanceof URL || value instanceof Uint8Array) {
172
+ return false;
173
+ }
174
+ const prototype = Reflect.getPrototypeOf(value);
175
+ return prototype === Object.prototype || prototype === null;
176
+ }
177
+ function isRecord(value) {
178
+ return Boolean(value) && typeof value === 'object';
179
+ }
180
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/tokens/inputs.ts"],"names":[],"mappings":"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"}