xbintsc 0.3.25 → 0.3.46

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 (187) hide show
  1. package/README.md +39 -3
  2. package/dist/src/cli/main.js +124 -30
  3. package/dist/src/cli/main.js.map +1 -1
  4. package/dist/src/codegen/generator/calls/access.js +8 -1
  5. package/dist/src/codegen/generator/calls/access.js.map +1 -1
  6. package/dist/src/codegen/generator/module.js +10 -0
  7. package/dist/src/codegen/generator/module.js.map +1 -1
  8. package/dist/src/codegen/generator/state.js +24 -0
  9. package/dist/src/codegen/generator/state.js.map +1 -1
  10. package/dist/src/codegen/generator/tables.d.ts +6 -0
  11. package/dist/src/codegen/generator/tables.js +38 -0
  12. package/dist/src/codegen/generator/tables.js.map +1 -1
  13. package/dist/src/driver/bundler/commonjs.d.ts +52 -0
  14. package/dist/src/driver/bundler/commonjs.js +493 -0
  15. package/dist/src/driver/bundler/commonjs.js.map +1 -0
  16. package/dist/src/driver/bundler/graph.js +14 -0
  17. package/dist/src/driver/bundler/graph.js.map +1 -1
  18. package/dist/src/driver/bundler/merge.js +14 -0
  19. package/dist/src/driver/bundler/merge.js.map +1 -1
  20. package/dist/src/driver/bundler/types.d.ts +8 -0
  21. package/dist/src/driver/compiler.d.ts +8 -1
  22. package/dist/src/driver/compiler.js +73 -5
  23. package/dist/src/driver/compiler.js.map +1 -1
  24. package/dist/src/driver/config.d.ts +53 -0
  25. package/dist/src/driver/config.js +141 -0
  26. package/dist/src/driver/config.js.map +1 -0
  27. package/dist/src/driver/icon.d.ts +62 -0
  28. package/dist/src/driver/icon.js +151 -0
  29. package/dist/src/driver/icon.js.map +1 -0
  30. package/dist/src/driver/index.d.ts +4 -0
  31. package/dist/src/driver/index.js +4 -0
  32. package/dist/src/driver/index.js.map +1 -1
  33. package/dist/src/driver/mac-bundle.d.ts +41 -0
  34. package/dist/src/driver/mac-bundle.js +123 -0
  35. package/dist/src/driver/mac-bundle.js.map +1 -0
  36. package/dist/src/driver/win-icon.d.ts +27 -0
  37. package/dist/src/driver/win-icon.js +80 -0
  38. package/dist/src/driver/win-icon.js.map +1 -0
  39. package/dist/src/parser/statements.js +17 -4
  40. package/dist/src/parser/statements.js.map +1 -1
  41. package/dist/tests/cli/main.test.js +46 -1
  42. package/dist/tests/cli/main.test.js.map +1 -1
  43. package/dist/tests/driver/config.test.d.ts +1 -0
  44. package/dist/tests/driver/config.test.js +124 -0
  45. package/dist/tests/driver/config.test.js.map +1 -0
  46. package/dist/tests/driver/icon.test.d.ts +1 -0
  47. package/dist/tests/driver/icon.test.js +421 -0
  48. package/dist/tests/driver/icon.test.js.map +1 -0
  49. package/dist/tests/driver/modules.test.js +109 -0
  50. package/dist/tests/driver/modules.test.js.map +1 -1
  51. package/dist/tests/e2e/fetch.test.d.ts +12 -0
  52. package/dist/tests/e2e/fetch.test.js +272 -0
  53. package/dist/tests/e2e/fetch.test.js.map +1 -0
  54. package/dist/tests/e2e/gc.test.d.ts +1 -0
  55. package/dist/tests/e2e/gc.test.js +168 -0
  56. package/dist/tests/e2e/gc.test.js.map +1 -0
  57. package/dist/tests/e2e/gui-dom.test.d.ts +5 -0
  58. package/dist/tests/e2e/gui-dom.test.js +102 -0
  59. package/dist/tests/e2e/gui-dom.test.js.map +1 -0
  60. package/dist/tests/e2e/gui-events.test.d.ts +5 -0
  61. package/dist/tests/e2e/gui-events.test.js +60 -0
  62. package/dist/tests/e2e/gui-events.test.js.map +1 -0
  63. package/dist/tests/e2e/gui-helpers.d.ts +31 -0
  64. package/dist/tests/e2e/gui-helpers.js +74 -0
  65. package/dist/tests/e2e/gui-helpers.js.map +1 -0
  66. package/dist/tests/e2e/gui-layout.test.d.ts +4 -0
  67. package/dist/tests/e2e/gui-layout.test.js +88 -0
  68. package/dist/tests/e2e/gui-layout.test.js.map +1 -0
  69. package/dist/tests/e2e/gui-lifecycle.test.d.ts +5 -0
  70. package/dist/tests/e2e/gui-lifecycle.test.js +58 -0
  71. package/dist/tests/e2e/gui-lifecycle.test.js.map +1 -0
  72. package/dist/tests/e2e/gui-paint.test.d.ts +5 -0
  73. package/dist/tests/e2e/gui-paint.test.js +111 -0
  74. package/dist/tests/e2e/gui-paint.test.js.map +1 -0
  75. package/dist/tests/e2e/gui-script.test.d.ts +5 -0
  76. package/dist/tests/e2e/gui-script.test.js +78 -0
  77. package/dist/tests/e2e/gui-script.test.js.map +1 -0
  78. package/dist/tests/e2e/gui-style.test.d.ts +5 -0
  79. package/dist/tests/e2e/gui-style.test.js +175 -0
  80. package/dist/tests/e2e/gui-style.test.js.map +1 -0
  81. package/dist/tests/e2e/harness.d.ts +2 -0
  82. package/dist/tests/e2e/harness.js +1 -0
  83. package/dist/tests/e2e/harness.js.map +1 -1
  84. package/dist/tests/e2e/icon.test.d.ts +7 -0
  85. package/dist/tests/e2e/icon.test.js +80 -0
  86. package/dist/tests/e2e/icon.test.js.map +1 -0
  87. package/dist/tests/e2e/npm-modules.test.d.ts +4 -1
  88. package/dist/tests/e2e/npm-modules.test.js +47 -1
  89. package/dist/tests/e2e/npm-modules.test.js.map +1 -1
  90. package/dist/tests/e2e/runtime-coverage-typed-array.test.d.ts +9 -0
  91. package/dist/tests/e2e/runtime-coverage-typed-array.test.js +140 -0
  92. package/dist/tests/e2e/runtime-coverage-typed-array.test.js.map +1 -0
  93. package/dist/tests/parser/statements.test.js +11 -0
  94. package/dist/tests/parser/statements.test.js.map +1 -1
  95. package/package.json +3 -2
  96. package/runtime/ext_gui/css.cpp +4 -517
  97. package/runtime/ext_gui/css_internal.h +27 -0
  98. package/runtime/ext_gui/css_match.cpp +195 -0
  99. package/runtime/ext_gui/css_selector.cpp +207 -0
  100. package/runtime/ext_gui/css_sheet.cpp +129 -0
  101. package/runtime/ext_gui/dom.cpp +7 -403
  102. package/runtime/ext_gui/dom_api.cpp +63 -1146
  103. package/runtime/ext_gui/dom_api_document.cpp +96 -0
  104. package/runtime/ext_gui/dom_api_events.cpp +123 -0
  105. package/runtime/ext_gui/dom_api_internal.h +135 -0
  106. package/runtime/ext_gui/dom_api_node.cpp +329 -0
  107. package/runtime/ext_gui/dom_api_node_read.cpp +294 -0
  108. package/runtime/ext_gui/dom_api_proto.cpp +135 -0
  109. package/runtime/ext_gui/dom_api_style.cpp +192 -0
  110. package/runtime/ext_gui/dom_internal.h +39 -0
  111. package/runtime/ext_gui/dom_parse.cpp +348 -0
  112. package/runtime/ext_gui/dom_serialize.cpp +54 -0
  113. package/runtime/ext_gui/gui.cpp +56 -286
  114. package/runtime/ext_gui/gui_events.cpp +294 -0
  115. package/runtime/ext_gui/gui_internal.h +29 -0
  116. package/runtime/ext_gui/layout.cpp +6 -597
  117. package/runtime/ext_gui/layout_flex.cpp +200 -0
  118. package/runtime/ext_gui/layout_flow.cpp +191 -0
  119. package/runtime/ext_gui/layout_flow_internal.h +149 -0
  120. package/runtime/ext_gui/layout_inline.cpp +181 -0
  121. package/runtime/ext_gui/layout_internal.h +20 -0
  122. package/runtime/ext_gui/renderer.cpp +15 -679
  123. package/runtime/ext_gui/renderer_image.cpp +233 -0
  124. package/runtime/ext_gui/renderer_internal.h +112 -0
  125. package/runtime/ext_gui/renderer_shaders.h +108 -0
  126. package/runtime/ext_gui/renderer_text.cpp +342 -0
  127. package/runtime/ext_gui/style.cpp +12 -660
  128. package/runtime/ext_gui/style_internal.h +33 -0
  129. package/runtime/ext_gui/style_print.cpp +113 -0
  130. package/runtime/ext_gui/style_ua.cpp +98 -0
  131. package/runtime/ext_gui/style_values.cpp +468 -0
  132. package/runtime/ext_gui/window.cpp +1 -0
  133. package/runtime/ext_node/buffer/parts/prototype.inc +1 -0
  134. package/runtime/ext_node/dgram/dgram.c +1 -0
  135. package/runtime/ext_node/events/events.c +1 -0
  136. package/runtime/ext_node/fs/fs_ops.c +10 -25
  137. package/runtime/ext_node/fs/glob.c +13 -30
  138. package/runtime/ext_node/fs/promises.c +1 -0
  139. package/runtime/ext_node/http/parts/prototypes.inc +5 -0
  140. package/runtime/ext_node/net/parts/prototypes.inc +2 -0
  141. package/runtime/ext_node/process/process.c +9 -7
  142. package/runtime/ext_node/stream/stream.c +1 -0
  143. package/runtime/ext_node/util/util.c +6 -6
  144. package/runtime/rt.h +16 -0
  145. package/runtime/rt_internal.h +67 -2
  146. package/runtime/xt_alloc.c +442 -5
  147. package/runtime/xt_builtins.c +1 -0
  148. package/runtime/xt_containers/access.inc +32 -1
  149. package/runtime/xt_fetch/buffer.inc +64 -0
  150. package/runtime/xt_fetch/headers.inc +312 -0
  151. package/runtime/xt_fetch/request.inc +386 -0
  152. package/runtime/xt_fetch/response.inc +107 -0
  153. package/runtime/xt_fetch/socket.inc +72 -0
  154. package/runtime/xt_fetch/url.inc +108 -0
  155. package/runtime/xt_fetch.c +39 -0
  156. package/runtime/xt_generator.c +95 -1
  157. package/runtime/xt_loop.c +35 -1
  158. package/runtime/xt_promise.c +46 -0
  159. package/runtime/xt_stdlib2/error.inc +1 -0
  160. package/runtime/xt_stdlib2/regexp-match.inc +8 -7
  161. package/runtime/xt_stdlib2/set.inc +1 -1
  162. package/runtime/xt_symbol.c +2 -0
  163. package/runtime/xt_typed_array/construction.inc +142 -0
  164. package/runtime/xt_typed_array/elements.inc +92 -0
  165. package/runtime/xt_typed_array/methods.inc +329 -0
  166. package/runtime/xt_typed_array.c +72 -0
  167. package/runtime/xt_values/number-format.inc +26 -0
  168. package/scripts/check-file-length.ts +85 -0
  169. package/src/cli/main.ts +137 -29
  170. package/src/codegen/generator/calls/access.ts +9 -1
  171. package/src/codegen/generator/module.ts +10 -0
  172. package/src/codegen/generator/state.ts +24 -0
  173. package/src/codegen/generator/tables.ts +40 -0
  174. package/src/driver/bundler/commonjs.ts +553 -0
  175. package/src/driver/bundler/graph.ts +14 -0
  176. package/src/driver/bundler/merge.ts +15 -0
  177. package/src/driver/bundler/types.ts +8 -0
  178. package/src/driver/compiler.ts +83 -5
  179. package/src/driver/config.ts +173 -0
  180. package/src/driver/icon.ts +184 -0
  181. package/src/driver/index.ts +30 -0
  182. package/src/driver/mac-bundle.ts +156 -0
  183. package/src/driver/win-icon.ts +96 -0
  184. package/src/parser/statements.ts +17 -4
  185. package/dist/tests/e2e/gui.test.d.ts +0 -12
  186. package/dist/tests/e2e/gui.test.js +0 -702
  187. package/dist/tests/e2e/gui.test.js.map +0 -1
