@lapidist/dtif-parser 0.2.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.
- package/CHANGELOG.md +15 -0
- package/README.md +50 -0
- package/dist/ast/nodes.d.ts +73 -0
- package/dist/ast/nodes.d.ts.map +1 -0
- package/dist/ast/nodes.js +2 -0
- package/dist/ast/nodes.js.map +1 -0
- package/dist/ast/normaliser/context.d.ts +22 -0
- package/dist/ast/normaliser/context.d.ts.map +1 -0
- package/dist/ast/normaliser/context.js +26 -0
- package/dist/ast/normaliser/context.js.map +1 -0
- package/dist/ast/normaliser/document.d.ts +4 -0
- package/dist/ast/normaliser/document.d.ts.map +1 -0
- package/dist/ast/normaliser/document.js +49 -0
- package/dist/ast/normaliser/document.js.map +1 -0
- package/dist/ast/normaliser/fields.d.ts +7 -0
- package/dist/ast/normaliser/fields.d.ts.map +1 -0
- package/dist/ast/normaliser/fields.js +71 -0
- package/dist/ast/normaliser/fields.js.map +1 -0
- package/dist/ast/normaliser/metadata.d.ts +5 -0
- package/dist/ast/normaliser/metadata.d.ts.map +1 -0
- package/dist/ast/normaliser/metadata.js +201 -0
- package/dist/ast/normaliser/metadata.js.map +1 -0
- package/dist/ast/normaliser/nodes.d.ts +5 -0
- package/dist/ast/normaliser/nodes.d.ts.map +1 -0
- package/dist/ast/normaliser/nodes.js +108 -0
- package/dist/ast/normaliser/nodes.js.map +1 -0
- package/dist/ast/normaliser/overrides.d.ts +7 -0
- package/dist/ast/normaliser/overrides.d.ts.map +1 -0
- package/dist/ast/normaliser/overrides.js +156 -0
- package/dist/ast/normaliser/overrides.js.map +1 -0
- package/dist/ast/normaliser/utils.d.ts +12 -0
- package/dist/ast/normaliser/utils.d.ts.map +1 -0
- package/dist/ast/normaliser/utils.js +45 -0
- package/dist/ast/normaliser/utils.js.map +1 -0
- package/dist/ast/normaliser.d.ts +5 -0
- package/dist/ast/normaliser.d.ts.map +1 -0
- package/dist/ast/normaliser.js +25 -0
- package/dist/ast/normaliser.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +202 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/io.d.ts +3 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +65 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/output.d.ts +5 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +113 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parse.d.ts +4 -0
- package/dist/cli/parse.d.ts.map +1 -0
- package/dist/cli/parse.js +134 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/cli/serialize.d.ts +12 -0
- package/dist/cli/serialize.d.ts.map +1 -0
- package/dist/cli/serialize.js +92 -0
- package/dist/cli/serialize.js.map +1 -0
- package/dist/cli/types.d.ts +118 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/diagnostics/bag.d.ts +26 -0
- package/dist/diagnostics/bag.d.ts.map +1 -0
- package/dist/diagnostics/bag.js +101 -0
- package/dist/diagnostics/bag.js.map +1 -0
- package/dist/diagnostics/codes.d.ts +72 -0
- package/dist/diagnostics/codes.d.ts.map +1 -0
- package/dist/diagnostics/codes.js +94 -0
- package/dist/diagnostics/codes.js.map +1 -0
- package/dist/diagnostics/severity.d.ts +8 -0
- package/dist/diagnostics/severity.d.ts.map +1 -0
- package/dist/diagnostics/severity.js +35 -0
- package/dist/diagnostics/severity.js.map +1 -0
- package/dist/graph/builder/context.d.ts +23 -0
- package/dist/graph/builder/context.d.ts.map +1 -0
- package/dist/graph/builder/context.js +29 -0
- package/dist/graph/builder/context.js.map +1 -0
- package/dist/graph/builder/nodes.d.ts +6 -0
- package/dist/graph/builder/nodes.d.ts.map +1 -0
- package/dist/graph/builder/nodes.js +85 -0
- package/dist/graph/builder/nodes.js.map +1 -0
- package/dist/graph/builder/overrides.d.ts +5 -0
- package/dist/graph/builder/overrides.d.ts.map +1 -0
- package/dist/graph/builder/overrides.js +62 -0
- package/dist/graph/builder/overrides.js.map +1 -0
- package/dist/graph/builder/references.d.ts +7 -0
- package/dist/graph/builder/references.d.ts.map +1 -0
- package/dist/graph/builder/references.js +93 -0
- package/dist/graph/builder/references.js.map +1 -0
- package/dist/graph/builder.d.ts +5 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +30 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/nodes.d.ts +60 -0
- package/dist/graph/nodes.d.ts.map +1 -0
- package/dist/graph/nodes.js +2 -0
- package/dist/graph/nodes.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/io/decoder/encoding.d.ts +4 -0
- package/dist/io/decoder/encoding.d.ts.map +1 -0
- package/dist/io/decoder/encoding.js +36 -0
- package/dist/io/decoder/encoding.js.map +1 -0
- package/dist/io/decoder/errors.d.ts +4 -0
- package/dist/io/decoder/errors.d.ts.map +1 -0
- package/dist/io/decoder/errors.js +7 -0
- package/dist/io/decoder/errors.js.map +1 -0
- package/dist/io/decoder/source-map.d.ts +4 -0
- package/dist/io/decoder/source-map.d.ts.map +1 -0
- package/dist/io/decoder/source-map.js +106 -0
- package/dist/io/decoder/source-map.js.map +1 -0
- package/dist/io/decoder/yaml.d.ts +8 -0
- package/dist/io/decoder/yaml.d.ts.map +1 -0
- package/dist/io/decoder/yaml.js +28 -0
- package/dist/io/decoder/yaml.js.map +1 -0
- package/dist/io/decoder.d.ts +4 -0
- package/dist/io/decoder.d.ts.map +1 -0
- package/dist/io/decoder.js +19 -0
- package/dist/io/decoder.js.map +1 -0
- package/dist/io/document-cache.d.ts +15 -0
- package/dist/io/document-cache.d.ts.map +1 -0
- package/dist/io/document-cache.js +101 -0
- package/dist/io/document-cache.js.map +1 -0
- package/dist/io/document-loader.d.ts +37 -0
- package/dist/io/document-loader.d.ts.map +1 -0
- package/dist/io/document-loader.js +255 -0
- package/dist/io/document-loader.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +6 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/registry.d.ts +20 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +136 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +48 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/resolver/document-resolver.d.ts +29 -0
- package/dist/resolver/document-resolver.d.ts.map +1 -0
- package/dist/resolver/document-resolver.js +551 -0
- package/dist/resolver/document-resolver.js.map +1 -0
- package/dist/resolver/index.d.ts +3 -0
- package/dist/resolver/index.d.ts.map +1 -0
- package/dist/resolver/index.js +2 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/resolver/internal/constants.d.ts +12 -0
- package/dist/resolver/internal/constants.d.ts.map +1 -0
- package/dist/resolver/internal/constants.js +8 -0
- package/dist/resolver/internal/constants.js.map +1 -0
- package/dist/resolver/internal/context.d.ts +8 -0
- package/dist/resolver/internal/context.d.ts.map +1 -0
- package/dist/resolver/internal/context.js +43 -0
- package/dist/resolver/internal/context.js.map +1 -0
- package/dist/resolver/internal/helpers.d.ts +16 -0
- package/dist/resolver/internal/helpers.d.ts.map +1 -0
- package/dist/resolver/internal/helpers.js +53 -0
- package/dist/resolver/internal/helpers.js.map +1 -0
- package/dist/resolver/internal/resolved-token.d.ts +24 -0
- package/dist/resolver/internal/resolved-token.d.ts.map +1 -0
- package/dist/resolver/internal/resolved-token.js +26 -0
- package/dist/resolver/internal/resolved-token.js.map +1 -0
- package/dist/resolver/types.d.ts +51 -0
- package/dist/resolver/types.d.ts.map +1 -0
- package/dist/resolver/types.js +2 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/session/internal/options.d.ts +16 -0
- package/dist/session/internal/options.d.ts.map +1 -0
- package/dist/session/internal/options.js +30 -0
- package/dist/session/internal/options.js.map +1 -0
- package/dist/session/types.d.ts +16 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session.d.ts +19 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +210 -0
- package/dist/session.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/json-pointer.d.ts +13 -0
- package/dist/utils/json-pointer.d.ts.map +1 -0
- package/dist/utils/json-pointer.js +89 -0
- package/dist/utils/json-pointer.js.map +1 -0
- package/dist/utils/source.d.ts +21 -0
- package/dist/utils/source.d.ts.map +1 -0
- package/dist/utils/source.js +125 -0
- package/dist/utils/source.js.map +1 -0
- package/dist/validation/schema-guard.d.ts +20 -0
- package/dist/validation/schema-guard.d.ts.map +1 -0
- package/dist/validation/schema-guard.js +205 -0
- package/dist/validation/schema-guard.js.map +1 -0
- package/package.json +49 -0
package/dist/session.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
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 { DefaultDocumentLoader, DocumentLoaderError } from './io/document-loader.js';
|
|
6
|
+
import { decodeDocument } from './io/decoder.js';
|
|
7
|
+
import { createDocumentResolver } from './resolver/index.js';
|
|
8
|
+
import { resolveOptions } from './session/internal/options.js';
|
|
9
|
+
async function* toAsyncIterable(inputs) {
|
|
10
|
+
if (typeof inputs[Symbol.asyncIterator] === 'function') {
|
|
11
|
+
for await (const value of inputs) {
|
|
12
|
+
yield value;
|
|
13
|
+
}
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
for (const value of inputs) {
|
|
17
|
+
yield value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class ParseSession {
|
|
21
|
+
options;
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
this.options = resolveOptions(options);
|
|
24
|
+
}
|
|
25
|
+
async parseDocument(input) {
|
|
26
|
+
const diagnostics = new DiagnosticBag();
|
|
27
|
+
const handle = await this.loadDocumentHandle(input, diagnostics);
|
|
28
|
+
if (!handle) {
|
|
29
|
+
return { diagnostics };
|
|
30
|
+
}
|
|
31
|
+
const cachedDocument = await this.getCachedDocument(handle, diagnostics);
|
|
32
|
+
const document = cachedDocument ?? (await this.decodeDocumentHandle(handle, diagnostics));
|
|
33
|
+
if (!document) {
|
|
34
|
+
return { diagnostics };
|
|
35
|
+
}
|
|
36
|
+
if (!cachedDocument) {
|
|
37
|
+
await this.storeDocumentInCache(document, diagnostics);
|
|
38
|
+
}
|
|
39
|
+
const schemaValid = this.validateDocumentSchema(document, diagnostics);
|
|
40
|
+
if (!schemaValid) {
|
|
41
|
+
return {
|
|
42
|
+
document,
|
|
43
|
+
diagnostics
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const normalised = normalizeDocument(document, {
|
|
47
|
+
extensions: this.options.plugins
|
|
48
|
+
});
|
|
49
|
+
diagnostics.addMany(normalised.diagnostics);
|
|
50
|
+
if (!normalised.ast) {
|
|
51
|
+
return {
|
|
52
|
+
document,
|
|
53
|
+
extensions: normalised.extensions,
|
|
54
|
+
diagnostics
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const graphResult = buildDocumentGraph(normalised.ast);
|
|
58
|
+
diagnostics.addMany(graphResult.diagnostics);
|
|
59
|
+
const graph = graphResult.graph;
|
|
60
|
+
const resolver = graph &&
|
|
61
|
+
createDocumentResolver(graph, {
|
|
62
|
+
context: this.options.overrideContext,
|
|
63
|
+
maxDepth: this.options.maxDepth,
|
|
64
|
+
document,
|
|
65
|
+
transforms: this.options.plugins?.transforms
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
document,
|
|
69
|
+
ast: normalised.ast,
|
|
70
|
+
graph,
|
|
71
|
+
resolver,
|
|
72
|
+
extensions: normalised.extensions,
|
|
73
|
+
diagnostics
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async parseCollection(inputs) {
|
|
77
|
+
const results = [];
|
|
78
|
+
const diagnostics = new DiagnosticBag();
|
|
79
|
+
for await (const input of toAsyncIterable(inputs)) {
|
|
80
|
+
const result = await this.parseDocument(input);
|
|
81
|
+
results.push(result);
|
|
82
|
+
diagnostics.extend(result.diagnostics);
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
results,
|
|
86
|
+
diagnostics
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async loadDocumentHandle(input, diagnostics) {
|
|
90
|
+
try {
|
|
91
|
+
return await this.options.loader.load(input);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (error instanceof DocumentLoaderError) {
|
|
95
|
+
diagnostics.add({
|
|
96
|
+
code: DiagnosticCodes.loader.TOO_LARGE,
|
|
97
|
+
message: error.message,
|
|
98
|
+
severity: 'error'
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
diagnostics.add({
|
|
103
|
+
code: DiagnosticCodes.loader.FAILED,
|
|
104
|
+
message: error instanceof Error ? error.message : 'Failed to load DTIF document.',
|
|
105
|
+
severity: 'error'
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async decodeDocumentHandle(handle, diagnostics) {
|
|
112
|
+
try {
|
|
113
|
+
return await decodeDocument(handle);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
diagnostics.add({
|
|
117
|
+
code: DiagnosticCodes.decoder.FAILED,
|
|
118
|
+
message: error instanceof Error ? error.message : 'Failed to decode DTIF document.',
|
|
119
|
+
severity: 'error'
|
|
120
|
+
});
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
validateDocumentSchema(document, diagnostics) {
|
|
125
|
+
try {
|
|
126
|
+
const result = this.options.schemaGuard.validate(document);
|
|
127
|
+
if (!result.valid) {
|
|
128
|
+
diagnostics.addMany(result.diagnostics);
|
|
129
|
+
}
|
|
130
|
+
return result.valid;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
diagnostics.add({
|
|
134
|
+
code: DiagnosticCodes.schemaGuard.FAILED,
|
|
135
|
+
message: error instanceof Error
|
|
136
|
+
? error.message
|
|
137
|
+
: 'Failed to validate DTIF document against the schema.',
|
|
138
|
+
severity: 'error'
|
|
139
|
+
});
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async getCachedDocument(handle, diagnostics) {
|
|
144
|
+
const cache = this.options.cache;
|
|
145
|
+
if (!cache) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const cached = await cache.get(handle.uri);
|
|
150
|
+
if (!cached) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
return areByteArraysEqual(cached.bytes, handle.bytes) ? cached : undefined;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
diagnostics.add({
|
|
157
|
+
code: DiagnosticCodes.core.CACHE_FAILED,
|
|
158
|
+
message: error instanceof Error
|
|
159
|
+
? `Failed to read DTIF document from cache: ${error.message}`
|
|
160
|
+
: 'Failed to read DTIF document from cache.',
|
|
161
|
+
severity: 'warning'
|
|
162
|
+
});
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
async storeDocumentInCache(document, diagnostics) {
|
|
167
|
+
const cache = this.options.cache;
|
|
168
|
+
if (!cache) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
await cache.set(document);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
diagnostics.add({
|
|
176
|
+
code: DiagnosticCodes.core.CACHE_FAILED,
|
|
177
|
+
message: error instanceof Error
|
|
178
|
+
? `Failed to update DTIF document cache: ${error.message}`
|
|
179
|
+
: 'Failed to update DTIF document cache.',
|
|
180
|
+
severity: 'warning'
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function areByteArraysEqual(left, right) {
|
|
186
|
+
if (left === right) {
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
if (left.byteLength !== right.byteLength) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
for (let index = 0; index < left.byteLength; index++) {
|
|
193
|
+
if (left[index] !== right[index]) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
export function createSession(options = {}) {
|
|
200
|
+
return new ParseSession(options);
|
|
201
|
+
}
|
|
202
|
+
export async function parseDocument(input, options) {
|
|
203
|
+
const session = createSession(options);
|
|
204
|
+
return session.parseDocument(input);
|
|
205
|
+
}
|
|
206
|
+
export async function parseCollection(inputs, options) {
|
|
207
|
+
const session = createSession(options);
|
|
208
|
+
return session.parseCollection(inputs);
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { DiagnosticBag } from './diagnostics/bag.js';
|
|
2
|
+
import type { DiagnosticCode } from './diagnostics/codes.js';
|
|
3
|
+
import type { DiagnosticSeverity } from './diagnostics/severity.js';
|
|
4
|
+
import type { DocumentAst } from './ast/nodes.js';
|
|
5
|
+
import type { DocumentGraph } from './graph/nodes.js';
|
|
6
|
+
import type { DocumentResolver } from './resolver/index.js';
|
|
7
|
+
import type { ExtensionEvaluation } from './plugins/index.js';
|
|
8
|
+
export type JsonPointer = `#${string}`;
|
|
9
|
+
export type ParseInput = string | Uint8Array | URL | ParseInputRecord;
|
|
10
|
+
export interface ParseInputRecord {
|
|
11
|
+
readonly uri?: string | URL;
|
|
12
|
+
readonly content: string | Uint8Array;
|
|
13
|
+
readonly contentType?: ContentType;
|
|
14
|
+
}
|
|
15
|
+
export type ContentType = 'application/json' | 'application/yaml';
|
|
16
|
+
export interface SourcePosition {
|
|
17
|
+
readonly offset: number;
|
|
18
|
+
readonly line: number;
|
|
19
|
+
readonly column: number;
|
|
20
|
+
}
|
|
21
|
+
export interface SourceSpan {
|
|
22
|
+
readonly uri: URL;
|
|
23
|
+
readonly start: SourcePosition;
|
|
24
|
+
readonly end: SourcePosition;
|
|
25
|
+
}
|
|
26
|
+
export interface SourceMap {
|
|
27
|
+
readonly uri: URL;
|
|
28
|
+
readonly pointers: ReadonlyMap<JsonPointer, SourceSpan>;
|
|
29
|
+
}
|
|
30
|
+
export interface RelatedInformation {
|
|
31
|
+
readonly message: string;
|
|
32
|
+
readonly pointer?: JsonPointer;
|
|
33
|
+
readonly span?: SourceSpan;
|
|
34
|
+
}
|
|
35
|
+
export interface Diagnostic {
|
|
36
|
+
readonly code: DiagnosticCode;
|
|
37
|
+
readonly message: string;
|
|
38
|
+
readonly severity: DiagnosticSeverity;
|
|
39
|
+
readonly pointer?: JsonPointer;
|
|
40
|
+
readonly span?: SourceSpan;
|
|
41
|
+
readonly related?: readonly RelatedInformation[];
|
|
42
|
+
}
|
|
43
|
+
export interface DocumentHandle {
|
|
44
|
+
readonly uri: URL;
|
|
45
|
+
readonly contentType: ContentType;
|
|
46
|
+
readonly bytes: Uint8Array;
|
|
47
|
+
}
|
|
48
|
+
export interface RawDocument extends DocumentHandle {
|
|
49
|
+
readonly text: string;
|
|
50
|
+
readonly data: unknown;
|
|
51
|
+
readonly sourceMap: SourceMap;
|
|
52
|
+
}
|
|
53
|
+
export interface DocumentCache {
|
|
54
|
+
get(uri: URL): Promise<RawDocument | undefined> | RawDocument | undefined;
|
|
55
|
+
set(document: RawDocument): Promise<void> | void;
|
|
56
|
+
delete?(uri: URL): Promise<void> | void;
|
|
57
|
+
clear?(): Promise<void> | void;
|
|
58
|
+
}
|
|
59
|
+
export interface ParseResult {
|
|
60
|
+
readonly document?: RawDocument;
|
|
61
|
+
readonly ast?: DocumentAst;
|
|
62
|
+
readonly graph?: DocumentGraph;
|
|
63
|
+
readonly resolver?: DocumentResolver;
|
|
64
|
+
readonly diagnostics: DiagnosticBag;
|
|
65
|
+
readonly extensions?: readonly ExtensionEvaluation[];
|
|
66
|
+
}
|
|
67
|
+
export interface ParseCollectionResult {
|
|
68
|
+
readonly results: readonly ParseResult[];
|
|
69
|
+
readonly diagnostics: DiagnosticBag;
|
|
70
|
+
}
|
|
71
|
+
export type { DiagnosticSeverity } from './diagnostics/severity.js';
|
|
72
|
+
export type { DiagnosticCode } from './diagnostics/codes.js';
|
|
73
|
+
export type { AstField, CollectionNode, DocumentAst, DocumentChildNode, NodeMetadata, OverrideFallbackNode, OverrideNode, TokenNode, AliasNode } from './ast/nodes.js';
|
|
74
|
+
export type { DocumentGraph, GraphNode, GraphNodeBase, GraphCollectionNode, GraphTokenNode, GraphAliasNode, GraphReferenceField, GraphReferenceTarget, GraphOverrideNode, GraphOverrideFallbackNode } from './graph/nodes.js';
|
|
75
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { JsonPointer } from '../types.js';
|
|
2
|
+
export declare const JSON_POINTER_ROOT: JsonPointer;
|
|
3
|
+
export declare function normalizeJsonPointer(pointer: string): JsonPointer;
|
|
4
|
+
export declare function isJsonPointer(value: unknown): value is JsonPointer;
|
|
5
|
+
export declare function encodeJsonPointerSegment(segment: string): string;
|
|
6
|
+
export declare function decodeJsonPointerSegment(segment: string): string;
|
|
7
|
+
export declare function splitJsonPointer(pointer: JsonPointer): string[];
|
|
8
|
+
export declare function joinJsonPointer(segments: Iterable<string>): JsonPointer;
|
|
9
|
+
export declare function appendJsonPointer(base: JsonPointer, ...segments: string[]): JsonPointer;
|
|
10
|
+
export declare function parentJsonPointer(pointer: JsonPointer): JsonPointer | undefined;
|
|
11
|
+
export declare function jsonPointerStartsWith(pointer: JsonPointer, prefix: JsonPointer): boolean;
|
|
12
|
+
export declare function tailJsonPointer(pointer: JsonPointer): string | undefined;
|
|
13
|
+
//# sourceMappingURL=json-pointer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-pointer.d.ts","sourceRoot":"","sources":["../../src/utils/json-pointer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,WAAiB,CAAC;AAIlD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAyBjE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAc/D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAOvF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAO/E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CASxF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAGxE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export const JSON_POINTER_ROOT = '#';
|
|
2
|
+
const ABSOLUTE_POINTER_PATTERN = /^#(?:$|(?:\/(?:[^~]|~0|~1)*)*)$/u;
|
|
3
|
+
export function normalizeJsonPointer(pointer) {
|
|
4
|
+
if (pointer === '' || pointer === JSON_POINTER_ROOT) {
|
|
5
|
+
return JSON_POINTER_ROOT;
|
|
6
|
+
}
|
|
7
|
+
if (pointer.startsWith('#/')) {
|
|
8
|
+
return `#${pointer.slice(1)}`;
|
|
9
|
+
}
|
|
10
|
+
if (pointer.startsWith('#')) {
|
|
11
|
+
const remainder = pointer.slice(1);
|
|
12
|
+
if (remainder.length === 0) {
|
|
13
|
+
return JSON_POINTER_ROOT;
|
|
14
|
+
}
|
|
15
|
+
if (remainder.startsWith('/')) {
|
|
16
|
+
return `#${remainder}`;
|
|
17
|
+
}
|
|
18
|
+
return `#/${remainder}`;
|
|
19
|
+
}
|
|
20
|
+
if (pointer.startsWith('/')) {
|
|
21
|
+
return `#${pointer}`;
|
|
22
|
+
}
|
|
23
|
+
return `#/${pointer}`;
|
|
24
|
+
}
|
|
25
|
+
export function isJsonPointer(value) {
|
|
26
|
+
if (typeof value !== 'string') {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const normalized = normalizeJsonPointer(value);
|
|
30
|
+
return ABSOLUTE_POINTER_PATTERN.test(normalized);
|
|
31
|
+
}
|
|
32
|
+
export function encodeJsonPointerSegment(segment) {
|
|
33
|
+
return segment.replaceAll('~', '~0').replaceAll('/', '~1');
|
|
34
|
+
}
|
|
35
|
+
export function decodeJsonPointerSegment(segment) {
|
|
36
|
+
return segment.replaceAll('~1', '/').replaceAll('~0', '~');
|
|
37
|
+
}
|
|
38
|
+
export function splitJsonPointer(pointer) {
|
|
39
|
+
const normalized = normalizeJsonPointer(pointer);
|
|
40
|
+
if (normalized === JSON_POINTER_ROOT) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const withoutPrefix = normalized.startsWith('#/') ? normalized.slice(2) : normalized.slice(1);
|
|
44
|
+
if (withoutPrefix === '') {
|
|
45
|
+
return [''];
|
|
46
|
+
}
|
|
47
|
+
return withoutPrefix.split('/').map(decodeJsonPointerSegment);
|
|
48
|
+
}
|
|
49
|
+
export function joinJsonPointer(segments) {
|
|
50
|
+
return buildPointerFromSegments(segments);
|
|
51
|
+
}
|
|
52
|
+
export function appendJsonPointer(base, ...segments) {
|
|
53
|
+
if (segments.length === 0) {
|
|
54
|
+
return normalizeJsonPointer(base);
|
|
55
|
+
}
|
|
56
|
+
const baseSegments = splitJsonPointer(base);
|
|
57
|
+
return buildPointerFromSegments([...baseSegments, ...segments]);
|
|
58
|
+
}
|
|
59
|
+
export function parentJsonPointer(pointer) {
|
|
60
|
+
const segments = splitJsonPointer(pointer);
|
|
61
|
+
if (segments.length === 0) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
segments.pop();
|
|
65
|
+
return buildPointerFromSegments(segments);
|
|
66
|
+
}
|
|
67
|
+
export function jsonPointerStartsWith(pointer, prefix) {
|
|
68
|
+
const pointerSegments = splitJsonPointer(pointer);
|
|
69
|
+
const prefixSegments = splitJsonPointer(prefix);
|
|
70
|
+
if (prefixSegments.length > pointerSegments.length) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return prefixSegments.every((segment, index) => segment === pointerSegments[index]);
|
|
74
|
+
}
|
|
75
|
+
export function tailJsonPointer(pointer) {
|
|
76
|
+
const segments = splitJsonPointer(pointer);
|
|
77
|
+
return segments.at(-1);
|
|
78
|
+
}
|
|
79
|
+
function buildPointerFromSegments(segments) {
|
|
80
|
+
const encoded = [];
|
|
81
|
+
for (const segment of segments) {
|
|
82
|
+
encoded.push(encodeJsonPointerSegment(String(segment)));
|
|
83
|
+
}
|
|
84
|
+
if (encoded.length === 0) {
|
|
85
|
+
return JSON_POINTER_ROOT;
|
|
86
|
+
}
|
|
87
|
+
return `#/${encoded.join('/')}`;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=json-pointer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-pointer.js","sourceRoot":"","sources":["../../src/utils/json-pointer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SourcePosition, SourceSpan } from '../types.js';
|
|
2
|
+
export declare const ZERO_SOURCE_POSITION: SourcePosition;
|
|
3
|
+
export declare function createSourcePosition(offset: number, line: number, column: number): SourcePosition;
|
|
4
|
+
export declare function cloneSourcePosition(position: SourcePosition): SourcePosition;
|
|
5
|
+
export declare function compareSourcePositions(a: SourcePosition, b: SourcePosition): number;
|
|
6
|
+
export declare function minSourcePosition(...positions: readonly SourcePosition[]): SourcePosition | undefined;
|
|
7
|
+
export declare function maxSourcePosition(...positions: readonly SourcePosition[]): SourcePosition | undefined;
|
|
8
|
+
export declare function createSourceSpan(uri: URL, start: SourcePosition, end: SourcePosition): SourceSpan;
|
|
9
|
+
export declare function cloneSourceSpan(span: SourceSpan): SourceSpan;
|
|
10
|
+
export declare function spanLength(span: SourceSpan): number;
|
|
11
|
+
export declare function spanContainsPosition(span: SourceSpan, position: SourcePosition): boolean;
|
|
12
|
+
export declare function spansOverlap(a: SourceSpan, b: SourceSpan): boolean;
|
|
13
|
+
export declare function unionSourceSpans(spans: Iterable<SourceSpan>): SourceSpan | undefined;
|
|
14
|
+
export declare function translateSourceSpan(span: SourceSpan, delta: {
|
|
15
|
+
offset?: number;
|
|
16
|
+
line?: number;
|
|
17
|
+
column?: number;
|
|
18
|
+
}): SourceSpan;
|
|
19
|
+
export declare function isSourceSpan(value: unknown): value is SourceSpan;
|
|
20
|
+
export declare function isSourcePosition(value: unknown): value is SourcePosition;
|
|
21
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/utils/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,eAAO,MAAM,oBAAoB,EAAE,cAIjC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAMjG;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAWnF;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,SAAS,EAAE,SAAS,cAAc,EAAE,GACtC,cAAc,GAAG,SAAS,CAO5B;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,SAAS,EAAE,SAAS,cAAc,EAAE,GACtC,cAAc,GAAG,SAAS,CAO5B;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,UAAU,CAOjG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAE5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAKxF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,SAAS,CAepF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,UAAU,CAkBZ;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAOhE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAUxE"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export const ZERO_SOURCE_POSITION = Object.freeze({
|
|
2
|
+
offset: 0,
|
|
3
|
+
line: 1,
|
|
4
|
+
column: 1
|
|
5
|
+
});
|
|
6
|
+
export function createSourcePosition(offset, line, column) {
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
offset: normalizeOffset(offset),
|
|
9
|
+
line: normalizeLine(line),
|
|
10
|
+
column: normalizeColumn(column)
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export function cloneSourcePosition(position) {
|
|
14
|
+
return createSourcePosition(position.offset, position.line, position.column);
|
|
15
|
+
}
|
|
16
|
+
export function compareSourcePositions(a, b) {
|
|
17
|
+
if (a.offset !== b.offset) {
|
|
18
|
+
return a.offset - b.offset;
|
|
19
|
+
}
|
|
20
|
+
if (a.line !== b.line) {
|
|
21
|
+
return a.line - b.line;
|
|
22
|
+
}
|
|
23
|
+
if (a.column !== b.column) {
|
|
24
|
+
return a.column - b.column;
|
|
25
|
+
}
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
export function minSourcePosition(...positions) {
|
|
29
|
+
if (positions.length === 0) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return positions.reduce((min, current) => compareSourcePositions(current, min) < 0 ? current : min);
|
|
33
|
+
}
|
|
34
|
+
export function maxSourcePosition(...positions) {
|
|
35
|
+
if (positions.length === 0) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
return positions.reduce((max, current) => compareSourcePositions(current, max) > 0 ? current : max);
|
|
39
|
+
}
|
|
40
|
+
export function createSourceSpan(uri, start, end) {
|
|
41
|
+
const [normalizedStart, normalizedEnd] = orderSpanEndpoints(start, end);
|
|
42
|
+
return Object.freeze({
|
|
43
|
+
uri,
|
|
44
|
+
start: normalizedStart,
|
|
45
|
+
end: normalizedEnd
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export function cloneSourceSpan(span) {
|
|
49
|
+
return createSourceSpan(span.uri, span.start, span.end);
|
|
50
|
+
}
|
|
51
|
+
export function spanLength(span) {
|
|
52
|
+
return Math.max(0, span.end.offset - span.start.offset);
|
|
53
|
+
}
|
|
54
|
+
export function spanContainsPosition(span, position) {
|
|
55
|
+
return (compareSourcePositions(position, span.start) >= 0 &&
|
|
56
|
+
compareSourcePositions(position, span.end) <= 0);
|
|
57
|
+
}
|
|
58
|
+
export function spansOverlap(a, b) {
|
|
59
|
+
if (a.uri.href !== b.uri.href) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return compareSourcePositions(a.start, b.end) <= 0 && compareSourcePositions(a.end, b.start) >= 0;
|
|
63
|
+
}
|
|
64
|
+
export function unionSourceSpans(spans) {
|
|
65
|
+
let result;
|
|
66
|
+
for (const span of spans) {
|
|
67
|
+
if (!result) {
|
|
68
|
+
result = span;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (span.uri.href !== result.uri.href) {
|
|
72
|
+
throw new Error('Cannot union spans from different documents.');
|
|
73
|
+
}
|
|
74
|
+
const start = compareSourcePositions(span.start, result.start) < 0 ? span.start : result.start;
|
|
75
|
+
const end = compareSourcePositions(span.end, result.end) > 0 ? span.end : result.end;
|
|
76
|
+
result = createSourceSpan(result.uri, start, end);
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
export function translateSourceSpan(span, delta) {
|
|
81
|
+
const offsetDelta = toInteger(delta.offset ?? 0);
|
|
82
|
+
const lineDelta = toInteger(delta.line ?? 0);
|
|
83
|
+
const columnDelta = toInteger(delta.column ?? 0);
|
|
84
|
+
const newStart = createSourcePosition(span.start.offset + offsetDelta, Math.max(1, span.start.line + lineDelta), Math.max(1, span.start.column + columnDelta));
|
|
85
|
+
const newEnd = createSourcePosition(span.end.offset + offsetDelta, Math.max(1, span.end.line + lineDelta), Math.max(1, span.end.column + columnDelta));
|
|
86
|
+
return createSourceSpan(span.uri, newStart, newEnd);
|
|
87
|
+
}
|
|
88
|
+
export function isSourceSpan(value) {
|
|
89
|
+
if (!value || typeof value !== 'object') {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const span = value;
|
|
93
|
+
return span.uri instanceof URL && isSourcePosition(span.start) && isSourcePosition(span.end);
|
|
94
|
+
}
|
|
95
|
+
export function isSourcePosition(value) {
|
|
96
|
+
if (!value || typeof value !== 'object') {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
const position = value;
|
|
100
|
+
return (typeof position.offset === 'number' &&
|
|
101
|
+
typeof position.line === 'number' &&
|
|
102
|
+
typeof position.column === 'number');
|
|
103
|
+
}
|
|
104
|
+
function orderSpanEndpoints(start, end) {
|
|
105
|
+
if (compareSourcePositions(start, end) <= 0) {
|
|
106
|
+
return [start, end];
|
|
107
|
+
}
|
|
108
|
+
return [end, start];
|
|
109
|
+
}
|
|
110
|
+
function normalizeOffset(offset) {
|
|
111
|
+
return Math.max(0, toInteger(offset));
|
|
112
|
+
}
|
|
113
|
+
function normalizeLine(line) {
|
|
114
|
+
return Math.max(1, toInteger(line));
|
|
115
|
+
}
|
|
116
|
+
function normalizeColumn(column) {
|
|
117
|
+
return Math.max(1, toInteger(column));
|
|
118
|
+
}
|
|
119
|
+
function toInteger(value) {
|
|
120
|
+
if (!Number.isFinite(value)) {
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
return Math.trunc(value);
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/utils/source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CreateDtifValidatorOptions, DtifValidator } from '@lapidist/dtif-validator';
|
|
2
|
+
import type { Diagnostic, RawDocument } from '../types.js';
|
|
3
|
+
export interface SchemaGuardOptions extends CreateDtifValidatorOptions {
|
|
4
|
+
readonly validator?: DtifValidator;
|
|
5
|
+
}
|
|
6
|
+
export interface SchemaGuardResult {
|
|
7
|
+
readonly valid: boolean;
|
|
8
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
9
|
+
}
|
|
10
|
+
export declare class SchemaGuardError extends Error {
|
|
11
|
+
constructor(message: string, options?: ErrorOptions);
|
|
12
|
+
}
|
|
13
|
+
export declare class SchemaGuard {
|
|
14
|
+
private readonly validator;
|
|
15
|
+
constructor(options?: SchemaGuardOptions);
|
|
16
|
+
validate(document: RawDocument): SchemaGuardResult;
|
|
17
|
+
private createDiagnostic;
|
|
18
|
+
private resolveSpan;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=schema-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-guard.d.ts","sourceRoot":"","sources":["../../src/validation/schema-guard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI1F,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAkB3F,MAAM,WAAW,kBAAmB,SAAQ,0BAA0B;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAwCD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,OAAO,GAAE,kBAAuB;IAK5C,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,iBAAiB;IAsBlD,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,WAAW;CAIpB"}
|