@scriptc/compiler 0.2.7 → 0.2.8

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 (385) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +2 -0
  2. package/dist/backend/llvm/alloc.d.ts +3 -0
  3. package/dist/backend/llvm/alloc.js +54 -13
  4. package/dist/backend/llvm/alloc.js.map +1 -1
  5. package/dist/backend/llvm/blocks.d.ts +9 -0
  6. package/dist/backend/llvm/blocks.js +9 -0
  7. package/dist/backend/llvm/blocks.js.map +1 -1
  8. package/dist/backend/llvm/borrowed-receivers.d.ts +7 -0
  9. package/dist/backend/llvm/borrowed-receivers.js +39 -0
  10. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  11. package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
  12. package/dist/backend/llvm/call-lifetimes.js +14 -3
  13. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  14. package/dist/backend/llvm/call-lifetimes.test.js +8 -3
  15. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  16. package/dist/backend/llvm/checked-narrows.d.ts +24 -0
  17. package/dist/backend/llvm/checked-narrows.js +108 -0
  18. package/dist/backend/llvm/checked-narrows.js.map +1 -0
  19. package/dist/backend/llvm/checked-narrows.test.d.ts +1 -0
  20. package/dist/backend/llvm/checked-narrows.test.js +208 -0
  21. package/dist/backend/llvm/checked-narrows.test.js.map +1 -0
  22. package/dist/backend/llvm/classes.d.ts +13 -1
  23. package/dist/backend/llvm/classes.js +26 -18
  24. package/dist/backend/llvm/classes.js.map +1 -1
  25. package/dist/backend/llvm/classes.test.js +32 -3
  26. package/dist/backend/llvm/classes.test.js.map +1 -1
  27. package/dist/backend/llvm/debug-info.d.ts +6 -2
  28. package/dist/backend/llvm/debug-info.js +11 -1
  29. package/dist/backend/llvm/debug-info.js.map +1 -1
  30. package/dist/backend/llvm/dense-array-access.test.js +89 -0
  31. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  32. package/dist/backend/llvm/dyn.d.ts +4 -0
  33. package/dist/backend/llvm/dyn.js +31 -20
  34. package/dist/backend/llvm/dyn.js.map +1 -1
  35. package/dist/backend/llvm/emitter.d.ts +184 -11
  36. package/dist/backend/llvm/emitter.js +1189 -125
  37. package/dist/backend/llvm/emitter.js.map +1 -1
  38. package/dist/backend/llvm/emitter.test.js +21 -1
  39. package/dist/backend/llvm/emitter.test.js.map +1 -1
  40. package/dist/backend/llvm/expr-async.js +4 -4
  41. package/dist/backend/llvm/expr-async.js.map +1 -1
  42. package/dist/backend/llvm/expr-bytes.d.ts +1 -1
  43. package/dist/backend/llvm/expr-bytes.js +85 -8
  44. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  45. package/dist/backend/llvm/expr-callbacks.js +29 -21
  46. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  47. package/dist/backend/llvm/expr-calls.d.ts +5 -0
  48. package/dist/backend/llvm/expr-calls.js +55 -10
  49. package/dist/backend/llvm/expr-calls.js.map +1 -1
  50. package/dist/backend/llvm/expr-containers.d.ts +7 -1
  51. package/dist/backend/llvm/expr-containers.js +230 -27
  52. package/dist/backend/llvm/expr-containers.js.map +1 -1
  53. package/dist/backend/llvm/expr-control.js +25 -10
  54. package/dist/backend/llvm/expr-control.js.map +1 -1
  55. package/dist/backend/llvm/expr-dynamic.js +72 -21
  56. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  57. package/dist/backend/llvm/expr-island.js +3 -8
  58. package/dist/backend/llvm/expr-island.js.map +1 -1
  59. package/dist/backend/llvm/expr-primitives.js +41 -12
  60. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  61. package/dist/backend/llvm/expr-primitives.test.js +50 -2
  62. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  63. package/dist/backend/llvm/expr-records.js +28 -14
  64. package/dist/backend/llvm/expr-records.js.map +1 -1
  65. package/dist/backend/llvm/expr-stream-bridges.js +41 -31
  66. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  67. package/dist/backend/llvm/expr-stream-callbacks.js +6 -3
  68. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  69. package/dist/backend/llvm/layouts.d.ts +2 -1
  70. package/dist/backend/llvm/layouts.js +2 -2
  71. package/dist/backend/llvm/layouts.js.map +1 -1
  72. package/dist/backend/llvm/lib-abi.js +10 -0
  73. package/dist/backend/llvm/lib-abi.js.map +1 -1
  74. package/dist/backend/llvm/lib-filesystem.js +7 -11
  75. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  76. package/dist/backend/llvm/lib-process.js +8 -8
  77. package/dist/backend/llvm/lib-process.js.map +1 -1
  78. package/dist/backend/llvm/lib-shared.js +1 -0
  79. package/dist/backend/llvm/lib-shared.js.map +1 -1
  80. package/dist/backend/llvm/local-array-reads.js +73 -13
  81. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  82. package/dist/backend/llvm/local-array-reads.test.js +7 -3
  83. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  84. package/dist/backend/llvm/local-union-storage.js +10 -6
  85. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  86. package/dist/backend/llvm/local-union-storage.test.js +3 -2
  87. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  88. package/dist/backend/llvm/map-number-lookup.d.ts +18 -0
  89. package/dist/backend/llvm/map-number-lookup.js +62 -0
  90. package/dist/backend/llvm/map-number-lookup.js.map +1 -0
  91. package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -0
  92. package/dist/backend/llvm/map-read-lifetimes.js +24 -3
  93. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  94. package/dist/backend/llvm/map-read-lifetimes.test.js +38 -19
  95. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  96. package/dist/backend/llvm/nullable-unions.d.ts +68 -0
  97. package/dist/backend/llvm/nullable-unions.js +132 -0
  98. package/dist/backend/llvm/nullable-unions.js.map +1 -0
  99. package/dist/backend/llvm/publish.d.ts +58 -0
  100. package/dist/backend/llvm/publish.js +286 -0
  101. package/dist/backend/llvm/publish.js.map +1 -0
  102. package/dist/backend/llvm/rebound-parameters.d.ts +12 -0
  103. package/dist/backend/llvm/rebound-parameters.js +72 -0
  104. package/dist/backend/llvm/rebound-parameters.js.map +1 -0
  105. package/dist/backend/llvm/rebound-parameters.test.d.ts +1 -0
  106. package/dist/backend/llvm/rebound-parameters.test.js +67 -0
  107. package/dist/backend/llvm/rebound-parameters.test.js.map +1 -0
  108. package/dist/backend/llvm/reference-effects.d.ts +18 -2
  109. package/dist/backend/llvm/reference-effects.js +106 -16
  110. package/dist/backend/llvm/reference-effects.js.map +1 -1
  111. package/dist/backend/llvm/reference-effects.test.js +52 -1
  112. package/dist/backend/llvm/reference-effects.test.js.map +1 -1
  113. package/dist/backend/llvm/shapes.d.ts +45 -17
  114. package/dist/backend/llvm/shapes.js +131 -53
  115. package/dist/backend/llvm/shapes.js.map +1 -1
  116. package/dist/backend/llvm/shapes.test.js +33 -8
  117. package/dist/backend/llvm/shapes.test.js.map +1 -1
  118. package/dist/backend/llvm/stack-unions.test.js +5 -2
  119. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  120. package/dist/backend/llvm/string-construction.d.ts +10 -0
  121. package/dist/backend/llvm/string-construction.js +42 -0
  122. package/dist/backend/llvm/string-construction.js.map +1 -1
  123. package/dist/backend/llvm/string-key-hash.d.ts +9 -2
  124. package/dist/backend/llvm/string-key-hash.js +20 -3
  125. package/dist/backend/llvm/string-key-hash.js.map +1 -1
  126. package/dist/backend/llvm/string-key-hash.test.js +14 -3
  127. package/dist/backend/llvm/string-key-hash.test.js.map +1 -1
  128. package/dist/backend/llvm/string-lifetimes.test.js +24 -11
  129. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  130. package/dist/backend/llvm/string-reads.d.ts +7 -0
  131. package/dist/backend/llvm/string-reads.js +76 -0
  132. package/dist/backend/llvm/string-reads.js.map +1 -0
  133. package/dist/backend/llvm/switch-dispatch.test.js +1 -1
  134. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
  135. package/dist/backend/llvm/test-boxed-unions.d.ts +5 -0
  136. package/dist/backend/llvm/test-boxed-unions.js +13 -0
  137. package/dist/backend/llvm/test-boxed-unions.js.map +1 -0
  138. package/dist/backend/llvm/union-repr.d.ts +15 -0
  139. package/dist/backend/llvm/union-repr.js +89 -0
  140. package/dist/backend/llvm/union-repr.js.map +1 -0
  141. package/dist/backend/llvm/virtual-borrows.d.ts +31 -0
  142. package/dist/backend/llvm/virtual-borrows.js +82 -0
  143. package/dist/backend/llvm/virtual-borrows.js.map +1 -0
  144. package/dist/backend/llvm/walk-borrows.d.ts +43 -0
  145. package/dist/backend/llvm/walk-borrows.js +150 -0
  146. package/dist/backend/llvm/walk-borrows.js.map +1 -0
  147. package/dist/backend/llvm/walk-borrows.test.d.ts +1 -0
  148. package/dist/backend/llvm/walk-borrows.test.js +119 -0
  149. package/dist/backend/llvm/walk-borrows.test.js.map +1 -0
  150. package/dist/backend/llvm/walkers.d.ts +5 -1
  151. package/dist/backend/llvm/walkers.js +24 -21
  152. package/dist/backend/llvm/walkers.js.map +1 -1
  153. package/dist/backend/may-throw.d.ts +29 -1
  154. package/dist/backend/may-throw.js +346 -3
  155. package/dist/backend/may-throw.js.map +1 -1
  156. package/dist/backend/may-throw.test.js +113 -1
  157. package/dist/backend/may-throw.test.js.map +1 -1
  158. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  159. package/dist/backend/native/runtime-inputs.js +1 -0
  160. package/dist/backend/native/runtime-inputs.js.map +1 -1
  161. package/dist/backend/native-codegen-core.d.ts +7 -5
  162. package/dist/backend/native-codegen-core.js +14 -9
  163. package/dist/backend/native-codegen-core.js.map +1 -1
  164. package/dist/backend/native-codegen.d.ts +4 -0
  165. package/dist/backend/native-codegen.js +49 -2
  166. package/dist/backend/native-codegen.js.map +1 -1
  167. package/dist/backend/native-codegen.test.js +41 -10
  168. package/dist/backend/native-codegen.test.js.map +1 -1
  169. package/dist/backend/native-tools.d.ts +2 -0
  170. package/dist/backend/native-tools.js +3 -0
  171. package/dist/backend/native-tools.js.map +1 -1
  172. package/dist/backend/publication.d.ts +28 -0
  173. package/dist/backend/publication.js +155 -0
  174. package/dist/backend/publication.js.map +1 -0
  175. package/dist/backend/publication.test.d.ts +1 -0
  176. package/dist/backend/publication.test.js +72 -0
  177. package/dist/backend/publication.test.js.map +1 -0
  178. package/dist/backend/runtime-abi.d.ts +2 -2
  179. package/dist/backend/runtime-abi.js +2 -2
  180. package/dist/backend/runtime-pack-targets.test.js +1 -1
  181. package/dist/backend/runtime-pack.test.js +1 -1
  182. package/dist/cli/command.js +70 -7
  183. package/dist/cli/command.js.map +1 -1
  184. package/dist/cli/usage.d.ts +4 -1
  185. package/dist/cli/usage.js +8 -1
  186. package/dist/cli/usage.js.map +1 -1
  187. package/dist/compile-types.d.ts +12 -3
  188. package/dist/coverage/report.d.ts +25 -2
  189. package/dist/coverage/report.js +161 -33
  190. package/dist/coverage/report.js.map +1 -1
  191. package/dist/coverage/verdict-cache.d.ts +63 -0
  192. package/dist/coverage/verdict-cache.js +193 -0
  193. package/dist/coverage/verdict-cache.js.map +1 -0
  194. package/dist/coverage/verdict-cache.test.d.ts +1 -0
  195. package/dist/coverage/verdict-cache.test.js +52 -0
  196. package/dist/coverage/verdict-cache.test.js.map +1 -0
  197. package/dist/coverage/verdict-semantic.d.ts +2 -0
  198. package/dist/coverage/verdict-semantic.js +24 -0
  199. package/dist/coverage/verdict-semantic.js.map +1 -0
  200. package/dist/coverage/verdict-startup.d.ts +15 -0
  201. package/dist/coverage/verdict-startup.js +66 -0
  202. package/dist/coverage/verdict-startup.js.map +1 -0
  203. package/dist/diagnostics/diagnostic.d.ts +29 -1
  204. package/dist/diagnostics/diagnostic.js +74 -4
  205. package/dist/diagnostics/diagnostic.js.map +1 -1
  206. package/dist/diagnostics/envelope.d.ts +130 -0
  207. package/dist/diagnostics/envelope.js +257 -0
  208. package/dist/diagnostics/envelope.js.map +1 -0
  209. package/dist/diagnostics/envelope.test.d.ts +1 -0
  210. package/dist/diagnostics/envelope.test.js +91 -0
  211. package/dist/diagnostics/envelope.test.js.map +1 -0
  212. package/dist/diagnostics/render.d.ts +3 -0
  213. package/dist/diagnostics/render.js +13 -2
  214. package/dist/diagnostics/render.js.map +1 -1
  215. package/dist/executable/prepare.d.ts +4 -0
  216. package/dist/executable/prepare.js +7 -1
  217. package/dist/executable/prepare.js.map +1 -1
  218. package/dist/frontend/analysis.js +1 -0
  219. package/dist/frontend/analysis.js.map +1 -1
  220. package/dist/frontend/lowering/array-values.d.ts +7 -0
  221. package/dist/frontend/lowering/array-values.js +120 -4
  222. package/dist/frontend/lowering/array-values.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/numbers.js +29 -1
  224. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  225. package/dist/frontend/lowering/builtins/process.d.ts +4 -0
  226. package/dist/frontend/lowering/builtins/process.js +10 -0
  227. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  228. package/dist/frontend/lowering/builtins/workers.js +4 -2
  229. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  230. package/dist/frontend/lowering/class-assertions.d.ts +8 -0
  231. package/dist/frontend/lowering/class-assertions.js +217 -1
  232. package/dist/frontend/lowering/class-assertions.js.map +1 -1
  233. package/dist/frontend/lowering/class-dynamic-dispatch.js +8 -5
  234. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  235. package/dist/frontend/lowering/coercions/state.d.ts +6 -0
  236. package/dist/frontend/lowering/coercions/state.js +2 -0
  237. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  238. package/dist/frontend/lowering/coercions/unions.d.ts +8 -0
  239. package/dist/frontend/lowering/coercions/unions.js +67 -2
  240. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  241. package/dist/frontend/lowering/collation-repertoire.d.ts +1 -0
  242. package/dist/frontend/lowering/collation-repertoire.js +19 -0
  243. package/dist/frontend/lowering/collation-repertoire.js.map +1 -0
  244. package/dist/frontend/lowering/construction-escapes.d.ts +38 -0
  245. package/dist/frontend/lowering/construction-escapes.js +146 -0
  246. package/dist/frontend/lowering/construction-escapes.js.map +1 -0
  247. package/dist/frontend/lowering/construction-escapes.test.d.ts +1 -0
  248. package/dist/frontend/lowering/construction-escapes.test.js +150 -0
  249. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -0
  250. package/dist/frontend/lowering/containers/array-callbacks.js +81 -44
  251. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  252. package/dist/frontend/lowering/containers/array-construction.js +15 -2
  253. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  254. package/dist/frontend/lowering/containers/array-methods.js +231 -12
  255. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  256. package/dist/frontend/lowering/containers/callback-arguments.js +43 -1
  257. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  258. package/dist/frontend/lowering/containers/string-and-regexp.js +7 -63
  259. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  260. package/dist/frontend/lowering/cycle-initialization.d.ts +6 -1
  261. package/dist/frontend/lowering/cycle-initialization.js +59 -33
  262. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  263. package/dist/frontend/lowering/divergences.d.ts +9 -0
  264. package/dist/frontend/lowering/divergences.js +630 -0
  265. package/dist/frontend/lowering/divergences.js.map +1 -0
  266. package/dist/frontend/lowering/expressions/object-literals.js +40 -2
  267. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  268. package/dist/frontend/lowering/lower-calls.d.ts +5 -0
  269. package/dist/frontend/lowering/lower-calls.js +226 -157
  270. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  271. package/dist/frontend/lowering/lower-classes.d.ts +4 -0
  272. package/dist/frontend/lowering/lower-classes.js +72 -22
  273. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  274. package/dist/frontend/lowering/lower-exprs.d.ts +13 -0
  275. package/dist/frontend/lowering/lower-exprs.js +431 -107
  276. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  277. package/dist/frontend/lowering/lower-generators.d.ts +19 -13
  278. package/dist/frontend/lowering/lower-generators.js +67 -44
  279. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  280. package/dist/frontend/lowering/lower-inspect.js +3 -2
  281. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  282. package/dist/frontend/lowering/lower-island.d.ts +1 -1
  283. package/dist/frontend/lowering/lower-island.js +24 -7
  284. package/dist/frontend/lowering/lower-island.js.map +1 -1
  285. package/dist/frontend/lowering/lower-modules.js +90 -1
  286. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  287. package/dist/frontend/lowering/lower-stmts.js +36 -6
  288. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  289. package/dist/frontend/lowering/lowerer.d.ts +78 -2
  290. package/dist/frontend/lowering/lowerer.js +986 -73
  291. package/dist/frontend/lowering/lowerer.js.map +1 -1
  292. package/dist/frontend/lowering/runtime-optional-bounds.d.ts +19 -0
  293. package/dist/frontend/lowering/runtime-optional-bounds.js +354 -0
  294. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -0
  295. package/dist/frontend/lowering/runtime-optional-bounds.test.d.ts +1 -0
  296. package/dist/frontend/lowering/runtime-optional-bounds.test.js +66 -0
  297. package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -0
  298. package/dist/frontend/lowering/runtime-optional-elements.d.ts +117 -0
  299. package/dist/frontend/lowering/runtime-optional-elements.js +738 -0
  300. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -0
  301. package/dist/frontend/lowering/runtime-optional-guards.d.ts +36 -0
  302. package/dist/frontend/lowering/runtime-optional-guards.js +375 -0
  303. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -0
  304. package/dist/frontend/lowering/runtime-optional-guards.test.d.ts +1 -0
  305. package/dist/frontend/lowering/runtime-optional-guards.test.js +92 -0
  306. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -0
  307. package/dist/frontend/lowering/runtime-optional-ownership.d.ts +63 -0
  308. package/dist/frontend/lowering/runtime-optional-ownership.js +382 -0
  309. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -0
  310. package/dist/frontend/lowering/runtime-optional-provenance.d.ts +2 -1
  311. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -1
  312. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  313. package/dist/frontend/lowering/string-index-bounds.d.ts +36 -0
  314. package/dist/frontend/lowering/string-index-bounds.js +537 -0
  315. package/dist/frontend/lowering/string-index-bounds.js.map +1 -0
  316. package/dist/frontend/lowering/string-index-bounds.test.d.ts +1 -0
  317. package/dist/frontend/lowering/string-index-bounds.test.js +223 -0
  318. package/dist/frontend/lowering/string-index-bounds.test.js.map +1 -0
  319. package/dist/frontend/lowering/union-narrow.d.ts +2 -0
  320. package/dist/frontend/lowering/union-narrow.js +10 -6
  321. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  322. package/dist/frontend/program-analysis.d.ts +10 -0
  323. package/dist/frontend/program-analysis.js +7 -0
  324. package/dist/frontend/program-analysis.js.map +1 -1
  325. package/dist/frontend/program.d.ts +25 -0
  326. package/dist/frontend/program.js +613 -17
  327. package/dist/frontend/program.js.map +1 -1
  328. package/dist/frontend/program.test.js +64 -1
  329. package/dist/frontend/program.test.js.map +1 -1
  330. package/dist/frontend/resolve.d.ts +6 -0
  331. package/dist/frontend/resolve.js +14 -0
  332. package/dist/frontend/resolve.js.map +1 -1
  333. package/dist/frontend/threads-import.d.ts +5 -0
  334. package/dist/frontend/threads-import.js +21 -0
  335. package/dist/frontend/threads-import.js.map +1 -0
  336. package/dist/frontend/type-mapper.d.ts +3 -0
  337. package/dist/frontend/type-mapper.js +72 -6
  338. package/dist/frontend/type-mapper.js.map +1 -1
  339. package/dist/frontend/worker-target.d.ts +4 -0
  340. package/dist/frontend/worker-target.js +8 -1
  341. package/dist/frontend/worker-target.js.map +1 -1
  342. package/dist/index.d.ts +6 -1
  343. package/dist/index.js +47 -9
  344. package/dist/index.js.map +1 -1
  345. package/dist/ir/build.d.ts +5 -0
  346. package/dist/ir/build.js +7 -0
  347. package/dist/ir/build.js.map +1 -1
  348. package/dist/ir/builtin-signatures.d.ts +1 -1
  349. package/dist/ir/builtin-signatures.js +3 -0
  350. package/dist/ir/builtin-signatures.js.map +1 -1
  351. package/dist/ir/int32-slots.d.ts +72 -0
  352. package/dist/ir/int32-slots.js +837 -0
  353. package/dist/ir/int32-slots.js.map +1 -0
  354. package/dist/ir/int32-slots.test.d.ts +1 -0
  355. package/dist/ir/int32-slots.test.js +222 -0
  356. package/dist/ir/int32-slots.test.js.map +1 -0
  357. package/dist/ir/integer-ranges.d.ts +19 -3
  358. package/dist/ir/integer-ranges.js +168 -23
  359. package/dist/ir/integer-ranges.js.map +1 -1
  360. package/dist/ir/integer-ranges.test.js +74 -2
  361. package/dist/ir/integer-ranges.test.js.map +1 -1
  362. package/dist/ir/ir.d.ts +24 -6
  363. package/dist/ir/ir.js.map +1 -1
  364. package/dist/ir/validate.js +21 -2
  365. package/dist/ir/validate.js.map +1 -1
  366. package/dist/ir/validate.test.js +39 -0
  367. package/dist/ir/validate.test.js.map +1 -1
  368. package/dist/native/cache.d.ts +3 -0
  369. package/dist/native/cache.js +49 -1
  370. package/dist/native/cache.js.map +1 -1
  371. package/dist/native/cache.test.js +21 -1
  372. package/dist/native/cache.test.js.map +1 -1
  373. package/dist/native/cli.js +1 -1
  374. package/dist/native/cli.js.map +1 -1
  375. package/dist/native/compiler.d.ts +5 -0
  376. package/dist/native/compiler.js +51 -4
  377. package/dist/native/compiler.js.map +1 -1
  378. package/dist/native/prepare.d.ts +4 -0
  379. package/dist/native/prepare.js +2 -1
  380. package/dist/native/prepare.js.map +1 -1
  381. package/dist/startup-cache.d.ts +2 -0
  382. package/dist/startup-cache.js +2 -0
  383. package/dist/startup-cache.js.map +1 -1
  384. package/package.json +20 -20
  385. package/surface-manifest.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import type { ScrDiagnostic } from "../diagnostics/diagnostic.js";
