@tsonic/frontend 0.0.64 → 0.0.66
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/dist/.tsbuildinfo +1 -1
- package/dist/dependency-graph.d.ts +1 -1
- package/dist/dependency-graph.d.ts.map +1 -1
- package/dist/dependency-graph.js +1 -1
- package/dist/dependency-graph.js.map +1 -1
- package/dist/graph/extraction/imports.d.ts +0 -5
- package/dist/graph/extraction/imports.d.ts.map +1 -1
- package/dist/graph/extraction/imports.js +0 -35
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/index.d.ts +1 -1
- package/dist/graph/extraction/index.d.ts.map +1 -1
- package/dist/graph/extraction/index.js +1 -1
- package/dist/graph/extraction/index.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +1 -7
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/graph/extraction.d.ts +1 -1
- package/dist/graph/extraction.d.ts.map +1 -1
- package/dist/graph/extraction.js +1 -1
- package/dist/graph/extraction.js.map +1 -1
- package/dist/ir/binding/binding-types.d.ts +2 -2
- package/dist/ir/binding/binding-types.d.ts.map +1 -1
- package/dist/ir/binding-resolution.test.js +176 -48
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/bindings-disambiguation.test.js +149 -0
- package/dist/ir/bindings-disambiguation.test.js.map +1 -1
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +76 -52
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder.test.js +118 -0
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access/access-converter.js +1 -1
- package/dist/ir/converters/expressions/access/access-converter.js.map +1 -1
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts +2 -2
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access/binding-resolution.js +122 -78
- package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -1
- package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access/member-resolution.js +8 -0
- package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -1
- package/dist/ir/converters/expressions/calls/call-converter.js +3 -3
- package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.js +110 -2
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +8 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.js +10 -12
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
- package/dist/ir/type-system/internal/type-registry.d.ts +3 -2
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-registry.js +7 -3
- package/dist/ir/type-system/internal/type-registry.js.map +1 -1
- package/dist/ir/type-system/internal/universe/alias-table.js +2 -2
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.js +16 -2
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.test.d.ts +2 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.test.js +55 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.test.js.map +1 -0
- package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -1
- package/dist/ir/type-system/type-system-call-resolution.js +134 -5
- package/dist/ir/type-system/type-system-call-resolution.js.map +1 -1
- package/dist/ir/type-system/type-system-inference.d.ts.map +1 -1
- package/dist/ir/type-system/type-system-inference.js +10 -2
- package/dist/ir/type-system/type-system-inference.js.map +1 -1
- package/dist/ir/type-system/type-system-state.d.ts +5 -0
- package/dist/ir/type-system/type-system-state.d.ts.map +1 -1
- package/dist/ir/type-system/type-system-state.js +33 -17
- package/dist/ir/type-system/type-system-state.js.map +1 -1
- package/dist/ir/type-system/type-system.d.ts.map +1 -1
- package/dist/ir/type-system/type-system.js.map +1 -1
- package/dist/ir/types/expressions.d.ts +1 -0
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +1 -0
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +11 -2
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +23 -0
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/program/binding-loader.d.ts +3 -3
- package/dist/program/binding-loader.d.ts.map +1 -1
- package/dist/program/binding-loader.js +41 -23
- package/dist/program/binding-loader.js.map +1 -1
- package/dist/program/binding-registry.d.ts +7 -0
- package/dist/program/binding-registry.d.ts.map +1 -1
- package/dist/program/binding-registry.js +52 -1
- package/dist/program/binding-registry.js.map +1 -1
- package/dist/program/binding-types.d.ts +1 -0
- package/dist/program/binding-types.d.ts.map +1 -1
- package/dist/program/binding-types.js.map +1 -1
- package/dist/program/bindings.test.js +210 -0
- package/dist/program/bindings.test.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +292 -161
- package/dist/program/creation.js.map +1 -1
- package/dist/program/creation.test.js +276 -19
- package/dist/program/creation.test.js.map +1 -1
- package/dist/program/metadata.d.ts.map +1 -1
- package/dist/program/metadata.js +72 -15
- package/dist/program/metadata.js.map +1 -1
- package/dist/program/metadata.test.d.ts +2 -0
- package/dist/program/metadata.test.d.ts.map +1 -0
- package/dist/program/metadata.test.js +104 -0
- package/dist/program/metadata.test.js.map +1 -0
- package/dist/program/package-roots.d.ts +2 -0
- package/dist/program/package-roots.d.ts.map +1 -0
- package/dist/program/package-roots.js +88 -0
- package/dist/program/package-roots.js.map +1 -0
- package/dist/program/types.d.ts +1 -1
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +42 -4
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +0 -2
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +2 -9
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver.test.js +50 -78
- package/dist/resolver.test.js.map +1 -1
- package/dist/surface/profiles.d.ts +6 -3
- package/dist/surface/profiles.d.ts.map +1 -1
- package/dist/surface/profiles.js +177 -28
- package/dist/surface/profiles.js.map +1 -1
- package/dist/surface/profiles.test.js +98 -17
- package/dist/surface/profiles.test.js.map +1 -1
- package/dist/validation/features.d.ts.map +1 -1
- package/dist/validation/features.js +1 -23
- package/dist/validation/features.js.map +1 -1
- package/dist/validation/features.test.js +4 -4
- package/dist/validation/features.test.js.map +1 -1
- package/dist/validation/imports.d.ts.map +1 -1
- package/dist/validation/imports.js +7 -16
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/imports.test.js +74 -66
- package/dist/validation/imports.test.js.map +1 -1
- package/dist/validator.maximus.test.js +17 -5
- package/dist/validator.maximus.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/ir/converters/context.d.ts +0 -40
- package/dist/ir/converters/context.d.ts.map +0 -1
- package/dist/ir/converters/context.js +0 -25
- package/dist/ir/converters/context.js.map +0 -1
- package/dist/resolver/node-module-aliases.d.ts +0 -6
- package/dist/resolver/node-module-aliases.d.ts.map +0 -1
- package/dist/resolver/node-module-aliases.js +0 -164
- package/dist/resolver/node-module-aliases.js.map +0 -1
- package/dist/resolver/node-module-aliases.test.d.ts +0 -2
- package/dist/resolver/node-module-aliases.test.d.ts.map +0 -1
- package/dist/resolver/node-module-aliases.test.js +0 -64
- package/dist/resolver/node-module-aliases.test.js.map +0 -1
- package/dist/surface/js-surface-shims.d.ts +0 -3
- package/dist/surface/js-surface-shims.d.ts.map +0 -1
- package/dist/surface/js-surface-shims.js +0 -332
- package/dist/surface/js-surface-shims.js.map +0 -1
- package/dist/surface/js-surface-shims.test.d.ts +0 -2
- package/dist/surface/js-surface-shims.test.d.ts.map +0 -1
- package/dist/surface/js-surface-shims.test.js +0 -53
- package/dist/surface/js-surface-shims.test.js.map +0 -1
- package/dist/validation/unsupported-utility-types.d.ts +0 -40
- package/dist/validation/unsupported-utility-types.d.ts.map +0 -1
- package/dist/validation/unsupported-utility-types.js +0 -43
- package/dist/validation/unsupported-utility-types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/graph/extraction/imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAA0B,EAC1B,UAAyB,EACzB,OAAsB,EACP,EAAE;IACjB,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,aAAa,CAC1B,SAAS,EACT,UAAU,CAAC,QAAQ,EACnB,OAAO,CAAC,OAAO,CAAC,UAAU,EAC1B;QACE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/graph/extraction/imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAA0B,EAC1B,UAAyB,EACzB,OAAsB,EACP,EAAE;IACjB,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,aAAa,CAC1B,SAAS,EACT,UAAU,CAAC,QAAQ,EACnB,OAAO,CAAC,OAAO,CAAC,UAAU,EAC1B;QACE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CACF,CAAC;IAEF,MAAM,aAAa,GACjB,EAAE,CAAC;IAEL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,iBAAiB;QACjB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI;aACnC,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1D,4BAA4B;gBAC5B,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI;iBACjD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9D,kCAAkC;gBAClC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxD,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;wBAC3C,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBACtD,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;gBACxB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;oBAClB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,aAAa;YACnB,SAAS;YACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,SAAS;YACpD,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;YACzC,aAAa;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Module extraction - Public API
|
|
3
3
|
*/
|
|
4
4
|
export { extractModuleInfo } from "./orchestrator.js";
|
|
5
|
-
export { extractImport
|
|
5
|
+
export { extractImport } from "./imports.js";
|
|
6
6
|
export { extractExport } from "./exports.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Module extraction - Public API
|
|
3
3
|
*/
|
|
4
4
|
export { extractModuleInfo } from "./orchestrator.js";
|
|
5
|
-
export { extractImport
|
|
5
|
+
export { extractImport } from "./imports.js";
|
|
6
6
|
export { extractExport } from "./exports.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAMnE;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,KACrB,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAMnE;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,KACrB,UA4FF,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import * as ts from "typescript";
|
|
5
5
|
import { getNamespaceFromPath, getClassNameFromPath } from "../../resolver.js";
|
|
6
6
|
import { hasExportModifier, isTopLevelCode } from "../helpers.js";
|
|
7
|
-
import {
|
|
7
|
+
import { extractImport } from "./imports.js";
|
|
8
8
|
import { extractExport } from "./exports.js";
|
|
9
9
|
/**
|
|
10
10
|
* Extract module information from a TypeScript source file
|
|
@@ -29,12 +29,6 @@ export const extractModuleInfo = (sourceFile, program) => {
|
|
|
29
29
|
addImport(imp);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
if (ts.isCallExpression(node)) {
|
|
33
|
-
const dynamicImp = extractDynamicImport(node, sourceFile, program);
|
|
34
|
-
if (dynamicImp) {
|
|
35
|
-
addImport(dynamicImp);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
32
|
// Extract exports
|
|
39
33
|
if (ts.isExportDeclaration(node)) {
|
|
40
34
|
const exp = extractExport(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Module information extraction from TypeScript source files
|
|
3
3
|
* Main dispatcher - re-exports from extraction/ subdirectory
|
|
4
4
|
*/
|
|
5
|
-
export { extractModuleInfo, extractImport,
|
|
5
|
+
export { extractModuleInfo, extractImport, extractExport, } from "./extraction/index.js";
|
|
6
6
|
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,uBAAuB,CAAC"}
|
package/dist/graph/extraction.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Module information extraction from TypeScript source files
|
|
3
3
|
* Main dispatcher - re-exports from extraction/ subdirectory
|
|
4
4
|
*/
|
|
5
|
-
export { extractModuleInfo, extractImport,
|
|
5
|
+
export { extractModuleInfo, extractImport, extractExport, } from "./extraction/index.js";
|
|
6
6
|
//# sourceMappingURL=extraction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,uBAAuB,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import ts from "typescript";
|
|
9
9
|
import type { DeclId, SignatureId, MemberId, TypeSyntaxId } from "../type-system/types.js";
|
|
10
|
-
import type { DeclKind, ParameterNode, TypeParameterNode, SignatureTypePredicate, ClassMemberNames } from "../type-system/internal/handle-types.js";
|
|
10
|
+
import type { DeclKind, ParameterNode, TypeParameterNode, SignatureTypePredicate, ClassMemberNames, HandleRegistry } from "../type-system/internal/handle-types.js";
|
|
11
11
|
/**
|
|
12
12
|
* Binding interface — wraps TS symbol resolution APIs.
|
|
13
13
|
*
|
|
@@ -147,7 +147,7 @@ export type BindingInternal = Binding & {
|
|
|
147
147
|
* Only createTypeSystem() should call this to access declaration info.
|
|
148
148
|
* All other code should use TypeSystem queries instead.
|
|
149
149
|
*/
|
|
150
|
-
_getHandleRegistry():
|
|
150
|
+
_getHandleRegistry(): HandleRegistry;
|
|
151
151
|
};
|
|
152
152
|
/**
|
|
153
153
|
* Type predicate information for `x is T` predicates.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-types.d.ts","sourceRoot":"","sources":["../../../src/ir/binding/binding-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,QAAQ,EACR,YAAY,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"binding-types.d.ts","sourceRoot":"","sources":["../../../src/ir/binding/binding-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -529,9 +529,161 @@ describe("Binding Resolution in IR", () => {
|
|
|
529
529
|
// unknownMember is not in the bindings, so memberBinding should be undefined
|
|
530
530
|
expect(memberExpr.memberBinding).to.equal(undefined);
|
|
531
531
|
});
|
|
532
|
+
it("should resolve simple binding staticType for global static member access", () => {
|
|
533
|
+
const source = `
|
|
534
|
+
interface ArrayLike<T> {
|
|
535
|
+
readonly length: number;
|
|
536
|
+
readonly [n: number]: T;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
interface ArrayConstructor {
|
|
540
|
+
from<T>(source: ArrayLike<T>): T[];
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
declare const Array: ArrayConstructor;
|
|
544
|
+
|
|
545
|
+
export function test(values: string[]): string[] {
|
|
546
|
+
return Array.from(values);
|
|
547
|
+
}
|
|
548
|
+
`;
|
|
549
|
+
const bindings = new BindingRegistry();
|
|
550
|
+
bindings.addBindings("/test/simple-array.json", {
|
|
551
|
+
bindings: {
|
|
552
|
+
Array: {
|
|
553
|
+
kind: "global",
|
|
554
|
+
assembly: "Acme.Runtime",
|
|
555
|
+
type: "Acme.Runtime.JSArray`1",
|
|
556
|
+
staticType: "Acme.Runtime.JSArrayStatics",
|
|
557
|
+
},
|
|
558
|
+
},
|
|
559
|
+
});
|
|
560
|
+
bindings.addBindings("/test/acme-array/bindings.json", {
|
|
561
|
+
namespace: "Acme.Runtime",
|
|
562
|
+
types: [
|
|
563
|
+
{
|
|
564
|
+
clrName: "Acme.Runtime.JSArray`1",
|
|
565
|
+
assemblyName: "Acme.Runtime",
|
|
566
|
+
methods: [
|
|
567
|
+
{
|
|
568
|
+
clrName: "map",
|
|
569
|
+
declaringClrType: "Acme.Runtime.JSArray`1",
|
|
570
|
+
declaringAssemblyName: "Acme.Runtime",
|
|
571
|
+
},
|
|
572
|
+
],
|
|
573
|
+
properties: [],
|
|
574
|
+
fields: [],
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
clrName: "Acme.Runtime.JSArrayStatics",
|
|
578
|
+
assemblyName: "Acme.Runtime",
|
|
579
|
+
methods: [
|
|
580
|
+
{
|
|
581
|
+
clrName: "from",
|
|
582
|
+
declaringClrType: "Acme.Runtime.JSArrayStatics",
|
|
583
|
+
declaringAssemblyName: "Acme.Runtime",
|
|
584
|
+
},
|
|
585
|
+
],
|
|
586
|
+
properties: [],
|
|
587
|
+
fields: [],
|
|
588
|
+
},
|
|
589
|
+
],
|
|
590
|
+
});
|
|
591
|
+
const { testProgram, ctx, options } = createTestProgram(source, bindings);
|
|
592
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
593
|
+
if (!sourceFile)
|
|
594
|
+
throw new Error("Failed to create source file");
|
|
595
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
596
|
+
expect(result.ok).to.equal(true);
|
|
597
|
+
if (!result.ok)
|
|
598
|
+
return;
|
|
599
|
+
const module = result.value;
|
|
600
|
+
const funcDecl = module.body[0];
|
|
601
|
+
if (funcDecl?.kind !== "functionDeclaration")
|
|
602
|
+
return;
|
|
603
|
+
const returnStmt = funcDecl.body.statements[0];
|
|
604
|
+
if (returnStmt?.kind !== "returnStatement" || !returnStmt.expression)
|
|
605
|
+
return;
|
|
606
|
+
const callExpr = returnStmt.expression;
|
|
607
|
+
if (callExpr.kind !== "call")
|
|
608
|
+
return;
|
|
609
|
+
const memberExpr = callExpr.callee;
|
|
610
|
+
if (memberExpr.kind !== "memberAccess")
|
|
611
|
+
return;
|
|
612
|
+
expect(memberExpr.memberBinding).to.not.equal(undefined);
|
|
613
|
+
expect(memberExpr.memberBinding?.type).to.equal("Acme.Runtime.JSArrayStatics");
|
|
614
|
+
expect(memberExpr.memberBinding?.member).to.equal("from");
|
|
615
|
+
});
|
|
532
616
|
});
|
|
533
617
|
describe("Extension Method Binding Resolution", () => {
|
|
534
|
-
it("should
|
|
618
|
+
it("should prefer surface wrapper bindings for numeric primitive instance methods", () => {
|
|
619
|
+
const source = `
|
|
620
|
+
interface Number { toString(): string; }
|
|
621
|
+
|
|
622
|
+
export function test(value: number): string {
|
|
623
|
+
return value.toString();
|
|
624
|
+
}
|
|
625
|
+
`;
|
|
626
|
+
const bindings = new BindingRegistry();
|
|
627
|
+
bindings.addBindings("/test/Tsonic.JSRuntime/bindings.json", {
|
|
628
|
+
bindings: {
|
|
629
|
+
Number: {
|
|
630
|
+
kind: "global",
|
|
631
|
+
assembly: "Tsonic.JSRuntime",
|
|
632
|
+
type: "Tsonic.JSRuntime.Number",
|
|
633
|
+
},
|
|
634
|
+
},
|
|
635
|
+
namespace: "Tsonic.JSRuntime",
|
|
636
|
+
types: [
|
|
637
|
+
{
|
|
638
|
+
clrName: "Tsonic.JSRuntime.Number",
|
|
639
|
+
assemblyName: "Tsonic.JSRuntime",
|
|
640
|
+
methods: [
|
|
641
|
+
{
|
|
642
|
+
clrName: "toString",
|
|
643
|
+
normalizedSignature: "toString|(System.Double):System.String|static=true",
|
|
644
|
+
parameterCount: 1,
|
|
645
|
+
declaringClrType: "Tsonic.JSRuntime.Number",
|
|
646
|
+
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
647
|
+
isExtensionMethod: true,
|
|
648
|
+
},
|
|
649
|
+
],
|
|
650
|
+
properties: [],
|
|
651
|
+
fields: [],
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
clrName: "System.Double",
|
|
655
|
+
assemblyName: "System.Private.CoreLib",
|
|
656
|
+
methods: [],
|
|
657
|
+
properties: [],
|
|
658
|
+
fields: [],
|
|
659
|
+
},
|
|
660
|
+
],
|
|
661
|
+
});
|
|
662
|
+
const { testProgram, ctx, options } = createTestProgram(source, bindings);
|
|
663
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
664
|
+
if (!sourceFile)
|
|
665
|
+
throw new Error("Failed to create source file");
|
|
666
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
667
|
+
expect(result.ok).to.equal(true);
|
|
668
|
+
if (!result.ok)
|
|
669
|
+
return;
|
|
670
|
+
const module = result.value;
|
|
671
|
+
const funcDecl = module.body[0];
|
|
672
|
+
if (funcDecl?.kind !== "functionDeclaration")
|
|
673
|
+
return;
|
|
674
|
+
const returnStmt = funcDecl.body.statements[0];
|
|
675
|
+
if (returnStmt?.kind !== "returnStatement" || !returnStmt.expression)
|
|
676
|
+
return;
|
|
677
|
+
if (returnStmt.expression.kind !== "call")
|
|
678
|
+
return;
|
|
679
|
+
if (returnStmt.expression.callee.kind !== "memberAccess")
|
|
680
|
+
return;
|
|
681
|
+
expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
|
|
682
|
+
expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
683
|
+
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.Number");
|
|
684
|
+
expect(returnStmt.expression.callee.memberBinding?.member).to.equal("toString");
|
|
685
|
+
});
|
|
686
|
+
it("should resolve primitive receiver extension methods via bindings", () => {
|
|
535
687
|
const source = `
|
|
536
688
|
interface String { trim(): string; }
|
|
537
689
|
|
|
@@ -544,14 +696,14 @@ describe("Binding Resolution in IR", () => {
|
|
|
544
696
|
namespace: "Tsonic.JSRuntime",
|
|
545
697
|
types: [
|
|
546
698
|
{
|
|
547
|
-
clrName: "
|
|
699
|
+
clrName: "System.String",
|
|
548
700
|
assemblyName: "Tsonic.JSRuntime",
|
|
549
701
|
methods: [
|
|
550
702
|
{
|
|
551
703
|
clrName: "trim",
|
|
552
704
|
normalizedSignature: "trim|(System.String):System.String|static=true",
|
|
553
705
|
parameterCount: 1,
|
|
554
|
-
declaringClrType: "Tsonic.JSRuntime.
|
|
706
|
+
declaringClrType: "Tsonic.JSRuntime.StringExtensions",
|
|
555
707
|
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
556
708
|
isExtensionMethod: true,
|
|
557
709
|
},
|
|
@@ -561,19 +713,11 @@ describe("Binding Resolution in IR", () => {
|
|
|
561
713
|
},
|
|
562
714
|
],
|
|
563
715
|
});
|
|
564
|
-
const { testProgram, options } = createTestProgram(source, bindings);
|
|
716
|
+
const { testProgram, ctx, options } = createTestProgram(source, bindings);
|
|
565
717
|
const sourceFile = testProgram.sourceFiles[0];
|
|
566
718
|
if (!sourceFile)
|
|
567
719
|
throw new Error("Failed to create source file");
|
|
568
|
-
const
|
|
569
|
-
...testProgram,
|
|
570
|
-
options: {
|
|
571
|
-
...testProgram.options,
|
|
572
|
-
surface: "js",
|
|
573
|
-
},
|
|
574
|
-
};
|
|
575
|
-
const ctx = createProgramContext(jsProgram, options);
|
|
576
|
-
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
720
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
577
721
|
expect(result.ok).to.equal(true);
|
|
578
722
|
if (!result.ok)
|
|
579
723
|
return;
|
|
@@ -590,10 +734,10 @@ describe("Binding Resolution in IR", () => {
|
|
|
590
734
|
return;
|
|
591
735
|
expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
|
|
592
736
|
expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
593
|
-
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.
|
|
737
|
+
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.StringExtensions");
|
|
594
738
|
expect(returnStmt.expression.callee.memberBinding?.member).to.equal("trim");
|
|
595
739
|
});
|
|
596
|
-
it("should
|
|
740
|
+
it("should resolve the same extension methods regardless of selected surface", () => {
|
|
597
741
|
const source = `
|
|
598
742
|
interface String { trim(): string; }
|
|
599
743
|
|
|
@@ -606,14 +750,14 @@ describe("Binding Resolution in IR", () => {
|
|
|
606
750
|
namespace: "Tsonic.JSRuntime",
|
|
607
751
|
types: [
|
|
608
752
|
{
|
|
609
|
-
clrName: "
|
|
753
|
+
clrName: "System.String",
|
|
610
754
|
assemblyName: "Tsonic.JSRuntime",
|
|
611
755
|
methods: [
|
|
612
756
|
{
|
|
613
757
|
clrName: "trim",
|
|
614
758
|
normalizedSignature: "trim|(System.String):System.String|static=true",
|
|
615
759
|
parameterCount: 1,
|
|
616
|
-
declaringClrType: "Tsonic.JSRuntime.
|
|
760
|
+
declaringClrType: "Tsonic.JSRuntime.StringExtensions",
|
|
617
761
|
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
618
762
|
isExtensionMethod: true,
|
|
619
763
|
},
|
|
@@ -631,7 +775,7 @@ describe("Binding Resolution in IR", () => {
|
|
|
631
775
|
...testProgram,
|
|
632
776
|
options: {
|
|
633
777
|
...testProgram.options,
|
|
634
|
-
surface: "nodejs",
|
|
778
|
+
surface: "@tsonic/nodejs",
|
|
635
779
|
},
|
|
636
780
|
};
|
|
637
781
|
const ctx = createProgramContext(jsProgram, options);
|
|
@@ -652,7 +796,7 @@ describe("Binding Resolution in IR", () => {
|
|
|
652
796
|
return;
|
|
653
797
|
expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
|
|
654
798
|
expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
655
|
-
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.
|
|
799
|
+
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.StringExtensions");
|
|
656
800
|
expect(returnStmt.expression.callee.memberBinding?.member).to.equal("trim");
|
|
657
801
|
});
|
|
658
802
|
it("should resolve instance-style tsbindgen extension methods via __Ext_* container", () => {
|
|
@@ -813,7 +957,7 @@ describe("Binding Resolution in IR", () => {
|
|
|
813
957
|
"out",
|
|
814
958
|
]);
|
|
815
959
|
});
|
|
816
|
-
it("should resolve
|
|
960
|
+
it("should resolve numeric primitive extension methods via bindings", () => {
|
|
817
961
|
const source = `
|
|
818
962
|
interface Number { toFixed(fractionDigits?: number): string; }
|
|
819
963
|
|
|
@@ -826,14 +970,14 @@ describe("Binding Resolution in IR", () => {
|
|
|
826
970
|
namespace: "Tsonic.JSRuntime",
|
|
827
971
|
types: [
|
|
828
972
|
{
|
|
829
|
-
clrName: "
|
|
973
|
+
clrName: "System.Double",
|
|
830
974
|
assemblyName: "Tsonic.JSRuntime",
|
|
831
975
|
methods: [
|
|
832
976
|
{
|
|
833
977
|
clrName: "toFixed",
|
|
834
978
|
normalizedSignature: "toFixed|(System.Double,System.Int32):System.String|static=true",
|
|
835
979
|
parameterCount: 2,
|
|
836
|
-
declaringClrType: "Tsonic.JSRuntime.
|
|
980
|
+
declaringClrType: "Tsonic.JSRuntime.NumberExtensions",
|
|
837
981
|
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
838
982
|
isExtensionMethod: true,
|
|
839
983
|
},
|
|
@@ -843,19 +987,11 @@ describe("Binding Resolution in IR", () => {
|
|
|
843
987
|
},
|
|
844
988
|
],
|
|
845
989
|
});
|
|
846
|
-
const { testProgram, options } = createTestProgram(source, bindings);
|
|
990
|
+
const { testProgram, ctx, options } = createTestProgram(source, bindings);
|
|
847
991
|
const sourceFile = testProgram.sourceFiles[0];
|
|
848
992
|
if (!sourceFile)
|
|
849
993
|
throw new Error("Failed to create source file");
|
|
850
|
-
const
|
|
851
|
-
...testProgram,
|
|
852
|
-
options: {
|
|
853
|
-
...testProgram.options,
|
|
854
|
-
surface: "js",
|
|
855
|
-
},
|
|
856
|
-
};
|
|
857
|
-
const ctx = createProgramContext(jsProgram, options);
|
|
858
|
-
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
994
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
859
995
|
expect(result.ok).to.equal(true);
|
|
860
996
|
if (!result.ok)
|
|
861
997
|
return;
|
|
@@ -871,11 +1007,11 @@ describe("Binding Resolution in IR", () => {
|
|
|
871
1007
|
if (ret.expression.callee.kind !== "memberAccess")
|
|
872
1008
|
return;
|
|
873
1009
|
expect(ret.expression.callee.memberBinding).to.not.equal(undefined);
|
|
874
|
-
expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.
|
|
1010
|
+
expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.NumberExtensions");
|
|
875
1011
|
expect(ret.expression.callee.memberBinding?.member).to.equal("toFixed");
|
|
876
1012
|
expect(ret.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
877
1013
|
});
|
|
878
|
-
it("should resolve
|
|
1014
|
+
it("should resolve array receiver extension methods via bindings", () => {
|
|
879
1015
|
const source = `
|
|
880
1016
|
interface Array<T> { join(separator?: string): string; }
|
|
881
1017
|
|
|
@@ -888,14 +1024,14 @@ describe("Binding Resolution in IR", () => {
|
|
|
888
1024
|
namespace: "Tsonic.JSRuntime",
|
|
889
1025
|
types: [
|
|
890
1026
|
{
|
|
891
|
-
clrName: "
|
|
1027
|
+
clrName: "System.Array",
|
|
892
1028
|
assemblyName: "Tsonic.JSRuntime",
|
|
893
1029
|
methods: [
|
|
894
1030
|
{
|
|
895
1031
|
clrName: "join",
|
|
896
|
-
normalizedSignature: "join|(
|
|
1032
|
+
normalizedSignature: "join|(System.Array,System.String):System.String|static=true",
|
|
897
1033
|
parameterCount: 2,
|
|
898
|
-
declaringClrType: "Tsonic.JSRuntime.
|
|
1034
|
+
declaringClrType: "Tsonic.JSRuntime.ArrayExtensions",
|
|
899
1035
|
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
900
1036
|
isExtensionMethod: true,
|
|
901
1037
|
},
|
|
@@ -905,19 +1041,11 @@ describe("Binding Resolution in IR", () => {
|
|
|
905
1041
|
},
|
|
906
1042
|
],
|
|
907
1043
|
});
|
|
908
|
-
const { testProgram, options } = createTestProgram(source, bindings);
|
|
1044
|
+
const { testProgram, ctx, options } = createTestProgram(source, bindings);
|
|
909
1045
|
const sourceFile = testProgram.sourceFiles[0];
|
|
910
1046
|
if (!sourceFile)
|
|
911
1047
|
throw new Error("Failed to create source file");
|
|
912
|
-
const
|
|
913
|
-
...testProgram,
|
|
914
|
-
options: {
|
|
915
|
-
...testProgram.options,
|
|
916
|
-
surface: "js",
|
|
917
|
-
},
|
|
918
|
-
};
|
|
919
|
-
const ctx = createProgramContext(jsProgram, options);
|
|
920
|
-
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
1048
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
921
1049
|
expect(result.ok).to.equal(true);
|
|
922
1050
|
if (!result.ok)
|
|
923
1051
|
return;
|
|
@@ -933,7 +1061,7 @@ describe("Binding Resolution in IR", () => {
|
|
|
933
1061
|
if (ret.expression.callee.kind !== "memberAccess")
|
|
934
1062
|
return;
|
|
935
1063
|
expect(ret.expression.callee.memberBinding).to.not.equal(undefined);
|
|
936
|
-
expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.
|
|
1064
|
+
expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.ArrayExtensions");
|
|
937
1065
|
expect(ret.expression.callee.memberBinding?.member).to.equal("join");
|
|
938
1066
|
expect(ret.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
939
1067
|
});
|