@lapidist/dtif-parser 0.4.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 +64 -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 -8
  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/CHANGELOG.md CHANGED
@@ -1,5 +1,69 @@
1
1
  # @lapidist/dtif-parser changelog
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Remove the legacy `DiagnosticBag` helper in favour of working directly with domain `DiagnosticEvent` arrays and update the CLI
8
+ summary utilities accordingly.
9
+
10
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Replace the legacy document cache interface with the domain-level cache port so session options and helpers consume
11
+ `RawDocumentIdentity` aware caches directly.
12
+
13
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - - Replace token parsing diagnostics with domain-level `DiagnosticEvent` objects so `parseTokens` and `parseTokensSync` surface the same structured events as `parseDocument`.
14
+ - Remove the token diagnostic helpers in favour of a shared `formatDiagnostic` utility and update the Node adapter to emit domain diagnostics.
15
+
16
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Rename the session `cache` option to `documentCache` and update token helpers to
17
+ forward document caches through the base session options. Update your
18
+ integrations to pass `documentCache` when supplying custom document caches.
19
+
20
+ ### Minor Changes
21
+
22
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Promote the domain token cache primitives by removing the legacy `ParseCache` adapter, renaming the public API to `TokenCache`,
23
+ and updating the parser documentation to describe the new `tokenCache` option alongside the domain-first plugin infrastructure.
24
+
25
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Introduce application-layer use cases that orchestrate the new domain services and adapters so synchronous and asynchronous
26
+ pipelines can share the same flow, adopt the document/token orchestration inside the async parseTokens entrypoint, and port
27
+ parseTokensSync onto the same use case with dedicated inline ingestion/decoding adapters to eliminate duplicated parsing
28
+ logic while reshaping token cache key derivation to depend on domain-level configuration instead of resolved session
29
+ options.
30
+
31
+ Centralize token cache variant derivation inside the shared ParseTokens use case so cache keys always reflect the same
32
+ flatten/include configuration regardless of entrypoint.
33
+
34
+ Expose the application-level parse result shape directly from `parseDocument`, `parseCollection`, and the CLI so
35
+ consumers receive domain diagnostics alongside graph/resolution snapshots without the legacy compatibility wrapper.
36
+
37
+ Remove the legacy document compatibility layer so parse sessions and token helpers operate on the domain raw document
38
+ model directly, simplifying caching, diagnostics, and downstream adapters.
39
+
40
+ Retire the CLI diagnostic shim by teaching the command to consume domain diagnostic events directly, allowing the shared
41
+ bag/serialization utilities to operate without converting back to the legacy diagnostic shape.
42
+
43
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Refine override evaluation to route diagnostics through the shared collector so resolver internals no longer manage ad-hoc arrays.
44
+
45
+ ### Patch Changes
46
+
47
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - Fix token flattening generics and inline ingestion utilities so the parser build
48
+ and lint suites succeed under the new domain-first pipeline.
49
+
50
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - - Preserve token flattener diagnostics in cached snapshots so warm parses continue reporting them.
51
+
52
+ - [#92](https://github.com/bylapidist/dtif/pull/92) [`3bbe4e6`](https://github.com/bylapidist/dtif/commit/3bbe4e65974380b36a90834e79273c815f1f04e8) Thanks [@brettdorrans](https://github.com/brettdorrans)! - - Consolidate document-request normalization behind a shared factory and reuse it across session and token entry points.
53
+ - Move inline document handle and decoder helpers into the application layer so ingestion adapters no longer depend on token utilities.
54
+ - Route the CLI through the shared parse-document use case so it no longer depends on the legacy session orchestration.
55
+ - Updated dependencies []:
56
+ - @lapidist/dtif-schema@1.0.0
57
+ - @lapidist/dtif-validator@1.0.0
58
+
59
+ ## 0.5.0
60
+
61
+ ### Patch Changes
62
+
63
+ - Updated dependencies []:
64
+ - @lapidist/dtif-schema@0.5.0
65
+ - @lapidist/dtif-validator@0.5.0
66
+
3
67
  ## 0.4.0
4
68
 
5
69
  ### Minor Changes
package/README.md CHANGED
@@ -46,7 +46,7 @@ for (const token of flattened) {
46
46
  ```
47
47
 
48
48
  Pass `onDiagnostic` to observe parser diagnostics as they are produced and `warn`
49
- to intercept non-fatal issues. Both callbacks receive `TokenDiagnostic`
49
+ to intercept non-fatal issues. Both callbacks receive domain `DiagnosticEvent`
50
50
  objects, allowing you to format or surface them immediately without waiting for
51
51
  the promise to resolve.
52
52
 
@@ -61,14 +61,19 @@ await parseTokens('tokens.json', {
61
61
  });
62
62
  ```
63
63
 
64
- Provide a `ParseCache` implementation, such as the built-in
65
- `InMemoryParseCache`, to reuse flattening and resolution results across runs or
64
+ Provide a `TokenCache` implementation, such as the built-in
65
+ `InMemoryTokenCache`, to reuse flattening and resolution results across runs or
66
66
  for synchronous parsing with `parseTokensSync` when your inputs are already
67
67
  available in memory.
68
68
 
69
69
  Create a session with `createSession` to reuse caches, install custom document
70
70
  loaders, register plugins, or parse multiple collections with shared state.
71
71
 
72
+ Each pipeline stage emits domain `DiagnosticEvent` objects instead of throwing.
73
+ Results aggregate every diagnostic (including cache hits) so tooling can stream
74
+ warnings via `onDiagnostic`/`warn` hooks, persist them for later inspection, or
75
+ format them with `formatDiagnostic`.
76
+
72
77
  ### Node adapter
73
78
 
74
79
  For Node-based tooling, import the bundled adapter to read DTIF token files from
@@ -90,11 +95,24 @@ try {
90
95
  const document = await readTokensFile('tokens/base.tokens.json');
91
96
  ```
92
97
 
98
+ ## Architecture overview
99
+
100
+ - `createSession` coordinates the loader, schema guard, normaliser, graph
101
+ builder, and resolver for each request. Sessions keep caches and plugins in
102
+ sync across parses.
103
+ - Domain caches receive `RawDocumentIdentity` keys and ensure decoded bytes, AST
104
+ snapshots, and flattened token artefacts can be reused safely between runs.
105
+ - Diagnostic events surface from every stage and persist in token cache entries
106
+ so warm parses provide the same visibility as cold runs.
107
+ - Helper APIs (`parseTokens`, `parseTokensSync`, `createMetadataSnapshot`, and
108
+ `createResolutionSnapshot`) layer on snapshot builders without bypassing the
109
+ session lifecycle.
110
+
93
111
  ## Development
94
112
 
95
- - [Parser package structure](../docs/tooling/dtif-parser-package-structure.md) documents the current
96
- module layout, session lifecycle, and testing conventions that future
97
- roadmap work will build upon.
113
+ - [Parser guide architecture section](../docs/guides/dtif-parser.md#package-architecture)
114
+ documents the current module layout, session lifecycle, and testing
115
+ conventions that future roadmap work will build upon.
98
116
 
99
117
  ## Command line interface
100
118
 
@@ -0,0 +1,7 @@
1
+ import type { DiagnosticEvent, PipelineDiagnostics } from '../../domain/models.js';
2
+ export declare const EMPTY_PIPELINE_DIAGNOSTICS: PipelineDiagnostics;
3
+ export declare function toPipelineDiagnostics(diagnostics: readonly DiagnosticEvent[]): PipelineDiagnostics;
4
+ export declare const toDomainDiagnostic: typeof freezeDiagnosticEvent;
5
+ declare function freezeDiagnosticEvent(diagnostic: DiagnosticEvent): DiagnosticEvent;
6
+ export {};
7
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/adapters/domain/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,0BAA0B,EAAE,mBAEvC,CAAC;AAEH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,mBAAmB,CAQrB;AAED,eAAO,MAAM,kBAAkB,8BAAwB,CAAC;AAoBxD,iBAAS,qBAAqB,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,CAO3E"}
@@ -0,0 +1,30 @@
1
+ export const EMPTY_PIPELINE_DIAGNOSTICS = Object.freeze({
2
+ events: Object.freeze([])
3
+ });
4
+ export function toPipelineDiagnostics(diagnostics) {
5
+ if (diagnostics.length === 0) {
6
+ return EMPTY_PIPELINE_DIAGNOSTICS;
7
+ }
8
+ return {
9
+ events: Object.freeze(diagnostics.map(freezeDiagnosticEvent))
10
+ };
11
+ }
12
+ export const toDomainDiagnostic = freezeDiagnosticEvent;
13
+ function freezeRelated(related) {
14
+ if (related.length === 0) {
15
+ return Object.freeze([]);
16
+ }
17
+ return Object.freeze(related.map((info) => Object.freeze({
18
+ message: info.message,
19
+ pointer: info.pointer,
20
+ span: info.span
21
+ })));
22
+ }
23
+ function freezeDiagnosticEvent(diagnostic) {
24
+ const related = diagnostic.related ? freezeRelated(diagnostic.related) : undefined;
25
+ return Object.freeze({
26
+ ...diagnostic,
27
+ related
28
+ });
29
+ }
30
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/adapters/domain/diagnostics.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,0BAA0B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC3E,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CACnC,WAAuC;IAEvC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;KAChC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD,SAAS,aAAa,CACpB,OAAqD;IAErD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAClB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,MAAM,CAAC,MAAM,CAAC;QACZ,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA2B;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,UAAU;QACb,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RawDocument } from '../../domain/models.js';
2
+ import type { DocumentRequest, DocumentSourcePort } from '../../domain/ports.js';
3
+ import type { DocumentLoader, DocumentLoaderContext } from '../../io/document-loader.js';
4
+ export interface DocumentLoaderSourceOptions {
5
+ readonly context?: DocumentLoaderContext;
6
+ }
7
+ export declare class DocumentLoaderSource implements DocumentSourcePort {
8
+ #private;
9
+ constructor(loader: DocumentLoader, options?: DocumentLoaderSourceOptions);
10
+ load(request: DocumentRequest): Promise<RawDocument>;
11
+ }
12
+ //# sourceMappingURL=document-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-source.d.ts","sourceRoot":"","sources":["../../../src/adapters/domain/document-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAQzF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,qBAAa,oBAAqB,YAAW,kBAAkB;;gBAIjD,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,2BAAgC;IAKvE,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAkC3D"}
@@ -0,0 +1,96 @@
1
+ export class DocumentLoaderSource {
2
+ #loader;
3
+ #context;
4
+ constructor(loader, options = {}) {
5
+ this.#loader = loader;
6
+ this.#context = options.context;
7
+ }
8
+ async load(request) {
9
+ const input = toParseInput(request);
10
+ const context = this.#mergeContext(request);
11
+ const handle = await this.#loader.load(input, context);
12
+ return {
13
+ identity: {
14
+ uri: handle.uri,
15
+ contentType: handle.contentType,
16
+ description: request.description
17
+ },
18
+ bytes: handle.bytes,
19
+ text: handle.text,
20
+ data: handle.data
21
+ };
22
+ }
23
+ #mergeContext(request) {
24
+ if (!request.baseUri && !request.signal) {
25
+ return this.#context;
26
+ }
27
+ if (!this.#context) {
28
+ return {
29
+ baseUri: request.baseUri,
30
+ signal: request.signal
31
+ };
32
+ }
33
+ return {
34
+ baseUri: request.baseUri ?? this.#context.baseUri,
35
+ signal: request.signal ?? this.#context.signal
36
+ };
37
+ }
38
+ }
39
+ function toParseInput(request) {
40
+ if (request.inlineData !== undefined) {
41
+ return toDataRecord(request);
42
+ }
43
+ if (request.inlineContent !== undefined) {
44
+ return toContentRecord(request);
45
+ }
46
+ if (request.uri !== undefined) {
47
+ return request.uri;
48
+ }
49
+ throw new Error('Document request must provide a URI, inline content, or inline data.');
50
+ }
51
+ function toDataRecord(request) {
52
+ const { inlineData } = request;
53
+ assertDesignTokenDocument(inlineData);
54
+ return {
55
+ uri: request.uri,
56
+ data: inlineData,
57
+ contentType: normalizeContentType(request.contentTypeHint)
58
+ };
59
+ }
60
+ function toContentRecord(request) {
61
+ const { inlineContent } = request;
62
+ if (inlineContent === undefined) {
63
+ throw new TypeError('Inline content must be provided when no URI is supplied.');
64
+ }
65
+ return {
66
+ uri: request.uri,
67
+ content: inlineContent,
68
+ contentType: normalizeContentType(request.contentTypeHint)
69
+ };
70
+ }
71
+ function normalizeContentType(value) {
72
+ if (typeof value !== 'string') {
73
+ return undefined;
74
+ }
75
+ const normalized = value.toLowerCase();
76
+ return isContentType(normalized) ? normalized : undefined;
77
+ }
78
+ function isContentType(value) {
79
+ return value === 'application/json' || value === 'application/yaml';
80
+ }
81
+ function assertDesignTokenDocument(value) {
82
+ if (!isDesignTokenDocument(value)) {
83
+ throw new TypeError('Inline data must be a design token document.');
84
+ }
85
+ }
86
+ function isDesignTokenDocument(value) {
87
+ if (!value || typeof value !== 'object') {
88
+ return false;
89
+ }
90
+ if (value instanceof URL || value instanceof Uint8Array) {
91
+ return false;
92
+ }
93
+ const prototype = Reflect.getPrototypeOf(value);
94
+ return prototype === Object.prototype || prototype === null;
95
+ }
96
+ //# sourceMappingURL=document-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-source.js","sourceRoot":"","sources":["../../../src/adapters/domain/document-source.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,oBAAoB;IACtB,OAAO,CAAiB;IACxB,QAAQ,CAAyB;IAE1C,YAAY,MAAsB,EAAE,UAAuC,EAAE;QAC3E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,QAAQ,EAAE;gBACR,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC;YACD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;SACI,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,OAAwB;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;aACS,CAAC;QACpC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YACjD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;SACf,CAAC;IACpC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,OAAwB;IAC5C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB;IAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC/B,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAEtC,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC;KAC5B,CAAC;AACnC,CAAC;AAED,SAAS,eAAe,CAAC,OAAwB;IAC/C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;IAClF,CAAC;IAED,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC;KAChC,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyC;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,kBAAkB,CAAC;AACtE,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAoC;IAEpC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { DocumentLoaderSource } from './document-source.js';
2
+ export type { DocumentLoaderSourceOptions } from './document-source.js';
3
+ export { PluginExtensionCollectorAdapter, PluginTransformExecutorAdapter } from './plugins.js';
4
+ export type { PluginExtensionCollectorContext, PluginExtensionCollectorResult, PluginTransformExecutionContext, PluginTransformExecutionResult } from './plugins.js';
5
+ export { DocumentIngestionAdapter, DocumentDecodingAdapter, InlineDocumentIngestionAdapter, InlineDocumentDecodingAdapter, SchemaValidationAdapter, DocumentNormalizationAdapter, GraphConstructionAdapter, ResolutionAdapter, TokenFlatteningAdapter } from './services.js';
6
+ export type { DocumentDecodingAdapterOptions, DocumentNormalizationAdapterOptions, ResolutionAdapterOptions, TokenFlatteningAdapterOptions } from './services.js';
7
+ export { EMPTY_PIPELINE_DIAGNOSTICS, toDomainDiagnostic, toPipelineDiagnostics } from './diagnostics.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/domain/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC/F,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,8BAA8B,EAC9B,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { DocumentLoaderSource } from './document-source.js';
2
+ export { PluginExtensionCollectorAdapter, PluginTransformExecutorAdapter } from './plugins.js';
3
+ export { DocumentIngestionAdapter, DocumentDecodingAdapter, InlineDocumentIngestionAdapter, InlineDocumentDecodingAdapter, SchemaValidationAdapter, DocumentNormalizationAdapter, GraphConstructionAdapter, ResolutionAdapter, TokenFlatteningAdapter } from './services.js';
4
+ export { EMPTY_PIPELINE_DIAGNOSTICS, toDomainDiagnostic, toPipelineDiagnostics } from './diagnostics.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/domain/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAO/F,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ExtensionCollectionContext, ExtensionEvaluationSnapshot, PipelineResult, TokenTransformEvaluationSnapshot, TransformExecutionContext } from '../../domain/models.js';
2
+ import type { ExtensionCollectorPort, TransformExecutorPort } from '../../domain/ports.js';
3
+ import type { PluginRegistry } from '../../plugins/index.js';
4
+ import type { ResolvedTokenTransformEntry } from '../../plugins/registry.js';
5
+ import type { ResolvedToken } from '../../resolver/types.js';
6
+ export type PluginExtensionCollectorContext = ExtensionCollectionContext;
7
+ export type PluginExtensionCollectorResult = PipelineResult<readonly ExtensionEvaluationSnapshot[]>;
8
+ export type PluginTransformExecutionContext = TransformExecutionContext<ResolvedToken>;
9
+ export type PluginTransformExecutionResult = PipelineResult<readonly TokenTransformEvaluationSnapshot[]>;
10
+ export declare class PluginExtensionCollectorAdapter implements ExtensionCollectorPort<PluginExtensionCollectorContext, PluginExtensionCollectorResult> {
11
+ #private;
12
+ constructor(registry: PluginRegistry);
13
+ collect(context: PluginExtensionCollectorContext): PluginExtensionCollectorResult;
14
+ }
15
+ export declare class PluginTransformExecutorAdapter implements TransformExecutorPort<PluginTransformExecutionContext, PluginTransformExecutionResult> {
16
+ #private;
17
+ constructor(transforms: readonly ResolvedTokenTransformEntry[]);
18
+ execute(context: PluginTransformExecutionContext): PluginTransformExecutionResult;
19
+ }
20
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/adapters/domain/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,gCAAgC,EAChC,yBAAyB,EAE1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAsB,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAKjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAO7D,MAAM,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AAEzE,MAAM,MAAM,8BAA8B,GAAG,cAAc,CAAC,SAAS,2BAA2B,EAAE,CAAC,CAAC;AAEpG,MAAM,MAAM,+BAA+B,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;AAEvF,MAAM,MAAM,8BAA8B,GAAG,cAAc,CACzD,SAAS,gCAAgC,EAAE,CAC5C,CAAC;AAKF,qBAAa,+BACX,YAAW,sBAAsB,CAAC,+BAA+B,EAAE,8BAA8B,CAAC;;gBAItF,QAAQ,EAAE,cAAc;IAIpC,OAAO,CAAC,OAAO,EAAE,+BAA+B,GAAG,8BAA8B;CA8DlF;AAED,qBAAa,8BACX,YAAW,qBAAqB,CAAC,+BAA+B,EAAE,8BAA8B,CAAC;;gBAIrF,UAAU,EAAE,SAAS,2BAA2B,EAAE;IAI9D,OAAO,CAAC,OAAO,EAAE,+BAA+B,GAAG,8BAA8B;CAgDlF"}
@@ -0,0 +1,99 @@
1
+ import { createTransformFailureDiagnostic, freezeResultDiagnostics } from '../../resolver/internal/helpers.js';
2
+ import { EMPTY_PIPELINE_DIAGNOSTICS, toDomainDiagnostic, toPipelineDiagnostics } from './diagnostics.js';
3
+ const EMPTY_EXTENSION_RESULTS = Object.freeze([]);
4
+ const EMPTY_TRANSFORM_RESULTS = Object.freeze([]);
5
+ export class PluginExtensionCollectorAdapter {
6
+ #registry;
7
+ constructor(registry) {
8
+ this.#registry = registry;
9
+ }
10
+ collect(context) {
11
+ const diagnostics = [];
12
+ const collector = this.#createCollector(context.document, diagnostics);
13
+ if (!collector || context.invocations.length === 0) {
14
+ return {
15
+ outcome: EMPTY_EXTENSION_RESULTS,
16
+ diagnostics: diagnostics.length === 0 ? EMPTY_PIPELINE_DIAGNOSTICS : toPipelineDiagnostics(diagnostics)
17
+ };
18
+ }
19
+ for (const invocation of context.invocations) {
20
+ collector.handle({
21
+ namespace: invocation.namespace,
22
+ pointer: invocation.pointer,
23
+ span: invocation.span,
24
+ value: invocation.value
25
+ });
26
+ }
27
+ const evaluations = collector.results();
28
+ if (evaluations.length === 0) {
29
+ return {
30
+ outcome: EMPTY_EXTENSION_RESULTS,
31
+ diagnostics: diagnostics.length === 0 ? EMPTY_PIPELINE_DIAGNOSTICS : toPipelineDiagnostics(diagnostics)
32
+ };
33
+ }
34
+ const snapshots = evaluations.map((evaluation) => {
35
+ const diagnosticsSnapshot = evaluation.diagnostics.length === 0
36
+ ? Object.freeze([])
37
+ : Object.freeze(evaluation.diagnostics.map(toDomainDiagnostic));
38
+ const snapshot = Object.freeze({
39
+ plugin: evaluation.plugin,
40
+ namespace: evaluation.namespace,
41
+ pointer: evaluation.pointer,
42
+ span: evaluation.span,
43
+ value: evaluation.value,
44
+ normalized: evaluation.normalized,
45
+ diagnostics: diagnosticsSnapshot
46
+ });
47
+ return snapshot;
48
+ });
49
+ return {
50
+ outcome: Object.freeze(snapshots),
51
+ diagnostics: diagnostics.length === 0 ? EMPTY_PIPELINE_DIAGNOSTICS : toPipelineDiagnostics(diagnostics)
52
+ };
53
+ }
54
+ #createCollector(document, diagnostics) {
55
+ return this.#registry.createExtensionCollector(document, diagnostics);
56
+ }
57
+ }
58
+ export class PluginTransformExecutorAdapter {
59
+ #transforms;
60
+ constructor(transforms) {
61
+ this.#transforms = transforms;
62
+ }
63
+ execute(context) {
64
+ if (this.#transforms.length === 0) {
65
+ return { outcome: EMPTY_TRANSFORM_RESULTS, diagnostics: EMPTY_PIPELINE_DIAGNOSTICS };
66
+ }
67
+ const diagnostics = [];
68
+ const snapshots = [];
69
+ for (const entry of this.#transforms) {
70
+ try {
71
+ const result = entry.transform(context.token, { document: context.document });
72
+ const transformDiagnostics = freezeResultDiagnostics(result?.diagnostics);
73
+ if (transformDiagnostics.length > 0) {
74
+ diagnostics.push(...transformDiagnostics);
75
+ }
76
+ const evaluationDiagnostics = transformDiagnostics.length === 0
77
+ ? Object.freeze([])
78
+ : Object.freeze(transformDiagnostics.map(toDomainDiagnostic));
79
+ const evaluation = Object.freeze({
80
+ plugin: entry.plugin,
81
+ pointer: context.token.pointer,
82
+ data: result?.data,
83
+ diagnostics: evaluationDiagnostics
84
+ });
85
+ snapshots.push(evaluation);
86
+ }
87
+ catch (error) {
88
+ const diagnostic = createTransformFailureDiagnostic(entry.plugin, context.token.pointer, error);
89
+ diagnostics.push(diagnostic);
90
+ }
91
+ }
92
+ const outcome = snapshots.length === 0 ? EMPTY_TRANSFORM_RESULTS : Object.freeze(snapshots.slice());
93
+ return {
94
+ outcome,
95
+ diagnostics: diagnostics.length === 0 ? EMPTY_PIPELINE_DIAGNOSTICS : toPipelineDiagnostics(diagnostics)
96
+ };
97
+ }
98
+ }
99
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/adapters/domain/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { createDocumentResolver } from '../../resolver/index.js';
2
+ import { decodeDocument } from '../../io/decoder.js';
3
+ import type { SchemaGuard } from '../../validation/schema-guard.js';
4
+ import type { ResolvedTokenTransformEntry } from '../../plugins/registry.js';
5
+ import type { PluginRegistry } from '../../plugins/index.js';
6
+ import { flattenTokens } from '../../tokens/flatten.js';
7
+ import { createMetadataSnapshot, createResolutionSnapshot } from '../../tokens/snapshots.js';
8
+ import type { TokenCacheSnapshot } from '../../tokens/cache.js';
9
+ import type { InlineDocumentRequestInput } from '../../application/requests.js';
10
+ import type { DecodedDocument, GraphSnapshot, NormalizedDocument, PipelineResult, RawDocument, ResolutionOutcome, TokenSnapshot } from '../../domain/models.js';
11
+ import type { DocumentDecodingService, DocumentIngestionService, DocumentNormalizationService, GraphConstructionService, ResolutionContext, ResolutionService, SchemaValidationService, TokenFlatteningService } from '../../domain/services.js';
12
+ import type { DocumentRequest, DocumentSourcePort, GraphBuilderPort, NormalizationPort, ResolutionPort, SchemaValidationPort, TokenFlatteningPort, TokenFlatteningRequest } from '../../domain/ports.js';
13
+ import type { DocumentAst } from '../../ast/nodes.js';
14
+ import type { DocumentGraph } from '../../graph/nodes.js';
15
+ export declare class DocumentIngestionAdapter implements DocumentIngestionService {
16
+ readonly source: DocumentSourcePort;
17
+ constructor(source: DocumentSourcePort);
18
+ ingest(request: DocumentRequest): Promise<PipelineResult<RawDocument | undefined>>;
19
+ }
20
+ export declare class InlineDocumentIngestionAdapter implements DocumentIngestionService {
21
+ #private;
22
+ readonly source: DocumentSourcePort;
23
+ constructor(input: InlineDocumentRequestInput);
24
+ ingest(request: DocumentRequest): PipelineResult<RawDocument | undefined>;
25
+ }
26
+ export interface DocumentDecodingAdapterOptions {
27
+ readonly decode?: typeof decodeDocument;
28
+ }
29
+ export declare class DocumentDecodingAdapter implements DocumentDecodingService {
30
+ #private;
31
+ constructor(options?: DocumentDecodingAdapterOptions);
32
+ decode(document: RawDocument): Promise<PipelineResult<DecodedDocument | undefined>>;
33
+ }
34
+ export declare class InlineDocumentDecodingAdapter implements DocumentDecodingService {
35
+ decode(document: RawDocument): PipelineResult<DecodedDocument | undefined>;
36
+ }
37
+ export declare class SchemaValidationAdapter implements SchemaValidationService {
38
+ #private;
39
+ readonly validator: SchemaValidationPort;
40
+ constructor(guard: SchemaGuard);
41
+ validate(document: DecodedDocument): PipelineResult<boolean>;
42
+ }
43
+ export interface DocumentNormalizationAdapterOptions {
44
+ readonly normalizer?: NormalizationPort<DocumentAst>;
45
+ readonly extensions?: PluginRegistry;
46
+ }
47
+ export declare class DocumentNormalizationAdapter implements DocumentNormalizationService<DocumentAst> {
48
+ readonly normalizer: NormalizationPort<DocumentAst>;
49
+ constructor(options?: DocumentNormalizationAdapterOptions);
50
+ normalize(document: DecodedDocument): Promise<PipelineResult<NormalizedDocument<DocumentAst> | undefined>> | PipelineResult<NormalizedDocument<DocumentAst> | undefined>;
51
+ }
52
+ export declare class GraphConstructionAdapter implements GraphConstructionService<DocumentGraph, DocumentAst> {
53
+ readonly builder: GraphBuilderPort<DocumentGraph, DocumentAst>;
54
+ constructor(builder?: GraphBuilderPort<DocumentGraph, DocumentAst>);
55
+ build(document: NormalizedDocument<DocumentAst>): Promise<PipelineResult<GraphSnapshot<DocumentGraph> | undefined>> | PipelineResult<GraphSnapshot<DocumentGraph> | undefined>;
56
+ }
57
+ export interface ResolutionAdapterOptions {
58
+ readonly overrideContext?: ReadonlyMap<string, unknown>;
59
+ readonly maxDepth?: number;
60
+ readonly transforms?: readonly ResolvedTokenTransformEntry[];
61
+ }
62
+ type ResolverInstance = ReturnType<typeof createDocumentResolver>;
63
+ export declare class ResolutionAdapter implements ResolutionService<DocumentGraph, ResolverInstance, DocumentAst> {
64
+ #private;
65
+ readonly resolver: ResolutionPort<DocumentGraph, ResolverInstance, DocumentAst>;
66
+ constructor(options?: ResolutionAdapterOptions);
67
+ resolve(graph: GraphSnapshot<DocumentGraph>, context: ResolutionContext<DocumentAst>): PipelineResult<ResolutionOutcome<ResolverInstance> | undefined>;
68
+ }
69
+ export interface TokenFlatteningAdapterOptions {
70
+ readonly metadataSnapshot?: typeof createMetadataSnapshot;
71
+ readonly resolutionSnapshot?: typeof createResolutionSnapshot;
72
+ readonly flattenTokens?: typeof flattenTokens;
73
+ readonly clock?: () => number;
74
+ }
75
+ export declare class TokenFlatteningAdapter implements TokenFlatteningService<ResolverInstance, DocumentGraph, TokenCacheSnapshot> {
76
+ #private;
77
+ readonly flattener: TokenFlatteningPort<ResolverInstance, DocumentGraph, TokenCacheSnapshot>;
78
+ constructor(options?: TokenFlatteningAdapterOptions);
79
+ flatten(request: TokenFlatteningRequest<DocumentGraph, ResolverInstance>): PipelineResult<TokenSnapshot<TokenCacheSnapshot> | undefined>;
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/adapters/domain/services.ts"],"names":[],"mappings":"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"}