@scriptc/compiler 0.1.4 → 0.1.6

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 (158) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +75 -11
  2. package/dist/backend/c/c-emitter.d.ts +5 -1
  3. package/dist/backend/c/c-emitter.js +22 -9
  4. package/dist/backend/c/c-emitter.js.map +1 -1
  5. package/dist/backend/c/exprs.d.ts +2 -2
  6. package/dist/backend/c/exprs.js +298 -27
  7. package/dist/backend/c/exprs.js.map +1 -1
  8. package/dist/backend/c/stmts.js +5 -3
  9. package/dist/backend/c/stmts.js.map +1 -1
  10. package/dist/backend/c/types.d.ts +2 -3
  11. package/dist/backend/c/types.js +8 -1
  12. package/dist/backend/c/types.js.map +1 -1
  13. package/dist/backend/c/walkers.js +1 -1
  14. package/dist/backend/c/walkers.js.map +1 -1
  15. package/dist/backend/link-plan.d.ts +1 -0
  16. package/dist/backend/link-plan.js +2 -1
  17. package/dist/backend/link-plan.js.map +1 -1
  18. package/dist/backend/llvm/dyn.js +1 -1
  19. package/dist/backend/llvm/dyn.js.map +1 -1
  20. package/dist/backend/llvm/emitter.js +25 -9
  21. package/dist/backend/llvm/emitter.js.map +1 -1
  22. package/dist/backend/llvm/expr-bytes.d.ts +1 -2
  23. package/dist/backend/llvm/expr-bytes.js +22 -17
  24. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  25. package/dist/backend/llvm/expr-containers.d.ts +1 -0
  26. package/dist/backend/llvm/expr-containers.js +58 -4
  27. package/dist/backend/llvm/expr-containers.js.map +1 -1
  28. package/dist/backend/llvm/expr-context.d.ts +6 -2
  29. package/dist/backend/llvm/expr-primitives.js +22 -7
  30. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  31. package/dist/backend/llvm/lib-filesystem.js +20 -0
  32. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  33. package/dist/backend/llvm/lib-network.js +53 -10
  34. package/dist/backend/llvm/lib-network.js.map +1 -1
  35. package/dist/backend/llvm/lib-process.js +4 -3
  36. package/dist/backend/llvm/lib-process.js.map +1 -1
  37. package/dist/backend/llvm/lib-shared.js +65 -0
  38. package/dist/backend/llvm/lib-shared.js.map +1 -1
  39. package/dist/backend/native-toolchain.d.ts +2 -0
  40. package/dist/backend/native-toolchain.js +2 -1
  41. package/dist/backend/native-toolchain.js.map +1 -1
  42. package/dist/backend/targets.d.ts +3 -0
  43. package/dist/backend/targets.js +13 -0
  44. package/dist/backend/targets.js.map +1 -1
  45. package/dist/coverage/surface-manifest.js +12 -5
  46. package/dist/coverage/surface-manifest.js.map +1 -1
  47. package/dist/executable/executable-cache.d.ts +2 -0
  48. package/dist/executable/executable-cache.js +3 -1
  49. package/dist/executable/executable-cache.js.map +1 -1
  50. package/dist/executable/executable-cache.test.js +3 -3
  51. package/dist/executable/executable-cache.test.js.map +1 -1
  52. package/dist/frontend/lowering/array-indexed-mutation.d.ts +8 -0
  53. package/dist/frontend/lowering/array-indexed-mutation.js +176 -0
  54. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -0
  55. package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
  56. package/dist/frontend/lowering/containers/bytes.js +6 -5
  57. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  58. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -6
  59. package/dist/frontend/lowering/containers/string-and-regexp.js +420 -34
  60. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  61. package/dist/frontend/lowering/expressions/object-literals.js +8 -0
  62. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  63. package/dist/frontend/lowering/indexed-comparison.d.ts +6 -0
  64. package/dist/frontend/lowering/indexed-comparison.js +30 -0
  65. package/dist/frontend/lowering/indexed-comparison.js.map +1 -0
  66. package/dist/frontend/lowering/lower-builtins.d.ts +5 -6
  67. package/dist/frontend/lowering/lower-builtins.js +24 -16
  68. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  69. package/dist/frontend/lowering/lower-calls.d.ts +3 -2
  70. package/dist/frontend/lowering/lower-calls.js +522 -89
  71. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  72. package/dist/frontend/lowering/lower-classes.js +5 -29
  73. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  74. package/dist/frontend/lowering/lower-containers.d.ts +15 -11
  75. package/dist/frontend/lowering/lower-containers.js +588 -146
  76. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  77. package/dist/frontend/lowering/lower-exprs.d.ts +12 -0
  78. package/dist/frontend/lowering/lower-exprs.js +145 -11
  79. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  80. package/dist/frontend/lowering/lower-island.js +17 -6
  81. package/dist/frontend/lowering/lower-island.js.map +1 -1
  82. package/dist/frontend/lowering/lower-server.d.ts +2 -4
  83. package/dist/frontend/lowering/lower-server.js +288 -32
  84. package/dist/frontend/lowering/lower-server.js.map +1 -1
  85. package/dist/frontend/lowering/lower-stmts.js +4 -4
  86. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  87. package/dist/frontend/lowering/lowerer.js +37 -2
  88. package/dist/frontend/lowering/lowerer.js.map +1 -1
  89. package/dist/frontend/lowering/optional-arguments.d.ts +9 -1
  90. package/dist/frontend/lowering/optional-arguments.js +67 -1
  91. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  92. package/dist/frontend/lowering/pairs-snapshot.d.ts +3 -1
  93. package/dist/frontend/lowering/pairs-snapshot.js +12 -4
  94. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  95. package/dist/frontend/lowering/surfaces.d.ts +10 -14
  96. package/dist/frontend/lowering/surfaces.js +50 -28
  97. package/dist/frontend/lowering/surfaces.js.map +1 -1
  98. package/dist/frontend/npm-static-prune.d.ts +6 -0
  99. package/dist/frontend/npm-static-prune.js +203 -0
  100. package/dist/frontend/npm-static-prune.js.map +1 -0
  101. package/dist/frontend/npm-static-prune.test.d.ts +1 -0
  102. package/dist/frontend/npm-static-prune.test.js +48 -0
  103. package/dist/frontend/npm-static-prune.test.js.map +1 -0
  104. package/dist/frontend/npm.js +7 -6
  105. package/dist/frontend/npm.js.map +1 -1
  106. package/dist/frontend/program.js +15 -4
  107. package/dist/frontend/program.js.map +1 -1
  108. package/dist/frontend/provenance.js +8 -3
  109. package/dist/frontend/provenance.js.map +1 -1
  110. package/dist/frontend/type-mapper.js +16 -5
  111. package/dist/frontend/type-mapper.js.map +1 -1
  112. package/dist/index.d.ts +3 -3
  113. package/dist/index.js +13 -41
  114. package/dist/index.js.map +1 -1
  115. package/dist/ir/analysis.d.ts +5 -3
  116. package/dist/ir/analysis.js +25 -11
  117. package/dist/ir/analysis.js.map +1 -1
  118. package/dist/ir/analysis.test.js +50 -2
  119. package/dist/ir/analysis.test.js.map +1 -1
  120. package/dist/ir/constant-tables.d.ts +17 -0
  121. package/dist/ir/constant-tables.js +99 -0
  122. package/dist/ir/constant-tables.js.map +1 -0
  123. package/dist/ir/constant-tables.test.d.ts +1 -0
  124. package/dist/ir/constant-tables.test.js +78 -0
  125. package/dist/ir/constant-tables.test.js.map +1 -0
  126. package/dist/ir/integer-ranges.d.ts +13 -0
  127. package/dist/ir/integer-ranges.js +122 -0
  128. package/dist/ir/integer-ranges.js.map +1 -0
  129. package/dist/ir/integer-ranges.test.d.ts +1 -0
  130. package/dist/ir/integer-ranges.test.js +63 -0
  131. package/dist/ir/integer-ranges.test.js.map +1 -0
  132. package/dist/ir/ir.d.ts +56 -35
  133. package/dist/ir/ir.js +9 -1
  134. package/dist/ir/ir.js.map +1 -1
  135. package/dist/ir/ir.test.js +6 -0
  136. package/dist/ir/ir.test.js.map +1 -1
  137. package/dist/ir/scalar-records.d.ts +8 -0
  138. package/dist/ir/scalar-records.js +216 -0
  139. package/dist/ir/scalar-records.js.map +1 -0
  140. package/dist/ir/scalar-records.test.d.ts +1 -0
  141. package/dist/ir/scalar-records.test.js +142 -0
  142. package/dist/ir/scalar-records.test.js.map +1 -0
  143. package/dist/ir/validate.js +135 -34
  144. package/dist/ir/validate.js.map +1 -1
  145. package/dist/ir/validate.test.d.ts +1 -0
  146. package/dist/ir/validate.test.js +48 -0
  147. package/dist/ir/validate.test.js.map +1 -0
  148. package/dist/library/cache-primitives.d.ts +1 -1
  149. package/dist/library/cache-primitives.js +3 -3
  150. package/dist/library/cache-primitives.js.map +1 -1
  151. package/dist/library/fence-eval.js +11 -4
  152. package/dist/library/fence-eval.js.map +1 -1
  153. package/dist/library/library-cache.js +0 -1
  154. package/dist/library/library-cache.js.map +1 -1
  155. package/dist/library/library-cache.test.js +3 -3
  156. package/dist/library/library-cache.test.js.map +1 -1
  157. package/package.json +17 -17
  158. package/surface-manifest.json +90 -45
