@blockml/framework 0.8.1 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/blocks/org/blockml/bml/framework/Library.bml +7 -1
  2. package/blocks/org/blockml/bml/framework/capability/EvaluateExpression.bml +50 -0
  3. package/blocks/org/blockml/bml/framework/capability/EvaluateInterpolatedText.bml +50 -0
  4. package/blocks/org/blockml/bml/framework/capability/FindLocalMember.bml +58 -0
  5. package/blocks/org/blockml/bml/framework/capability/ParseInterpolatedText.bml +54 -0
  6. package/blocks/org/blockml/bml/framework/capability/ValidateGenerics.bml +66 -0
  7. package/blocks/org/blockml/bml/framework/config/FrameworkDiagnosticCodes.bml +1 -1
  8. package/blocks/org/blockml/bml/framework/documentation/Diagnostics.bml +11 -0
  9. package/blocks/org/blockml/bml/framework/documentation/EffectiveMembers.bml +2 -0
  10. package/blocks/org/blockml/bml/framework/documentation/ExpressionParsing.bml +6 -3
  11. package/blocks/org/blockml/bml/framework/documentation/PublicApi.bml +6 -0
  12. package/blocks/org/blockml/bml/framework/documentation/TypeRegistryBootstrap.bml +1 -1
  13. package/blocks/org/blockml/bml/framework/expression/ExpressionNode.bml +1 -1
  14. package/blocks/org/blockml/bml/framework/expression/InterpolatedStringNode.bml +51 -0
  15. package/dist/expression/evaluate-expression.d.ts +9 -0
  16. package/dist/expression/evaluate-expression.d.ts.map +1 -0
  17. package/dist/expression/evaluate-expression.js +124 -0
  18. package/dist/expression/evaluate-expression.js.map +1 -0
  19. package/dist/expression/parse-interpolated-text.d.ts +3 -0
  20. package/dist/expression/parse-interpolated-text.d.ts.map +1 -0
  21. package/dist/expression/parse-interpolated-text.js +80 -0
  22. package/dist/expression/parse-interpolated-text.js.map +1 -0
  23. package/dist/expression/restricted.d.ts +5 -0
  24. package/dist/expression/restricted.d.ts.map +1 -0
  25. package/dist/expression/restricted.js +65 -0
  26. package/dist/expression/restricted.js.map +1 -0
  27. package/dist/expression/types.d.ts +5 -1
  28. package/dist/expression/types.d.ts.map +1 -1
  29. package/dist/index.d.ts +6 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +4 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/resolve/resolve-generic-application.d.ts +18 -0
  34. package/dist/resolve/resolve-generic-application.d.ts.map +1 -0
  35. package/dist/resolve/resolve-generic-application.js +129 -0
  36. package/dist/resolve/resolve-generic-application.js.map +1 -0
  37. package/dist/resolve/satisfies-type-bound.d.ts +4 -0
  38. package/dist/resolve/satisfies-type-bound.d.ts.map +1 -0
  39. package/dist/resolve/satisfies-type-bound.js +20 -0
  40. package/dist/resolve/satisfies-type-bound.js.map +1 -0
  41. package/dist/validate/validate-generics.d.ts +4 -0
  42. package/dist/validate/validate-generics.d.ts.map +1 -0
  43. package/dist/validate/validate-generics.js +141 -0
  44. package/dist/validate/validate-generics.js.map +1 -0
  45. package/dist/validate/validate-types.d.ts.map +1 -1
  46. package/dist/validate/validate-types.js +125 -25
  47. package/dist/validate/validate-types.js.map +1 -1
  48. package/package.json +4 -4
