@tsonic/frontend 0.0.2 → 0.0.4

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 (97) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/extraction/imports.js +3 -3
  3. package/dist/graph/extraction/imports.js.map +1 -1
  4. package/dist/ir/binding-resolution.test.js +8 -3
  5. package/dist/ir/binding-resolution.test.js.map +1 -1
  6. package/dist/ir/builder/imports.d.ts +3 -3
  7. package/dist/ir/builder/imports.d.ts.map +1 -1
  8. package/dist/ir/builder/imports.js +10 -8
  9. package/dist/ir/builder/imports.js.map +1 -1
  10. package/dist/ir/builder/orchestrator.js +1 -1
  11. package/dist/ir/builder/orchestrator.js.map +1 -1
  12. package/dist/ir/builder.test.js +10 -5
  13. package/dist/ir/builder.test.js.map +1 -1
  14. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  15. package/dist/ir/converters/expressions/access.js +48 -1
  16. package/dist/ir/converters/expressions/access.js.map +1 -1
  17. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  18. package/dist/ir/converters/expressions/helpers.js +8 -1
  19. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  20. package/dist/ir/hierarchical-bindings-e2e.test.js +8 -3
  21. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
  22. package/dist/ir/type-converter/inference.d.ts.map +1 -1
  23. package/dist/ir/type-converter/inference.js +4 -3
  24. package/dist/ir/type-converter/inference.js.map +1 -1
  25. package/dist/ir/type-converter/objects.d.ts.map +1 -1
  26. package/dist/ir/type-converter/objects.js +3 -2
  27. package/dist/ir/type-converter/objects.js.map +1 -1
  28. package/dist/ir/type-converter/references.d.ts.map +1 -1
  29. package/dist/ir/type-converter/references.js +16 -5
  30. package/dist/ir/type-converter/references.js.map +1 -1
  31. package/dist/ir/types/index.d.ts +1 -1
  32. package/dist/ir/types/index.d.ts.map +1 -1
  33. package/dist/ir/types/index.js.map +1 -1
  34. package/dist/ir/types/ir-types.d.ts +11 -1
  35. package/dist/ir/types/ir-types.d.ts.map +1 -1
  36. package/dist/ir/types/module.d.ts +1 -1
  37. package/dist/ir/types/module.d.ts.map +1 -1
  38. package/dist/program/bindings.d.ts +51 -3
  39. package/dist/program/bindings.d.ts.map +1 -1
  40. package/dist/program/bindings.js +181 -19
  41. package/dist/program/bindings.js.map +1 -1
  42. package/dist/program/creation.d.ts.map +1 -1
  43. package/dist/program/creation.js +11 -9
  44. package/dist/program/creation.js.map +1 -1
  45. package/dist/program/dependency-graph.d.ts.map +1 -1
  46. package/dist/program/dependency-graph.js +65 -1
  47. package/dist/program/dependency-graph.js.map +1 -1
  48. package/dist/program/types.d.ts +4 -3
  49. package/dist/program/types.d.ts.map +1 -1
  50. package/dist/resolver/{dotnet-import-resolver.d.ts → clr-bindings-resolver.d.ts} +27 -17
  51. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -0
  52. package/dist/resolver/{dotnet-import-resolver.js → clr-bindings-resolver.js} +63 -22
  53. package/dist/resolver/clr-bindings-resolver.js.map +1 -0
  54. package/dist/resolver/import-resolution.d.ts +4 -4
  55. package/dist/resolver/import-resolution.d.ts.map +1 -1
  56. package/dist/resolver/import-resolution.js +17 -17
  57. package/dist/resolver/import-resolution.js.map +1 -1
  58. package/dist/resolver/index.d.ts +2 -2
  59. package/dist/resolver/index.d.ts.map +1 -1
  60. package/dist/resolver/index.js +2 -2
  61. package/dist/resolver/index.js.map +1 -1
  62. package/dist/resolver/types.d.ts +1 -1
  63. package/dist/resolver/types.d.ts.map +1 -1
  64. package/dist/resolver.d.ts +2 -2
  65. package/dist/resolver.d.ts.map +1 -1
  66. package/dist/resolver.js +1 -1
  67. package/dist/resolver.js.map +1 -1
  68. package/dist/resolver.test.js +1 -1
  69. package/dist/resolver.test.js.map +1 -1
  70. package/dist/types/metadata.d.ts +1 -1
  71. package/dist/types/metadata.d.ts.map +1 -1
  72. package/dist/types/module.d.ts +1 -1
  73. package/dist/types/module.d.ts.map +1 -1
  74. package/dist/types/parameter-modifiers.d.ts.map +1 -1
  75. package/dist/types/parameter-modifiers.js +7 -3
  76. package/dist/types/parameter-modifiers.js.map +1 -1
  77. package/dist/types/support-types.test.js +6 -3
  78. package/dist/types/support-types.test.js.map +1 -1
  79. package/dist/validation/imports.js +1 -1
  80. package/dist/validation/imports.js.map +1 -1
  81. package/dist/validation/static-safety.js +4 -4
  82. package/dist/validation/static-safety.js.map +1 -1
  83. package/dist/validator.test.js +3 -2
  84. package/dist/validator.test.js.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/ir/type-converter/clr-type-resolver.d.ts +0 -15
  87. package/dist/ir/type-converter/clr-type-resolver.d.ts.map +0 -1
  88. package/dist/ir/type-converter/clr-type-resolver.js +0 -120
  89. package/dist/ir/type-converter/clr-type-resolver.js.map +0 -1
  90. package/dist/resolver/dotnet-import-resolver.d.ts.map +0 -1
  91. package/dist/resolver/dotnet-import-resolver.js.map +0 -1
  92. package/dist/types/test-debug.d.ts.map +0 -1
  93. package/dist/types/test-debug.js.map +0 -1
  94. package/dist/validation/aot-safety.d.ts +0 -24
  95. package/dist/validation/aot-safety.d.ts.map +0 -1
  96. package/dist/validation/aot-safety.js +0 -114
  97. package/dist/validation/aot-safety.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ir-types.d.ts","sourceRoot":"","sources":["../../../src/ir/types/ir-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,MAAM,GACd,eAAe,GACf,eAAe,GACf,WAAW,GACX,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,WAAW,GACX,kBAAkB,GAClB,aAAa,GACb,SAAS,GACT,aAAa,GACb,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B,CAAC"}
