@scriptc/compiler 0.3.1 → 0.3.2

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 (280) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +342 -16
  2. package/dist/backend/executable-features.js +1 -0
  3. package/dist/backend/executable-features.js.map +1 -1
  4. package/dist/backend/literals.d.ts +7 -0
  5. package/dist/backend/literals.js +32 -0
  6. package/dist/backend/literals.js.map +1 -1
  7. package/dist/backend/literals.test.js +17 -1
  8. package/dist/backend/literals.test.js.map +1 -1
  9. package/dist/backend/llvm/alloc.d.ts +15 -4
  10. package/dist/backend/llvm/alloc.js +39 -15
  11. package/dist/backend/llvm/alloc.js.map +1 -1
  12. package/dist/backend/llvm/alloc.test.js +15 -1
  13. package/dist/backend/llvm/alloc.test.js.map +1 -1
  14. package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
  15. package/dist/backend/llvm/appended-array-literals.js +109 -0
  16. package/dist/backend/llvm/appended-array-literals.js.map +1 -0
  17. package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
  18. package/dist/backend/llvm/appended-array-literals.test.js +90 -0
  19. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
  20. package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
  21. package/dist/backend/llvm/call-lifetimes.js +51 -3
  22. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  23. package/dist/backend/llvm/classes.js +10 -2
  24. package/dist/backend/llvm/classes.js.map +1 -1
  25. package/dist/backend/llvm/classes.test.js +2 -2
  26. package/dist/backend/llvm/dense-array-access.js +17 -12
  27. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  28. package/dist/backend/llvm/dense-array-access.test.js +15 -2
  29. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  30. package/dist/backend/llvm/dyn.d.ts +2 -0
  31. package/dist/backend/llvm/dyn.js +11 -2
  32. package/dist/backend/llvm/dyn.js.map +1 -1
  33. package/dist/backend/llvm/emitter.d.ts +43 -2
  34. package/dist/backend/llvm/emitter.js +306 -32
  35. package/dist/backend/llvm/emitter.js.map +1 -1
  36. package/dist/backend/llvm/expr-async.js +122 -6
  37. package/dist/backend/llvm/expr-async.js.map +1 -1
  38. package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
  39. package/dist/backend/llvm/expr-callbacks.js +81 -1
  40. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  41. package/dist/backend/llvm/expr-calls.d.ts +12 -1
  42. package/dist/backend/llvm/expr-calls.js +126 -54
  43. package/dist/backend/llvm/expr-calls.js.map +1 -1
  44. package/dist/backend/llvm/expr-containers.d.ts +7 -0
  45. package/dist/backend/llvm/expr-containers.js +38 -7
  46. package/dist/backend/llvm/expr-containers.js.map +1 -1
  47. package/dist/backend/llvm/expr-context.d.ts +2 -0
  48. package/dist/backend/llvm/expr-control.d.ts +8 -0
  49. package/dist/backend/llvm/expr-control.js +103 -69
  50. package/dist/backend/llvm/expr-control.js.map +1 -1
  51. package/dist/backend/llvm/expr-dynamic.js +2 -2
  52. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  53. package/dist/backend/llvm/expr-primitives.d.ts +7 -0
  54. package/dist/backend/llvm/expr-primitives.js +30 -26
  55. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  56. package/dist/backend/llvm/expr-records.js +11 -1
  57. package/dist/backend/llvm/expr-records.js.map +1 -1
  58. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  59. package/dist/backend/llvm/expr-stream-bridges.js +77 -8
  60. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  61. package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
  62. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  63. package/dist/backend/llvm/int32-abi.d.ts +18 -2
  64. package/dist/backend/llvm/int32-abi.js +23 -2
  65. package/dist/backend/llvm/int32-abi.js.map +1 -1
  66. package/dist/backend/llvm/int32-abi.test.js +75 -1
  67. package/dist/backend/llvm/int32-abi.test.js.map +1 -1
  68. package/dist/backend/llvm/lib-dispatch.js +7 -0
  69. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  70. package/dist/backend/llvm/lib-filesystem.js +58 -0
  71. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  72. package/dist/backend/llvm/lib-shared.js +76 -9
  73. package/dist/backend/llvm/lib-shared.js.map +1 -1
  74. package/dist/backend/llvm/local-array-reads.js +5 -3
  75. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  76. package/dist/backend/llvm/local-union-storage.d.ts +24 -2
  77. package/dist/backend/llvm/local-union-storage.js +127 -12
  78. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  79. package/dist/backend/llvm/local-union-storage.test.js +106 -1
  80. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  81. package/dist/backend/llvm/record-results.d.ts +26 -0
  82. package/dist/backend/llvm/record-results.js +252 -0
  83. package/dist/backend/llvm/record-results.js.map +1 -0
  84. package/dist/backend/llvm/reference-effects.js +2 -0
  85. package/dist/backend/llvm/reference-effects.js.map +1 -1
  86. package/dist/backend/llvm/reference-writes.js +15 -9
  87. package/dist/backend/llvm/reference-writes.js.map +1 -1
  88. package/dist/backend/llvm/regions.d.ts +67 -0
  89. package/dist/backend/llvm/regions.js +309 -0
  90. package/dist/backend/llvm/regions.js.map +1 -0
  91. package/dist/backend/llvm/regions.test.d.ts +1 -0
  92. package/dist/backend/llvm/regions.test.js +173 -0
  93. package/dist/backend/llvm/regions.test.js.map +1 -0
  94. package/dist/backend/llvm/shapes.d.ts +34 -7
  95. package/dist/backend/llvm/shapes.js +31 -16
  96. package/dist/backend/llvm/shapes.js.map +1 -1
  97. package/dist/backend/llvm/shapes.test.js +7 -6
  98. package/dist/backend/llvm/shapes.test.js.map +1 -1
  99. package/dist/backend/llvm/split-loops.js +1 -1
  100. package/dist/backend/llvm/split-loops.js.map +1 -1
  101. package/dist/backend/llvm/stack-objects.d.ts +29 -0
  102. package/dist/backend/llvm/stack-objects.js +130 -0
  103. package/dist/backend/llvm/stack-objects.js.map +1 -0
  104. package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
  105. package/dist/backend/llvm/stack-objects.test.js +252 -0
  106. package/dist/backend/llvm/stack-objects.test.js.map +1 -0
  107. package/dist/backend/llvm/string-reads.d.ts +4 -1
  108. package/dist/backend/llvm/string-reads.js +89 -9
  109. package/dist/backend/llvm/string-reads.js.map +1 -1
  110. package/dist/backend/llvm/switch-dispatch.js +5 -4
  111. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  112. package/dist/backend/llvm/walkers.d.ts +2 -0
  113. package/dist/backend/llvm/walkers.js +4 -2
  114. package/dist/backend/llvm/walkers.js.map +1 -1
  115. package/dist/backend/may-throw.js +1 -0
  116. package/dist/backend/may-throw.js.map +1 -1
  117. package/dist/backend/native/contracts.d.ts +5 -0
  118. package/dist/backend/native/executable.js +16 -1
  119. package/dist/backend/native/executable.js.map +1 -1
  120. package/dist/backend/native/library.js +1 -1
  121. package/dist/backend/native/library.js.map +1 -1
  122. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  123. package/dist/backend/native/runtime-inputs.js +2 -0
  124. package/dist/backend/native/runtime-inputs.js.map +1 -1
  125. package/dist/backend/native-link-info-core.d.ts +1 -0
  126. package/dist/backend/native-link-info-core.js.map +1 -1
  127. package/dist/backend/runtime-abi.d.ts +2 -2
  128. package/dist/backend/runtime-abi.js +2 -2
  129. package/dist/backend/runtime-pack-core.d.ts +1 -0
  130. package/dist/backend/runtime-pack-core.js +1 -0
  131. package/dist/backend/runtime-pack-core.js.map +1 -1
  132. package/dist/backend/runtime-pack-targets.test.js +1 -1
  133. package/dist/backend/runtime-pack.test.js +1 -1
  134. package/dist/backend/target-diagnostics.js +14 -0
  135. package/dist/backend/target-diagnostics.js.map +1 -1
  136. package/dist/backend/target-diagnostics.test.js +13 -0
  137. package/dist/backend/target-diagnostics.test.js.map +1 -1
  138. package/dist/executable/executable-cache.d.ts +1 -0
  139. package/dist/executable/executable-cache.js.map +1 -1
  140. package/dist/frontend/experimental-import.d.ts +12 -0
  141. package/dist/frontend/experimental-import.js +63 -0
  142. package/dist/frontend/experimental-import.js.map +1 -0
  143. package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
  144. package/dist/frontend/lowering/builtin-calls.js +36 -0
  145. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  146. package/dist/frontend/lowering/builtins/console.d.ts +16 -6
  147. package/dist/frontend/lowering/builtins/console.js +33 -9
  148. package/dist/frontend/lowering/builtins/console.js.map +1 -1
  149. package/dist/frontend/lowering/builtins/errors.js +20 -0
  150. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  151. package/dist/frontend/lowering/builtins/json.d.ts +2 -2
  152. package/dist/frontend/lowering/builtins/json.js +13 -4
  153. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  154. package/dist/frontend/lowering/builtins/module-calls.js +16 -1
  155. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  156. package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
  157. package/dist/frontend/lowering/builtins/numbers.js +17 -0
  158. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  159. package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
  160. package/dist/frontend/lowering/builtins/operating-system.js +361 -1
  161. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  162. package/dist/frontend/lowering/builtins/process.js +15 -3
  163. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  164. package/dist/frontend/lowering/builtins/promises.js +109 -2
  165. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  166. package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
  167. package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
  168. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  169. package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
  170. package/dist/frontend/lowering/checked-promise-all.js +52 -6
  171. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  172. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -3
  173. package/dist/frontend/lowering/class-dynamic-dispatch.js +54 -31
  174. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  175. package/dist/frontend/lowering/containers/array-callbacks.js +34 -4
  176. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  177. package/dist/frontend/lowering/containers/array-construction.js +8 -4
  178. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  179. package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
  180. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  181. package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
  182. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  183. package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
  184. package/dist/frontend/lowering/cycle-initialization.js +166 -12
  185. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  186. package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
  187. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  188. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  189. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  190. package/dist/frontend/lowering/expressions/object-literals.js +5 -56
  191. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  192. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  193. package/dist/frontend/lowering/generator-delegation.js +231 -10
  194. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  195. package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
  196. package/dist/frontend/lowering/lifetime-regions.js +216 -0
  197. package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
  198. package/dist/frontend/lowering/lower-array-sort.d.ts +28 -2
  199. package/dist/frontend/lowering/lower-array-sort.js +100 -3
  200. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  201. package/dist/frontend/lowering/lower-array-sort.test.js +99 -2
  202. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  203. package/dist/frontend/lowering/lower-calls.js +72 -102
  204. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  205. package/dist/frontend/lowering/lower-classes.d.ts +4 -3
  206. package/dist/frontend/lowering/lower-classes.js +116 -2
  207. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  208. package/dist/frontend/lowering/lower-console.d.ts +13 -0
  209. package/dist/frontend/lowering/lower-console.js +460 -4
  210. package/dist/frontend/lowering/lower-console.js.map +1 -1
  211. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
  212. package/dist/frontend/lowering/lower-event-emitter.js +124 -38
  213. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  214. package/dist/frontend/lowering/lower-exprs.js +137 -22
  215. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  216. package/dist/frontend/lowering/lower-generators.d.ts +15 -7
  217. package/dist/frontend/lowering/lower-generators.js +183 -99
  218. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  219. package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
  220. package/dist/frontend/lowering/lower-inspect.js +119 -18
  221. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  222. package/dist/frontend/lowering/lower-modules.js +20 -14
  223. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  224. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  225. package/dist/frontend/lowering/lower-stdlib.js +35 -1
  226. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  227. package/dist/frontend/lowering/lower-stmts.js +66 -11
  228. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  229. package/dist/frontend/lowering/lowerer.d.ts +22 -1
  230. package/dist/frontend/lowering/lowerer.js +116 -8
  231. package/dist/frontend/lowering/lowerer.js.map +1 -1
  232. package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
  233. package/dist/frontend/lowering/regex-span-reads.js +164 -0
  234. package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
  235. package/dist/frontend/lowering/surfaces.js +112 -10
  236. package/dist/frontend/lowering/surfaces.js.map +1 -1
  237. package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
  238. package/dist/frontend/lowering/var-hoisting.js +261 -0
  239. package/dist/frontend/lowering/var-hoisting.js.map +1 -0
  240. package/dist/frontend/pipeline.js +5 -3
  241. package/dist/frontend/pipeline.js.map +1 -1
  242. package/dist/frontend/program.d.ts +3 -2
  243. package/dist/frontend/program.js +23 -5
  244. package/dist/frontend/program.js.map +1 -1
  245. package/dist/frontend/program.test.js +13 -0
  246. package/dist/frontend/program.test.js.map +1 -1
  247. package/dist/frontend/type-mapper.d.ts +13 -1
  248. package/dist/frontend/type-mapper.js +146 -13
  249. package/dist/frontend/type-mapper.js.map +1 -1
  250. package/dist/index.js +1 -0
  251. package/dist/index.js.map +1 -1
  252. package/dist/ir/builtin-effects.js +29 -2
  253. package/dist/ir/builtin-effects.js.map +1 -1
  254. package/dist/ir/builtin-signatures.d.ts +1 -1
  255. package/dist/ir/builtin-signatures.js +145 -15
  256. package/dist/ir/builtin-signatures.js.map +1 -1
  257. package/dist/ir/function-references.test.js +1 -0
  258. package/dist/ir/function-references.test.js.map +1 -1
  259. package/dist/ir/int32-slots.js +1 -0
  260. package/dist/ir/int32-slots.js.map +1 -1
  261. package/dist/ir/intrinsic-signatures.js +2 -0
  262. package/dist/ir/intrinsic-signatures.js.map +1 -1
  263. package/dist/ir/ir.d.ts +65 -20
  264. package/dist/ir/ir.js +5 -0
  265. package/dist/ir/ir.js.map +1 -1
  266. package/dist/ir/runtime-features.d.ts +1 -0
  267. package/dist/ir/runtime-features.js +35 -1
  268. package/dist/ir/runtime-features.js.map +1 -1
  269. package/dist/ir/scalar-records.js +1 -2
  270. package/dist/ir/scalar-records.js.map +1 -1
  271. package/dist/ir/validate.js +150 -25
  272. package/dist/ir/validate.js.map +1 -1
  273. package/dist/ir/validate.test.js +65 -0
  274. package/dist/ir/validate.test.js.map +1 -1
  275. package/dist/library/ir-policy.js +1 -0
  276. package/dist/library/ir-policy.js.map +1 -1
  277. package/dist/native/sanitizer.test.js +1 -0
  278. package/dist/native/sanitizer.test.js.map +1 -1
  279. package/package.json +20 -20
  280. package/surface-manifest.json +159 -1
