@nativescript/vite 8.0.0-alpha.56 → 8.0.0-alpha.58
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/configuration/angular.js +3 -3
- package/configuration/angular.js.map +1 -1
- package/helpers/global-defines.d.ts +1 -1
- package/helpers/global-defines.js +1 -1
- package/helpers/workers.js +10 -10
- package/helpers/workers.js.map +1 -1
- package/hmr/client/hot-context.d.ts +67 -0
- package/hmr/client/hot-context.js +284 -0
- package/hmr/client/hot-context.js.map +1 -0
- package/hmr/client/index.js +49 -60
- package/hmr/client/index.js.map +1 -1
- package/hmr/client/utils.js +29 -57
- package/hmr/client/utils.js.map +1 -1
- package/hmr/entry-runtime.js +73 -39
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/client/index.js +103 -161
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/frameworks/angular/server/strategy.js +4 -6
- 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 +9 -7
- package/hmr/frameworks/solid/client/app-runtime.js.map +1 -1
- package/hmr/frameworks/solid/server/strategy.js +1 -1
- package/hmr/frameworks/solid/server/strategy.js.map +1 -1
- package/hmr/frameworks/typescript/server/strategy.js +1 -1
- package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
- package/hmr/frameworks/vue/client/index.d.ts +1 -0
- package/hmr/frameworks/vue/client/index.js +90 -12
- package/hmr/frameworks/vue/client/index.js.map +1 -1
- package/hmr/frameworks/vue/server/sfc-route-assemble.js +43 -39
- package/hmr/frameworks/vue/server/sfc-route-assemble.js.map +1 -1
- package/hmr/frameworks/vue/server/sfc-route-serve.js +18 -30
- package/hmr/frameworks/vue/server/sfc-route-serve.js.map +1 -1
- package/hmr/frameworks/vue/server/sfc-route-shared.d.ts +13 -16
- package/hmr/frameworks/vue/server/sfc-route-shared.js +20 -24
- package/hmr/frameworks/vue/server/sfc-route-shared.js.map +1 -1
- package/hmr/frameworks/vue/server/strategy.js +14 -12
- package/hmr/frameworks/vue/server/strategy.js.map +1 -1
- package/hmr/helpers/vendor-rewrite.d.ts +1 -1
- package/hmr/helpers/vendor-rewrite.js +5 -3
- package/hmr/helpers/vendor-rewrite.js.map +1 -1
- package/hmr/server/boot-closure-route.d.ts +16 -0
- package/hmr/server/boot-closure-route.js +99 -0
- package/hmr/server/boot-closure-route.js.map +1 -0
- package/hmr/server/core-bundle.d.ts +116 -0
- package/hmr/server/core-bundle.js +460 -0
- package/hmr/server/core-bundle.js.map +1 -0
- package/hmr/server/framework-strategy.d.ts +10 -5
- package/hmr/server/hmr-module-graph.js +7 -6
- package/hmr/server/hmr-module-graph.js.map +1 -1
- package/hmr/server/import-map.d.ts +3 -3
- package/hmr/server/import-map.js +4 -4
- package/hmr/server/import-map.js.map +1 -1
- package/hmr/server/ns-rt-route.js +2 -1
- package/hmr/server/ns-rt-route.js.map +1 -1
- package/hmr/server/perf-instrumentation.js +1 -1
- package/hmr/server/perf-instrumentation.js.map +1 -1
- package/hmr/server/process-code-for-device.d.ts +16 -0
- package/hmr/server/process-code-for-device.js +94 -2
- package/hmr/server/process-code-for-device.js.map +1 -1
- package/hmr/server/vite-plugin.d.ts +1 -0
- package/hmr/server/vite-plugin.js +110 -20
- package/hmr/server/vite-plugin.js.map +1 -1
- 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-core.d.ts +16 -3
- package/hmr/server/websocket-ns-core.js +100 -5
- package/hmr/server/websocket-ns-core.js.map +1 -1
- package/hmr/server/websocket-ns-m-paths.d.ts +1 -3
- package/hmr/server/websocket-ns-m-paths.js +24 -80
- package/hmr/server/websocket-ns-m-paths.js.map +1 -1
- package/hmr/server/websocket-ns-m.js +41 -77
- package/hmr/server/websocket-ns-m.js.map +1 -1
- package/hmr/server/websocket-served-module-helpers.d.ts +1 -1
- package/hmr/server/websocket-served-module-helpers.js +11 -5
- package/hmr/server/websocket-served-module-helpers.js.map +1 -1
- package/hmr/server/websocket-txn.js +4 -1
- package/hmr/server/websocket-txn.js.map +1 -1
- package/hmr/server/websocket.js +8 -1
- package/hmr/server/websocket.js.map +1 -1
- package/hmr/shared/ns-globals.d.ts +2 -15
- package/hmr/shared/ns-globals.js +2 -3
- package/hmr/shared/ns-globals.js.map +1 -1
- package/hmr/shared/runtime/boot-complete.d.ts +14 -0
- package/hmr/shared/runtime/boot-complete.js +32 -0
- package/hmr/shared/runtime/boot-complete.js.map +1 -0
- package/hmr/shared/runtime/boot-progress.js +6 -5
- package/hmr/shared/runtime/boot-progress.js.map +1 -1
- package/hmr/shared/runtime/boot-timeline.d.ts +1 -1
- package/hmr/shared/runtime/boot-timeline.js +6 -7
- package/hmr/shared/runtime/boot-timeline.js.map +1 -1
- package/hmr/shared/runtime/browser-runtime-contract.d.ts +34 -22
- package/hmr/shared/runtime/browser-runtime-contract.js +6 -9
- package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -1
- package/hmr/shared/runtime/dev-overlay.js +1 -1
- package/hmr/shared/runtime/dev-overlay.js.map +1 -1
- package/hmr/shared/runtime/root-placeholder.js +5 -4
- package/hmr/shared/runtime/root-placeholder.js.map +1 -1
- package/hmr/shared/runtime/session-bootstrap.js +90 -48
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-eval @nativescript/core bundle for device serving (bundle mode).
|
|
3
|
+
*
|
|
4
|
+
* DEFAULT MODE (consumers)
|
|
5
|
+
* ------------------------
|
|
6
|
+
* Instead of serving @nativescript/core per-module through Vite's transform
|
|
7
|
+
* pipeline (~hundreds of serial HTTP fetches + per-file transforms during cold
|
|
8
|
+
* boot), the dev server pre-bundles the ENTIRE core package with esbuild into
|
|
9
|
+
* one ESM payload served at `GET /ns/core-bundle.mjs`. The canonical
|
|
10
|
+
* `/ns/core[/<sub>]` URL space is preserved — those routes serve THIN SHIMS
|
|
11
|
+
* that statically import the bundle and re-export the requested subpath's
|
|
12
|
+
* namespace from the `globalThis.__NS_CORE_MODULES__` registry the bundle
|
|
13
|
+
* populates. Because every shim's only dependency is the one bundle URL,
|
|
14
|
+
* V8/iOS evaluates core exactly once per app lifetime — the single-realm
|
|
15
|
+
* invariant is enforced by construction, with ONE big prefetchable payload
|
|
16
|
+
* instead of a deep serial fetch chain.
|
|
17
|
+
*
|
|
18
|
+
* OPT-IN PER-MODULE MODE (core maintainers)
|
|
19
|
+
* -----------------------------------------
|
|
20
|
+
* Set `NS_CORE_PER_MODULE=1` to keep the classic per-module `/ns/core` bridge
|
|
21
|
+
* (websocket-ns-core.ts). That is the right mode when editing
|
|
22
|
+
* `@nativescript/core` source live inside the NativeScript monorepo: each core
|
|
23
|
+
* module stays individually served/transformed so core edits participate in
|
|
24
|
+
* HMR. Consumers of the published package don't edit core mid-session, so the
|
|
25
|
+
* bundle is both safe and much faster for them.
|
|
26
|
+
*
|
|
27
|
+
* FAILURE FALLBACK
|
|
28
|
+
* ----------------
|
|
29
|
+
* If the esbuild bundle build fails for any reason, the service marks itself
|
|
30
|
+
* failed and `/ns/core[/<sub>]` transparently falls back to the per-module
|
|
31
|
+
* bridge for the whole session (logged loudly once). Boot still works; only
|
|
32
|
+
* the speed win is lost.
|
|
33
|
+
*/
|
|
34
|
+
import { createRequire } from 'node:module';
|
|
35
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
36
|
+
import * as path from 'node:path';
|
|
37
|
+
import { createHash } from 'node:crypto';
|
|
38
|
+
import * as esbuild from 'esbuild';
|
|
39
|
+
import { getCliFlags } from '../../helpers/cli-flags.js';
|
|
40
|
+
import { getGlobalDefines } from '../../helpers/global-defines.js';
|
|
41
|
+
import { getProjectFlavor } from '../../helpers/flavor.js';
|
|
42
|
+
import { createNativeClassEsbuildPlugin } from '../../helpers/nativeclass-esbuild-plugin.js';
|
|
43
|
+
import { createUnicodeRegexEsbuildPlugin } from '../shared/vendor/vendor-esbuild-plugins.js';
|
|
44
|
+
import { moduleRegistrationKeys, normalizeCoreSub } from '../../helpers/ns-core-url.js';
|
|
45
|
+
import { buildShapeInstallHeader } from './ns-core-cjs-shape.js';
|
|
46
|
+
import { resolveVerboseFlag } from '../../helpers/logging.js';
|
|
47
|
+
import { nsConfigToJson } from '../../helpers/utils.js';
|
|
48
|
+
import { aliasCssTree } from '../../helpers/css-tree.js';
|
|
49
|
+
import { getWorkspaceCoreSourceRoot } from './websocket-served-module-helpers.js';
|
|
50
|
+
/**
|
|
51
|
+
* Per-module /ns/core serving mode (vs the default single-eval bundle).
|
|
52
|
+
*
|
|
53
|
+
* `NS_CORE_PER_MODULE=1|true` forces it on, `0|false` forces bundle mode.
|
|
54
|
+
* When unset, it AUTO-ENABLES for monorepo core source (packages/core in the
|
|
55
|
+
* NativeScript repo). Two reasons:
|
|
56
|
+
* - core maintainers edit core live, and per-module serving keeps those
|
|
57
|
+
* edits in HMR;
|
|
58
|
+
* - realm safety: the build-time externalizer emits
|
|
59
|
+
* `/ns/m/packages/core/<file>` URLs for workspace-source core (see the
|
|
60
|
+
* `ns-core-external-urls` workspace branch in configuration/base.ts), so
|
|
61
|
+
* the served graph's core realm lives under /ns/m. A bundle-mode
|
|
62
|
+
* `/ns/core-bundle.mjs` would evaluate a complete SECOND copy of core for
|
|
63
|
+
* the entry's `/ns/core/globals|application|…` imports — duplicate native
|
|
64
|
+
* class registrations crash in MetadataBuilder at startup.
|
|
65
|
+
*/
|
|
66
|
+
export function isCorePerModuleServingEnabled(env = process.env, hasWorkspaceCoreSource = () => getWorkspaceCoreSourceRoot() !== null) {
|
|
67
|
+
const v = env.NS_CORE_PER_MODULE;
|
|
68
|
+
if (v === '1' || v === 'true')
|
|
69
|
+
return true;
|
|
70
|
+
if (v === '0' || v === 'false')
|
|
71
|
+
return false;
|
|
72
|
+
try {
|
|
73
|
+
return hasWorkspaceCoreSource();
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolve the physical @nativescript/core root the same way configuration/
|
|
81
|
+
* base.ts does: prefer monorepo source (`<workspace>/packages/core`), else the
|
|
82
|
+
* node_modules install reachable from the project root.
|
|
83
|
+
*/
|
|
84
|
+
export function resolveCoreRootForBundle(projectRoot) {
|
|
85
|
+
const workspaceCorePkg = path.resolve(projectRoot, '../../packages/core/package.json');
|
|
86
|
+
if (existsSync(workspaceCorePkg)) {
|
|
87
|
+
return path.dirname(workspaceCorePkg);
|
|
88
|
+
}
|
|
89
|
+
const req = createRequire(path.join(projectRoot, 'package.json'));
|
|
90
|
+
const corePkg = req.resolve('@nativescript/core/package.json');
|
|
91
|
+
return path.dirname(corePkg);
|
|
92
|
+
}
|
|
93
|
+
// Directories that are not runtime module space. `debugger/` and
|
|
94
|
+
// `inspector_modules` only evaluate when a Web Inspector session loads them
|
|
95
|
+
// (via the app bundle, not HTTP) and carry heavyweight side effects (network
|
|
96
|
+
// interception) that must NOT run on every boot, so they stay out of the
|
|
97
|
+
// bundle. A request for an excluded subpath falls back to per-module serving —
|
|
98
|
+
// realm-safe, because the per-module response's own core imports are rewritten
|
|
99
|
+
// back to `/ns/core/<sub>` shim URLs that resolve into the bundle realm.
|
|
100
|
+
const EXCLUDED_DIRS = new Set(['node_modules', 'platforms', 'cli-hooks', 'debugger', '.git', '__tests__', 'fixtures']);
|
|
101
|
+
const EXCLUDED_TOP_LEVEL_MODULES = new Set(['inspector_modules', 'bundle-entry-points', 'references', 'global-types', 'vite.config', 'vitest.setup']);
|
|
102
|
+
const MODULE_FILE_RE = /\.(?:ts|tsx|js|mjs)$/;
|
|
103
|
+
const NON_MODULE_FILE_RE = /\.(?:d\.ts|spec\.(?:ts|js|tsx)|test\.(?:ts|js|tsx))$/;
|
|
104
|
+
function platformSuffixOf(baseName) {
|
|
105
|
+
const m = baseName.match(/\.(ios|android|visionos)$/);
|
|
106
|
+
return m?.[1] || null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Enumerate every importable core subpath (canonical form, per
|
|
110
|
+
* `normalizeCoreSub`) for the given platform. A subpath is included when it
|
|
111
|
+
* has a platform-neutral variant OR a variant for the current platform —
|
|
112
|
+
* other-platform-only modules (e.g. `ui/frame/activity.android` on iOS) are
|
|
113
|
+
* skipped since they can never resolve for this build.
|
|
114
|
+
*/
|
|
115
|
+
export function enumerateCoreModuleSubpaths(coreRoot, platform) {
|
|
116
|
+
const isApple = platform !== 'android';
|
|
117
|
+
// canonical sub → has a variant loadable on this platform
|
|
118
|
+
const loadable = new Map();
|
|
119
|
+
const visit = (dirAbs, relPrefix) => {
|
|
120
|
+
let entries;
|
|
121
|
+
try {
|
|
122
|
+
entries = readdirSync(dirAbs, { withFileTypes: true });
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
for (const entry of entries) {
|
|
128
|
+
const name = entry.name;
|
|
129
|
+
if (name.startsWith('.'))
|
|
130
|
+
continue;
|
|
131
|
+
const rel = relPrefix ? `${relPrefix}/${name}` : name;
|
|
132
|
+
let isDir = entry.isDirectory();
|
|
133
|
+
if (entry.isSymbolicLink()) {
|
|
134
|
+
try {
|
|
135
|
+
isDir = statSync(path.join(dirAbs, name)).isDirectory();
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (isDir) {
|
|
142
|
+
if (EXCLUDED_DIRS.has(name))
|
|
143
|
+
continue;
|
|
144
|
+
visit(path.join(dirAbs, name), rel);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (!MODULE_FILE_RE.test(name) || NON_MODULE_FILE_RE.test(name))
|
|
148
|
+
continue;
|
|
149
|
+
const relNoExt = rel.replace(MODULE_FILE_RE, '');
|
|
150
|
+
const suffix = platformSuffixOf(relNoExt);
|
|
151
|
+
const platformOk = suffix === null || (isApple ? suffix !== 'android' : suffix === 'android');
|
|
152
|
+
const canonical = normalizeCoreSub(relNoExt);
|
|
153
|
+
// '' is the package main — always included, not part of the sub list.
|
|
154
|
+
if (!canonical)
|
|
155
|
+
continue;
|
|
156
|
+
if (!relPrefix && EXCLUDED_TOP_LEVEL_MODULES.has(canonical))
|
|
157
|
+
continue;
|
|
158
|
+
if (canonical.split('/').some((seg) => EXCLUDED_TOP_LEVEL_MODULES.has(seg) || EXCLUDED_DIRS.has(seg)))
|
|
159
|
+
continue;
|
|
160
|
+
// Cross-platform helper modules without a platform suffix in their
|
|
161
|
+
// own filename (e.g. `ui/frame/frame-helper-for-android`) import
|
|
162
|
+
// siblings that only exist with the OTHER platform's suffix, so
|
|
163
|
+
// force-importing them on this platform can never resolve. They are
|
|
164
|
+
// only reachable from that platform's `index.<platform>` graph.
|
|
165
|
+
if (/-for-android$/.test(canonical) && isApple)
|
|
166
|
+
continue;
|
|
167
|
+
if (/-for-(?:ios|visionos)$/.test(canonical) && !isApple)
|
|
168
|
+
continue;
|
|
169
|
+
loadable.set(canonical, loadable.get(canonical) || false || platformOk);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
visit(coreRoot, '');
|
|
173
|
+
return Array.from(loadable.entries())
|
|
174
|
+
.filter(([, ok]) => ok)
|
|
175
|
+
.map(([sub]) => sub)
|
|
176
|
+
.sort();
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Synthetic esbuild entry: evaluate core once, expose every subpath's live
|
|
180
|
+
* namespace through `globalThis.__NS_CORE_MODULES__` (the SAME registry the
|
|
181
|
+
* per-module bridge footers populate, so the vendor CJS `require()` shim and
|
|
182
|
+
* `_nsReq` lookups keep working unchanged), and re-export the package main so
|
|
183
|
+
* `/ns/core-bundle.mjs` itself has core's full named-export surface.
|
|
184
|
+
*/
|
|
185
|
+
export function buildCoreBundleEntryCode(subs) {
|
|
186
|
+
const lines = [];
|
|
187
|
+
// Package main first so its side-effect order (globals, bootstrap) matches
|
|
188
|
+
// the package's own intent; esbuild still evaluates shared deps once.
|
|
189
|
+
lines.push(`import * as __ns_core_main__ from ${JSON.stringify('@nativescript/core')};`);
|
|
190
|
+
subs.forEach((sub, i) => {
|
|
191
|
+
lines.push(`import * as __ns_core_m_${i}__ from ${JSON.stringify(`@nativescript/core/${sub}`)};`);
|
|
192
|
+
});
|
|
193
|
+
lines.push('');
|
|
194
|
+
lines.push('const __nsReg = (globalThis.__NS_CORE_MODULES__ || (globalThis.__NS_CORE_MODULES__ = Object.create(null)));');
|
|
195
|
+
lines.push(`const __nsShapeFn = typeof globalThis.__NS_CJS_SHAPE__ === 'function' ? globalThis.__NS_CJS_SHAPE__ : function (x) { return x; };`);
|
|
196
|
+
lines.push('const __nsRegSet = (keys, ns) => { const shaped = __nsShapeFn(ns); for (const k of keys) { __nsReg[k] = shaped; } };');
|
|
197
|
+
lines.push(`__nsRegSet(${JSON.stringify(moduleRegistrationKeys(''))}, __ns_core_main__);`);
|
|
198
|
+
subs.forEach((sub, i) => {
|
|
199
|
+
lines.push(`__nsRegSet(${JSON.stringify(moduleRegistrationKeys(sub))}, __ns_core_m_${i}__);`);
|
|
200
|
+
});
|
|
201
|
+
lines.push(`try { globalThis.__NS_CORE_EVAL_COUNT__ = (globalThis.__NS_CORE_EVAL_COUNT__ || 0) + 1; globalThis.__NS_CORE_BUNDLE_MODE__ = true; } catch (e) {}`);
|
|
202
|
+
lines.push(`export * from ${JSON.stringify('@nativescript/core')};`);
|
|
203
|
+
lines.push('');
|
|
204
|
+
return lines.join('\n');
|
|
205
|
+
}
|
|
206
|
+
// Platform-first extension order, mirroring Vite's `platformExtensions` in
|
|
207
|
+
// configuration/base.ts so the bundle resolves the same physical files the
|
|
208
|
+
// per-module bridge would (platform variant preferred over the bare one).
|
|
209
|
+
function coreResolveExtensions(platform) {
|
|
210
|
+
if (platform === 'android') {
|
|
211
|
+
return ['.android.tsx', '.tsx', '.android.jsx', '.jsx', '.android.ts', '.ts', '.android.js', '.js', '.mjs', '.cjs', '.json'];
|
|
212
|
+
}
|
|
213
|
+
return ['.ios.tsx', '.visionos.tsx', '.tsx', '.ios.jsx', '.visionos.jsx', '.jsx', '.ios.ts', '.visionos.ts', '.ts', '.ios.js', '.visionos.js', '.js', '.mjs', '.cjs', '.json'];
|
|
214
|
+
}
|
|
215
|
+
// Node built-ins the device runtime cannot resolve — externalized exactly like
|
|
216
|
+
// the vendor bundle build (see manifest.ts).
|
|
217
|
+
const NODE_BUILTINS = ['assert', 'async_hooks', 'buffer', 'child_process', 'cluster', 'console', 'constants', 'crypto', 'dgram', 'diagnostics_channel', 'dns', 'domain', 'events', 'fs', 'fs/promises', 'http', 'http2', 'https', 'inspector', 'module', 'net', 'os', 'path', 'path/posix', 'path/win32', 'perf_hooks', 'process', 'punycode', 'querystring', 'readline', 'repl', 'stream', 'stream/web', 'stream/promises', 'string_decoder', 'sys', 'timers', 'timers/promises', 'tls', 'trace_events', 'tty', 'url', 'util', 'v8', 'vm', 'wasi', 'worker_threads', 'zlib'];
|
|
218
|
+
const NODE_EXTERNALS = [...NODE_BUILTINS, ...NODE_BUILTINS.map((b) => `node:${b}`)];
|
|
219
|
+
export async function generateCoreBundle(options) {
|
|
220
|
+
const { projectRoot, platform, mode, flavor, verbose } = options;
|
|
221
|
+
const t0 = Date.now();
|
|
222
|
+
const coreRoot = resolveCoreRootForBundle(projectRoot);
|
|
223
|
+
const subs = enumerateCoreModuleSubpaths(coreRoot, String(platform));
|
|
224
|
+
const entryCode = buildCoreBundleEntryCode(subs);
|
|
225
|
+
// Resolve bare @nativescript/core[/sub] specifiers against the resolved
|
|
226
|
+
// core root directly. esbuild's default node-resolution can't be trusted
|
|
227
|
+
// here for two reasons: (1) monorepo apps consume core via a symlink whose
|
|
228
|
+
// realpath escapes the project's node_modules, and (2) the package's
|
|
229
|
+
// `main: "index"` is extensionless. Mapping to `<coreRoot>/<sub>` and
|
|
230
|
+
// letting resolveExtensions pick the platform file mirrors Vite's alias +
|
|
231
|
+
// extension behavior byte-for-byte.
|
|
232
|
+
const coreAliasPlugin = {
|
|
233
|
+
name: 'ns-core-bundle-alias',
|
|
234
|
+
setup(build) {
|
|
235
|
+
build.onResolve({ filter: /^@nativescript\/core(?:\/.*)?$/ }, (args) => {
|
|
236
|
+
const sub = args.path === '@nativescript/core' ? '' : args.path.slice('@nativescript/core/'.length);
|
|
237
|
+
const target = sub ? path.join(coreRoot, sub) : path.join(coreRoot, 'index');
|
|
238
|
+
return build.resolve(target, { kind: args.kind, resolveDir: coreRoot });
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
// Mirror the Vite pipeline's css-tree environment aliases: css-tree's ESM
|
|
243
|
+
// files do `import { createRequire } from 'module'` to lazily require JSON
|
|
244
|
+
// data — on device that bare 'module' import must resolve to our polyfill
|
|
245
|
+
// (same replacement `aliasCssTree` feeds Vite's resolver; see
|
|
246
|
+
// helpers/css-tree.ts and polyfills/module.ts). In the source tree the
|
|
247
|
+
// replacement's `.js` file may not exist yet (only `.ts`) — fall back.
|
|
248
|
+
const resolvePolyfillFile = (p) => {
|
|
249
|
+
if (existsSync(p))
|
|
250
|
+
return p;
|
|
251
|
+
const ts = p.replace(/\.js$/, '.ts');
|
|
252
|
+
return existsSync(ts) ? ts : p;
|
|
253
|
+
};
|
|
254
|
+
const polyfillAliases = new Map();
|
|
255
|
+
for (const { find, replacement } of aliasCssTree) {
|
|
256
|
+
polyfillAliases.set(String(find), resolvePolyfillFile(replacement));
|
|
257
|
+
}
|
|
258
|
+
const cssTreeEnvPlugin = {
|
|
259
|
+
name: 'ns-core-bundle-css-tree-env',
|
|
260
|
+
setup(build) {
|
|
261
|
+
build.onResolve({ filter: /^(?:node:)?module$|^mdn-data\/css\// }, (args) => {
|
|
262
|
+
const key = args.path.replace(/^node:/, '');
|
|
263
|
+
const target = polyfillAliases.get(key);
|
|
264
|
+
return target ? { path: target } : undefined;
|
|
265
|
+
});
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
// `~/package.json` — core's profiling/style-scope modules import the APP's
|
|
269
|
+
// nativescript.config as JSON through this alias (Vite serves it via the
|
|
270
|
+
// nsvite:nsconfig-json virtual module; see helpers/config-as-json.ts).
|
|
271
|
+
// Mirror that here with the same nsConfigToJson() payload.
|
|
272
|
+
const nsConfigJson = (() => {
|
|
273
|
+
try {
|
|
274
|
+
return JSON.stringify(nsConfigToJson());
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// No nativescript.config.ts reachable (tests, bare fixtures) — the
|
|
278
|
+
// importers only read optional profiling/cssParser hints from it.
|
|
279
|
+
return '{}';
|
|
280
|
+
}
|
|
281
|
+
})();
|
|
282
|
+
const nsConfigPlugin = {
|
|
283
|
+
name: 'ns-core-bundle-nsconfig',
|
|
284
|
+
setup(build) {
|
|
285
|
+
build.onResolve({ filter: /^~\/package\.json$/ }, () => ({ path: 'ns-core-bundle:nsconfig-json', namespace: 'ns-core-bundle-virtual' }));
|
|
286
|
+
build.onLoad({ filter: /^ns-core-bundle:nsconfig-json$/, namespace: 'ns-core-bundle-virtual' }, () => ({
|
|
287
|
+
contents: `export default ${nsConfigJson};`,
|
|
288
|
+
loader: 'js',
|
|
289
|
+
}));
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
const defines = (() => {
|
|
293
|
+
const raw = getGlobalDefines({
|
|
294
|
+
platform: String(platform),
|
|
295
|
+
targetMode: mode === 'development' ? 'development' : 'production',
|
|
296
|
+
verbose: !!verbose,
|
|
297
|
+
flavor: flavor ?? '',
|
|
298
|
+
isCI: !!process.env.CI,
|
|
299
|
+
});
|
|
300
|
+
const out = {};
|
|
301
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
302
|
+
out[key] = typeof value === 'string' ? value : JSON.stringify(value);
|
|
303
|
+
}
|
|
304
|
+
out['process.env.NODE_ENV'] = JSON.stringify(mode === 'development' ? 'development' : 'production');
|
|
305
|
+
return out;
|
|
306
|
+
})();
|
|
307
|
+
const buildResult = await esbuild.build({
|
|
308
|
+
stdin: {
|
|
309
|
+
contents: entryCode,
|
|
310
|
+
resolveDir: projectRoot,
|
|
311
|
+
sourcefile: 'ns-core-bundle-entry.ts',
|
|
312
|
+
loader: 'ts',
|
|
313
|
+
},
|
|
314
|
+
platform: 'neutral',
|
|
315
|
+
format: 'esm',
|
|
316
|
+
bundle: true,
|
|
317
|
+
target: 'es2019',
|
|
318
|
+
// Keep every module body — core relies on registration side effects
|
|
319
|
+
// (CssAnimationProperty.register, global.registerModule, …).
|
|
320
|
+
treeShaking: false,
|
|
321
|
+
sourcemap: false,
|
|
322
|
+
write: false,
|
|
323
|
+
logLevel: 'silent',
|
|
324
|
+
legalComments: 'eof',
|
|
325
|
+
conditions: ['module', 'react-native', 'import', 'browser', 'default'],
|
|
326
|
+
mainFields: ['module', 'browser', 'main'],
|
|
327
|
+
resolveExtensions: coreResolveExtensions(String(platform)),
|
|
328
|
+
loader: {
|
|
329
|
+
'.css': 'text',
|
|
330
|
+
'.json': 'json',
|
|
331
|
+
},
|
|
332
|
+
define: defines,
|
|
333
|
+
plugins: [coreAliasPlugin, cssTreeEnvPlugin, nsConfigPlugin, createNativeClassEsbuildPlugin(platform), createUnicodeRegexEsbuildPlugin(projectRoot)],
|
|
334
|
+
external: NODE_EXTERNALS,
|
|
335
|
+
});
|
|
336
|
+
if (!buildResult.outputFiles?.length) {
|
|
337
|
+
throw new Error('core bundle generation produced no output');
|
|
338
|
+
}
|
|
339
|
+
// The shape installer must run before the registry writes in the entry
|
|
340
|
+
// body so CJS consumers looking up __NS_CORE_MODULES__ always see
|
|
341
|
+
// plain-object-compatible namespaces (Invariant D).
|
|
342
|
+
const code = ['/* /ns/core-bundle.mjs — single-eval @nativescript/core (dev bundle mode) */', buildShapeInstallHeader(), buildResult.outputFiles[0].text].join('\n');
|
|
343
|
+
const hash = createHash('sha1').update(code).digest('hex');
|
|
344
|
+
const state = {
|
|
345
|
+
code,
|
|
346
|
+
subs: new Set(subs),
|
|
347
|
+
hash,
|
|
348
|
+
builtAt: Date.now(),
|
|
349
|
+
buildMs: Date.now() - t0,
|
|
350
|
+
};
|
|
351
|
+
if (verbose) {
|
|
352
|
+
console.log(`[ns-core-bundle] built ${subs.length} subpaths, ${(code.length / 1024).toFixed(0)}kb in ${state.buildMs}ms (hash ${hash.slice(0, 8)})`);
|
|
353
|
+
}
|
|
354
|
+
return state;
|
|
355
|
+
}
|
|
356
|
+
export function createCoreBundleService(options) {
|
|
357
|
+
let state = null;
|
|
358
|
+
let failed = false;
|
|
359
|
+
let building = null;
|
|
360
|
+
const ensureBuilt = async () => {
|
|
361
|
+
if (state)
|
|
362
|
+
return state;
|
|
363
|
+
if (failed)
|
|
364
|
+
return null;
|
|
365
|
+
if (!building) {
|
|
366
|
+
building = generateCoreBundle(options)
|
|
367
|
+
.then((built) => {
|
|
368
|
+
state = built;
|
|
369
|
+
return built;
|
|
370
|
+
})
|
|
371
|
+
.catch((error) => {
|
|
372
|
+
failed = true;
|
|
373
|
+
console.warn(`[ns-core-bundle] bundle build FAILED — falling back to per-module /ns/core serving for this session. Set NS_CORE_PER_MODULE=1 to silence. Error: ${error?.message || error}`);
|
|
374
|
+
return null;
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
return building;
|
|
378
|
+
};
|
|
379
|
+
return {
|
|
380
|
+
ensureBuilt,
|
|
381
|
+
getState: () => state,
|
|
382
|
+
hasFailed: () => failed,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
let sharedService = null;
|
|
386
|
+
/**
|
|
387
|
+
* Process-wide bundle service derived from the dev server's config + CLI
|
|
388
|
+
* flags. One dev server per process, so a module-level singleton matches the
|
|
389
|
+
* vendor manifest's lifecycle.
|
|
390
|
+
*/
|
|
391
|
+
export function getSharedCoreBundleService(server) {
|
|
392
|
+
if (sharedService)
|
|
393
|
+
return sharedService;
|
|
394
|
+
const cliFlags = (getCliFlags() || {});
|
|
395
|
+
const platform = cliFlags.android ? 'android' : cliFlags.visionos ? 'visionos' : 'ios';
|
|
396
|
+
let flavor = '';
|
|
397
|
+
try {
|
|
398
|
+
flavor = getProjectFlavor();
|
|
399
|
+
}
|
|
400
|
+
catch { }
|
|
401
|
+
sharedService = createCoreBundleService({
|
|
402
|
+
projectRoot: server.config?.root || process.cwd(),
|
|
403
|
+
platform,
|
|
404
|
+
mode: server.config?.mode === 'development' ? 'development' : 'production',
|
|
405
|
+
flavor,
|
|
406
|
+
verbose: resolveVerboseFlag(),
|
|
407
|
+
});
|
|
408
|
+
return sharedService;
|
|
409
|
+
}
|
|
410
|
+
/** Test seam: drop the shared service so specs can mount fresh. */
|
|
411
|
+
export function resetSharedCoreBundleServiceForTests() {
|
|
412
|
+
sharedService = null;
|
|
413
|
+
}
|
|
414
|
+
export const CORE_BUNDLE_PATH = '/ns/core-bundle.mjs';
|
|
415
|
+
/**
|
|
416
|
+
* Shim served at `/ns/core` in bundle mode. `export * from` gives real,
|
|
417
|
+
* live named bindings straight off the bundle module record; the explicit
|
|
418
|
+
* default keeps the "default import + destructure" consumer rewrite working
|
|
419
|
+
* (see buildDefaultExportFooter in ns-core-cjs-shape.ts for that contract).
|
|
420
|
+
*/
|
|
421
|
+
export function buildCoreMainShimCode() {
|
|
422
|
+
return [`/* @nativescript/core bridge (bundle mode) — main */`, `import * as __ns_core_bundle_ns__ from ${JSON.stringify(CORE_BUNDLE_PATH)};`, `export * from ${JSON.stringify(CORE_BUNDLE_PATH)};`, `export default __ns_core_bundle_ns__;`, ``].join('\n');
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Shim served at `/ns/core/<sub>` in bundle mode. The static bundle import
|
|
426
|
+
* guarantees the registry is populated before the body reads it (ESM deps
|
|
427
|
+
* evaluate first), so the named `export const` bindings snapshot the final
|
|
428
|
+
* class/function values. `exportNames` comes from the same disk-based export
|
|
429
|
+
* discovery the per-module bridge relies on (collectStaticExportNamesFromFile).
|
|
430
|
+
*/
|
|
431
|
+
const RESERVED_EXPORT_NAMES = new Set(['default', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'delete', 'do', 'else', 'enum', 'export', 'extends', 'false', 'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'new', 'null', 'return', 'super', 'switch', 'this', 'throw', 'true', 'try', 'typeof', 'var', 'void', 'while', 'with', 'let', 'static', 'yield', 'await', 'eval', 'arguments', '__ns_core_sub_ns__']);
|
|
432
|
+
export function buildCoreSubShimCode(sub, exportNames, hasOwnDefaultExport = false) {
|
|
433
|
+
const canonical = normalizeCoreSub(sub);
|
|
434
|
+
const registryKey = `@nativescript/core/${canonical}`;
|
|
435
|
+
const names = Array.from(new Set(exportNames)).filter((n) => /^[A-Za-z_$][\w$]*$/.test(n) && !RESERVED_EXPORT_NAMES.has(n));
|
|
436
|
+
const lines = [];
|
|
437
|
+
lines.push(`/* @nativescript/core bridge (bundle mode) — sub: ${canonical} */`);
|
|
438
|
+
lines.push(`import ${JSON.stringify(CORE_BUNDLE_PATH)};`);
|
|
439
|
+
lines.push(`const __ns_core_sub_ns__ = (globalThis.__NS_CORE_MODULES__ || {})[${JSON.stringify(registryKey)}];`);
|
|
440
|
+
lines.push(`if (!__ns_core_sub_ns__) { throw new Error(${JSON.stringify(`[ns-core] core bundle registry missing '${registryKey}' — restart the dev server or set NS_CORE_PER_MODULE=1`)}); }`);
|
|
441
|
+
for (const name of names) {
|
|
442
|
+
lines.push(`export const ${name} = __ns_core_sub_ns__.${name};`);
|
|
443
|
+
}
|
|
444
|
+
// Deep-subpath contract (see isDeepCoreSubpath / per-module bridge): a sub
|
|
445
|
+
// that declares its own `export default` (e.g. utils/lazy.js's
|
|
446
|
+
// `export default function lazy`) must expose THAT value as the shim's
|
|
447
|
+
// default — consumers like the vendor bundle do
|
|
448
|
+
// `import lazy from '@nativescript/core/utils/lazy'` and call it directly.
|
|
449
|
+
// Subs without an own default keep the self-namespace default so the
|
|
450
|
+
// "default import + destructure" consumer rewrite still works.
|
|
451
|
+
if (hasOwnDefaultExport) {
|
|
452
|
+
lines.push(`export default __ns_core_sub_ns__.default;`);
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
lines.push(`export default __ns_core_sub_ns__;`);
|
|
456
|
+
}
|
|
457
|
+
lines.push('');
|
|
458
|
+
return lines.join('\n');
|
|
459
|
+
}
|
|
460
|
+
//# sourceMappingURL=core-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-bundle.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/core-bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,8 +85,13 @@ export interface FrameworkServerStrategy {
|
|
|
85
85
|
rewriteFrameworkImports?(code: string): string;
|
|
86
86
|
/** Framework-specific post-clean phase (strip HMR helpers, etc.). */
|
|
87
87
|
postClean?(code: string): string;
|
|
88
|
-
/**
|
|
89
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Collapse framework-specific HTTP endpoint imports to their canonical
|
|
90
|
+
* (unversioned) URLs. Module identity is the URL; freshness is driven by
|
|
91
|
+
* explicit eviction, never URL variation. Versioned inbound shapes from
|
|
92
|
+
* stale cached device code (e.g. `/ns/sfc/<ver>/…`) are stripped here.
|
|
93
|
+
*/
|
|
94
|
+
canonicalizeFrameworkImports?(code: string, origin: string): string;
|
|
90
95
|
/** Optional vendor rewrite hook (e.g. map framework helper imports to vendor). */
|
|
91
96
|
rewriteVendorSpec?(code: string, origin: string, version: number): string;
|
|
92
97
|
/**
|
|
@@ -154,9 +159,9 @@ export interface FrameworkServerStrategy {
|
|
|
154
159
|
*/
|
|
155
160
|
importMapEntries?(origin: string): Record<string, string>;
|
|
156
161
|
/**
|
|
157
|
-
* Extra volatile URL patterns the device runtime must always re-fetch
|
|
158
|
-
*
|
|
159
|
-
*
|
|
162
|
+
* Extra volatile URL patterns the device runtime must always re-fetch.
|
|
163
|
+
* Defaults to none — no built-in strategy needs any (freshness is
|
|
164
|
+
* eviction-driven), but the hook stays for custom strategies.
|
|
160
165
|
*/
|
|
161
166
|
volatilePatterns?(): string[];
|
|
162
167
|
processFile(ctx: FrameworkProcessFileContext): Promise<void>;
|
|
@@ -3,13 +3,14 @@ import { classifyGraphUpsert, shouldBroadcastGraphUpsertDelta, shouldBumpGraphVe
|
|
|
3
3
|
import { getProjectAppVirtualPath } from '../../helpers/utils.js';
|
|
4
4
|
const APP_VIRTUAL_WITH_SLASH = `${getProjectAppVirtualPath()}/`;
|
|
5
5
|
// The HMR module graph: spec -> { deps, hash } plus a monotonically increasing
|
|
6
|
-
// version
|
|
7
|
-
// connected clients and the per-version
|
|
6
|
+
// version that sequences graph broadcasts and transactional HMR batches.
|
|
7
|
+
// Owns delta/full-graph broadcasts to connected clients and the per-version
|
|
8
|
+
// txn batch ordering. The version never appears in served module URLs —
|
|
9
|
+
// module identity is the canonical URL (see CLAUDE.md invariant 4).
|
|
8
10
|
//
|
|
9
|
-
// version starts at 1
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// fills in lazily.
|
|
11
|
+
// version starts at 1 and stays stable during cold boot (bulk warm-ups pass
|
|
12
|
+
// bumpVersion:false); it only advances on live edits, so the graph filling in
|
|
13
|
+
// lazily never churns the version.
|
|
13
14
|
export class HmrModuleGraph {
|
|
14
15
|
constructor(deps) {
|
|
15
16
|
this.deps = deps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr-module-graph.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/hmr-module-graph.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC3H,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,sBAAsB,GAAG,GAAG,wBAAwB,EAAE,GAAG,CAAC;AAwBhE,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"hmr-module-graph.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/hmr-module-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Import Map Generator for NativeScript HMR
|
|
3
3
|
*
|
|
4
4
|
* Generates an import map that the iOS/Android runtime consumes via
|
|
5
|
-
*
|
|
5
|
+
* __NS_DEV__.configureRuntime(). This is the single source of truth for module
|
|
6
6
|
* resolution on the device.
|
|
7
7
|
*
|
|
8
8
|
* Resolution strategy:
|
|
@@ -34,7 +34,7 @@ export interface ImportMapOptions {
|
|
|
34
34
|
* `volatilePatterns()` hooks supply the framework-specific pieces of the
|
|
35
35
|
* import map and volatile-pattern list.
|
|
36
36
|
* Optional: when omitted, the map/patterns carry only the shared
|
|
37
|
-
* vendor/core/HTTP entries
|
|
37
|
+
* vendor/core/HTTP entries.
|
|
38
38
|
*/
|
|
39
39
|
strategy?: FrameworkServerStrategy;
|
|
40
40
|
/** Additional entries to add to the import map */
|
|
@@ -66,7 +66,7 @@ export declare function generateImportMap(options: ImportMapOptions): ImportMap;
|
|
|
66
66
|
export declare function getVolatilePatterns(strategy?: FrameworkServerStrategy): string[];
|
|
67
67
|
/**
|
|
68
68
|
* Serialize the import map + volatile patterns into the config object
|
|
69
|
-
* that
|
|
69
|
+
* that __NS_DEV__.configureRuntime() expects.
|
|
70
70
|
*/
|
|
71
71
|
export declare function buildRuntimeConfig(options: ImportMapOptions): {
|
|
72
72
|
importMap: string;
|
package/hmr/server/import-map.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Import Map Generator for NativeScript HMR
|
|
3
3
|
*
|
|
4
4
|
* Generates an import map that the iOS/Android runtime consumes via
|
|
5
|
-
*
|
|
5
|
+
* __NS_DEV__.configureRuntime(). This is the single source of truth for module
|
|
6
6
|
* resolution on the device.
|
|
7
7
|
*
|
|
8
8
|
* Resolution strategy:
|
|
@@ -148,8 +148,8 @@ export function getVolatilePatterns(strategy) {
|
|
|
148
148
|
// Version query params (used by HMR for cache busting)
|
|
149
149
|
patterns.push('?v=');
|
|
150
150
|
patterns.push('&v=');
|
|
151
|
-
// Framework-specific volatile patterns (owned by the active strategy
|
|
152
|
-
//
|
|
151
|
+
// Framework-specific volatile patterns (owned by the active strategy;
|
|
152
|
+
// none of the built-in strategies supply any).
|
|
153
153
|
const frameworkPatterns = strategy?.volatilePatterns?.();
|
|
154
154
|
if (frameworkPatterns) {
|
|
155
155
|
patterns.push(...frameworkPatterns);
|
|
@@ -158,7 +158,7 @@ export function getVolatilePatterns(strategy) {
|
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
160
|
* Serialize the import map + volatile patterns into the config object
|
|
161
|
-
* that
|
|
161
|
+
* that __NS_DEV__.configureRuntime() expects.
|
|
162
162
|
*/
|
|
163
163
|
export function buildRuntimeConfig(options) {
|
|
164
164
|
const importMap = generateImportMap(options);
|