@nativescript/vite 8.0.0-alpha.1 → 8.0.0-alpha.11

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 (220) hide show
  1. package/configuration/angular.d.ts +1 -1
  2. package/configuration/angular.js +486 -140
  3. package/configuration/angular.js.map +1 -1
  4. package/configuration/base.js +159 -29
  5. package/configuration/base.js.map +1 -1
  6. package/configuration/javascript.js +3 -3
  7. package/configuration/javascript.js.map +1 -1
  8. package/configuration/solid.js +27 -0
  9. package/configuration/solid.js.map +1 -1
  10. package/configuration/typescript.js +4 -4
  11. package/configuration/typescript.js.map +1 -1
  12. package/helpers/angular/angular-linker.js +38 -42
  13. package/helpers/angular/angular-linker.js.map +1 -1
  14. package/helpers/angular/inject-component-hmr-registration.d.ts +112 -0
  15. package/helpers/angular/inject-component-hmr-registration.js +359 -0
  16. package/helpers/angular/inject-component-hmr-registration.js.map +1 -0
  17. package/helpers/angular/inline-decorator-component-templates.d.ts +3 -0
  18. package/helpers/angular/inline-decorator-component-templates.js +400 -0
  19. package/helpers/angular/inline-decorator-component-templates.js.map +1 -0
  20. package/helpers/angular/shared-linker.d.ts +7 -0
  21. package/helpers/angular/shared-linker.js +37 -1
  22. package/helpers/angular/shared-linker.js.map +1 -1
  23. package/helpers/angular/synthesize-decorator-ctor-parameters.d.ts +1 -0
  24. package/helpers/angular/synthesize-decorator-ctor-parameters.js +256 -0
  25. package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +1 -0
  26. package/helpers/angular/synthesize-injectable-factories.d.ts +3 -0
  27. package/helpers/angular/synthesize-injectable-factories.js +414 -0
  28. package/helpers/angular/synthesize-injectable-factories.js.map +1 -0
  29. package/helpers/angular/util.d.ts +1 -0
  30. package/helpers/angular/util.js +88 -0
  31. package/helpers/angular/util.js.map +1 -1
  32. package/helpers/commonjs-plugins.d.ts +5 -2
  33. package/helpers/commonjs-plugins.js +126 -0
  34. package/helpers/commonjs-plugins.js.map +1 -1
  35. package/helpers/config-as-json.js +10 -0
  36. package/helpers/config-as-json.js.map +1 -1
  37. package/helpers/esbuild-platform-resolver.js +5 -5
  38. package/helpers/esbuild-platform-resolver.js.map +1 -1
  39. package/helpers/external-configs.d.ts +9 -1
  40. package/helpers/external-configs.js +31 -6
  41. package/helpers/external-configs.js.map +1 -1
  42. package/helpers/global-defines.d.ts +51 -0
  43. package/helpers/global-defines.js +77 -0
  44. package/helpers/global-defines.js.map +1 -1
  45. package/helpers/import-meta-path.d.ts +4 -0
  46. package/helpers/import-meta-path.js +5 -0
  47. package/helpers/import-meta-path.js.map +1 -0
  48. package/helpers/import-specifier.d.ts +1 -0
  49. package/helpers/import-specifier.js +18 -0
  50. package/helpers/import-specifier.js.map +1 -0
  51. package/helpers/logging.d.ts +1 -0
  52. package/helpers/logging.js +63 -3
  53. package/helpers/logging.js.map +1 -1
  54. package/helpers/main-entry.d.ts +5 -2
  55. package/helpers/main-entry.js +375 -116
  56. package/helpers/main-entry.js.map +1 -1
  57. package/helpers/nativeclass-transform.js +8 -127
  58. package/helpers/nativeclass-transform.js.map +1 -1
  59. package/helpers/nativeclass-transformer-plugin.d.ts +19 -1
  60. package/helpers/nativeclass-transformer-plugin.js +318 -36
  61. package/helpers/nativeclass-transformer-plugin.js.map +1 -1
  62. package/helpers/ns-core-url.d.ts +83 -0
  63. package/helpers/ns-core-url.js +167 -0
  64. package/helpers/ns-core-url.js.map +1 -0
  65. package/helpers/prelink-angular.js +1 -4
  66. package/helpers/prelink-angular.js.map +1 -1
  67. package/helpers/project.d.ts +35 -0
  68. package/helpers/project.js +120 -2
  69. package/helpers/project.js.map +1 -1
  70. package/helpers/ts-config-paths.js +50 -2
  71. package/helpers/ts-config-paths.js.map +1 -1
  72. package/helpers/workers.d.ts +20 -19
  73. package/helpers/workers.js +620 -3
  74. package/helpers/workers.js.map +1 -1
  75. package/hmr/client/css-handler.js +60 -19
  76. package/hmr/client/css-handler.js.map +1 -1
  77. package/hmr/client/hmr-pending-overlay.d.ts +27 -0
  78. package/hmr/client/hmr-pending-overlay.js +50 -0
  79. package/hmr/client/hmr-pending-overlay.js.map +1 -0
  80. package/hmr/client/index.js +767 -24
  81. package/hmr/client/index.js.map +1 -1
  82. package/hmr/client/utils.d.ts +5 -0
  83. package/hmr/client/utils.js +283 -12
  84. package/hmr/client/utils.js.map +1 -1
  85. package/hmr/entry-runtime.d.ts +10 -0
  86. package/hmr/entry-runtime.js +330 -42
  87. package/hmr/entry-runtime.js.map +1 -1
  88. package/hmr/frameworks/angular/client/index.d.ts +3 -1
  89. package/hmr/frameworks/angular/client/index.js +821 -25
  90. package/hmr/frameworks/angular/client/index.js.map +1 -1
  91. package/hmr/frameworks/angular/server/linker.js +37 -6
  92. package/hmr/frameworks/angular/server/linker.js.map +1 -1
  93. package/hmr/frameworks/angular/server/strategy.js +30 -6
  94. package/hmr/frameworks/angular/server/strategy.js.map +1 -1
  95. package/hmr/frameworks/typescript/server/strategy.js +8 -2
  96. package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
  97. package/hmr/frameworks/vue/client/index.js +18 -42
  98. package/hmr/frameworks/vue/client/index.js.map +1 -1
  99. package/hmr/helpers/ast-normalizer.js +22 -10
  100. package/hmr/helpers/ast-normalizer.js.map +1 -1
  101. package/hmr/helpers/cjs-named-exports.d.ts +23 -0
  102. package/hmr/helpers/cjs-named-exports.js +152 -0
  103. package/hmr/helpers/cjs-named-exports.js.map +1 -0
  104. package/hmr/server/constants.d.ts +1 -0
  105. package/hmr/server/constants.js +14 -3
  106. package/hmr/server/constants.js.map +1 -1
  107. package/hmr/server/core-sanitize.d.ts +49 -2
  108. package/hmr/server/core-sanitize.js +267 -24
  109. package/hmr/server/core-sanitize.js.map +1 -1
  110. package/hmr/server/import-map.d.ts +65 -0
  111. package/hmr/server/import-map.js +222 -0
  112. package/hmr/server/import-map.js.map +1 -0
  113. package/hmr/server/index.d.ts +2 -1
  114. package/hmr/server/index.js.map +1 -1
  115. package/hmr/server/ns-core-cjs-shape.d.ts +204 -0
  116. package/hmr/server/ns-core-cjs-shape.js +271 -0
  117. package/hmr/server/ns-core-cjs-shape.js.map +1 -0
  118. package/hmr/server/perf-instrumentation.d.ts +114 -0
  119. package/hmr/server/perf-instrumentation.js +195 -0
  120. package/hmr/server/perf-instrumentation.js.map +1 -0
  121. package/hmr/server/runtime-graph-filter.d.ts +5 -0
  122. package/hmr/server/runtime-graph-filter.js +21 -0
  123. package/hmr/server/runtime-graph-filter.js.map +1 -0
  124. package/hmr/server/shared-transform-request.d.ts +12 -0
  125. package/hmr/server/shared-transform-request.js +144 -0
  126. package/hmr/server/shared-transform-request.js.map +1 -0
  127. package/hmr/server/vite-plugin.d.ts +21 -1
  128. package/hmr/server/vite-plugin.js +461 -22
  129. package/hmr/server/vite-plugin.js.map +1 -1
  130. package/hmr/server/websocket-angular-entry.d.ts +2 -0
  131. package/hmr/server/websocket-angular-entry.js +68 -0
  132. package/hmr/server/websocket-angular-entry.js.map +1 -0
  133. package/hmr/server/websocket-angular-hot-update.d.ts +78 -0
  134. package/hmr/server/websocket-angular-hot-update.js +413 -0
  135. package/hmr/server/websocket-angular-hot-update.js.map +1 -0
  136. package/hmr/server/websocket-core-bridge.d.ts +21 -0
  137. package/hmr/server/websocket-core-bridge.js +357 -0
  138. package/hmr/server/websocket-core-bridge.js.map +1 -0
  139. package/hmr/server/websocket-graph-upsert.d.ts +21 -0
  140. package/hmr/server/websocket-graph-upsert.js +33 -0
  141. package/hmr/server/websocket-graph-upsert.js.map +1 -0
  142. package/hmr/server/websocket-hmr-pending.d.ts +43 -0
  143. package/hmr/server/websocket-hmr-pending.js +55 -0
  144. package/hmr/server/websocket-hmr-pending.js.map +1 -0
  145. package/hmr/server/websocket-module-bindings.d.ts +6 -0
  146. package/hmr/server/websocket-module-bindings.js +471 -0
  147. package/hmr/server/websocket-module-bindings.js.map +1 -0
  148. package/hmr/server/websocket-module-specifiers.d.ts +101 -0
  149. package/hmr/server/websocket-module-specifiers.js +820 -0
  150. package/hmr/server/websocket-module-specifiers.js.map +1 -0
  151. package/hmr/server/websocket-ns-m-finalize.d.ts +22 -0
  152. package/hmr/server/websocket-ns-m-finalize.js +88 -0
  153. package/hmr/server/websocket-ns-m-finalize.js.map +1 -0
  154. package/hmr/server/websocket-ns-m-paths.d.ts +3 -0
  155. package/hmr/server/websocket-ns-m-paths.js +92 -0
  156. package/hmr/server/websocket-ns-m-paths.js.map +1 -0
  157. package/hmr/server/websocket-ns-m-request.d.ts +45 -0
  158. package/hmr/server/websocket-ns-m-request.js +196 -0
  159. package/hmr/server/websocket-ns-m-request.js.map +1 -0
  160. package/hmr/server/websocket-runtime-compat.d.ts +19 -0
  161. package/hmr/server/websocket-runtime-compat.js +287 -0
  162. package/hmr/server/websocket-runtime-compat.js.map +1 -0
  163. package/hmr/server/websocket-served-module-helpers.d.ts +36 -0
  164. package/hmr/server/websocket-served-module-helpers.js +631 -0
  165. package/hmr/server/websocket-served-module-helpers.js.map +1 -0
  166. package/hmr/server/websocket-txn.d.ts +6 -0
  167. package/hmr/server/websocket-txn.js +45 -0
  168. package/hmr/server/websocket-txn.js.map +1 -0
  169. package/hmr/server/websocket-vendor-unifier.d.ts +10 -0
  170. package/hmr/server/websocket-vendor-unifier.js +51 -0
  171. package/hmr/server/websocket-vendor-unifier.js.map +1 -0
  172. package/hmr/server/websocket-vue-sfc.d.ts +27 -0
  173. package/hmr/server/websocket-vue-sfc.js +1069 -0
  174. package/hmr/server/websocket-vue-sfc.js.map +1 -0
  175. package/hmr/server/websocket.d.ts +26 -3
  176. package/hmr/server/websocket.js +2492 -798
  177. package/hmr/server/websocket.js.map +1 -1
  178. package/hmr/shared/package-classifier.d.ts +9 -0
  179. package/hmr/shared/package-classifier.js +58 -0
  180. package/hmr/shared/package-classifier.js.map +1 -0
  181. package/hmr/shared/runtime/boot-timeline.d.ts +17 -0
  182. package/hmr/shared/runtime/boot-timeline.js +51 -0
  183. package/hmr/shared/runtime/boot-timeline.js.map +1 -0
  184. package/hmr/shared/runtime/browser-runtime-contract.d.ts +64 -0
  185. package/hmr/shared/runtime/browser-runtime-contract.js +54 -0
  186. package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -0
  187. package/hmr/shared/runtime/dev-overlay.d.ts +85 -0
  188. package/hmr/shared/runtime/dev-overlay.js +1236 -0
  189. package/hmr/shared/runtime/dev-overlay.js.map +1 -0
  190. package/hmr/shared/runtime/http-only-boot.d.ts +1 -0
  191. package/hmr/shared/runtime/http-only-boot.js +53 -6
  192. package/hmr/shared/runtime/http-only-boot.js.map +1 -1
  193. package/hmr/shared/runtime/module-provenance.d.ts +1 -0
  194. package/hmr/shared/runtime/module-provenance.js +63 -0
  195. package/hmr/shared/runtime/module-provenance.js.map +1 -0
  196. package/hmr/shared/runtime/platform-polyfills.d.ts +26 -0
  197. package/hmr/shared/runtime/platform-polyfills.js +122 -0
  198. package/hmr/shared/runtime/platform-polyfills.js.map +1 -0
  199. package/hmr/shared/runtime/root-placeholder.d.ts +1 -0
  200. package/hmr/shared/runtime/root-placeholder.js +552 -82
  201. package/hmr/shared/runtime/root-placeholder.js.map +1 -1
  202. package/hmr/shared/runtime/session-bootstrap.d.ts +1 -0
  203. package/hmr/shared/runtime/session-bootstrap.js +195 -0
  204. package/hmr/shared/runtime/session-bootstrap.js.map +1 -0
  205. package/hmr/shared/runtime/vendor-bootstrap.js +52 -15
  206. package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
  207. package/hmr/shared/vendor/manifest.d.ts +37 -0
  208. package/hmr/shared/vendor/manifest.js +677 -57
  209. package/hmr/shared/vendor/manifest.js.map +1 -1
  210. package/hmr/shared/vendor/registry.js +104 -7
  211. package/hmr/shared/vendor/registry.js.map +1 -1
  212. package/index.d.ts +1 -0
  213. package/index.js +5 -0
  214. package/index.js.map +1 -1
  215. package/package.json +14 -2
  216. package/runtime/core-aliases-early.js +94 -67
  217. package/runtime/core-aliases-early.js.map +1 -1
  218. package/shims/solid-jsx-runtime.d.ts +7 -0
  219. package/shims/solid-jsx-runtime.js +17 -0
  220. package/shims/solid-jsx-runtime.js.map +1 -0
