@scriptc/compiler 0.1.4 → 0.1.5

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 (150) 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 +264 -21
  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 +32 -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 +12 -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-shared.js +64 -0
  36. package/dist/backend/llvm/lib-shared.js.map +1 -1
  37. package/dist/backend/native-toolchain.d.ts +2 -0
  38. package/dist/backend/native-toolchain.js +2 -1
  39. package/dist/backend/native-toolchain.js.map +1 -1
  40. package/dist/backend/targets.d.ts +3 -0
  41. package/dist/backend/targets.js +13 -0
  42. package/dist/backend/targets.js.map +1 -1
  43. package/dist/coverage/surface-manifest.js +6 -4
  44. package/dist/coverage/surface-manifest.js.map +1 -1
  45. package/dist/executable/executable-cache.d.ts +2 -0
  46. package/dist/executable/executable-cache.js +3 -1
  47. package/dist/executable/executable-cache.js.map +1 -1
  48. package/dist/executable/executable-cache.test.js +3 -3
  49. package/dist/executable/executable-cache.test.js.map +1 -1
  50. package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
  51. package/dist/frontend/lowering/containers/bytes.js +6 -5
  52. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  53. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +7 -6
  54. package/dist/frontend/lowering/containers/string-and-regexp.js +237 -28
  55. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  56. package/dist/frontend/lowering/expressions/object-literals.js +8 -0
  57. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  58. package/dist/frontend/lowering/lower-builtins.d.ts +4 -5
  59. package/dist/frontend/lowering/lower-builtins.js +18 -10
  60. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  61. package/dist/frontend/lowering/lower-calls.d.ts +3 -2
  62. package/dist/frontend/lowering/lower-calls.js +265 -88
  63. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  64. package/dist/frontend/lowering/lower-classes.js +2 -2
  65. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  66. package/dist/frontend/lowering/lower-containers.d.ts +7 -9
  67. package/dist/frontend/lowering/lower-containers.js +143 -51
  68. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  69. package/dist/frontend/lowering/lower-exprs.d.ts +12 -0
  70. package/dist/frontend/lowering/lower-exprs.js +128 -10
  71. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  72. package/dist/frontend/lowering/lower-island.js +17 -6
  73. package/dist/frontend/lowering/lower-island.js.map +1 -1
  74. package/dist/frontend/lowering/lower-server.d.ts +2 -4
  75. package/dist/frontend/lowering/lower-server.js +288 -32
  76. package/dist/frontend/lowering/lower-server.js.map +1 -1
  77. package/dist/frontend/lowering/lower-stmts.js +4 -4
  78. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  79. package/dist/frontend/lowering/lowerer.js +37 -2
  80. package/dist/frontend/lowering/lowerer.js.map +1 -1
  81. package/dist/frontend/lowering/optional-arguments.d.ts +9 -1
  82. package/dist/frontend/lowering/optional-arguments.js +67 -1
  83. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  84. package/dist/frontend/lowering/pairs-snapshot.d.ts +3 -1
  85. package/dist/frontend/lowering/pairs-snapshot.js +12 -4
  86. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  87. package/dist/frontend/lowering/surfaces.d.ts +8 -14
  88. package/dist/frontend/lowering/surfaces.js +37 -27
  89. package/dist/frontend/lowering/surfaces.js.map +1 -1
  90. package/dist/frontend/npm-static-prune.d.ts +6 -0
  91. package/dist/frontend/npm-static-prune.js +203 -0
  92. package/dist/frontend/npm-static-prune.js.map +1 -0
  93. package/dist/frontend/npm-static-prune.test.d.ts +1 -0
  94. package/dist/frontend/npm-static-prune.test.js +48 -0
  95. package/dist/frontend/npm-static-prune.test.js.map +1 -0
  96. package/dist/frontend/npm.js +7 -6
  97. package/dist/frontend/npm.js.map +1 -1
  98. package/dist/frontend/program.js +15 -4
  99. package/dist/frontend/program.js.map +1 -1
  100. package/dist/frontend/provenance.js +8 -3
  101. package/dist/frontend/provenance.js.map +1 -1
  102. package/dist/frontend/type-mapper.js +16 -5
  103. package/dist/frontend/type-mapper.js.map +1 -1
  104. package/dist/index.d.ts +3 -3
  105. package/dist/index.js +13 -41
  106. package/dist/index.js.map +1 -1
  107. package/dist/ir/analysis.d.ts +5 -3
  108. package/dist/ir/analysis.js +25 -11
  109. package/dist/ir/analysis.js.map +1 -1
  110. package/dist/ir/analysis.test.js +50 -2
  111. package/dist/ir/analysis.test.js.map +1 -1
  112. package/dist/ir/constant-tables.d.ts +17 -0
  113. package/dist/ir/constant-tables.js +99 -0
  114. package/dist/ir/constant-tables.js.map +1 -0
  115. package/dist/ir/constant-tables.test.d.ts +1 -0
  116. package/dist/ir/constant-tables.test.js +78 -0
  117. package/dist/ir/constant-tables.test.js.map +1 -0
  118. package/dist/ir/integer-ranges.d.ts +13 -0
  119. package/dist/ir/integer-ranges.js +122 -0
  120. package/dist/ir/integer-ranges.js.map +1 -0
  121. package/dist/ir/integer-ranges.test.d.ts +1 -0
  122. package/dist/ir/integer-ranges.test.js +63 -0
  123. package/dist/ir/integer-ranges.test.js.map +1 -0
  124. package/dist/ir/ir.d.ts +42 -34
  125. package/dist/ir/ir.js +7 -1
  126. package/dist/ir/ir.js.map +1 -1
  127. package/dist/ir/ir.test.js +6 -0
  128. package/dist/ir/ir.test.js.map +1 -1
  129. package/dist/ir/scalar-records.d.ts +8 -0
  130. package/dist/ir/scalar-records.js +216 -0
  131. package/dist/ir/scalar-records.js.map +1 -0
  132. package/dist/ir/scalar-records.test.d.ts +1 -0
  133. package/dist/ir/scalar-records.test.js +142 -0
  134. package/dist/ir/scalar-records.test.js.map +1 -0
  135. package/dist/ir/validate.js +92 -8
  136. package/dist/ir/validate.js.map +1 -1
  137. package/dist/ir/validate.test.d.ts +1 -0
  138. package/dist/ir/validate.test.js +31 -0
  139. package/dist/ir/validate.test.js.map +1 -0
  140. package/dist/library/cache-primitives.d.ts +1 -1
  141. package/dist/library/cache-primitives.js +3 -3
  142. package/dist/library/cache-primitives.js.map +1 -1
  143. package/dist/library/fence-eval.js +11 -4
  144. package/dist/library/fence-eval.js.map +1 -1
  145. package/dist/library/library-cache.js +0 -1
  146. package/dist/library/library-cache.js.map +1 -1
  147. package/dist/library/library-cache.test.js +3 -3
  148. package/dist/library/library-cache.test.js.map +1 -1
  149. package/package.json +17 -17
  150. package/surface-manifest.json +55 -42
