@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
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { compareDiagnosticSeverity } from './severity.js';
|
|
2
|
+
export class DiagnosticBag {
|
|
3
|
+
diagnostics = [];
|
|
4
|
+
counts = {
|
|
5
|
+
error: 0,
|
|
6
|
+
warning: 0,
|
|
7
|
+
info: 0
|
|
8
|
+
};
|
|
9
|
+
constructor(initial) {
|
|
10
|
+
if (initial) {
|
|
11
|
+
this.addMany(initial);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
get size() {
|
|
15
|
+
return this.diagnostics.length;
|
|
16
|
+
}
|
|
17
|
+
get isEmpty() {
|
|
18
|
+
return this.size === 0;
|
|
19
|
+
}
|
|
20
|
+
hasSeverity(severity) {
|
|
21
|
+
return this.counts[severity] > 0;
|
|
22
|
+
}
|
|
23
|
+
hasErrors() {
|
|
24
|
+
return this.counts.error > 0;
|
|
25
|
+
}
|
|
26
|
+
get errorCount() {
|
|
27
|
+
return this.counts.error;
|
|
28
|
+
}
|
|
29
|
+
get warningCount() {
|
|
30
|
+
return this.counts.warning;
|
|
31
|
+
}
|
|
32
|
+
get infoCount() {
|
|
33
|
+
return this.counts.info;
|
|
34
|
+
}
|
|
35
|
+
count(severity) {
|
|
36
|
+
if (!severity) {
|
|
37
|
+
return this.size;
|
|
38
|
+
}
|
|
39
|
+
return this.counts[severity];
|
|
40
|
+
}
|
|
41
|
+
highestSeverity() {
|
|
42
|
+
let highest;
|
|
43
|
+
for (const diagnostic of this.diagnostics) {
|
|
44
|
+
if (!highest || compareDiagnosticSeverity(diagnostic.severity, highest) < 0) {
|
|
45
|
+
highest = diagnostic.severity;
|
|
46
|
+
if (highest === 'error') {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return highest;
|
|
52
|
+
}
|
|
53
|
+
add(diagnostic) {
|
|
54
|
+
const normalized = freezeDiagnostic(diagnostic);
|
|
55
|
+
this.diagnostics.push(normalized);
|
|
56
|
+
this.counts[normalized.severity]++;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
addMany(diagnostics) {
|
|
60
|
+
for (const diagnostic of diagnostics) {
|
|
61
|
+
this.add(diagnostic);
|
|
62
|
+
}
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
extend(other) {
|
|
66
|
+
if (other instanceof DiagnosticBag) {
|
|
67
|
+
return this.addMany(other.diagnostics);
|
|
68
|
+
}
|
|
69
|
+
return this.addMany(other);
|
|
70
|
+
}
|
|
71
|
+
clear() {
|
|
72
|
+
this.diagnostics.length = 0;
|
|
73
|
+
this.counts.error = 0;
|
|
74
|
+
this.counts.warning = 0;
|
|
75
|
+
this.counts.info = 0;
|
|
76
|
+
}
|
|
77
|
+
toArray() {
|
|
78
|
+
return this.diagnostics.slice();
|
|
79
|
+
}
|
|
80
|
+
[Symbol.iterator]() {
|
|
81
|
+
return this.diagnostics[Symbol.iterator]();
|
|
82
|
+
}
|
|
83
|
+
forEach(callback) {
|
|
84
|
+
this.diagnostics.forEach(callback);
|
|
85
|
+
}
|
|
86
|
+
filter(predicate) {
|
|
87
|
+
return this.diagnostics.filter(predicate);
|
|
88
|
+
}
|
|
89
|
+
toJSON() {
|
|
90
|
+
return this.toArray();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function freezeDiagnostic(diagnostic) {
|
|
94
|
+
const related = diagnostic.related?.map((info) => Object.freeze({ ...info }));
|
|
95
|
+
const normalized = {
|
|
96
|
+
...diagnostic,
|
|
97
|
+
related: related ? Object.freeze(related) : undefined
|
|
98
|
+
};
|
|
99
|
+
return Object.freeze(normalized);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=bag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bag.js","sourceRoot":"","sources":["../../src/diagnostics/bag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export type DiagnosticCode = `DTIF${number}${number}${number}${number}`;
|
|
2
|
+
export declare const DiagnosticDomain: {
|
|
3
|
+
readonly Core: 0;
|
|
4
|
+
readonly Resolver: 1;
|
|
5
|
+
readonly Loader: 2;
|
|
6
|
+
readonly Decoder: 3;
|
|
7
|
+
readonly SchemaGuard: 4;
|
|
8
|
+
readonly Normaliser: 5;
|
|
9
|
+
readonly Graph: 6;
|
|
10
|
+
readonly Outputs: 7;
|
|
11
|
+
readonly Plugins: 8;
|
|
12
|
+
};
|
|
13
|
+
export type DiagnosticDomainKey = keyof typeof DiagnosticDomain;
|
|
14
|
+
export type DiagnosticDomainValue = (typeof DiagnosticDomain)[DiagnosticDomainKey];
|
|
15
|
+
export type DiagnosticDomainInput = DiagnosticDomainKey | DiagnosticDomainValue;
|
|
16
|
+
export declare function isDiagnosticCode(value: unknown): value is DiagnosticCode;
|
|
17
|
+
export declare function formatDiagnosticCode(domain: DiagnosticDomainInput, major: number, minor?: number): DiagnosticCode;
|
|
18
|
+
export declare const DiagnosticCodes: {
|
|
19
|
+
readonly core: {
|
|
20
|
+
readonly INTERNAL_ERROR: `DTIF${number}${number}${number}${number}`;
|
|
21
|
+
readonly NOT_IMPLEMENTED: `DTIF${number}${number}${number}${number}`;
|
|
22
|
+
readonly CACHE_FAILED: `DTIF${number}${number}${number}${number}`;
|
|
23
|
+
};
|
|
24
|
+
readonly loader: {
|
|
25
|
+
readonly FAILED: `DTIF${number}${number}${number}${number}`;
|
|
26
|
+
readonly TOO_LARGE: `DTIF${number}${number}${number}${number}`;
|
|
27
|
+
};
|
|
28
|
+
readonly decoder: {
|
|
29
|
+
readonly FAILED: `DTIF${number}${number}${number}${number}`;
|
|
30
|
+
};
|
|
31
|
+
readonly schemaGuard: {
|
|
32
|
+
readonly FAILED: `DTIF${number}${number}${number}${number}`;
|
|
33
|
+
readonly INVALID_DOCUMENT: `DTIF${number}${number}${number}${number}`;
|
|
34
|
+
};
|
|
35
|
+
readonly normaliser: {
|
|
36
|
+
readonly FAILED: `DTIF${number}${number}${number}${number}`;
|
|
37
|
+
readonly INVALID_ROOT: `DTIF${number}${number}${number}${number}`;
|
|
38
|
+
readonly INVALID_NODE: `DTIF${number}${number}${number}${number}`;
|
|
39
|
+
readonly INVALID_MEMBER_TYPE: `DTIF${number}${number}${number}${number}`;
|
|
40
|
+
readonly MISSING_VALUE: `DTIF${number}${number}${number}${number}`;
|
|
41
|
+
readonly MISSING_ALIAS_TARGET: `DTIF${number}${number}${number}${number}`;
|
|
42
|
+
readonly ALIAS_MISSING_TYPE: `DTIF${number}${number}${number}${number}`;
|
|
43
|
+
readonly INVALID_OVERRIDE: `DTIF${number}${number}${number}${number}`;
|
|
44
|
+
readonly MISSING_REQUIRED_MEMBER: `DTIF${number}${number}${number}${number}`;
|
|
45
|
+
readonly INVALID_EXTENSIONS: `DTIF${number}${number}${number}${number}`;
|
|
46
|
+
readonly INVALID_METADATA_COMBINATION: `DTIF${number}${number}${number}${number}`;
|
|
47
|
+
};
|
|
48
|
+
readonly graph: {
|
|
49
|
+
readonly FAILED: `DTIF${number}${number}${number}${number}`;
|
|
50
|
+
readonly DUPLICATE_POINTER: `DTIF${number}${number}${number}${number}`;
|
|
51
|
+
readonly INVALID_REFERENCE: `DTIF${number}${number}${number}${number}`;
|
|
52
|
+
readonly MISSING_TARGET: `DTIF${number}${number}${number}${number}`;
|
|
53
|
+
readonly INVALID_TARGET_KIND: `DTIF${number}${number}${number}${number}`;
|
|
54
|
+
};
|
|
55
|
+
readonly resolver: {
|
|
56
|
+
readonly FAILED: `DTIF${number}${number}${number}${number}`;
|
|
57
|
+
readonly UNKNOWN_POINTER: `DTIF${number}${number}${number}${number}`;
|
|
58
|
+
readonly INVALID_NODE_KIND: `DTIF${number}${number}${number}${number}`;
|
|
59
|
+
readonly CYCLE_DETECTED: `DTIF${number}${number}${number}${number}`;
|
|
60
|
+
readonly EXTERNAL_REFERENCE: `DTIF${number}${number}${number}${number}`;
|
|
61
|
+
readonly MISSING_BASE_VALUE: `DTIF${number}${number}${number}${number}`;
|
|
62
|
+
readonly TARGET_TYPE_MISMATCH: `DTIF${number}${number}${number}${number}`;
|
|
63
|
+
readonly FALLBACK_EXHAUSTED: `DTIF${number}${number}${number}${number}`;
|
|
64
|
+
readonly OVERRIDE_FAILED: `DTIF${number}${number}${number}${number}`;
|
|
65
|
+
readonly MAX_DEPTH_EXCEEDED: `DTIF${number}${number}${number}${number}`;
|
|
66
|
+
};
|
|
67
|
+
readonly plugins: {
|
|
68
|
+
readonly EXTENSION_FAILED: `DTIF${number}${number}${number}${number}`;
|
|
69
|
+
readonly RESOLUTION_FAILED: `DTIF${number}${number}${number}${number}`;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/diagnostics/codes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,OAAO,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAIxE,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,mBAAmB,CAAC,CAAC;AACnF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAEhF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,GACR,cAAc,CAYhB;AAoBD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDuC,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const DIAGNOSTIC_CODE_PATTERN = /^DTIF\d{4}$/u;
|
|
2
|
+
export const DiagnosticDomain = {
|
|
3
|
+
Core: 0,
|
|
4
|
+
Resolver: 1,
|
|
5
|
+
Loader: 2,
|
|
6
|
+
Decoder: 3,
|
|
7
|
+
SchemaGuard: 4,
|
|
8
|
+
Normaliser: 5,
|
|
9
|
+
Graph: 6,
|
|
10
|
+
Outputs: 7,
|
|
11
|
+
Plugins: 8
|
|
12
|
+
};
|
|
13
|
+
export function isDiagnosticCode(value) {
|
|
14
|
+
return typeof value === 'string' && DIAGNOSTIC_CODE_PATTERN.test(value);
|
|
15
|
+
}
|
|
16
|
+
export function formatDiagnosticCode(domain, major, minor = 0) {
|
|
17
|
+
const domainValue = resolveDiagnosticDomain(domain);
|
|
18
|
+
assertIntegerInRange(domainValue, 0, 9, 'domain');
|
|
19
|
+
assertIntegerInRange(major, 0, 99, 'major');
|
|
20
|
+
assertIntegerInRange(minor, 0, 9, 'minor');
|
|
21
|
+
const domainPart = String(domainValue);
|
|
22
|
+
const majorPart = major.toString().padStart(2, '0');
|
|
23
|
+
const minorPart = String(minor);
|
|
24
|
+
return `DTIF${domainPart}${majorPart}${minorPart}`;
|
|
25
|
+
}
|
|
26
|
+
function resolveDiagnosticDomain(domain) {
|
|
27
|
+
if (typeof domain === 'number') {
|
|
28
|
+
return domain;
|
|
29
|
+
}
|
|
30
|
+
if (domain in DiagnosticDomain) {
|
|
31
|
+
return DiagnosticDomain[domain];
|
|
32
|
+
}
|
|
33
|
+
throw new RangeError(`Unknown diagnostic domain: ${String(domain)}`);
|
|
34
|
+
}
|
|
35
|
+
function assertIntegerInRange(value, min, max, label) {
|
|
36
|
+
if (!Number.isInteger(value) || value < min || value > max) {
|
|
37
|
+
throw new RangeError(`${label} must be an integer in the range [${min}, ${max}]`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export const DiagnosticCodes = {
|
|
41
|
+
core: {
|
|
42
|
+
INTERNAL_ERROR: formatDiagnosticCode('Core', 0, 0),
|
|
43
|
+
NOT_IMPLEMENTED: formatDiagnosticCode('Core', 0, 1),
|
|
44
|
+
CACHE_FAILED: formatDiagnosticCode('Core', 0, 2)
|
|
45
|
+
},
|
|
46
|
+
loader: {
|
|
47
|
+
FAILED: formatDiagnosticCode('Loader', 0, 0),
|
|
48
|
+
TOO_LARGE: formatDiagnosticCode('Loader', 0, 1)
|
|
49
|
+
},
|
|
50
|
+
decoder: {
|
|
51
|
+
FAILED: formatDiagnosticCode('Decoder', 0, 0)
|
|
52
|
+
},
|
|
53
|
+
schemaGuard: {
|
|
54
|
+
FAILED: formatDiagnosticCode('SchemaGuard', 0, 0),
|
|
55
|
+
INVALID_DOCUMENT: formatDiagnosticCode('SchemaGuard', 1, 0)
|
|
56
|
+
},
|
|
57
|
+
normaliser: {
|
|
58
|
+
FAILED: formatDiagnosticCode('Normaliser', 0, 0),
|
|
59
|
+
INVALID_ROOT: formatDiagnosticCode('Normaliser', 1, 0),
|
|
60
|
+
INVALID_NODE: formatDiagnosticCode('Normaliser', 1, 1),
|
|
61
|
+
INVALID_MEMBER_TYPE: formatDiagnosticCode('Normaliser', 1, 2),
|
|
62
|
+
MISSING_VALUE: formatDiagnosticCode('Normaliser', 2, 0),
|
|
63
|
+
MISSING_ALIAS_TARGET: formatDiagnosticCode('Normaliser', 2, 1),
|
|
64
|
+
ALIAS_MISSING_TYPE: formatDiagnosticCode('Normaliser', 2, 2),
|
|
65
|
+
INVALID_OVERRIDE: formatDiagnosticCode('Normaliser', 3, 0),
|
|
66
|
+
MISSING_REQUIRED_MEMBER: formatDiagnosticCode('Normaliser', 3, 1),
|
|
67
|
+
INVALID_EXTENSIONS: formatDiagnosticCode('Normaliser', 4, 0),
|
|
68
|
+
INVALID_METADATA_COMBINATION: formatDiagnosticCode('Normaliser', 4, 1)
|
|
69
|
+
},
|
|
70
|
+
graph: {
|
|
71
|
+
FAILED: formatDiagnosticCode('Graph', 0, 0),
|
|
72
|
+
DUPLICATE_POINTER: formatDiagnosticCode('Graph', 1, 0),
|
|
73
|
+
INVALID_REFERENCE: formatDiagnosticCode('Graph', 1, 1),
|
|
74
|
+
MISSING_TARGET: formatDiagnosticCode('Graph', 1, 2),
|
|
75
|
+
INVALID_TARGET_KIND: formatDiagnosticCode('Graph', 1, 3)
|
|
76
|
+
},
|
|
77
|
+
resolver: {
|
|
78
|
+
FAILED: formatDiagnosticCode('Resolver', 0, 0),
|
|
79
|
+
UNKNOWN_POINTER: formatDiagnosticCode('Resolver', 1, 0),
|
|
80
|
+
INVALID_NODE_KIND: formatDiagnosticCode('Resolver', 1, 1),
|
|
81
|
+
CYCLE_DETECTED: formatDiagnosticCode('Resolver', 1, 2),
|
|
82
|
+
EXTERNAL_REFERENCE: formatDiagnosticCode('Resolver', 1, 3),
|
|
83
|
+
MISSING_BASE_VALUE: formatDiagnosticCode('Resolver', 2, 0),
|
|
84
|
+
TARGET_TYPE_MISMATCH: formatDiagnosticCode('Resolver', 2, 1),
|
|
85
|
+
FALLBACK_EXHAUSTED: formatDiagnosticCode('Resolver', 3, 0),
|
|
86
|
+
OVERRIDE_FAILED: formatDiagnosticCode('Resolver', 3, 1),
|
|
87
|
+
MAX_DEPTH_EXCEEDED: formatDiagnosticCode('Resolver', 4, 0)
|
|
88
|
+
},
|
|
89
|
+
plugins: {
|
|
90
|
+
EXTENSION_FAILED: formatDiagnosticCode('Plugins', 0, 0),
|
|
91
|
+
RESOLUTION_FAILED: formatDiagnosticCode('Plugins', 0, 1)
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../../src/diagnostics/codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const DIAGNOSTIC_SEVERITIES: readonly ["error", "warning", "info"];
|
|
2
|
+
export type DiagnosticSeverity = (typeof DIAGNOSTIC_SEVERITIES)[number];
|
|
3
|
+
export declare function isDiagnosticSeverity(value: unknown): value is DiagnosticSeverity;
|
|
4
|
+
export declare function compareDiagnosticSeverity(a: DiagnosticSeverity, b: DiagnosticSeverity): number;
|
|
5
|
+
export declare function maxDiagnosticSeverity(...severities: readonly DiagnosticSeverity[]): DiagnosticSeverity | undefined;
|
|
6
|
+
export declare function minDiagnosticSeverity(...severities: readonly DiagnosticSeverity[]): DiagnosticSeverity | undefined;
|
|
7
|
+
export declare function severityWeight(severity: DiagnosticSeverity): number;
|
|
8
|
+
//# sourceMappingURL=severity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../src/diagnostics/severity.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,uCAAwC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAUxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAE9F;AAED,wBAAgB,qBAAqB,CACnC,GAAG,UAAU,EAAE,SAAS,kBAAkB,EAAE,GAC3C,kBAAkB,GAAG,SAAS,CAUhC;AAED,wBAAgB,qBAAqB,CACnC,GAAG,UAAU,EAAE,SAAS,kBAAkB,EAAE,GAC3C,kBAAkB,GAAG,SAAS,CAUhC;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAEnE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const DIAGNOSTIC_SEVERITIES = ['error', 'warning', 'info'];
|
|
2
|
+
const SEVERITY_TO_WEIGHT = {
|
|
3
|
+
error: 0,
|
|
4
|
+
warning: 1,
|
|
5
|
+
info: 2
|
|
6
|
+
};
|
|
7
|
+
const SEVERITY_SET = new Set(DIAGNOSTIC_SEVERITIES);
|
|
8
|
+
export function isDiagnosticSeverity(value) {
|
|
9
|
+
return typeof value === 'string' && SEVERITY_SET.has(value);
|
|
10
|
+
}
|
|
11
|
+
export function compareDiagnosticSeverity(a, b) {
|
|
12
|
+
return SEVERITY_TO_WEIGHT[a] - SEVERITY_TO_WEIGHT[b];
|
|
13
|
+
}
|
|
14
|
+
export function maxDiagnosticSeverity(...severities) {
|
|
15
|
+
let max;
|
|
16
|
+
for (const severity of severities) {
|
|
17
|
+
if (!max || compareDiagnosticSeverity(severity, max) < 0) {
|
|
18
|
+
max = severity;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return max;
|
|
22
|
+
}
|
|
23
|
+
export function minDiagnosticSeverity(...severities) {
|
|
24
|
+
let min;
|
|
25
|
+
for (const severity of severities) {
|
|
26
|
+
if (!min || compareDiagnosticSeverity(severity, min) > 0) {
|
|
27
|
+
min = severity;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return min;
|
|
31
|
+
}
|
|
32
|
+
export function severityWeight(severity) {
|
|
33
|
+
return SEVERITY_TO_WEIGHT[severity];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=severity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"severity.js","sourceRoot":"","sources":["../../src/diagnostics/severity.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAI3E,MAAM,kBAAkB,GAAuC;IAC7D,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAqB,qBAAqB,CAAC,CAAC;AAExE,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,KAA2B,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAqB,EAAE,CAAqB;IACpF,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAG,UAAyC;IAE5C,IAAI,GAAmC,CAAC;IAExC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,IAAI,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,GAAG,GAAG,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAG,UAAyC;IAE5C,IAAI,GAAmC,CAAC;IAExC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,IAAI,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,GAAG,GAAG,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAA4B;IACzD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Diagnostic, JsonPointer, SourceSpan } from '../../types.js';
|
|
2
|
+
import type { DocumentAst, DocumentGraph, GraphNode } from '../nodes.js';
|
|
3
|
+
export interface GraphBuilderResult {
|
|
4
|
+
readonly graph?: DocumentGraph;
|
|
5
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
6
|
+
}
|
|
7
|
+
export interface GraphBuilderContext {
|
|
8
|
+
readonly ast: DocumentAst;
|
|
9
|
+
readonly diagnostics: Diagnostic[];
|
|
10
|
+
readonly nodes: Map<JsonPointer, GraphNode>;
|
|
11
|
+
readonly pendingReferences: PendingInternalReference[];
|
|
12
|
+
}
|
|
13
|
+
export interface PendingInternalReference {
|
|
14
|
+
readonly fieldPointer: JsonPointer;
|
|
15
|
+
readonly span?: SourceSpan;
|
|
16
|
+
readonly target: JsonPointer;
|
|
17
|
+
readonly allowedKinds: readonly GraphNode['kind'][];
|
|
18
|
+
readonly label: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function createGraphBuilderContext(ast: DocumentAst): GraphBuilderContext;
|
|
21
|
+
export declare function finalizeResult(context: GraphBuilderContext, graph: DocumentGraph | undefined): GraphBuilderResult;
|
|
22
|
+
export declare function recordFailure(context: GraphBuilderContext, error: unknown): void;
|
|
23
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/graph/builder/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB,CAO/E;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,aAAa,GAAG,SAAS,GAC/B,kBAAkB,CAUpB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAOhF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DiagnosticCodes } from '../../diagnostics/codes.js';
|
|
2
|
+
import { JSON_POINTER_ROOT } from '../../utils/json-pointer.js';
|
|
3
|
+
const EMPTY_DIAGNOSTICS = Object.freeze([]);
|
|
4
|
+
export function createGraphBuilderContext(ast) {
|
|
5
|
+
return {
|
|
6
|
+
ast,
|
|
7
|
+
diagnostics: [],
|
|
8
|
+
nodes: new Map(),
|
|
9
|
+
pendingReferences: []
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function finalizeResult(context, graph) {
|
|
13
|
+
const diagnostics = context.diagnostics.length === 0
|
|
14
|
+
? EMPTY_DIAGNOSTICS
|
|
15
|
+
: Object.freeze(context.diagnostics.map((diagnostic) => Object.freeze(diagnostic)));
|
|
16
|
+
return {
|
|
17
|
+
graph,
|
|
18
|
+
diagnostics
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function recordFailure(context, error) {
|
|
22
|
+
context.diagnostics.push({
|
|
23
|
+
code: DiagnosticCodes.graph.FAILED,
|
|
24
|
+
message: error instanceof Error ? error.message : 'Failed to build document graph.',
|
|
25
|
+
severity: 'error',
|
|
26
|
+
pointer: JSON_POINTER_ROOT
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/graph/builder/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAsBhE,MAAM,iBAAiB,GAA0B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEnE,MAAM,UAAU,yBAAyB,CAAC,GAAgB;IACxD,OAAO;QACL,GAAG;QACH,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAA4B,EAC5B,KAAgC;IAEhC,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAC9B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAExF,OAAO;QACL,KAAK;QACL,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA4B,EAAE,KAAc;IACxE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM;QAClC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC;QACnF,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JsonPointer } from '../../types.js';
|
|
2
|
+
import type { DocumentChildNode, GraphNode } from '../nodes.js';
|
|
3
|
+
import type { GraphBuilderContext } from './context.js';
|
|
4
|
+
export declare function buildNodes(context: GraphBuilderContext, children: readonly DocumentChildNode[], parentPointer: JsonPointer): readonly JsonPointer[];
|
|
5
|
+
export declare function createGraphNode(context: GraphBuilderContext, child: DocumentChildNode, parentPointer: JsonPointer): GraphNode | undefined;
|
|
6
|
+
//# sourceMappingURL=nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/graph/builder/nodes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EAEjB,SAAS,EAGV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMxD,wBAAgB,UAAU,CACxB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,aAAa,EAAE,WAAW,GACzB,SAAS,WAAW,EAAE,CAexB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,iBAAiB,EACxB,aAAa,EAAE,WAAW,GACzB,SAAS,GAAG,SAAS,CAqCvB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { DiagnosticCodes } from '../../diagnostics/codes.js';
|
|
2
|
+
import { splitJsonPointer } from '../../utils/json-pointer.js';
|
|
3
|
+
import { createReferenceField, NON_COLLECTION_NODE_KINDS } from './references.js';
|
|
4
|
+
const EMPTY_POINTERS = Object.freeze([]);
|
|
5
|
+
export function buildNodes(context, children, parentPointer) {
|
|
6
|
+
if (children.length === 0) {
|
|
7
|
+
return EMPTY_POINTERS;
|
|
8
|
+
}
|
|
9
|
+
const childPointers = [];
|
|
10
|
+
for (const child of children) {
|
|
11
|
+
const node = createGraphNode(context, child, parentPointer);
|
|
12
|
+
if (node) {
|
|
13
|
+
childPointers.push(node.pointer);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return childPointers.length === 0 ? EMPTY_POINTERS : Object.freeze(childPointers);
|
|
17
|
+
}
|
|
18
|
+
export function createGraphNode(context, child, parentPointer) {
|
|
19
|
+
if (context.nodes.has(child.pointer)) {
|
|
20
|
+
context.diagnostics.push({
|
|
21
|
+
code: DiagnosticCodes.graph.DUPLICATE_POINTER,
|
|
22
|
+
message: `Duplicate node pointer "${child.pointer}" detected.`,
|
|
23
|
+
severity: 'error',
|
|
24
|
+
pointer: child.pointer,
|
|
25
|
+
span: child.span
|
|
26
|
+
});
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
let node;
|
|
30
|
+
switch (child.kind) {
|
|
31
|
+
case 'collection': {
|
|
32
|
+
const base = createBaseNode(child, parentPointer);
|
|
33
|
+
node = createCollectionNode(context, child, base);
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case 'token': {
|
|
37
|
+
const base = createBaseNode(child, parentPointer);
|
|
38
|
+
node = createTokenNode(child, base);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case 'alias': {
|
|
42
|
+
const base = createBaseNode(child, parentPointer);
|
|
43
|
+
node = createAliasNode(context, child, base);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (node) {
|
|
48
|
+
context.nodes.set(node.pointer, node);
|
|
49
|
+
}
|
|
50
|
+
return node;
|
|
51
|
+
}
|
|
52
|
+
function createBaseNode(child, parentPointer) {
|
|
53
|
+
return Object.freeze({
|
|
54
|
+
kind: child.kind,
|
|
55
|
+
name: child.name,
|
|
56
|
+
pointer: child.pointer,
|
|
57
|
+
span: child.span,
|
|
58
|
+
path: Object.freeze(splitJsonPointer(child.pointer)),
|
|
59
|
+
parent: parentPointer,
|
|
60
|
+
metadata: child.metadata
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function createCollectionNode(context, collection, base) {
|
|
64
|
+
const children = buildNodes(context, collection.children, collection.pointer);
|
|
65
|
+
return Object.freeze({ ...base, children });
|
|
66
|
+
}
|
|
67
|
+
function createTokenNode(token, base) {
|
|
68
|
+
return Object.freeze({
|
|
69
|
+
...base,
|
|
70
|
+
type: token.type,
|
|
71
|
+
value: token.value
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function createAliasNode(context, alias, base) {
|
|
75
|
+
const ref = createReferenceField(context, alias.ref, 'alias $ref', NON_COLLECTION_NODE_KINDS);
|
|
76
|
+
if (!ref) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
return Object.freeze({
|
|
80
|
+
...base,
|
|
81
|
+
type: alias.type,
|
|
82
|
+
ref
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/graph/builder/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { OverrideNode } from '../../ast/nodes.js';
|
|
2
|
+
import type { GraphOverrideNode } from '../nodes.js';
|
|
3
|
+
import type { GraphBuilderContext } from './context.js';
|
|
4
|
+
export declare function buildOverrides(context: GraphBuilderContext, overrides: readonly OverrideNode[]): readonly GraphOverrideNode[];
|
|
5
|
+
//# sourceMappingURL=overrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../../src/graph/builder/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAA6B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKxD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,SAAS,iBAAiB,EAAE,CAe9B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createReferenceField, NON_COLLECTION_NODE_KINDS } from './references.js';
|
|
2
|
+
const EMPTY_OVERRIDES = Object.freeze([]);
|
|
3
|
+
export function buildOverrides(context, overrides) {
|
|
4
|
+
if (overrides.length === 0) {
|
|
5
|
+
return EMPTY_OVERRIDES;
|
|
6
|
+
}
|
|
7
|
+
const result = [];
|
|
8
|
+
for (const override of overrides) {
|
|
9
|
+
const node = createOverrideNode(context, override);
|
|
10
|
+
if (node) {
|
|
11
|
+
result.push(node);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return result.length === 0 ? EMPTY_OVERRIDES : Object.freeze(result);
|
|
15
|
+
}
|
|
16
|
+
function createOverrideNode(context, override) {
|
|
17
|
+
const tokenRef = createReferenceField(context, override.token, 'override $token', NON_COLLECTION_NODE_KINDS);
|
|
18
|
+
if (!tokenRef) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const ref = createReferenceField(context, override.ref, 'override $ref', NON_COLLECTION_NODE_KINDS);
|
|
22
|
+
const fallback = buildFallbackChain(context, override.fallback);
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
kind: 'override',
|
|
25
|
+
pointer: override.pointer,
|
|
26
|
+
span: override.span,
|
|
27
|
+
token: tokenRef,
|
|
28
|
+
when: override.when,
|
|
29
|
+
ref,
|
|
30
|
+
value: override.value,
|
|
31
|
+
fallback
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function buildFallbackChain(context, fallback) {
|
|
35
|
+
if (!fallback || fallback.length === 0) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const nodes = [];
|
|
39
|
+
for (const entry of fallback) {
|
|
40
|
+
const node = createFallbackNode(context, entry);
|
|
41
|
+
if (node) {
|
|
42
|
+
nodes.push(node);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return nodes.length === 0 ? undefined : Object.freeze(nodes);
|
|
46
|
+
}
|
|
47
|
+
function createFallbackNode(context, fallback) {
|
|
48
|
+
const ref = createReferenceField(context, fallback.ref, 'fallback $ref', NON_COLLECTION_NODE_KINDS);
|
|
49
|
+
const nested = buildFallbackChain(context, fallback.fallback);
|
|
50
|
+
if (!ref && !fallback.value) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return Object.freeze({
|
|
54
|
+
kind: 'fallback',
|
|
55
|
+
pointer: fallback.pointer,
|
|
56
|
+
span: fallback.span,
|
|
57
|
+
ref,
|
|
58
|
+
value: fallback.value,
|
|
59
|
+
fallback: nested
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/graph/builder/overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AstField } from '../../ast/nodes.js';
|
|
2
|
+
import type { GraphReferenceField, GraphNode } from '../nodes.js';
|
|
3
|
+
import type { GraphBuilderContext } from './context.js';
|
|
4
|
+
export declare const NON_COLLECTION_NODE_KINDS: readonly GraphNode['kind'][];
|
|
5
|
+
export declare function createReferenceField(context: GraphBuilderContext, field: AstField<string> | undefined, label: string, allowedKinds: readonly GraphNode['kind'][]): GraphReferenceField | undefined;
|
|
6
|
+
export declare function validatePendingReferences(context: GraphBuilderContext): void;
|
|
7
|
+
//# sourceMappingURL=references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/graph/builder/references.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAwB,SAAS,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,eAAO,MAAM,yBAAyB,EAAE,SAAS,SAAS,CAAC,MAAM,CAAC,EAGhE,CAAC;AAEH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,EACnC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,GACzC,mBAAmB,GAAG,SAAS,CAyBjC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAyB5E"}
|