1
+ {"version":3,"file":"ir-types.d.ts","sourceRoot":"","sources":["../../../src/ir/types/ir-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,MAAM,GACd,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,WAAW,GACX,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,WAAW,GACX,kBAAkB,GAClB,aAAa,GACb,SAAS,GACT,aAAa,GACb,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B,CAAC"}
@@ -17,7 +17,7 @@ export type IrImport = {
17
17
  readonly kind: "import";
18
18
  readonly source: string;
19
19
  readonly isLocal: boolean;
20
- readonly isDotNet: boolean;
20
+ readonly isClr: boolean;
21
21
  readonly specifiers: readonly IrImportSpecifier[];
22
22
  readonly resolvedNamespace?: string;
23
23
  readonly resolvedClrType?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/ir/types/module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAChB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GACnE;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/ir/types/module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAChB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GACnE;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC"}
@@ -57,9 +57,43 @@ export type LegacyBindingFile = {
57
57
  readonly bindings: Readonly<Record<string, SimpleBindingDescriptor>>;
58
58
  };
59
59
  /**
60
- * Union type for both binding formats
60
+ * tsbindgen format - generated by tsbindgen tool
61
+ * This is the format produced when generating bindings from .NET assemblies
61
62
  */
62
- export type BindingFile = FullBindingManifest | LegacyBindingFile;
63
+ export type TsbindgenMethod = {
64
+ readonly clrName: string;
65
+ readonly tsEmitName: string;
66
+ readonly declaringClrType: string;
67
+ readonly declaringAssemblyName: string;
68
+ };
69
+ export type TsbindgenProperty = {
70
+ readonly clrName: string;
71
+ readonly tsEmitName: string;
72
+ readonly declaringClrType: string;
73
+ readonly declaringAssemblyName: string;
74
+ };
75
+ export type TsbindgenField = {
76
+ readonly clrName: string;
77
+ readonly tsEmitName: string;
78
+ readonly declaringClrType: string;
79
+ readonly declaringAssemblyName: string;
80
+ };
81
+ export type TsbindgenType = {
82
+ readonly clrName: string;
83
+ readonly tsEmitName: string;
84
+ readonly assemblyName: string;
85
+ readonly methods: readonly TsbindgenMethod[];
86
+ readonly properties: readonly TsbindgenProperty[];
87
+ readonly fields: readonly TsbindgenField[];
88
+ };
89
+ export type TsbindgenBindingFile = {
90
+ readonly namespace: string;
91
+ readonly types: readonly TsbindgenType[];
92
+ };
93
+ /**
94
+ * Union type for all binding formats
95
+ */
96
+ export type BindingFile = FullBindingManifest | LegacyBindingFile | TsbindgenBindingFile;
63
97
  /**
64
98
  * Registry of all loaded bindings
65
99
  * Supports both legacy (simple global/module) and new (hierarchical namespace/type/member) formats
@@ -71,7 +105,7 @@ export declare class BindingRegistry {
71
105
  private readonly members;
72
106
  /**
73
107
  * Load a binding manifest file and add its bindings to the registry
74
- * Supports both legacy and new formats
108
+ * Supports legacy, full, and tsbindgen formats
75
109
  */
76
110
  addBindings(_filePath: string, manifest: BindingFile): void;
77
111
  /**
@@ -108,4 +142,18 @@ export declare class BindingRegistry {
108
142
  * Looks for *.bindings.json files alongside .d.ts files OR directly in typeRoot
109
143
  */
110
144
  export declare const loadBindings: (typeRoots: readonly string[]) => BindingRegistry;
145
+ /**
146
+ * Load bindings from a specific file path into an existing registry.
147
+ * Validates the file format and logs a warning if invalid.
148
+ */
149
+ export declare const loadBindingsFromPath: (registry: BindingRegistry, bindingsPath: string) => void;
150
+ /**
151
+ * Load all CLR bindings discovered by the resolver.
152
+ * This should be called AFTER createProgram but BEFORE IR building
153
+ * to ensure all bindings are available during IR construction.
154
+ *
155
+ * Note: The ClrBindingsResolver tracks discovered binding paths via caching,
156
+ * so this loads bindings for any imports that were already resolved.
157
+ */
158
+ export declare const loadAllDiscoveredBindings: (registry: BindingRegistry, discoveredPaths: ReadonlySet<string>) => void;
111
159
  //# sourceMappingURL=bindings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/program/bindings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;CAC5C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAWlE;;;GAGG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8C;IAG7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IA0B3D;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAI7D;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI3D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIjD;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAK5E;;OAEG;IACH,cAAc,IAAI,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE;IAI9D;;OAEG;IACH,gBAAgB,IAAI,SAAS,gBAAgB,EAAE;IAI/C;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd;AA0BD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,MAAM,EAAE,KAAG,eA6C3D,CAAC"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/program/bindings.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,52 @@ import * as path from "node:path";
10
10
  const isFullBindingManifest = (manifest) => {
11
11
  return "assembly" in manifest && "namespaces" in manifest;
12
12
  };
13
+ /**
14
+ * Type guard to check if a manifest is the tsbindgen format
15
+ */
16
+ const isTsbindgenBindingFile = (manifest) => {
17
+ return ("namespace" in manifest &&
18
+ "types" in manifest &&
19
+ !("namespaces" in manifest));
20
+ };
21
+ /**
22
+ * Validate that a parsed JSON object is a valid binding file format.
23
+ * Returns an error message if invalid, undefined if valid.
24
+ */
25
+ const validateBindingFile = (obj, filePath) => {
26
+ if (obj === null || typeof obj !== "object") {
27
+ return `${filePath}: Expected object, got ${typeof obj}`;
28
+ }
29
+ const manifest = obj;
30
+ // Check for tsbindgen format
31
+ if ("namespace" in manifest && "types" in manifest) {
32
+ if (typeof manifest.namespace !== "string") {
33
+ return `${filePath}: 'namespace' must be a string`;
34
+ }
35
+ if (!Array.isArray(manifest.types)) {
36
+ return `${filePath}: 'types' must be an array`;
37
+ }
38
+ return undefined; // Valid tsbindgen format
39
+ }
40
+ // Check for full manifest format
41
+ if ("assembly" in manifest && "namespaces" in manifest) {
42
+ if (typeof manifest.assembly !== "string") {
43
+ return `${filePath}: 'assembly' must be a string`;
44
+ }
45
+ if (!Array.isArray(manifest.namespaces)) {
46
+ return `${filePath}: 'namespaces' must be an array`;
47
+ }
48
+ return undefined; // Valid full format
49
+ }
50
+ // Check for legacy format
51
+ if ("bindings" in manifest) {
52
+ if (typeof manifest.bindings !== "object" || manifest.bindings === null) {
53
+ return `${filePath}: 'bindings' must be an object`;
54
+ }
55
+ return undefined; // Valid legacy format
56
+ }
57
+ return `${filePath}: Unrecognized binding file format. Expected tsbindgen (namespace+types), full (assembly+namespaces), or legacy (bindings) format.`;
58
+ };
13
59
  /**
14
60
  * Registry of all loaded bindings
15
61
  * Supports both legacy (simple global/module) and new (hierarchical namespace/type/member) formats
@@ -25,11 +71,11 @@ export class BindingRegistry {
25
71
  }
26
72
  /**
27
73
  * Load a binding manifest file and add its bindings to the registry
28
- * Supports both legacy and new formats
74
+ * Supports legacy, full, and tsbindgen formats
29
75
  */
30
76
  addBindings(_filePath, manifest) {
31
77
  if (isFullBindingManifest(manifest)) {
32
- // New format: hierarchical namespace/type/member structure
78
+ // Full format: hierarchical namespace/type/member structure
33
79
  // Index by alias (TS identifier) for quick lookup
34
80
  for (const ns of manifest.namespaces) {
35
81
  this.namespaces.set(ns.alias, ns);
@@ -44,6 +90,91 @@ export class BindingRegistry {
44
90
  }
45
91
  }
46
92
  }
93
+ else if (isTsbindgenBindingFile(manifest)) {
94
+ // tsbindgen format: convert to internal format
95
+ // Key by tsEmitName (what TS code writes), emit clrName (what C# needs)
96
+ // Also key by clrName for packages that expose PascalCase in .d.ts
97
+ for (const tsbType of manifest.types) {
98
+ // Create members from methods, properties, and fields
99
+ const members = [];
100
+ for (const method of tsbType.methods) {
101
+ members.push({
102
+ kind: "method",
103
+ name: method.clrName,
104
+ // alias = tsEmitName (what TS code uses, e.g., "add")
105
+ alias: method.tsEmitName,
106
+ binding: {
107
+ assembly: method.declaringAssemblyName,
108
+ type: method.declaringClrType,
109
+ // member = clrName (what C# emits, e.g., "Add")
110
+ member: method.clrName,
111
+ },
112
+ });
113
+ }
114
+ for (const prop of tsbType.properties) {
115
+ members.push({
116
+ kind: "property",
117
+ name: prop.clrName,
118
+ alias: prop.tsEmitName,
119
+ binding: {
120
+ assembly: prop.declaringAssemblyName,
121
+ type: prop.declaringClrType,
122
+ member: prop.clrName,
123
+ },
124
+ });
125
+ }
126
+ for (const field of tsbType.fields) {
127
+ // Fields are treated as properties for binding purposes
128
+ members.push({
129
+ kind: "property",
130
+ name: field.clrName,
131
+ alias: field.tsEmitName,
132
+ binding: {
133
+ assembly: field.declaringAssemblyName,
134
+ type: field.declaringClrType,
135
+ member: field.clrName,
136
+ },
137
+ });
138
+ }
139
+ // Create TypeBinding - use tsEmitName as the TS alias (e.g., "Console")
140
+ const typeBinding = {
141
+ name: tsbType.clrName,
142
+ alias: tsbType.tsEmitName,
143
+ kind: "class", // Default to class; could be refined with more metadata
144
+ members,
145
+ };
146
+ // Index the type by its TS name (tsEmitName)
147
+ this.types.set(typeBinding.alias, typeBinding);
148
+ // Also index by simple name if tsEmitName has arity suffix (e.g., "List_1" -> also index as "List")
149
+ // This is needed because TS exports both List_1 and List as aliases, and TS code uses List<T>
150
+ const arityMatch = typeBinding.alias.match(/^(.+)_(\d+)$/);
151
+ const simpleAlias = arityMatch ? arityMatch[1] : null;
152
+ if (simpleAlias && simpleAlias !== typeBinding.alias) {
153
+ this.types.set(simpleAlias, typeBinding);
154
+ }
155
+ // Index members for direct lookup by BOTH tsEmitName and clrName
156
+ // This allows TS code to use either naming convention
157
+ for (const member of members) {
158
+ // Key by tsEmitName (e.g., "List_1.add")
159
+ const tsKey = `${typeBinding.alias}.${member.alias}`;
160
+ this.members.set(tsKey, member);
161
+ // Also key by simple alias if applicable (e.g., "List.add")
162
+ if (simpleAlias) {
163
+ const simpleKey = `${simpleAlias}.${member.alias}`;
164
+ this.members.set(simpleKey, member);
165
+ }
166
+ // Also key by clrName if different (e.g., "List_1.Add" and "List.Add")
167
+ if (member.alias !== member.name) {
168
+ const clrKey = `${typeBinding.alias}.${member.name}`;
169
+ this.members.set(clrKey, member);
170
+ if (simpleAlias) {
171
+ const simpleClrKey = `${simpleAlias}.${member.name}`;
172
+ this.members.set(simpleClrKey, member);
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
47
178
  else {
48
179
  // Legacy format: simple global/module bindings
49
180
  for (const [name, descriptor] of Object.entries(manifest.bindings)) {
@@ -137,31 +268,62 @@ export const loadBindings = (typeRoots) => {
137
268
  .filter((f) => f.endsWith(".bindings.json"))
138
269
  .map((f) => path.join(absoluteRoot, f));
139
270
  for (const manifestPath of rootManifests) {
140
- try {
141
- const content = fs.readFileSync(manifestPath, "utf-8");
142
- const manifest = JSON.parse(content);
143
- registry.addBindings(manifestPath, manifest);
144
- }
145
- catch (err) {
146
- console.warn(`Failed to load bindings from ${manifestPath}:`, err);
147
- }
271
+ loadBindingsFromPath(registry, manifestPath);
148
272
  }
149
273
  // Strategy 2: Look for *.bindings.json next to each .d.ts file
150
274
  const declFiles = scanForDeclarationFiles(absoluteRoot);
151
275
  for (const declPath of declFiles) {
152
276
  const manifestPath = declPath.replace(/\.d\.ts$/, ".bindings.json");
153
- try {
154
- if (fs.existsSync(manifestPath)) {
155
- const content = fs.readFileSync(manifestPath, "utf-8");
156
- const manifest = JSON.parse(content);
157
- registry.addBindings(manifestPath, manifest);
158
- }
159
- }
160
- catch (err) {
161
- console.warn(`Failed to load bindings from ${manifestPath}:`, err);
277
+ loadBindingsFromPath(registry, manifestPath);
278
+ // Strategy 3: Look for bindings.json in same directory as index.d.ts
279
+ // This supports @tsonic/dotnet package structure where bindings.json
280
+ // lives alongside index.d.ts in each namespace directory
281
+ if (path.basename(declPath) === "index.d.ts") {
282
+ const dirBindings = path.join(path.dirname(declPath), "bindings.json");
283
+ loadBindingsFromPath(registry, dirBindings);
162
284
  }
163
285
  }
164
286
  }
165
287
  return registry;
166
288
  };
289
+ /**
290
+ * Load bindings from a specific file path into an existing registry.
291
+ * Validates the file format and logs a warning if invalid.
292
+ */
293
+ export const loadBindingsFromPath = (registry, bindingsPath) => {
294
+ try {
295
+ if (fs.existsSync(bindingsPath)) {
296
+ const content = fs.readFileSync(bindingsPath, "utf-8");
297
+ const parsed = JSON.parse(content);
298
+ // Validate the parsed structure
299
+ const validationError = validateBindingFile(parsed, bindingsPath);
300
+ if (validationError) {
301
+ console.warn(`Invalid bindings file: ${validationError}`);
302
+ return;
303
+ }
304
+ registry.addBindings(bindingsPath, parsed);
305
+ }
306
+ }
307
+ catch (err) {
308
+ if (err instanceof SyntaxError) {
309
+ console.warn(`Failed to parse bindings from ${bindingsPath}: Invalid JSON - ${err.message}`);
310
+ }
311
+ else {
312
+ console.warn(`Failed to load bindings from ${bindingsPath}:`, err);
313
+ }
314
+ }
315
+ };
316
+ /**
317
+ * Load all CLR bindings discovered by the resolver.
318
+ * This should be called AFTER createProgram but BEFORE IR building
319
+ * to ensure all bindings are available during IR construction.
320
+ *
321
+ * Note: The ClrBindingsResolver tracks discovered binding paths via caching,
322
+ * so this loads bindings for any imports that were already resolved.
323
+ */
324
+ export const loadAllDiscoveredBindings = (registry, discoveredPaths) => {
325
+ for (const bindingsPath of discoveredPaths) {
326
+ loadBindingsFromPath(registry, bindingsPath);
327
+ }
328
+ };
167
329
  //# sourceMappingURL=bindings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/program/bindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/program/bindings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AA6GlC;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAC5B,QAAqB,EACY,EAAE;IACnC,OAAO,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,CAAC;AAC5D,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,CAC7B,QAAqB,EACa,EAAE;IACpC,OAAO,CACL,WAAW,IAAI,QAAQ;QACvB,OAAO,IAAI,QAAQ;QACnB,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAC1B,GAAY,EACZ,QAAgB,EACI,EAAE;IACtB,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,GAAG,QAAQ,0BAA0B,OAAO,GAAG,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,GAA8B,CAAC;IAEhD,6BAA6B;IAC7B,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACnD,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,GAAG,QAAQ,gCAAgC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,QAAQ,4BAA4B,CAAC;QACjD,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,yBAAyB;IAC7C,CAAC;IAED,iCAAiC;IACjC,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;QACvD,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,GAAG,QAAQ,+BAA+B,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,OAAO,GAAG,QAAQ,iCAAiC,CAAC;QACtD,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,oBAAoB;IACxC,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACxE,OAAO,GAAG,QAAQ,gCAAgC,CAAC;QACrD,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,sBAAsB;IAC1C,CAAC;IAED,OAAO,GAAG,QAAQ,oIAAoI,CAAC;AACzJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,eAAe;IAA5B;QACE,+CAA+C;QAC9B,mBAAc,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE7E,oCAAoC;QACnB,eAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;QACjD,UAAK,GAAG,IAAI,GAAG,EAAuB,CAAC,CAAC,yBAAyB;QACjE,YAAO,GAAG,IAAI,GAAG,EAAyB,CAAC,CAAC,+BAA+B;IAiL9F,CAAC;IA/KC;;;OAGG;IACH,WAAW,CAAC,SAAiB,EAAE,QAAqB;QAClD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,4DAA4D;YAC5D,kDAAkD;YAClD,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAElC,2CAA2C;gBAC3C,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAEjC,oEAAoE;oBACpE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAClC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,+CAA+C;YAC/C,wEAAwE;YACxE,mEAAmE;YACnE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACrC,sDAAsD;gBACtD,MAAM,OAAO,GAAoB,EAAE,CAAC;gBAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,OAAO;wBACpB,sDAAsD;wBACtD,KAAK,EAAE,MAAM,CAAC,UAAU;wBACxB,OAAO,EAAE;4BACP,QAAQ,EAAE,MAAM,CAAC,qBAAqB;4BACtC,IAAI,EAAE,MAAM,CAAC,gBAAgB;4BAC7B,gDAAgD;4BAChD,MAAM,EAAE,MAAM,CAAC,OAAO;yBACvB;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,IAAI,CAAC,OAAO;wBAClB,KAAK,EAAE,IAAI,CAAC,UAAU;wBACtB,OAAO,EAAE;4BACP,QAAQ,EAAE,IAAI,CAAC,qBAAqB;4BACpC,IAAI,EAAE,IAAI,CAAC,gBAAgB;4BAC3B,MAAM,EAAE,IAAI,CAAC,OAAO;yBACrB;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnC,wDAAwD;oBACxD,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,KAAK,CAAC,OAAO;wBACnB,KAAK,EAAE,KAAK,CAAC,UAAU;wBACvB,OAAO,EAAE;4BACP,QAAQ,EAAE,KAAK,CAAC,qBAAqB;4BACrC,IAAI,EAAE,KAAK,CAAC,gBAAgB;4BAC5B,MAAM,EAAE,KAAK,CAAC,OAAO;yBACtB;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,wEAAwE;gBACxE,MAAM,WAAW,GAAgB;oBAC/B,IAAI,EAAE,OAAO,CAAC,OAAO;oBACrB,KAAK,EAAE,OAAO,CAAC,UAAU;oBACzB,IAAI,EAAE,OAAO,EAAE,wDAAwD;oBACvE,OAAO;iBACR,CAAC;gBAEF,6CAA6C;gBAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAE/C,oGAAoG;gBACpG,8FAA8F;gBAC9F,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtD,IAAI,WAAW,IAAI,WAAW,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;oBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC3C,CAAC;gBAED,iEAAiE;gBACjE,sDAAsD;gBACtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,yCAAyC;oBACzC,MAAM,KAAK,GAAG,GAAG,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAEhC,4DAA4D;oBAC5D,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACtC,CAAC;oBAED,uEAAuE;oBACvE,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;wBACjC,MAAM,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACjC,IAAI,WAAW,EAAE,CAAC;4BAChB,MAAM,YAAY,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;4BACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,SAAiB,EAAE,WAAmB;QAC9C,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAqB,EAAE;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAA4B,EAAmB,EAAE;IAC5E,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IAEvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,kCAAkC;QAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,uDAAuD;QACvD,MAAM,aAAa,GAAG,EAAE;aACrB,WAAW,CAAC,YAAY,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,+DAA+D;QAC/D,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YACpE,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAE7C,qEAAqE;YACrE,qEAAqE;YACrE,yDAAyD;YACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;gBACvE,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAAyB,EACzB,YAAoB,EACd,EAAE;IACR,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;YAE9C,gCAAgC;YAChC,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAClE,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,MAAqB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,iCAAiC,YAAY,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAC/E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,gCAAgC,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,QAAyB,EACzB,eAAoC,EAC9B,EAAE;IACR,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE,CAAC;QAC3C,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAa,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8B5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,eAAe,KACvB,EAAE,CAAC,eAkBL,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,SAAS,MAAM,EAAE,EAC5B,SAAS,eAAe,KACvB,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAiL5C,CAAC"}
1
+ {"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAa,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8B5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,eAAe,KACvB,EAAE,CAAC,eAkBL,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,SAAS,MAAM,EAAE,EAC5B,SAAS,eAAe,KACvB,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAwL5C,CAAC"}
@@ -9,7 +9,7 @@ import { defaultTsConfig } from "./config.js";
9
9
  import { loadDotnetMetadata } from "./metadata.js";
10
10
  import { loadBindings } from "./bindings.js";
11
11
  import { collectTsDiagnostics } from "./diagnostics.js";
12
- import { createDotNetImportResolver } from "../resolver/dotnet-import-resolver.js";
12
+ import { createClrBindingsResolver } from "../resolver/clr-bindings-resolver.js";
13
13
  /**
14
14
  * Recursively scan a directory for .d.ts files
15
15
  */
@@ -122,24 +122,25 @@ export const createProgram = (filePaths, options) => {
122
122
  host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
123
123
  // Check if this is a .NET namespace being imported
124
124
  const baseName = path.basename(fileName, path.extname(fileName));
125
- if (namespaceFiles.has(baseName) && fileName.endsWith(".ts")) {
125
+ const declarationPath = namespaceFiles.get(baseName);
126
+ if (declarationPath !== undefined && fileName.endsWith(".ts")) {
126
127
  // Create a virtual source file that exports from the actual declaration
127
- const declarationPath = namespaceFiles.get(baseName);
128
128
  const virtualContent = `export * from '${declarationPath.replace(/\.d\.ts$/, "")}';`;
129
129
  return ts.createSourceFile(fileName, virtualContent, languageVersion, true);
130
130
  }
131
131
  return originalGetSourceFile.call(host, fileName, languageVersion, onError, shouldCreateNewSourceFile);
132
132
  };
133
133
  // Override resolveModuleNames to handle .NET imports
134
- host.resolveModuleNames = (moduleNames, containingFile) => {
134
+ const hostWithResolve = host;
135
+ hostWithResolve.resolveModuleNames = (moduleNames, containingFile) => {
135
136
  return moduleNames.map((moduleName) => {
136
137
  // Debug log
137
138
  if (options.verbose) {
138
139
  console.log(`Resolving module: ${moduleName} from ${containingFile}`);
139
140
  }
140
141
  // Check if this is a .NET namespace
141
- if (namespaceFiles.has(moduleName)) {
142
- const resolvedFile = namespaceFiles.get(moduleName);
142
+ const resolvedFile = namespaceFiles.get(moduleName);
143
+ if (resolvedFile !== undefined) {
143
144
  if (options.verbose) {
144
145
  console.log(` Resolved .NET namespace ${moduleName} to ${resolvedFile}`);
145
146
  }
@@ -165,8 +166,9 @@ export const createProgram = (filePaths, options) => {
165
166
  const metadata = loadDotnetMetadata(typeRoots);
166
167
  // Load binding manifests (from typeRoots - for ambient globals)
167
168
  const bindings = loadBindings(typeRoots);
168
- // Create resolver for import-driven .NET namespace discovery
169
- const dotnetResolver = createDotNetImportResolver(options.sourceRoot);
169
+ // Create resolver for import-driven CLR namespace discovery
170
+ // Uses projectRoot (not sourceRoot) to resolve packages from node_modules
171
+ const clrResolver = createClrBindingsResolver(options.projectRoot);
170
172
  return ok({
171
173
  program,
172
174
  checker: program.getTypeChecker(),
@@ -174,7 +176,7 @@ export const createProgram = (filePaths, options) => {
174
176
  sourceFiles,
175
177
  metadata,
176
178
  bindings,
177
- dotnetResolver,
179
+ clrResolver,
178
180
  });
179
181
  };
180
182
  //# sourceMappingURL=creation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAU,EAAE,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF;;GAEG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAqB,EAAE;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAwB,EACJ,EAAE;IACtB,MAAM,UAAU,GAAG;QACjB,GAAG,eAAe;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC9B,OAAO,EAAE,OAAO,CAAC,UAAU;KAC5B,CAAC;IAEF,gFAAgF;IAChF,kEAAkE;IAClE,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,UAAU;YACb,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,SAAS,EAAE,8BAA8B;SACjD,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAA4B,EAC5B,OAAwB,EACqB,EAAE;IAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9D,wCAAwC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI;QACrC,yCAAyC;KAC1C,CAAC;IAEF,sBAAsB;IACtB,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,gBAAgB,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,8EAA8E;IAC9E,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,sBAAsB,YAAY,aAAa,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAC7E,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IACE,KAAK,CAAC,WAAW,EAAE;oBACnB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAC3B,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAClC,CAAC;oBACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;oBACpE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7B,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACpC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BACpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,OAAO,SAAS,EAAE,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,QAAQ,GAAG;QACf,GAAG,aAAa;QAChB,GAAG,gBAAgB;QACnB,GAAG,mBAAmB;KACvB,CAAC;IAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEjD,oEAAoE;IACpE,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE9C,8DAA8D;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,gFAAgF;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,IAAI,8BAA8B,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,IAAI,CAAC,aAAa,GAAG,CACnB,QAAgB,EAChB,eAAgC,EAChC,OAAmC,EACnC,yBAAmC,EACR,EAAE;QAC7B,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,eAAe,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,wEAAwE;YACxE,MAAM,cAAc,GAAG,kBAAkB,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC;YACrF,OAAO,EAAE,CAAC,gBAAgB,CACxB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,IAAI,CACL,CAAC;QACJ,CAAC;QAED,OAAO,qBAAqB,CAAC,IAAI,CAC/B,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,OAAO,EACP,yBAAyB,CAC1B,CAAC;IACJ,CAAC,CAAC;IAEF,qDAAqD;IACrD,MAAM,eAAe,GAAG,IAKvB,CAAC;IACF,eAAe,CAAC,kBAAkB,GAAG,CACnC,WAAqB,EACrB,cAAsB,EACa,EAAE;QACrC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YACpC,YAAY;YACZ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,SAAS,cAAc,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,oCAAoC;YACpC,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CACT,6BAA6B,UAAU,OAAO,YAAY,EAAE,CAC7D,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,gBAAgB,EAAE,YAAY;oBAC9B,uBAAuB,EAAE,IAAI;iBAC9B,CAAC;YACJ,CAAC;YAED,2CAA2C;YAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CACjC,UAAU,EACV,cAAc,EACd,SAAS,EACT,IAAI,CACL,CAAC;YACF,OAAO,MAAM,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,WAAW,GAAG,OAAO;SACxB,cAAc,EAAE;SAChB,MAAM,CACL,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CACrE,CAAC;IAEJ,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE/C,gEAAgE;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAEzC,4DAA4D;IAC5D,0EAA0E;IAC1E,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEnE,OAAO,EAAE,CAAC;QACR,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;QACjC,OAAO;QACP,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,WAAW;KACZ,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../src/program/dependency-graph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,MAAM,EAAa,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;CAChC,CAAC;AA2BF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,WAAW,MAAM,EACjB,SAAS,eAAe,KACvB,MAAM,CAAC,2BAA2B,EAAE,SAAS,UAAU,EAAE,CAgM3D,CAAC"}
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../src/program/dependency-graph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,MAAM,EAAa,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;CAChC,CAAC;AAwFF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,WAAW,MAAM,EACjB,SAAS,eAAe,KACvB,MAAM,CAAC,2BAA2B,EAAE,SAAS,UAAU,EAAE,CA+M3D,CAAC"}
@@ -8,6 +8,54 @@ import { ok, error } from "../types/result.js";
8
8
  import { createDiagnostic } from "../types/diagnostic.js";
9
9
  import { buildIrModule } from "../ir/builder/orchestrator.js";
10
10
  import { createProgram, createCompilerOptions } from "./creation.js";
11
+ import { loadAllDiscoveredBindings } from "./bindings.js";
12
+ /**
13
+ * Scan all source files for import statements and discover CLR bindings.
14
+ * This must be called BEFORE IR building to ensure bindings are loaded.
15
+ *
16
+ * Returns set of binding paths that were discovered.
17
+ */
18
+ const discoverAndLoadClrBindings = (program, verbose) => {
19
+ const bindingPaths = new Set();
20
+ if (verbose) {
21
+ console.log(`[CLR Bindings] Scanning ${program.sourceFiles.length} source files`);
22
+ }
23
+ for (const sourceFile of program.sourceFiles) {
24
+ if (verbose) {
25
+ console.log(`[CLR Bindings] Scanning: ${sourceFile.fileName}`);
26
+ }
27
+ ts.forEachChild(sourceFile, (node) => {
28
+ if (ts.isImportDeclaration(node) &&
29
+ ts.isStringLiteral(node.moduleSpecifier)) {
30
+ const moduleSpecifier = node.moduleSpecifier.text;
31
+ if (verbose) {
32
+ console.log(`[CLR Bindings] Found import: ${moduleSpecifier}`);
33
+ }
34
+ // Use the resolver to check if this is a CLR import
35
+ const resolution = program.clrResolver.resolve(moduleSpecifier);
36
+ if (resolution.isClr) {
37
+ if (verbose) {
38
+ console.log(`[CLR Bindings] CLR import detected: ${resolution.bindingsPath}`);
39
+ }
40
+ bindingPaths.add(resolution.bindingsPath);
41
+ }
42
+ }
43
+ });
44
+ }
45
+ // Load all discovered bindings into the registry
46
+ if (bindingPaths.size > 0) {
47
+ if (verbose) {
48
+ console.log(`[CLR Bindings] Loading ${bindingPaths.size} binding files...`);
49
+ }
50
+ loadAllDiscoveredBindings(program.bindings, bindingPaths);
51
+ if (verbose) {
52
+ console.log(`[CLR Bindings] Bindings loaded successfully`);
53
+ }
54
+ }
55
+ else if (verbose) {
56
+ console.log(`[CLR Bindings] No CLR bindings discovered`);
57
+ }
58
+ };
11
59
  /**
12
60
  * Extract module specifier from import or re-export declaration
13
61
  * Returns the module specifier string literal, or null if not applicable
@@ -46,6 +94,8 @@ export const buildModuleDependencyGraph = (entryFile, options) => {
46
94
  // First pass: discover all files
47
95
  while (queue.length > 0) {
48
96
  const currentFile = queue.shift();
97
+ if (currentFile === undefined)
98
+ continue;
49
99
  // Dedup by realpath (handles symlinks, relative paths)
50
100
  const realPath = ts.sys.realpath?.(currentFile) ?? currentFile;
51
101
  if (visited.has(realPath)) {
@@ -130,6 +180,9 @@ export const buildModuleDependencyGraph = (entryFile, options) => {
130
180
  return error(programResult.error.diagnostics);
131
181
  }
132
182
  const tsonicProgram = programResult.value;
183
+ // Load CLR bindings before IR building
184
+ // This scans all imports and loads their bindings upfront
185
+ discoverAndLoadClrBindings(tsonicProgram, options.verbose);
133
186
  // Third pass: Build IR for all discovered modules
134
187
  const modules = [];
135
188
  for (const filePath of allDiscoveredFiles) {
@@ -157,7 +210,18 @@ export const buildModuleDependencyGraph = (entryFile, options) => {
157
210
  // Entry module is the first one (after sorting, it should be the entry file)
158
211
  // But let's find it by matching the entry file path
159
212
  const entryRelative = relative(sourceRootAbs, entryAbs).replace(/\\/g, "/");
160
- const entryModule = modules.find((m) => m.filePath === entryRelative) ?? modules[0];
213
+ const foundEntryModule = modules.find((m) => m.filePath === entryRelative);
214
+ const entryModule = foundEntryModule ?? modules[0];
215
+ if (entryModule === undefined) {
216
+ return error([
217
+ createDiagnostic("TSN1001", "error", "No modules found in the project", {
218
+ file: entryAbs,
219
+ line: 1,
220
+ column: 1,
221
+ length: 1,
222
+ }),
223
+ ]);
224
+ }
161
225
  return ok({
162
226
  modules,
163
227
  entryModule,
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../src/program/dependency-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../src/program/dependency-graph.ts"],"names":[],"mappings":"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"}