@@ -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 },
@@ -196,11 +196,27 @@ export const LIB_FN_SIGS = {
196
196
  "os.networkInterfaces": { argTypes: [], result: VOID },
197
197
  "math.maxArr": { argTypes: [arrayOf(F64)], result: F64 },
198
198
  "math.minArr": { argTypes: [arrayOf(F64)], result: F64 },
199
+ "math.hypotArr": { argTypes: [arrayOf(F64)], result: F64 },
199
200
  "math.floor": { argTypes: [F64], result: F64 },
200
201
  "math.abs": { argTypes: [F64], result: F64 },
201
202
  "math.round": { argTypes: [F64], result: F64 },
202
203
  "math.trunc": { argTypes: [F64], result: F64 },
203
204
  "math.ceil": { argTypes: [F64], result: F64 },
205
+ "math.sin": { argTypes: [F64], result: F64 },
206
+ "math.cos": { argTypes: [F64], result: F64 },
207
+ "math.tan": { argTypes: [F64], result: F64 },
208
+ "math.asin": { argTypes: [F64], result: F64 },
209
+ "math.acos": { argTypes: [F64], result: F64 },
210
+ "math.atan": { argTypes: [F64], result: F64 },
211
+ "math.cbrt": { argTypes: [F64], result: F64 },
212
+ "math.sign": { argTypes: [F64], result: F64 },
213
+ "math.exp": { argTypes: [F64], result: F64 },
214
+ "math.sqrt": { argTypes: [F64], result: F64 },
215
+ "math.log": { argTypes: [F64], result: F64 },
216
+ "math.log2": { argTypes: [F64], result: F64 },
217
+ "math.log10": { argTypes: [F64], result: F64 },
218
+ "math.atan2": { argTypes: [F64, F64], result: F64 },
219
+ "math.pow": { argTypes: [F64, F64], result: F64 },
204
220
  "math.min": { argTypes: [F64, F64], result: F64 },
205
221
  "math.max": { argTypes: [F64, F64], result: F64 },
206
222
  "math.random": { argTypes: [], result: F64 },
@@ -383,6 +399,7 @@ export const LIB_FN_SIGS = {
383
399
  // the callback follows the reusePort BOOL in this additive ABI.
384
400
  "net.listenOptsReusePortCb": { argTypes: [NETSERVER_T, F64, STRING, BOOL, BOOL, null], result: VOID },
385
401
  "net.serverPort": { argTypes: [NETSERVER_T], result: F64 },
402
+ "net.serverListening": { argTypes: [NETSERVER_T], result: BOOL },
386
403
  // net.serverAddress's record result is shape-checked in the libCall case
387
404
  // (the dgram.address sentinel pattern).
388
405
  "net.serverAddress": { argTypes: [NETSERVER_T], result: VOID },
@@ -458,19 +475,38 @@ export const LIB_FN_SIGS = {
458
475
  // union, checked like process.envGet.
459
476
  "http.createServer": { argTypes: [null], result: NETSERVER_T },
460
477
  "http.createServerEmpty": { argTypes: [], result: NETSERVER_T },
478
+ "http.validateHeaderName": { argTypes: [STRING, STRING], result: VOID },
479
+ "http.validateHeaderValue": { argTypes: [STRING, DYN], result: VOID },
461
480
  "http.serverJoinDupHeaders": { argTypes: [NETSERVER_T], result: VOID },
462
481
  "http.serverAllowMissingHostHeader": { argTypes: [NETSERVER_T], result: VOID },
463
482
  "http.serverTimeoutGet": { argTypes: [NETSERVER_T, F64], result: F64 },
483
+ "http.serverSetTimeout": { argTypes: [NETSERVER_T, F64], result: VOID },
484
+ "http.serverSetTimeoutCb": { argTypes: [NETSERVER_T, F64, null], result: VOID },
485
+ "http.serverOnTimeout": { argTypes: [NETSERVER_T, null, BOOL], result: VOID },
486
+ "http.serverCloseAllConnections": { argTypes: [NETSERVER_T], result: VOID },
487
+ "http.serverCloseIdleConnections": { argTypes: [NETSERVER_T], result: VOID },
464
488
  "http.serverTimeoutSet": { argTypes: [NETSERVER_T, F64, F64], result: VOID },
465
489
  "http.serverTimeoutOptionSet": { argTypes: [NETSERVER_T, F64, DYN], result: VOID },
466
490
  "net.serverOnListening": { argTypes: [NETSERVER_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
467
491
  "http.resStatusGet": { argTypes: [HTTPRES_T], result: F64 },
468
492
  "http.resStatusSet": { argTypes: [HTTPRES_T, F64], result: VOID },
469
- "http.resStatusMsgGet": { argTypes: [HTTPRES_T], result: STRING },
493
+ "http.resStatusMsgGet": { argTypes: [HTTPRES_T], result: VOID },
470
494
  "http.resStatusMsgSet": { argTypes: [HTTPRES_T, STRING], result: VOID },
495
+ "http.resRequest": { argTypes: [HTTPRES_T], result: HTTPREQ_T },
496
+ "http.resSocket": { argTypes: [HTTPRES_T], result: VOID },
497
+ "http.resWritableFinished": { argTypes: [HTTPRES_T], result: BOOL },
498
+ "http.resSendDateGet": { argTypes: [HTTPRES_T], result: BOOL },
499
+ "http.resSendDateSet": { argTypes: [HTTPRES_T, BOOL], result: VOID },
500
+ "http.resStrictContentLengthGet": { argTypes: [HTTPRES_T], result: BOOL },
501
+ "http.resStrictContentLengthSet": { argTypes: [HTTPRES_T, BOOL], result: VOID },
502
+ "http.resSetTimeout": { argTypes: [HTTPRES_T, F64], result: VOID },
503
+ "http.resSetTimeoutCb": { argTypes: [HTTPRES_T, F64, { kind: "func", params: [], ret: VOID }], result: VOID },
471
504
  // resGetHeader answers the interned `string | undefined` union — the
472
505
  // reqHeader/envGet sentinel pattern (VOID here, checked specially).
473
506
  "http.resGetHeader": { argTypes: [HTTPRES_T, STRING], result: VOID },
507
+ "http.resGetHeaderNames": { argTypes: [HTTPRES_T], result: arrayOf(STRING) },
508
+ "http.resGetRawHeaderNames": { argTypes: [HTTPRES_T], result: arrayOf(STRING) },
509
+ "http.resGetHeaders": { argTypes: [HTTPRES_T], result: DYN },
474
510
  "http.resHasHeader": { argTypes: [HTTPRES_T, STRING], result: BOOL },
475
511
  "http.resRemoveHeader": { argTypes: [HTTPRES_T, STRING], result: VOID },
476
512
  "http.resOnFinish": { argTypes: [HTTPRES_T, { kind: "func", params: [], ret: VOID }], result: VOID },
@@ -485,6 +521,9 @@ export const LIB_FN_SIGS = {
485
521
  "http.resSetHeader": { argTypes: [HTTPRES_T, STRING, STRING], result: VOID },
486
522
  "http.resWriteHead": { argTypes: [HTTPRES_T, F64], result: VOID },
487
523
  "http.resWriteHeadN": { argTypes: [HTTPRES_T, F64, arrayOf(STRING), arrayOf(STRING)], result: VOID },
524
+ "http.resWriteContinue": { argTypes: [HTTPRES_T], result: VOID },
525
+ "http.resWriteProcessing": { argTypes: [HTTPRES_T], result: VOID },
526
+ "http.resWriteEarlyHints": { argTypes: [HTTPRES_T, arrayOf(STRING)], result: VOID },
488
527
  "http.resWrite": { argTypes: [HTTPRES_T, STRING], result: VOID },
489
528
  "http.resWriteBytes": { argTypes: [HTTPRES_T, BYTES_U8], result: VOID },
490
529
  "http.resEnd": { argTypes: [HTTPRES_T], result: VOID },
@@ -493,6 +532,7 @@ export const LIB_FN_SIGS = {
493
532
  "http.resWriteDyn": { argTypes: [HTTPRES_T, DYN], result: VOID },
494
533
  "http.resEndDyn": { argTypes: [HTTPRES_T, DYN], result: VOID },
495
534
  "http.resHeadersSent": { argTypes: [HTTPRES_T], result: BOOL },
535
+ "http.resWritableEnded": { argTypes: [HTTPRES_T], result: BOOL },
496
536
  "http.resFlushHeaders": { argTypes: [HTTPRES_T], result: VOID },
497
537
  "http.resAddTrailers": { argTypes: [HTTPRES_T, arrayOf(STRING)], result: VOID },
498
538
  "http.resCork": { argTypes: [HTTPRES_T], result: VOID },
@@ -697,6 +737,13 @@ export const LIB_FN_SIGS = {
697
737
  "https.requestFn": { argTypes: [BOOL, STRING, F64, STRING, STRING, F64, arrayOf(STRING), BOOL, BOOL, null], result: HTTPCLIENTREQ_T },
698
738
  "https.requestFnCb": { argTypes: [BOOL, STRING, F64, STRING, STRING, F64, arrayOf(STRING), BOOL, BOOL, null, null], result: HTTPCLIENTREQ_T },
699
739
  "http.clientWrite": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
740
+ "http.clientSetHeader": { argTypes: [HTTPCLIENTREQ_T, STRING, STRING], result: VOID },
741
+ "http.clientGetHeader": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
742
+ "http.clientHasHeader": { argTypes: [HTTPCLIENTREQ_T, STRING], result: BOOL },
743
+ "http.clientRemoveHeader": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
744
+ "http.clientGetHeaderNames": { argTypes: [HTTPCLIENTREQ_T], result: arrayOf(STRING) },
745
+ "http.clientGetRawHeaderNames": { argTypes: [HTTPCLIENTREQ_T], result: arrayOf(STRING) },
746
+ "http.clientGetHeaders": { argTypes: [HTTPCLIENTREQ_T], result: DYN },
700
747
  "http.clientWriteBytes": { argTypes: [HTTPCLIENTREQ_T, BYTES_U8], result: VOID },
701
748
  "http.clientEnd": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
702
749
  "http.clientEndStr": { argTypes: [HTTPCLIENTREQ_T, STRING], result: VOID },
@@ -708,12 +755,34 @@ export const LIB_FN_SIGS = {
708
755
  "http.clientCork": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
709
756
  "http.clientUncork": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
710
757
  "http.clientWritableCorked": { argTypes: [HTTPCLIENTREQ_T], result: F64 },
758
+ "http.clientMethod": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
759
+ "http.clientPath": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
760
+ "http.clientHost": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
761
+ "http.clientProtocol": { argTypes: [HTTPCLIENTREQ_T], result: STRING },
762
+ "http.clientHeadersSent": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
763
+ "http.clientWritableEnded": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
764
+ "http.clientWritableFinished": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
765
+ "http.clientSocket": { argTypes: [HTTPCLIENTREQ_T], result: NETSOCKET_T },
766
+ "http.clientReusedSocket": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
767
+ "http.clientSetNoDelay": { argTypes: [HTTPCLIENTREQ_T, BOOL], result: VOID },
768
+ "http.clientSetSocketKeepAlive": { argTypes: [HTTPCLIENTREQ_T, BOOL, F64], result: VOID },
769
+ "http.clientSetTimeout": { argTypes: [HTTPCLIENTREQ_T, F64], result: VOID },
770
+ "http.clientSetTimeoutCb": { argTypes: [HTTPCLIENTREQ_T, F64, { kind: "func", params: [], ret: VOID }], result: VOID },
771
+ "http.statusCodes": { argTypes: [], result: DYN },
772
+ "http.methods": { argTypes: [], result: arrayOf(STRING) },
773
+ "http.reqSetTimeout": { argTypes: [HTTPREQ_T, F64], result: VOID },
774
+ "http.reqSetTimeoutCb": { argTypes: [HTTPREQ_T, F64, { kind: "func", params: [], ret: VOID }], result: VOID },
711
775
  "http.clientDestroy": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
776
+ "http.clientAbort": { argTypes: [HTTPCLIENTREQ_T], result: VOID },
777
+ "http.clientAborted": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
712
778
  "http.clientDestroyed": { argTypes: [HTTPCLIENTREQ_T], result: BOOL },
713
779
  "http.clientOnResponse": { argTypes: [HTTPCLIENTREQ_T, null, BOOL], result: VOID },
780
+ "http.clientOnSocket": { argTypes: [HTTPCLIENTREQ_T, null, BOOL], result: VOID },
781
+ "http.clientOnFinish": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
714
782
  "http.clientOnError": { argTypes: [HTTPCLIENTREQ_T, null, BOOL], result: VOID },
715
783
  "http.clientOnTimeout": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
716
784
  "http.clientOnClose": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
785
+ "http.clientOnAbort": { argTypes: [HTTPCLIENTREQ_T, { kind: "func", params: [], ret: VOID }, BOOL], result: VOID },
717
786
  "cp.execSync": {
718
787
  argTypes: [STRING, arrayOf(STRING), BOOL, STRING, BOOL, STRING, BOOL, arrayOf(STRING), F64, F64, F64],
719
788
  result: STRING,
@@ -1257,6 +1326,7 @@ export const LIB_FN_SIGS = {
1257
1326
  // form) — checked in the libCall case.
1258
1327
  "string.fromCharCode": { argTypes: [null], result: STRING },
1259
1328
  "string.lastIndexOf": { argTypes: [STRING, STRING], result: F64 },
1329
+ "string.lastIndexOfFrom": { argTypes: [STRING, STRING, F64], result: F64 },
1260
1330
  "string.raw": { argTypes: [arrayOf(STRING), arrayOf(STRING)], result: STRING },
1261
1331
  };
1262
1332
  /** True for an object type naming a runtime-provided error class. */
@@ -2663,7 +2733,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
2663
2733
  ? { argTypes: e.args.map(() => elem), result: F64 }
2664
2734
  : e.method === "pushSpread" || e.method === "concatSpread" || e.method === "unshiftSpread"
2665
2735
  ? { argTypes: [e.receiver.type], result: F64 }
2666
- : e.method === "nextPresent"
2736
+ : e.method === "nextPresent" || e.method === "getNumber"
2667
2737
  ? { argTypes: [F64], result: F64 }
2668
2738
  : e.method === "pop"
2669
2739
  ? { argTypes: [], result: e.type } // union-checked below
@@ -2690,6 +2760,9 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
2690
2760
  : e.method === "shift"
2691
2761
  ? { argTypes: [], result: e.type } // union-checked below
2692
2762
  : { argTypes: [], result: F64 }; // length
2763
+ if (e.method === "getNumber" && elem.kind !== "f64") {
2764
+ err(`arrIntrinsic getNumber requires f64 elements, got ${elem.kind}`, e.loc);
2765
+ }
2693
2766
  if (e.method === "join" &&
2694
2767
  elem.kind !== "f64" && elem.kind !== "string" && elem.kind !== "bool" &&
2695
2768
  !(elem.kind === "union" &&
@@ -4186,7 +4259,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4186
4259
  }
4187
4260
  break;
4188
4261
  }
4189
- if (e.fn === "http.reqStatusMessage") {
4262
+ if (e.fn === "http.reqStatusMessage" || e.fn === "http.resStatusMsgGet") {
4190
4263
  // Result is the interned `string | undefined` union (reqHeader's).
4191
4264
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4192
4265
  const ok = def &&
@@ -4194,10 +4267,19 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4194
4267
  def.arms.some((a) => a.kind === "string") &&
4195
4268
  def.arms.some((a) => a.kind === "undefinedT");
4196
4269
  if (!ok) {
4197
- err(`libCall http.reqStatusMessage must return the 'string | undefined' union`, e.loc);
4270
+ err(`libCall ${e.fn} must return the 'string | undefined' union`, e.loc);
4198
4271
  }
4199
4272
  break;
4200
4273
  }
4274
+ if (e.fn === "http.resSocket") {
4275
+ const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4276
+ const ok = def && def.arms.length === 2 &&
4277
+ def.arms.some((a) => a.kind === "netSocket") &&
4278
+ def.arms.some((a) => a.kind === "nullT");
4279
+ if (!ok)
4280
+ err(`libCall http.resSocket must return the 'Socket | null' union`, e.loc);
4281
+ break;
4282
+ }
4201
4283
  if (e.fn === "http.reqH2Stream") {
4202
4284
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4203
4285
  const ok = def && def.arms.length === 2 &&
@@ -4207,7 +4289,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4207
4289
  err(`libCall http.reqH2Stream must return the 'Http2Stream | undefined' union`, e.loc);
4208
4290
  break;
4209
4291
  }
4210
- if (e.fn === "http.reqHeader" || e.fn === "http.reqTrailer" || e.fn === "http.resGetHeader") {
4292
+ if (e.fn === "http.reqHeader" || e.fn === "http.reqTrailer" || e.fn === "http.resGetHeader" || e.fn === "http.clientGetHeader") {
4211
4293
  // Result is the interned `string | undefined` union (envGet's).
4212
4294
  const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
4213
4295
  const ok = def &&
@@ -4230,13 +4312,15 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
4230
4312
  }
4231
4313
  if (e.fn === "net.createServerCb" || e.fn === "net.serverOnConnection" ||
4232
4314
  e.fn === "net.serverOnSecureConnection" ||
4315
+ e.fn === "http.serverSetTimeoutCb" || e.fn === "http.serverOnTimeout" ||
4316
+ e.fn === "http.clientOnSocket" ||
4233
4317
  e.fn === "net.sockOnData" || e.fn === "net.serverOnError" ||
4234
4318
  e.fn === "net.sockOnError") {
4235
4319
  // The program-dependent listener shapes: a void closure with no
4236
4320
  // params, or exactly the one supported parameter per event
4237
4321
  // (socket handle / data chunk bytes / error %Error). The
4238
4322
  // callback slot is arg 0 for createServerCb, arg 1 otherwise.
4239
- const cbT = e.args[e.fn === "net.createServerCb" ? 0 : 1]?.type;
4323
+ const cbT = e.args[e.fn === "net.createServerCb" ? 0 : e.fn === "http.serverSetTimeoutCb" ? 2 : 1]?.type;
4240
4324
  let ok = cbT?.kind === "func" && cbT.ret.kind === "void" && cbT.params.length <= 1;
4241
4325
  if (ok && cbT?.kind === "func" && cbT.params.length === 1) {
4242
4326
  const p = cbT.params[0];