@scriptc/compiler 0.3.2 → 0.3.3

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 (364) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +490 -39
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/llvm/alloc.js +24 -10
  5. package/dist/backend/llvm/alloc.js.map +1 -1
  6. package/dist/backend/llvm/alloc.test.js +47 -1
  7. package/dist/backend/llvm/alloc.test.js.map +1 -1
  8. package/dist/backend/llvm/array-search.d.ts +8 -0
  9. package/dist/backend/llvm/array-search.js +52 -0
  10. package/dist/backend/llvm/array-search.js.map +1 -0
  11. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  12. package/dist/backend/llvm/array-search.test.js +72 -0
  13. package/dist/backend/llvm/array-search.test.js.map +1 -0
  14. package/dist/backend/llvm/call-lifetimes.d.ts +8 -1
  15. package/dist/backend/llvm/call-lifetimes.js +33 -11
  16. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  17. package/dist/backend/llvm/call-lifetimes.test.js +54 -0
  18. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  19. package/dist/backend/llvm/classes.js +87 -36
  20. package/dist/backend/llvm/classes.js.map +1 -1
  21. package/dist/backend/llvm/common.d.ts +1 -1
  22. package/dist/backend/llvm/common.js +1 -1
  23. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  24. package/dist/backend/llvm/dense-array-access.js +1 -1
  25. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  26. package/dist/backend/llvm/dyn.d.ts +4 -0
  27. package/dist/backend/llvm/dyn.js +73 -9
  28. package/dist/backend/llvm/dyn.js.map +1 -1
  29. package/dist/backend/llvm/emitter.d.ts +65 -14
  30. package/dist/backend/llvm/emitter.js +297 -81
  31. package/dist/backend/llvm/emitter.js.map +1 -1
  32. package/dist/backend/llvm/emitter.test.js +26 -3
  33. package/dist/backend/llvm/emitter.test.js.map +1 -1
  34. package/dist/backend/llvm/expr-async.js +52 -1
  35. package/dist/backend/llvm/expr-async.js.map +1 -1
  36. package/dist/backend/llvm/expr-bytes.js +11 -0
  37. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  38. package/dist/backend/llvm/expr-callbacks.js +16 -2
  39. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  40. package/dist/backend/llvm/expr-calls.js +8 -1
  41. package/dist/backend/llvm/expr-calls.js.map +1 -1
  42. package/dist/backend/llvm/expr-containers.js +42 -15
  43. package/dist/backend/llvm/expr-containers.js.map +1 -1
  44. package/dist/backend/llvm/expr-dynamic.js +19 -8
  45. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  46. package/dist/backend/llvm/expr-primitives.js +28 -30
  47. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  48. package/dist/backend/llvm/expr-records.js +8 -4
  49. package/dist/backend/llvm/expr-records.js.map +1 -1
  50. package/dist/backend/llvm/expr-stream-bridges.js +35 -32
  51. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  52. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  53. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  54. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  55. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  56. package/dist/backend/llvm/inline-unions.js +134 -0
  57. package/dist/backend/llvm/inline-unions.js.map +1 -0
  58. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  59. package/dist/backend/llvm/inline-unions.test.js +124 -0
  60. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  61. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  62. package/dist/backend/llvm/integer-remainder.js +80 -9
  63. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  64. package/dist/backend/llvm/lib-dispatch.js +163 -28
  65. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  66. package/dist/backend/llvm/lib-filesystem.js +125 -7
  67. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  68. package/dist/backend/llvm/lib-network.js +9 -6
  69. package/dist/backend/llvm/lib-network.js.map +1 -1
  70. package/dist/backend/llvm/lib-process.js +2 -2
  71. package/dist/backend/llvm/lib-process.js.map +1 -1
  72. package/dist/backend/llvm/lib-shared.js +132 -0
  73. package/dist/backend/llvm/lib-shared.js.map +1 -1
  74. package/dist/backend/llvm/lib-stream.js +97 -0
  75. package/dist/backend/llvm/lib-stream.js.map +1 -1
  76. package/dist/backend/llvm/local-array-reads.js +7 -3
  77. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  78. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  79. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  80. package/dist/backend/llvm/local-union-storage.d.ts +2 -0
  81. package/dist/backend/llvm/local-union-storage.js +5 -0
  82. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  83. package/dist/backend/llvm/local-union-storage.test.js +1 -0
  84. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  85. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  86. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  87. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  88. package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
  89. package/dist/backend/llvm/map-number-lookup.js +66 -0
  90. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  91. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  92. package/dist/backend/llvm/map-number-lookup.test.js +102 -0
  93. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  94. package/dist/backend/llvm/map-read-lifetimes.js +1 -0
  95. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  96. package/dist/backend/llvm/publish.d.ts +4 -0
  97. package/dist/backend/llvm/publish.js +3 -1
  98. package/dist/backend/llvm/publish.js.map +1 -1
  99. package/dist/backend/llvm/record-results.d.ts +8 -5
  100. package/dist/backend/llvm/record-results.js +20 -12
  101. package/dist/backend/llvm/record-results.js.map +1 -1
  102. package/dist/backend/llvm/reference-effects.js +13 -0
  103. package/dist/backend/llvm/reference-effects.js.map +1 -1
  104. package/dist/backend/llvm/reference-writes.js +14 -0
  105. package/dist/backend/llvm/reference-writes.js.map +1 -1
  106. package/dist/backend/llvm/regions.d.ts +1 -0
  107. package/dist/backend/llvm/regions.js +12 -7
  108. package/dist/backend/llvm/regions.js.map +1 -1
  109. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  110. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  111. package/dist/backend/llvm/shapes.d.ts +56 -10
  112. package/dist/backend/llvm/shapes.js +178 -39
  113. package/dist/backend/llvm/shapes.js.map +1 -1
  114. package/dist/backend/llvm/shapes.test.js +61 -3
  115. package/dist/backend/llvm/shapes.test.js.map +1 -1
  116. package/dist/backend/llvm/stack-objects.js +16 -4
  117. package/dist/backend/llvm/stack-objects.js.map +1 -1
  118. package/dist/backend/llvm/stack-objects.test.js +3 -0
  119. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  120. package/dist/backend/llvm/walkers.d.ts +11 -0
  121. package/dist/backend/llvm/walkers.js +106 -10
  122. package/dist/backend/llvm/walkers.js.map +1 -1
  123. package/dist/backend/may-throw.js +9 -4
  124. package/dist/backend/may-throw.js.map +1 -1
  125. package/dist/backend/native/contracts.d.ts +2 -2
  126. package/dist/backend/native/executable.js +14 -3
  127. package/dist/backend/native/executable.js.map +1 -1
  128. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  129. package/dist/backend/native/runtime-inputs.js +1 -0
  130. package/dist/backend/native/runtime-inputs.js.map +1 -1
  131. package/dist/backend/native-toolchain.test.js +1 -1
  132. package/dist/backend/native-toolchain.test.js.map +1 -1
  133. package/dist/backend/runtime-abi.d.ts +2 -2
  134. package/dist/backend/runtime-abi.js +2 -2
  135. package/dist/backend/runtime-pack-targets.test.js +1 -1
  136. package/dist/backend/runtime-pack.test.js +1 -1
  137. package/dist/backend/target-diagnostics.js +4 -1
  138. package/dist/backend/target-diagnostics.js.map +1 -1
  139. package/dist/backend/target-diagnostics.test.js +4 -1
  140. package/dist/backend/target-diagnostics.test.js.map +1 -1
  141. package/dist/compat/fetch-profile.js +4 -4
  142. package/dist/compat/fetch-profile.js.map +1 -1
  143. package/dist/contracts/check.js +2 -0
  144. package/dist/contracts/check.js.map +1 -1
  145. package/dist/coverage/report.js +1 -1
  146. package/dist/coverage/report.js.map +1 -1
  147. package/dist/diagnostics/diagnostic.d.ts +6 -5
  148. package/dist/diagnostics/diagnostic.js +7 -6
  149. package/dist/diagnostics/diagnostic.js.map +1 -1
  150. package/dist/frontend/builtin-modules.d.ts +1 -1
  151. package/dist/frontend/builtin-modules.js +1 -0
  152. package/dist/frontend/builtin-modules.js.map +1 -1
  153. package/dist/frontend/comptime-node.js +2 -2
  154. package/dist/frontend/comptime-node.js.map +1 -1
  155. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  156. package/dist/frontend/lowering/binding-analysis.js +1 -1
  157. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  158. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  159. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  160. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  161. package/dist/frontend/lowering/builtins/blob.js +167 -0
  162. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  163. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  164. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  165. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  166. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  167. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  168. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  169. package/dist/frontend/lowering/builtins/compression.js +3 -2
  170. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  171. package/dist/frontend/lowering/builtins/crypto.js +415 -120
  172. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  173. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  174. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  175. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  176. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  177. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  178. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  179. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  180. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  181. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  182. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  183. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  184. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  185. package/dist/frontend/lowering/builtins/module-calls.js +44 -11
  186. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  187. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  188. package/dist/frontend/lowering/builtins/performance.js +340 -5
  189. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  190. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  191. package/dist/frontend/lowering/builtins/process.js +107 -14
  192. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  193. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  194. package/dist/frontend/lowering/builtins/properties.js +39 -11
  195. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  196. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  197. package/dist/frontend/lowering/builtins/readline.js +266 -90
  198. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  199. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  200. package/dist/frontend/lowering/builtins/url.js +36 -0
  201. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  202. package/dist/frontend/lowering/call-arguments.js +1 -1
  203. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  204. package/dist/frontend/lowering/call-signatures.js +20 -2
  205. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  206. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
  207. package/dist/frontend/lowering/class-dynamic-dispatch.js +105 -1
  208. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  209. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  210. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  211. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  212. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  213. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  214. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  215. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  216. package/dist/frontend/lowering/coercions/structural.js +3 -3
  217. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  218. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  219. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  220. package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
  221. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  222. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  223. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  224. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  225. package/dist/frontend/lowering/containers/bytes.js +38 -26
  226. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  227. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  228. package/dist/frontend/lowering/containers/for-of.js +5 -1
  229. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  230. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  231. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  232. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  233. package/dist/frontend/lowering/crypto-tables.js +77 -12
  234. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  235. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  236. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  237. package/dist/frontend/lowering/expressions/object-literals.js +16 -12
  238. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  239. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  240. package/dist/frontend/lowering/generic-functions.js +2 -2
  241. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  242. package/dist/frontend/lowering/http2-constants.js +1 -1
  243. package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
  244. package/dist/frontend/lowering/lower-array-sort.js +561 -191
  245. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  246. package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
  247. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  248. package/dist/frontend/lowering/lower-assert.js +2 -2
  249. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  250. package/dist/frontend/lowering/lower-async-iteration.js +248 -2
  251. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  252. package/dist/frontend/lowering/lower-calls.js +101 -9
  253. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  254. package/dist/frontend/lowering/lower-classes.d.ts +8 -2
  255. package/dist/frontend/lowering/lower-classes.js +40 -9
  256. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  257. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  258. package/dist/frontend/lowering/lower-comptime.js +4 -4
  259. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  260. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  261. package/dist/frontend/lowering/lower-event-target.js +362 -0
  262. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  263. package/dist/frontend/lowering/lower-expando.js +2 -2
  264. package/dist/frontend/lowering/lower-exprs.js +112 -22
  265. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  266. package/dist/frontend/lowering/lower-inspect.js +129 -11
  267. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  268. package/dist/frontend/lowering/lower-mixins.js +1 -1
  269. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  270. package/dist/frontend/lowering/lower-modules.js +7 -3
  271. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  272. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  273. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  274. package/dist/frontend/lowering/lower-server.js +39 -14
  275. package/dist/frontend/lowering/lower-server.js.map +1 -1
  276. package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
  277. package/dist/frontend/lowering/lower-stdlib.js +10 -3
  278. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  279. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  280. package/dist/frontend/lowering/lower-stmts.js +46 -12
  281. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  282. package/dist/frontend/lowering/lower-stream.js +234 -22
  283. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  284. package/dist/frontend/lowering/lower-timers.js +1 -1
  285. package/dist/frontend/lowering/lowerer.d.ts +23 -5
  286. package/dist/frontend/lowering/lowerer.js +245 -41
  287. package/dist/frontend/lowering/lowerer.js.map +1 -1
  288. package/dist/frontend/lowering/native-ffi.js +2 -2
  289. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  290. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  291. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  292. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  293. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  294. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  295. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  296. package/dist/frontend/lowering/surfaces.d.ts +7 -3
  297. package/dist/frontend/lowering/surfaces.js +273 -22
  298. package/dist/frontend/lowering/surfaces.js.map +1 -1
  299. package/dist/frontend/module-syntax.d.ts +1 -1
  300. package/dist/frontend/module-syntax.js +1 -1
  301. package/dist/frontend/npm-static-prune.js +1 -1
  302. package/dist/frontend/npm-static-prune.js.map +1 -1
  303. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  304. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  305. package/dist/frontend/pipeline.js +1 -1
  306. package/dist/frontend/pipeline.js.map +1 -1
  307. package/dist/frontend/program.d.ts +3 -3
  308. package/dist/frontend/program.js +19 -17
  309. package/dist/frontend/program.js.map +1 -1
  310. package/dist/frontend/resolve.js +1 -1
  311. package/dist/frontend/ts7/adapter.js +1 -1
  312. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  313. package/dist/frontend/ts7/ast-bytes.js +1 -1
  314. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  315. package/dist/frontend/ts7/semantic-json.js +1 -1
  316. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  317. package/dist/frontend/ts7/world-check.js +1 -1
  318. package/dist/frontend/tsc-codes.js +2 -2
  319. package/dist/frontend/tsc-codes.js.map +1 -1
  320. package/dist/frontend/type-mapper.d.ts +16 -1
  321. package/dist/frontend/type-mapper.js +143 -18
  322. package/dist/frontend/type-mapper.js.map +1 -1
  323. package/dist/index.js +5 -4
  324. package/dist/index.js.map +1 -1
  325. package/dist/ir/analysis.d.ts +12 -6
  326. package/dist/ir/analysis.js +26 -10
  327. package/dist/ir/analysis.js.map +1 -1
  328. package/dist/ir/analysis.test.js +15 -3
  329. package/dist/ir/analysis.test.js.map +1 -1
  330. package/dist/ir/builtin-effects.js +79 -0
  331. package/dist/ir/builtin-effects.js.map +1 -1
  332. package/dist/ir/builtin-signatures.d.ts +1 -1
  333. package/dist/ir/builtin-signatures.js +291 -38
  334. package/dist/ir/builtin-signatures.js.map +1 -1
  335. package/dist/ir/int32-slots.js +1 -0
  336. package/dist/ir/int32-slots.js.map +1 -1
  337. package/dist/ir/ir.d.ts +64 -16
  338. package/dist/ir/ir.js +37 -1
  339. package/dist/ir/ir.js.map +1 -1
  340. package/dist/ir/runtime-features.js +83 -6
  341. package/dist/ir/runtime-features.js.map +1 -1
  342. package/dist/ir/serialize.js +1 -1
  343. package/dist/ir/serialize.js.map +1 -1
  344. package/dist/ir/traverse.js +1 -0
  345. package/dist/ir/traverse.js.map +1 -1
  346. package/dist/ir/validate.js +100 -9
  347. package/dist/ir/validate.js.map +1 -1
  348. package/dist/ir/validate.test.js +60 -0
  349. package/dist/ir/validate.test.js.map +1 -1
  350. package/dist/library/fence-eval.d.ts +1 -1
  351. package/dist/library/fence-eval.js +5 -4
  352. package/dist/library/fence-eval.js.map +1 -1
  353. package/dist/library/ir-policy.js +10 -4
  354. package/dist/library/ir-policy.js.map +1 -1
  355. package/dist/library/library-profile.js +13 -13
  356. package/dist/library/library-profile.js.map +1 -1
  357. package/dist/library/prepare.js +1 -1
  358. package/dist/library/prepare.js.map +1 -1
  359. package/dist/library/sidecar.js +3 -3
  360. package/dist/library/sidecar.js.map +1 -1
  361. package/dist/native/prepare.js +3 -2
  362. package/dist/native/prepare.js.map +1 -1
  363. package/package.json +20 -20
  364. package/surface-manifest.json +379 -142