@@ -112,6 +112,7 @@ export const GLOBAL_FUNCTIONS = {
112
112
  clearTimeout: "xt_clear_timeout",
113
113
  setInterval: "xt_set_interval",
114
114
  clearInterval: "xt_clear_interval",
115
+ fetch: "xt_fetch",
115
116
  Number: "xt_number_ctor",
116
117
  String: "xt_string_ctor",
117
118
  Boolean: "xt_boolean_ctor",
@@ -134,12 +135,47 @@ export const BUILTIN_FUNCTION_VALUES = {
134
135
  clearTimeout: "xt_builtin_value_clearTimeout",
135
136
  setInterval: "xt_builtin_value_setInterval",
136
137
  clearInterval: "xt_builtin_value_clearInterval",
138
+ fetch: "xt_builtin_value_fetch",
137
139
  Number: "xt_builtin_value_number",
138
140
  String: "xt_builtin_value_string",
139
141
  Boolean: "xt_builtin_value_boolean",
140
142
  BigInt: "xt_builtin_value_bigint",
141
143
  Symbol: "xt_builtin_value_symbol",
142
144
  };
145
+ /** Typed-array globals: constructor, static dispatcher and element width. */
146
+ export const TYPED_ARRAYS = {
147
+ Uint8Array: { ctor: "xt_ta_u8_ctor", static: "xt_ta_u8_static", bytes: 1 },
148
+ Int8Array: { ctor: "xt_ta_i8_ctor", static: "xt_ta_i8_static", bytes: 1 },
149
+ Uint8ClampedArray: { ctor: "xt_ta_u8c_ctor", static: "xt_ta_u8c_static", bytes: 1 },
150
+ Uint16Array: { ctor: "xt_ta_u16_ctor", static: "xt_ta_u16_static", bytes: 2 },
151
+ Int16Array: { ctor: "xt_ta_i16_ctor", static: "xt_ta_i16_static", bytes: 2 },
152
+ Uint32Array: { ctor: "xt_ta_u32_ctor", static: "xt_ta_u32_static", bytes: 4 },
153
+ Int32Array: { ctor: "xt_ta_i32_ctor", static: "xt_ta_i32_static", bytes: 4 },
154
+ Float32Array: { ctor: "xt_ta_f32_ctor", static: "xt_ta_f32_static", bytes: 4 },
155
+ Float64Array: { ctor: "xt_ta_f64_ctor", static: "xt_ta_f64_static", bytes: 8 },
156
+ };
157
+ const TYPED_ARRAY_CTORS = {
158
+ Uint8Array: "xt_ta_u8_ctor",
159
+ Int8Array: "xt_ta_i8_ctor",
160
+ Uint8ClampedArray: "xt_ta_u8c_ctor",
161
+ Uint16Array: "xt_ta_u16_ctor",
162
+ Int16Array: "xt_ta_i16_ctor",
163
+ Uint32Array: "xt_ta_u32_ctor",
164
+ Int32Array: "xt_ta_i32_ctor",
165
+ Float32Array: "xt_ta_f32_ctor",
166
+ Float64Array: "xt_ta_f64_ctor",
167
+ };
168
+ const TYPED_ARRAY_STATICS = {
169
+ Uint8Array: "xt_ta_u8_static",
170
+ Int8Array: "xt_ta_i8_static",
171
+ Uint8ClampedArray: "xt_ta_u8c_static",
172
+ Uint16Array: "xt_ta_u16_static",
173
+ Int16Array: "xt_ta_i16_static",
174
+ Uint32Array: "xt_ta_u32_static",
175
+ Int32Array: "xt_ta_i32_static",
176
+ Float32Array: "xt_ta_f32_static",
177
+ Float64Array: "xt_ta_f64_static",
178
+ };
143
179
  /** Global namespaces whose static methods map to runtime dispatchers. */
144
180
  export const NAMESPACE_STATICS = {
145
181
  Math: "xt_math_call",
@@ -169,6 +205,7 @@ export const NAMESPACE_STATICS = {
169
205
  util: "xt_util_static",
170
206
  querystring: "xt_querystring_static",
171
207
  assert: "xt_assert_static",
208
+ ...TYPED_ARRAY_STATICS,
172
209
  };
173
210
  /** Namespace identifiers whose property access maps to a runtime getter. */
174
211
  export const NAMESPACE_PROPERTIES = {
@@ -194,6 +231,7 @@ export const CTOR_FUNCTIONS = {
194
231
  Server: "xt_net_server_ctor",
195
232
  EventEmitter: "xt_event_emitter_ctor",
196
233
  ...ERROR_CONSTRUCTORS,
234
+ ...TYPED_ARRAY_CTORS,
197
235
  };
198
236
  export const BUILTIN_METHODS = new Set([
199
237
  "push", "pop", "shift", "unshift", "join", "slice", "indexOf", "includes", "map", "forEach", "filter",
@@ -1 +1 @@
1
- {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../src/codegen/generator/tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../src/codegen/generator/tables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * CommonJS compatibility for `node_modules`.
3
+ *
4
+ * xbintsc is ESM-first: relative `.ts` files and ESM packages are bundled into
5
+ * one module and `require()` in user code is rejected. npm, however, still
6
+ * ships a lot of CommonJS. This pass lets a CommonJS file *inside
7
+ * `node_modules`* keep working by lowering its free `module` / `exports` /
8
+ * `require` references to per-module synthetic bindings:
9
+ *
10
+ * const <prefix>$cjs_module = { exports: {} };
11
+ * const <prefix>$cjs_exports = <prefix>$cjs_module.exports;
12
+ *
13
+ * `module.exports = x` and `exports.x = y` then behave as they do in Node, and
14
+ * `require("x")` is rewritten to the already-bundled dependency's exports
15
+ * object. User code (anything outside `node_modules`) is left untouched, so
16
+ * the code generator still reports its `require` use.
17
+ */
18
+ import { type CallExpression, type SourceFileNode } from "../../ast/nodes.js";
19
+ import type { BindResult } from "../../binder/binder.js";
20
+ import type { DiagnosticBag } from "../../diagnostics/diagnostic.js";
21
+ import type { DependencyResolution, ModuleRecord } from "./types.js";
22
+ /** The specifier of every `require("...")` call in a module. */
23
+ export interface RequireSite {
24
+ /** The call node, for the diagnostic location. */
25
+ readonly node: CallExpression;
26
+ /** The string literal argument's value. */
27
+ readonly specifier: string;
28
+ }
29
+ /** True when a path lives under a `node_modules` directory. */
30
+ export declare function isNodeModulesPath(path: string): boolean;
31
+ /** True when a module references `require`, `module` or `exports` freely. */
32
+ export declare function usesCommonJS(bind: BindResult): boolean;
33
+ /** Every `require("<literal>")` call in a module. */
34
+ export declare function collectRequireSites(sourceFile: SourceFileNode, bind: BindResult): RequireSite[];
35
+ export interface CommonJSLoweringContext {
36
+ readonly resolve: (fromDir: string, specifier: string) => DependencyResolution;
37
+ readonly recordFor: (path: string) => ModuleRecord | undefined;
38
+ readonly diagnostics: DiagnosticBag;
39
+ }
40
+ /**
41
+ * Phase A: give a CommonJS module its `module` / `exports` state, rewrite the
42
+ * free references, and record its export surface (whole-object `default` plus
43
+ * every syntactically detectable named export). Runs before the ESM export
44
+ * collection so re-exports of a CommonJS module resolve.
45
+ */
46
+ export declare function prepareCommonJS(record: ModuleRecord): void;
47
+ /**
48
+ * Phase B: rewrite every `require("x")` call to the bundled dependency's
49
+ * exports. Runs after the ESM export collection because a required ESM module
50
+ * is exposed as a synthetic namespace object.
51
+ */
52
+ export declare function lowerCommonJSRequires(record: ModuleRecord, context: CommonJSLoweringContext): void;
@@ -0,0 +1,493 @@
1
+ /**
2
+ * CommonJS compatibility for `node_modules`.
3
+ *
4
+ * xbintsc is ESM-first: relative `.ts` files and ESM packages are bundled into
5
+ * one module and `require()` in user code is rejected. npm, however, still
6
+ * ships a lot of CommonJS. This pass lets a CommonJS file *inside
7
+ * `node_modules`* keep working by lowering its free `module` / `exports` /
8
+ * `require` references to per-module synthetic bindings:
9
+ *
10
+ * const <prefix>$cjs_module = { exports: {} };
11
+ * const <prefix>$cjs_exports = <prefix>$cjs_module.exports;
12
+ *
13
+ * `module.exports = x` and `exports.x = y` then behave as they do in Node, and
14
+ * `require("x")` is rewritten to the already-bundled dependency's exports
15
+ * object. User code (anything outside `node_modules`) is left untouched, so
16
+ * the code generator still reports its `require` use.
17
+ */
18
+ import { dirname } from "node:path";
19
+ import { SyntaxKind, } from "../../ast/nodes.js";
20
+ import { DiagnosticCode } from "../../diagnostics/diagnostic.js";
21
+ import { moduleScope, renameReferences } from "./symbols.js";
22
+ /** True when a path lives under a `node_modules` directory. */
23
+ export function isNodeModulesPath(path) {
24
+ return path.split(/[\\/]+/).includes("node_modules");
25
+ }
26
+ /** True when a module references `require`, `module` or `exports` freely. */
27
+ export function usesCommonJS(bind) {
28
+ return bind.unresolved.some((identifier) => identifier.text === "require" || identifier.text === "module" || identifier.text === "exports");
29
+ }
30
+ /**
31
+ * A `require` identifier is CommonJS only when it has no binding; a local
32
+ * `function require() {}` or parameter must not be treated as the CJS hook.
33
+ */
34
+ function isFreeRequire(identifier, bind) {
35
+ return identifier.text === "require" && !bind.symbolOfIdentifier.get(identifier);
36
+ }
37
+ /** Every `require("<literal>")` call in a module. */
38
+ export function collectRequireSites(sourceFile, bind) {
39
+ const sites = [];
40
+ forEachNode(sourceFile, (node) => {
41
+ if (node.kind !== SyntaxKind.CallExpression)
42
+ return;
43
+ const call = node;
44
+ const callee = call.expression;
45
+ if (callee.kind !== SyntaxKind.Identifier)
46
+ return;
47
+ if (!isFreeRequire(callee, bind))
48
+ return;
49
+ const first = call.arguments[0];
50
+ if (first && first.kind === SyntaxKind.StringLiteral) {
51
+ sites.push({ node: call, specifier: first.value });
52
+ }
53
+ });
54
+ return sites;
55
+ }
56
+ /**
57
+ * Phase A: give a CommonJS module its `module` / `exports` state, rewrite the
58
+ * free references, and record its export surface (whole-object `default` plus
59
+ * every syntactically detectable named export). Runs before the ESM export
60
+ * collection so re-exports of a CommonJS module resolve.
61
+ */
62
+ export function prepareCommonJS(record) {
63
+ if (!record.commonjs)
64
+ return;
65
+ const statements = record.sourceFile.statements;
66
+ const anchor = statements[0]?.start ?? record.sourceFile.start;
67
+ const moduleName = `${record.prefix}$cjs_module`;
68
+ const exportsName = `${record.prefix}$cjs_exports`;
69
+ record.cjsModule = moduleName;
70
+ const hasExports = record.bind.unresolved.some((identifier) => identifier.text === "exports");
71
+ const hasModule = record.bind.unresolved.some((identifier) => identifier.text === "module");
72
+ // Detect exports before rewriting `module`/`exports`, since the detection
73
+ // matches on their original names.
74
+ const exportNames = detectExportNames(record.sourceFile, record.bind);
75
+ for (const identifier of record.bind.unresolved) {
76
+ if (identifier.text === "module" && hasModule)
77
+ identifier.text = moduleName;
78
+ else if (identifier.text === "exports" && hasExports)
79
+ identifier.text = exportsName;
80
+ }
81
+ const prefixStatements = [
82
+ variableStatement(moduleName, objectLiteral([propertyAssignment("exports", objectLiteral([]))]), anchor),
83
+ ];
84
+ prefixStatements.push(variableStatement(exportsName, member(moduleName, "exports", anchor), anchor));
85
+ const suffixStatements = [];
86
+ const defaultName = `${record.prefix}$cjs_default`;
87
+ suffixStatements.push(variableStatement(defaultName, member(moduleName, "exports", anchor), anchor));
88
+ record.exports.set("default", defaultName);
89
+ for (const name of exportNames) {
90
+ const local = `${record.prefix}$cjs_${name}`;
91
+ suffixStatements.push(variableStatement(local, member(member(moduleName, "exports", anchor), name, anchor), anchor));
92
+ record.exports.set(name, local);
93
+ }
94
+ statements.unshift(...prefixStatements);
95
+ statements.push(...suffixStatements);
96
+ }
97
+ /**
98
+ * Phase B: rewrite every `require("x")` call to the bundled dependency's
99
+ * exports. Runs after the ESM export collection because a required ESM module
100
+ * is exposed as a synthetic namespace object.
101
+ */
102
+ export function lowerCommonJSRequires(record, context) {
103
+ if (!record.commonjs)
104
+ return;
105
+ const statements = record.sourceFile.statements;
106
+ const anchor = statements[0]?.start ?? record.sourceFile.start;
107
+ const imports = [];
108
+ const namespaces = [];
109
+ let counter = 0;
110
+ // Before rewriting requires, turn `var x = require("node:fs")` into an ESM
111
+ // namespace import. Extension/built-in modules are not first-class values in
112
+ // the code generator, so binding one to a local name has to make the local
113
+ // name an import binding rather than an assignment of the module object.
114
+ hoistExternalNamespaceRequires(record, context, statements, anchor);
115
+ const replace = (node) => {
116
+ if (node.kind !== SyntaxKind.CallExpression)
117
+ return undefined;
118
+ const call = node;
119
+ const callee = call.expression;
120
+ if (callee.kind !== SyntaxKind.Identifier)
121
+ return undefined;
122
+ if (!isFreeRequire(callee, record.bind))
123
+ return undefined;
124
+ const first = call.arguments[0];
125
+ if (!first || first.kind !== SyntaxKind.StringLiteral) {
126
+ context.diagnostics.error(DiagnosticCode.UnsupportedFeature, "CommonJS `require()` with a non-literal argument is not supported", node, record.path);
127
+ return undefinedLiteral(anchor);
128
+ }
129
+ const specifier = first.value;
130
+ const resolution = context.resolve(dirname(record.path), specifier);
131
+ if (resolution.kind === "missing") {
132
+ context.diagnostics.error(DiagnosticCode.CodegenError, `Cannot resolve module '${specifier}' required from '${record.path}'`, node, record.path);
133
+ return undefinedLiteral(anchor);
134
+ }
135
+ if (resolution.kind === "external") {
136
+ const name = `${record.prefix}$ext_${counter++}`;
137
+ imports.push(defaultImport(name, specifier, anchor));
138
+ return identifier(name, anchor);
139
+ }
140
+ const dependency = context.recordFor(resolution.path);
141
+ if (!dependency) {
142
+ context.diagnostics.error(DiagnosticCode.CodegenError, `Cannot resolve module '${specifier}' required from '${record.path}'`, node, record.path);
143
+ return undefinedLiteral(anchor);
144
+ }
145
+ if (dependency.commonjs && dependency.cjsModule) {
146
+ return member(dependency.cjsModule, "exports", anchor);
147
+ }
148
+ // An ESM dependency is exposed to `require` as a namespace object.
149
+ const name = `${record.prefix}$req_${counter++}`;
150
+ namespaces.push(variableStatement(name, namespaceObject(dependency, anchor), anchor));
151
+ return identifier(name, anchor);
152
+ };
153
+ for (const statement of statements)
154
+ replaceInTree(statement, replace);
155
+ if (imports.length > 0 || namespaces.length > 0)
156
+ statements.unshift(...imports, ...namespaces);
157
+ }
158
+ /**
159
+ * Statically detect a CommonJS module's named exports so ESM consumers can
160
+ * import them: `exports.x = ...`, `module.exports.x = ...`, an object-literal
161
+ * `module.exports = { ... }`, and the `Object.defineProperty`/`Object.assign`
162
+ * forms.
163
+ */
164
+ function detectExportNames(sourceFile, bind) {
165
+ const names = new Set();
166
+ forEachNode(sourceFile, (node) => {
167
+ if (node.kind === SyntaxKind.BinaryExpression) {
168
+ const assignment = node;
169
+ if (assignment.operator !== "=")
170
+ return;
171
+ const name = namedExportTarget(assignment.left, bind);
172
+ if (name)
173
+ names.add(name);
174
+ if (isModuleExports(assignment.left, bind) && assignment.right.kind === SyntaxKind.ObjectLiteralExpression) {
175
+ for (const property of assignment.right.properties) {
176
+ const key = literalPropertyName(property);
177
+ if (key)
178
+ names.add(key);
179
+ }
180
+ }
181
+ }
182
+ else if (node.kind === SyntaxKind.CallExpression) {
183
+ const call = node;
184
+ const callee = call.expression;
185
+ if (callee.kind !== SyntaxKind.PropertyAccessExpression)
186
+ return;
187
+ const access = callee;
188
+ if (access.expression.kind !== SyntaxKind.Identifier)
189
+ return;
190
+ const method = access.name.text;
191
+ const target = call.arguments[0];
192
+ const value = call.arguments[1];
193
+ if (access.expression.kind === SyntaxKind.Identifier && access.expression.text === "Object") {
194
+ if (method === "defineProperty" && target && value && value.kind === SyntaxKind.StringLiteral) {
195
+ if (isModuleExportsOrExports(target, bind))
196
+ names.add(value.value);
197
+ }
198
+ else if (method === "assign" && target && isModuleExportsOrExports(target, bind) && value) {
199
+ if (value.kind === SyntaxKind.ObjectLiteralExpression) {
200
+ for (const property of value.properties) {
201
+ const key = literalPropertyName(property);
202
+ if (key)
203
+ names.add(key);
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ });
210
+ // Keep only names that are safe to snapshot via `.name` access.
211
+ return [...names].filter((name) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) && name !== "default");
212
+ }
213
+ /** The property name assigned through `exports.x` / `module.exports.x`. */
214
+ function namedExportTarget(left, bind) {
215
+ if (left.kind !== SyntaxKind.PropertyAccessExpression)
216
+ return undefined;
217
+ const access = left;
218
+ const owner = access.expression;
219
+ if (isModuleExportsOrExports(owner, bind))
220
+ return access.name.text;
221
+ return undefined;
222
+ }
223
+ function isModuleExportsOrExports(expression, bind) {
224
+ if (expression.kind !== SyntaxKind.Identifier) {
225
+ if (expression.kind !== SyntaxKind.PropertyAccessExpression)
226
+ return false;
227
+ return isModuleExports(expression, bind);
228
+ }
229
+ const identifier = expression;
230
+ return identifier.text === "exports" && !bind.symbolOfIdentifier.get(identifier);
231
+ }
232
+ function isModuleExports(expression, bind) {
233
+ if (expression.kind !== SyntaxKind.PropertyAccessExpression)
234
+ return false;
235
+ const access = expression;
236
+ if (access.name.text !== "exports")
237
+ return false;
238
+ const owner = access.expression;
239
+ if (owner.kind !== SyntaxKind.Identifier)
240
+ return false;
241
+ const identifier = owner;
242
+ return identifier.text === "module" && !bind.symbolOfIdentifier.get(identifier);
243
+ }
244
+ function literalPropertyName(property) {
245
+ if (property.kind === SyntaxKind.ShorthandPropertyAssignment) {
246
+ return property.name.text;
247
+ }
248
+ if (property.kind === SyntaxKind.PropertyAssignment) {
249
+ const name = property.name;
250
+ if (name.kind === SyntaxKind.Identifier || name.kind === SyntaxKind.StringLiteral) {
251
+ return name.text ?? name.value;
252
+ }
253
+ }
254
+ return undefined;
255
+ }
256
+ /** Build `{ default: <dep default>, ...named }` for a required ESM module. */
257
+ function namespaceObject(dependency, anchor) {
258
+ const properties = [];
259
+ const names = [...dependency.exports.keys()].filter((name) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name));
260
+ for (const name of ["default", ...names.filter((name) => name !== "default")]) {
261
+ const target = dependency.exports.get(name);
262
+ if (target)
263
+ properties.push(propertyAssignment(name, identifier(target, anchor)));
264
+ }
265
+ return objectLiteral(properties);
266
+ }
267
+ // ---------------------------------------------------------------------------
268
+ // Generic, allocation-light AST helpers (constructed nodes carry no trivia).
269
+ // ---------------------------------------------------------------------------
270
+ function isNode(value) {
271
+ return !!value && typeof value === "object" && "kind" in value;
272
+ }
273
+ /** Pre-order walk over every child node. */
274
+ function forEachNode(root, visit) {
275
+ visit(root);
276
+ const record = root;
277
+ for (const key of Object.keys(record)) {
278
+ if (key === "kind" || key === "start" || key === "end" || key === "text" || key === "value" || key === "raw")
279
+ continue;
280
+ const value = record[key];
281
+ if (Array.isArray(value)) {
282
+ for (const child of value)
283
+ if (isNode(child))
284
+ forEachNode(child, visit);
285
+ }
286
+ else if (isNode(value)) {
287
+ forEachNode(value, visit);
288
+ }
289
+ }
290
+ }
291
+ /** Children-first walk that lets `replace` swap a node for a new expression. */
292
+ function replaceInTree(node, replace) {
293
+ const record = node;
294
+ for (const key of Object.keys(record)) {
295
+ if (key === "kind" || key === "start" || key === "end" || key === "text" || key === "value" || key === "raw")
296
+ continue;
297
+ const value = record[key];
298
+ if (Array.isArray(value)) {
299
+ for (let index = 0; index < value.length; index++) {
300
+ if (isNode(value[index]))
301
+ value[index] = replaceInTree(value[index], replace);
302
+ }
303
+ }
304
+ else if (isNode(value)) {
305
+ record[key] = replaceInTree(value, replace);
306
+ }
307
+ }
308
+ return replace(node) ?? node;
309
+ }
310
+ function identifier(text, anchor) {
311
+ return { kind: SyntaxKind.Identifier, text, start: anchor, end: anchor };
312
+ }
313
+ function member(object, name, anchor) {
314
+ const expression = typeof object === "string" ? identifier(object, anchor) : object;
315
+ return {
316
+ kind: SyntaxKind.PropertyAccessExpression,
317
+ expression,
318
+ name: identifier(name, anchor),
319
+ optional: false,
320
+ start: anchor,
321
+ end: anchor,
322
+ };
323
+ }
324
+ function objectLiteral(properties) {
325
+ return { kind: SyntaxKind.ObjectLiteralExpression, properties, start: 0, end: 0 };
326
+ }
327
+ function propertyAssignment(name, initializer) {
328
+ return {
329
+ kind: SyntaxKind.PropertyAssignment,
330
+ name: identifier(name, 0),
331
+ initializer,
332
+ start: 0,
333
+ end: 0,
334
+ };
335
+ }
336
+ function undefinedLiteral(anchor) {
337
+ return { kind: SyntaxKind.UndefinedKeyword, start: anchor, end: anchor };
338
+ }
339
+ function variableStatement(name, initializer, anchor) {
340
+ const declaration = {
341
+ kind: SyntaxKind.VariableDeclaration,
342
+ name: identifier(name, anchor),
343
+ exclamation: false,
344
+ initializer,
345
+ start: anchor,
346
+ end: anchor,
347
+ };
348
+ const list = {
349
+ kind: SyntaxKind.VariableDeclarationList,
350
+ declarationKind: "const",
351
+ declarations: [declaration],
352
+ start: anchor,
353
+ end: anchor,
354
+ };
355
+ return { kind: SyntaxKind.VariableStatement, declarationList: list, modifiers: [], start: anchor, end: anchor };
356
+ }
357
+ function defaultImport(name, specifier, anchor) {
358
+ const moduleSpecifier = {
359
+ kind: SyntaxKind.StringLiteral,
360
+ text: JSON.stringify(specifier),
361
+ value: specifier,
362
+ raw: JSON.stringify(specifier),
363
+ start: anchor,
364
+ end: anchor,
365
+ };
366
+ return {
367
+ kind: SyntaxKind.ImportDeclaration,
368
+ importClause: { kind: SyntaxKind.ImportClause, name: identifier(name, anchor), isTypeOnly: false, start: anchor, end: anchor },
369
+ moduleSpecifier,
370
+ attributes: [],
371
+ start: anchor,
372
+ end: anchor,
373
+ };
374
+ }
375
+ /**
376
+ * Rewrite `var x = require("<external>")` into an ESM import so that the
377
+ * extension / built-in module can be used as a first-class value:
378
+ *
379
+ * const os = require("node:os") -> import * as os from "node:os"
380
+ * const { join } = require("node:path") -> import { join } from "node:path"
381
+ *
382
+ * Only simple identifier / object-literal bindings at the top level are
383
+ * handled; a require nested inside an expression falls back to the default
384
+ * import path, which supports direct member access but not value use.
385
+ */
386
+ function hoistExternalNamespaceRequires(record, context, statements, anchor) {
387
+ const scope = moduleScope(record);
388
+ if (!scope)
389
+ return;
390
+ for (let index = 0; index < statements.length; index++) {
391
+ const statement = statements[index];
392
+ if (!statement || statement.kind !== SyntaxKind.VariableStatement)
393
+ continue;
394
+ const list = statement.declarationList;
395
+ if (list.declarations.length !== 1)
396
+ continue;
397
+ const declaration = list.declarations[0];
398
+ if (!declaration)
399
+ continue;
400
+ const initializer = declaration.initializer;
401
+ if (!initializer || initializer.kind !== SyntaxKind.CallExpression)
402
+ continue;
403
+ const call = initializer;
404
+ const callee = call.expression;
405
+ if (callee.kind !== SyntaxKind.Identifier || !isFreeRequire(callee, record.bind))
406
+ continue;
407
+ const first = call.arguments[0];
408
+ if (!first || first.kind !== SyntaxKind.StringLiteral)
409
+ continue;
410
+ const specifier = first.value;
411
+ if (context.resolve(dirname(record.path), specifier).kind !== "external")
412
+ continue;
413
+ if (declaration.name.kind === SyntaxKind.Identifier) {
414
+ const symbol = scope.symbols.get(declaration.name.text);
415
+ const finalName = symbol ? record.finalNames.get(symbol.id) : undefined;
416
+ if (!symbol || !finalName)
417
+ continue;
418
+ renameReferences(symbol, finalName);
419
+ statements[index] = namespaceImport(finalName, specifier, anchor);
420
+ continue;
421
+ }
422
+ if (declaration.name.kind === SyntaxKind.ObjectBindingPattern) {
423
+ const hoisted = hoistObjectBinding(record, scope, declaration.name, specifier, anchor);
424
+ if (hoisted)
425
+ statements[index] = hoisted;
426
+ }
427
+ }
428
+ }
429
+ /** Build `import { a, b as c } from "spec"` for a `const { ... } = require` binding. */
430
+ function hoistObjectBinding(record, scope, pattern, specifier, anchor) {
431
+ const specifiers = [];
432
+ for (const element of pattern.elements) {
433
+ if (element.dotDotDotToken || element.initializer || element.name.kind !== SyntaxKind.Identifier)
434
+ return undefined;
435
+ const localText = element.name.text;
436
+ const importedName = element.propertyName
437
+ ? element.propertyName.kind === SyntaxKind.Identifier
438
+ ? element.propertyName.text
439
+ : element.propertyName.value
440
+ : localText;
441
+ const symbol = scope.symbols.get(localText);
442
+ const finalName = symbol ? record.finalNames.get(symbol.id) : undefined;
443
+ if (!symbol || !finalName)
444
+ return undefined;
445
+ renameReferences(symbol, finalName);
446
+ specifiers.push({
447
+ kind: SyntaxKind.ImportSpecifier,
448
+ propertyName: importedName === finalName ? undefined : identifier(importedName, anchor),
449
+ name: identifier(finalName, anchor),
450
+ isTypeOnly: false,
451
+ start: anchor,
452
+ end: anchor,
453
+ });
454
+ }
455
+ if (specifiers.length === 0)
456
+ return undefined;
457
+ const namedBindings = { kind: SyntaxKind.NamedImports, elements: specifiers, start: anchor, end: anchor };
458
+ return importDeclaration(namedBindings, specifier, anchor);
459
+ }
460
+ function namespaceImport(name, specifier, anchor) {
461
+ const namedBindings = {
462
+ kind: SyntaxKind.NamespaceImport,
463
+ name: identifier(name, anchor),
464
+ start: anchor,
465
+ end: anchor,
466
+ };
467
+ return importDeclaration(namedBindings, specifier, anchor);
468
+ }
469
+ function importDeclaration(namedBindings, specifier, anchor) {
470
+ const moduleSpecifier = {
471
+ kind: SyntaxKind.StringLiteral,
472
+ text: JSON.stringify(specifier),
473
+ value: specifier,
474
+ raw: JSON.stringify(specifier),
475
+ start: anchor,
476
+ end: anchor,
477
+ };
478
+ return {
479
+ kind: SyntaxKind.ImportDeclaration,
480
+ importClause: {
481
+ kind: SyntaxKind.ImportClause,
482
+ namedBindings,
483
+ isTypeOnly: false,
484
+ start: anchor,
485
+ end: anchor,
486
+ },
487
+ moduleSpecifier,
488
+ attributes: [],
489
+ start: anchor,
490
+ end: anchor,
491
+ };
492
+ }
493
+ //# sourceMappingURL=commonjs.js.map