@@ -0,0 +1,9 @@
1
+ export interface PackageRuntimeInfo {
2
+ rootPackageName: string;
3
+ hasPackageJson: boolean;
4
+ hasExports: boolean;
5
+ mainEntries: Set<string>;
6
+ hasNativeScriptMetadata: boolean;
7
+ }
8
+ export declare function extractRootPackageName(spec: string): string;
9
+ export declare function getPackageRuntimeInfo(spec: string, projectRoot: string): PackageRuntimeInfo;
@@ -0,0 +1,58 @@
1
+ import { readFileSync } from 'fs';
2
+ import path from 'path';
3
+ import { createRequire } from 'node:module';
4
+ const packageRuntimeInfoCache = new Map();
5
+ export function extractRootPackageName(spec) {
6
+ if (!spec)
7
+ return '';
8
+ if (spec.startsWith('@')) {
9
+ const parts = spec.split('/');
10
+ return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : spec;
11
+ }
12
+ return spec.split('/')[0];
13
+ }
14
+ export function getPackageRuntimeInfo(spec, projectRoot) {
15
+ const rootPackageName = extractRootPackageName(String(spec || ''));
16
+ if (!rootPackageName) {
17
+ return {
18
+ rootPackageName: '',
19
+ hasPackageJson: false,
20
+ hasExports: false,
21
+ mainEntries: new Set(),
22
+ hasNativeScriptMetadata: false,
23
+ };
24
+ }
25
+ const resolvedProjectRoot = path.resolve(projectRoot || process.cwd());
26
+ const cacheKey = `${resolvedProjectRoot}::${rootPackageName}`;
27
+ const cached = packageRuntimeInfoCache.get(cacheKey);
28
+ if (cached) {
29
+ return cached;
30
+ }
31
+ const info = {
32
+ rootPackageName,
33
+ hasPackageJson: false,
34
+ hasExports: false,
35
+ mainEntries: new Set(),
36
+ hasNativeScriptMetadata: false,
37
+ };
38
+ try {
39
+ const projectRequire = createRequire(path.join(resolvedProjectRoot, 'package.json'));
40
+ const packageJsonPath = projectRequire.resolve(`${rootPackageName}/package.json`);
41
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
42
+ info.hasPackageJson = true;
43
+ info.hasExports = !!pkg.exports && typeof pkg.exports === 'object';
44
+ for (const field of ['module', 'main']) {
45
+ const value = pkg[field];
46
+ if (value && typeof value === 'string') {
47
+ info.mainEntries.add(value.replace(/^\.\//, ''));
48
+ }
49
+ }
50
+ info.hasNativeScriptMetadata = (typeof pkg.nativescript === 'object' && pkg.nativescript !== null) || typeof pkg.peerDependencies?.['@nativescript/core'] === 'string' || typeof pkg.dependencies?.['@nativescript/core'] === 'string';
51
+ }
52
+ catch {
53
+ // Package metadata unavailable — leave defaults and let callers fall back to heuristics.
54
+ }
55
+ packageRuntimeInfoCache.set(cacheKey, info);
56
+ return info;
57
+ }
58
+ //# sourceMappingURL=package-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-classifier.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/shared/package-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type BootTraceSegment = {
2
+ ok?: boolean;
3
+ ms?: number;
4
+ meta?: Record<string, unknown>;
5
+ };
6
+ export type BootTrace = {
7
+ t0: number;
8
+ t1?: number;
9
+ session?: BootTraceSegment;
10
+ importMap?: BootTraceSegment;
11
+ native?: BootTraceSegment;
12
+ error?: {
13
+ message: string;
14
+ };
15
+ };
16
+ export declare function formatBootTimeline(trace: BootTrace): string;
17
+ export declare function publishBootTrace(trace: BootTrace): void;
@@ -0,0 +1,51 @@
1
+ // Boot timeline instrumentation for the NativeScript dev session.
2
+ //
3
+ // `session-bootstrap.ts` is the real boot path on modern runtimes with
4
+ // `__nsStartDevSession`. We record how long each segment takes and turn
5
+ // the result into a single-line, human-readable log that is always on
6
+ // (not behind the verbose flag) so anyone chasing regressions can see
7
+ // the shape of a cold boot without having to flip any switches.
8
+ //
9
+ // The trace is also mirrored onto `globalThis.__NS_BOOT_TRACE__` so a
10
+ // developer can `console.log(globalThis.__NS_BOOT_TRACE__)` from the
11
+ // device or pick it up via `js:evaluate` in test harnesses.
12
+ // Pure formatter so we can unit-test the exact string shape without
13
+ // touching `console.info` or `Date.now()`.
14
+ //
15
+ // Format:
16
+ // [ns-boot] ok total=1234ms session=45ms importMap=67ms native=1100ms
17
+ // [ns-boot] FAILED total=230ms session=45ms ...: <message>
18
+ //
19
+ // Segment entries are only included when a numeric `ms` was recorded —
20
+ // this keeps the log compact when a particular phase was skipped (e.g.
21
+ // `__NS_IMPORT_MAP_CONFIGURED__` dedup) or never reached (early error).
22
+ export function formatBootTimeline(trace) {
23
+ const status = trace.error ? 'FAILED' : 'ok';
24
+ const parts = [];
25
+ const push = (label, seg) => {
26
+ if (seg && typeof seg.ms === 'number' && Number.isFinite(seg.ms)) {
27
+ parts.push(`${label}=${Math.max(0, Math.round(seg.ms))}ms`);
28
+ }
29
+ };
30
+ const total = typeof trace.t0 === 'number' && typeof trace.t1 === 'number' ? trace.t1 - trace.t0 : undefined;
31
+ if (typeof total === 'number' && Number.isFinite(total)) {
32
+ parts.push(`total=${Math.max(0, Math.round(total))}ms`);
33
+ }
34
+ push('session', trace.session);
35
+ push('importMap', trace.importMap);
36
+ push('native', trace.native);
37
+ const suffix = trace.error?.message ? `: ${trace.error.message}` : '';
38
+ return `[ns-boot] ${status} ${parts.join(' ')}${suffix}`.replace(/\s+$/, '');
39
+ }
40
+ // Install the trace on `globalThis` so diagnostics can pick it up. We
41
+ // use a distinct key from the legacy entry-runtime trace so existing
42
+ // readers that expect `__NS_ENTRY_TRACE__` keep working. Exported for
43
+ // tests; the runtime path calls this from the session-bootstrap finally
44
+ // block.
45
+ export function publishBootTrace(trace) {
46
+ try {
47
+ globalThis.__NS_BOOT_TRACE__ = trace;
48
+ }
49
+ catch { }
50
+ }
51
+ //# sourceMappingURL=boot-timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-timeline.js","sourceRoot":"","sources":["../../../../../../packages/vite/hmr/shared/runtime/boot-timeline.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,gEAAgE;AAChE,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,4DAA4D;AAiB5D,oEAAoE;AACpE,2CAA2C;AAC3C,EAAE;AACF,UAAU;AACV,wEAAwE;AACxE,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,GAAiC,EAAE,EAAE;QACjE,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7G,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtE,OAAO,aAAa,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,wEAAwE;AACxE,SAAS;AACT,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAChD,IAAI,CAAC;QACH,UAAkB,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACX,CAAC"}
@@ -0,0 +1,64 @@
1
+ export type NsDevPlatform = 'ios' | 'android' | 'visionos';
2
+ export type NsHostModuleId = `ns-host://${string}`;
3
+ export declare const NS_HOST_RUNTIME_MODULE_ID: "ns-host://runtime";
4
+ export declare const NS_HOST_STYLE_ADAPTER_MODULE_ID: "ns-host://style-adapter";
5
+ export declare const NS_DEFAULT_HOST_MODULES: readonly ["ns-host://runtime", "ns-host://style-adapter"];
6
+ export declare const NS_DEV_SESSION_REQUIRED_FIELDS: readonly ["sessionId", "origin", "entryUrl", "clientUrl", "wsUrl", "platform"];
7
+ export interface NsDevFeatureFlags {
8
+ fullReload?: boolean;
9
+ cssHmr?: boolean;
10
+ errorOverlay?: boolean;
11
+ styleScopeHmr?: boolean;
12
+ }
13
+ export declare const NS_DEFAULT_DEV_FEATURE_FLAGS: Readonly<Required<Pick<NsDevFeatureFlags, 'fullReload' | 'cssHmr'>>>;
14
+ export interface NsDevSessionDescriptor {
15
+ sessionId: string;
16
+ origin: string;
17
+ entryUrl: string;
18
+ clientUrl: string;
19
+ wsUrl: string;
20
+ platform: NsDevPlatform;
21
+ runtimeConfigUrl?: string;
22
+ hostModules?: NsHostModuleId[];
23
+ features?: NsDevFeatureFlags;
24
+ }
25
+ export interface NsRuntimeDevSessionConfig extends NsDevSessionDescriptor {
26
+ }
27
+ export interface NsStyleUpdatePayload {
28
+ url: string;
29
+ cssText: string;
30
+ }
31
+ export interface NsHotUpdateInvalidatePayload {
32
+ urls: string[];
33
+ updatedAt?: number;
34
+ }
35
+ export interface NsRuntimeImportMap {
36
+ imports: Record<string, string>;
37
+ }
38
+ export interface NsRuntimeConfigurePayload {
39
+ importMap: NsRuntimeImportMap;
40
+ volatilePatterns?: string[];
41
+ }
42
+ export interface NsRuntimeDevHostApi {
43
+ configureRuntime?: (config: NsRuntimeConfigurePayload) => void;
44
+ supportsRuntimeConfigUrl: boolean;
45
+ startDevSession: (config: NsRuntimeDevSessionConfig) => Promise<void>;
46
+ invalidateModules?: (urls: string[]) => void;
47
+ reloadDevApp?: () => Promise<void>;
48
+ applyStyleUpdate?: (payload: NsStyleUpdatePayload) => void;
49
+ getLoadedModuleUrls?: () => string[];
50
+ }
51
+ export declare function isNsDevPlatform(value: unknown): value is NsDevPlatform;
52
+ export declare function assertNsDevSessionDescriptor(session: unknown): asserts session is NsDevSessionDescriptor;
53
+ export declare function readNsRuntimeDevHostApi(target?: Partial<typeof globalThis>): NsRuntimeDevHostApi;
54
+ declare global {
55
+ var __nsConfigureDevRuntime: ((config: NsRuntimeConfigurePayload) => void) | undefined;
56
+ var __nsConfigureRuntime: ((config: NsRuntimeConfigurePayload) => void) | undefined;
57
+ var __nsSupportsRuntimeConfigUrl: boolean | undefined;
58
+ var __nsStartDevSession: ((config: NsRuntimeDevSessionConfig) => Promise<void>) | undefined;
59
+ var __nsInvalidateModules: ((urls: string[]) => void) | undefined;
60
+ var __nsReloadDevApp: (() => Promise<void>) | undefined;
61
+ var __nsApplyStyleUpdate: ((payload: NsStyleUpdatePayload) => void) | undefined;
62
+ var __nsGetLoadedModuleUrls: (() => string[]) | undefined;
63
+ }
64
+ export {};
@@ -0,0 +1,54 @@
1
+ export const NS_HOST_RUNTIME_MODULE_ID = 'ns-host://runtime';
2
+ export const NS_HOST_STYLE_ADAPTER_MODULE_ID = 'ns-host://style-adapter';
3
+ export const NS_DEFAULT_HOST_MODULES = [NS_HOST_RUNTIME_MODULE_ID, NS_HOST_STYLE_ADAPTER_MODULE_ID];
4
+ export const NS_DEV_SESSION_REQUIRED_FIELDS = ['sessionId', 'origin', 'entryUrl', 'clientUrl', 'wsUrl', 'platform'];
5
+ export const NS_DEFAULT_DEV_FEATURE_FLAGS = {
6
+ fullReload: true,
7
+ cssHmr: true,
8
+ };
9
+ function isNonEmptyString(value) {
10
+ return typeof value === 'string' && value.length > 0;
11
+ }
12
+ export function isNsDevPlatform(value) {
13
+ return value === 'ios' || value === 'android' || value === 'visionos';
14
+ }
15
+ export function assertNsDevSessionDescriptor(session) {
16
+ if (!session || typeof session !== 'object') {
17
+ throw new Error('Invalid NativeScript dev session descriptor');
18
+ }
19
+ const candidate = session;
20
+ for (const key of NS_DEV_SESSION_REQUIRED_FIELDS) {
21
+ if (!isNonEmptyString(candidate[key])) {
22
+ throw new Error(`Missing dev session field: ${key}`);
23
+ }
24
+ }
25
+ if (!isNsDevPlatform(candidate.platform)) {
26
+ throw new Error(`Invalid dev session platform: ${String(candidate.platform)}`);
27
+ }
28
+ if (candidate.hostModules != null) {
29
+ if (!Array.isArray(candidate.hostModules) || candidate.hostModules.some((value) => !isNonEmptyString(value) || !String(value).startsWith('ns-host://'))) {
30
+ throw new Error('Invalid dev session hostModules');
31
+ }
32
+ }
33
+ if (candidate.runtimeConfigUrl != null && !isNonEmptyString(candidate.runtimeConfigUrl)) {
34
+ throw new Error('Invalid dev session runtimeConfigUrl');
35
+ }
36
+ if (candidate.features != null) {
37
+ if (typeof candidate.features !== 'object') {
38
+ throw new Error('Invalid dev session features');
39
+ }
40
+ }
41
+ }
42
+ export function readNsRuntimeDevHostApi(target = globalThis) {
43
+ return {
44
+ configureRuntime: target.__nsConfigureDevRuntime ?? target.__nsConfigureRuntime,
45
+ supportsRuntimeConfigUrl: target.__nsSupportsRuntimeConfigUrl === true,
46
+ startDevSession: target.__nsStartDevSession,
47
+ invalidateModules: target.__nsInvalidateModules,
48
+ reloadDevApp: target.__nsReloadDevApp,
49
+ applyStyleUpdate: target.__nsApplyStyleUpdate,
50
+ getLoadedModuleUrls: target.__nsGetLoadedModuleUrls,
51
+ };
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=browser-runtime-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-runtime-contract.js","sourceRoot":"","sources":["../../../../../../packages/vite/hmr/shared/runtime/browser-runtime-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ type HmrOverlayTone = 'info' | 'warn' | 'error' | 'success';
2
+ type HmrOverlayMode = 'hidden' | 'boot' | 'connection' | 'update';
3
+ export type HmrBootStage = 'placeholder' | 'probing-origin' | 'loading-entry-runtime' | 'configuring-import-map' | 'loading-runtime-bridge' | 'loading-core-bridge' | 'preloading-style-scope' | 'installing-css' | 'importing-main' | 'waiting-for-app' | 'app-root-committed' | 'ready' | 'error';
4
+ export type HmrConnectionStage = 'connecting' | 'reconnecting' | 'synchronizing' | 'offline' | 'healthy';
5
+ export type HmrUpdateStage = 'received' | 'evicting' | 'reimporting' | 'rebooting' | 'complete';
6
+ export type HmrOverlayStageInfo = {
7
+ detail?: string;
8
+ origin?: string;
9
+ progress?: number | null;
10
+ attempt?: number;
11
+ attempts?: number;
12
+ };
13
+ export type HmrOverlaySnapshot = {
14
+ visible: boolean;
15
+ mode: HmrOverlayMode;
16
+ badge: string;
17
+ title: string;
18
+ phase: string;
19
+ detail: string;
20
+ progress: number | null;
21
+ busy: boolean;
22
+ blocking: boolean;
23
+ tone: HmrOverlayTone;
24
+ };
25
+ type HmrOverlayApi = {
26
+ ensureBootPage: (verbose?: boolean) => any | null;
27
+ setBootStage: (stage: HmrBootStage, info?: HmrOverlayStageInfo) => HmrOverlaySnapshot;
28
+ setConnectionStage: (stage: HmrConnectionStage, info?: HmrOverlayStageInfo) => HmrOverlaySnapshot;
29
+ setUpdateStage: (stage: HmrUpdateStage, info?: HmrOverlayStageInfo) => HmrOverlaySnapshot;
30
+ hide: (reason?: string) => void;
31
+ getSnapshot: () => HmrOverlaySnapshot;
32
+ };
33
+ export declare function createBootOverlaySnapshot(stage: HmrBootStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
34
+ export declare function createConnectionOverlaySnapshot(stage: HmrConnectionStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
35
+ export declare function createUpdateOverlaySnapshot(stage: HmrUpdateStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
36
+ /**
37
+ * Returns the UIWindow level we use for the live/connection overlay. We lift
38
+ * above `UIWindowLevelAlert` so system alerts (and any app-presented modal)
39
+ * stack underneath. When the platform does not expose `UIWindowLevelAlert`
40
+ * we fall back to the documented constant value (2000).
41
+ */
42
+ export declare function computeIosOverlayWindowLevel(baseAlert?: number | null): number;
43
+ export type IosSafeInsets = {
44
+ top: number;
45
+ bottom: number;
46
+ left: number;
47
+ right: number;
48
+ };
49
+ export type IosRect = {
50
+ x: number;
51
+ y: number;
52
+ width: number;
53
+ height: number;
54
+ };
55
+ export type IosOverlayLayout = {
56
+ backdrop: IosRect;
57
+ panel: IosRect;
58
+ title: IosRect;
59
+ status: IosRect;
60
+ };
61
+ /**
62
+ * Layout math for the live overlay when it runs inside its own UIWindow.
63
+ * Pure, deterministic and independent of UIKit so we can verify the rules
64
+ * (max panel width, centered placement, safe-area clamping, sane defaults)
65
+ * from tests.
66
+ */
67
+ export declare function computeIosOverlayLayout(input: {
68
+ viewWidth: number;
69
+ viewHeight: number;
70
+ safeInsets?: IosSafeInsets | null;
71
+ titleHeight: number;
72
+ statusHeight: number;
73
+ maxPanelWidth?: number;
74
+ horizontalMargin?: number;
75
+ panelPadding?: number;
76
+ interLabelSpacing?: number;
77
+ minTopInset?: number;
78
+ }): IosOverlayLayout;
79
+ export declare function ensureHmrDevOverlayRuntimeInstalled(verbose?: boolean): HmrOverlayApi;
80
+ export declare function createHmrBootOverlayPage(verbose?: boolean): any | null;
81
+ export declare function setHmrBootStage(stage: HmrBootStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
82
+ export declare function setHmrConnectionStage(stage: HmrConnectionStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
83
+ export declare function setHmrUpdateStage(stage: HmrUpdateStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
84
+ export declare function hideHmrDevOverlay(reason?: string): void;
85
+ export {};