@@ -86,12 +86,14 @@ declare namespace NodeJS {
86
86
  * util.inspect rendering — so the parameters are unknown[], like stock
87
87
  * lib's console; values inspect cannot render statically (functions inside
88
88
  * composites, class hierarchies, `any`) fence per argument with a hint.
89
+ * assert, count/countReset, dir/dirxml, group/groupCollapsed/groupEnd,
90
+ * table, time/timeEnd/timeLog, clear, and the inspector-only
91
+ * profile/profileEnd/timeStamp lower on the global console.
89
92
  *
90
- * The REMAINING stock console members are declared too — not because they
91
- * lower (none do), but so a program that typechecks under its own tsc
92
- * reaches the per-site SC2020 fence naming the member and the supported
93
- * surface, instead of dying on a fallback-manufactured type error its own
94
- * tsc cannot reproduce. */
93
+ * trace is declared too — not because it lowers, but so a program that
94
+ * typechecks under its own tsc reaches the per-site SC2020 fence naming
95
+ * the member and the supported surface, instead of dying on a
96
+ * fallback-manufactured type error its own tsc cannot reproduce. */
95
97
  declare const console: {
96
98
  log(...args: unknown[]): void;
97
99
  info(...args: unknown[]): void;
@@ -112,13 +114,15 @@ declare const console: {
112
114
  timeEnd(label?: string): void;
113
115
  timeLog(label?: string, ...data: unknown[]): void;
114
116
  timeStamp(label?: string): void;
117
+ profile(label?: string): void;
118
+ profileEnd(label?: string): void;
115
119
  trace(...data: unknown[]): void;
116
120
  Console: typeof import("node:console").Console;
117
121
  };
118
122
 
119
123
  // node:console exports the global instance's bound methods and the Console
120
124
  // constructor: instances over process.stdout/process.stderr or node:stream
121
- // writables lower their log/info/debug/error/warn members; the remaining
125
+ // writables lower their log/info/debug/error/warn members; their remaining
122
126
  // methods are declared so unsupported uses reach named fences.
123
127
  type ScriptcConsoleMethods = typeof console;
124
128
  declare module "node:console" {
@@ -145,6 +149,8 @@ declare module "node:console" {
145
149
  export const timeEnd: ScriptcConsoleMethods["timeEnd"];
146
150
  export const timeLog: ScriptcConsoleMethods["timeLog"];
147
151
  export const timeStamp: ScriptcConsoleMethods["timeStamp"];
152
+ export const profile: ScriptcConsoleMethods["profile"];
153
+ export const profileEnd: ScriptcConsoleMethods["profileEnd"];
148
154
  export const trace: ScriptcConsoleMethods["trace"];
149
155
  const defaultConsole: ScriptcConsoleMethods & { Console: typeof Console };
150
156
  export default defaultConsole;
@@ -229,6 +235,10 @@ declare var process: {
229
235
  env: { [name: string]: string | undefined };
230
236
  /** Numeric writes set the status returned by ordinary program exit. */
231
237
  exitCode?: number;
238
+ /* Silence and throw DeprecationWarnings (util.deprecate,
239
+ * process.emitWarning); undefined until assigned. */
240
+ noDeprecation?: boolean;
241
+ throwDeprecation?: boolean;
232
242
  /* `never`, like @types/node: code behind an early-exit guard narrows
233
243
  * (`if (!x) process.exit(1)` proves x afterwards) — typed `void` the
234
244
  * guard narrows nothing and correct programs fail preflight. The
@@ -1594,6 +1604,27 @@ declare module "path" {
1594
1604
  export function isAbsolute(path: string): boolean;
1595
1605
  export function relative(from: string, to: string): string;
1596
1606
  export function toNamespacedPath(path: string): string;
1607
+ /* matchesGlob() is Node's glob matcher: brace expansion, extglobs, POSIX
1608
+ * classes and the ** and dot rules. */
1609
+ export function matchesGlob(path: string, pattern: string): boolean;
1610
+ /* parse() splits a path into its root, directory, base, extension and
1611
+ * name; format() joins those fields back (Node's `||` defaults). */
1612
+ export interface ParsedPath {
1613
+ root: string;
1614
+ dir: string;
1615
+ base: string;
1616
+ ext: string;
1617
+ name: string;
1618
+ }
1619
+ export interface FormatInputPathObject {
1620
+ root?: string | undefined;
1621
+ dir?: string | undefined;
1622
+ base?: string | undefined;
1623
+ ext?: string | undefined;
1624
+ name?: string | undefined;
1625
+ }
1626
+ export function parse(path: string): ParsedPath;
1627
+ export function format(pathObject: FormatInputPathObject): string;
1597
1628
  /* The union @types/node declares: the bare module answers the TARGET
1598
1629
  * platform's value (a compile-time constant — "\\"/";" under a win32
1599
1630
  * triple, "/"/":" everywhere else). */
@@ -1619,6 +1650,9 @@ declare module "path/posix" {
1619
1650
  export function isAbsolute(path: string): boolean;
1620
1651
  export function relative(from: string, to: string): string;
1621
1652
  export function toNamespacedPath(path: string): string;
1653
+ export function matchesGlob(path: string, pattern: string): boolean;
1654
+ export function parse(path: string): import("path").ParsedPath;
1655
+ export function format(pathObject: import("path").FormatInputPathObject): string;
1622
1656
  export const sep: "/";
1623
1657
  export const delimiter: ":";
1624
1658
  }
@@ -1635,6 +1669,9 @@ declare module "path/win32" {
1635
1669
  export function isAbsolute(path: string): boolean;
1636
1670
  export function relative(from: string, to: string): string;
1637
1671
  export function toNamespacedPath(path: string): string;
1672
+ export function matchesGlob(path: string, pattern: string): boolean;
1673
+ export function parse(path: string): import("path").ParsedPath;
1674
+ export function format(pathObject: import("path").FormatInputPathObject): string;
1638
1675
  export const sep: "\\";
1639
1676
  export const delimiter: ";";
1640
1677
  }
@@ -1692,6 +1729,237 @@ declare module "os" {
1692
1729
  }
1693
1730
  export type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6;
1694
1731
  export function networkInterfaces(): { [name: string]: NetworkInterfaceInfo[] | undefined };
1732
+ /* Host facts, libuv's answers: model/speed/times per logical CPU, the
1733
+ * host name, the 1/5/15-minute load averages, uptime in seconds, free
1734
+ * memory in bytes, process.arch, uname's machine and version fields,
1735
+ * the byte order, and a process's scheduling priority (an omitted pid
1736
+ * is the current process). Shapes mirror @types/node's. */
1737
+ export interface CpuInfo {
1738
+ model: string;
1739
+ speed: number;
1740
+ times: {
1741
+ user: number;
1742
+ nice: number;
1743
+ sys: number;
1744
+ idle: number;
1745
+ irq: number;
1746
+ };
1747
+ }
1748
+ export function cpus(): CpuInfo[];
1749
+ export function hostname(): string;
1750
+ export function loadavg(): number[];
1751
+ export function uptime(): number;
1752
+ export function freemem(): number;
1753
+ export function arch(): string;
1754
+ export function machine(): string;
1755
+ export function version(): string;
1756
+ export function endianness(): "BE" | "LE";
1757
+ export function getPriority(pid?: number): number;
1758
+ /* The TARGET platform's null device ("\\\\.\\nul" under a win32 triple). */
1759
+ export const devNull: string;
1760
+ /* The platform's constants: null-prototype objects with read-only
1761
+ * members, `signals` frozen (Node's internalBinding('constants').os). */
1762
+ export type SignalConstants = {
1763
+ [
1764
+ key in
1765
+ | "SIGABRT"
1766
+ | "SIGALRM"
1767
+ | "SIGBUS"
1768
+ | "SIGCHLD"
1769
+ | "SIGCONT"
1770
+ | "SIGFPE"
1771
+ | "SIGHUP"
1772
+ | "SIGILL"
1773
+ | "SIGINT"
1774
+ | "SIGIO"
1775
+ | "SIGIOT"
1776
+ | "SIGKILL"
1777
+ | "SIGPIPE"
1778
+ | "SIGPOLL"
1779
+ | "SIGPROF"
1780
+ | "SIGPWR"
1781
+ | "SIGQUIT"
1782
+ | "SIGSEGV"
1783
+ | "SIGSTKFLT"
1784
+ | "SIGSTOP"
1785
+ | "SIGSYS"
1786
+ | "SIGTERM"
1787
+ | "SIGTRAP"
1788
+ | "SIGTSTP"
1789
+ | "SIGTTIN"
1790
+ | "SIGTTOU"
1791
+ | "SIGUNUSED"
1792
+ | "SIGURG"
1793
+ | "SIGUSR1"
1794
+ | "SIGUSR2"
1795
+ | "SIGVTALRM"
1796
+ | "SIGWINCH"
1797
+ | "SIGXCPU"
1798
+ | "SIGXFSZ"
1799
+ | "SIGBREAK"
1800
+ | "SIGLOST"
1801
+ | "SIGINFO"
1802
+ ]: number;
1803
+ };
1804
+ export namespace constants {
1805
+ const UV_UDP_REUSEADDR: number;
1806
+ namespace signals {}
1807
+ const signals: SignalConstants;
1808
+ namespace errno {
1809
+ const E2BIG: number;
1810
+ const EACCES: number;
1811
+ const EADDRINUSE: number;
1812
+ const EADDRNOTAVAIL: number;
1813
+ const EAFNOSUPPORT: number;
1814
+ const EAGAIN: number;
1815
+ const EALREADY: number;
1816
+ const EBADF: number;
1817
+ const EBADMSG: number;
1818
+ const EBUSY: number;
1819
+ const ECANCELED: number;
1820
+ const ECHILD: number;
1821
+ const ECONNABORTED: number;
1822
+ const ECONNREFUSED: number;
1823
+ const ECONNRESET: number;
1824
+ const EDEADLK: number;
1825
+ const EDESTADDRREQ: number;
1826
+ const EDOM: number;
1827
+ const EDQUOT: number;
1828
+ const EEXIST: number;
1829
+ const EFAULT: number;
1830
+ const EFBIG: number;
1831
+ const EHOSTUNREACH: number;
1832
+ const EIDRM: number;
1833
+ const EILSEQ: number;
1834
+ const EINPROGRESS: number;
1835
+ const EINTR: number;
1836
+ const EINVAL: number;
1837
+ const EIO: number;
1838
+ const EISCONN: number;
1839
+ const EISDIR: number;
1840
+ const ELOOP: number;
1841
+ const EMFILE: number;
1842
+ const EMLINK: number;
1843
+ const EMSGSIZE: number;
1844
+ const EMULTIHOP: number;
1845
+ const ENAMETOOLONG: number;
1846
+ const ENETDOWN: number;
1847
+ const ENETRESET: number;
1848
+ const ENETUNREACH: number;
1849
+ const ENFILE: number;
1850
+ const ENOBUFS: number;
1851
+ const ENODATA: number;
1852
+ const ENODEV: number;
1853
+ const ENOENT: number;
1854
+ const ENOEXEC: number;
1855
+ const ENOLCK: number;
1856
+ const ENOLINK: number;
1857
+ const ENOMEM: number;
1858
+ const ENOMSG: number;
1859
+ const ENOPROTOOPT: number;
1860
+ const ENOSPC: number;
1861
+ const ENOSR: number;
1862
+ const ENOSTR: number;
1863
+ const ENOSYS: number;
1864
+ const ENOTCONN: number;
1865
+ const ENOTDIR: number;
1866
+ const ENOTEMPTY: number;
1867
+ const ENOTSOCK: number;
1868
+ const ENOTSUP: number;
1869
+ const ENOTTY: number;
1870
+ const ENXIO: number;
1871
+ const EOPNOTSUPP: number;
1872
+ const EOVERFLOW: number;
1873
+ const EPERM: number;
1874
+ const EPIPE: number;
1875
+ const EPROTO: number;
1876
+ const EPROTONOSUPPORT: number;
1877
+ const EPROTOTYPE: number;
1878
+ const ERANGE: number;
1879
+ const EROFS: number;
1880
+ const ESPIPE: number;
1881
+ const ESRCH: number;
1882
+ const ESTALE: number;
1883
+ const ETIME: number;
1884
+ const ETIMEDOUT: number;
1885
+ const ETXTBSY: number;
1886
+ const EWOULDBLOCK: number;
1887
+ const EXDEV: number;
1888
+ const WSAEINTR: number;
1889
+ const WSAEBADF: number;
1890
+ const WSAEACCES: number;
1891
+ const WSAEFAULT: number;
1892
+ const WSAEINVAL: number;
1893
+ const WSAEMFILE: number;
1894
+ const WSAEWOULDBLOCK: number;
1895
+ const WSAEINPROGRESS: number;
1896
+ const WSAEALREADY: number;
1897
+ const WSAENOTSOCK: number;
1898
+ const WSAEDESTADDRREQ: number;
1899
+ const WSAEMSGSIZE: number;
1900
+ const WSAEPROTOTYPE: number;
1901
+ const WSAENOPROTOOPT: number;
1902
+ const WSAEPROTONOSUPPORT: number;
1903
+ const WSAESOCKTNOSUPPORT: number;
1904
+ const WSAEOPNOTSUPP: number;
1905
+ const WSAEPFNOSUPPORT: number;
1906
+ const WSAEAFNOSUPPORT: number;
1907
+ const WSAEADDRINUSE: number;
1908
+ const WSAEADDRNOTAVAIL: number;
1909
+ const WSAENETDOWN: number;
1910
+ const WSAENETUNREACH: number;
1911
+ const WSAENETRESET: number;
1912
+ const WSAECONNABORTED: number;
1913
+ const WSAECONNRESET: number;
1914
+ const WSAENOBUFS: number;
1915
+ const WSAEISCONN: number;
1916
+ const WSAENOTCONN: number;
1917
+ const WSAESHUTDOWN: number;
1918
+ const WSAETOOMANYREFS: number;
1919
+ const WSAETIMEDOUT: number;
1920
+ const WSAECONNREFUSED: number;
1921
+ const WSAELOOP: number;
1922
+ const WSAENAMETOOLONG: number;
1923
+ const WSAEHOSTDOWN: number;
1924
+ const WSAEHOSTUNREACH: number;
1925
+ const WSAENOTEMPTY: number;
1926
+ const WSAEPROCLIM: number;
1927
+ const WSAEUSERS: number;
1928
+ const WSAEDQUOT: number;
1929
+ const WSAESTALE: number;
1930
+ const WSAEREMOTE: number;
1931
+ const WSASYSNOTREADY: number;
1932
+ const WSAVERNOTSUPPORTED: number;
1933
+ const WSANOTINITIALISED: number;
1934
+ const WSAEDISCON: number;
1935
+ const WSAENOMORE: number;
1936
+ const WSAECANCELLED: number;
1937
+ const WSAEINVALIDPROCTABLE: number;
1938
+ const WSAEINVALIDPROVIDER: number;
1939
+ const WSAEPROVIDERFAILEDINIT: number;
1940
+ const WSASYSCALLFAILURE: number;
1941
+ const WSASERVICE_NOT_FOUND: number;
1942
+ const WSATYPE_NOT_FOUND: number;
1943
+ const WSA_E_NO_MORE: number;
1944
+ const WSA_E_CANCELLED: number;
1945
+ const WSAEREFUSED: number;
1946
+ }
1947
+ namespace dlopen {
1948
+ const RTLD_LAZY: number;
1949
+ const RTLD_NOW: number;
1950
+ const RTLD_GLOBAL: number;
1951
+ const RTLD_LOCAL: number;
1952
+ const RTLD_DEEPBIND: number;
1953
+ }
1954
+ namespace priority {
1955
+ const PRIORITY_LOW: number;
1956
+ const PRIORITY_BELOW_NORMAL: number;
1957
+ const PRIORITY_NORMAL: number;
1958
+ const PRIORITY_ABOVE_NORMAL: number;
1959
+ const PRIORITY_HIGH: number;
1960
+ const PRIORITY_HIGHEST: number;
1961
+ }
1962
+ }
1695
1963
  }
1696
1964
  declare module "node:os" {
1697
1965
  export * from "os";
@@ -2191,6 +2459,60 @@ declare module "util" {
2191
2459
  options?: { validateStream?: boolean; stream?: unknown },
2192
2460
  ): string;
2193
2461
  export function parseEnv(content: string): { [key: string]: string | undefined };
2462
+ export function inherits(constructor: unknown, superConstructor: unknown): void;
2463
+ export interface DeprecateOptions {
2464
+ modifyPrototype?: boolean;
2465
+ }
2466
+ export function deprecate<T extends Function>(
2467
+ fn: T,
2468
+ msg: string,
2469
+ code?: string,
2470
+ options?: DeprecateOptions,
2471
+ ): T;
2472
+ /* The callback receives null on success and the rejection reason
2473
+ * otherwise (falsy reasons arrive as ERR_FALSY_VALUE_REJECTION). */
2474
+ export function callbackify(
2475
+ fn: () => Promise<void>,
2476
+ ): (callback: (err: NodeJS.ErrnoException | null) => void) => void;
2477
+ export function callbackify<TResult>(
2478
+ fn: () => Promise<TResult>,
2479
+ ): (callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
2480
+ export function callbackify<T1>(
2481
+ fn: (arg1: T1) => Promise<void>,
2482
+ ): (arg1: T1, callback: (err: NodeJS.ErrnoException | null) => void) => void;
2483
+ export function callbackify<T1, TResult>(
2484
+ fn: (arg1: T1) => Promise<TResult>,
2485
+ ): (arg1: T1, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
2486
+ export function callbackify<T1, T2>(
2487
+ fn: (arg1: T1, arg2: T2) => Promise<void>,
2488
+ ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null) => void) => void;
2489
+ export function callbackify<T1, T2, TResult>(
2490
+ fn: (arg1: T1, arg2: T2) => Promise<TResult>,
2491
+ ): (
2492
+ arg1: T1,
2493
+ arg2: T2,
2494
+ callback: (err: NodeJS.ErrnoException | null, result: TResult) => void,
2495
+ ) => void;
2496
+ export function callbackify<T1, T2, T3>(
2497
+ fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>,
2498
+ ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null) => void) => void;
2499
+ export function callbackify<T1, T2, T3, TResult>(
2500
+ fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>,
2501
+ ): (
2502
+ arg1: T1,
2503
+ arg2: T2,
2504
+ arg3: T3,
2505
+ callback: (err: NodeJS.ErrnoException | null, result: TResult) => void,
2506
+ ) => void;
2507
+ export type DebugLoggerFunction = (msg: string, ...param: unknown[]) => void;
2508
+ export interface DebugLogger extends DebugLoggerFunction {
2509
+ enabled: boolean;
2510
+ }
2511
+ export function debuglog(
2512
+ section: string,
2513
+ callback?: (fn: DebugLoggerFunction) => void,
2514
+ ): DebugLogger;
2515
+ export { debuglog as debug };
2194
2516
  export type TextEncoder = globalThis.TextEncoder;
2195
2517
  export type TextDecoder = globalThis.TextDecoder;
2196
2518
  export var TextEncoder: typeof globalThis.TextEncoder;
@@ -4210,16 +4532,20 @@ declare module "events" {
4210
4532
  class EventEmitter {
4211
4533
  constructor();
4212
4534
  static defaultMaxListeners: number;
4213
- on(eventName: string, listener: (...args: any[]) => void): this;
4214
- addListener(eventName: string, listener: (...args: any[]) => void): this;
4215
- once(eventName: string, listener: (...args: any[]) => void): this;
4216
- prependListener(eventName: string, listener: (...args: any[]) => void): this;
4217
- prependOnceListener(eventName: string, listener: (...args: any[]) => void): this;
4218
- off(eventName: string, listener: (...args: any[]) => void): this;
4219
- removeListener(eventName: string, listener: (...args: any[]) => void): this;
4220
- removeAllListeners(eventName?: string): this;
4221
- emit(eventName: string, ...args: any[]): boolean;
4222
- listenerCount(eventName: string, listener?: (...args: any[]) => void): number;
4535
+ /* Listeners registered under this symbol observe 'error' emits first
4536
+ * (an emit with no 'error' listener still throws). */
4537
+ static readonly errorMonitor: unique symbol;
4538
+ static addAbortListener(signal: AbortSignal, listener: (event: Event) => void): Disposable;
4539
+ on(eventName: string | symbol, listener: (...args: any[]) => void): this;
4540
+ addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
4541
+ once(eventName: string | symbol, listener: (...args: any[]) => void): this;
4542
+ prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
4543
+ prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
4544
+ off(eventName: string | symbol, listener: (...args: any[]) => void): this;
4545
+ removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
4546
+ removeAllListeners(eventName?: string | symbol): this;
4547
+ emit(eventName: string | symbol, ...args: any[]): boolean;
4548
+ listenerCount(eventName: string | symbol, listener?: (...args: any[]) => void): number;
4223
4549
  /* Declared as zero-parameter closures so the RESULT is statically
4224
4550
  * consumable (.length, indexing, identity): the lowering only admits
4225
4551
  * these calls for events whose argument tuple is empty — a listener
@@ -11,6 +11,7 @@ export function executableLinkFeatures(mod) {
11
11
  textDecoderLegacy: features.legacyTextDecoder,
12
12
  fileHandle: features.fileHandle,
13
13
  fetch: features.fetch,
14
+ ...(features.eventTarget ? { eventTarget: true } : {}),
14
15
  zlib: features.zlib,
15
16
  assert: features.assert,
16
17
  inspect: features.inspect,
@@ -1 +1 @@
1
- {"version":3,"file":"executable-features.js","sourceRoot":"","sources":["../../src/backend/executable-features.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAiB,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,UAAU,sBAAsB,CAAC,GAAa;IAClD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO;QACL,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,aAAa;QAC9B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACvD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"executable-features.js","sourceRoot":"","sources":["../../src/backend/executable-features.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAiB,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,UAAU,sBAAsB,CAAC,GAAa;IAClD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO;QACL,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,aAAa;QAC9B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACvD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC"}
@@ -3,6 +3,13 @@ export { unsignedHex } from "../format-integer.js";
3
3
  export declare function octalByte(value: number): string;
4
4
  /** LLVM byte-string contents, without quotes or the c prefix. */
5
5
  export declare function llvmBytes(bytes: Uint8Array, nulTerminated?: boolean): string;
6
+ /** Whether a JS string holds a lone UTF-16 surrogate. */
7
+ export declare function hasLoneSurrogate(text: string): boolean;
8
+ /** A JS string's bytes in the runtime's string storage: UTF-8, with each
9
+ * lone surrogate as its generalized 3-byte encoding (WTF-8). A lone
10
+ * surrogate takes as many bytes as the U+FFFD that Buffer's UTF-8 encoder
11
+ * substitutes, so `Buffer.byteLength(text, "utf8")` is also this length. */
12
+ export declare function wtf8Bytes(text: string): Uint8Array;
6
13
  /** Metadata operands use the same UTF-8 escapes, without a trailing NUL. */
7
14
  export declare function llvmQuoted(text: string): string;
8
15
  /** Escape UTF-16 source-control units without combining surrogate pairs. */
@@ -16,6 +16,38 @@ export function llvmBytes(bytes, nulTerminated = true) {
16
16
  }
17
17
  return nulTerminated ? out + "\\00" : out;
18
18
  }
19
+ const LONE_SURROGATE = /\p{Cs}/u;
20
+ /** Whether a JS string holds a lone UTF-16 surrogate. */
21
+ export function hasLoneSurrogate(text) {
22
+ return LONE_SURROGATE.test(text);
23
+ }
24
+ /** A JS string's bytes in the runtime's string storage: UTF-8, with each
25
+ * lone surrogate as its generalized 3-byte encoding (WTF-8). A lone
26
+ * surrogate takes as many bytes as the U+FFFD that Buffer's UTF-8 encoder
27
+ * substitutes, so `Buffer.byteLength(text, "utf8")` is also this length. */
28
+ export function wtf8Bytes(text) {
29
+ const bytes = Buffer.from(text, "utf8");
30
+ if (!hasLoneSurrogate(text))
31
+ return bytes;
32
+ let at = 0;
33
+ for (let i = 0; i < text.length; i++) {
34
+ const code = text.codePointAt(i);
35
+ if (code >= 0x10000) {
36
+ i++;
37
+ at += 4;
38
+ }
39
+ else if (code >= 0xd800 && code <= 0xdfff) {
40
+ bytes[at] = 0xed;
41
+ bytes[at + 1] = 0x80 | ((code >> 6) & 0x3f);
42
+ bytes[at + 2] = 0x80 | (code & 0x3f);
43
+ at += 3;
44
+ }
45
+ else {
46
+ at += code < 0x80 ? 1 : code < 0x800 ? 2 : 3;
47
+ }
48
+ }
49
+ return bytes;
50
+ }
19
51
  /** Metadata operands use the same UTF-8 escapes, without a trailing NUL. */
20
52
  export function llvmQuoted(text) {
21
53
  return '"' + llvmBytes(Buffer.from(text, "utf8"), false) + '"';
@@ -1 +1 @@
1
- {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/backend/literals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC;IAC1B,OAAO,CACL,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,aAAa,GAAG,IAAI;IAC/D,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG;YACD,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;gBAC3D,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC3B,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;AACjE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACxF,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACzE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/backend/literals.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { expect, test } from "vitest";
2
- import { commentText, llvmBytes, llvmQuoted, octalByte, unsignedHex } from "./literals.js";
2
+ import { commentText, hasLoneSurrogate, llvmBytes, llvmQuoted, octalByte, unsignedHex, wtf8Bytes, } from "./literals.js";
3
3
  import { f64Lit, llvmCommentText } from "./llvm/common.js";
4
4
  import { mangleFunction, mangleLocal } from "./mangle.js";
5
5
  test("integer escaping agrees with JavaScript across all UTF-16 code units", () => {
@@ -75,4 +75,20 @@ test("double spelling preserves every bit, including signed zero and subnormals"
75
75
  expect(f64Lit(number)).toBe("0x" + bytes.toString("hex").toUpperCase());
76
76
  }
77
77
  });
78
+ test("string storage bytes keep lone surrogates as WTF-8 and pairs as UTF-8", () => {
79
+ const hex = (text) => Buffer.from(wtf8Bytes(text)).toString("hex");
80
+ expect(hex("")).toBe("");
81
+ expect(hex("é日😀")).toBe(Buffer.from("é日😀").toString("hex"));
82
+ expect(hex("\ud800")).toBe("eda080");
83
+ expect(hex("\udfff")).toBe("edbfbf");
84
+ expect(hex("a\ud83d\ude00b")).toBe("61f09f988062");
85
+ expect(hex("\ude00\ud83d")).toBe("edb880eda0bd");
86
+ expect(hex("\ud83d😀\ud7ff")).toBe("eda0bdf09f9880ed9fbf");
87
+ for (const text of ["\ud800", "x\udc00y", "\ud83d\ud83d", "😀\ude00"]) {
88
+ expect(hasLoneSurrogate(text)).toBe(true);
89
+ expect(wtf8Bytes(text).length).toBe(Buffer.byteLength(text, "utf8"));
90
+ }
91
+ for (const text of ["", "plain", "😀", "\ud7ff\ue000"])
92
+ expect(hasLoneSurrogate(text)).toBe(false);
93
+ });
78
94
  //# sourceMappingURL=literals.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literals.test.js","sourceRoot":"","sources":["../../src/backend/literals.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"literals.test.js","sourceRoot":"","sources":["../../src/backend/literals.test.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@ export interface AllocHost {
12
12
  * (worker executables). */
13
13
  readonly threadLocalAlloc?: boolean;
14
14
  }
15
+ /** Worker executables: the calling script thread's ScrThreadHot block into
16
+ * `dest`. Its address also identifies the thread (the owner word of a
17
+ * lifetime-region chunk; llvm/regions.ts). */
18
+ export declare function threadHotAddressLines(host: AllocHost, dest: string): string[];
15
19
  /** Whether a target can use the inline allocation paths. */
16
20
  export declare function inlineAllocSupported(options: {
17
21
  pointerBits?: 32 | 64 | undefined;
@@ -19,6 +23,12 @@ export declare function inlineAllocSupported(options: {
19
23
  targetTriple?: string | undefined;
20
24
  threadInstances?: boolean | undefined;
21
25
  }): boolean;
26
+ /** sizeof(ScrCycHdr): the descriptor's i16 registry id, i8 color and
27
+ * generation, and an i32 `buf` whose sign bit marks a buffered candidate
28
+ * (scr_runtime.h asserts the offsets). */
29
+ export declare const CYC_HDR = 8;
30
+ /** ScrCycHdr.buf, an i32 at this header offset. */
31
+ export declare const CYC_BUF = 4;
22
32
  /** A collector header to install: the object type's constant ScrCycType
23
33
  * descriptor (its trace and teardown; see cycTypeDescriptor). */
24
34
  export interface CycHeader {
@@ -29,10 +39,11 @@ export interface CycHeader {
29
39
  * (SCR_CYC_KIND_EMITTED in scr_runtime.h). */
30
40
  export declare const FIRST_EMITTED_CYC_KIND = 32;
31
41
  /** The definition of a shape's ScrCycType descriptor `{ trace, free_fn,
32
- * kind }`, referenced by every header of that shape. `kind` indexes the
33
- * collector's per-type statistics (scr_runtime.h); emitted shapes number
34
- * themselves from FIRST_EMITTED_CYC_KIND (ShapeHost.nextCycKind) and 0
35
- * keeps none. */
42
+ * kind, id }`, named by every header of that shape through its registry
43
+ * id. `kind` indexes the collector's per-type statistics (scr_runtime.h);
44
+ * emitted shapes number themselves from FIRST_EMITTED_CYC_KIND
45
+ * (ShapeHost.nextCycKind) and 0 keeps none. The runtime assigns `id` on the
46
+ * first allocation, so the descriptor is writable. */
36
47
  export declare function cycTypeDescriptor(name: string, trace: string, free: string, kind?: number): string;
37
48
  /**
38
49
  * Lines that leave a zeroed object of `size` bytes (an integer constant