@nativescript/vite 8.0.0-alpha.5 → 8.0.0-alpha.6

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 (57) hide show
  1. package/helpers/global-defines.d.ts +55 -0
  2. package/helpers/global-defines.js +81 -0
  3. package/helpers/global-defines.js.map +1 -1
  4. package/helpers/logging.d.ts +1 -0
  5. package/helpers/logging.js +36 -3
  6. package/helpers/logging.js.map +1 -1
  7. package/hmr/client/hmr-pending-overlay.d.ts +27 -0
  8. package/hmr/client/hmr-pending-overlay.js +50 -0
  9. package/hmr/client/hmr-pending-overlay.js.map +1 -0
  10. package/hmr/client/index.js +72 -1
  11. package/hmr/client/index.js.map +1 -1
  12. package/hmr/client/utils.d.ts +5 -0
  13. package/hmr/client/utils.js +153 -15
  14. package/hmr/client/utils.js.map +1 -1
  15. package/hmr/entry-runtime.js +95 -31
  16. package/hmr/entry-runtime.js.map +1 -1
  17. package/hmr/frameworks/angular/client/index.d.ts +1 -0
  18. package/hmr/frameworks/angular/client/index.js +424 -11
  19. package/hmr/frameworks/angular/client/index.js.map +1 -1
  20. package/hmr/server/perf-instrumentation.d.ts +118 -0
  21. package/hmr/server/perf-instrumentation.js +198 -0
  22. package/hmr/server/perf-instrumentation.js.map +1 -0
  23. package/hmr/server/shared-transform-request.js +12 -5
  24. package/hmr/server/shared-transform-request.js.map +1 -1
  25. package/hmr/server/websocket-angular-hot-update.d.ts +16 -0
  26. package/hmr/server/websocket-angular-hot-update.js +163 -1
  27. package/hmr/server/websocket-angular-hot-update.js.map +1 -1
  28. package/hmr/server/websocket-graph-upsert.d.ts +15 -0
  29. package/hmr/server/websocket-graph-upsert.js +20 -0
  30. package/hmr/server/websocket-graph-upsert.js.map +1 -1
  31. package/hmr/server/websocket-hmr-pending.d.ts +43 -0
  32. package/hmr/server/websocket-hmr-pending.js +55 -0
  33. package/hmr/server/websocket-hmr-pending.js.map +1 -0
  34. package/hmr/server/websocket-ns-m-finalize.js +1 -1
  35. package/hmr/server/websocket-ns-m-finalize.js.map +1 -1
  36. package/hmr/server/websocket-ns-m-paths.d.ts +1 -1
  37. package/hmr/server/websocket-ns-m-paths.js +59 -13
  38. package/hmr/server/websocket-ns-m-paths.js.map +1 -1
  39. package/hmr/server/websocket-ns-m-request.js +1 -16
  40. package/hmr/server/websocket-ns-m-request.js.map +1 -1
  41. package/hmr/server/websocket-runtime-compat.js.map +1 -1
  42. package/hmr/server/websocket-served-module-helpers.js +42 -18
  43. package/hmr/server/websocket-served-module-helpers.js.map +1 -1
  44. package/hmr/server/websocket-vue-sfc.js +3 -6
  45. package/hmr/server/websocket-vue-sfc.js.map +1 -1
  46. package/hmr/server/websocket.d.ts +4 -4
  47. package/hmr/server/websocket.js +614 -177
  48. package/hmr/server/websocket.js.map +1 -1
  49. package/hmr/shared/runtime/boot-timeline.d.ts +17 -0
  50. package/hmr/shared/runtime/boot-timeline.js +54 -0
  51. package/hmr/shared/runtime/boot-timeline.js.map +1 -0
  52. package/hmr/shared/runtime/dev-overlay.d.ts +49 -2
  53. package/hmr/shared/runtime/dev-overlay.js +587 -12
  54. package/hmr/shared/runtime/dev-overlay.js.map +1 -1
  55. package/hmr/shared/runtime/session-bootstrap.js +49 -0
  56. package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
  57. package/package.json +1 -1