@@ -11,8 +11,8 @@ export const STR_INTRINSIC_SIGS = {
11
11
  charAt: { argTypes: [F64], minArgs: 1, result: STRING },
12
12
  indexOf: { argTypes: [STRING, F64], minArgs: 1, result: F64 },
13
13
  includes: { argTypes: [STRING, F64], minArgs: 1, result: BOOL },
14
- startsWith: { argTypes: [STRING], minArgs: 1, result: BOOL },
15
- endsWith: { argTypes: [STRING], minArgs: 1, result: BOOL },
14
+ startsWith: { argTypes: [STRING, F64], minArgs: 1, result: BOOL },
15
+ endsWith: { argTypes: [STRING, F64], minArgs: 1, result: BOOL },
16
16
  slice: { argTypes: [F64, F64], minArgs: 0, result: STRING },
17
17
  substring: { argTypes: [F64, F64], minArgs: 1, result: STRING },
18
18
  repeat: { argTypes: [F64], minArgs: 1, result: STRING },
@@ -86,6 +86,7 @@ export const LIB_FN_SIGS = {
86
86
  "dyn.toString": { argTypes: [DYN, STRING, STRING], result: STRING },
87
87
  "dyn.defineProps": { argTypes: [DYN, DYN], result: DYN },
88
88
  "dyn.typeof": { argTypes: [DYN], result: STRING },
89
+ "dyn.objectTag": { argTypes: [DYN], result: STRING },
89
90
  "module.registryInit": { argTypes: [F64], result: VOID },
90
91
  "module.define": { argTypes: [F64, STRING, STRING, STRING, arrayOf(STRING), BOOL], result: VOID },
91
92
  "module.enter": { argTypes: [F64], result: VOID },
@@ -196,11 +197,27 @@ export const LIB_FN_SIGS = {
196
197
  "os.networkInterfaces": { argTypes: [], result: VOID },
197
198
  "math.maxArr": { argTypes: [arrayOf(F64)], result: F64 },
198
199
  "math.minArr": { argTypes: [arrayOf(F64)], result: F64 },
200
+ "math.hypotArr": { argTypes: [arrayOf(F64)], result: F64 },
199
201
  "math.floor": { argTypes: [F64], result: F64 },
200
202
  "math.abs": { argTypes: [F64], result: F64 },
201
203
  "math.round": { argTypes: [F64], result: F64 },
202
204
  "math.trunc": { argTypes: [F64], result: F64 },
203
205
  "math.ceil": { argTypes: [F64], result: F64 },
206
+ "math.sin": { argTypes: [F64], result: F64 },
207
+ "math.cos": { argTypes: [F64], result: F64 },
208
+ "math.tan": { argTypes: [F64], result: F64 },
209
+ "math.asin": { argTypes: [F64], result: F64 },
210
+ "math.acos": { argTypes: [F64], result: F64 },
211
+ "math.atan": { argTypes: [F64], result: F64 },
212
+ "math.cbrt": { argTypes: [F64], result: F64 },
213
+ "math.sign": { argTypes: [F64], result: F64 },
214
+ "math.exp": { argTypes: [F64], result: F64 },
215
+ "math.sqrt": { argTypes: [F64], result: F64 },
216
+ "math.log": { argTypes: [F64], result: F64 },
217
+ "math.log2": { argTypes: [F64], result: F64 },
218
+ "math.log10": { argTypes: [F64], result: F64 },
219
+ "math.atan2": { argTypes: [F64, F64], result: F64 },
220
+ "math.pow": { argTypes: [F64, F64], result: F64 },
204
221
  "math.min": { argTypes: [F64, F64], result: F64 },
205
222
  "math.max": { argTypes: [F64, F64], result: F64 },
206
223
  "math.random": { argTypes: [], result: F64 },
@@ -383,6 +400,7 @@ export const LIB_FN_SIGS = {
383
400
  // the callback follows the reusePort BOOL in this additive ABI.
384
401
  "net.listenOptsReusePortCb": { argTypes: [NETSERVER_T, F64, STRING, BOOL, BOOL, null], result: VOID },
385
402
  "net.serverPort": { argTypes: [NETSERVER_T], result: F64 },
403
+ "net.serverListening": { argTypes: [NETSERVER_T], result: BOOL },
386
404
  // net.serverAddress's record result is shape-checked in the libCall case
387
405
  // (the dgram.address sentinel pattern).
388
406
  "net.serverAddress": { argTypes: [NETSERVER_T], result: VOID },
@@ -458,19 +476,38 @@ export const LIB_FN_SIGS = {
458
476
  // union, checked like process.envGet.
459
477
  "http.createServer": { argTypes: [null], result: NETSERVER_T },
460
478
  "http.createServerEmpty": { argTypes: [], result: NETSERVER_T },
479
+ "http.validateHeaderName": { argTypes: [STRING, STRING], result: VOID },
480
+ "http.validateHeaderValue": { argTypes: [STRING, DYN], result: VOID },
461
481
  "http.serverJoinDupHeaders": { argTypes: [NETSERVER_T], result: VOID },
462
482
  "http.serverAllowMissingHostHeader": { argTypes: [NETSERVER_T], result: VOID },
463
483
  "http.serverTimeoutGet": { argTypes: [NETSERVER_T, F64], result: F64 },
484
+ "http.serverSetTimeout": { argTypes: [NETSERVER_T, F64], result: VOID },
485
+ "http.serverSetTimeoutCb": { argTypes: [NETSERVER_T, F64, null], result: VOID },
486
+ "http.serverOnTimeout": { argTypes: [NETSERVER_T, null, BOOL], result: VOID },
487
+ "http.serverCloseAllConnections": { argTypes: [NETSERVER_T], result: VOID },
488
+ "http.serverCloseIdleConnections": { argTypes: [NETSERVER_T], result: VOID },
464
489
  "http.serverTimeoutSet": { argTypes: [NETSERVER_T, F64, F64], result: VOID },
465
490
  "http.serverTimeoutOptionSet": { argTypes: [NETSERVER_T, F64, DYN], result: VOID },
466
491
  "net.serverOnListening": { argTypes: [NETSERVER_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
467
492
  "http.resStatusGet": { argTypes: [HTTPRES_T], result: F64 },
468
493
  "http.resStatusSet": { argTypes: [HTTPRES_T, F64], result: VOID },
469
- "http.resStatusMsgGet": { argTypes: [HTTPRES_T], result: STRING },
494
+ "http.resStatusMsgGet": { argTypes: [HTTPRES_T], result: VOID },
470
495
  "http.resStatusMsgSet": { argTypes: [HTTPRES_T, STRING], result: VOID },
496
+ "http.resRequest": { argTypes: [HTTPRES_T], result: HTTPREQ_T },
497
+ "http.resSocket": { argTypes: [HTTPRES_T], result: VOID },
498
+ "http.resWritableFinished": { argTypes: [HTTPRES_T], result: BOOL },
499
+ "http.resSendDateGet": { argTypes: [HTTPRES_T], result: BOOL },
500
+ "http.resSendDateSet": { argTypes: [HTTPRES_T, BOOL], result: VOID },
501
+ "http.resStrictContentLengthGet": { argTypes: [HTTPRES_T], result: BOOL },
502
+ "http.resStrictContentLengthSet": { argTypes: [HTTPRES_T, BOOL], result: VOID },
503
+ "http.resSetTimeout": { argTypes: [HTTPRES_T, F64], result: VOID },
504
+ "http.resSetTimeoutCb": { argTypes: [HTTPRES_T, F64, { kind: "func", params: [], ret: VOID }], result: VOID },
471
505
  // resGetHeader answers the interned `string | undefined` union — the
472
506
  // reqHeader/envGet sentinel pattern (VOID here, checked specially).
473
507
  "http.resGetHeader": { argTypes: [HTTPRES_T, STRING], result: VOID },
508
+ "http.resGetHeaderNames": { argTypes: [HTTPRES_T], result: arrayOf(STRING) },
509
+ "http.resGetRawHeaderNames": { argTypes: [HTTPRES_T], result: arrayOf(STRING) },
510
+ "http.resGetHeaders": { argTypes: [HTTPRES_T], result: DYN },
474
511
  "http.resHasHeader": { argTypes: [HTTPRES_T, STRING], result: BOOL },
475
512
  "http.resRemoveHeader": { argTypes: [HTTPRES_T, STRING], result: VOID },
476
513
  "http.resOnFinish": { argTypes: [HTTPRES_T, { kind: "func", params: [], ret: VOID }], result: VOID },
@@ -485,6 +522,9 @@ export const LIB_FN_SIGS = {
485
522
  "http.resSetHeader": { argTypes: [HTTPRES_T, STRING, STRING], result: VOID },
486
523
  "http.resWriteHead": { argTypes: [HTTPRES_T, F64], result: VOID },
487
524
  "http.resWriteHeadN": { argTypes: [HTTPRES_T, F64, arrayOf(STRING), arrayOf(STRING)], result: VOID },
525
+ "http.resWriteContinue": { argTypes: [HTTPRES_T], result: VOID },
526
+ "http.resWriteProcessing": { argTypes: [HTTPRES_T], result: VOID },
527
+ "http.resWriteEarlyHints": { argTypes: [HTTPRES_T, arrayOf(STRING)], result: VOID },
488
528
  "http.resWrite": { argTypes: [HTTPRES_T, STRING], result: VOID },
489
529
  "http.resWriteBytes": { argTypes: [HTTPRES_T, BYTES_U8], result: VOID },
490
530
  "http.resEnd": { argTypes: [HTTPRES_T], result: VOID },
@@ -493,6 +533,7 @@ export const LIB_FN_SIGS = {
493
533
  "http.resWriteDyn": { argTypes: [HTTPRES_T, DYN], result: VOID },
494
534
  "http.resEndDyn": { argTypes: [HTTPRES_T, DYN], result: VOID },
495
535
  "http.resHeadersSent": { argTypes: [HTTPRES_T], result: BOOL },
536
+ "http.resWritableEnded": { argTypes: [HTTPRES_T], result: BOOL },
496
537
  "http.resFlushHeaders": { argTypes: [HTTPRES_T], result: VOID },
497
538
  "http.resAddTrailers": { argTypes: [HTTPRES_T, arrayOf(STRING)], result: VOID },
498
539
  "http.resCork": { argTypes: [HTTPRES_T], result: VOID },
@@ -697,6 +738,13 @@ export const LIB_FN_SIGS = {
697
738
  "https.requestFn": { argTypes: [BOOL, STRING, F64, STRING, STRING, F64, arrayOf(STRING), BOOL, BOOL, null], result: HTTPCLIENTREQ_T },
698
739
  "https.requestFnCb": { argTypes: [BOOL, STRING, F64, STRING, STRING, F64, arrayOf(STRING), BOOL, BOOL, null, null], result: HTTPCLIENTREQ_T },
699
740
  "http.clientWrite": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
741
+ "http.clientSetHeader": { argTypes: [HTTPCLIENTREQ_T, STRING, STRING], result: VOID },
742
+ "http.clientGetHeader": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
743
+ "http.clientHasHeader": { argTypes: [HTTPCLIENTREQ_T, STRING], result: BOOL },
744
+ "http.clientRemoveHeader": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
745
+ "http.clientGetHeaderNames": { argTypes: [HTTPCLIENTREQ_T], result: arrayOf(STRING) },
746
+ "http.clientGetRawHeaderNames": { argTypes: [HTTPCLIENTREQ_T], result: arrayOf(STRING) },
747
+ "http.clientGetHeaders": { argTypes: [HTTPCLIENTREQ_T], result: DYN },
700
748
  "http.clientWriteBytes": { argTypes: [HTTPCLIENTREQ_T, BYTES_U8], result: VOID },
701
749
  "http.clientEnd": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
702
750
  "http.clientEndStr": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
@@ -708,12 +756,34 @@ export const LIB_FN_SIGS = {
708
756
  "http.clientCork": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
709
757
  "http.clientUncork": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
710
758
  "http.clientWritableCorked": { argTypes: [HTTPCLIENTREQ_T], result: F64 },
759
+ "http.clientMethod": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
760
+ "http.clientPath": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
761
+ "http.clientHost": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
762
+ "http.clientProtocol": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
763
+ "http.clientHeadersSent": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
764
+ "http.clientWritableEnded": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
765
+ "http.clientWritableFinished": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
766
+ "http.clientSocket": { argTypes: [HTTPCLIENTREQ_T], result: NETSOCKET_T },
767
+ "http.clientReusedSocket": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
768
+ "http.clientSetNoDelay": { argTypes: [HTTPCLIENTREQ_T, BOOL], result: VOID },
769
+ "http.clientSetSocketKeepAlive": { argTypes: [HTTPCLIENTREQ_T, BOOL, F64], result: VOID },
770
+ "http.clientSetTimeout": { argTypes: [HTTPCLIENTREQ_T, F64], result: VOID },
771
+ "http.clientSetTimeoutCb": { argTypes: [HTTPCLIENTREQ_T, F64, { kind: "func", params: [], ret: VOID }], result: VOID },
772
+ "http.statusCodes": { argTypes: [], result: DYN },
773
+ "http.methods": { argTypes: [], result: arrayOf(STRING) },
774
+ "http.reqSetTimeout": { argTypes: [HTTPREQ_T, F64], result: VOID },
775
+ "http.reqSetTimeoutCb": { argTypes: [HTTPREQ_T, F64, { kind: "func", params: [], ret: VOID }], result: VOID },
711
776
  "http.clientDestroy": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
777
+ "http.clientAbort": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
778
+ "http.clientAborted": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
712
779
  "http.clientDestroyed": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
713
780
  "http.clientOnResponse": { argTypes: [HTTPCLIENTREQ_T, null, BOOL], result: VOID },
781
+ "http.clientOnSocket": { argTypes: [HTTPCLIENTREQ_T, null, BOOL], result: VOID },
782
+ "http.clientOnFinish": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
714
783
  "http.clientOnError": { argTypes: [HTTPCLIENTREQ_T, null, BOOL], result: VOID },
715
784
  "http.clientOnTimeout": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
716
785
  "http.clientOnClose": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
786
+ "http.clientOnAbort": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
717
787
  "cp.execSync": {
718
788
  argTypes: [STRING, arrayOf(STRING), BOOL, STRING, BOOL, STRING, BOOL, arrayOf(STRING), F64, F64, F64],
719
789
  result: STRING,
@@ -1251,12 +1321,14 @@ export const LIB_FN_SIGS = {
1251
1321
  // Like process.envGet: the result is the module's interned
1252
1322
  // `number | undefined` union — checked by arms in the libCall case.
1253
1323
  "process.columns": { argTypes: [F64], result: VOID },
1324
+ "process.rows": { argTypes: [F64], result: VOID },
1254
1325
  "process.stdinDestroy": { argTypes: [], result: VOID },
1255
1326
  "process.stdinSetRawMode": { argTypes: [BOOL], result: VOID },
1256
1327
  // Arg 0 is a packed f64[] OR a bytes value (the spread-typed-array
1257
1328
  // form) — checked in the libCall case.
1258
1329
  "string.fromCharCode": { argTypes: [null], result: STRING },
1259
1330
  "string.lastIndexOf": { argTypes: [STRING, STRING], result: F64 },
1331
+ "string.lastIndexOfFrom": { argTypes: [STRING, STRING, F64], result: F64 },
1260
1332
  "string.raw": { argTypes: [arrayOf(STRING), arrayOf(STRING)], result: STRING },
1261
1333
  };
1262
1334
  /** True for an object type naming a runtime-provided error class. */
@@ -2663,33 +2735,51 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
2663
2735
  ? { argTypes: e.args.map(() => elem), result: F64 }
2664
2736
  : e.method === "pushSpread" || e.method === "concatSpread" || e.method === "unshiftSpread"
2665
2737
  ? { argTypes: [e.receiver.type], result: F64 }
2666
- : e.method === "nextPresent"
2738
+ : e.method === "nextPresent" || e.method === "getNumber"
2667
2739
  ? { argTypes: [F64], result: F64 }
2668
- : e.method === "pop"
2669
- ? { argTypes: [], result: e.type } // union-checked below
2670
- : e.method === "indexOf"
2671
- ? { argTypes: [elem], result: F64 }
2672
- : e.method === "includes"
2673
- ? { argTypes: [elem], result: BOOL }
2674
- : e.method === "join"
2675
- ? { argTypes: [STRING], result: STRING }
2676
- : e.method === "slice"
2677
- ? { argTypes: [F64, F64], result: e.receiver.type }
2678
- : e.method === "toReversed"
2679
- ? { argTypes: [], result: e.receiver.type }
2680
- : e.method === "reverse"
2740
+ : e.method === "indexEq"
2741
+ ? { argTypes: [F64, e.receiver.type, F64], result: BOOL }
2742
+ : e.method === "pop"
2743
+ ? { argTypes: [], result: e.type } // union-checked below
2744
+ : e.method === "indexOf"
2745
+ ? { argTypes: [elem], result: F64 }
2746
+ : e.method === "includes"
2747
+ ? { argTypes: [elem], result: BOOL }
2748
+ : e.method === "join"
2749
+ ? { argTypes: [STRING], result: STRING }
2750
+ : e.method === "slice"
2751
+ ? { argTypes: [F64, F64], result: e.receiver.type }
2752
+ : e.method === "toReversed"
2681
2753
  ? { argTypes: [], result: e.receiver.type }
2682
- : e.method === "toSpliced"
2683
- ? { argTypes: [F64, F64, e.receiver.type], result: e.receiver.type }
2684
- : e.method === "with"
2685
- ? { argTypes: [F64, elem], result: e.receiver.type }
2686
- : e.method === "withUndefined"
2687
- ? { argTypes: [F64], result: e.receiver.type }
2688
- : e.method === "splice"
2689
- ? { argTypes: [F64, F64], result: e.receiver.type }
2690
- : e.method === "shift"
2691
- ? { argTypes: [], result: e.type } // union-checked below
2692
- : { argTypes: [], result: F64 }; // length
2754
+ : e.method === "reverse"
2755
+ ? { argTypes: [], result: e.receiver.type }
2756
+ : e.method === "toSpliced"
2757
+ ? { argTypes: [F64, F64, e.receiver.type], result: e.receiver.type }
2758
+ : e.method === "with"
2759
+ ? { argTypes: [F64, elem], result: e.receiver.type }
2760
+ : e.method === "withUndefined"
2761
+ ? { argTypes: [F64], result: e.receiver.type }
2762
+ : e.method === "splice"
2763
+ ? { argTypes: [F64, F64], result: e.receiver.type }
2764
+ : e.method === "spliceInsert"
2765
+ ? { argTypes: [F64, F64, e.receiver.type], result: e.receiver.type }
2766
+ : e.method === "flatCopy" || e.method === "flatOne"
2767
+ ? { argTypes: [e.type], result: e.type }
2768
+ : e.method === "shift"
2769
+ ? { argTypes: [], result: e.type } // union-checked below
2770
+ : { argTypes: [], result: F64 }; // length
2771
+ if (e.method === "getNumber" && elem.kind !== "f64") {
2772
+ err(`arrIntrinsic getNumber requires f64 elements, got ${elem.kind}`, e.loc);
2773
+ }
2774
+ if (e.method === "indexEq" && elem.kind !== "f64" && elem.kind !== "bool" && elem.kind !== "string") {
2775
+ err(`arrIntrinsic indexEq requires primitive elements, got ${elem.kind}`, e.loc);
2776
+ }
2777
+ if (e.method === "flatCopy" && !typeEquals(e.type, e.receiver.type)) {
2778
+ err("arrIntrinsic flatCopy result must match its receiver", e.loc);
2779
+ }
2780
+ if (e.method === "flatOne" && (elem.kind !== "array" || !typeEquals(e.type, elem))) {
2781
+ err("arrIntrinsic flatOne result must match the nested array type", e.loc);
2782
+ }
2693
2783
  if (e.method === "join" &&
2694
2784
  elem.kind !== "f64" && elem.kind !== "string" && elem.kind !== "bool" &&
2695
2785
  !(elem.kind === "union" &&
@@ -3942,7 +4032,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
3942
4032
  }
3943
4033
  break;
3944
4034
  }
3945
- if (e.fn === "process.columns") {
4035
+ if (e.fn === "process.columns" || e.fn === "process.rows") {
3946
4036
  // Result is the module's interned `number | undefined` union.
3947
4037
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
3948
4038
  const ok = def &&
@@ -3950,7 +4040,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
3950
4040
  def.arms[0].kind === "f64" &&
3951
4041
  def.arms[1].kind === "undefinedT";
3952
4042
  if (!ok) {
3953
- err(`libCall process.columns must return the 'number | undefined' union`, e.loc);
4043
+ err(`libCall ${e.fn} must return the 'number | undefined' union`, e.loc);
3954
4044
  }
3955
4045
  break;
3956
4046
  }
@@ -4186,7 +4276,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4186
4276
  }
4187
4277
  break;
4188
4278
  }
4189
- if (e.fn === "http.reqStatusMessage") {
4279
+ if (e.fn === "http.reqStatusMessage" || e.fn === "http.resStatusMsgGet") {
4190
4280
  // Result is the interned `string | undefined` union (reqHeader's).
4191
4281
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4192
4282
  const ok = def &&
@@ -4194,10 +4284,19 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4194
4284
  def.arms.some((a) => a.kind === "string") &&
4195
4285
  def.arms.some((a) => a.kind === "undefinedT");
4196
4286
  if (!ok) {
4197
- err(`libCall http.reqStatusMessage must return the 'string | undefined' union`, e.loc);
4287
+ err(`libCall ${e.fn} must return the 'string | undefined' union`, e.loc);
4198
4288
  }
4199
4289
  break;
4200
4290
  }
4291
+ if (e.fn === "http.resSocket") {
4292
+ const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4293
+ const ok = def && def.arms.length === 2 &&
4294
+ def.arms.some((a) => a.kind === "netSocket") &&
4295
+ def.arms.some((a) => a.kind === "nullT");
4296
+ if (!ok)
4297
+ err(`libCall http.resSocket must return the 'Socket | null' union`, e.loc);
4298
+ break;
4299
+ }
4201
4300
  if (e.fn === "http.reqH2Stream") {
4202
4301
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4203
4302
  const ok = def && def.arms.length === 2 &&
@@ -4207,7 +4306,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4207
4306
  err(`libCall http.reqH2Stream must return the 'Http2Stream | undefined' union`, e.loc);
4208
4307
  break;
4209
4308
  }
4210
- if (e.fn === "http.reqHeader" || e.fn === "http.reqTrailer" || e.fn === "http.resGetHeader") {
4309
+ if (e.fn === "http.reqHeader" || e.fn === "http.reqTrailer" || e.fn === "http.resGetHeader" || e.fn === "http.clientGetHeader") {
4211
4310
  // Result is the interned `string | undefined` union (envGet's).
4212
4311
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4213
4312
  const ok = def &&
@@ -4230,13 +4329,15 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4230
4329
  }
4231
4330
  if (e.fn === "net.createServerCb" || e.fn === "net.serverOnConnection" ||
4232
4331
  e.fn === "net.serverOnSecureConnection" ||
4332
+ e.fn === "http.serverSetTimeoutCb" || e.fn === "http.serverOnTimeout" ||
4333
+ e.fn === "http.clientOnSocket" ||
4233
4334
  e.fn === "net.sockOnData" || e.fn === "net.serverOnError" ||
4234
4335
  e.fn === "net.sockOnError") {
4235
4336
  // The program-dependent listener shapes: a void closure with no
4236
4337
  // params, or exactly the one supported parameter per event
4237
4338
  // (socket handle / data chunk bytes / error %Error). The
4238
4339
  // callback slot is arg 0 for createServerCb, arg 1 otherwise.
4239
- const cbT = e.args[e.fn === "net.createServerCb" ? 0 : 1]?.type;
4340
+ const cbT = e.args[e.fn === "net.createServerCb" ? 0 : e.fn === "http.serverSetTimeoutCb" ? 2 : 1]?.type;
4240
4341
  let ok = cbT?.kind === "func" && cbT.ret.kind === "void" && cbT.params.length <= 1;
4241
4342
  if (ok && cbT?.kind === "func" && cbT.params.length === 1) {
4242
4343
  const p = cbT.params[0];