@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.
- package/helpers/global-defines.d.ts +55 -0
- package/helpers/global-defines.js +81 -0
- package/helpers/global-defines.js.map +1 -1
- package/helpers/logging.d.ts +1 -0
- package/helpers/logging.js +36 -3
- package/helpers/logging.js.map +1 -1
- package/hmr/client/hmr-pending-overlay.d.ts +27 -0
- package/hmr/client/hmr-pending-overlay.js +50 -0
- package/hmr/client/hmr-pending-overlay.js.map +1 -0
- package/hmr/client/index.js +72 -1
- package/hmr/client/index.js.map +1 -1
- package/hmr/client/utils.d.ts +5 -0
- package/hmr/client/utils.js +153 -15
- package/hmr/client/utils.js.map +1 -1
- package/hmr/entry-runtime.js +95 -31
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/client/index.d.ts +1 -0
- package/hmr/frameworks/angular/client/index.js +424 -11
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/server/perf-instrumentation.d.ts +118 -0
- package/hmr/server/perf-instrumentation.js +198 -0
- package/hmr/server/perf-instrumentation.js.map +1 -0
- package/hmr/server/shared-transform-request.js +12 -5
- package/hmr/server/shared-transform-request.js.map +1 -1
- package/hmr/server/websocket-angular-hot-update.d.ts +16 -0
- package/hmr/server/websocket-angular-hot-update.js +163 -1
- package/hmr/server/websocket-angular-hot-update.js.map +1 -1
- package/hmr/server/websocket-graph-upsert.d.ts +15 -0
- package/hmr/server/websocket-graph-upsert.js +20 -0
- package/hmr/server/websocket-graph-upsert.js.map +1 -1
- package/hmr/server/websocket-hmr-pending.d.ts +43 -0
- package/hmr/server/websocket-hmr-pending.js +55 -0
- package/hmr/server/websocket-hmr-pending.js.map +1 -0
- package/hmr/server/websocket-ns-m-finalize.js +1 -1
- package/hmr/server/websocket-ns-m-finalize.js.map +1 -1
- package/hmr/server/websocket-ns-m-paths.d.ts +1 -1
- package/hmr/server/websocket-ns-m-paths.js +59 -13
- package/hmr/server/websocket-ns-m-paths.js.map +1 -1
- package/hmr/server/websocket-ns-m-request.js +1 -16
- package/hmr/server/websocket-ns-m-request.js.map +1 -1
- package/hmr/server/websocket-runtime-compat.js.map +1 -1
- package/hmr/server/websocket-served-module-helpers.js +42 -18
- package/hmr/server/websocket-served-module-helpers.js.map +1 -1
- package/hmr/server/websocket-vue-sfc.js +3 -6
- package/hmr/server/websocket-vue-sfc.js.map +1 -1
- package/hmr/server/websocket.d.ts +4 -4
- package/hmr/server/websocket.js +614 -177
- package/hmr/server/websocket.js.map +1 -1
- package/hmr/shared/runtime/boot-timeline.d.ts +17 -0
- package/hmr/shared/runtime/boot-timeline.js +54 -0
- package/hmr/shared/runtime/boot-timeline.js.map +1 -0
- package/hmr/shared/runtime/dev-overlay.d.ts +49 -2
- package/hmr/shared/runtime/dev-overlay.js +587 -12
- package/hmr/shared/runtime/dev-overlay.js.map +1 -1
- package/hmr/shared/runtime/session-bootstrap.js +49 -0
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
// Server-side perf instrumentation helpers.
|
|
2
|
+
//
|
|
3
|
+
// All exports are pure so they can be unit-tested without spinning up
|
|
4
|
+
// Vite. The websocket middleware wires them in with its own logger.
|
|
5
|
+
//
|
|
6
|
+
// The three primitives are:
|
|
7
|
+
// 1. `formatServerStartupBanner` — the always-on banner that prints
|
|
8
|
+
// on dev server startup so the user can confirm which build is
|
|
9
|
+
// live and which perf knobs are active.
|
|
10
|
+
// 2. `createColdBootRequestCounter` — a richer counter that tracks
|
|
11
|
+
// the first burst of NativeScript dev routes (`/ns/m/**`, `/ns/rt/**`,
|
|
12
|
+
// `/ns/core/**`, `/__ns_boot__/**`, `/ns/import-map.json`,
|
|
13
|
+
// `/@nativescript/vendor.mjs`). Emits a rolling + final summary so
|
|
14
|
+
// cold-boot traffic is visible without flipping verbose mode.
|
|
15
|
+
// 3. `formatPopulateInitialGraphSummary` — the single line we print
|
|
16
|
+
// when `populateInitialGraph` finishes. Includes module count and
|
|
17
|
+
// duration so it's trivial to spot regressions.
|
|
18
|
+
//
|
|
19
|
+
// See HMR_CORE_REALM_DETERMINISTIC_PLAN.md — "Track 1 + 2 — diagnostic
|
|
20
|
+
// instrumentation (2026-04)" for the rationale.
|
|
21
|
+
// Single-line, human-scannable banner. We avoid pretty-printing (no
|
|
22
|
+
// boxes/colors) so it plays well with piped logs and the Vite custom
|
|
23
|
+
// logger. Format:
|
|
24
|
+
// [hmr-ws] @nativescript/vite@8.0.0-alpha.48 — transformConcurrency=8 transformCacheMs=60000ms lazyInitialGraph=on graphVersion=1
|
|
25
|
+
export function formatServerStartupBanner(input) {
|
|
26
|
+
const parts = [`transformConcurrency=${Math.max(1, Math.floor(input.transformConcurrency))}`, `transformCacheMs=${Math.max(0, Math.floor(input.transformCacheMs))}ms`, `lazyInitialGraph=${input.lazyInitialGraph ? 'on' : 'off'}`, `graphVersion=${Math.max(0, Math.floor(input.graphVersion))}`];
|
|
27
|
+
return `[hmr-ws] @nativescript/vite@${input.version} — ${parts.join(' ')}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Classify a URL path into a coarse route category. Any pathname that
|
|
31
|
+
* doesn't match a known NativeScript dev route is reported as `other`;
|
|
32
|
+
* callers are expected to filter their own irrelevant routes before
|
|
33
|
+
* calling `record()`.
|
|
34
|
+
*/
|
|
35
|
+
export function classifyBootRoute(pathname) {
|
|
36
|
+
if (!pathname || typeof pathname !== 'string')
|
|
37
|
+
return 'other';
|
|
38
|
+
if (pathname === '/ns/import-map.json')
|
|
39
|
+
return 'ns/import-map';
|
|
40
|
+
if (pathname === '/@nativescript/vendor.mjs' || pathname.startsWith('/@nativescript/'))
|
|
41
|
+
return 'ns/vendor';
|
|
42
|
+
if (pathname.startsWith('/ns/m/'))
|
|
43
|
+
return 'ns/m';
|
|
44
|
+
if (pathname.startsWith('/ns/rt/'))
|
|
45
|
+
return 'ns/rt';
|
|
46
|
+
if (pathname.startsWith('/ns/core/'))
|
|
47
|
+
return 'ns/core';
|
|
48
|
+
if (pathname.startsWith('/__ns_boot__/'))
|
|
49
|
+
return 'ns/boot';
|
|
50
|
+
if (pathname.startsWith('/__ns_hmr__/'))
|
|
51
|
+
return 'ns/hmr';
|
|
52
|
+
if (pathname.startsWith('/ns/'))
|
|
53
|
+
return 'ns/other';
|
|
54
|
+
return 'other';
|
|
55
|
+
}
|
|
56
|
+
// Factory for the cold-boot counter. Encapsulates all state in a closure
|
|
57
|
+
// so the websocket module doesn't have to track timers itself, and so
|
|
58
|
+
// this is trivially testable with a fake clock.
|
|
59
|
+
export function createColdBootRequestCounter(options) {
|
|
60
|
+
const summaryEvery = Math.max(0, Math.floor(options.summaryEvery ?? 100));
|
|
61
|
+
const idleWindowMs = Math.max(100, Math.floor(options.idleWindowMs ?? 5000));
|
|
62
|
+
const now = options.now ?? (() => Date.now());
|
|
63
|
+
const setTimer = options.setTimer ?? ((handler, ms) => setTimeout(handler, ms));
|
|
64
|
+
const clearTimer = options.clearTimer ?? ((handle) => clearTimeout(handle));
|
|
65
|
+
let active = true;
|
|
66
|
+
let count = 0;
|
|
67
|
+
let inFlight = 0;
|
|
68
|
+
let maxConcurrent = 0;
|
|
69
|
+
let startedAt = null;
|
|
70
|
+
let firstRequestUrl = null;
|
|
71
|
+
let idleTimer = null;
|
|
72
|
+
const perRoute = {};
|
|
73
|
+
const formatPerRoute = () => {
|
|
74
|
+
const entries = Object.entries(perRoute);
|
|
75
|
+
if (entries.length === 0)
|
|
76
|
+
return '';
|
|
77
|
+
entries.sort((a, b) => b[1] - a[1]);
|
|
78
|
+
return entries.map(([k, v]) => `${k}=${v}`).join(',');
|
|
79
|
+
};
|
|
80
|
+
const fireFinal = () => {
|
|
81
|
+
if (!active)
|
|
82
|
+
return;
|
|
83
|
+
active = false;
|
|
84
|
+
// `startedAt` is set the first time `record()` fires. Use an explicit
|
|
85
|
+
// null check — `startedAt` can be 0 on deterministic test clocks and
|
|
86
|
+
// `startedAt ? ... : 0` would mis-treat that as "never started".
|
|
87
|
+
const ms = startedAt !== null ? now() - startedAt : 0;
|
|
88
|
+
const routes = formatPerRoute();
|
|
89
|
+
const routesPart = routes ? ` routes=${routes}` : '';
|
|
90
|
+
options.log(`[hmr-ws][cold-boot] window closed modules=${count} ms=${ms} maxConcurrent=${maxConcurrent}${routesPart}`);
|
|
91
|
+
};
|
|
92
|
+
const scheduleIdleClose = () => {
|
|
93
|
+
if (idleTimer !== null)
|
|
94
|
+
clearTimer(idleTimer);
|
|
95
|
+
idleTimer = setTimer(() => {
|
|
96
|
+
idleTimer = null;
|
|
97
|
+
fireFinal();
|
|
98
|
+
}, idleWindowMs);
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
record(url) {
|
|
102
|
+
if (!active) {
|
|
103
|
+
return { finish: () => { } };
|
|
104
|
+
}
|
|
105
|
+
count += 1;
|
|
106
|
+
inFlight += 1;
|
|
107
|
+
if (inFlight > maxConcurrent)
|
|
108
|
+
maxConcurrent = inFlight;
|
|
109
|
+
if (startedAt === null) {
|
|
110
|
+
startedAt = now();
|
|
111
|
+
firstRequestUrl = url;
|
|
112
|
+
}
|
|
113
|
+
const route = classifyBootRoute(url);
|
|
114
|
+
perRoute[route] = (perRoute[route] ?? 0) + 1;
|
|
115
|
+
if (summaryEvery > 0 && count % summaryEvery === 0) {
|
|
116
|
+
// Same `startedAt === 0` consideration as in fireFinal().
|
|
117
|
+
const ms = startedAt !== null ? now() - startedAt : 0;
|
|
118
|
+
options.log(`[hmr-ws][cold-boot] progress modules=${count} ms=${ms} inFlight=${inFlight} maxConcurrent=${maxConcurrent}`);
|
|
119
|
+
}
|
|
120
|
+
scheduleIdleClose();
|
|
121
|
+
let finished = false;
|
|
122
|
+
return {
|
|
123
|
+
finish() {
|
|
124
|
+
if (finished)
|
|
125
|
+
return;
|
|
126
|
+
finished = true;
|
|
127
|
+
if (inFlight > 0)
|
|
128
|
+
inFlight -= 1;
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
},
|
|
132
|
+
finalize() {
|
|
133
|
+
if (idleTimer !== null) {
|
|
134
|
+
clearTimer(idleTimer);
|
|
135
|
+
idleTimer = null;
|
|
136
|
+
}
|
|
137
|
+
fireFinal();
|
|
138
|
+
},
|
|
139
|
+
getState() {
|
|
140
|
+
return { active, count, inFlight, maxConcurrent, startedAt, firstRequestUrl, perRoute: { ...perRoute } };
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// Summary line for `populateInitialGraph`. Stable shape so CI greps or
|
|
145
|
+
// external dashboards can pick it up without fragile regexes.
|
|
146
|
+
export function formatPopulateInitialGraphSummary(input) {
|
|
147
|
+
return `[hmr-ws][populate] modules=${Math.max(0, Math.floor(input.moduleCount))} ms=${Math.max(0, Math.floor(input.durationMs))} graphVersion=${Math.max(0, Math.floor(input.graphVersion))} bumpedVersion=${input.bumpedVersion ? 'yes' : 'no'}`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Classify a file's HMR update kind by extension. Used by the server-side
|
|
151
|
+
* update summary so a quick log line tells us which pipeline ran. Returns
|
|
152
|
+
* `'unknown'` for anything that doesn't match a known dev-time extension —
|
|
153
|
+
* the caller decides whether to log it or skip it entirely.
|
|
154
|
+
*/
|
|
155
|
+
export function classifyHmrUpdateKind(file) {
|
|
156
|
+
if (!file || typeof file !== 'string')
|
|
157
|
+
return 'unknown';
|
|
158
|
+
const lower = file.toLowerCase();
|
|
159
|
+
if (lower.endsWith('.ts'))
|
|
160
|
+
return 'ts';
|
|
161
|
+
if (lower.endsWith('.tsx'))
|
|
162
|
+
return 'tsx';
|
|
163
|
+
if (lower.endsWith('.jsx'))
|
|
164
|
+
return 'jsx';
|
|
165
|
+
if (lower.endsWith('.html') || lower.endsWith('.htm'))
|
|
166
|
+
return 'html';
|
|
167
|
+
if (lower.endsWith('.css') || lower.endsWith('.scss') || lower.endsWith('.sass') || lower.endsWith('.less'))
|
|
168
|
+
return 'css';
|
|
169
|
+
if (lower.endsWith('.vue'))
|
|
170
|
+
return 'vue';
|
|
171
|
+
if (lower.endsWith('.mjs'))
|
|
172
|
+
return 'mjs';
|
|
173
|
+
if (lower.endsWith('.js'))
|
|
174
|
+
return 'js';
|
|
175
|
+
return 'unknown';
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Single-line summary for the server side of an HMR update. Always-on so
|
|
179
|
+
* a 6-second `.ts` save is immediately visible without flipping verbose.
|
|
180
|
+
* Format:
|
|
181
|
+
* [hmr-ws][update] kind=ts file=/src/foo.ts await=12ms framework=180ms broadcast=2ms total=194ms invalidated=23 recipients=1
|
|
182
|
+
*
|
|
183
|
+
* For Angular `.ts` updates, `narrowed=yes|no` is appended so the
|
|
184
|
+
* Round-Seven decision is immediately visible without flipping verbose:
|
|
185
|
+
* [hmr-ws][update] kind=ts file=/src/app/foo.constants.ts ... invalidated=1 recipients=1 narrowed=yes
|
|
186
|
+
* [hmr-ws][update] kind=ts file=/src/app/foo.component.ts ... invalidated=132 recipients=1 narrowed=no
|
|
187
|
+
*/
|
|
188
|
+
export function formatHmrUpdateSummary(input) {
|
|
189
|
+
const parts = [`kind=${input.kind || 'unknown'}`, `file=${input.file || '<unknown>'}`, `await=${Math.max(0, Math.floor(input.awaitMs))}ms`, `framework=${Math.max(0, Math.floor(input.frameworkMs))}ms`, `broadcast=${Math.max(0, Math.floor(input.broadcastMs))}ms`, `total=${Math.max(0, Math.floor(input.totalMs))}ms`, `invalidated=${Math.max(0, Math.floor(input.invalidated))}`, `recipients=${Math.max(0, Math.floor(input.recipients))}`];
|
|
190
|
+
if (input.narrowed === true) {
|
|
191
|
+
parts.push('narrowed=yes');
|
|
192
|
+
}
|
|
193
|
+
else if (input.narrowed === false) {
|
|
194
|
+
parts.push('narrowed=no');
|
|
195
|
+
}
|
|
196
|
+
return `[hmr-ws][update] ${parts.join(' ')}`;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=perf-instrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf-instrumentation.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/perf-instrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,8 +101,15 @@ export function createSharedTransformRequestRunner(transformRequest, onTimeout,
|
|
|
101
101
|
if (recent && recent.expiresAt > Date.now()) {
|
|
102
102
|
return Promise.resolve(recent.result);
|
|
103
103
|
}
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
// Key the in-flight map on the canonical `cacheKey`, not the raw URL,
|
|
105
|
+
// so two concurrent calls for `/foo.ts?t=1` and `/foo.ts?t=2` share a
|
|
106
|
+
// single transform rather than doing the same work twice. The cache
|
|
107
|
+
// key already strips `?t=` and `?v=` cache-busters and sorts the
|
|
108
|
+
// remaining query — see `canonicalizeTransformRequestCacheKey`. This
|
|
109
|
+
// pairs with `rememberRecentResult`, which was always keyed by
|
|
110
|
+
// cacheKey.
|
|
111
|
+
const existingExecution = inFlight.get(cacheKey);
|
|
112
|
+
if (existingExecution && existingExecution.generation === generation) {
|
|
106
113
|
return withTimeout(existingExecution, url, timeoutMs);
|
|
107
114
|
}
|
|
108
115
|
const scheduled = schedule(async () => {
|
|
@@ -112,12 +119,12 @@ export function createSharedTransformRequestRunner(transformRequest, onTimeout,
|
|
|
112
119
|
});
|
|
113
120
|
let execution;
|
|
114
121
|
execution = scheduled.execution.finally(() => {
|
|
115
|
-
if (inFlight.get(
|
|
116
|
-
inFlight.delete(
|
|
122
|
+
if (inFlight.get(cacheKey)?.execution === execution) {
|
|
123
|
+
inFlight.delete(cacheKey);
|
|
117
124
|
}
|
|
118
125
|
});
|
|
119
126
|
const entry = { execution, started: scheduled.started, cacheKey, generation };
|
|
120
|
-
inFlight.set(
|
|
127
|
+
inFlight.set(cacheKey, entry);
|
|
121
128
|
return withTimeout(entry, url, timeoutMs);
|
|
122
129
|
});
|
|
123
130
|
runner.invalidate = (url) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-transform-request.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/shared-transform-request.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,kCAAkC,CAAC,gBAAkE,EAAE,SAAoD,EAAE,UAA+C,EAAE;IAC7N,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwH,CAAC;IACjJ,MAAM,aAAa,GAAG,IAAI,GAAG,EAA0D,CAAC;IACxF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9E,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC/C,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;gBAC5B,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,MAA8B,EAAE,UAAkB,EAAE,EAAE;QAChG,IAAI,CAAC,MAAM,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO;QACR,CAAC;QACD,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB;YACxC,MAAM;SACN,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACpD,IAAI,SAAS,EAAE,CAAC;gBACf,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACpB,OAAO,WAAW,GAAG,aAAa,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO;YACR,CAAC;YAED,WAAW,IAAI,CAAC,CAAC;YACjB,IAAI,EAAE,CAAC;QACR,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAI,IAAsB,EAAqD,EAAE;QACjG,IAAI,cAAc,GAAwB,IAAI,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC7C,cAAc,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACf,IAAI,OAAmB,CAAC;gBACxB,cAAc,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACJ,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC1C,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;oBAC3C,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAA6E,EAAE,GAAW,EAAE,SAAiB,EAAE,EAAE;QACrI,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CACxB,GAAG,EAAE,CACJ,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,IAAI,CAAC;oBACJ,SAAS,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACX,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClD,YAAY,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAW,EAAE,SAAS,GAAG,MAAM,EAAE,EAAE;QACnD,kBAAkB,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"shared-transform-request.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/shared-transform-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,9 +28,11 @@ export declare function collectAngularTransitiveImportersForInvalidation(options
|
|
|
28
28
|
isExcluded?: (id: string) => boolean;
|
|
29
29
|
maxDepth?: number;
|
|
30
30
|
}): TransitiveImporterModuleLike[];
|
|
31
|
+
export declare function angularSourceHasSemanticDecorator(source: string): boolean;
|
|
31
32
|
export declare function shouldInvalidateAngularTransitiveImporters(options: {
|
|
32
33
|
flavor: string;
|
|
33
34
|
file: string;
|
|
35
|
+
source?: string | null;
|
|
34
36
|
}): boolean;
|
|
35
37
|
export declare function collectAngularTransformCacheInvalidationUrls(options: {
|
|
36
38
|
file: string;
|
|
@@ -43,6 +45,20 @@ export declare function collectAngularTransformCacheInvalidationUrls(options: {
|
|
|
43
45
|
}>;
|
|
44
46
|
projectRoot?: string;
|
|
45
47
|
}): string[];
|
|
48
|
+
export declare function collectAngularEvictionUrls(options: {
|
|
49
|
+
file: string;
|
|
50
|
+
hotUpdateRoots?: Iterable<{
|
|
51
|
+
id?: string | null;
|
|
52
|
+
file?: string | null;
|
|
53
|
+
}>;
|
|
54
|
+
transitiveImporters?: Iterable<{
|
|
55
|
+
id?: string | null;
|
|
56
|
+
file?: string | null;
|
|
57
|
+
}>;
|
|
58
|
+
projectRoot: string;
|
|
59
|
+
origin: string;
|
|
60
|
+
bootstrapEntry?: string | null;
|
|
61
|
+
}): string[];
|
|
46
62
|
export declare function shouldSuppressDefaultViteHotUpdate(options: {
|
|
47
63
|
flavor: string;
|
|
48
64
|
file: string;
|
|
@@ -161,11 +161,49 @@ export function collectAngularTransitiveImportersForInvalidation(options) {
|
|
|
161
161
|
}
|
|
162
162
|
return Array.from(collected.values());
|
|
163
163
|
}
|
|
164
|
+
// Round-six narrowing: a TS/JS file needs to invalidate its transitive
|
|
165
|
+
// importers only when it carries Angular semantics (a top-level @Component,
|
|
166
|
+
// @Directive, @Pipe, @Injectable, or @NgModule decorator). Files that only
|
|
167
|
+
// export constants, types, enums, plain functions, or plain classes are
|
|
168
|
+
// "leaf" modules — ES modules' live bindings deliver the new exports to
|
|
169
|
+
// importers automatically once V8 re-evaluates the changed module. Forcing
|
|
170
|
+
// every importer to re-transform on a constants edit is what produces the
|
|
171
|
+
// 132-module invalidation wave that dominates the 3.6s `refresh` phase
|
|
172
|
+
// reported on heykiddo-talk-angular for a one-line constants change.
|
|
173
|
+
//
|
|
174
|
+
// Regex anchors at line start with only whitespace before `@Decorator(` so
|
|
175
|
+
// we don't false-match on string literals, JSDoc references, or commented-
|
|
176
|
+
// out blocks. Tests pin the matching/non-matching shapes that have come up
|
|
177
|
+
// in real Angular sources.
|
|
178
|
+
const ANGULAR_SEMANTIC_DECORATOR_REGEX = /^[ \t]*@(?:Component|Directive|Pipe|Injectable|NgModule)\b\s*\(/m;
|
|
179
|
+
export function angularSourceHasSemanticDecorator(source) {
|
|
180
|
+
if (!source || source.length === 0)
|
|
181
|
+
return false;
|
|
182
|
+
return ANGULAR_SEMANTIC_DECORATOR_REGEX.test(source);
|
|
183
|
+
}
|
|
164
184
|
export function shouldInvalidateAngularTransitiveImporters(options) {
|
|
165
185
|
if (options.flavor !== 'angular') {
|
|
166
186
|
return false;
|
|
167
187
|
}
|
|
168
|
-
|
|
188
|
+
// Template-only (.html/.htm) edits change the component's view but never
|
|
189
|
+
// its exported symbol shape, so importers of the component do not need to
|
|
190
|
+
// re-transform. Skipping the transitive walk here is the single biggest
|
|
191
|
+
// latency win for template HMR (Track 2.1 in
|
|
192
|
+
// HMR_CORE_REALM_DETERMINISTIC_PLAN.md).
|
|
193
|
+
if (!/\.(?:(m|c)?[jt]sx?)$/i.test(options.file)) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
// Round-six: when source is available, narrow to "files whose changes
|
|
197
|
+
// can affect the Angular semantics of their importers". Files without a
|
|
198
|
+
// top-level @Component/@Directive/@Pipe/@Injectable/@NgModule decorator
|
|
199
|
+
// are leaf modules — invalidating the file itself is sufficient.
|
|
200
|
+
// When source is undefined/null (e.g. ctx.read() failed or the caller
|
|
201
|
+
// didn't plumb it through), fall back to the conservative pre-round-six
|
|
202
|
+
// behavior: invalidate transitively, same as before.
|
|
203
|
+
if (typeof options.source === 'string') {
|
|
204
|
+
return angularSourceHasSemanticDecorator(options.source);
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
169
207
|
}
|
|
170
208
|
function isExtensionlessAngularAppTransformCandidate(id) {
|
|
171
209
|
return id.startsWith(APP_VIRTUAL_WITH_SLASH) && /\.(?:[mc]?[jt]sx?)$/i.test(id);
|
|
@@ -196,6 +234,130 @@ export function collectAngularTransformCacheInvalidationUrls(options) {
|
|
|
196
234
|
}
|
|
197
235
|
return Array.from(urls);
|
|
198
236
|
}
|
|
237
|
+
// alpha.59 — Stable URL + Explicit Invalidation.
|
|
238
|
+
//
|
|
239
|
+
// Compute the set of fully-qualified `/ns/m/<rel>` URLs that the runtime
|
|
240
|
+
// should drop from `g_moduleRegistry` before re-importing main.ts. The set
|
|
241
|
+
// must satisfy the eviction invariants documented in
|
|
242
|
+
// HMR_STABLE_URL_INVALIDATION_PLAN.md §5:
|
|
243
|
+
//
|
|
244
|
+
// * The changed file itself (so V8 fetches the new source).
|
|
245
|
+
// * Every transitive importer up to the entry (so the new exports are
|
|
246
|
+
// re-bound; ESM live bindings only "see" new exports if the importer
|
|
247
|
+
// re-evaluates).
|
|
248
|
+
// * No `/node_modules/` paths (vendor packages are stable in dev; evicting
|
|
249
|
+
// them would force unnecessary re-fetch + re-transform).
|
|
250
|
+
// * No virtual / runtime-graph-excluded ids (e.g. `\0` rollup virtuals).
|
|
251
|
+
// * No duplicates — the set is deduped on canonical relative path.
|
|
252
|
+
//
|
|
253
|
+
// The output URLs are origin-absolute (e.g.
|
|
254
|
+
// `http://localhost:5173/ns/m/src/main.ts`) so the runtime can feed the
|
|
255
|
+
// list directly into `__nsInvalidateModules` without any further
|
|
256
|
+
// resolution work. The runtime canonicalizer (HMRSupport.mm) collapses
|
|
257
|
+
// any residual `__ns_hmr__/<tag>/` or `__ns_boot__/b1/` segments, so the
|
|
258
|
+
// effective registry key is `/ns/m/<rel>` regardless of any tag a stale
|
|
259
|
+
// V8 cache entry might still carry.
|
|
260
|
+
//
|
|
261
|
+
// alpha.61 — Extensionless canonical key.
|
|
262
|
+
//
|
|
263
|
+
// Vite emits ES module import statements with extensions stripped (this
|
|
264
|
+
// is how `resolve.extensions` works for Angular/TS apps), so V8 in the
|
|
265
|
+
// NativeScript iOS runtime keys `g_moduleRegistry` by the extensionless
|
|
266
|
+
// URL it sees in the import statement. Concretely, an import like
|
|
267
|
+
// import { AppComponent } from './app.component';
|
|
268
|
+
// inside `main.ts` is rewritten by Vite to
|
|
269
|
+
// import { AppComponent } from '/ns/m/src/app/app.component';
|
|
270
|
+
// and V8 stores the resulting module under the key
|
|
271
|
+
// http://localhost:5173/ns/m/src/app/app.component
|
|
272
|
+
// (no `.ts` extension). The `moduleGraph` ids on the server, however,
|
|
273
|
+
// are absolute file paths that DO carry the extension, so a naive
|
|
274
|
+
// eviction set built from `mod.id` keys against `.../app.component.ts`
|
|
275
|
+
// — which never matches the registry entry. The runtime reports
|
|
276
|
+
// `[resolver][remove:miss]`, the cached module survives, ESM live
|
|
277
|
+
// bindings continue to point at the OLD constants module, and the user
|
|
278
|
+
// sees no visual update despite a clean HMR cycle.
|
|
279
|
+
//
|
|
280
|
+
// Workaround: for any path ending in `.ts/.tsx/.js/.jsx/.mjs/.mts/
|
|
281
|
+
// .cjs/.cts`, emit BOTH the extensioned URL AND the extension-stripped
|
|
282
|
+
// canonical URL. The runtime evicts whichever shape V8 actually has;
|
|
283
|
+
// the other is a harmless `remove:miss`. Cost: at most 2x URLs in
|
|
284
|
+
// `evictPaths` (still tiny relative to the JSON payload). This single
|
|
285
|
+
// change is what unsticks visual updates for the heykiddo case.
|
|
286
|
+
//
|
|
287
|
+
// Returning a `Set` of URLs (rather than an array) lets the caller
|
|
288
|
+
// collapse multiple sources (changed file + roots + transitive
|
|
289
|
+
// importers) without paying for an extra dedup pass.
|
|
290
|
+
function normalizeAngularEvictRelativeId(rawId, projectRoot) {
|
|
291
|
+
if (!rawId)
|
|
292
|
+
return null;
|
|
293
|
+
let id = String(rawId).split('?')[0].replace(/\\/g, '/');
|
|
294
|
+
if (!id)
|
|
295
|
+
return null;
|
|
296
|
+
if (id.startsWith('file://')) {
|
|
297
|
+
id = id.slice('file://'.length);
|
|
298
|
+
}
|
|
299
|
+
const root = projectRoot ? projectRoot.replace(/\\/g, '/').replace(/\/$/, '') : '';
|
|
300
|
+
if (root && id.startsWith(root)) {
|
|
301
|
+
id = id.slice(root.length);
|
|
302
|
+
}
|
|
303
|
+
if (!id.startsWith('/')) {
|
|
304
|
+
id = '/' + id;
|
|
305
|
+
}
|
|
306
|
+
if (id.includes('/node_modules/')) {
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
if (isRuntimeGraphExcludedPath(id)) {
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
// Reject virtual ids — they aren't fetchable over /ns/m/.
|
|
313
|
+
if (id.includes('\0') || id.includes('/@id/') || id.includes('/@fs/')) {
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
return id;
|
|
317
|
+
}
|
|
318
|
+
export function collectAngularEvictionUrls(options) {
|
|
319
|
+
const urls = new Set();
|
|
320
|
+
const origin = String(options.origin || '').replace(/\/$/, '');
|
|
321
|
+
const root = options.projectRoot;
|
|
322
|
+
const addRel = (rel) => {
|
|
323
|
+
if (!rel)
|
|
324
|
+
return;
|
|
325
|
+
// Final defense: never emit non-/ns/m URLs for eviction; the runtime
|
|
326
|
+
// would map them to a different cache namespace.
|
|
327
|
+
urls.add(`${origin}/ns/m${rel}`);
|
|
328
|
+
// V8 in the iOS runtime keys `g_moduleRegistry` by the URL Vite
|
|
329
|
+
// emitted in the *generated* import statement, which strips JS/TS
|
|
330
|
+
// extensions (see the alpha.61 block above). So the canonical
|
|
331
|
+
// registry key for an app TS/JS module is the extensionless form.
|
|
332
|
+
// Emit it alongside the `.ts` form so the explicit eviction matches
|
|
333
|
+
// whatever shape the runtime actually stored. This cannot
|
|
334
|
+
// false-positive: at most one of the two URLs maps to a real entry,
|
|
335
|
+
// and `__nsInvalidateModules` treats unknown keys as no-ops.
|
|
336
|
+
const extMatch = rel.match(/\.(?:[mc]?[jt]sx?)$/i);
|
|
337
|
+
if (extMatch) {
|
|
338
|
+
urls.add(`${origin}/ns/m${rel.slice(0, -extMatch[0].length)}`);
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
addRel(normalizeAngularEvictRelativeId(options.file, root));
|
|
342
|
+
for (const mod of options.hotUpdateRoots || []) {
|
|
343
|
+
addRel(normalizeAngularEvictRelativeId(mod?.id || mod?.file, root));
|
|
344
|
+
}
|
|
345
|
+
for (const mod of options.transitiveImporters || []) {
|
|
346
|
+
addRel(normalizeAngularEvictRelativeId(mod?.id || mod?.file, root));
|
|
347
|
+
}
|
|
348
|
+
// The bootstrap entry must always be evicted: V8's `import(entry)` is a
|
|
349
|
+
// no-op if the cache entry is still live, and the entire HMR cycle
|
|
350
|
+
// hinges on re-evaluating main.ts. The transitive walk usually catches
|
|
351
|
+
// this naturally (every component reaches main via importer chains),
|
|
352
|
+
// but include it explicitly as an invariant — covers edge cases like a
|
|
353
|
+
// hand-rolled `@nativescript/hmr-strategy` overriding the candidates,
|
|
354
|
+
// or a pristine app whose graph hasn't yet linked main into the
|
|
355
|
+
// importer set.
|
|
356
|
+
if (typeof options.bootstrapEntry === 'string' && options.bootstrapEntry) {
|
|
357
|
+
addRel(normalizeAngularEvictRelativeId(options.bootstrapEntry, root));
|
|
358
|
+
}
|
|
359
|
+
return Array.from(urls);
|
|
360
|
+
}
|
|
199
361
|
export function shouldSuppressDefaultViteHotUpdate(options) {
|
|
200
362
|
if (options.flavor !== 'angular') {
|
|
201
363
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-angular-hot-update.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-angular-hot-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAElG,MAAM,sBAAsB,GAAG,GAAG,wBAAwB,EAAE,GAAG,CAAC;AAQhE,MAAM,UAAU,oCAAoC,CAAC,GAAW,EAAE,WAAmB;IACpF,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IAErB,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,cAAc,GAAG,OAAO,CAAC;IAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,IAAI,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvE,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QACxD,CAAC;IACF,CAAC;SAAM,IAAI,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE;QAC/F,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,GAAG,cAAc,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,OAA4J;IACjN,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC5D,MAAM,SAAS,GAAG,CAAC,GAAqC,EAAE,EAAE;QAC3D,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,IAAI,0BAA0B,CAAC,EAAE,CAAC;YAAE,OAAO;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAI,CAAC,CAAC;QACvB,CAAC;IACF,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACzC,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;gBAC7C,MAAM,UAAU,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;gBACtC,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChD,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACrB,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAChF,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAwO;IACpR,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAExD,MAAM,OAAO,GAAG,CAAC,GAAqC,EAAE,EAAE;QACzD,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACR,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,OAAO;YACR,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;QACR,CAAC;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,qCAAqC,CAAC;YACvD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACpC,CAAC,EAAE,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAQD,MAAM,UAAU,gDAAgD,CAAC,OAAwI;IACxM,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAC;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3H,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAG,CAAC,KAAgC,EAAU,EAAE,CAAC,yBAAyB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAEzG,MAAM,IAAI,GAAG,CAAC,GAAoD,EAAE,KAAa,EAAQ,EAAE;QAC1F,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC1B,SAAS;YACV,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACV,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,0CAA0C,CAAC,OAAyC;IACnG,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,2CAA2C,CAAC,EAAU;IAC9D,OAAO,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,uCAAuC,CAAC,OAAoB,EAAE,KAAgC,EAAE,WAAoB;IAC5H,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,OAAO;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,oCAAoC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtB,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,2CAA2C,CAAC,YAAY,CAAC,EAAE,CAAC;QAChE,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,4CAA4C,CAAC,OAAwK;IACpO,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,uCAAuC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QAChD,uCAAuC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,mBAAmB,IAAI,EAAE,EAAE,CAAC;QACrD,uCAAuC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,OAAyC;IAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAQD,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,IAAa;IACrE,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;SAChC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAE5B,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,OAAsH;IACzK,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAEtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtI,MAAM,kBAAkB,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnI,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;YACtC,SAAS;QACV,CAAC;QAED,IAAI,kBAAkB,KAAK,KAAK,CAAC,OAAO,IAAI,kBAAkB,KAAK,KAAK,CAAC,OAAO,IAAI,WAAW,KAAK,KAAK,CAAC,OAAO,IAAI,WAAW,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACpJ,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"websocket-angular-hot-update.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-angular-hot-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,3 +4,18 @@ export declare function classifyGraphUpsert(existing: {
|
|
|
4
4
|
deps: string[];
|
|
5
5
|
} | undefined, nextHash: string, nextDeps: string[]): GraphUpsertClassification;
|
|
6
6
|
export declare function shouldBroadcastGraphUpsertDelta(classification: GraphUpsertClassification, emitDeltaOnInsert?: boolean, broadcastEnabled?: boolean): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Decide whether an upsert should advance the shared graphVersion
|
|
9
|
+
* counter. Serve-time warm-ups (and the background initial-graph walk) pass
|
|
10
|
+
* `bumpVersion: false` so graphVersion stays stable during cold boot — that
|
|
11
|
+
* stability is what lets the dynamic-import helper tag every first-session
|
|
12
|
+
* URL with a consistent `v1` instead of drifting between `live`, `v12`,
|
|
13
|
+
* `v433`... (which would produce double-loaded modules on iOS HTTP ESM).
|
|
14
|
+
* Real live edits (handleHotUpdate and framework hot-update handlers) leave
|
|
15
|
+
* `bumpVersion` unset or true and advance the counter as before.
|
|
16
|
+
*
|
|
17
|
+
* The helper also treats `unchanged` classifications as no-op: they bypass
|
|
18
|
+
* the graph set entirely in upsertGraphModule, so the version must not
|
|
19
|
+
* advance for them either.
|
|
20
|
+
*/
|
|
21
|
+
export declare function shouldBumpGraphVersion(classification: GraphUpsertClassification, bumpVersion?: boolean): boolean;
|
|
@@ -10,4 +10,24 @@ export function classifyGraphUpsert(existing, nextHash, nextDeps) {
|
|
|
10
10
|
export function shouldBroadcastGraphUpsertDelta(classification, emitDeltaOnInsert = false, broadcastEnabled = true) {
|
|
11
11
|
return broadcastEnabled && (classification === 'changed' || (classification === 'inserted' && emitDeltaOnInsert));
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Decide whether an upsert should advance the shared graphVersion
|
|
15
|
+
* counter. Serve-time warm-ups (and the background initial-graph walk) pass
|
|
16
|
+
* `bumpVersion: false` so graphVersion stays stable during cold boot — that
|
|
17
|
+
* stability is what lets the dynamic-import helper tag every first-session
|
|
18
|
+
* URL with a consistent `v1` instead of drifting between `live`, `v12`,
|
|
19
|
+
* `v433`... (which would produce double-loaded modules on iOS HTTP ESM).
|
|
20
|
+
* Real live edits (handleHotUpdate and framework hot-update handlers) leave
|
|
21
|
+
* `bumpVersion` unset or true and advance the counter as before.
|
|
22
|
+
*
|
|
23
|
+
* The helper also treats `unchanged` classifications as no-op: they bypass
|
|
24
|
+
* the graph set entirely in upsertGraphModule, so the version must not
|
|
25
|
+
* advance for them either.
|
|
26
|
+
*/
|
|
27
|
+
export function shouldBumpGraphVersion(classification, bumpVersion = true) {
|
|
28
|
+
if (classification === 'unchanged') {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return bumpVersion !== false;
|
|
32
|
+
}
|
|
13
33
|
//# sourceMappingURL=websocket-graph-upsert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-graph-upsert.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-graph-upsert.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,QAAsD,EAAE,QAAgB,EAAE,QAAkB;IAC/H,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChI,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,cAAyC,EAAE,oBAA6B,KAAK,EAAE,mBAA4B,IAAI;IAC9J,OAAO,gBAAgB,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,cAAc,KAAK,UAAU,IAAI,iBAAiB,CAAC,CAAC,CAAC;AACnH,CAAC"}
|
|
1
|
+
{"version":3,"file":"websocket-graph-upsert.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-graph-upsert.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,QAAsD,EAAE,QAAgB,EAAE,QAAkB;IAC/H,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChI,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,cAAyC,EAAE,oBAA6B,KAAK,EAAE,mBAA4B,IAAI;IAC9J,OAAO,gBAAgB,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,cAAc,KAAK,UAAU,IAAI,iBAAiB,CAAC,CAAC,CAAC;AACnH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,cAAyC,EAAE,cAAuB,IAAI;IAC5G,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,WAAW,KAAK,KAAK,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* alpha.62 follow-up — early "pending" notification.
|
|
3
|
+
*
|
|
4
|
+
* When `handleHotUpdate(ctx)` first fires for a save event, the server
|
|
5
|
+
* spends 7–200ms doing graph upserts, transforms and dependency
|
|
6
|
+
* analysis BEFORE broadcasting `ns:angular-update` (or
|
|
7
|
+
* `ns:css-updates`). During that window the client has no idea a
|
|
8
|
+
* change is in flight, so the HMR-applying overlay only appears at
|
|
9
|
+
* the tail end of the cycle and the user perceives the dev loop as
|
|
10
|
+
* laggy.
|
|
11
|
+
*
|
|
12
|
+
* `ns:hmr-pending` is broadcast at the very start of `handleHotUpdate`
|
|
13
|
+
* with just the file path + classified kind. The client reacts by
|
|
14
|
+
* showing the 'received' overlay frame immediately. The authoritative
|
|
15
|
+
* payload (`ns:angular-update` / `ns:css-updates`) follows once the
|
|
16
|
+
* server is ready and walks the rest of the stage progression.
|
|
17
|
+
*
|
|
18
|
+
* This module is intentionally a pure helper so the message shape and
|
|
19
|
+
* narrowing rules can be verified without spinning up a Vite dev
|
|
20
|
+
* server.
|
|
21
|
+
*/
|
|
22
|
+
export type HmrPendingKind = 'ts' | 'css' | 'html' | 'unknown';
|
|
23
|
+
export type HmrPendingMessage = {
|
|
24
|
+
type: 'ns:hmr-pending';
|
|
25
|
+
origin: string;
|
|
26
|
+
path: string;
|
|
27
|
+
kind: HmrPendingKind;
|
|
28
|
+
timestamp: number;
|
|
29
|
+
};
|
|
30
|
+
export declare function createHmrPendingMessage(input: {
|
|
31
|
+
origin: string;
|
|
32
|
+
path: string;
|
|
33
|
+
kind: string;
|
|
34
|
+
timestamp: number;
|
|
35
|
+
}): HmrPendingMessage;
|
|
36
|
+
/**
|
|
37
|
+
* Parser used by the client to identify a pending message regardless of
|
|
38
|
+
* which framework is active. We accept the message only when every
|
|
39
|
+
* expected field is present and well-formed — this guards against
|
|
40
|
+
* accidental matches on legacy server payloads or developer-written
|
|
41
|
+
* mocks during tests.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isHmrPendingMessage(value: unknown): value is HmrPendingMessage;
|