@@ -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,54 @@
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
+ //
13
+ // See HMR_CORE_REALM_DETERMINISTIC_PLAN.md — "Post-D roadmap — dev-loop
14
+ // performance and UX" for the full context.
15
+ // Pure formatter so we can unit-test the exact string shape without
16
+ // touching `console.info` or `Date.now()`.
17
+ //
18
+ // Format:
19
+ // [ns-boot] ok total=1234ms session=45ms importMap=67ms native=1100ms
20
+ // [ns-boot] FAILED total=230ms session=45ms ...: <message>
21
+ //
22
+ // Segment entries are only included when a numeric `ms` was recorded —
23
+ // this keeps the log compact when a particular phase was skipped (e.g.
24
+ // `__NS_IMPORT_MAP_CONFIGURED__` dedup) or never reached (early error).
25
+ export function formatBootTimeline(trace) {
26
+ const status = trace.error ? 'FAILED' : 'ok';
27
+ const parts = [];
28
+ const push = (label, seg) => {
29
+ if (seg && typeof seg.ms === 'number' && Number.isFinite(seg.ms)) {
30
+ parts.push(`${label}=${Math.max(0, Math.round(seg.ms))}ms`);
31
+ }
32
+ };
33
+ const total = typeof trace.t0 === 'number' && typeof trace.t1 === 'number' ? trace.t1 - trace.t0 : undefined;
34
+ if (typeof total === 'number' && Number.isFinite(total)) {
35
+ parts.push(`total=${Math.max(0, Math.round(total))}ms`);
36
+ }
37
+ push('session', trace.session);
38
+ push('importMap', trace.importMap);
39
+ push('native', trace.native);
40
+ const suffix = trace.error?.message ? `: ${trace.error.message}` : '';
41
+ return `[ns-boot] ${status} ${parts.join(' ')}${suffix}`.replace(/\s+$/, '');
42
+ }
43
+ // Install the trace on `globalThis` so diagnostics can pick it up. We
44
+ // use a distinct key from the legacy entry-runtime trace so existing
45
+ // readers that expect `__NS_ENTRY_TRACE__` keep working. Exported for
46
+ // tests; the runtime path calls this from the session-bootstrap finally
47
+ // block.
48
+ export function publishBootTrace(trace) {
49
+ try {
50
+ globalThis.__NS_BOOT_TRACE__ = trace;
51
+ }
52
+ catch { }
53
+ }
54
+ //# 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;AAC5D,EAAE;AACF,wEAAwE;AACxE,4CAA4C;AAiB5C,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"}
@@ -1,7 +1,8 @@
1
- type HmrOverlayTone = 'info' | 'warn' | 'error';
2
- type HmrOverlayMode = 'hidden' | 'boot' | 'connection';
1
+ type HmrOverlayTone = 'info' | 'warn' | 'error' | 'success';
2
+ type HmrOverlayMode = 'hidden' | 'boot' | 'connection' | 'update';
3
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
4
  export type HmrConnectionStage = 'connecting' | 'reconnecting' | 'synchronizing' | 'offline' | 'healthy';
5
+ export type HmrUpdateStage = 'received' | 'evicting' | 'reimporting' | 'rebooting' | 'complete';
5
6
  export type HmrOverlayStageInfo = {
6
7
  detail?: string;
7
8
  origin?: string;
@@ -25,14 +26,60 @@ type HmrOverlayApi = {
25
26
  ensureBootPage: (verbose?: boolean) => any | null;
26
27
  setBootStage: (stage: HmrBootStage, info?: HmrOverlayStageInfo) => HmrOverlaySnapshot;
27
28
  setConnectionStage: (stage: HmrConnectionStage, info?: HmrOverlayStageInfo) => HmrOverlaySnapshot;
29
+ setUpdateStage: (stage: HmrUpdateStage, info?: HmrOverlayStageInfo) => HmrOverlaySnapshot;
28
30
  hide: (reason?: string) => void;
29
31
  getSnapshot: () => HmrOverlaySnapshot;
30
32
  };
31
33
  export declare function createBootOverlaySnapshot(stage: HmrBootStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
32
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;
33
79
  export declare function ensureHmrDevOverlayRuntimeInstalled(verbose?: boolean): HmrOverlayApi;
34
80
  export declare function createHmrBootOverlayPage(verbose?: boolean): any | null;
35
81
  export declare function setHmrBootStage(stage: HmrBootStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
36
82
  export declare function setHmrConnectionStage(stage: HmrConnectionStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
83
+ export declare function setHmrUpdateStage(stage: HmrUpdateStage, info?: HmrOverlayStageInfo): HmrOverlaySnapshot;
37
84
  export declare function hideHmrDevOverlay(reason?: string): void;
38
85
  export {};