@blockml/framework 0.9.1 → 0.9.2
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/blocks/org/blockml/bml/framework/Library.bml +2 -1
- package/blocks/org/blockml/bml/framework/capability/EvaluateParseValue.bml +68 -0
- package/blocks/org/blockml/bml/framework/capability/ForkBom.bml +1 -1
- package/blocks/org/blockml/bml/framework/capability/TypeRegistry.bml +10 -1
- package/blocks/org/blockml/bml/framework/capability/ValidateTypes.bml +19 -1
- package/blocks/org/blockml/bml/framework/config/FrameworkDiagnosticCodes.bml +1 -1
- package/blocks/org/blockml/bml/framework/documentation/Diagnostics.bml +12 -3
- package/blocks/org/blockml/bml/framework/documentation/PublicApi.bml +1 -1
- package/blocks/org/blockml/bml/framework/documentation/TypeRegistryBootstrap.bml +7 -6
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/registry/bootstrap.d.ts.map +1 -1
- package/dist/registry/bootstrap.js +12 -2
- package/dist/registry/bootstrap.js.map +1 -1
- package/dist/registry/library-bootstrap.d.ts.map +1 -1
- package/dist/registry/library-bootstrap.js +14 -3
- package/dist/registry/library-bootstrap.js.map +1 -1
- package/dist/registry/package-paths.d.ts +2 -0
- package/dist/registry/package-paths.d.ts.map +1 -1
- package/dist/registry/package-paths.js +7 -0
- package/dist/registry/package-paths.js.map +1 -1
- package/dist/registry/type-registry.d.ts +5 -0
- package/dist/registry/type-registry.d.ts.map +1 -1
- package/dist/registry/type-registry.js +25 -1
- package/dist/registry/type-registry.js.map +1 -1
- package/dist/validate/evaluate-parse-value.d.ts +13 -0
- package/dist/validate/evaluate-parse-value.d.ts.map +1 -0
- package/dist/validate/evaluate-parse-value.js +138 -0
- package/dist/validate/evaluate-parse-value.js.map +1 -0
- package/dist/validate/instance-ids.d.ts +10 -0
- package/dist/validate/instance-ids.d.ts.map +1 -0
- package/dist/validate/instance-ids.js +57 -0
- package/dist/validate/instance-ids.js.map +1 -0
- package/dist/validate/reference-kinds.d.ts +50 -0
- package/dist/validate/reference-kinds.d.ts.map +1 -0
- package/dist/validate/reference-kinds.js +111 -0
- package/dist/validate/reference-kinds.js.map +1 -0
- package/dist/validate/validate-instances.d.ts.map +1 -1
- package/dist/validate/validate-instances.js +1 -61
- package/dist/validate/validate-instances.js.map +1 -1
- package/dist/validate/validate-parse-values.d.ts +4 -0
- package/dist/validate/validate-parse-values.d.ts.map +1 -0
- package/dist/validate/validate-parse-values.js +181 -0
- package/dist/validate/validate-parse-values.js.map +1 -0
- package/dist/validate/validate-references.d.ts +5 -0
- package/dist/validate/validate-references.d.ts.map +1 -0
- package/dist/validate/validate-references.js +392 -0
- package/dist/validate/validate-references.js.map +1 -0
- package/dist/validate/validate-types.d.ts.map +1 -1
- package/dist/validate/validate-types.js +4 -87
- package/dist/validate/validate-types.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { parseTypeExpression } from "@blockml/parser";
|
|
2
|
+
import { resolveEffectiveMembers } from "../resolve/resolve-effective-members.js";
|
|
3
|
+
import { namedTypeFqn } from "./reference-kinds.js";
|
|
4
|
+
const TYPESCRIPT_FQN = "org.blockml.bml.language.TypeScript";
|
|
5
|
+
const PARSE_VALUE = "parseValue";
|
|
6
|
+
const compiledBodies = new Map();
|
|
7
|
+
const skipped = { ok: true, skipped: true };
|
|
8
|
+
function hasTopLevelUnion(input) {
|
|
9
|
+
let depth = 0;
|
|
10
|
+
for (const ch of input) {
|
|
11
|
+
if (ch === "(" || ch === "[" || ch === "{") {
|
|
12
|
+
depth += 1;
|
|
13
|
+
}
|
|
14
|
+
else if (ch === ")" || ch === "]" || ch === "}") {
|
|
15
|
+
depth -= 1;
|
|
16
|
+
}
|
|
17
|
+
else if (ch === "|" && depth === 0) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
function stripDecorators(typeFqn) {
|
|
24
|
+
let s = typeFqn.trim();
|
|
25
|
+
while (true) {
|
|
26
|
+
const next = s
|
|
27
|
+
.replace(/\[\s*(?:\d+(?:\s*\.\.\s*(?:\d+|n|\*))?)?\s*\]$/, "")
|
|
28
|
+
.replace(/\[\]$/, "")
|
|
29
|
+
.trim();
|
|
30
|
+
if (next === s) {
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
s = next;
|
|
34
|
+
}
|
|
35
|
+
if (s.endsWith("}")) {
|
|
36
|
+
let depth = 0;
|
|
37
|
+
for (let i = s.length - 1; i >= 0; i--) {
|
|
38
|
+
if (s[i] === "}") {
|
|
39
|
+
depth += 1;
|
|
40
|
+
}
|
|
41
|
+
else if (s[i] === "{") {
|
|
42
|
+
depth -= 1;
|
|
43
|
+
if (depth === 0) {
|
|
44
|
+
s = s.slice(0, i).trim();
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (s.endsWith(")")) {
|
|
51
|
+
let depth = 0;
|
|
52
|
+
for (let i = s.length - 1; i >= 0; i--) {
|
|
53
|
+
if (s[i] === ")") {
|
|
54
|
+
depth += 1;
|
|
55
|
+
}
|
|
56
|
+
else if (s[i] === "(") {
|
|
57
|
+
depth -= 1;
|
|
58
|
+
if (depth === 0) {
|
|
59
|
+
s = s.slice(0, i).trim();
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return s;
|
|
66
|
+
}
|
|
67
|
+
function namedPrimitiveFqn(typeFqn) {
|
|
68
|
+
const trimmed = typeFqn.trim();
|
|
69
|
+
if (!trimmed || hasTopLevelUnion(trimmed)) {
|
|
70
|
+
return { skip: true };
|
|
71
|
+
}
|
|
72
|
+
const named = stripDecorators(trimmed);
|
|
73
|
+
if (!named || named.startsWith("{")) {
|
|
74
|
+
return { skip: true };
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const expr = parseTypeExpression(named, {});
|
|
78
|
+
if (expr.kind === "anonymousStruct" || expr.kind === "self" || expr.kind === "genericParam") {
|
|
79
|
+
return { skip: true };
|
|
80
|
+
}
|
|
81
|
+
const fqn = namedTypeFqn(expr);
|
|
82
|
+
return fqn ? { fqn, skip: false } : { skip: true };
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return { skip: true };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function isTypeScript(languageFqn) {
|
|
89
|
+
const named = namedPrimitiveFqn(languageFqn);
|
|
90
|
+
return !named.skip && named.fqn === TYPESCRIPT_FQN;
|
|
91
|
+
}
|
|
92
|
+
function toHostJavaScript(source) {
|
|
93
|
+
return source.trim().replace(/^\(\s*([A-Za-z_]\w*)\s*(?::\s*[^)=]+)?\s*\)\s*(?::\s*[^=]+)?\s*=>/, "($1) =>");
|
|
94
|
+
}
|
|
95
|
+
function compileBody(source) {
|
|
96
|
+
return new Function(`"use strict"; return (${toHostJavaScript(source)});`)();
|
|
97
|
+
}
|
|
98
|
+
function findParseValue(typeFqn, registry) {
|
|
99
|
+
const doc = registry.get(typeFqn);
|
|
100
|
+
if (!doc) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
const member = resolveEffectiveMembers(doc.block, registry).find((m) => m.kind === "capability" && m.name === PARSE_VALUE);
|
|
104
|
+
return member?.kind === "capability" ? member : undefined;
|
|
105
|
+
}
|
|
106
|
+
export function evaluateParseValue(typeFqn, raw, registry) {
|
|
107
|
+
const named = namedPrimitiveFqn(typeFqn);
|
|
108
|
+
if (named.skip || !named.fqn) {
|
|
109
|
+
return skipped;
|
|
110
|
+
}
|
|
111
|
+
if (!registry.has(named.fqn)) {
|
|
112
|
+
return skipped;
|
|
113
|
+
}
|
|
114
|
+
const cap = findParseValue(named.fqn, registry);
|
|
115
|
+
if (!cap || cap.abstract || !cap.implementation) {
|
|
116
|
+
return skipped;
|
|
117
|
+
}
|
|
118
|
+
if (!isTypeScript(cap.implementation.languageFqn)) {
|
|
119
|
+
return skipped;
|
|
120
|
+
}
|
|
121
|
+
let fn = compiledBodies.get(named.fqn);
|
|
122
|
+
if (!fn) {
|
|
123
|
+
try {
|
|
124
|
+
fn = compileBody(cap.implementation.source);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return skipped;
|
|
128
|
+
}
|
|
129
|
+
compiledBodies.set(named.fqn, fn);
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
return { ok: true, value: fn(raw) };
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
return { ok: false, message: err instanceof Error ? err.message : String(err) };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=evaluate-parse-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-parse-value.js","sourceRoot":"","sources":["../../src/validate/evaluate-parse-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BlockDefinition, BlockInstance } from "@blockml/bom";
|
|
2
|
+
export type InstanceIdLoc = {
|
|
3
|
+
file: string;
|
|
4
|
+
line?: number;
|
|
5
|
+
column?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function instanceId(instance: BlockInstance): string | undefined;
|
|
8
|
+
export declare function collectDocumentInstanceIds(block: BlockDefinition, file: string): Map<string, InstanceIdLoc>;
|
|
9
|
+
export declare function resolveInstanceRef(token: string, ids: Map<string, InstanceIdLoc>): boolean;
|
|
10
|
+
//# sourceMappingURL=instance-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-ids.d.ts","sourceRoot":"","sources":["../../src/validate/instance-ids.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAgC,MAAM,cAAc,CAAC;AAEjG,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAS7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAEtE;AA6BD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,GACX,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAgB5B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAC9B,OAAO,CAMT"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function literalString(val) {
|
|
2
|
+
if (!val || val.kind !== "literal") {
|
|
3
|
+
return undefined;
|
|
4
|
+
}
|
|
5
|
+
return typeof val.value === "string" ? val.value : String(val.value);
|
|
6
|
+
}
|
|
7
|
+
export function instanceId(instance) {
|
|
8
|
+
return literalString(instance.id);
|
|
9
|
+
}
|
|
10
|
+
function collectIdsInComposition(nodes, ids, file) {
|
|
11
|
+
for (const node of nodes) {
|
|
12
|
+
if (node.kind === "blockInstance") {
|
|
13
|
+
const id = instanceId(node.instance);
|
|
14
|
+
if (id) {
|
|
15
|
+
const loc = { file };
|
|
16
|
+
if (node.instance.source?.line !== undefined) {
|
|
17
|
+
loc.line = node.instance.source.line;
|
|
18
|
+
}
|
|
19
|
+
if (node.instance.source?.column !== undefined) {
|
|
20
|
+
loc.column = node.instance.source.column;
|
|
21
|
+
}
|
|
22
|
+
ids.set(id, loc);
|
|
23
|
+
}
|
|
24
|
+
for (const agg of node.instance.aggregationCompositions ?? []) {
|
|
25
|
+
collectIdsInComposition(agg.composition.children, ids, file);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
collectIdsInComposition(node.children, ids, file);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function collectDocumentInstanceIds(block, file) {
|
|
34
|
+
const ids = new Map();
|
|
35
|
+
for (const template of block.compositions) {
|
|
36
|
+
collectIdsInComposition(template.children, ids, file);
|
|
37
|
+
}
|
|
38
|
+
for (const sub of block.subBlocks) {
|
|
39
|
+
for (const [id, loc] of collectDocumentInstanceIds(sub, file)) {
|
|
40
|
+
ids.set(id, loc);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const embedded of block.embeddedBlocks) {
|
|
44
|
+
for (const [id, loc] of collectDocumentInstanceIds(embedded, file)) {
|
|
45
|
+
ids.set(id, loc);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return ids;
|
|
49
|
+
}
|
|
50
|
+
export function resolveInstanceRef(token, ids) {
|
|
51
|
+
if (token.includes("::")) {
|
|
52
|
+
const id = token.split("::").pop();
|
|
53
|
+
return id !== undefined && ids.has(id);
|
|
54
|
+
}
|
|
55
|
+
return ids.has(token);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=instance-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-ids.js","sourceRoot":"","sources":["../../src/validate/instance-ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { TypeExpression } from "@blockml/bom";
|
|
2
|
+
import type { TypeRegistry } from "../registry/type-registry.js";
|
|
3
|
+
export declare const TYPE_REFERENCE = "org.blockml.bml.type.TypeReference";
|
|
4
|
+
export declare const TYPE_REFERENCE_ENTITY = "org.blockml.bml.type.TypeReferenceEntity";
|
|
5
|
+
export declare const PACKAGE_REFERENCE = "org.blockml.bml.type.PackageReference";
|
|
6
|
+
export declare const PACKAGE_REFERENCE_ENTITY = "org.blockml.bml.type.PackageReferenceEntity";
|
|
7
|
+
export declare const INSTANCE_REFERENCE = "org.blockml.bml.type.InstanceReference";
|
|
8
|
+
export declare const INSTANCE_REFERENCE_ENTITY = "org.blockml.bml.type.InstanceReferenceEntity";
|
|
9
|
+
export declare const PROPERTY_REFERENCE = "org.blockml.bml.type.PropertyReference";
|
|
10
|
+
export declare const PROPERTY_REFERENCE_ENTITY = "org.blockml.bml.type.PropertyReferenceEntity";
|
|
11
|
+
export declare const AGGREGATION_REFERENCE = "org.blockml.bml.type.AggregationReference";
|
|
12
|
+
export declare const AGGREGATION_REFERENCE_ENTITY = "org.blockml.bml.type.AggregationReferenceEntity";
|
|
13
|
+
export declare const ASSOCIATION_REFERENCE = "org.blockml.bml.type.AssociationReference";
|
|
14
|
+
export declare const ASSOCIATION_REFERENCE_ENTITY = "org.blockml.bml.type.AssociationReferenceEntity";
|
|
15
|
+
export declare const CAPABILITY_REFERENCE = "org.blockml.bml.type.CapabilityReference";
|
|
16
|
+
export declare const CAPABILITY_REFERENCE_ENTITY = "org.blockml.bml.type.CapabilityReferenceEntity";
|
|
17
|
+
export declare const TYPE_IDENTIFIER = "org.blockml.bml.type.TypeIdentifier";
|
|
18
|
+
export declare const TYPE_IDENTIFIER_ENTITY = "org.blockml.bml.type.TypeIdentifierEntity";
|
|
19
|
+
export declare const PACKAGE_IDENTIFIER = "org.blockml.bml.type.PackageIdentifier";
|
|
20
|
+
export declare const PACKAGE_IDENTIFIER_ENTITY = "org.blockml.bml.type.PackageIdentifierEntity";
|
|
21
|
+
export declare const INSTANCE_IDENTIFIER = "org.blockml.bml.type.InstanceIdentifier";
|
|
22
|
+
export declare const INSTANCE_IDENTIFIER_ENTITY = "org.blockml.bml.type.InstanceIdentifierEntity";
|
|
23
|
+
export declare const MEMBER_IDENTIFIER = "org.blockml.bml.type.MemberIdentifier";
|
|
24
|
+
export declare const MEMBER_IDENTIFIER_ENTITY = "org.blockml.bml.type.MemberIdentifierEntity";
|
|
25
|
+
export declare const PROPERTY_IDENTIFIER = "org.blockml.bml.type.PropertyIdentifier";
|
|
26
|
+
export declare const PROPERTY_IDENTIFIER_ENTITY = "org.blockml.bml.type.PropertyIdentifierEntity";
|
|
27
|
+
export declare const AGGREGATION_IDENTIFIER = "org.blockml.bml.type.AggregationIdentifier";
|
|
28
|
+
export declare const AGGREGATION_IDENTIFIER_ENTITY = "org.blockml.bml.type.AggregationIdentifierEntity";
|
|
29
|
+
export declare const ASSOCIATION_IDENTIFIER = "org.blockml.bml.type.AssociationIdentifier";
|
|
30
|
+
export declare const ASSOCIATION_IDENTIFIER_ENTITY = "org.blockml.bml.type.AssociationIdentifierEntity";
|
|
31
|
+
export declare const CAPABILITY_IDENTIFIER = "org.blockml.bml.type.CapabilityIdentifier";
|
|
32
|
+
export declare const CAPABILITY_IDENTIFIER_ENTITY = "org.blockml.bml.type.CapabilityIdentifierEntity";
|
|
33
|
+
export type ReferenceKind = "type" | "package" | "instance" | "property" | "aggregation" | "association" | "capability";
|
|
34
|
+
export type ClassifiedDeclaredType = {
|
|
35
|
+
role: "reference";
|
|
36
|
+
kind: ReferenceKind;
|
|
37
|
+
isEntity: boolean;
|
|
38
|
+
boundFqn?: string;
|
|
39
|
+
} | {
|
|
40
|
+
role: "identifier";
|
|
41
|
+
};
|
|
42
|
+
export declare function unwrapNamed(expr: TypeExpression | undefined): {
|
|
43
|
+
fqn: string;
|
|
44
|
+
typeArguments?: TypeExpression[];
|
|
45
|
+
} | undefined;
|
|
46
|
+
export declare function namedTypeFqn(expr: TypeExpression | undefined, fallback?: string): string | undefined;
|
|
47
|
+
export declare function firstTypeArgumentFqn(expr: TypeExpression | undefined): string | undefined;
|
|
48
|
+
export declare function classifyDeclaredFqn(fqn: string, registry: TypeRegistry, boundFqn?: string): ClassifiedDeclaredType | undefined;
|
|
49
|
+
export declare function classifyDeclaredType(expr: TypeExpression | undefined, registry: TypeRegistry, fallbackFqn?: string): ClassifiedDeclaredType | undefined;
|
|
50
|
+
//# sourceMappingURL=reference-kinds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-kinds.d.ts","sourceRoot":"","sources":["../../src/validate/reference-kinds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,eAAO,MAAM,cAAc,uCAAuC,CAAC;AACnE,eAAO,MAAM,qBAAqB,6CAA6C,CAAC;AAChF,eAAO,MAAM,iBAAiB,0CAA0C,CAAC;AACzE,eAAO,MAAM,wBAAwB,gDAAgD,CAAC;AACtF,eAAO,MAAM,kBAAkB,2CAA2C,CAAC;AAC3E,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,kBAAkB,2CAA2C,CAAC;AAC3E,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,4BAA4B,oDAAoD,CAAC;AAC9F,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,4BAA4B,oDAAoD,CAAC;AAC9F,eAAO,MAAM,oBAAoB,6CAA6C,CAAC;AAC/E,eAAO,MAAM,2BAA2B,mDAAmD,CAAC;AAE5F,eAAO,MAAM,eAAe,wCAAwC,CAAC;AACrE,eAAO,MAAM,sBAAsB,8CAA8C,CAAC;AAClF,eAAO,MAAM,kBAAkB,2CAA2C,CAAC;AAC3E,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,mBAAmB,4CAA4C,CAAC;AAC7E,eAAO,MAAM,0BAA0B,kDAAkD,CAAC;AAC1F,eAAO,MAAM,iBAAiB,0CAA0C,CAAC;AACzE,eAAO,MAAM,wBAAwB,gDAAgD,CAAC;AACtF,eAAO,MAAM,mBAAmB,4CAA4C,CAAC;AAC7E,eAAO,MAAM,0BAA0B,kDAAkD,CAAC;AAC1F,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AACnF,eAAO,MAAM,6BAA6B,qDAAqD,CAAC;AAChG,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AACnF,eAAO,MAAM,6BAA6B,qDAAqD,CAAC;AAChG,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,4BAA4B,oDAAoD,CAAC;AAE9F,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,SAAS,GACT,UAAU,GACV,UAAU,GACV,aAAa,GACb,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAqC3B,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;CAClC,GAAG,SAAS,CAcZ;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIzF;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,sBAAsB,GAAG,SAAS,CAqBpC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,QAAQ,EAAE,YAAY,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,sBAAsB,GAAG,SAAS,CAMpC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { satisfiesTypeBound } from "../resolve/satisfies-type-bound.js";
|
|
2
|
+
export const TYPE_REFERENCE = "org.blockml.bml.type.TypeReference";
|
|
3
|
+
export const TYPE_REFERENCE_ENTITY = "org.blockml.bml.type.TypeReferenceEntity";
|
|
4
|
+
export const PACKAGE_REFERENCE = "org.blockml.bml.type.PackageReference";
|
|
5
|
+
export const PACKAGE_REFERENCE_ENTITY = "org.blockml.bml.type.PackageReferenceEntity";
|
|
6
|
+
export const INSTANCE_REFERENCE = "org.blockml.bml.type.InstanceReference";
|
|
7
|
+
export const INSTANCE_REFERENCE_ENTITY = "org.blockml.bml.type.InstanceReferenceEntity";
|
|
8
|
+
export const PROPERTY_REFERENCE = "org.blockml.bml.type.PropertyReference";
|
|
9
|
+
export const PROPERTY_REFERENCE_ENTITY = "org.blockml.bml.type.PropertyReferenceEntity";
|
|
10
|
+
export const AGGREGATION_REFERENCE = "org.blockml.bml.type.AggregationReference";
|
|
11
|
+
export const AGGREGATION_REFERENCE_ENTITY = "org.blockml.bml.type.AggregationReferenceEntity";
|
|
12
|
+
export const ASSOCIATION_REFERENCE = "org.blockml.bml.type.AssociationReference";
|
|
13
|
+
export const ASSOCIATION_REFERENCE_ENTITY = "org.blockml.bml.type.AssociationReferenceEntity";
|
|
14
|
+
export const CAPABILITY_REFERENCE = "org.blockml.bml.type.CapabilityReference";
|
|
15
|
+
export const CAPABILITY_REFERENCE_ENTITY = "org.blockml.bml.type.CapabilityReferenceEntity";
|
|
16
|
+
export const TYPE_IDENTIFIER = "org.blockml.bml.type.TypeIdentifier";
|
|
17
|
+
export const TYPE_IDENTIFIER_ENTITY = "org.blockml.bml.type.TypeIdentifierEntity";
|
|
18
|
+
export const PACKAGE_IDENTIFIER = "org.blockml.bml.type.PackageIdentifier";
|
|
19
|
+
export const PACKAGE_IDENTIFIER_ENTITY = "org.blockml.bml.type.PackageIdentifierEntity";
|
|
20
|
+
export const INSTANCE_IDENTIFIER = "org.blockml.bml.type.InstanceIdentifier";
|
|
21
|
+
export const INSTANCE_IDENTIFIER_ENTITY = "org.blockml.bml.type.InstanceIdentifierEntity";
|
|
22
|
+
export const MEMBER_IDENTIFIER = "org.blockml.bml.type.MemberIdentifier";
|
|
23
|
+
export const MEMBER_IDENTIFIER_ENTITY = "org.blockml.bml.type.MemberIdentifierEntity";
|
|
24
|
+
export const PROPERTY_IDENTIFIER = "org.blockml.bml.type.PropertyIdentifier";
|
|
25
|
+
export const PROPERTY_IDENTIFIER_ENTITY = "org.blockml.bml.type.PropertyIdentifierEntity";
|
|
26
|
+
export const AGGREGATION_IDENTIFIER = "org.blockml.bml.type.AggregationIdentifier";
|
|
27
|
+
export const AGGREGATION_IDENTIFIER_ENTITY = "org.blockml.bml.type.AggregationIdentifierEntity";
|
|
28
|
+
export const ASSOCIATION_IDENTIFIER = "org.blockml.bml.type.AssociationIdentifier";
|
|
29
|
+
export const ASSOCIATION_IDENTIFIER_ENTITY = "org.blockml.bml.type.AssociationIdentifierEntity";
|
|
30
|
+
export const CAPABILITY_IDENTIFIER = "org.blockml.bml.type.CapabilityIdentifier";
|
|
31
|
+
export const CAPABILITY_IDENTIFIER_ENTITY = "org.blockml.bml.type.CapabilityIdentifierEntity";
|
|
32
|
+
const REFERENCE_PAIRS = [
|
|
33
|
+
{ kind: "type", reference: TYPE_REFERENCE, entity: TYPE_REFERENCE_ENTITY },
|
|
34
|
+
{ kind: "package", reference: PACKAGE_REFERENCE, entity: PACKAGE_REFERENCE_ENTITY },
|
|
35
|
+
{ kind: "instance", reference: INSTANCE_REFERENCE, entity: INSTANCE_REFERENCE_ENTITY },
|
|
36
|
+
{ kind: "property", reference: PROPERTY_REFERENCE, entity: PROPERTY_REFERENCE_ENTITY },
|
|
37
|
+
{ kind: "aggregation", reference: AGGREGATION_REFERENCE, entity: AGGREGATION_REFERENCE_ENTITY },
|
|
38
|
+
{ kind: "association", reference: ASSOCIATION_REFERENCE, entity: ASSOCIATION_REFERENCE_ENTITY },
|
|
39
|
+
{ kind: "capability", reference: CAPABILITY_REFERENCE, entity: CAPABILITY_REFERENCE_ENTITY },
|
|
40
|
+
];
|
|
41
|
+
const IDENTIFIER_FQNS = [
|
|
42
|
+
TYPE_IDENTIFIER,
|
|
43
|
+
TYPE_IDENTIFIER_ENTITY,
|
|
44
|
+
PACKAGE_IDENTIFIER,
|
|
45
|
+
PACKAGE_IDENTIFIER_ENTITY,
|
|
46
|
+
INSTANCE_IDENTIFIER,
|
|
47
|
+
INSTANCE_IDENTIFIER_ENTITY,
|
|
48
|
+
MEMBER_IDENTIFIER,
|
|
49
|
+
MEMBER_IDENTIFIER_ENTITY,
|
|
50
|
+
PROPERTY_IDENTIFIER,
|
|
51
|
+
PROPERTY_IDENTIFIER_ENTITY,
|
|
52
|
+
AGGREGATION_IDENTIFIER,
|
|
53
|
+
AGGREGATION_IDENTIFIER_ENTITY,
|
|
54
|
+
ASSOCIATION_IDENTIFIER,
|
|
55
|
+
ASSOCIATION_IDENTIFIER_ENTITY,
|
|
56
|
+
CAPABILITY_IDENTIFIER,
|
|
57
|
+
CAPABILITY_IDENTIFIER_ENTITY,
|
|
58
|
+
];
|
|
59
|
+
export function unwrapNamed(expr) {
|
|
60
|
+
if (!expr) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
if (expr.kind === "named") {
|
|
64
|
+
return expr;
|
|
65
|
+
}
|
|
66
|
+
if (expr.kind === "grouped") {
|
|
67
|
+
return unwrapNamed(expr.expression);
|
|
68
|
+
}
|
|
69
|
+
if (expr.kind === "union") {
|
|
70
|
+
return unwrapNamed(expr.alternatives[0]);
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
export function namedTypeFqn(expr, fallback) {
|
|
75
|
+
return unwrapNamed(expr)?.fqn ?? fallback;
|
|
76
|
+
}
|
|
77
|
+
export function firstTypeArgumentFqn(expr) {
|
|
78
|
+
const named = unwrapNamed(expr);
|
|
79
|
+
const arg = named?.typeArguments?.[0];
|
|
80
|
+
return namedTypeFqn(arg);
|
|
81
|
+
}
|
|
82
|
+
export function classifyDeclaredFqn(fqn, registry, boundFqn) {
|
|
83
|
+
for (const pair of REFERENCE_PAIRS) {
|
|
84
|
+
const isEntity = satisfiesTypeBound(fqn, pair.entity, registry);
|
|
85
|
+
if (isEntity || satisfiesTypeBound(fqn, pair.reference, registry)) {
|
|
86
|
+
const classified = {
|
|
87
|
+
role: "reference",
|
|
88
|
+
kind: pair.kind,
|
|
89
|
+
isEntity,
|
|
90
|
+
};
|
|
91
|
+
if (boundFqn) {
|
|
92
|
+
classified.boundFqn = boundFqn;
|
|
93
|
+
}
|
|
94
|
+
return classified;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
for (const ident of IDENTIFIER_FQNS) {
|
|
98
|
+
if (satisfiesTypeBound(fqn, ident, registry)) {
|
|
99
|
+
return { role: "identifier" };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
export function classifyDeclaredType(expr, registry, fallbackFqn) {
|
|
105
|
+
const fqn = namedTypeFqn(expr, fallbackFqn);
|
|
106
|
+
if (!fqn) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
return classifyDeclaredFqn(fqn, registry, firstTypeArgumentFqn(expr));
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=reference-kinds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-kinds.js","sourceRoot":"","sources":["../../src/validate/reference-kinds.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-instances.d.ts","sourceRoot":"","sources":["../../src/validate/validate-instances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAEX,UAAU,
|
|
1
|
+
{"version":3,"file":"validate-instances.d.ts","sourceRoot":"","sources":["../../src/validate/validate-instances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAEX,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA8KjE,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,GACrB,UAAU,EAAE,CAMd"}
|
|
@@ -1,59 +1,8 @@
|
|
|
1
1
|
import { resolveEffectiveMembers } from "../resolve/resolve-effective-members.js";
|
|
2
|
+
import { collectDocumentInstanceIds, instanceId, resolveInstanceRef, } from "./instance-ids.js";
|
|
2
3
|
function diag(code, message, file, line = 1, column = 1) {
|
|
3
4
|
return { severity: "error", code, message, source: { file, line, column } };
|
|
4
5
|
}
|
|
5
|
-
function literalString(val) {
|
|
6
|
-
if (!val || val.kind !== "literal") {
|
|
7
|
-
return undefined;
|
|
8
|
-
}
|
|
9
|
-
return typeof val.value === "string" ? val.value : String(val.value);
|
|
10
|
-
}
|
|
11
|
-
function instanceId(instance) {
|
|
12
|
-
return literalString(instance.id);
|
|
13
|
-
}
|
|
14
|
-
function collectIdsInComposition(nodes, ids, file) {
|
|
15
|
-
for (const node of nodes) {
|
|
16
|
-
if (node.kind === "blockInstance") {
|
|
17
|
-
const id = instanceId(node.instance);
|
|
18
|
-
if (id) {
|
|
19
|
-
const loc = { file };
|
|
20
|
-
if (node.instance.source?.line !== undefined) {
|
|
21
|
-
loc.line = node.instance.source.line;
|
|
22
|
-
}
|
|
23
|
-
if (node.instance.source?.column !== undefined) {
|
|
24
|
-
loc.column = node.instance.source.column;
|
|
25
|
-
}
|
|
26
|
-
ids.set(id, loc);
|
|
27
|
-
}
|
|
28
|
-
for (const agg of node.instance.aggregationCompositions ?? []) {
|
|
29
|
-
collectIdsInComposition(agg.composition.children, ids, file);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
collectIdsInComposition(node.children, ids, file);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function collectDocumentInstanceIds(block, file) {
|
|
38
|
-
const ids = new Map();
|
|
39
|
-
for (const template of block.compositions) {
|
|
40
|
-
collectIdsInComposition(template.children, ids, file);
|
|
41
|
-
}
|
|
42
|
-
for (const sub of block.subBlocks) {
|
|
43
|
-
const subIds = collectDocumentInstanceIds(sub, file);
|
|
44
|
-
for (const [id, loc] of subIds) {
|
|
45
|
-
ids.set(id, loc);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return ids;
|
|
49
|
-
}
|
|
50
|
-
function resolveInstanceRef(token, ids) {
|
|
51
|
-
if (token.includes("::")) {
|
|
52
|
-
const id = token.split("::").pop();
|
|
53
|
-
return id !== undefined && ids.has(id);
|
|
54
|
-
}
|
|
55
|
-
return ids.has(token);
|
|
56
|
-
}
|
|
57
6
|
function validateInstanceSemantics(instance, registry, file, diagnostics) {
|
|
58
7
|
if (!instance.typeFqn) {
|
|
59
8
|
diagnostics.push(diag("BML_UNKNOWN_TYPE", "Unknown type: (missing instance typeFqn)", file, instance.source?.line, instance.source?.column));
|
|
@@ -76,15 +25,6 @@ function validateInstanceRefs(instance, ids, file, diagnostics) {
|
|
|
76
25
|
if (instance.basePresets && !resolveInstanceRef(instance.basePresets, ids)) {
|
|
77
26
|
diagnostics.push(diag("BML_UNRESOLVABLE_INSTANCE_REF", `Unresolved basePresets reference: ${instance.basePresets}`, file, instance.source?.line, instance.source?.column));
|
|
78
27
|
}
|
|
79
|
-
for (const val of Object.values(instance.memberValues)) {
|
|
80
|
-
if (val.kind !== "literal") {
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
const text = typeof val.value === "string" ? val.value : undefined;
|
|
84
|
-
if (text && text.includes("::") && !resolveInstanceRef(text, ids)) {
|
|
85
|
-
diagnostics.push(diag("BML_UNRESOLVABLE_INSTANCE_REF", `Unresolved instance reference: ${text}`, file, instance.source?.line, instance.source?.column));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
28
|
for (const agg of instance.aggregationCompositions ?? []) {
|
|
89
29
|
for (const child of agg.composition.children) {
|
|
90
30
|
if (child.kind === "blockInstance") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-instances.js","sourceRoot":"","sources":["../../src/validate/validate-instances.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate-instances.js","sourceRoot":"","sources":["../../src/validate/validate-instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BomDocument, Diagnostic } from "@blockml/bom";
|
|
2
|
+
import type { TypeRegistry } from "../registry/type-registry.js";
|
|
3
|
+
export declare function validateParseValues(document: BomDocument, registry: TypeRegistry): Diagnostic[];
|
|
4
|
+
//# sourceMappingURL=validate-parse-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-parse-values.d.ts","sourceRoot":"","sources":["../../src/validate/validate-parse-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAEX,UAAU,EAMX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA0NjE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAG,UAAU,EAAE,CAK/F"}
|