2
+ import { type DiagnosticsEnvelope } from "../diagnostics/envelope.js";
2
3
  import type { LowerStats } from "../frontend/lowering/lowerer.js";
3
4
  import type { NpmBuiltinUse, NpmLazyTrap } from "../frontend/npm.js";
4
5
  import type { ProvenanceSources } from "../frontend/provenance-registry.js";
@@ -20,7 +21,12 @@ export interface CoverageInput {
20
21
  unreached?: {
21
22
  stats: LowerStats;
22
23
  diagnostics: ScrDiagnostic[];
24
+ runtimeFences?: ScrDiagnostic[];
23
25
  };
26
+ /** Compile-time-detectable behavior differences from Node (SC6xxx):
27
+ * the program compiles, but these sites can behave differently natively.
28
+ * Never blockers; `--fail-on=divergences` opts into failing on them. */
29
+ divergences?: ScrDiagnostic[];
24
30
  /** --dynamic only: every Node builtin the embedded npm graph imports —
25
31
  * what the island must provide for this program (unshimmed ones also
26
32
  * appear as SC2030 blockers, EXCEPT lazily-reached ones, which embed
@@ -59,7 +65,24 @@ export interface NpmStaticStatus {
59
65
  /** The fallback's first refusal reason (fallback rows only). */
60
66
  detail?: string;
61
67
  }
