@nativescript/vite 8.0.0-alpha.3 → 8.0.0-alpha.30

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 (295) hide show
  1. package/README.md +51 -11
  2. package/configuration/angular.d.ts +34 -1
  3. package/configuration/angular.js +369 -159
  4. package/configuration/angular.js.map +1 -1
  5. package/configuration/base.js +184 -14
  6. package/configuration/base.js.map +1 -1
  7. package/configuration/javascript.js +5 -72
  8. package/configuration/javascript.js.map +1 -1
  9. package/configuration/solid.js +27 -1
  10. package/configuration/solid.js.map +1 -1
  11. package/configuration/typescript.js +5 -75
  12. package/configuration/typescript.js.map +1 -1
  13. package/helpers/angular/angular-linker.d.ts +5 -6
  14. package/helpers/angular/angular-linker.js +36 -121
  15. package/helpers/angular/angular-linker.js.map +1 -1
  16. package/helpers/angular/inject-component-hmr-registration.d.ts +112 -0
  17. package/helpers/angular/inject-component-hmr-registration.js +291 -0
  18. package/helpers/angular/inject-component-hmr-registration.js.map +1 -0
  19. package/helpers/angular/inject-hmr-vite-ignore.d.ts +75 -0
  20. package/helpers/angular/inject-hmr-vite-ignore.js +221 -0
  21. package/helpers/angular/inject-hmr-vite-ignore.js.map +1 -0
  22. package/helpers/angular/inline-decorator-component-templates.js +1 -170
  23. package/helpers/angular/inline-decorator-component-templates.js.map +1 -1
  24. package/helpers/angular/js-lexer.d.ts +4 -0
  25. package/helpers/angular/js-lexer.js +182 -0
  26. package/helpers/angular/js-lexer.js.map +1 -0
  27. package/helpers/angular/shared-linker.d.ts +31 -3
  28. package/helpers/angular/shared-linker.js +67 -14
  29. package/helpers/angular/shared-linker.js.map +1 -1
  30. package/helpers/angular/synthesize-decorator-ctor-parameters.js +2 -170
  31. package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +1 -1
  32. package/helpers/angular/synthesize-injectable-factories.js +1 -174
  33. package/helpers/angular/synthesize-injectable-factories.js.map +1 -1
  34. package/helpers/angular/util.d.ts +1 -0
  35. package/helpers/angular/util.js +88 -0
  36. package/helpers/angular/util.js.map +1 -1
  37. package/helpers/app-components.d.ts +2 -1
  38. package/helpers/app-components.js.map +1 -1
  39. package/helpers/app-css-state.d.ts +8 -0
  40. package/helpers/app-css-state.js +8 -0
  41. package/helpers/app-css-state.js.map +1 -0
  42. package/helpers/bundler-context.d.ts +11 -0
  43. package/helpers/bundler-context.js +71 -0
  44. package/helpers/bundler-context.js.map +1 -0
  45. package/helpers/config-as-json.js +10 -0
  46. package/helpers/config-as-json.js.map +1 -1
  47. package/helpers/dev-host.d.ts +341 -0
  48. package/helpers/dev-host.js +617 -0
  49. package/helpers/dev-host.js.map +1 -0
  50. package/helpers/esbuild-platform-resolver.js +4 -1
  51. package/helpers/esbuild-platform-resolver.js.map +1 -1
  52. package/helpers/global-defines.d.ts +51 -0
  53. package/helpers/global-defines.js +77 -0
  54. package/helpers/global-defines.js.map +1 -1
  55. package/helpers/hmr-scope.d.ts +26 -0
  56. package/helpers/hmr-scope.js +67 -0
  57. package/helpers/hmr-scope.js.map +1 -0
  58. package/helpers/init.js +0 -18
  59. package/helpers/init.js.map +1 -1
  60. package/helpers/logging.d.ts +1 -0
  61. package/helpers/logging.js +63 -3
  62. package/helpers/logging.js.map +1 -1
  63. package/helpers/main-entry.d.ts +2 -1
  64. package/helpers/main-entry.js +430 -47
  65. package/helpers/main-entry.js.map +1 -1
  66. package/helpers/nativeclass-esbuild-plugin.d.ts +2 -1
  67. package/helpers/nativeclass-esbuild-plugin.js.map +1 -1
  68. package/helpers/nativeclass-transform.js.map +1 -1
  69. package/helpers/nativeclass-transformer-plugin.d.ts +9 -2
  70. package/helpers/nativeclass-transformer-plugin.js +157 -14
  71. package/helpers/nativeclass-transformer-plugin.js.map +1 -1
  72. package/helpers/nativescript-package-resolver.js +8 -3
  73. package/helpers/nativescript-package-resolver.js.map +1 -1
  74. package/helpers/normalize-id.d.ts +42 -0
  75. package/helpers/normalize-id.js +60 -0
  76. package/helpers/normalize-id.js.map +1 -0
  77. package/helpers/ns-core-url.d.ts +88 -0
  78. package/helpers/ns-core-url.js +191 -0
  79. package/helpers/ns-core-url.js.map +1 -0
  80. package/helpers/package-platform-aliases.js +4 -3
  81. package/helpers/package-platform-aliases.js.map +1 -1
  82. package/helpers/platform-types.d.ts +2 -0
  83. package/helpers/platform-types.js +2 -0
  84. package/helpers/platform-types.js.map +1 -0
  85. package/helpers/prelink-angular.js +12 -33
  86. package/helpers/prelink-angular.js.map +1 -1
  87. package/helpers/project.d.ts +35 -0
  88. package/helpers/project.js +120 -2
  89. package/helpers/project.js.map +1 -1
  90. package/helpers/resolver.js +17 -2
  91. package/helpers/resolver.js.map +1 -1
  92. package/helpers/solid-jsx-deps.d.ts +15 -0
  93. package/helpers/solid-jsx-deps.js +178 -0
  94. package/helpers/solid-jsx-deps.js.map +1 -0
  95. package/helpers/ts-config-paths.d.ts +14 -0
  96. package/helpers/ts-config-paths.js +89 -8
  97. package/helpers/ts-config-paths.js.map +1 -1
  98. package/helpers/typescript-check.d.ts +2 -1
  99. package/helpers/typescript-check.js.map +1 -1
  100. package/helpers/workers.d.ts +20 -19
  101. package/helpers/workers.js +624 -4
  102. package/helpers/workers.js.map +1 -1
  103. package/hmr/client/css-handler.d.ts +1 -0
  104. package/hmr/client/css-handler.js +33 -20
  105. package/hmr/client/css-handler.js.map +1 -1
  106. package/hmr/client/css-update-overlay.d.ts +18 -0
  107. package/hmr/client/css-update-overlay.js +27 -0
  108. package/hmr/client/css-update-overlay.js.map +1 -0
  109. package/hmr/client/hmr-pending-overlay.d.ts +27 -0
  110. package/hmr/client/hmr-pending-overlay.js +50 -0
  111. package/hmr/client/hmr-pending-overlay.js.map +1 -0
  112. package/hmr/client/index.js +419 -15
  113. package/hmr/client/index.js.map +1 -1
  114. package/hmr/client/utils.d.ts +6 -1
  115. package/hmr/client/utils.js +184 -8
  116. package/hmr/client/utils.js.map +1 -1
  117. package/hmr/client/vue-sfc-update-overlay.d.ts +82 -0
  118. package/hmr/client/vue-sfc-update-overlay.js +133 -0
  119. package/hmr/client/vue-sfc-update-overlay.js.map +1 -0
  120. package/hmr/entry-runtime.d.ts +2 -1
  121. package/hmr/entry-runtime.js +252 -65
  122. package/hmr/entry-runtime.js.map +1 -1
  123. package/hmr/frameworks/angular/client/index.d.ts +1 -0
  124. package/hmr/frameworks/angular/client/index.js +778 -20
  125. package/hmr/frameworks/angular/client/index.js.map +1 -1
  126. package/hmr/frameworks/angular/server/linker.js +1 -4
  127. package/hmr/frameworks/angular/server/linker.js.map +1 -1
  128. package/hmr/frameworks/angular/server/strategy.js +13 -15
  129. package/hmr/frameworks/angular/server/strategy.js.map +1 -1
  130. package/hmr/frameworks/solid/server/strategy.js +3 -18
  131. package/hmr/frameworks/solid/server/strategy.js.map +1 -1
  132. package/hmr/frameworks/typescript/server/strategy.js +2 -15
  133. package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
  134. package/hmr/frameworks/vue/client/index.js +30 -199
  135. package/hmr/frameworks/vue/client/index.js.map +1 -1
  136. package/hmr/helpers/ast-normalizer.js +52 -5
  137. package/hmr/helpers/ast-normalizer.js.map +1 -1
  138. package/hmr/helpers/cjs-named-exports.d.ts +23 -0
  139. package/hmr/helpers/cjs-named-exports.js +152 -0
  140. package/hmr/helpers/cjs-named-exports.js.map +1 -0
  141. package/hmr/helpers/package-exports.d.ts +16 -0
  142. package/hmr/helpers/package-exports.js +396 -0
  143. package/hmr/helpers/package-exports.js.map +1 -0
  144. package/hmr/server/angular-root-component.d.ts +79 -0
  145. package/hmr/server/angular-root-component.js +149 -0
  146. package/hmr/server/angular-root-component.js.map +1 -0
  147. package/hmr/server/constants.js +13 -4
  148. package/hmr/server/constants.js.map +1 -1
  149. package/hmr/server/core-sanitize.d.ts +90 -7
  150. package/hmr/server/core-sanitize.js +211 -56
  151. package/hmr/server/core-sanitize.js.map +1 -1
  152. package/hmr/server/framework-strategy.d.ts +9 -19
  153. package/hmr/server/hmr-module-graph.d.ts +37 -0
  154. package/hmr/server/hmr-module-graph.js +214 -0
  155. package/hmr/server/hmr-module-graph.js.map +1 -0
  156. package/hmr/server/import-map.js +60 -8
  157. package/hmr/server/import-map.js.map +1 -1
  158. package/hmr/server/index.js +1 -0
  159. package/hmr/server/index.js.map +1 -1
  160. package/hmr/server/ns-core-cjs-shape.d.ts +204 -0
  161. package/hmr/server/ns-core-cjs-shape.js +271 -0
  162. package/hmr/server/ns-core-cjs-shape.js.map +1 -0
  163. package/hmr/server/ns-rt-bridge.d.ts +51 -0
  164. package/hmr/server/ns-rt-bridge.js +131 -0
  165. package/hmr/server/ns-rt-bridge.js.map +1 -0
  166. package/hmr/server/ns-rt-route.d.ts +5 -0
  167. package/hmr/server/ns-rt-route.js +35 -0
  168. package/hmr/server/ns-rt-route.js.map +1 -0
  169. package/hmr/server/perf-instrumentation.d.ts +114 -0
  170. package/hmr/server/perf-instrumentation.js +195 -0
  171. package/hmr/server/perf-instrumentation.js.map +1 -0
  172. package/hmr/server/require-guard.d.ts +1 -0
  173. package/hmr/server/require-guard.js +12 -0
  174. package/hmr/server/require-guard.js.map +1 -0
  175. package/hmr/server/route-helpers.d.ts +7 -0
  176. package/hmr/server/route-helpers.js +13 -0
  177. package/hmr/server/route-helpers.js.map +1 -0
  178. package/hmr/server/server-origin.d.ts +12 -0
  179. package/hmr/server/server-origin.js +66 -0
  180. package/hmr/server/server-origin.js.map +1 -0
  181. package/hmr/server/shared-transform-request.js +12 -5
  182. package/hmr/server/shared-transform-request.js.map +1 -1
  183. package/hmr/server/vendor-bare-module-shims.d.ts +4 -0
  184. package/hmr/server/vendor-bare-module-shims.js +80 -0
  185. package/hmr/server/vendor-bare-module-shims.js.map +1 -0
  186. package/hmr/server/vite-plugin.js +60 -42
  187. package/hmr/server/vite-plugin.js.map +1 -1
  188. package/hmr/server/websocket-angular-entry.js +1 -1
  189. package/hmr/server/websocket-angular-entry.js.map +1 -1
  190. package/hmr/server/websocket-angular-hot-update.d.ts +17 -0
  191. package/hmr/server/websocket-angular-hot-update.js +176 -2
  192. package/hmr/server/websocket-angular-hot-update.js.map +1 -1
  193. package/hmr/server/websocket-core-bridge.d.ts +41 -6
  194. package/hmr/server/websocket-core-bridge.js +72 -75
  195. package/hmr/server/websocket-core-bridge.js.map +1 -1
  196. package/hmr/server/websocket-css-hot-update.d.ts +33 -0
  197. package/hmr/server/websocket-css-hot-update.js +65 -0
  198. package/hmr/server/websocket-css-hot-update.js.map +1 -0
  199. package/hmr/server/websocket-device-transform.d.ts +21 -0
  200. package/hmr/server/websocket-device-transform.js +1570 -0
  201. package/hmr/server/websocket-device-transform.js.map +1 -0
  202. package/hmr/server/websocket-graph-upsert.d.ts +15 -0
  203. package/hmr/server/websocket-graph-upsert.js +20 -0
  204. package/hmr/server/websocket-graph-upsert.js.map +1 -1
  205. package/hmr/server/websocket-hmr-pending.d.ts +43 -0
  206. package/hmr/server/websocket-hmr-pending.js +55 -0
  207. package/hmr/server/websocket-hmr-pending.js.map +1 -0
  208. package/hmr/server/websocket-hot-update.d.ts +51 -0
  209. package/hmr/server/websocket-hot-update.js +1160 -0
  210. package/hmr/server/websocket-hot-update.js.map +1 -0
  211. package/hmr/server/websocket-import-map-route.d.ts +15 -0
  212. package/hmr/server/websocket-import-map-route.js +44 -0
  213. package/hmr/server/websocket-import-map-route.js.map +1 -0
  214. package/hmr/server/websocket-module-bindings.js +3 -3
  215. package/hmr/server/websocket-module-bindings.js.map +1 -1
  216. package/hmr/server/websocket-module-specifiers.d.ts +66 -2
  217. package/hmr/server/websocket-module-specifiers.js +202 -19
  218. package/hmr/server/websocket-module-specifiers.js.map +1 -1
  219. package/hmr/server/websocket-ns-core.d.ts +21 -0
  220. package/hmr/server/websocket-ns-core.js +305 -0
  221. package/hmr/server/websocket-ns-core.js.map +1 -0
  222. package/hmr/server/websocket-ns-entry.d.ts +22 -0
  223. package/hmr/server/websocket-ns-entry.js +150 -0
  224. package/hmr/server/websocket-ns-entry.js.map +1 -0
  225. package/hmr/server/websocket-ns-m-paths.d.ts +3 -0
  226. package/hmr/server/websocket-ns-m-paths.js +92 -0
  227. package/hmr/server/websocket-ns-m-paths.js.map +1 -0
  228. package/hmr/server/websocket-ns-m-request.d.ts +45 -0
  229. package/hmr/server/websocket-ns-m-request.js +196 -0
  230. package/hmr/server/websocket-ns-m-request.js.map +1 -0
  231. package/hmr/server/websocket-ns-m.d.ts +34 -0
  232. package/hmr/server/websocket-ns-m.js +853 -0
  233. package/hmr/server/websocket-ns-m.js.map +1 -0
  234. package/hmr/server/websocket-served-module-helpers.d.ts +39 -0
  235. package/hmr/server/websocket-served-module-helpers.js +654 -0
  236. package/hmr/server/websocket-served-module-helpers.js.map +1 -0
  237. package/hmr/server/websocket-sfc.d.ts +24 -0
  238. package/hmr/server/websocket-sfc.js +1223 -0
  239. package/hmr/server/websocket-sfc.js.map +1 -0
  240. package/hmr/server/websocket-txn.d.ts +6 -0
  241. package/hmr/server/websocket-txn.js +39 -0
  242. package/hmr/server/websocket-txn.js.map +1 -0
  243. package/hmr/server/websocket-vendor-unifier.d.ts +10 -0
  244. package/hmr/server/websocket-vendor-unifier.js +45 -0
  245. package/hmr/server/websocket-vendor-unifier.js.map +1 -0
  246. package/hmr/server/websocket.d.ts +0 -30
  247. package/hmr/server/websocket.js +599 -6038
  248. package/hmr/server/websocket.js.map +1 -1
  249. package/hmr/shared/runtime/boot-placeholder-ui.d.ts +69 -0
  250. package/hmr/shared/runtime/boot-placeholder-ui.js +101 -0
  251. package/hmr/shared/runtime/boot-placeholder-ui.js.map +1 -0
  252. package/hmr/shared/runtime/boot-progress.d.ts +40 -0
  253. package/hmr/shared/runtime/boot-progress.js +128 -0
  254. package/hmr/shared/runtime/boot-progress.js.map +1 -0
  255. package/hmr/shared/runtime/boot-timeline.d.ts +18 -0
  256. package/hmr/shared/runtime/boot-timeline.js +52 -0
  257. package/hmr/shared/runtime/boot-timeline.js.map +1 -0
  258. package/hmr/shared/runtime/dev-overlay-snapshots.d.ts +31 -0
  259. package/hmr/shared/runtime/dev-overlay-snapshots.js +324 -0
  260. package/hmr/shared/runtime/dev-overlay-snapshots.js.map +1 -0
  261. package/hmr/shared/runtime/dev-overlay.d.ts +75 -26
  262. package/hmr/shared/runtime/dev-overlay.js +990 -260
  263. package/hmr/shared/runtime/dev-overlay.js.map +1 -1
  264. package/hmr/shared/runtime/module-provenance.js +1 -4
  265. package/hmr/shared/runtime/module-provenance.js.map +1 -1
  266. package/hmr/shared/runtime/root-placeholder-view.d.ts +19 -0
  267. package/hmr/shared/runtime/root-placeholder-view.js +310 -0
  268. package/hmr/shared/runtime/root-placeholder-view.js.map +1 -0
  269. package/hmr/shared/runtime/root-placeholder.js +352 -194
  270. package/hmr/shared/runtime/root-placeholder.js.map +1 -1
  271. package/hmr/shared/runtime/session-bootstrap.js +164 -1
  272. package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
  273. package/hmr/shared/runtime/vendor-bootstrap.js +1 -9
  274. package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
  275. package/hmr/shared/vendor/manifest-collect.d.ts +32 -0
  276. package/hmr/shared/vendor/manifest-collect.js +512 -0
  277. package/hmr/shared/vendor/manifest-collect.js.map +1 -0
  278. package/hmr/shared/vendor/manifest-loader.d.ts +2 -1
  279. package/hmr/shared/vendor/manifest-loader.js +3 -2
  280. package/hmr/shared/vendor/manifest-loader.js.map +1 -1
  281. package/hmr/shared/vendor/manifest.d.ts +1 -5
  282. package/hmr/shared/vendor/manifest.js +102 -739
  283. package/hmr/shared/vendor/manifest.js.map +1 -1
  284. package/hmr/shared/vendor/vendor-device-shim.d.ts +1 -0
  285. package/hmr/shared/vendor/vendor-device-shim.js +208 -0
  286. package/hmr/shared/vendor/vendor-device-shim.js.map +1 -0
  287. package/hmr/shared/vendor/vendor-esbuild-plugins.d.ts +16 -0
  288. package/hmr/shared/vendor/vendor-esbuild-plugins.js +203 -0
  289. package/hmr/shared/vendor/vendor-esbuild-plugins.js.map +1 -0
  290. package/index.d.ts +1 -0
  291. package/index.js +5 -0
  292. package/index.js.map +1 -1
  293. package/package.json +55 -11
  294. package/runtime/core-aliases-early.js +17 -41
  295. package/runtime/core-aliases-early.js.map +1 -1