@@ -0,0 +1,80 @@
1
+ import { parseExpression } from "./parse-expression.js";
2
+ import { holeLooksLikeModelBinding, INTERPOLATION_NOT_ALLOWED, restrictedExpressionError, } from "./restricted.js";
3
+ function findMatchingBrace(input, start) {
4
+ let depth = 1;
5
+ let quote = null;
6
+ for (let i = start; i < input.length; i++) {
7
+ const ch = input[i];
8
+ if (quote) {
9
+ if (ch === "\\" && i + 1 < input.length) {
10
+ i++;
11
+ continue;
12
+ }
13
+ if (ch === quote) {
14
+ quote = null;
15
+ }
16
+ continue;
17
+ }
18
+ if (ch === '"' || ch === "'") {
19
+ quote = ch;
20
+ continue;
21
+ }
22
+ if (ch === "{") {
23
+ depth++;
24
+ }
25
+ else if (ch === "}") {
26
+ depth--;
27
+ if (depth === 0) {
28
+ return i;
29
+ }
30
+ }
31
+ }
32
+ return -1;
33
+ }
34
+ export function parseInterpolatedText(raw) {
35
+ const parts = [];
36
+ let i = 0;
37
+ let literal = "";
38
+ while (i < raw.length) {
39
+ if (raw[i] === "\\" && raw.slice(i, i + 3) === "\\${") {
40
+ literal += "${";
41
+ i += 3;
42
+ continue;
43
+ }
44
+ if (raw[i] === "$" && raw[i + 1] === "{") {
45
+ if (literal) {
46
+ parts.push({ kind: "literal", value: literal });
47
+ literal = "";
48
+ }
49
+ const end = findMatchingBrace(raw, i + 2);
50
+ if (end < 0) {
51
+ return { ok: false, error: { message: "Unclosed interpolation", offset: i } };
52
+ }
53
+ const hole = raw.slice(i + 2, end);
54
+ if (holeLooksLikeModelBinding(hole)) {
55
+ return {
56
+ ok: false,
57
+ error: { message: INTERPOLATION_NOT_ALLOWED, offset: i },
58
+ };
59
+ }
60
+ const parsed = parseExpression(hole);
61
+ if (!parsed.ok) {
62
+ return parsed;
63
+ }
64
+ const restricted = restrictedExpressionError(parsed.result.ast);
65
+ if (restricted) {
66
+ return { ok: false, error: { message: restricted, offset: i } };
67
+ }
68
+ parts.push(parsed.result.ast);
69
+ i = end + 1;
70
+ continue;
71
+ }
72
+ literal += raw[i];
73
+ i++;
74
+ }
75
+ if (literal) {
76
+ parts.push({ kind: "literal", value: literal });
77
+ }
78
+ return { ok: true, result: { ast: { kind: "interpolated", parts } } };
79
+ }
80
+ //# sourceMappingURL=parse-interpolated-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-interpolated-text.js","sourceRoot":"","sources":["../../src/expression/parse-interpolated-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ExpressionNode } from "./types.js";
2
+ export declare const INTERPOLATION_NOT_ALLOWED = "not allowed in interpolated text";
3
+ export declare function restrictedExpressionError(node: ExpressionNode): string | undefined;
4
+ export declare function holeLooksLikeModelBinding(raw: string): boolean;
5
+ //# sourceMappingURL=restricted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restricted.d.ts","sourceRoot":"","sources":["../../src/expression/restricted.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,yBAAyB,qCACF,CAAC;AAIrC,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAyDlF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,65 @@
1
+ export const INTERPOLATION_NOT_ALLOWED = "not allowed in interpolated text";
2
+ const ALLOWED_CALL = /^#(math|strings)\./;
3
+ export function restrictedExpressionError(node) {
4
+ switch (node.kind) {
5
+ case "literal":
6
+ return undefined;
7
+ case "binary":
8
+ if (node.operator !== "+") {
9
+ return INTERPOLATION_NOT_ALLOWED;
10
+ }
11
+ return (restrictedExpressionError(node.left) ?? restrictedExpressionError(node.right));
12
+ case "property": {
13
+ const head = propertyPathHead(node.path);
14
+ if (head.startsWith("@")) {
15
+ return INTERPOLATION_NOT_ALLOWED;
16
+ }
17
+ return undefined;
18
+ }
19
+ case "call": {
20
+ if (!ALLOWED_CALL.test(node.callee)) {
21
+ return INTERPOLATION_NOT_ALLOWED;
22
+ }
23
+ for (const arg of node.args) {
24
+ const err = restrictedExpressionError(arg);
25
+ if (err) {
26
+ return err;
27
+ }
28
+ }
29
+ return undefined;
30
+ }
31
+ case "array":
32
+ for (const el of node.elements) {
33
+ const err = restrictedExpressionError(el);
34
+ if (err) {
35
+ return err;
36
+ }
37
+ }
38
+ return undefined;
39
+ case "object":
40
+ for (const el of Object.values(node.entries)) {
41
+ const err = restrictedExpressionError(el);
42
+ if (err) {
43
+ return err;
44
+ }
45
+ }
46
+ return undefined;
47
+ case "interpolated":
48
+ for (const part of node.parts) {
49
+ const err = restrictedExpressionError(part);
50
+ if (err) {
51
+ return err;
52
+ }
53
+ }
54
+ return undefined;
55
+ default:
56
+ return INTERPOLATION_NOT_ALLOWED;
57
+ }
58
+ }
59
+ export function holeLooksLikeModelBinding(raw) {
60
+ return /@[A-Za-z_]\w*\s*:/.test(raw);
61
+ }
62
+ function propertyPathHead(path) {
63
+ return path.flatMap((seg) => seg.split(".")).filter(Boolean)[0] ?? "";
64
+ }
65
+ //# sourceMappingURL=restricted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restricted.js","sourceRoot":"","sources":["../../src/expression/restricted.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GACpC,kCAAkC,CAAC;AAErC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,MAAM,UAAU,yBAAyB,CAAC,IAAoB;IAC5D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,yBAAyB,CAAC;YACnC,CAAC;YACD,OAAO,CACL,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9E,CAAC;QACJ,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,yBAAyB,CAAC;YACnC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,yBAAyB,CAAC;YACnC,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,OAAO;YACV,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,KAAK,cAAc;YACjB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,yBAAyB,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC"}
@@ -1,4 +1,4 @@
1
- export type ExpressionNode = LiteralExpressionNode | ArrayExpressionNode | ObjectExpressionNode | PropertyExpressionNode | CallExpressionNode | BinaryExpressionNode;
1
+ export type ExpressionNode = LiteralExpressionNode | ArrayExpressionNode | ObjectExpressionNode | PropertyExpressionNode | CallExpressionNode | BinaryExpressionNode | InterpolatedStringNode;
2
2
  export interface BinaryExpressionNode {
3
3
  kind: "binary";
4
4
  operator: "+" | "-" | "*" | "/";
@@ -26,6 +26,10 @@ export interface CallExpressionNode {
26
26
  callee: string;
27
27
  args: ExpressionNode[];
28
28
  }
29
+ export interface InterpolatedStringNode {
30
+ kind: "interpolated";
31
+ parts: ExpressionNode[];
32
+ }
29
33
  export interface ParseExpressionResult {
30
34
  ast: ExpressionNode;
31
35
  resultTypeFqn?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/expression/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,cAAc,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/expression/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,cAAc,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,14 +5,18 @@ export { rootFqnByFilePath, rootFqns } from "./registry/root-fqn.js";
5
5
  export { getExportedFqns } from "./registry/library-exports.js";
6
6
  export { peekLibraryTypeFqn } from "./registry/library-bootstrap.js";
7
7
  export { forkBom } from "./fork/fork-bom.js";
8
- export { resolveEffectiveMembers, resolveContracts, collectBaseTypeChain, memberIdentityKey, } from "./resolve/resolve-effective-members.js";
8
+ export { resolveEffectiveMembers, resolveContracts, collectBaseTypeChain, memberIdentityKey, findLocalMember, } from "./resolve/resolve-effective-members.js";
9
9
  export { parseExpression } from "./expression/parse-expression.js";
10
- export type { ExpressionNode, ParseExpressionResult, ParseExpressionOutcome, } from "./expression/types.js";
10
+ export { parseInterpolatedText } from "./expression/parse-interpolated-text.js";
11
+ export { evaluateExpression, evaluateInterpolatedText, ExpressionEvaluationError, } from "./expression/evaluate-expression.js";
12
+ export type { ExpressionScope } from "./expression/evaluate-expression.js";
13
+ export type { ExpressionNode, InterpolatedStringNode, ParseExpressionResult, ParseExpressionOutcome, } from "./expression/types.js";
11
14
  export { validateTypes, getPropertyNumericValue, isLiteralValue, } from "./validate/validate-types.js";
12
15
  export { validateVersions } from "./validate/validate-versions.js";
13
16
  export { validateConstraints } from "./validate/validate-constraints.js";
14
17
  export { validateEmbeddedBlocks } from "./validate/validate-embedded-blocks.js";
15
18
  export { validateInstances } from "./validate/validate-instances.js";
19
+ export { validateGenerics } from "./validate/validate-generics.js";
16
20
  export { validatePresets } from "./validate/validate-presets.js";
17
21
  export { validateVisibility } from "./validate/validate-visibility.js";
18
22
  export { validateReadOnly } from "./validate/validate-readonly.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/index.js CHANGED
@@ -5,13 +5,16 @@ export { rootFqnByFilePath, rootFqns } from "./registry/root-fqn.js";
5
5
  export { getExportedFqns } from "./registry/library-exports.js";
6
6
  export { peekLibraryTypeFqn } from "./registry/library-bootstrap.js";
7
7
  export { forkBom } from "./fork/fork-bom.js";
8
- export { resolveEffectiveMembers, resolveContracts, collectBaseTypeChain, memberIdentityKey, } from "./resolve/resolve-effective-members.js";
8
+ export { resolveEffectiveMembers, resolveContracts, collectBaseTypeChain, memberIdentityKey, findLocalMember, } from "./resolve/resolve-effective-members.js";
9
9
  export { parseExpression } from "./expression/parse-expression.js";
10
+ export { parseInterpolatedText } from "./expression/parse-interpolated-text.js";
11
+ export { evaluateExpression, evaluateInterpolatedText, ExpressionEvaluationError, } from "./expression/evaluate-expression.js";
10
12
  export { validateTypes, getPropertyNumericValue, isLiteralValue, } from "./validate/validate-types.js";
11
13
  export { validateVersions } from "./validate/validate-versions.js";
12
14
  export { validateConstraints } from "./validate/validate-constraints.js";
13
15
  export { validateEmbeddedBlocks } from "./validate/validate-embedded-blocks.js";
14
16
  export { validateInstances } from "./validate/validate-instances.js";
17
+ export { validateGenerics } from "./validate/validate-generics.js";
15
18
  export { validatePresets } from "./validate/validate-presets.js";
16
19
  export { validateVisibility } from "./validate/validate-visibility.js";
17
20
  export { validateReadOnly } from "./validate/validate-readonly.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,GAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMnE,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,GAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { GenericType, TypeExpression } from "@blockml/bom";
2
+ import type { TypeRegistry } from "../registry/type-registry.js";
3
+ export type GenericApplicationDiagnostic = {
4
+ code: "BML_GENERICS_ARGUMENT_MISMATCH" | "BML_MISSING_GENERIC_TYPE_ARGUMENT" | "BML_GENERIC_CONSTRAINT_VIOLATION";
5
+ message: string;
6
+ };
7
+ export type GenericApplicationResult = {
8
+ bindings: Map<string, TypeExpression>;
9
+ diagnostics: GenericApplicationDiagnostic[];
10
+ };
11
+ /**
12
+ * Bind authored type arguments to declared genericTypes.
13
+ * Authored args win; remaining parameters take defaultType in declaration order.
14
+ */
15
+ export declare function resolveGenericApplication(params: GenericType[], authoredArgs: TypeExpression[], registry: TypeRegistry, namespaceBindings?: Record<string, string>): GenericApplicationResult;
16
+ /** Parameters that do not ground from defaultType alone — the instance is open. */
17
+ export declare function openGenericParameters(params: GenericType[], namespaceBindings?: Record<string, string>): GenericType[];
18
+ //# sourceMappingURL=resolve-generic-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-generic-application.d.ts","sourceRoot":"","sources":["../../src/resolve/resolve-generic-application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EACA,gCAAgC,GAChC,mCAAmC,GACnC,kCAAkC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,WAAW,EAAE,4BAA4B,EAAE,CAAC;CAC7C,CAAC;AAoFF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,EAAE,cAAc,EAAE,EAC9B,QAAQ,EAAE,YAAY,EACtB,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC7C,wBAAwB,CAkD1B;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EAAE,EACrB,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC7C,WAAW,EAAE,CAkBf"}
@@ -0,0 +1,129 @@
1
+ import { parseTypeExpression } from "@blockml/parser";
2
+ import { satisfiesTypeBound } from "./satisfies-type-bound.js";
3
+ function namedFqns(expr) {
4
+ switch (expr.kind) {
5
+ case "named":
6
+ return [expr.fqn];
7
+ case "union":
8
+ return expr.alternatives.flatMap(namedFqns);
9
+ case "grouped":
10
+ return namedFqns(expr.expression);
11
+ default:
12
+ return [];
13
+ }
14
+ }
15
+ function isConcreteType(expr) {
16
+ switch (expr.kind) {
17
+ case "named":
18
+ return true;
19
+ case "union":
20
+ return expr.alternatives.every(isConcreteType);
21
+ case "grouped":
22
+ return isConcreteType(expr.expression);
23
+ default:
24
+ return false;
25
+ }
26
+ }
27
+ function resolveDefaultType(param, params, resolved, bindings, visiting) {
28
+ const raw = param.defaultType?.trim();
29
+ if (!raw) {
30
+ return undefined;
31
+ }
32
+ if (visiting.has(param.name)) {
33
+ return undefined;
34
+ }
35
+ visiting.add(param.name);
36
+ let expr;
37
+ try {
38
+ expr = parseTypeExpression(raw, bindings, "type");
39
+ }
40
+ catch {
41
+ visiting.delete(param.name);
42
+ return undefined;
43
+ }
44
+ if (expr.kind === "genericParam") {
45
+ const sibling = resolved.get(expr.name);
46
+ if (sibling) {
47
+ visiting.delete(param.name);
48
+ return sibling;
49
+ }
50
+ const earlier = params.find((p) => p.name === expr.name);
51
+ if (!earlier || params.indexOf(earlier) >= params.indexOf(param)) {
52
+ visiting.delete(param.name);
53
+ return undefined;
54
+ }
55
+ const fromSibling = resolveDefaultType(earlier, params, resolved, bindings, visiting);
56
+ visiting.delete(param.name);
57
+ return fromSibling;
58
+ }
59
+ visiting.delete(param.name);
60
+ return isConcreteType(expr) ? expr : undefined;
61
+ }
62
+ function argumentSatisfiesBound(arg, boundFqn, registry) {
63
+ const fqns = namedFqns(arg);
64
+ if (fqns.length === 0) {
65
+ return false;
66
+ }
67
+ return fqns.every((fqn) => satisfiesTypeBound(fqn, boundFqn, registry));
68
+ }
69
+ /**
70
+ * Bind authored type arguments to declared genericTypes.
71
+ * Authored args win; remaining parameters take defaultType in declaration order.
72
+ */
73
+ export function resolveGenericApplication(params, authoredArgs, registry, namespaceBindings = {}) {
74
+ const diagnostics = [];
75
+ const bindings = new Map();
76
+ if (authoredArgs.length > params.length) {
77
+ diagnostics.push({
78
+ code: "BML_GENERICS_ARGUMENT_MISMATCH",
79
+ message: `bml:generics has ${authoredArgs.length} argument(s); expected at most ${params.length}`,
80
+ });
81
+ return { bindings, diagnostics };
82
+ }
83
+ for (let i = 0; i < params.length; i++) {
84
+ const param = params[i];
85
+ const authored = authoredArgs[i];
86
+ if (authored) {
87
+ bindings.set(param.name, authored);
88
+ continue;
89
+ }
90
+ const fallback = resolveDefaultType(param, params, bindings, namespaceBindings, new Set());
91
+ if (fallback) {
92
+ bindings.set(param.name, fallback);
93
+ continue;
94
+ }
95
+ diagnostics.push({
96
+ code: "BML_MISSING_GENERIC_TYPE_ARGUMENT",
97
+ message: `Missing generic type argument for ${param.name}`,
98
+ });
99
+ }
100
+ for (const param of params) {
101
+ const bound = bindings.get(param.name);
102
+ if (!bound) {
103
+ continue;
104
+ }
105
+ if (!argumentSatisfiesBound(bound, param.baseType, registry)) {
106
+ diagnostics.push({
107
+ code: "BML_GENERIC_CONSTRAINT_VIOLATION",
108
+ message: `Type argument for ${param.name} does not satisfy bound ${param.baseType}`,
109
+ });
110
+ }
111
+ }
112
+ return { bindings, diagnostics };
113
+ }
114
+ /** Parameters that do not ground from defaultType alone — the instance is open. */
115
+ export function openGenericParameters(params, namespaceBindings = {}) {
116
+ const resolved = new Map();
117
+ const open = [];
118
+ for (const param of params) {
119
+ const fallback = resolveDefaultType(param, params, resolved, namespaceBindings, new Set());
120
+ if (fallback) {
121
+ resolved.set(param.name, fallback);
122
+ }
123
+ else {
124
+ open.push(param);
125
+ }
126
+ }
127
+ return open;
128
+ }
129
+ //# sourceMappingURL=resolve-generic-application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-generic-application.js","sourceRoot":"","sources":["../../src/resolve/resolve-generic-application.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAe/D,SAAS,SAAS,CAAC,IAAoB;IACrC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAoB;IAC1C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACjD,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAkB,EAClB,MAAqB,EACrB,QAAqC,EACrC,QAAgC,EAChC,QAAqB;IAErB,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,IAAoB,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtF,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAmB,EACnB,QAAgB,EAChB,QAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAqB,EACrB,YAA8B,EAC9B,QAAsB,EACtB,oBAA4C,EAAE;IAE9C,MAAM,WAAW,GAAmC,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnD,IAAI,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,oBAAoB,YAAY,CAAC,MAAM,kCAAkC,MAAM,CAAC,MAAM,EAAE;SAClG,CAAC,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CACjC,KAAK,EACL,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,IAAI,GAAG,EAAE,CACV,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QACD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,qCAAqC,KAAK,CAAC,IAAI,EAAE;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC7D,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,kCAAkC;gBACxC,OAAO,EAAE,qBAAqB,KAAK,CAAC,IAAI,2BAA2B,KAAK,CAAC,QAAQ,EAAE;aACpF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CACnC,MAAqB,EACrB,oBAA4C,EAAE;IAE9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,kBAAkB,CACjC,KAAK,EACL,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,IAAI,GAAG,EAAE,CACV,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TypeRegistry } from "../registry/type-registry.js";
2
+ /** G on T's baseType chain, or G ∈ T.contracts[] (direct only). */
3
+ export declare function satisfiesTypeBound(typeFqn: string, boundFqn: string, registry: TypeRegistry): boolean;
4
+ //# sourceMappingURL=satisfies-type-bound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"satisfies-type-bound.d.ts","sourceRoot":"","sources":["../../src/resolve/satisfies-type-bound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,mEAAmE;AACnE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAgBT"}
@@ -0,0 +1,20 @@
1
+ import { collectBaseTypeChain } from "./resolve-effective-members.js";
2
+ /** G on T's baseType chain, or G ∈ T.contracts[] (direct only). */
3
+ export function satisfiesTypeBound(typeFqn, boundFqn, registry) {
4
+ if (typeFqn === boundFqn) {
5
+ return true;
6
+ }
7
+ const start = registry.get(typeFqn)?.block;
8
+ if (!start) {
9
+ return false;
10
+ }
11
+ if ((start.contracts ?? []).some((c) => c.value === boundFqn)) {
12
+ return true;
13
+ }
14
+ const chain = collectBaseTypeChain(start, registry);
15
+ if (chain.some((b) => b.type === boundFqn)) {
16
+ return true;
17
+ }
18
+ return chain[0]?.baseType === boundFqn;
19
+ }
20
+ //# sourceMappingURL=satisfies-type-bound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"satisfies-type-bound.js","sourceRoot":"","sources":["../../src/resolve/satisfies-type-bound.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,QAAgB,EAChB,QAAsB;IAEtB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAC;AACzC,CAAC"}
@@ -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 validateGenerics(document: BomDocument, registry: TypeRegistry): Diagnostic[];
4
+ //# sourceMappingURL=validate-generics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-generics.d.ts","sourceRoot":"","sources":["../../src/validate/validate-generics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAGX,UAAU,EAKX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAmQjE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,GACrB,UAAU,EAAE,CAKd"}
@@ -0,0 +1,141 @@
1
+ import { resolveEffectiveMembers } from "../resolve/resolve-effective-members.js";
2
+ import { openGenericParameters, resolveGenericApplication, } from "../resolve/resolve-generic-application.js";
3
+ const TYPE_REFERENCE_ENTITY = "org.blockml.bml.type.TypeReferenceEntity";
4
+ function diag(code, message, file, loc) {
5
+ return {
6
+ severity: "error",
7
+ code,
8
+ message,
9
+ source: {
10
+ file: loc?.file ?? file,
11
+ line: loc?.line ?? 1,
12
+ column: loc?.column ?? 1,
13
+ ...(loc?.endLine !== undefined ? { endLine: loc.endLine } : {}),
14
+ ...(loc?.endColumn !== undefined ? { endColumn: loc.endColumn } : {}),
15
+ },
16
+ };
17
+ }
18
+ function reportNotAllowed(binding, file, diagnostics) {
19
+ diagnostics.push(diag("BML_GENERICS_DIRECTIVE_NOT_ALLOWED", "bml:generics is only allowed on Block instances", file, binding.source));
20
+ }
21
+ function isTypeReferenceEntityType(expr) {
22
+ if (!expr) {
23
+ return false;
24
+ }
25
+ if (expr.kind === "grouped") {
26
+ return isTypeReferenceEntityType(expr.expression);
27
+ }
28
+ return expr.kind === "named" && expr.fqn === TYPE_REFERENCE_ENTITY;
29
+ }
30
+ function aggregationIsTypeReferenceEntity(owner, aggregationName, registry) {
31
+ if (!owner) {
32
+ return false;
33
+ }
34
+ const member = resolveEffectiveMembers(owner, registry).find((m) => m.kind === "aggregation" && m.name === aggregationName);
35
+ return member?.kind === "aggregation" && isTypeReferenceEntityType(member.type);
36
+ }
37
+ function validateInstanceGenerics(instance, registry, file, diagnostics) {
38
+ const typeDoc = registry.get(instance.typeFqn);
39
+ const params = typeDoc?.block.genericTypes ?? [];
40
+ const typeBindings = typeDoc?.source.namespaceBindings ?? {};
41
+ const open = openGenericParameters(params, typeBindings);
42
+ const binding = instance.generics;
43
+ if (!binding) {
44
+ if (open.length > 0) {
45
+ diagnostics.push(diag("BML_OPEN_GENERIC_INSTANCE", `Instance of ${instance.typeFqn} has open genericTypes and requires bml:generics`, file, instance.source));
46
+ }
47
+ return;
48
+ }
49
+ if (params.length === 0) {
50
+ diagnostics.push(diag("BML_GENERICS_ARGUMENT_MISMATCH", `bml:generics is not applicable; ${instance.typeFqn} has no genericTypes`, file, binding.source));
51
+ return;
52
+ }
53
+ if (binding.arguments === undefined) {
54
+ const raw = binding.raw.trim();
55
+ if (raw.startsWith("(") && raw.endsWith(")")) {
56
+ return;
57
+ }
58
+ diagnostics.push(diag("BML_GENERICS_ARGUMENT_MISMATCH", "bml:generics must be a parenthesized TypeExpression list", file, binding.source));
59
+ return;
60
+ }
61
+ const resolved = resolveGenericApplication(params, binding.arguments, registry, typeBindings);
62
+ for (const item of resolved.diagnostics) {
63
+ diagnostics.push(diag(item.code, item.message, file, binding.source));
64
+ }
65
+ }
66
+ function walkCompositionNodes(nodes, registry, file, diagnostics, typeReferenceEntityAggregation) {
67
+ for (const node of nodes) {
68
+ if (node.kind === "virtualContainer") {
69
+ if (node.generics) {
70
+ reportNotAllowed(node.generics, file, diagnostics);
71
+ }
72
+ walkCompositionNodes(node.children, registry, file, diagnostics, typeReferenceEntityAggregation);
73
+ continue;
74
+ }
75
+ if (typeReferenceEntityAggregation) {
76
+ if (node.instance.generics) {
77
+ reportNotAllowed(node.instance.generics, file, diagnostics);
78
+ }
79
+ for (const agg of node.instance.aggregationCompositions ?? []) {
80
+ walkCompositionTemplate(agg.composition, registry, file, diagnostics, true, true);
81
+ }
82
+ continue;
83
+ }
84
+ validateInstanceGenerics(node.instance, registry, file, diagnostics);
85
+ const instanceType = registry.get(node.instance.typeFqn)?.block;
86
+ for (const agg of node.instance.aggregationCompositions ?? []) {
87
+ walkCompositionTemplate(agg.composition, registry, file, diagnostics, true, aggregationIsTypeReferenceEntity(instanceType, agg.aggregationName, registry));
88
+ }
89
+ }
90
+ }
91
+ function walkCompositionTemplate(template, registry, file, diagnostics, wrapperIsIllegalHost, typeReferenceEntityAggregation) {
92
+ if (wrapperIsIllegalHost && template.generics) {
93
+ reportNotAllowed(template.generics, file, diagnostics);
94
+ }
95
+ walkCompositionNodes(template.children, registry, file, diagnostics, typeReferenceEntityAggregation);
96
+ }
97
+ function walkConstraintInstance(instance, file, diagnostics) {
98
+ if (instance.generics) {
99
+ reportNotAllowed(instance.generics, file, diagnostics);
100
+ }
101
+ }
102
+ function walkMember(member, file, diagnostics) {
103
+ if (member.generics) {
104
+ reportNotAllowed(member.generics, file, diagnostics);
105
+ }
106
+ for (const instance of member.constraints ?? []) {
107
+ walkConstraintInstance(instance, file, diagnostics);
108
+ }
109
+ if (member.kind === "property") {
110
+ for (const instance of member.suggestions ?? []) {
111
+ walkConstraintInstance(instance, file, diagnostics);
112
+ }
113
+ }
114
+ }
115
+ function walkBlock(block, registry, file, diagnostics) {
116
+ if (block.generics) {
117
+ reportNotAllowed(block.generics, file, diagnostics);
118
+ }
119
+ for (const member of block.members) {
120
+ walkMember(member, file, diagnostics);
121
+ }
122
+ for (const template of block.compositions) {
123
+ walkCompositionTemplate(template, registry, file, diagnostics, true, aggregationIsTypeReferenceEntity(block, template.aggregationName, registry));
124
+ }
125
+ for (const instance of block.constraints ?? []) {
126
+ walkConstraintInstance(instance, file, diagnostics);
127
+ }
128
+ for (const sub of block.subBlocks) {
129
+ walkBlock(sub, registry, file, diagnostics);
130
+ }
131
+ for (const embedded of block.embeddedBlocks) {
132
+ walkBlock(embedded, registry, file, diagnostics);
133
+ }
134
+ }
135
+ export function validateGenerics(document, registry) {
136
+ const diagnostics = [];
137
+ const file = document.source.filePath ?? "<memory>";
138
+ walkBlock(document.block, registry, file, diagnostics);
139
+ return diagnostics;
140
+ }
141
+ //# sourceMappingURL=validate-generics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-generics.js","sourceRoot":"","sources":["../../src/validate/validate-generics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-types.d.ts","sourceRoot":"","sources":["../../src/validate/validate-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EACX,UAAU,EAEV,YAAY,EAEZ,WAAW,EACX,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAqRjE,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,GACrB,UAAU,EAAE,CAYd;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAYpF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,GAAG,IAAI,YAAY,CAEhF"}
1
+ {"version":3,"file":"validate-types.d.ts","sourceRoot":"","sources":["../../src/validate/validate-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAEX,UAAU,EAGV,YAAY,EAEZ,WAAW,EACX,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA+ajE,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,GACrB,UAAU,EAAE,CAYd;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAYpF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,GAAG,IAAI,YAAY,CAEhF"}