62
- export declare function renderCoverage(input: CoverageInput, opts?: {
68
+ export interface CoverageRenderOptions {
63
69
  color?: boolean;
64
70
  sourceTexts?: Map<string, string>;
65
- }): string;
71
+ /** Paths under this directory render relative to it. */
72
+ root?: string;
73
+ }
74
+ export declare function renderCoverage(input: CoverageInput, opts?: CoverageRenderOptions): string;
75
+ /** What `coverage --fail-on` checks: reached blockers (they fail a build)
76
+ * and, optionally, divergences. Unreached blockers never fail. */
77
+ export type CoverageFailOn = "blockers" | "divergences";
78
+ /** Whether the analysis passes the selected gate. Preflight failures
79
+ * always fail; `failOn` undefined means only preflight fails (the report's
80
+ * historical contract). Divergence gating implies blocker gating. */
81
+ export declare function coveragePasses(input: CoverageInput, failOn?: CoverageFailOn): boolean;
82
+ /** The versioned machine-readable form of a coverage analysis
83
+ * (`scriptc coverage --print=diagnostics`). */
84
+ export declare function coverageEnvelope(input: CoverageInput, opts: {
85
+ compilerVersion: string;
86
+ sourceTexts?: Map<string, string>;
87
+ failOn?: CoverageFailOn;
88
+ }): DiagnosticsEnvelope;
@@ -1,3 +1,4 @@
1
+ import { DIAGNOSTICS_SCHEMA, DIAGNOSTICS_SCHEMA_VERSION, DYNAMIC_CAPABLE_CODES, SourceLocator, groupDiagnostics, } from "../diagnostics/envelope.js";
1
2
  import { renderDiagnostics } from "../diagnostics/render.js";