@@ -0,0 +1,214 @@
1
+ import { matchesRuntimeGraphModuleId } from './runtime-graph-filter.js';
2
+ import { classifyGraphUpsert, shouldBroadcastGraphUpsertDelta, shouldBumpGraphVersion } from './websocket-graph-upsert.js';
3
+ import { getProjectAppVirtualPath } from '../../helpers/utils.js';
4
+ const APP_VIRTUAL_WITH_SLASH = `${getProjectAppVirtualPath()}/`;
5
+ // The HMR module graph: spec -> { deps, hash } plus a monotonically increasing
6
+ // version used to tag served module URLs. Owns delta/full-graph broadcasts to
7
+ // connected clients and the per-version transactional batch ordering.
8
+ //
9
+ // version starts at 1 so the very first /ns/m response uses a stable `v1` URL
10
+ // tag; it stays stable during cold boot (bulk warm-ups pass bumpVersion:false)
11
+ // and only advances on live edits, which prevents double-loads as the graph
12
+ // fills in lazily.
13
+ export class HmrModuleGraph {
14
+ constructor(deps) {
15
+ this.deps = deps;
16
+ this.modules = new Map();
17
+ // Transactional HMR batches: version -> ordered list of changed ids for that version.
18
+ this.txnBatches = new Map();
19
+ this._version = 1;
20
+ }
21
+ get version() {
22
+ return this._version;
23
+ }
24
+ get size() {
25
+ return this.modules.size;
26
+ }
27
+ get(id) {
28
+ return this.modules.get(id);
29
+ }
30
+ getTxnBatch(version) {
31
+ return this.txnBatches.get(version) || [];
32
+ }
33
+ computeHash(content) {
34
+ let h = 0;
35
+ for (let i = 0; i < content.length; i++) {
36
+ h = (h * 31 + content.charCodeAt(i)) | 0;
37
+ }
38
+ return ('00000000' + (h >>> 0).toString(16)).slice(-8);
39
+ }
40
+ normalizeGraphId(raw) {
41
+ if (!raw)
42
+ return raw;
43
+ let id = raw.split('?')[0].replace(/\\/g, '/');
44
+ id = id.replace(/^file:\/\//, '');
45
+ const pluginRoot = this.deps.getPluginRoot();
46
+ if (pluginRoot) {
47
+ const rootNorm = pluginRoot.replace(/\\/g, '/');
48
+ if (id.startsWith(rootNorm)) {
49
+ id = id.slice(rootNorm.length);
50
+ }
51
+ }
52
+ if (!id.startsWith('/'))
53
+ id = '/' + id;
54
+ // Collapse nested app root indicators when present (defensive)
55
+ const idx = id.indexOf(APP_VIRTUAL_WITH_SLASH);
56
+ if (idx !== -1)
57
+ id = id.slice(idx);
58
+ return id;
59
+ }
60
+ // Dependency-closed, topologically sorted list of modules for a set of
61
+ // changed ids. Only includes application modules we can serve (under the
62
+ // app virtual root and known framework/.ts/.js entries already in the graph).
63
+ computeTxnOrderForChanged(changedIds) {
64
+ const { strategy } = this.deps;
65
+ const includeAppModule = (id) => matchesRuntimeGraphModuleId(id, APP_VIRTUAL_WITH_SLASH, /\.(ts|js|mjs|tsx|jsx)$/i);
66
+ const includeExt = (id) => strategy.matchesFile(id) || includeAppModule(id);
67
+ const isApp = (id) => id.startsWith(APP_VIRTUAL_WITH_SLASH);
68
+ const roots = changedIds.map((id) => this.normalizeGraphId(id)).filter((id) => this.modules.has(id) && (isApp(id) || strategy.matchesFile(id)) && includeExt(id));
69
+ const toVisit = new Set();
70
+ const stack = [...roots];
71
+ while (stack.length) {
72
+ const id = stack.pop();
73
+ if (toVisit.has(id))
74
+ continue;
75
+ toVisit.add(id);
76
+ const m = this.modules.get(id);
77
+ if (m) {
78
+ for (const d of m.deps) {
79
+ if (!this.modules.has(d))
80
+ continue;
81
+ if ((isApp(d) || strategy.matchesFile(d)) && includeExt(d) && !toVisit.has(d)) {
82
+ stack.push(d);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ // Topological order: deps first (post-order DFS)
88
+ const ordered = [];
89
+ const temp = new Set();
90
+ const perm = new Set();
91
+ const visit = (id) => {
92
+ if (perm.has(id))
93
+ return;
94
+ if (temp.has(id)) {
95
+ perm.add(id);
96
+ return;
97
+ } // cycle: bail out
98
+ temp.add(id);
99
+ const m = this.modules.get(id);
100
+ if (m) {
101
+ for (const d of m.deps) {
102
+ if (toVisit.has(d))
103
+ visit(d);
104
+ }
105
+ }
106
+ temp.delete(id);
107
+ perm.add(id);
108
+ ordered.push(id);
109
+ };
110
+ for (const id of toVisit)
111
+ visit(id);
112
+ return ordered;
113
+ }
114
+ fullGraphPayload() {
115
+ return {
116
+ type: 'ns:hmr-full-graph',
117
+ version: this._version,
118
+ modules: Array.from(this.modules.values()).map((m) => ({
119
+ id: m.id,
120
+ deps: m.deps,
121
+ hash: m.hash,
122
+ })),
123
+ };
124
+ }
125
+ emitFullGraph(ws) {
126
+ try {
127
+ if (this.deps.verbose) {
128
+ try {
129
+ const payload = this.fullGraphPayload();
130
+ console.log('[hmr-ws][graph] emitFullGraph version', payload.version, 'modules=', payload.modules.length);
131
+ if (payload.modules.length) {
132
+ console.log('[hmr-ws][graph] sample module ids', payload.modules.slice(0, 5).map((m) => m.id));
133
+ }
134
+ }
135
+ catch { }
136
+ }
137
+ ws.send(JSON.stringify(this.fullGraphPayload()));
138
+ }
139
+ catch { }
140
+ }
141
+ emitDelta(changed, removed) {
142
+ const wss = this.deps.getWss();
143
+ if (!wss)
144
+ return;
145
+ // Record this version's txn batch order
146
+ try {
147
+ const changedIds = changed.map((m) => m.id);
148
+ if (changedIds.length) {
149
+ const ordered = this.computeTxnOrderForChanged(changedIds);
150
+ this.txnBatches.set(this._version, ordered);
151
+ // Keep only the last ~20 versions
152
+ if (this.txnBatches.size > 20) {
153
+ const drop = Array.from(this.txnBatches.keys())
154
+ .sort((a, b) => a - b)
155
+ .slice(0, this.txnBatches.size - 20);
156
+ for (const k of drop)
157
+ this.txnBatches.delete(k);
158
+ }
159
+ }
160
+ }
161
+ catch { }
162
+ const payload = {
163
+ type: 'ns:hmr-delta',
164
+ baseVersion: this._version - 1,
165
+ newVersion: this._version,
166
+ changed: changed.map((m) => ({ id: m.id, deps: m.deps, hash: m.hash })),
167
+ removed,
168
+ };
169
+ const json = JSON.stringify(payload);
170
+ wss.clients.forEach((c) => {
171
+ try {
172
+ c.send(json);
173
+ }
174
+ catch { }
175
+ });
176
+ }
177
+ upsert(rawId, code, deps, options) {
178
+ const id = this.normalizeGraphId(rawId);
179
+ const normDeps = deps
180
+ .map((d) => this.normalizeGraphId(d))
181
+ .filter(Boolean)
182
+ .slice()
183
+ .sort();
184
+ const hash = this.computeHash(code);
185
+ const existing = this.modules.get(id);
186
+ const classification = classifyGraphUpsert(existing, hash, normDeps);
187
+ if (classification === 'unchanged')
188
+ return existing;
189
+ // Version bumps are only meaningful for live edits — serve-time graph
190
+ // warm-ups and the initial bulk walk should leave the version stable.
191
+ const bumpVersion = shouldBumpGraphVersion(classification, options?.bumpVersion !== false);
192
+ if (bumpVersion) {
193
+ this._version++;
194
+ }
195
+ const gm = { id, deps: normDeps, hash };
196
+ this.modules.set(id, gm);
197
+ if (this.deps.verbose) {
198
+ console.log('[hmr-ws][graph] upsert', { id, deps: normDeps, hash, graphVersion: this._version, classification, bumpVersion });
199
+ console.log('[hmr-ws][graph] size', this.modules.size);
200
+ }
201
+ if (shouldBroadcastGraphUpsertDelta(classification, options?.emitDeltaOnInsert === true, options?.broadcastDelta !== false)) {
202
+ this.emitDelta([gm], []);
203
+ }
204
+ return gm;
205
+ }
206
+ remove(id) {
207
+ if (!this.modules.has(id))
208
+ return;
209
+ this.modules.delete(id);
210
+ this._version++;
211
+ this.emitDelta([], [id]);
212
+ }
213
+ }
214
+ //# sourceMappingURL=hmr-module-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr-module-graph.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/hmr-module-graph.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import { getVendorManifest, listVendorModules } from '../shared/vendor/registry.
24
24
  import { readFileSync, readdirSync, existsSync } from 'fs';
25
25
  import { resolve, join } from 'path';
26
26
  import { getProjectRootPath } from '../../helpers/project.js';
27
+ import { buildCoreUrl } from '../../helpers/ns-core-url.js';
27
28
  const OMIT_DEVICE_IMPORT_MAP_PACKAGES = new Set(['typescript', 'ts-node', 'esbuild', 'prettier', 'webpack', 'vite', '@nativescript/android', '@nativescript/ios', '@nativescript/visionos', '@nativescript/webpack', '@nativescript/types']);
28
29
  const OMIT_DEVICE_IMPORT_MAP_PREFIXES = ['@types/', '@babel/', 'babel-', '@rollup/', '@vitejs/', 'vite-plugin-', '@angular-devkit/', '@angular/build', '@analogjs/'];
29
30
  const PREFIX_ONLY_DEVICE_IMPORT_MAP_PACKAGES = new Set(['@nativescript/vite']);
@@ -65,22 +66,56 @@ export function generateImportMap(options) {
65
66
  if (manifest) {
66
67
  // Map vendor modules to ns-vendor:// — EXACT entries only.
67
68
  // No trailing-slash prefixes: subpaths must resolve via HTTP, not vendor.
69
+ //
70
+ // IMPORTANT: `@nativescript/core` and any `@nativescript/core/<sub>` are
71
+ // deliberately routed through the HTTP bridge (`${origin}/ns/core/...`),
72
+ // NEVER through `ns-vendor://`. Two reasons:
73
+ // 1. Single realm. The core bridge is the canonical source for every
74
+ // `Application`, `View`, `Frame`, etc. instance — having a second
75
+ // copy in the vendor registry produces the classic
76
+ // `vendorApplicationSame: false` realm split (different
77
+ // `globalThis.Application` than the one the iOS/Android hooks
78
+ // patched) and HMR placeholder finalize stalls.
79
+ // 2. Chicken-and-egg. esbuild's vendor build externalizes
80
+ // `@nativescript/core(/...)` (see `nsCoreExternalPlugin` in
81
+ // `manifest.ts`), so the externalized `import` statements stay
82
+ // in `vendor.mjs` itself. If those externals resolve through
83
+ // `ns-vendor://`, the synthetic wrapper module's evaluation
84
+ // runs DURING `vendor.mjs` linking — but `vendor-bootstrap`
85
+ // hasn't populated `__nsVendorRegistry` yet (it runs LATER,
86
+ // from the clientUrl module body), so every wrapper throws
87
+ // `Vendor module not found in registry: @nativescript/core/...`.
88
+ // Routing core through the HTTP bridge sidesteps the registry
89
+ // lookup entirely; the dev server normalizes platform suffixes
90
+ // (see `normalizeCoreSub` in `ns-core-url.ts`) so
91
+ // `@nativescript/core/ui/frame/activity.android` → bridge URL
92
+ // `/ns/core/ui/frame/activity.android` → served from the
93
+ // platform-specific `.android.ts` source.
68
94
  const vendorModules = listVendorModules();
69
95
  for (const specifier of vendorModules) {
96
+ if (specifier === '@nativescript/core' || specifier.startsWith('@nativescript/core/')) {
97
+ continue;
98
+ }
70
99
  imports[specifier] = `ns-vendor://${specifier}`;
71
100
  }
72
101
  // Map aliases from the manifest (e.g., "solid-js/web" → ns-vendor://solid-js)
73
102
  if (manifest.aliases) {
74
103
  for (const [alias, canonical] of Object.entries(manifest.aliases)) {
104
+ // Same single-realm + chicken-and-egg reasons as above.
105
+ if (alias === '@nativescript/core' || alias.startsWith('@nativescript/core/')) {
106
+ continue;
107
+ }
75
108
  if (!imports[alias] && imports[canonical]) {
76
109
  imports[alias] = imports[canonical];
77
110
  }
78
111
  }
79
112
  }
80
113
  }
81
- // @nativescript/core → bridge endpoint
82
- imports['@nativescript/core'] = `${origin}/ns/core`;
83
- imports['@nativescript/core/'] = `${origin}/ns/core/`;
114
+ // @nativescript/core → bridge endpoint (canonical URL generator).
115
+ // The trailing-slash entry intentionally uses the same generator so
116
+ // subpath imports resolve via `${origin}/ns/core/<sub>`.
117
+ imports['@nativescript/core'] = buildCoreUrl(origin);
118
+ imports['@nativescript/core/'] = `${buildCoreUrl(origin)}/`;
84
119
  // Add framework-specific entries
85
120
  addFrameworkEntries(imports, origin, flavor);
86
121
  // Scan installed packages and add HTTP URL entries for ALL packages
@@ -128,7 +163,7 @@ export function buildRuntimeConfig(options) {
128
163
  volatilePatterns,
129
164
  };
130
165
  }
131
- function addFrameworkEntries(imports, _origin, flavor) {
166
+ function addFrameworkEntries(imports, origin, flavor) {
132
167
  switch (flavor) {
133
168
  case 'vue':
134
169
  // nativescript-vue should resolve from vendor if available
@@ -140,10 +175,27 @@ function addFrameworkEntries(imports, _origin, flavor) {
140
175
  }
141
176
  break;
142
177
  case 'solid':
143
- // Solid runtime root should resolve from vendor
144
- if (!imports['solid-js']) {
145
- imports['solid-js'] = `ns-vendor://solid-js`;
146
- }
178
+ // Solid runtime root MUST resolve to the same HTTP URL that
179
+ // Vite's solid-js alias produces for user code and the
180
+ // HTTP-served `@solid-refresh` middleware. The vendor bundle
181
+ // no longer ships `solid-js` for the Solid flavor — see
182
+ // `manifest.ts`'s `nsSolidJsExternalPlugin` + the matching
183
+ // `addCandidate` skip — so all three import sites (vendor's
184
+ // externalized `import 'solid-js'`, user code's
185
+ // alias-rewritten `/ns/m/node_modules/solid-js/...`, and
186
+ // `@solid-refresh`'s own rewritten import) converge on the
187
+ // dev.js URL below. V8's ESM loader dedupes by URL, so the
188
+ // app sees one `Owner` module-local, one `$DEVCOMP`/`$PROXY`
189
+ // symbol identity, and one reactive graph end-to-end. Without
190
+ // this unification, `solid-refresh`'s `setComp` ticks a
191
+ // signal whose subscribers live in a different solid-js
192
+ // realm than the page tree's render effect → HMR appears to
193
+ // fire (toast shows) but the screen never re-renders, and
194
+ // boot logs the `computations created outside a createRoot`
195
+ // warning because solid-refresh's HMRComp memo is created in
196
+ // the HTTP-side solid-js whose `Owner` was never set by the
197
+ // vendor-side `render()` createRoot.
198
+ imports['solid-js'] = `${origin}/ns/m/node_modules/solid-js/dist/dev.js`;
147
199
  // No trailing-slash prefix — subpaths like solid-js/store,
148
200
  // solid-js/jsx-runtime resolve via HTTP from discoverInstalledPackages()
149
201
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"import-map.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/import-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-map.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/import-map.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export function getHMRPlugins(opts) {
7
7
  plugins.push(hmrWebSocketVue(opts));
8
8
  break;
9
9
  case 'react':
10
+ // React has no server-side HMR WebSocket plugin yet; the client plugin suffices.
10
11
  break;
11
12
  case 'angular':
12
13
  plugins.push(hmrWebSocketAngular(opts));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEjH,MAAM,UAAU,aAAa,CAAC,IAAmE;IAChG,MAAM,OAAO,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,KAAK;YACT,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM;QACP,KAAK,OAAO;YACX,MAAM;QACP,KAAK,SAAS;YACb,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM;QACP,KAAK,YAAY;YAChB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM;QACP,KAAK,OAAO;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM;IACR,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEjH,MAAM,UAAU,aAAa,CAAC,IAAmE;IAChG,MAAM,OAAO,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,KAAK;YACT,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM;QACP,KAAK,OAAO;YACX,iFAAiF;YACjF,MAAM;QACP,KAAK,SAAS;YACb,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM;QACP,KAAK,YAAY;YAChB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM;QACP,KAAK,OAAO;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM;IACR,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * CJS/ESM interop shape.
3
+ *
4
+ * PROBLEM
5
+ * -------
6
+ * ESM Module Namespace Objects (ECMA §9.4.6) have [[Prototype]] = null.
7
+ * They do NOT inherit Object.prototype — no `hasOwnProperty`, no `toString`,
8
+ * no `isPrototypeOf`. CJS consumers (most notably zone.js's `patchMethod`)
9
+ * assume their require() result is a plain object that has those methods:
10
+ *
11
+ * let proto = target;
12
+ * while (proto && !proto.hasOwnProperty(name)) // ← crashes on null-proto
13
+ * proto = Object.getPrototypeOf(proto);
14
+ *
15
+ * `@nativescript/core/index.js` re-exports several sub-modules as namespaces:
16
+ *
17
+ * export * as Utils from './utils';
18
+ * export * as Http from './http';
19
+ * export * as Connectivity from './connectivity';
20
+ * export * as ApplicationSettings from './application-settings';
21
+ *
22
+ * When bundle.mjs does `import { Utils } from '@nativescript/core'`, `Utils`
23
+ * binds to that null-proto sub-namespace. zone.js then does
24
+ * `patchMethod(Utils, 'mainThreadify', …)` and crashes.
25
+ *
26
+ * WHY globalThis.require shims ALONE DON'T FIX THIS
27
+ * -------------------------------------------------
28
+ * ESM imports never pass through `globalThis.require`. They go through the
29
+ * host's ESM linker (V8 on iOS). Shimming `require` only intercepts the CJS
30
+ * path (vendor packages that use `require('@nativescript/core')`); direct
31
+ * ESM imports of `Utils` still see the raw null-proto namespace.
32
+ *
33
+ * THE FIX
34
+ * -------
35
+ * Rewrite `export * as X from 'Y'` at the /ns/core bridge response level:
36
+ *
37
+ * // before
38
+ * export * as Utils from './utils';
39
+ *
40
+ * // after
41
+ * import * as __ns_re_Utils__ from './utils';
42
+ * export const Utils = __NS_CJS_SHAPE__(__ns_re_Utils__);
43
+ *
44
+ * Now `Utils` is a plain Object (inherits Object.prototype). Zone.js's
45
+ * `patchMethod(Utils, ...)` succeeds. The shape function is recursive —
46
+ * nested namespaces get the same treatment — and identity-preserving
47
+ * (WeakMap-cached) so mutations stick across lookups.
48
+ *
49
+ * WHY THE SHAPE INSTALL MUST RUN IN MODULE BODY (NOT FOOTER)
50
+ * ---------------------------------------------------------
51
+ * `export const Utils = __NS_CJS_SHAPE__(__ns_re_Utils__)` is body code. It
52
+ * executes during module evaluation, BEFORE the registration footer. So the
53
+ * shape function must be installed as a body-level statement that runs
54
+ * before the rewritten body — we can't rely on the footer's install.
55
+ *
56
+ * Each served /ns/core module independently installs the shape function via
57
+ * an idempotent `|| (globalThis.__NS_CJS_SHAPE__ = ...)` assignment. The
58
+ * first module to evaluate wins; subsequent evaluations are no-ops. This
59
+ * also handles dependency-before-importer order (depth-first ESM eval):
60
+ * `/ns/core/utils` evaluates before `/ns/core` main, so the shape helper
61
+ * is in place whenever any body needs it.
62
+ */
63
+ /**
64
+ * Body-code statements that idempotently install `globalThis.__NS_CJS_SHAPE__`
65
+ * and `globalThis.__NS_CJS_SHAPE_CACHE__`. Must execute BEFORE any transformed
66
+ * `export const X = __NS_CJS_SHAPE__(...)` statement in the same module.
67
+ *
68
+ * Properties:
69
+ * - Recursive: traverses nested namespaces so `Utils.Something` is also
70
+ * a plain Object (if that sub-namespace is itself null-proto).
71
+ * - Identity-preserving: WeakMap keyed on the underlying ESM namespace.
72
+ * zone.js mutates its patch target; a fresh copy per call would lose
73
+ * mutations. Every lookup of the same namespace returns the same
74
+ * shaped object.
75
+ * - Cycle-safe: records the output in the cache BEFORE recursing into
76
+ * children. Handles `core ↔ platform` style cycles.
77
+ * - TDZ-safe: wraps each property read in try/catch. Some exports
78
+ * (Angular zone.js with early-access patterns) are still in their
79
+ * temporal dead zone when the namespace is first snapshotted. A thrown
80
+ * property read is skipped rather than failing the whole shape.
81
+ */
82
+ export declare function buildShapeInstallHeader(): string;
83
+ /**
84
+ * Rewrite namespace re-exports from CJS-incompatible ESM namespace form into
85
+ * shape-aware const exports. Handles the two forms Vite/esbuild may emit:
86
+ *
87
+ * (1) Original ES2020 syntax preserved unchanged:
88
+ * export * as X from 'Y';
89
+ *
90
+ * (2) Transpiled form esbuild emits when targeting older ES:
91
+ * import * as _foo from 'Y';
92
+ * export { _foo as X };
93
+ *
94
+ * Both become:
95
+ * import * as __ns_re_X__ from 'Y';
96
+ * export const X = __NS_CJS_SHAPE__(__ns_re_X__);
97
+ *
98
+ * Notes on the transform:
99
+ * - The internal binding uses a derived name (`__ns_re_<X>__`) so
100
+ * collisions with user bindings are extremely unlikely. Core doesn't
101
+ * declare identifiers matching that shape.
102
+ * - `__NS_CJS_SHAPE__` is read from globalThis with a defensive fallback
103
+ * (identity function) in case installation failed or runs in an
104
+ * environment where it hasn't been initialized yet. This makes the
105
+ * transform safe to apply to modules that don't always go through the
106
+ * /ns/core handler's headers.
107
+ * - We do NOT shape `export *` (star re-exports without alias). Those
108
+ * spread individual named exports — they don't create a nested
109
+ * namespace and aren't affected by the null-proto issue.
110
+ * - We do NOT shape `export { x } from 'y'` forms. Those copy individual
111
+ * named exports directly; the consumer never sees the namespace.
112
+ *
113
+ * The regex is intentionally precise. It matches only the `export * as X from
114
+ * 'Y'` syntactic form (and its transpiled equivalent) — no accidental matches
115
+ * in string literals or comments because those can't start a top-level
116
+ * statement with `export`.
117
+ */
118
+ export declare function rewriteNamespaceReExportsForShape(code: string): string;
119
+ /**
120
+ * Convenience: returns true if the given code appears to contain at least one
121
+ * namespace re-export that would benefit from the shape transform. Used to
122
+ * skip the regex replace for modules that don't need it (keeps the response
123
+ * identical for most submodules, which just have plain `export * from` or
124
+ * named exports).
125
+ */
126
+ export declare function hasNamespaceReExport(code: string): boolean;
127
+ /**
128
+ * Default-export bridge footer.
129
+ *
130
+ * BACKGROUND
131
+ * ----------
132
+ * Upstream consumer rewrites in the /ns/m handler convert
133
+ * `import { X } from '@nativescript/core'` into
134
+ * `import __ns_core_ns from '/ns/core'; const { X } = __ns_core_ns;`
135
+ * — a DEFAULT import followed by destructuring. The inline comment on that
136
+ * rewrite says explicitly: "This makes `import { Frame } from
137
+ * '@nativescript/core'` work even if the bridge provides only a default
138
+ * export."
139
+ *
140
+ * The original `@nativescript/core/index.js` has no `export default` — all
141
+ * named exports. Without this footer, consumers of the transformed import
142
+ * fail at ESM link time:
143
+ *
144
+ * SyntaxError: The requested module '/ns/core/<ver>' does not
145
+ * provide an export named 'default'
146
+ *
147
+ * THE FIX
148
+ * -------
149
+ * Emit `export default __ns_core_self_ns__;` at the end of the served
150
+ * module body. `__ns_core_self_ns__` is the namespace import the server
151
+ * already emits at the top of every /ns/core response for self-
152
+ * registration purposes. ESM spec guarantees a module re-entering itself
153
+ * during evaluation returns the in-progress namespace — so no extra
154
+ * evaluation occurs, and the default binding receives an object whose
155
+ * properties are every named export of the same module.
156
+ *
157
+ * CONSUMER MATRIX AFTER THIS FIX
158
+ * ------------------------------
159
+ * • `import X from '/ns/core'` (default) → X = self namespace
160
+ * • `import * as X from '/ns/core'` → X = self namespace + X.default = self
161
+ * • `import { X } from '/ns/core'` (named) → individual named binding (untouched)
162
+ * • `const { X } = <default-import>` → destructure from self namespace
163
+ * • `require('@nativescript/core')` (CJS) → shaped self via registry
164
+ *
165
+ * SKIP CONDITIONS
166
+ * ---------------
167
+ * Returns empty string when the source already declares a default export
168
+ * (some deep subpaths do — e.g. a file that does `export default MyClass`
169
+ * would SyntaxError on a duplicate). The consumer rewrite is also gated
170
+ * on `isDeepCoreSubpath`, so those paths don't normally hit the default-
171
+ * import pattern anyway.
172
+ *
173
+ * WHY THE DEFAULT ISN'T SHAPED
174
+ * ----------------------------
175
+ * The default is the raw null-proto MNO. This is intentional:
176
+ *
177
+ * 1. All current default-import consumers either destructure or do
178
+ * property access. Neither requires Object.prototype in the chain.
179
+ * 2. Shaping the default inside the module body would require calling
180
+ * __NS_CJS_SHAPE__ on a namespace whose own `default` slot is still
181
+ * being initialized — temporal dead zone hazard.
182
+ * 3. CJS consumers that need `.hasOwnProperty` go through the registry
183
+ * (shaped at registration), not through the default import.
184
+ *
185
+ * If a future consumer surfaces that calls `.hasOwnProperty` on the
186
+ * default, we can revisit. The current rule-of-least-surprise is:
187
+ * shape at the CJS boundary, not at the ESM boundary.
188
+ */
189
+ export declare function buildDefaultExportFooter(rewrittenCode: string): string;
190
+ /**
191
+ * Detects whether a module body already declares a default export in any of
192
+ * the syntactic forms the ESM spec allows. Mirrors the logic in
193
+ * `websocket-core-bridge.ts:hasModuleDefaultExport` — kept here so the
194
+ * default-export bridge helper is self-contained and unit-testable.
195
+ *
196
+ * Handles:
197
+ * - `export default <expr>;`
198
+ * - `export default function|class ...`
199
+ * - `export { x as default };`
200
+ * - `export { default };` (implicit `default as default`)
201
+ * - `export { default as default };`
202
+ * - `export { foo, default };`
203
+ */
204
+ export declare function hasExistingDefaultExport(code: string): boolean;