@@ -475,7 +475,7 @@ function nearestPkgDir(dir) {
475
475
  }
476
476
  /** The nearest package.json FILE, whether or not its JSON parses. Runtime
477
477
  * module-format lookup must stop at a malformed nearest scope: Node reports
478
- * ERR_INVALID_PACKAGE_CONFIG there rather than silently inheriting a parent
478
+ * ERR_INVALID_PACKAGE_CONFIG there rather than inheriting a parent
479
479
  * package's `type`. The resolver's historical nearestPkgDir stays parseable-
480
480
  * package-only because its callers need a package OBJECT to inspect. */
481
481
  function nearestPackageConfigDir(dir) {
@@ -31,6 +31,6 @@ export * from "./program-host.js";
31
31
  export * from "./semantic-types.js";
32
32
  /* No default export, deliberately: ESM cannot hang the TYPE side of the
33
33
  * census (ts.Expression, ts.Node, ...) off a default binding, so a default
34
- * would invite the one import form that silently loses the types. The port
34
+ * would invite the one import form that loses the types without an error. The port
35
35
  * swap is the namespace import above — same one-line change per file. */
36
36
  //# sourceMappingURL=adapter.js.map
@@ -11,7 +11,7 @@ export declare function astI32(bytes: Uint8Array, offset: number): number;
11
11
  * UTF-8 decoding deliberately replaces those sequences, so decode them
12
12
  * explicitly. Preserve U+FEFF anywhere, including just after a surrogate.
13
13
  * Valid UTF-8 segments use the runtime's optimized decoder. A runtime that
14
- * cannot represent lone surrogates must refuse them here; silently replacing
14
+ * cannot represent lone surrogates must refuse them here; replacing
15
15
  * a code unit would change checker names and compiler input. */
16
16
  export declare function decodeAstString(bytes: Uint8Array, offset: number, length: number): string;
17
17
  /** The structured-data section uses only arrays, uints, strings and bools.
@@ -32,7 +32,7 @@ export function astI32(bytes, offset) {
32
32
  * UTF-8 decoding deliberately replaces those sequences, so decode them
33
33
  * explicitly. Preserve U+FEFF anywhere, including just after a surrogate.
34
34
  * Valid UTF-8 segments use the runtime's optimized decoder. A runtime that
35
- * cannot represent lone surrogates must refuse them here; silently replacing
35
+ * cannot represent lone surrogates must refuse them here; replacing
36
36
  * a code unit would change checker names and compiler input. */
37
37
  export function decodeAstString(bytes, offset, length) {
38
38
  astBounds(bytes, offset, length);
@@ -1,5 +1,5 @@
1
1
  /** Check the only JSON string form the native runtime cannot yet retain.
2
2
  * JSON.parse itself validates grammar. A valid surrogate pair is preserved;
3
- * a lone escape must not silently change a type literal or symbol name. */
3
+ * a lone escape must not change a type literal or symbol name. */
4
4
  export declare function checkSemanticJsonStrings(json: string, preservesSurrogates: boolean): void;
5
5
  export declare function parseSemanticJson<T>(json: string): T;
@@ -1,6 +1,6 @@
1
1
  /** Check the only JSON string form the native runtime cannot yet retain.
2
2
  * JSON.parse itself validates grammar. A valid surrogate pair is preserved;
3
- * a lone escape must not silently change a type literal or symbol name. */
3
+ * a lone escape must not change a type literal or symbol name. */
4
4
  export function checkSemanticJsonStrings(json, preservesSurrogates) {
5
5
  // Most checker responses contain no Unicode escapes. Inspect only escape
6
6
  // sequences instead of mapping every native string index to UTF-16. Valid
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-json.js","sourceRoot":"","sources":["../../../src/frontend/ts7/semantic-json.ts"],"names":[],"mappings":"AAAA;;2EAE2E;AAC3E,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,mBAA4B;IACjF,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IACzD,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG;YAAE,SAAS;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM;YAAE,SAAS;QAC7C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACrC,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,MAAc;IAC/C,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GACT,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;YACtB,CAAC,CAAC,IAAI,GAAG,EAAE;YACX,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;gBACxB,CAAC,CAAC,IAAI,GAAG,EAAE;gBACX,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG;oBACzB,CAAC,CAAC,IAAI,GAAG,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACzB,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wEAAwE;AACxE,4EAA4E;AAC5E,MAAM,uBAAuB,GAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;AAE7F,MAAM,UAAU,iBAAiB,CAAI,IAAY;IAC/C,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"semantic-json.js","sourceRoot":"","sources":["../../../src/frontend/ts7/semantic-json.ts"],"names":[],"mappings":"AAAA;;kEAEkE;AAClE,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,mBAA4B;IACjF,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IACzD,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG;YAAE,SAAS;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM;YAAE,SAAS;QAC7C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACrC,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,MAAc;IAC/C,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GACT,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;YACtB,CAAC,CAAC,IAAI,GAAG,EAAE;YACX,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;gBACxB,CAAC,CAAC,IAAI,GAAG,EAAE;gBACX,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG;oBACzB,CAAC,CAAC,IAAI,GAAG,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACzB,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wEAAwE;AACxE,4EAA4E;AAC5E,MAAM,uBAAuB,GAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;AAE7F,MAAM,UAAU,iBAAiB,CAAI,IAAY;IAC/C,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AAC/B,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * 7.0.2 world (this adapter, over the real "typescript" dependency) must
4
4
  * never exchange AST or checker objects: the enums
5
5
  * renumbered between worlds, so a node that crosses carries kinds and flags
6
- * that MEAN something else on the other side, silently.
6
+ * that MEAN something else on the other side, without any error.
7
7
  *
8
8
  * The fence is nominal enum typing: every node interface carries a
9
9
  * `kind`/`flags` member typed by its own package's enum declaration, and
@@ -120,7 +120,7 @@ export const JS_RELAXED_TSC_CODES = new Set([
120
120
  // Class lowering checks native storage and override ABIs at each use.
121
121
  2415,
122
122
  // unresolvable modules: Node throws WHEN the require executes — the
123
- // binding types as any and reached uses fence (never a silent pass)
123
+ // binding types as any and reached uses fence instead of passing unchecked
124
124
  2307,
125
125
  2792,
126
126
  // useUnknownInCatchVariables' annotation demand ("'e' is of type
@@ -128,7 +128,7 @@ export const JS_RELAXED_TSC_CODES = new Set([
128
128
  // annotate its variable, so the demand is unsatisfiable in source —
129
129
  // exactly the implicit-any story above. The values stay 'unknown' and
130
130
  // every use meets the lowerer's per-site unknown fences (member reads
131
- // ride the checked-dynamic tree; unsupported operations fence loudly).
131
+ // ride the checked-dynamic tree; unsupported operations report a compile-time diagnostic).
132
132
  18046,
133
133
  2571,
134
134
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"tsc-codes.js","sourceRoot":"","sources":["../../src/frontend/tsc-codes.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,8BAA8B;IAC9B,6BAA6B;IAC7B,gBAAgB;IAChB,cAAc;IACd,4BAA4B;IAC5B,0BAA0B;IAC1B,4BAA4B;IAC5B,oBAAoB;IACpB,oCAAoC;IACpC,mBAAmB;IACnB,4BAA4B;IAC5B,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,cAAc;IACd,iEAAiE;IACjE,qEAAqE;IACrE,kEAAkE;IAClE,kEAAkE;IAClE,iBAAiB;IACjB,8BAA8B;CACtB,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,kEAAkE;IAClE,8DAA8D;IAC9D,iCAAiC;IACjC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,oEAAoE;IACpE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,mCAAmC;IACnC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI,EAAE,4DAA4D;IAClE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,uEAAuE;IACvE,wEAAwE;IACxE,4EAA4E;IAC5E,oEAAoE;IACpE,kBAAkB;IAClB,IAAI;IACJ,IAAI;IACJ,qEAAqE;IACrE,uEAAuE;IACvE,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,wDAAwD;IACxD,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,uEAAuE;IACvE,4DAA4D;IAC5D,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,uEAAuE;IACvE,wEAAwE;IACxE,qEAAqE;IACrE,yCAAyC;IACzC,IAAI;IACJ,wEAAwE;IACxE,qEAAqE;IACrE,wDAAwD;IACxD,IAAI;IACJ,wEAAwE;IACxE,sEAAsE;IACtE,6DAA6D;IAC7D,IAAI;IACJ,IAAI;IACJ,iEAAiE;IACjE,IAAI;IACJ,mEAAmE;IACnE,sEAAsE;IACtE,IAAI;IACJ,oEAAoE;IACpE,oEAAoE;IACpE,IAAI;IACJ,IAAI;IACJ,iEAAiE;IACjE,uEAAuE;IACvE,oEAAoE;IACpE,sEAAsE;IACtE,sEAAsE;IACtE,uEAAuE;IACvE,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AAEH;2EAC2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtF;;gCAEgC;AAChC,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,uEAAuE;IACvE,+CAA+C;IAC/C,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"tsc-codes.js","sourceRoot":"","sources":["../../src/frontend/tsc-codes.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,8BAA8B;IAC9B,6BAA6B;IAC7B,gBAAgB;IAChB,cAAc;IACd,4BAA4B;IAC5B,0BAA0B;IAC1B,4BAA4B;IAC5B,oBAAoB;IACpB,oCAAoC;IACpC,mBAAmB;IACnB,4BAA4B;IAC5B,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,cAAc;IACd,iEAAiE;IACjE,qEAAqE;IACrE,kEAAkE;IAClE,kEAAkE;IAClE,iBAAiB;IACjB,8BAA8B;CACtB,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,kEAAkE;IAClE,8DAA8D;IAC9D,iCAAiC;IACjC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,oEAAoE;IACpE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,mCAAmC;IACnC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI,EAAE,4DAA4D;IAClE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,uEAAuE;IACvE,wEAAwE;IACxE,4EAA4E;IAC5E,oEAAoE;IACpE,kBAAkB;IAClB,IAAI;IACJ,IAAI;IACJ,qEAAqE;IACrE,uEAAuE;IACvE,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,wDAAwD;IACxD,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,uEAAuE;IACvE,4DAA4D;IAC5D,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,uEAAuE;IACvE,wEAAwE;IACxE,qEAAqE;IACrE,yCAAyC;IACzC,IAAI;IACJ,wEAAwE;IACxE,qEAAqE;IACrE,wDAAwD;IACxD,IAAI;IACJ,wEAAwE;IACxE,sEAAsE;IACtE,6DAA6D;IAC7D,IAAI;IACJ,IAAI;IACJ,iEAAiE;IACjE,IAAI;IACJ,mEAAmE;IACnE,sEAAsE;IACtE,IAAI;IACJ,oEAAoE;IACpE,2EAA2E;IAC3E,IAAI;IACJ,IAAI;IACJ,iEAAiE;IACjE,uEAAuE;IACvE,oEAAoE;IACpE,sEAAsE;IACtE,sEAAsE;IACtE,2FAA2F;IAC3F,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AAEH;2EAC2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtF;;gCAEgC;AAChC,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,uEAAuE;IACvE,+CAA+C;IAC/C,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -5,7 +5,7 @@ export { typeKey };
5
5
  /** Empty JS object inference describes no fixed layout. Keep these values
6
6
  * in checked storage across fields, parameters and function signatures. */
7
7
  export declare function jsOpenObjectType(decl: ts.Node | undefined, type: IrType, shapes: ShapeRegistry, unions: UnionRegistry): IrType;
8
- export declare const FETCH_AMBIENT_TYPES: readonly ["Response", "Request", "ResponseInit", "RequestInit", "Event", "CustomEvent", "EventTarget", "AddEventListenerOptions", "EventListenerOptions", "EventInit", "CustomEventInit", "AbortController", "AbortSignal", "Headers", "ReadableStream", "ReadableStreamDefaultReader", "ReadableStreamDefaultController", "ReadableStreamReadResult", "ReadableStreamReadValueResult", "ReadableStreamReadDoneResult"];
8
+ export declare const FETCH_AMBIENT_TYPES: readonly ["Response", "Request", "ResponseInit", "RequestInit", "Event", "CustomEvent", "EventTarget", "AddEventListenerOptions", "EventListenerOptions", "EventInit", "CustomEventInit", "AbortController", "AbortSignal", "Headers", "ReadableStream", "ReadableStreamDefaultReader", "ReadableStreamDefaultController", "ReadableStreamReadResult", "ReadableStreamReadValueResult", "ReadableStreamReadDoneResult", "Blob", "File", "BlobPropertyBag", "FilePropertyBag", "BlobOptions", "FileOptions"];
9
9
  /** True for the parseArgs type family that deliberately rides dyn. Exported
10
10
  * for the property-read bridge after TypeScript narrows a token union arm. */
11
11
  export declare function isParseArgsDynTypeName(name: string): boolean;
@@ -163,6 +163,17 @@ export declare class UnionRegistry {
163
163
  * The same budget covers every sibling, and deep wrapper chains truncate
164
164
  * before exhausting the JS stack. Small types retain their full spelling. */
165
165
  export declare function formatIrType(t: IrType, shapes: ShapeRegistry, unions: UnionRegistry, seen?: Set<string>): string;
166
+ /** The hidden field that marks the perf_hooks entry record shape. */
167
+ export declare const PERF_ENTRY_MARKER = "%perfEntry";
168
+ /** PerformanceEntry's toJSON fields, in toJSON's order. */
169
+ export declare const PERF_ENTRY_FIELDS: string[];
170
+ /** The record shape behind PerformanceEntry, PerformanceMark and
171
+ * PerformanceMeasure values (see mapType). The marker is an always-absent
172
+ * optional, so dyn conversions and key walks never see it. */
173
+ export declare function perfEntryShape(shapes: ShapeRegistry, unions: UnionRegistry): string;
174
+ /** toJSON()'s plain object over an entry: the same fields without the
175
+ * marker. */
176
+ export declare function perfEntryJsonShape(shapes: ShapeRegistry): string;
166
177
  /** True when a type contains a record anywhere (the trigger for the
167
178
  * shape-mismatch diagnostic SC2002 — non-record mismatches are tsc's or
168
179
  * the validator's business). */
@@ -275,6 +286,10 @@ export interface TypeMapperCtx {
275
286
  * is that package's class declaration (lowering/lifetime-regions.ts). */
276
287
  lifetimeRegionClass?: (decl: ts.ClassDeclaration) => IrType | null;
277
288
  }
289
+ export declare function isLegacyUrlType(type: ts.Type, ctx: Pick<TypeMapperCtx, "checker" | "isStdlibFile">): boolean;
290
+ /** A symbol declared as one of node:url's legacy record interfaces, or as
291
+ * a member of one. */
292
+ export declare function isLegacyUrlSymbol(symbol: ts.Symbol | null | undefined, ctx: Pick<TypeMapperCtx, "checker" | "isStdlibFile">): boolean;
278
293
  /** os.constants and its groups — @types/node's `namespace constants`
279
294
  * (errno, dlopen, priority) and SignalConstants, and the fallback's twins:
280
295
  * the runtime's checked-dynamic constants object, whose members vary by
@@ -87,6 +87,12 @@ export const FETCH_AMBIENT_TYPES = [
87
87
  "ReadableStreamReadResult",
88
88
  "ReadableStreamReadValueResult",
89
89
  "ReadableStreamReadDoneResult",
90
+ "Blob",
91
+ "File",
92
+ "BlobPropertyBag",
93
+ "FilePropertyBag",
94
+ "BlobOptions",
95
+ "FileOptions",
90
96
  ];
91
97
  /** node:util.parseArgs's public and @types/node helper type names, plus
92
98
  * util.debuglog's DebugLogger (a native function value with an `enabled`
@@ -646,6 +652,8 @@ export function formatIrType(t, shapes, unions, seen = new Set()) {
646
652
  return append("Stats");
647
653
  case "fileHandle":
648
654
  return append("FileHandle");
655
+ case "dir":
656
+ return append("Dir");
649
657
  case "spawnRes":
650
658
  return append("SpawnSyncReturns");
651
659
  case "child":
@@ -721,6 +729,34 @@ function esOwnKeyOrder(names) {
721
729
  const indices = names.filter(isArrayIndex).sort((a, b) => Number(a) - Number(b));
722
730
  return indices.length === 0 ? names : [...indices, ...names.filter((n) => !isArrayIndex(n))];
723
731
  }
732
+ /** The hidden field that marks the perf_hooks entry record shape. */
733
+ export const PERF_ENTRY_MARKER = "%perfEntry";
734
+ /** PerformanceEntry's toJSON fields, in toJSON's order. */
735
+ export const PERF_ENTRY_FIELDS = ["name", "entryType", "startTime", "duration", "detail"];
736
+ /** The record shape behind PerformanceEntry, PerformanceMark and
737
+ * PerformanceMeasure values (see mapType). The marker is an always-absent
738
+ * optional, so dyn conversions and key walks never see it. */
739
+ export function perfEntryShape(shapes, unions) {
740
+ return shapes.intern([
741
+ { name: PERF_ENTRY_MARKER, type: withUndefinedArm(F64, unions) },
742
+ { name: "detail", type: DYN },
743
+ { name: "duration", type: F64 },
744
+ { name: "entryType", type: STRING },
745
+ { name: "name", type: STRING },
746
+ { name: "startTime", type: F64 },
747
+ ], false, undefined, PERF_ENTRY_FIELDS);
748
+ }
749
+ /** toJSON()'s plain object over an entry: the same fields without the
750
+ * marker. */
751
+ export function perfEntryJsonShape(shapes) {
752
+ return shapes.intern([
753
+ { name: "detail", type: DYN },
754
+ { name: "duration", type: F64 },
755
+ { name: "entryType", type: STRING },
756
+ { name: "name", type: STRING },
757
+ { name: "startTime", type: F64 },
758
+ ], false, undefined, PERF_ENTRY_FIELDS);
759
+ }
724
760
  function isDeclaredInAmbientModule(d, name) {
725
761
  let node = d.parent;
726
762
  while (node) {
@@ -849,6 +885,43 @@ let mapTypeDepth = 0;
849
885
  * a bump between entry and exit stays fenced (recursive generic-open types
850
886
  * stay fenced instead of interning a per-context-wrong shape). */
851
887
  let contextResolutions = 0;
888
+ /** node:url's legacy record interfaces: url.parse()'s Url instance (and
889
+ * its two query-typed refinements), url.format()'s UrlObject input, and the
890
+ * URL form's URLFormatOptions. The values are checked-dynamic objects —
891
+ * Node's Url instance carries its class name and null fields, and format()
892
+ * reads any object's fields with JS truthiness. */
893
+ const LEGACY_URL_TYPES = new Set([
894
+ "Url",
895
+ "UrlObject",
896
+ "UrlWithParsedQuery",
897
+ "UrlWithStringQuery",
898
+ "URLFormatOptions",
899
+ ]);
900
+ export function isLegacyUrlType(type, ctx) {
901
+ const symbol = type.getAliasSymbol() ?? type.getSymbol();
902
+ return isLegacyUrlSymbol(symbol, ctx);
903
+ }
904
+ /** A symbol declared as one of node:url's legacy record interfaces, or as
905
+ * a member of one. */
906
+ export function isLegacyUrlSymbol(symbol, ctx) {
907
+ if (!symbol)
908
+ return false;
909
+ for (const d of ctx.checker.declarationsOf(symbol)) {
910
+ if (!ctx.isStdlibFile(d.getSourceFile()))
911
+ continue;
912
+ let family = false;
913
+ for (let n = d; n; n = n.parent) {
914
+ if (ts.isInterfaceDeclaration(n) && LEGACY_URL_TYPES.has(n.name.text))
915
+ family = true;
916
+ if (ts.isModuleDeclaration(n) && ts.isStringLiteral(n.name)) {
917
+ if (family && (n.name.text === "url" || n.name.text === "node:url"))
918
+ return true;
919
+ break;
920
+ }
921
+ }
922
+ }
923
+ return false;
924
+ }
852
925
  /** os.constants and its groups — @types/node's `namespace constants`
853
926
  * (errno, dlopen, priority) and SignalConstants, and the fallback's twins:
854
927
  * the runtime's checked-dynamic constants object, whose members vary by
@@ -984,7 +1057,7 @@ function mapTypeInner(type, ctx) {
984
1057
  checker.declarationsOf(directAlias).some((decl) => ctx.isStdlibFile(decl.getSourceFile()))) {
985
1058
  return { kind: "object", className: "%Error" };
986
1059
  }
987
- if (isOsConstantsType(type, ctx))
1060
+ if (isOsConstantsType(type, ctx) || isLegacyUrlType(type, ctx))
988
1061
  return DYN;
989
1062
  // Immutable<T> (@scriptc/types) is a deep-readonly view: the value is
990
1063
  // still the T it maps.
@@ -1287,8 +1360,12 @@ function mapTypeInner(type, ctx) {
1287
1360
  // changing this public representation. This is dynFallbackType's JS stance promoted into
1288
1361
  // the mapping itself; construction sites build dynArrLit (the checked-dynamic tree
1289
1362
  // array literal) and typed sources convert per element at the slot.
1363
+ // Arrays of class-backed protocol values are the exception: each
1364
+ // element is one checked-dynamic value (a class capsule or an object),
1365
+ // so a native array of them keeps every element's identity and passes
1366
+ // method calls a receiver they can dispatch.
1290
1367
  if (elem.kind === "dyn")
1291
- return DYN;
1368
+ return ctx.classImplementedProtocol?.(elemTs) ? arrayOf(DYN) : DYN;
1292
1369
  // The shared predicate is the runtime/backend storage contract. In
1293
1370
  // particular, valid standalone values such as Date and opaque
1294
1371
  // handles do not automatically have an array element representation.
@@ -1567,7 +1644,7 @@ function mapTypeInner(type, ctx) {
1567
1644
  // it lowers like `unknown` (the dyn) — the same rule as `object` and
1568
1645
  // the empty object type, provenance-checked so a user's own `interface
1569
1646
  // Object` still maps as a record. Its Object.prototype member surface
1570
- // (`x.toString()`) fences at each use site, never silently.
1647
+ // (`x.toString()`) fences at each use site with an explicit error.
1571
1648
  if (isStdlibInterface("Object"))
1572
1649
  return DYN;
1573
1650
  // NodeJS.Module / the shipped fallback's ScriptcModule: a process-lifetime
@@ -1601,17 +1678,17 @@ function mapTypeInner(type, ctx) {
1601
1678
  (isDeclaredInAmbientModule(d, "events") || isDeclaredInAmbientNamespace(d, "NodeJS")))) {
1602
1679
  return { kind: "object", className: RUNTIME_EMITTER_CLASS };
1603
1680
  }
1604
- // readline.Interface: the interface value is an f64 handle into the
1605
- // runtime's registry (the Timeout-id precedent). The NAME is generic,
1606
- // so the provenance check adds the enclosing ambient module, like
1607
- // net.Server (@types/node also declares Interface in
1608
- // readline/promises — that one stays unmapped and fences).
1681
+ // readline.Interface and readline/promises.Interface: the interface
1682
+ // value is an f64 handle into the runtime's registry (the Timeout-id
1683
+ // precedent). The NAME is generic, so the provenance check adds the
1684
+ // enclosing ambient module, like net.Server.
1609
1685
  if (psym?.name === "Interface" &&
1610
1686
  checker
1611
1687
  .declarationsOf(psym)
1612
1688
  .some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
1613
1689
  ctx.isStdlibFile(d.getSourceFile()) &&
1614
- isDeclaredInAmbientModule(d, "readline"))) {
1690
+ (isDeclaredInAmbientModule(d, "readline") ||
1691
+ isDeclaredInAmbientModule(d, "readline/promises")))) {
1615
1692
  return F64;
1616
1693
  }
1617
1694
  // diagnostics_channel.Channel: the channel value is an f64 handle into
@@ -1804,6 +1881,16 @@ function mapTypeInner(type, ctx) {
1804
1881
  return null;
1805
1882
  return genResultRecord(elem, VOID, ctx.shapes, ctx.unions);
1806
1883
  }
1884
+ // node:crypto's KeyObject: secret keys are native handles (scr_lib.c)
1885
+ // whose getters and methods dispatch through the handle. The JsonWebKey
1886
+ // that export() returns is a plain checked-dynamic object.
1887
+ if ((psym?.name === "KeyObject" || psym?.name === "JsonWebKey") &&
1888
+ checker
1889
+ .declarationsOf(psym)
1890
+ .some((d) => (ts.isClassDeclaration(d) || ts.isInterfaceDeclaration(d)) &&
1891
+ ctx.isStdlibFile(d.getSourceFile()))) {
1892
+ return DYN;
1893
+ }
1807
1894
  if (psym &&
1808
1895
  FETCH_AMBIENT_TYPES.includes(psym.name) &&
1809
1896
  !(psym.name === "ReadableStream" &&
@@ -1922,7 +2009,8 @@ function mapTypeInner(type, ctx) {
1922
2009
  if (isStdlibInterface("ArrayBuffer") ||
1923
2010
  isStdlibInterface("SharedArrayBuffer") ||
1924
2011
  isStdlibInterface("PropertyDescriptor") ||
1925
- isStdlibInterface("ProcessVersions"))
2012
+ isStdlibInterface("ProcessVersions") ||
2013
+ isStdlibInterface("ProcessRelease"))
1926
2014
  return DYN;
1927
2015
  if (Object.values(BYTES_ELEMENT_NAME).some((name) => isStdlibInterface(`${name}Constructor`)))
1928
2016
  return DYN;
@@ -2020,6 +2108,16 @@ function mapTypeInner(type, ctx) {
2020
2108
  isDeclaredInAmbientModule(d, "fs/promises"))) {
2021
2109
  return { kind: "fileHandle" };
2022
2110
  }
2111
+ // fs.Dir: an open directory stream, declared in "fs" by both the
2112
+ // fallback and @types/node.
2113
+ if (psym?.name === "Dir" &&
2114
+ checker
2115
+ .declarationsOf(psym)
2116
+ .some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
2117
+ ctx.isStdlibFile(d.getSourceFile()) &&
2118
+ isDeclaredInAmbientModule(d, "fs"))) {
2119
+ return { kind: "dir" };
2120
+ }
2023
2121
  // child_process.SpawnSyncReturns: @types/node's generic interface (the
2024
2122
  // Buffer/string split is re-checked at the stdout/stderr READ — status
2025
2123
  // reads work either way) or the fallback declarations' plain interface.
@@ -2446,7 +2544,8 @@ function mapTypeInner(type, ctx) {
2446
2544
  // is string[]; unsupported runtime modes throw at the call), and the
2447
2545
  // accepted-but-inert maxBuffer/windowsHide. Members outside this set
2448
2546
  // (env, killSignal, shell, uid, ...) keep the shape unmatched — their
2449
- // literals fence at the shape check instead of silently dropping.
2547
+ // literals fence at the shape check instead of being dropped without a
2548
+ // diagnostic.
2450
2549
  if (isStdlibInterface("ExecFileSyncOptionsWithStringEncoding")) {
2451
2550
  const optStr = withUndefinedArm(STRING, ctx.unions);
2452
2551
  const optNum = withUndefinedArm(F64, ctx.unions);
@@ -2556,10 +2655,11 @@ function mapTypeInner(type, ctx) {
2556
2655
  // hidden %dtype field carries the entry kind (libuv's UV_DIRENT
2557
2656
  // encoding) that the isFile/isDirectory/isSymbolicLink call lowerings
2558
2657
  // read (lowerDirentMethodCall — the StringDecoder pattern, so the
2559
- // %-field never surfaces through the lowered Dirent surface itself;
2560
- // JSON.stringify of a Dirent would show it — the documented
2561
- // internal-shape edge). @types/node declares Dirent<Name> generic over
2562
- // the name's encoding — only the string instantiation maps (the
2658
+ // %-field never surfaces through the lowered Dirent surface itself).
2659
+ // A row converted to dyn takes Node's Dirent prototype and Symbol(type)
2660
+ // key, with %dtype non-enumerable (scr_dyn_dirent_finish), and inspect
2661
+ // renders rows through that view. @types/node declares Dirent<Name>
2662
+ // generic over the name's encoding — only the string instantiation maps (the
2563
2663
  // encoding:'buffer' readdir form has no lowering); the shipped fallback
2564
2664
  // declares it concrete (an interface; @types/node uses a class — both
2565
2665
  // provenance-checked, the Buffer/URL pattern).
@@ -2679,6 +2779,31 @@ function mapTypeInner(type, ctx) {
2679
2779
  ], false, undefined, ["fingerprint", "validFrom", "validTo"]),
2680
2780
  };
2681
2781
  }
2782
+ // perf_hooks' PerformanceEntry, PerformanceMark and PerformanceMeasure
2783
+ // (performance.mark/measure and the getEntries family): ONE record shape
2784
+ // for the three classes, so marks and measures share PerformanceEntry[]
2785
+ // arrays. The visible fields are toJSON's, in its order; the hidden
2786
+ // marker field keeps the shape distinct from a structurally equal user
2787
+ // record (util.inspect names the class from entryType, like Node).
2788
+ // @types/node declares the classes in perf_hooks and global interfaces
2789
+ // over them; the shipped fallback declares the classes.
2790
+ if ((psym?.name === "PerformanceEntry" ||
2791
+ psym?.name === "PerformanceMark" ||
2792
+ psym?.name === "PerformanceMeasure") &&
2793
+ checker
2794
+ .declarationsOf(psym)
2795
+ .some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
2796
+ ctx.isStdlibFile(d.getSourceFile()))) {
2797
+ return { kind: "record", shapeId: perfEntryShape(ctx.shapes, ctx.unions) };
2798
+ }
2799
+ // process.memoryUsage()'s record, in Node's key order.
2800
+ if (isStdlibInterface("MemoryUsage")) {
2801
+ const names = ["rss", "heapTotal", "heapUsed", "external", "arrayBuffers"];
2802
+ return {
2803
+ kind: "record",
2804
+ shapeId: ctx.shapes.intern([...names].sort().map((name) => ({ name, type: F64 })), false, undefined, names),
2805
+ };
2806
+ }
2682
2807
  // process.cpuUsage()/threadCpuUsage()'s {user, system} microsecond
2683
2808
  // record and resourceUsage()'s getrusage record — stdlib data
2684
2809
  // interfaces interned explicitly (the RemoteInfo pattern; declared
@@ -4436,7 +4561,7 @@ function mapRecordTypeInner(widened, ctx) {
4436
4561
  return DYN;
4437
4562
  // A computed shape with NO members is not a real empty record: inside a
4438
4563
  // generic body `Partial<T>` resolves to no members at all (keyof T is
4439
- // still unknown there) — interning `{}` would be silently wrong. The
4564
+ // still unknown there) — interning `{}` would give a wrong type. The
4440
4565
  // degenerate empties (`Partial<{}>`, `Omit<C, keyof C>`) go with it.
4441
4566
  // An INDEX-SIGNATURE shape is exempt: `Record<string, T>` legitimately
4442
4567
  // has zero declared members — the signature is the shape.
@@ -4476,8 +4601,8 @@ function mapRecordTypeInner(widened, ctx) {
4476
4601
  // accessor MEMBERS map the same way so accessor records cross
4477
4602
  // annotated boundaries (`function f(p: { get x(): number })`) —
4478
4603
  // tsc lets a plain DATA property satisfy such a member, but the
4479
- // exact-shape stance turns that into a loud shape-mismatch fence
4480
- // at the literal, never a silent split. JS-file literals keep
4604
+ // exact-shape stance turns that into a shape-mismatch diagnostic
4605
+ // at the literal instead of an undiagnosed split. JS-file literals keep
4481
4606
  // their existing paths (the CJS export-table narrowing and the
4482
4607
  // checked-dynamic fallback), and .d.ts declarations stay out with
4483
4608
  // the rest of the lib's type worlds.