2
3
  const GREEN = "\x1b[32m";
3
4
  const YELLOW = "\x1b[33m";
@@ -8,10 +9,32 @@ const RESET = "\x1b[0m";
8
9
  const MILESTONE_ORDER = ["M1", "M2", "M3", "M4", "M5", "later"];
9
10
  /** Codes whose construct RUNS under --dynamic (the embedded engine) — the
10
11
  * report separates "one flag away" from "cannot compile at all". */
11
- const DYNAMIC_CAPABLE = new Set(["SC2010", "SC2011", "SC2012", "SC2013"]);
12
+ const DYNAMIC_CAPABLE = DYNAMIC_CAPABLE_CODES;
13
+ /** Human rows cap their message: long embedded type text would otherwise
14
+ * push lines past several hundred columns. The full message is in the
15
+ * --print=diagnostics envelope (and in `scriptc build` output). */
16
+ const MESSAGE_CAP = 200;
17
+ /** Sites listed per group before "+N more". */
18
+ const SITES_SHOWN = 3;
12
19
  export function renderCoverage(input, opts = {}) {
13
20
  const c = (code, s) => (opts.color ? code + s + RESET : s);
14
21
  const out = [];
22
+ const locator = new SourceLocator(opts.sourceTexts);
23
+ const groupBlockers = (diags, scope = "reached") => groupBlockersAt(diags, scope, locator);
24
+ const where = (p) => `${displayPath(p.file, opts.root)}:${p.line}:${p.column}`;
25
+ // One root-cause group: count, code and message, then where it occurs
26
+ // (first sites in source order) and what to do about it.
27
+ const renderRows = (group, tone, dim = false) => {
28
+ for (const b of group) {
29
+ const what = capMessage(b.what);
30
+ out.push(` ${c(dim ? DIM : tone, `×${b.count}`.padStart(4))} ${c(DIM, b.code)} ${dim ? c(DIM, what) : what}`);
31
+ const sites = b.group.sites;
32
+ const shown = sites.slice(0, SITES_SHOWN).map(where).join(", ");
33
+ const more = sites.length > SITES_SHOWN ? ` (+${sites.length - SITES_SHOWN} more)` : "";
34
+ out.push(` ${c(DIM, `at ${shown}${more}`)}`);
35
+ out.push(` ${c(DIM, `hint: ${b.group.hint}`)}`);
36
+ }
37
+ };
15
38
  out.push(`${c(BOLD, "scriptc coverage")} ${DIMPath(input.file, opts.color ?? false)}`);
16
39
  out.push("");
17
40
  if (input.preflightFailed) {
@@ -28,8 +51,13 @@ export function renderCoverage(input, opts = {}) {
28
51
  }
29
52
  const tsc = input.diagnostics.filter((d) => d.code === "SC0001");
30
53
  if (tsc.length > 0) {
54
+ const world = tsc.filter((d) => d.typeWorld === true).length;
31
55
  out.push(` ${c(RED, "not analyzable")}: ${tsc.length} TypeScript error${tsc.length === 1 ? "" : "s"} — ` +
32
56
  `fix type errors first (scriptc only analyzes programs that typecheck)`);
57
+ if (world > 0) {
58
+ out.push(` ${c(YELLOW, "note")}: ${world === tsc.length ? (world === 1 ? "this error comes" : "these errors come") : `${world} of them come`} from scriptc's type world, ` +
59
+ `not necessarily from the project's own tsc configuration — see each hint`);
60
+ }
33
61
  // The same rendered diagnostics a build prints: coverage is the
34
62
  // command people reach for first, so the verdict line alone would
35
63
  // swallow the code frames that say what to fix.
@@ -42,11 +70,7 @@ export function renderCoverage(input, opts = {}) {
42
70
  const n = input.diagnostics.length;
43
71
  out.push(` ${c(RED, "analysis stopped at preflight")}: ${n} unsupported import site${n === 1 ? "" : "s"} — ` +
44
72
  `the module graph must load before statements can be counted`);
45
- const blockers = groupBlockers(input.diagnostics);
46
- const widest = Math.max(...blockers.map((b) => b.what.length));
47
- for (const b of blockers) {
48
- out.push(` ${c(RED, `×${b.count}`.padStart(4))} ${b.what.padEnd(widest)} ${c(DIM, b.code)}`);
49
- }
73
+ renderRows(groupBlockers(input.diagnostics, "preflight"), RED);
50
74
  if (opts.sourceTexts) {
51
75
  out.push("");
52
76
  out.push(renderDiagnostics(input.diagnostics, opts.sourceTexts, { color: opts.color ?? false }));
@@ -73,7 +97,7 @@ export function renderCoverage(input, opts = {}) {
73
97
  out.push(` compile dynamically ${island} ${c(YELLOW, c(BOLD, `(${ipct}%)`))} ${c(DIM, "(island sites — the embedded engine runs them)")}`);
74
98
  }
75
99
  if (skipped > 0) {
76
- out.push(` ${c(DIM, `(+${skipped} function${skipped === 1 ? "" : "s"} not analyzed — signature blocked)`)}`);
100
+ out.push(` ${c(DIM, `(${skipped} function${skipped === 1 ? "" : "s"} not analyzed — signature blocked; their statements count as not static)`)}`);
77
101
  }
78
102
  out.push("");
79
103
  // --npm-static outcomes: which opted-in packages compiled statically as
@@ -172,19 +196,28 @@ export function renderCoverage(input, opts = {}) {
172
196
  // JS program never hides its dynamic gaps.
173
197
  const fences = input.runtimeFences ?? [];
174
198
  if (fences.length > 0) {
175
- const grouped = groupBlockers(fences);
176
- const widestF = Math.max(...grouped.map((b) => b.what.length));
177
199
  out.push(` ${c(YELLOW, "deferred to runtime")} ${fences.length} site${fences.length === 1 ? "" : "s"} ${c(DIM, "(JS statements that throw their fence if executed)")}`);
178
- for (const b of grouped) {
179
- out.push(` ${c(YELLOW, `×${b.count}`.padStart(4))} ${b.what.padEnd(widestF)} ${c(DIM, b.code)}`);
180
- }
200
+ renderRows(groupBlockers(fences, "deferred"), YELLOW);
181
201
  out.push("");
182
202
  }
183
- const unreachedDiags = un?.diagnostics ?? [];
203
+ // Divergences: the program compiles, but these sites can behave
204
+ // differently from Node. Never blockers (--fail-on=divergences opts in).
205
+ const divergences = input.divergences ?? [];
206
+ const renderDivergences = () => {
207
+ if (divergences.length === 0)
208
+ return;
209
+ out.push(` ${c(YELLOW, "differs from Node")} ${divergences.length} site${divergences.length === 1 ? "" : "s"} ${c(DIM, "(compiles; the native program can behave differently)")}`);
210
+ renderRows(groupBlockers(divergences), YELLOW);
211
+ };
212
+ const unreachedDiags = [...(un?.diagnostics ?? []), ...(un?.runtimeFences ?? [])];
184
213
  if (failed === 0 && input.diagnostics.length === 0 && unreachedDiags.length === 0) {
185
214
  out.push(island > 0
186
215
  ? ` ${c(GREEN, "builds with --dynamic")} — no remaining blockers (the island sites above run in the embedded engine).`
187
216
  : ` ${c(GREEN, "fully static")} — this program has no dynamic remainder.`);
217
+ if (divergences.length > 0) {
218
+ out.push("");
219
+ renderDivergences();
220
+ }
188
221
  return out.join("\n");
189
222
  }
190
223
  // Ordered by internal scheduling (soonest first), then by frequency —
@@ -193,16 +226,18 @@ export function renderCoverage(input, opts = {}) {
193
226
  // Blockers split by what a flag can fix: sites that RUN under --dynamic
194
227
  // (the embedded engine) versus constructs with no lowering at all.
195
228
  const blockers = groupBlockers(input.diagnostics);
196
- const unreachedBlockers = groupBlockers(unreachedDiags);
229
+ const unreachedBlockers = groupBlockers(unreachedDiags, "unreached");
197
230
  const dynamic = blockers.filter((b) => DYNAMIC_CAPABLE.has(b.code));
198
231
  const rejected = blockers.filter((b) => !DYNAMIC_CAPABLE.has(b.code));
199
- const widest = Math.max(...[...blockers, ...unreachedBlockers].map((b) => b.what.length));
200
- const renderGroup = (group, dim = false) => {
201
- for (const b of group) {
202
- const what = b.what.padEnd(widest);
203
- out.push(` ${c(dim ? DIM : RED, `×${b.count}`.padStart(4))} ${dim ? c(DIM, what) : what} ${c(DIM, b.code)}`);
204
- }
205
- };
232
+ const renderGroup = (group, dim = false) => renderRows(group, RED, dim);
233
+ if (failed > 0 &&
234
+ blockers.length === 0 &&
235
+ unreachedBlockers.length === 0 &&
236
+ fences.length === 0) {
237
+ // Every failed statement must be explained; reaching this is a
238
+ // compiler bug, reported instead of silently omitted.
239
+ out.push(` ${c(RED, "blockers:")} ${failed} statement${failed === 1 ? "" : "s"} failed without a diagnostic (a compiler bug — please report it)`);
240
+ }
206
241
  if (dynamic.length > 0) {
207
242
  const sites = dynamic.reduce((n, b) => n + b.count, 0);
208
243
  out.push(` ${c(YELLOW, `runs with --dynamic`)} ${sites} site${sites === 1 ? "" : "s"} ${c(DIM, "(embeds a JS engine, ~620KB — static stays the default)")}`);
@@ -221,23 +256,116 @@ export function renderCoverage(input, opts = {}) {
221
256
  out.push(` ${c(DIM, "in unreached code")} ${c(DIM, "(never lowered — cannot fail a build)")}`);
222
257
  renderGroup(unreachedBlockers, true);
223
258
  }
259
+ if (divergences.length > 0) {
260
+ out.push("");
261
+ renderDivergences();
262
+ }
224
263
  return out.join("\n");
225
264
  }
226
265
  function DIMPath(file, color) {
227
266
  return color ? DIM + file + RESET : file;
228
267
  }
229
- function groupBlockers(diags) {
230
- const byCode = new Map();
231
- for (const d of diags) {
232
- const what = d.message.replace(/ (?:is|are) not supported yet$/, "");
233
- const key = `${d.code}:${what}`;
234
- const existing = byCode.get(key);
235
- if (existing)
236
- existing.count++;
237
- else
238
- byCode.set(key, { code: d.code, what, milestone: d.milestone, count: 1 });
239
- }
268
+ function groupBlockersAt(diags, scope, locator) {
269
+ const { located, groups } = groupDiagnostics(diags, scope, locator);
270
+ // A group's schedule is its first diagnostic's (one root cause, one
271
+ // milestone).
272
+ const milestone = new Map();
273
+ diags.forEach((d, i) => {
274
+ const id = located[i].group;
275
+ if (!milestone.has(id))
276
+ milestone.set(id, d.milestone);
277
+ });
240
278
  const rank = (m) => m === undefined ? MILESTONE_ORDER.length : MILESTONE_ORDER.indexOf(m);
241
- return [...byCode.values()].sort((a, b) => rank(a.milestone) - rank(b.milestone) || b.count - a.count || a.code.localeCompare(b.code));
279
+ return groups
280
+ .map((g) => ({
281
+ code: g.code,
282
+ what: g.message,
283
+ milestone: milestone.get(g.id),
284
+ count: g.count,
285
+ group: g,
286
+ }))
287
+ .sort((a, b) => rank(a.milestone) - rank(b.milestone) || b.count - a.count || a.code.localeCompare(b.code));
288
+ }
289
+ function capMessage(text) {
290
+ return text.length <= MESSAGE_CAP ? text : `${text.slice(0, MESSAGE_CAP - 1)}…`;
291
+ }
292
+ function displayPath(file, root) {
293
+ if (root === undefined || root === "")
294
+ return file;
295
+ const prefix = root.endsWith("/") ? root : `${root}/`;
296
+ return file.startsWith(prefix) ? file.slice(prefix.length) : file;
297
+ }
298
+ /** Whether the analysis passes the selected gate. Preflight failures
299
+ * always fail; `failOn` undefined means only preflight fails (the report's
300
+ * historical contract). Divergence gating implies blocker gating. */
301
+ export function coveragePasses(input, failOn) {
302
+ if (input.preflightFailed)
303
+ return false;
304
+ if (failOn === undefined)
305
+ return true;
306
+ // Reached blockers are exactly the diagnostics a build would fail on;
307
+ // runtime fences build (the statement throws only if it executes).
308
+ if (input.diagnostics.length > 0)
309
+ return false;
310
+ if (failOn === "divergences" && (input.divergences?.length ?? 0) > 0)
311
+ return false;
312
+ return true;
313
+ }
314
+ /** The versioned machine-readable form of a coverage analysis
315
+ * (`scriptc coverage --print=diagnostics`). */
316
+ export function coverageEnvelope(input, opts) {
317
+ const locator = new SourceLocator(opts.sourceTexts);
318
+ const located = [];
319
+ const groups = [];
320
+ const add = (diags, scope) => {
321
+ if (diags === undefined || diags.length === 0)
322
+ return;
323
+ const r = groupDiagnostics(diags, scope, locator);
324
+ located.push(...r.located);
325
+ groups.push(...r.groups);
326
+ };
327
+ if (input.preflightFailed) {
328
+ add(input.diagnostics, "preflight");
329
+ }
330
+ else {
331
+ add(input.diagnostics, "reached");
332
+ add(input.runtimeFences, "deferred");
333
+ add(input.unreached?.diagnostics, "unreached");
334
+ add(input.unreached?.runtimeFences, "deferred");
335
+ add(input.divergences, "reached");
336
+ }
337
+ const un = input.unreached;
338
+ const total = input.stats.statementsTotal + (un?.stats.statementsTotal ?? 0);
339
+ const failed = input.stats.statementsFailed + (un?.stats.statementsFailed ?? 0);
340
+ const island = input.stats.statementsIsland + (un?.stats.statementsIsland ?? 0);
341
+ const skipped = input.stats.functionsSkipped + (un?.stats.functionsSkipped ?? 0);
342
+ const ok = total - failed - island;
343
+ return {
344
+ schema: DIAGNOSTICS_SCHEMA,
345
+ schemaVersion: DIAGNOSTICS_SCHEMA_VERSION,
346
+ compilerVersion: opts.compilerVersion,
347
+ command: "coverage",
348
+ entry: input.file,
349
+ success: coveragePasses(input, opts.failOn ?? "blockers"),
350
+ phase: input.preflightFailed
351
+ ? "preflight"
352
+ : input.diagnostics.length > 0
353
+ ? "compile"
354
+ : "complete",
355
+ ...(input.preflightFailed
356
+ ? {}
357
+ : {
358
+ stats: {
359
+ statementsTotal: total,
360
+ statementsStatic: ok,
361
+ statementsDynamic: island,
362
+ statementsFailed: failed,
363
+ functionsSkipped: skipped,
364
+ percentStatic: total === 0 ? 100 : Math.floor((ok / total) * 100),
365
+ },
366
+ }),
367
+ groups,
368
+ diagnostics: located,
369
+ };
242
370
  }
243
371
  //# sourceMappingURL=report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/coverage/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/coverage/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { AnalyzeOptions, AnalyzeResult } from "../compile-types.js";
2
+ import type { ScrDiagnostic } from "../diagnostics/diagnostic.js";
3
+ import type { LowerStats } from "../frontend/lowering/lowerer.js";
4
+ import type { NpmStaticStatus } from "./report.js";
5
+ import { type FrontendInputSnapshot } from "../frontend/input-tracker.js";
6
+ /** Key-value storage for verdict entries (best effort: failures miss). */
7
+ export interface VerdictStore {
8
+ read(key: string): string | null;
9
+ write(key: string, text: string): void;
10
+ }
11
+ /** The cacheable part of a coverage analysis: JSON-shaped fields only. An
12
+ * analysis that carries anything else (npm builtin tables, provenance)
13
+ * is not cached. */
14
+ export interface CachedCoverage {
15
+ file: string;
16
+ dynamic: boolean;
17
+ stats: LowerStats;
18
+ diagnostics: ScrDiagnostic[];
19
+ runtimeFences?: ScrDiagnostic[];
20
+ unreached?: {
21
+ stats: LowerStats;
22
+ diagnostics: ScrDiagnostic[];
23
+ runtimeFences?: ScrDiagnostic[];
24
+ };
25
+ divergences?: ScrDiagnostic[];
26
+ npmStatic?: NpmStaticStatus[];
27
+ preflightFailed: boolean;
28
+ }
29
+ export interface CachedSource {
30
+ path: string;
31
+ text: string;
32
+ }
33
+ export interface SemanticReplayResult {
34
+ probes: FrontendInputSnapshot;
35
+ sources: CachedSource[];
36
+ coverage: CachedCoverage;
37
+ }
38
+ /** A semantic replay: the entry's probes still hold once the listed
39
+ * sources are allowed to differ by comments; the coverage comes back with
40
+ * its locations moved to the current text. Null when it does not apply. */
41
+ export type SemanticReplay = (probes: FrontendInputSnapshot, sources: CachedSource[], coverage: CachedCoverage) => SemanticReplayResult | null;
42
+ export interface VerdictCacheOptions {
43
+ store: VerdictStore;
44
+ /** The compiler implementation's identity (package digest or binary). */
45
+ identity: string;
46
+ /** The build's target platform: part of the analysis' meaning. */
47
+ platform: string;
48
+ semanticReplay?: SemanticReplay;
49
+ }
50
+ export type VerdictCacheOutcome = "hit" | "semantic-hit" | "miss" | "uncacheable";
51
+ export declare function verdictKey(entry: string, opts: AnalyzeOptions, cache: VerdictCacheOptions): string | null;
52
+ /** The cached analysis when an entry for the same inputs still holds
53
+ * exactly; null otherwise. */
54
+ export declare function replayVerdict(entry: string, opts: AnalyzeOptions, cache: VerdictCacheOptions): AnalyzeResult | null;
55
+ /** Runs `analyze` unless an entry for the same inputs proves its verdict
56
+ * still holds. */
57
+ export declare function analyzeWithVerdictCache(entry: string, opts: AnalyzeOptions, cache: VerdictCacheOptions, analyze: () => AnalyzeResult): {
58
+ result: AnalyzeResult;
59
+ outcome: VerdictCacheOutcome;
60
+ };
61
+ /** A directory of `<key>.json` entries, published by rename so readers
62
+ * never see a partial write. */
63
+ export declare function fileVerdictStore(directory: string): VerdictStore;
@@ -0,0 +1,193 @@
1
+ /* The coverage verdict cache: `scriptc coverage` on an unchanged program
2
+ * replays the previous analysis instead of lowering the whole program
3
+ * again. The entry records every filesystem observation the analysis made
4
+ * (the frontend input tracker's probes — the same evidence the executable
5
+ * cache trusts) plus the compiler identity and the analysis options; a
6
+ * rerun replays the probes and reuses the verdict only when all of them
7
+ * still hold. With a semantic matcher (the Node frontend's), edits that
8
+ * only touch TypeScript comments also reuse it, with every reported
9
+ * location moved to the edited text. */
10
+ import { createHash } from "node:crypto";
11
+ import { mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ import { FrontendInputTracker, frontendInputsStillMatch, } from "../frontend/input-tracker.js";
14
+ const SCHEMA = "scriptc.coverage-verdict.v1";
15
+ function digest(text) {
16
+ return createHash("sha256").update(text).digest("hex");
17
+ }
18
+ export function verdictKey(entry, opts, cache) {
19
+ let ffi = "";
20
+ if (opts.ffiProfilePath !== undefined) {
21
+ try {
22
+ ffi = digest(readFileSync(opts.ffiProfilePath, "utf8"));
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ const npmStatic = opts.npmStatic === undefined
29
+ ? ""
30
+ : typeof opts.npmStatic === "string"
31
+ ? opts.npmStatic
32
+ : opts.npmStatic.join(",");
33
+ const external = [];
34
+ const types = opts.externalTypes;
35
+ if (types !== undefined) {
36
+ for (const specifier of Object.keys(types).sort())
37
+ external.push(`${specifier}=${types[specifier]}`);
38
+ }
39
+ return digest([
40
+ SCHEMA,
41
+ cache.identity,
42
+ cache.platform,
43
+ process.env["SCRIPTC_TARGET"] ?? "",
44
+ entry,
45
+ opts.dynamic === true ? "dynamic" : "static",
46
+ npmStatic,
47
+ opts.ffiProfilePath ?? "",
48
+ ffi,
49
+ external.join("\n"),
50
+ ].join("\0"));
51
+ }
52
+ function cacheable(coverage) {
53
+ if (coverage.provenance !== undefined ||
54
+ coverage.statsByFile !== undefined ||
55
+ coverage.provenanceElided !== undefined ||
56
+ coverage.npmBuiltins !== undefined ||
57
+ coverage.npmLazyTraps !== undefined)
58
+ return null;
59
+ const out = {
60
+ file: coverage.file,
61
+ dynamic: coverage.dynamic ?? false,
62
+ stats: coverage.stats,
63
+ diagnostics: coverage.diagnostics,
64
+ preflightFailed: coverage.preflightFailed,
65
+ };
66
+ if (coverage.runtimeFences !== undefined)
67
+ out.runtimeFences = coverage.runtimeFences;
68
+ if (coverage.unreached !== undefined)
69
+ out.unreached = coverage.unreached;
70
+ if (coverage.divergences !== undefined)
71
+ out.divergences = coverage.divergences;
72
+ if (coverage.npmStatic !== undefined)
73
+ out.npmStatic = coverage.npmStatic;
74
+ return out;
75
+ }
76
+ function restore(cached, sources) {
77
+ const sourceTexts = new Map();
78
+ for (const source of sources)
79
+ sourceTexts.set(source.path, source.text);
80
+ const coverage = {
81
+ file: cached.file,
82
+ dynamic: cached.dynamic,
83
+ stats: cached.stats,
84
+ diagnostics: cached.diagnostics,
85
+ preflightFailed: cached.preflightFailed,
86
+ };
87
+ if (cached.runtimeFences !== undefined)
88
+ coverage.runtimeFences = cached.runtimeFences;
89
+ if (cached.unreached !== undefined)
90
+ coverage.unreached = cached.unreached;
91
+ if (cached.divergences !== undefined)
92
+ coverage.divergences = cached.divergences;
93
+ if (cached.npmStatic !== undefined)
94
+ coverage.npmStatic = cached.npmStatic;
95
+ return { coverage, sourceTexts };
96
+ }
97
+ /** The cached analysis when an entry for the same inputs still holds
98
+ * exactly; null otherwise. */
99
+ export function replayVerdict(entry, opts, cache) {
100
+ const key = verdictKey(entry, opts, cache);
101
+ if (key === null)
102
+ return null;
103
+ const cached = readEntry(cache.store, key);
104
+ if (cached === null || !frontendInputsStillMatch(cached.probes))
105
+ return null;
106
+ return restore(cached.coverage, cached.sources);
107
+ }
108
+ /** Runs `analyze` unless an entry for the same inputs proves its verdict
109
+ * still holds. */
110
+ export function analyzeWithVerdictCache(entry, opts, cache, analyze) {
111
+ const key = verdictKey(entry, opts, cache);
112
+ if (key === null)
113
+ return { result: analyze(), outcome: "uncacheable" };
114
+ const cached = readEntry(cache.store, key);
115
+ if (cached !== null) {
116
+ if (frontendInputsStillMatch(cached.probes)) {
117
+ return { result: restore(cached.coverage, cached.sources), outcome: "hit" };
118
+ }
119
+ const replay = cache.semanticReplay;
120
+ if (replay !== undefined) {
121
+ const replayed = replay(cached.probes, cached.sources, cached.coverage);
122
+ if (replayed !== null) {
123
+ writeEntry(cache.store, key, replayed.probes, replayed.coverage, replayed.sources);
124
+ return { result: restore(replayed.coverage, replayed.sources), outcome: "semantic-hit" };
125
+ }
126
+ }
127
+ }
128
+ const tracker = new FrontendInputTracker();
129
+ const result = tracker.runSynchronous(analyze);
130
+ const probes = tracker.snapshot();
131
+ const stored = cacheable(result.coverage);
132
+ if (stored !== null && probes.stable && frontendInputsStillMatch(probes)) {
133
+ const sources = [];
134
+ for (const [path, text] of result.sourceTexts)
135
+ sources.push({ path, text });
136
+ writeEntry(cache.store, key, probes, stored, sources);
137
+ }
138
+ return { result, outcome: "miss" };
139
+ }
140
+ function readEntry(store, key) {
141
+ try {
142
+ const text = store.read(key);
143
+ if (text === null)
144
+ return null;
145
+ const entry = JSON.parse(text);
146
+ if (entry.schema !== SCHEMA || entry.key !== key)
147
+ return null;
148
+ return entry;
149
+ }
150
+ catch {
151
+ return null;
152
+ }
153
+ }
154
+ function writeEntry(store, key, probes, coverage, sources) {
155
+ try {
156
+ const entry = { schema: SCHEMA, key, probes, coverage, sources };
157
+ store.write(key, JSON.stringify(entry));
158
+ }
159
+ catch {
160
+ // A cache write failure never changes the analysis.
161
+ }
162
+ }
163
+ /** A directory of `<key>.json` entries, published by rename so readers
164
+ * never see a partial write. */
165
+ export function fileVerdictStore(directory) {
166
+ return {
167
+ read: (key) => {
168
+ try {
169
+ return readFileSync(join(directory, `${key}.json`), "utf8");
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ },
175
+ write: (key, text) => {
176
+ let stage = null;
177
+ try {
178
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
179
+ stage = mkdtempSync(join(directory, ".write-"));
180
+ writeFileSync(join(stage, "entry"), text);
181
+ renameSync(join(stage, "entry"), join(directory, `${key}.json`));
182
+ }
183
+ catch {
184
+ // Best effort: a failed write is a later miss.
185
+ }
186
+ finally {
187
+ if (stage !== null)
188
+ rmSync(stage, { recursive: true, force: true });
189
+ }
190
+ },
191
+ };
192
+ }
193
+ //# sourceMappingURL=verdict-cache.js.map