@nativescript/vite 8.0.0-alpha.71 → 8.0.0-alpha.72
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/workers.js +15 -27
- package/helpers/workers.js.map +1 -1
- package/hmr/client/hot-context.js +2 -2
- package/hmr/client/hot-context.js.map +1 -1
- package/hmr/client/utils.js +5 -5
- package/hmr/client/utils.js.map +1 -1
- package/hmr/entry-runtime.js +14 -8
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/client/index.js +33 -113
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/frameworks/angular/server/strategy.js +1 -1
- package/hmr/frameworks/angular/server/strategy.js.map +1 -1
- package/hmr/frameworks/angular/server/websocket-angular-hot-update.js +2 -2
- package/hmr/frameworks/angular/server/websocket-angular-hot-update.js.map +1 -1
- package/hmr/frameworks/solid/client/app-runtime.js +2 -2
- package/hmr/frameworks/solid/client/app-runtime.js.map +1 -1
- package/hmr/frameworks/vue/client/index.js +1 -1
- package/hmr/frameworks/vue/client/index.js.map +1 -1
- package/hmr/frameworks/vue/server/sfc-route-shared.d.ts +1 -1
- package/hmr/frameworks/vue/server/sfc-route-shared.js +1 -1
- package/hmr/frameworks/vue/server/strategy.js +1 -1
- package/hmr/frameworks/vue/server/strategy.js.map +1 -1
- package/hmr/server/framework-strategy.d.ts +1 -1
- package/hmr/server/import-map.d.ts +3 -3
- package/hmr/server/import-map.js +3 -3
- package/hmr/server/websocket-import-map-route.d.ts +1 -1
- package/hmr/server/websocket-import-map-route.js +1 -1
- package/hmr/server/websocket-ns-m-paths.js +1 -1
- package/hmr/server/websocket-ns-m-paths.js.map +1 -1
- package/hmr/server/websocket-ns-m.js +1 -1
- package/hmr/server/websocket-ns-m.js.map +1 -1
- package/hmr/server/websocket-served-module-helpers.js +1 -1
- package/hmr/server/websocket-served-module-helpers.js.map +1 -1
- package/hmr/shared/ns-globals.d.ts +2 -1
- package/hmr/shared/ns-globals.js +1 -1
- package/hmr/shared/ns-globals.js.map +1 -1
- package/hmr/shared/runtime/boot-complete.d.ts +1 -1
- package/hmr/shared/runtime/boot-complete.js +1 -1
- package/hmr/shared/runtime/browser-runtime-contract.d.ts +11 -9
- package/hmr/shared/runtime/browser-runtime-contract.js +3 -3
- package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -1
- package/hmr/shared/runtime/ns-runtime-test-double.d.ts +3 -3
- package/hmr/shared/runtime/ns-runtime-test-double.js +2 -2
- package/hmr/shared/runtime/ns-runtime-test-double.js.map +1 -1
- package/hmr/shared/runtime/root-placeholder.js +1 -1
- package/hmr/shared/runtime/root-placeholder.js.map +1 -1
- package/hmr/shared/runtime/session-bootstrap.js +16 -9
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
- package/hmr/shared/runtime/worker-tracking.d.ts +28 -0
- package/hmr/shared/runtime/worker-tracking.js +114 -0
- package/hmr/shared/runtime/worker-tracking.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface WorkerSweepResult {
|
|
2
|
+
/** Workers whose `terminate()` was called successfully. */
|
|
3
|
+
terminated: number;
|
|
4
|
+
/** Workers whose `terminate()` threw (already dead, native error, …). */
|
|
5
|
+
failed: number;
|
|
6
|
+
/** Size of the tracked set before the sweep. */
|
|
7
|
+
total: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Patch the global `Worker` constructor so every construction is recorded in
|
|
11
|
+
* `g.__NS_HMR_WORKERS__`. Idempotent (safe to call from every boot path);
|
|
12
|
+
* transparent to callers — `instanceof`, prototype methods and statics all
|
|
13
|
+
* resolve through the native constructor, and subclassing keeps working via
|
|
14
|
+
* `new.target`.
|
|
15
|
+
*
|
|
16
|
+
* Returns `false` when the realm has no `Worker` (tests, worker realms with
|
|
17
|
+
* workers disabled) or the global scope rejects the patch.
|
|
18
|
+
*/
|
|
19
|
+
export declare function installWorkerConstructorTracking(g: any, options?: {
|
|
20
|
+
verbose?: boolean;
|
|
21
|
+
}): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Terminate every worker in the tracked set and clear it. Per-worker
|
|
24
|
+
* failures are counted, never thrown — a single misbehaving worker must not
|
|
25
|
+
* abort the HMR cycle that triggered the sweep. Clearing unconditionally
|
|
26
|
+
* keeps the set from growing unbounded across cycles.
|
|
27
|
+
*/
|
|
28
|
+
export declare function sweepTrackedWorkers(g: any): WorkerSweepResult;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Dev-session worker teardown — fully userland.
|
|
2
|
+
//
|
|
3
|
+
// The NativeScript runtime deliberately exposes no worker-teardown member on
|
|
4
|
+
// the `ns:module` builtin (see the iOS repo's
|
|
5
|
+
// WORKER_TERMINATION_USERLAND_REVIEW.md decision record). Instead the dev
|
|
6
|
+
// session patches the global `Worker` constructor BEFORE any app, framework,
|
|
7
|
+
// or vendor code evaluates, so every main-realm spawn — including plugin
|
|
8
|
+
// `dist` code and hand-written `new Worker(...)` calls the transform
|
|
9
|
+
// pipeline never saw — lands in the session-wide tracked set
|
|
10
|
+
// (`globalThis.__NS_HMR_WORKERS__`). The HMR client sweeps that set before
|
|
11
|
+
// framework reboots.
|
|
12
|
+
//
|
|
13
|
+
// Nested workers need no tracking here: `worker.terminate()` tears down the
|
|
14
|
+
// worker's native runtime, whose destructor terminates that realm's child
|
|
15
|
+
// workers, cascading down the worker tree. And the sweep can never run
|
|
16
|
+
// inside a worker realm — the dev client only evaluates on the main realm —
|
|
17
|
+
// so a stuck worker cannot take down its peers.
|
|
18
|
+
/**
|
|
19
|
+
* Patch the global `Worker` constructor so every construction is recorded in
|
|
20
|
+
* `g.__NS_HMR_WORKERS__`. Idempotent (safe to call from every boot path);
|
|
21
|
+
* transparent to callers — `instanceof`, prototype methods and statics all
|
|
22
|
+
* resolve through the native constructor, and subclassing keeps working via
|
|
23
|
+
* `new.target`.
|
|
24
|
+
*
|
|
25
|
+
* Returns `false` when the realm has no `Worker` (tests, worker realms with
|
|
26
|
+
* workers disabled) or the global scope rejects the patch.
|
|
27
|
+
*/
|
|
28
|
+
export function installWorkerConstructorTracking(g, options) {
|
|
29
|
+
let NativeWorker;
|
|
30
|
+
try {
|
|
31
|
+
NativeWorker = g && g.Worker;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
if (typeof NativeWorker !== 'function') {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (g.__NS_HMR_WORKER_TRACKING_INSTALLED__ === true) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
let tracked;
|
|
43
|
+
try {
|
|
44
|
+
tracked = g.__NS_HMR_WORKERS__ instanceof Set ? g.__NS_HMR_WORKERS__ : (g.__NS_HMR_WORKERS__ = new Set());
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const TrackedWorker = function Worker(...args) {
|
|
50
|
+
const instance = Reflect.construct(NativeWorker, args, new.target || TrackedWorker);
|
|
51
|
+
try {
|
|
52
|
+
tracked.add(instance);
|
|
53
|
+
}
|
|
54
|
+
catch { }
|
|
55
|
+
return instance;
|
|
56
|
+
};
|
|
57
|
+
TrackedWorker.prototype = NativeWorker.prototype;
|
|
58
|
+
try {
|
|
59
|
+
// Statics (if the host ever adds any) keep resolving through the
|
|
60
|
+
// native constructor.
|
|
61
|
+
Object.setPrototypeOf(TrackedWorker, NativeWorker);
|
|
62
|
+
}
|
|
63
|
+
catch { }
|
|
64
|
+
try {
|
|
65
|
+
g.Worker = TrackedWorker;
|
|
66
|
+
g.__NS_HMR_WORKER_TRACKING_INSTALLED__ = true;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (options?.verbose) {
|
|
72
|
+
console.info('[ns-hmr][workers] Worker constructor tracking installed');
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Terminate every worker in the tracked set and clear it. Per-worker
|
|
78
|
+
* failures are counted, never thrown — a single misbehaving worker must not
|
|
79
|
+
* abort the HMR cycle that triggered the sweep. Clearing unconditionally
|
|
80
|
+
* keeps the set from growing unbounded across cycles.
|
|
81
|
+
*/
|
|
82
|
+
export function sweepTrackedWorkers(g) {
|
|
83
|
+
let tracked;
|
|
84
|
+
try {
|
|
85
|
+
tracked = g && g.__NS_HMR_WORKERS__;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// fall through with `tracked === undefined`
|
|
89
|
+
}
|
|
90
|
+
const total = tracked && typeof tracked.size === 'number' ? tracked.size : 0;
|
|
91
|
+
let terminated = 0;
|
|
92
|
+
let failed = 0;
|
|
93
|
+
if (tracked && total > 0) {
|
|
94
|
+
for (const worker of tracked) {
|
|
95
|
+
try {
|
|
96
|
+
if (worker && typeof worker.terminate === 'function') {
|
|
97
|
+
worker.terminate();
|
|
98
|
+
terminated++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
failed++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (tracked) {
|
|
107
|
+
try {
|
|
108
|
+
tracked.clear();
|
|
109
|
+
}
|
|
110
|
+
catch { }
|
|
111
|
+
}
|
|
112
|
+
return { terminated, failed, total };
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=worker-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-tracking.js","sourceRoot":"","sources":["../../../../../../packages/vite/hmr/shared/runtime/worker-tracking.ts"],"names":[],"mappings":"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"}
|