@nativescript/vite 8.0.0-alpha.3 → 8.0.0-alpha.30
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/README.md +51 -11
- package/configuration/angular.d.ts +34 -1
- package/configuration/angular.js +369 -159
- package/configuration/angular.js.map +1 -1
- package/configuration/base.js +184 -14
- package/configuration/base.js.map +1 -1
- package/configuration/javascript.js +5 -72
- package/configuration/javascript.js.map +1 -1
- package/configuration/solid.js +27 -1
- package/configuration/solid.js.map +1 -1
- package/configuration/typescript.js +5 -75
- package/configuration/typescript.js.map +1 -1
- package/helpers/angular/angular-linker.d.ts +5 -6
- package/helpers/angular/angular-linker.js +36 -121
- package/helpers/angular/angular-linker.js.map +1 -1
- package/helpers/angular/inject-component-hmr-registration.d.ts +112 -0
- package/helpers/angular/inject-component-hmr-registration.js +291 -0
- package/helpers/angular/inject-component-hmr-registration.js.map +1 -0
- package/helpers/angular/inject-hmr-vite-ignore.d.ts +75 -0
- package/helpers/angular/inject-hmr-vite-ignore.js +221 -0
- package/helpers/angular/inject-hmr-vite-ignore.js.map +1 -0
- package/helpers/angular/inline-decorator-component-templates.js +1 -170
- package/helpers/angular/inline-decorator-component-templates.js.map +1 -1
- package/helpers/angular/js-lexer.d.ts +4 -0
- package/helpers/angular/js-lexer.js +182 -0
- package/helpers/angular/js-lexer.js.map +1 -0
- package/helpers/angular/shared-linker.d.ts +31 -3
- package/helpers/angular/shared-linker.js +67 -14
- package/helpers/angular/shared-linker.js.map +1 -1
- package/helpers/angular/synthesize-decorator-ctor-parameters.js +2 -170
- package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +1 -1
- package/helpers/angular/synthesize-injectable-factories.js +1 -174
- package/helpers/angular/synthesize-injectable-factories.js.map +1 -1
- package/helpers/angular/util.d.ts +1 -0
- package/helpers/angular/util.js +88 -0
- package/helpers/angular/util.js.map +1 -1
- package/helpers/app-components.d.ts +2 -1
- package/helpers/app-components.js.map +1 -1
- package/helpers/app-css-state.d.ts +8 -0
- package/helpers/app-css-state.js +8 -0
- package/helpers/app-css-state.js.map +1 -0
- package/helpers/bundler-context.d.ts +11 -0
- package/helpers/bundler-context.js +71 -0
- package/helpers/bundler-context.js.map +1 -0
- package/helpers/config-as-json.js +10 -0
- package/helpers/config-as-json.js.map +1 -1
- package/helpers/dev-host.d.ts +341 -0
- package/helpers/dev-host.js +617 -0
- package/helpers/dev-host.js.map +1 -0
- package/helpers/esbuild-platform-resolver.js +4 -1
- package/helpers/esbuild-platform-resolver.js.map +1 -1
- package/helpers/global-defines.d.ts +51 -0
- package/helpers/global-defines.js +77 -0
- package/helpers/global-defines.js.map +1 -1
- package/helpers/hmr-scope.d.ts +26 -0
- package/helpers/hmr-scope.js +67 -0
- package/helpers/hmr-scope.js.map +1 -0
- package/helpers/init.js +0 -18
- package/helpers/init.js.map +1 -1
- package/helpers/logging.d.ts +1 -0
- package/helpers/logging.js +63 -3
- package/helpers/logging.js.map +1 -1
- package/helpers/main-entry.d.ts +2 -1
- package/helpers/main-entry.js +430 -47
- package/helpers/main-entry.js.map +1 -1
- package/helpers/nativeclass-esbuild-plugin.d.ts +2 -1
- package/helpers/nativeclass-esbuild-plugin.js.map +1 -1
- package/helpers/nativeclass-transform.js.map +1 -1
- package/helpers/nativeclass-transformer-plugin.d.ts +9 -2
- package/helpers/nativeclass-transformer-plugin.js +157 -14
- package/helpers/nativeclass-transformer-plugin.js.map +1 -1
- package/helpers/nativescript-package-resolver.js +8 -3
- package/helpers/nativescript-package-resolver.js.map +1 -1
- package/helpers/normalize-id.d.ts +42 -0
- package/helpers/normalize-id.js +60 -0
- package/helpers/normalize-id.js.map +1 -0
- package/helpers/ns-core-url.d.ts +88 -0
- package/helpers/ns-core-url.js +191 -0
- package/helpers/ns-core-url.js.map +1 -0
- package/helpers/package-platform-aliases.js +4 -3
- package/helpers/package-platform-aliases.js.map +1 -1
- package/helpers/platform-types.d.ts +2 -0
- package/helpers/platform-types.js +2 -0
- package/helpers/platform-types.js.map +1 -0
- package/helpers/prelink-angular.js +12 -33
- package/helpers/prelink-angular.js.map +1 -1
- package/helpers/project.d.ts +35 -0
- package/helpers/project.js +120 -2
- package/helpers/project.js.map +1 -1
- package/helpers/resolver.js +17 -2
- package/helpers/resolver.js.map +1 -1
- package/helpers/solid-jsx-deps.d.ts +15 -0
- package/helpers/solid-jsx-deps.js +178 -0
- package/helpers/solid-jsx-deps.js.map +1 -0
- package/helpers/ts-config-paths.d.ts +14 -0
- package/helpers/ts-config-paths.js +89 -8
- package/helpers/ts-config-paths.js.map +1 -1
- package/helpers/typescript-check.d.ts +2 -1
- package/helpers/typescript-check.js.map +1 -1
- package/helpers/workers.d.ts +20 -19
- package/helpers/workers.js +624 -4
- package/helpers/workers.js.map +1 -1
- package/hmr/client/css-handler.d.ts +1 -0
- package/hmr/client/css-handler.js +33 -20
- package/hmr/client/css-handler.js.map +1 -1
- package/hmr/client/css-update-overlay.d.ts +18 -0
- package/hmr/client/css-update-overlay.js +27 -0
- package/hmr/client/css-update-overlay.js.map +1 -0
- 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 +419 -15
- package/hmr/client/index.js.map +1 -1
- package/hmr/client/utils.d.ts +6 -1
- package/hmr/client/utils.js +184 -8
- package/hmr/client/utils.js.map +1 -1
- package/hmr/client/vue-sfc-update-overlay.d.ts +82 -0
- package/hmr/client/vue-sfc-update-overlay.js +133 -0
- package/hmr/client/vue-sfc-update-overlay.js.map +1 -0
- package/hmr/entry-runtime.d.ts +2 -1
- package/hmr/entry-runtime.js +252 -65
- 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 +778 -20
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/frameworks/angular/server/linker.js +1 -4
- package/hmr/frameworks/angular/server/linker.js.map +1 -1
- package/hmr/frameworks/angular/server/strategy.js +13 -15
- package/hmr/frameworks/angular/server/strategy.js.map +1 -1
- package/hmr/frameworks/solid/server/strategy.js +3 -18
- package/hmr/frameworks/solid/server/strategy.js.map +1 -1
- package/hmr/frameworks/typescript/server/strategy.js +2 -15
- package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
- package/hmr/frameworks/vue/client/index.js +30 -199
- package/hmr/frameworks/vue/client/index.js.map +1 -1
- package/hmr/helpers/ast-normalizer.js +52 -5
- package/hmr/helpers/ast-normalizer.js.map +1 -1
- package/hmr/helpers/cjs-named-exports.d.ts +23 -0
- package/hmr/helpers/cjs-named-exports.js +152 -0
- package/hmr/helpers/cjs-named-exports.js.map +1 -0
- package/hmr/helpers/package-exports.d.ts +16 -0
- package/hmr/helpers/package-exports.js +396 -0
- package/hmr/helpers/package-exports.js.map +1 -0
- package/hmr/server/angular-root-component.d.ts +79 -0
- package/hmr/server/angular-root-component.js +149 -0
- package/hmr/server/angular-root-component.js.map +1 -0
- package/hmr/server/constants.js +13 -4
- package/hmr/server/constants.js.map +1 -1
- package/hmr/server/core-sanitize.d.ts +90 -7
- package/hmr/server/core-sanitize.js +211 -56
- package/hmr/server/core-sanitize.js.map +1 -1
- package/hmr/server/framework-strategy.d.ts +9 -19
- package/hmr/server/hmr-module-graph.d.ts +37 -0
- package/hmr/server/hmr-module-graph.js +214 -0
- package/hmr/server/hmr-module-graph.js.map +1 -0
- package/hmr/server/import-map.js +60 -8
- package/hmr/server/import-map.js.map +1 -1
- package/hmr/server/index.js +1 -0
- package/hmr/server/index.js.map +1 -1
- package/hmr/server/ns-core-cjs-shape.d.ts +204 -0
- package/hmr/server/ns-core-cjs-shape.js +271 -0
- package/hmr/server/ns-core-cjs-shape.js.map +1 -0
- package/hmr/server/ns-rt-bridge.d.ts +51 -0
- package/hmr/server/ns-rt-bridge.js +131 -0
- package/hmr/server/ns-rt-bridge.js.map +1 -0
- package/hmr/server/ns-rt-route.d.ts +5 -0
- package/hmr/server/ns-rt-route.js +35 -0
- package/hmr/server/ns-rt-route.js.map +1 -0
- package/hmr/server/perf-instrumentation.d.ts +114 -0
- package/hmr/server/perf-instrumentation.js +195 -0
- package/hmr/server/perf-instrumentation.js.map +1 -0
- package/hmr/server/require-guard.d.ts +1 -0
- package/hmr/server/require-guard.js +12 -0
- package/hmr/server/require-guard.js.map +1 -0
- package/hmr/server/route-helpers.d.ts +7 -0
- package/hmr/server/route-helpers.js +13 -0
- package/hmr/server/route-helpers.js.map +1 -0
- package/hmr/server/server-origin.d.ts +12 -0
- package/hmr/server/server-origin.js +66 -0
- package/hmr/server/server-origin.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/vendor-bare-module-shims.d.ts +4 -0
- package/hmr/server/vendor-bare-module-shims.js +80 -0
- package/hmr/server/vendor-bare-module-shims.js.map +1 -0
- package/hmr/server/vite-plugin.js +60 -42
- package/hmr/server/vite-plugin.js.map +1 -1
- package/hmr/server/websocket-angular-entry.js +1 -1
- package/hmr/server/websocket-angular-entry.js.map +1 -1
- package/hmr/server/websocket-angular-hot-update.d.ts +17 -0
- package/hmr/server/websocket-angular-hot-update.js +176 -2
- package/hmr/server/websocket-angular-hot-update.js.map +1 -1
- package/hmr/server/websocket-core-bridge.d.ts +41 -6
- package/hmr/server/websocket-core-bridge.js +72 -75
- package/hmr/server/websocket-core-bridge.js.map +1 -1
- package/hmr/server/websocket-css-hot-update.d.ts +33 -0
- package/hmr/server/websocket-css-hot-update.js +65 -0
- package/hmr/server/websocket-css-hot-update.js.map +1 -0
- package/hmr/server/websocket-device-transform.d.ts +21 -0
- package/hmr/server/websocket-device-transform.js +1570 -0
- package/hmr/server/websocket-device-transform.js.map +1 -0
- 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-hot-update.d.ts +51 -0
- package/hmr/server/websocket-hot-update.js +1160 -0
- package/hmr/server/websocket-hot-update.js.map +1 -0
- package/hmr/server/websocket-import-map-route.d.ts +15 -0
- package/hmr/server/websocket-import-map-route.js +44 -0
- package/hmr/server/websocket-import-map-route.js.map +1 -0
- package/hmr/server/websocket-module-bindings.js +3 -3
- package/hmr/server/websocket-module-bindings.js.map +1 -1
- package/hmr/server/websocket-module-specifiers.d.ts +66 -2
- package/hmr/server/websocket-module-specifiers.js +202 -19
- package/hmr/server/websocket-module-specifiers.js.map +1 -1
- package/hmr/server/websocket-ns-core.d.ts +21 -0
- package/hmr/server/websocket-ns-core.js +305 -0
- package/hmr/server/websocket-ns-core.js.map +1 -0
- package/hmr/server/websocket-ns-entry.d.ts +22 -0
- package/hmr/server/websocket-ns-entry.js +150 -0
- package/hmr/server/websocket-ns-entry.js.map +1 -0
- package/hmr/server/websocket-ns-m-paths.d.ts +3 -0
- package/hmr/server/websocket-ns-m-paths.js +92 -0
- package/hmr/server/websocket-ns-m-paths.js.map +1 -0
- package/hmr/server/websocket-ns-m-request.d.ts +45 -0
- package/hmr/server/websocket-ns-m-request.js +196 -0
- package/hmr/server/websocket-ns-m-request.js.map +1 -0
- package/hmr/server/websocket-ns-m.d.ts +34 -0
- package/hmr/server/websocket-ns-m.js +853 -0
- package/hmr/server/websocket-ns-m.js.map +1 -0
- package/hmr/server/websocket-served-module-helpers.d.ts +39 -0
- package/hmr/server/websocket-served-module-helpers.js +654 -0
- package/hmr/server/websocket-served-module-helpers.js.map +1 -0
- package/hmr/server/websocket-sfc.d.ts +24 -0
- package/hmr/server/websocket-sfc.js +1223 -0
- package/hmr/server/websocket-sfc.js.map +1 -0
- package/hmr/server/websocket-txn.d.ts +6 -0
- package/hmr/server/websocket-txn.js +39 -0
- package/hmr/server/websocket-txn.js.map +1 -0
- package/hmr/server/websocket-vendor-unifier.d.ts +10 -0
- package/hmr/server/websocket-vendor-unifier.js +45 -0
- package/hmr/server/websocket-vendor-unifier.js.map +1 -0
- package/hmr/server/websocket.d.ts +0 -30
- package/hmr/server/websocket.js +599 -6038
- package/hmr/server/websocket.js.map +1 -1
- package/hmr/shared/runtime/boot-placeholder-ui.d.ts +69 -0
- package/hmr/shared/runtime/boot-placeholder-ui.js +101 -0
- package/hmr/shared/runtime/boot-placeholder-ui.js.map +1 -0
- package/hmr/shared/runtime/boot-progress.d.ts +40 -0
- package/hmr/shared/runtime/boot-progress.js +128 -0
- package/hmr/shared/runtime/boot-progress.js.map +1 -0
- package/hmr/shared/runtime/boot-timeline.d.ts +18 -0
- package/hmr/shared/runtime/boot-timeline.js +52 -0
- package/hmr/shared/runtime/boot-timeline.js.map +1 -0
- package/hmr/shared/runtime/dev-overlay-snapshots.d.ts +31 -0
- package/hmr/shared/runtime/dev-overlay-snapshots.js +324 -0
- package/hmr/shared/runtime/dev-overlay-snapshots.js.map +1 -0
- package/hmr/shared/runtime/dev-overlay.d.ts +75 -26
- package/hmr/shared/runtime/dev-overlay.js +990 -260
- package/hmr/shared/runtime/dev-overlay.js.map +1 -1
- package/hmr/shared/runtime/module-provenance.js +1 -4
- package/hmr/shared/runtime/module-provenance.js.map +1 -1
- package/hmr/shared/runtime/root-placeholder-view.d.ts +19 -0
- package/hmr/shared/runtime/root-placeholder-view.js +310 -0
- package/hmr/shared/runtime/root-placeholder-view.js.map +1 -0
- package/hmr/shared/runtime/root-placeholder.js +352 -194
- package/hmr/shared/runtime/root-placeholder.js.map +1 -1
- package/hmr/shared/runtime/session-bootstrap.js +164 -1
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
- package/hmr/shared/runtime/vendor-bootstrap.js +1 -9
- package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
- package/hmr/shared/vendor/manifest-collect.d.ts +32 -0
- package/hmr/shared/vendor/manifest-collect.js +512 -0
- package/hmr/shared/vendor/manifest-collect.js.map +1 -0
- package/hmr/shared/vendor/manifest-loader.d.ts +2 -1
- package/hmr/shared/vendor/manifest-loader.js +3 -2
- package/hmr/shared/vendor/manifest-loader.js.map +1 -1
- package/hmr/shared/vendor/manifest.d.ts +1 -5
- package/hmr/shared/vendor/manifest.js +102 -739
- package/hmr/shared/vendor/manifest.js.map +1 -1
- package/hmr/shared/vendor/vendor-device-shim.d.ts +1 -0
- package/hmr/shared/vendor/vendor-device-shim.js +208 -0
- package/hmr/shared/vendor/vendor-device-shim.js.map +1 -0
- package/hmr/shared/vendor/vendor-esbuild-plugins.d.ts +16 -0
- package/hmr/shared/vendor/vendor-esbuild-plugins.js +203 -0
- package/hmr/shared/vendor/vendor-esbuild-plugins.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -1
- package/package.json +55 -11
- package/runtime/core-aliases-early.js +17 -41
- package/runtime/core-aliases-early.js.map +1 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import babelCore from '@babel/core';
|
|
5
|
+
import { getPackageJson, getProjectFilePath } from '../../helpers/project.js';
|
|
6
|
+
import { REQUIRE_GUARD_SNIPPET } from './require-guard.js';
|
|
7
|
+
import { setDeviceModuleHeaders } from './route-helpers.js';
|
|
8
|
+
// Lazily loaded only for the source-tree fallback below (transform
|
|
9
|
+
// entry-runtime.ts on the fly when the built .js isn't present).
|
|
10
|
+
const pluginTransformTypescript = (() => {
|
|
11
|
+
const requireFromHere = createRequire(import.meta.url);
|
|
12
|
+
const loaded = requireFromHere('@babel/plugin-transform-typescript');
|
|
13
|
+
return loaded?.default || loaded;
|
|
14
|
+
})();
|
|
15
|
+
/**
|
|
16
|
+
* Registers the device bootstrap endpoints:
|
|
17
|
+
* - `GET /ns/entry-rt[?v=<ver>]` — serves the compiled entry runtime module
|
|
18
|
+
* (built `entry-runtime.js`, or a transformed `entry-runtime.ts` fallback), and
|
|
19
|
+
* - `GET /ns/entry[/<ver>]` — a script-safe wrapper that fetches the entry
|
|
20
|
+
* runtime and starts the app with `{ origin, main, ver }`.
|
|
21
|
+
*/
|
|
22
|
+
export function registerNsEntryRoutes(server, options) {
|
|
23
|
+
const verbose = options.verbose;
|
|
24
|
+
const APP_ROOT_DIR = options.appRootDir;
|
|
25
|
+
const DEFAULT_MAIN_ENTRY = options.defaultMainEntry;
|
|
26
|
+
const DEFAULT_MAIN_ENTRY_VIRTUAL = options.defaultMainEntryVirtual;
|
|
27
|
+
const getGraphVersion = options.getGraphVersion;
|
|
28
|
+
const getServerOrigin = options.getServerOrigin;
|
|
29
|
+
// 2.6a) Serve compiled entry runtime module: GET /ns/entry-rt[?v=<ver>]
|
|
30
|
+
server.middlewares.use(async (req, res, next) => {
|
|
31
|
+
try {
|
|
32
|
+
const urlObj = new URL(req.url || '', 'http://localhost');
|
|
33
|
+
if (!(urlObj.pathname === '/ns/entry-rt'))
|
|
34
|
+
return next();
|
|
35
|
+
if (verbose) {
|
|
36
|
+
const ra = req.socket?.remoteAddress;
|
|
37
|
+
const rp = req.socket?.remotePort;
|
|
38
|
+
console.log('[hmr-http] GET /ns/entry-rt from', ra + (rp ? ':' + rp : ''));
|
|
39
|
+
}
|
|
40
|
+
setDeviceModuleHeaders(res);
|
|
41
|
+
let content = '';
|
|
42
|
+
try {
|
|
43
|
+
const _req = createRequire(import.meta.url);
|
|
44
|
+
const entryRtPath = _req.resolve('@nativescript/vite/hmr/entry-runtime.js');
|
|
45
|
+
content = readFileSync(entryRtPath, 'utf-8');
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
// .js not found (source tree without build) — transform .ts on the fly
|
|
49
|
+
try {
|
|
50
|
+
const tsPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', 'entry-runtime.ts');
|
|
51
|
+
if (existsSync(tsPath)) {
|
|
52
|
+
const tsSource = readFileSync(tsPath, 'utf-8');
|
|
53
|
+
const result = babelCore.transformSync(tsSource, {
|
|
54
|
+
filename: tsPath,
|
|
55
|
+
plugins: [[pluginTransformTypescript, { isTSX: false, allowDeclareFields: true }]],
|
|
56
|
+
sourceType: 'module',
|
|
57
|
+
});
|
|
58
|
+
if (result?.code) {
|
|
59
|
+
content = result.code;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e2) {
|
|
64
|
+
if (verbose)
|
|
65
|
+
console.warn('[hmr-http] entry-runtime.ts transform failed', e2);
|
|
66
|
+
}
|
|
67
|
+
if (!content) {
|
|
68
|
+
content = 'export default async function start(){ console.error("[/ns/entry-rt] not found"); }\n';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (verbose)
|
|
72
|
+
console.log('[hmr-http] /ns/entry-rt serving', content.length, 'bytes');
|
|
73
|
+
res.statusCode = 200;
|
|
74
|
+
res.end(content);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.warn('[hmr-http] /ns/entry-rt error', e);
|
|
78
|
+
next();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// 2.6b) HTTP-only app entry endpoint: GET /ns/entry[/<ver>]
|
|
82
|
+
// Thin wrapper that imports the compiled entry runtime and starts it with parameters.
|
|
83
|
+
server.middlewares.use(async (req, res, next) => {
|
|
84
|
+
try {
|
|
85
|
+
const urlObj = new URL(req.url || '', 'http://localhost');
|
|
86
|
+
if (!(urlObj.pathname === '/ns/entry' || /^\/ns\/entry\/[\d]+$/.test(urlObj.pathname)))
|
|
87
|
+
return next();
|
|
88
|
+
try {
|
|
89
|
+
if (verbose) {
|
|
90
|
+
const ra = req.socket?.remoteAddress;
|
|
91
|
+
const rp = req.socket?.remotePort;
|
|
92
|
+
console.log('[hmr-http] GET /ns/entry from', ra + (rp ? ':' + rp : ''));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch { }
|
|
96
|
+
const verSeg = urlObj.pathname.replace(/^\/ns\/entry\/?/, '');
|
|
97
|
+
// Resolve app main entry to an absolute path-like key used by /ns/m
|
|
98
|
+
res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
|
|
99
|
+
res.setHeader('Pragma', 'no-cache');
|
|
100
|
+
res.setHeader('Expires', '0');
|
|
101
|
+
const ver = /^[0-9]+$/.test(verSeg) ? verSeg : String(getGraphVersion() || 0);
|
|
102
|
+
const origin = getServerOrigin(server) || `${urlObj.protocol}//${urlObj.host}`;
|
|
103
|
+
// Resolve app main entry to an absolute path-like key used by /ns/m
|
|
104
|
+
let mainEntry = '/';
|
|
105
|
+
try {
|
|
106
|
+
const pkg = getPackageJson();
|
|
107
|
+
const main = pkg?.main || DEFAULT_MAIN_ENTRY;
|
|
108
|
+
const abs = getProjectFilePath(main).replace(/\\/g, '/');
|
|
109
|
+
// Normalize to '/app/...'
|
|
110
|
+
const marker = `/${APP_ROOT_DIR}/`;
|
|
111
|
+
const idx = abs.indexOf(marker);
|
|
112
|
+
mainEntry = idx >= 0 ? abs.substring(idx) : DEFAULT_MAIN_ENTRY_VIRTUAL;
|
|
113
|
+
}
|
|
114
|
+
catch { }
|
|
115
|
+
// Build a tiny wrapper that imports the compiled entry runtime from the dev server
|
|
116
|
+
let code = REQUIRE_GUARD_SNIPPET +
|
|
117
|
+
`// [ns-entry][v${ver}] wrapper (script-safe) bytes will follow\n` +
|
|
118
|
+
`(async function(){\n` +
|
|
119
|
+
` let origin = ${JSON.stringify(origin)}; const main = ${JSON.stringify(mainEntry)}; const __ns_graph_ver = ${JSON.stringify(ver)};\n` +
|
|
120
|
+
` try { const __b = (globalThis && globalThis.__NS_ENTRY_BASE__) ? String(globalThis.__NS_ENTRY_BASE__) : ''; if (__b) { try { const __o = new URL(__b).origin; if (__o) origin = __o; } catch {} } } catch {}\n` +
|
|
121
|
+
` const __VERBOSE__ = (typeof __NS_ENV_VERBOSE__ !== 'undefined' && __NS_ENV_VERBOSE__) || (globalThis && globalThis.process && globalThis.process.env && globalThis.process.env.verbose) || (globalThis && globalThis.__NS_ENV_VERBOSE__) || ${JSON.stringify(!!verbose)};\n` +
|
|
122
|
+
` if (__VERBOSE__) console.info('[ns-entry][wrapper] start', { origin, main, ver: __ns_graph_ver });\n` +
|
|
123
|
+
` async function __ns_import_entry_rt(u){\n` +
|
|
124
|
+
` // Prefer fetch+eval script transformation to avoid module import limitations on device\n` +
|
|
125
|
+
` try { const r = await fetch(u); const t = await r.text(); if (__VERBOSE__) console.info('[ns-entry][wrapper] entry-rt fetched bytes', (t&&t.length)||0);\n` +
|
|
126
|
+
` // Transform 'export default function' or 'export default async function' into global assignment\n` +
|
|
127
|
+
` let s = t.replace(/export\\s+default\\s+async\\s+function\\s+([A-Za-z0-9_$]+)?/,'globalThis.__NS_START_ENTRY__=async function $1')\n` +
|
|
128
|
+
` .replace(/export\\s+default\\s+function\\s+([A-Za-z0-9_$]+)?/,'globalThis.__NS_START_ENTRY__=function $1');\n` +
|
|
129
|
+
` // Fallback: if function-form replacements didn't run, handle expression default export too\n` +
|
|
130
|
+
` if (String(s).indexOf('__NS_START_ENTRY__') === -1) { s = 'globalThis.__NS_START_ENTRY__=' + s.replace(/export\\s+default\\s*/,''); }\n` +
|
|
131
|
+
` try { (0,eval)(s); } catch (ee) { console.error('[ns-entry][wrapper] eval entry-rt failed', ee && (ee.message||ee)); throw ee; }\n` +
|
|
132
|
+
` const fn = globalThis.__NS_START_ENTRY__; if (!fn) { throw new Error('entry-rt missing __NS_START_ENTRY__'); }\n` +
|
|
133
|
+
` return { default: fn };\n` +
|
|
134
|
+
` } catch(e) { console.error('[ns-entry][wrapper] entry-rt fetch/eval failed', e && (e.message||e)); throw e; }\n` +
|
|
135
|
+
` }\n` +
|
|
136
|
+
` const __entryRtUrl = '/ns/entry-rt?v=' + String(__ns_graph_ver);\n` +
|
|
137
|
+
` let __mod; try { __mod = await __ns_import_entry_rt(__entryRtUrl); if (__VERBOSE__) console.info('[ns-entry][wrapper] entry-rt ready'); } catch (e) { console.error('[ns-entry][wrapper] failed to prepare entry-rt', e && (e.message||e)); throw e; }\n` +
|
|
138
|
+
` const startEntry = (__mod && (__mod.default || __mod));\n` +
|
|
139
|
+
` try { await startEntry({ origin, main, ver: __ns_graph_ver, verbose: !!__VERBOSE__ }); if (__VERBOSE__) console.info('[ns-entry][wrapper] startEntry() resolved'); } catch (e) { console.error('[ns-entry][wrapper] startEntry() failed', e && (e.message||e)); throw e; }\n` +
|
|
140
|
+
`})();\n`;
|
|
141
|
+
code = code + `\n//# sourceURL=${origin}/ns/entry`;
|
|
142
|
+
res.statusCode = 200;
|
|
143
|
+
res.end(code);
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
next();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=websocket-ns-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-ns-entry.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-ns-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function formatNsMHmrServeTag(value: string | number): string;
|
|
2
|
+
export declare function rewriteNsMImportPathForHmr(p: string, _ver: string | number, bootTaggedRequest: boolean): string;
|
|
3
|
+
export declare function getNumericServeVersionTag(tag: string | null | undefined, fallback: number): number;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Stable URL + explicit invalidation contract for `/ns/m/...` modules.
|
|
2
|
+
//
|
|
3
|
+
// Older versions emitted `/ns/m/__ns_hmr__/v<N>/<rel>` URLs in every
|
|
4
|
+
// served module so that V8's HTTP module cache (`g_moduleRegistry`)
|
|
5
|
+
// would see a fresh URL on each save and re-fetch the dependency
|
|
6
|
+
// closure. On every save the server also bumped a global `graphVersion`
|
|
7
|
+
// counter, which propagated into every emitted URL — effectively
|
|
8
|
+
// invalidating the ENTIRE cached graph on every save (Vite's
|
|
9
|
+
// single-threaded transform pipeline became the wall-clock bottleneck).
|
|
10
|
+
//
|
|
11
|
+
// The current contract inverts that:
|
|
12
|
+
// - The runtime registers a canonical key for every URL via
|
|
13
|
+
// `CanonicalizeHttpUrlKey` (HMRSupport.mm), which strips
|
|
14
|
+
// `__ns_hmr__/<tag>/` and `__ns_boot__/b1/` segments before lookup.
|
|
15
|
+
// - The Angular HMR client receives an explicit `evictPaths` list in
|
|
16
|
+
// `ns:angular-update` and calls `__nsInvalidateModules` to drop only
|
|
17
|
+
// the modules that actually need re-evaluation.
|
|
18
|
+
// - The server emits STABLE URLs for app modules. No version segment.
|
|
19
|
+
//
|
|
20
|
+
// `rewriteNsMImportPathForHmr` collapses any inbound URL shape to the
|
|
21
|
+
// canonical stable form. We still preserve `__ns_boot__/b1/` for
|
|
22
|
+
// boot-tagged requests because that wrapper drives boot-progress
|
|
23
|
+
// instrumentation (see `buildBootProgressSnippet`), and we still pass
|
|
24
|
+
// `node_modules` through unchanged because vendor packages live on a
|
|
25
|
+
// stable namespace already.
|
|
26
|
+
export function formatNsMHmrServeTag(value) {
|
|
27
|
+
const raw = String(value ?? '').trim();
|
|
28
|
+
if (!raw) {
|
|
29
|
+
return 'v0';
|
|
30
|
+
}
|
|
31
|
+
if (raw === 'live' || /^n\d+$/i.test(raw) || /^v[^/]+$/i.test(raw)) {
|
|
32
|
+
return raw;
|
|
33
|
+
}
|
|
34
|
+
if (/^\d+$/.test(raw)) {
|
|
35
|
+
return `v${raw}`;
|
|
36
|
+
}
|
|
37
|
+
return raw;
|
|
38
|
+
}
|
|
39
|
+
export function rewriteNsMImportPathForHmr(p, _ver, bootTaggedRequest) {
|
|
40
|
+
if (!p || !p.startsWith('/ns/m/')) {
|
|
41
|
+
return p;
|
|
42
|
+
}
|
|
43
|
+
// Step 1: collapse any legacy boot+hmr or hmr-only prefix back to the
|
|
44
|
+
// canonical `/ns/m/<rest>` form. Inputs we may see in the wild include:
|
|
45
|
+
// * `/ns/m/__ns_boot__/b1/__ns_hmr__/v<N>/<rest>` (legacy cold-boot
|
|
46
|
+
// served code)
|
|
47
|
+
// * `/ns/m/__ns_hmr__/v<N>/<rest>` (legacy HMR served code)
|
|
48
|
+
// * `/ns/m/__ns_boot__/b1/<rest>` (current cold boot)
|
|
49
|
+
// * `/ns/m/<rest>` (current HMR)
|
|
50
|
+
// We strip `__ns_hmr__/<tag>/` regardless of `<tag>` (handles `live`,
|
|
51
|
+
// `v<N>`, `n<N>`, anything matched by `formatNsMHmrServeTag`). The
|
|
52
|
+
// `__ns_boot__/b1/` segment is stripped here too — we'll re-add it
|
|
53
|
+
// below if `bootTaggedRequest` is set, so the canonicalization is
|
|
54
|
+
// idempotent (a boot URL that flows through twice ends up correct).
|
|
55
|
+
let canonical = p
|
|
56
|
+
.replace(/^\/ns\/m\/__ns_boot__\/b1\/__ns_hmr__\/[^/]+\//, '/ns/m/')
|
|
57
|
+
.replace(/^\/ns\/m\/__ns_hmr__\/[^/]+\//, '/ns/m/')
|
|
58
|
+
.replace(/^\/ns\/m\/__ns_boot__\/b1\//, '/ns/m/');
|
|
59
|
+
// Vendor packages: always serve under the canonical
|
|
60
|
+
// `/ns/m/node_modules/<rest>` path, never under the boot prefix. This
|
|
61
|
+
// preserves the longstanding invariant that node_modules paths are
|
|
62
|
+
// stable across boot and HMR (so V8 dedups them in the module
|
|
63
|
+
// registry regardless of which load triggered the fetch first).
|
|
64
|
+
if (canonical.startsWith('/ns/m/node_modules/')) {
|
|
65
|
+
return canonical;
|
|
66
|
+
}
|
|
67
|
+
// Boot-tagged request: app-module URL gets wrapped with the boot
|
|
68
|
+
// prefix. The runtime canonicalizer collapses this back to the same
|
|
69
|
+
// cache key as the unprefixed URL, so cold boot and HMR share module
|
|
70
|
+
// identity. The boot prefix is still useful at request time because
|
|
71
|
+
// the server detects it and injects the boot-progress snippet.
|
|
72
|
+
if (bootTaggedRequest) {
|
|
73
|
+
return `/ns/m/__ns_boot__/b1${canonical.slice('/ns/m'.length)}`;
|
|
74
|
+
}
|
|
75
|
+
// HMR / steady-state request: stable canonical URL.
|
|
76
|
+
return canonical;
|
|
77
|
+
}
|
|
78
|
+
export function getNumericServeVersionTag(tag, fallback) {
|
|
79
|
+
const raw = String(tag || '').trim();
|
|
80
|
+
if (!raw) {
|
|
81
|
+
return fallback;
|
|
82
|
+
}
|
|
83
|
+
const versionMatch = raw.match(/^v(\d+)$/);
|
|
84
|
+
if (versionMatch?.[1]) {
|
|
85
|
+
return Number(versionMatch[1]);
|
|
86
|
+
}
|
|
87
|
+
if (/^\d+$/.test(raw)) {
|
|
88
|
+
return Number(raw);
|
|
89
|
+
}
|
|
90
|
+
return fallback;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=websocket-ns-m-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-ns-m-paths.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-ns-m-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { TransformResult } from 'vite';
|
|
2
|
+
export interface NsMRequestContext {
|
|
3
|
+
requestUrl: string;
|
|
4
|
+
spec: string;
|
|
5
|
+
forcedVer: string | null;
|
|
6
|
+
bootTaggedRequest: boolean;
|
|
7
|
+
serverRoot: string;
|
|
8
|
+
/**
|
|
9
|
+
* Optional monorepo workspace root for the dev server. When the app
|
|
10
|
+
* lives under `apps/<name>/` inside a hoisted-`node_modules` workspace
|
|
11
|
+
* (Nx / Rush / Turborepo / pnpm / yarn workspaces / npm workspaces),
|
|
12
|
+
* `serverRoot` is the app dir but most packages live at the workspace
|
|
13
|
+
* root. Candidates that resolve there are routed through `/@fs/...`
|
|
14
|
+
* to bypass the package's `package.json#exports` gating which would
|
|
15
|
+
* otherwise refuse internal sub-paths like `css-tree/lib/syntax/...`.
|
|
16
|
+
*/
|
|
17
|
+
workspaceRoot?: string | null;
|
|
18
|
+
candidates: string[];
|
|
19
|
+
transformCandidates: string[];
|
|
20
|
+
}
|
|
21
|
+
export type NsMRequestContextResult = {
|
|
22
|
+
kind: 'next';
|
|
23
|
+
} | {
|
|
24
|
+
kind: 'response';
|
|
25
|
+
statusCode: number;
|
|
26
|
+
code: string;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'context';
|
|
29
|
+
value: NsMRequestContext;
|
|
30
|
+
};
|
|
31
|
+
export interface ResolveNsMTransformedModuleOptions {
|
|
32
|
+
context: NsMRequestContext;
|
|
33
|
+
transformRequest: (url: string, timeoutMs?: number) => Promise<TransformResult | null>;
|
|
34
|
+
resolveId: (id: string) => Promise<string | null>;
|
|
35
|
+
loadVirtualId: (id: string) => Promise<string | {
|
|
36
|
+
code?: string;
|
|
37
|
+
} | TransformResult | null>;
|
|
38
|
+
timeoutMs?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface NsMResolvedTransform {
|
|
41
|
+
transformed: TransformResult | null;
|
|
42
|
+
resolvedCandidate: string | null;
|
|
43
|
+
}
|
|
44
|
+
export declare function createNsMRequestContext(requestUrl: string, serverRoot: string, appVirtualWithSlash: string, workspaceRoot?: string | null): NsMRequestContextResult;
|
|
45
|
+
export declare function resolveNsMTransformedModule(options: ResolveNsMTransformedModuleOptions): Promise<NsMResolvedTransform>;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { filterExistingNodeModulesTransformCandidates, getBlockedDeviceNodeModulesReason, resolveCandidateFilePath, stripDecoratedServePrefixes, tryReadRawExplicitJavaScriptModule } from './websocket-module-specifiers.js';
|
|
3
|
+
function normalizeAbsoluteFilesystemSpec(spec, serverRoot) {
|
|
4
|
+
const toPosix = (value) => value.replace(/\\/g, '/');
|
|
5
|
+
const rootPosix = toPosix(serverRoot);
|
|
6
|
+
const specPosix = toPosix(spec);
|
|
7
|
+
const isAbsoluteFilesystemPath = /^\//.test(specPosix) || /^[A-Za-z]:\//.test(spec);
|
|
8
|
+
if (!isAbsoluteFilesystemPath) {
|
|
9
|
+
return spec;
|
|
10
|
+
}
|
|
11
|
+
let relative = specPosix.startsWith(rootPosix) ? specPosix.slice(rootPosix.length) : path.posix.relative(rootPosix, specPosix);
|
|
12
|
+
if (relative.startsWith('..')) {
|
|
13
|
+
return spec;
|
|
14
|
+
}
|
|
15
|
+
if (!relative.startsWith('/')) {
|
|
16
|
+
relative = `/${relative}`;
|
|
17
|
+
}
|
|
18
|
+
return relative;
|
|
19
|
+
}
|
|
20
|
+
export function createNsMRequestContext(requestUrl, serverRoot, appVirtualWithSlash, workspaceRoot) {
|
|
21
|
+
try {
|
|
22
|
+
const urlObj = new URL(requestUrl || '', 'http://localhost');
|
|
23
|
+
if (!urlObj.pathname.startsWith('/ns/m')) {
|
|
24
|
+
return { kind: 'next' };
|
|
25
|
+
}
|
|
26
|
+
let spec = urlObj.searchParams.get('path') || '';
|
|
27
|
+
let forcedVer = urlObj.searchParams.get('v');
|
|
28
|
+
let bootTaggedRequest = false;
|
|
29
|
+
if (!spec) {
|
|
30
|
+
const base = '/ns/m';
|
|
31
|
+
const rest = urlObj.pathname.slice(base.length);
|
|
32
|
+
if (rest && rest !== '/') {
|
|
33
|
+
spec = rest;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (spec === '/__invalid_at__.mjs' || spec === '__invalid_at__.mjs') {
|
|
37
|
+
return {
|
|
38
|
+
kind: 'response',
|
|
39
|
+
statusCode: 200,
|
|
40
|
+
code: "// invalid '@' import stub\nexport {}\n",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!spec) {
|
|
44
|
+
return {
|
|
45
|
+
kind: 'response',
|
|
46
|
+
statusCode: 200,
|
|
47
|
+
code: 'export {}\n',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
spec = spec.replace(/[?#].*$/, '');
|
|
51
|
+
const decorated = stripDecoratedServePrefixes(spec);
|
|
52
|
+
spec = decorated.cleanedSpec;
|
|
53
|
+
bootTaggedRequest = decorated.bootTaggedRequest;
|
|
54
|
+
forcedVer || (forcedVer = decorated.forcedVer);
|
|
55
|
+
spec = normalizeAbsoluteFilesystemSpec(spec, serverRoot);
|
|
56
|
+
if (spec.startsWith('@/')) {
|
|
57
|
+
spec = appVirtualWithSlash + spec.slice(2);
|
|
58
|
+
}
|
|
59
|
+
if (spec.startsWith('./')) {
|
|
60
|
+
spec = spec.slice(1);
|
|
61
|
+
}
|
|
62
|
+
const blockedNodeModulesReason = getBlockedDeviceNodeModulesReason(spec);
|
|
63
|
+
if (blockedNodeModulesReason) {
|
|
64
|
+
return {
|
|
65
|
+
kind: 'response',
|
|
66
|
+
statusCode: 404,
|
|
67
|
+
code: `// [ns:m] blocked device import\nthrow new Error(${JSON.stringify(`[ns/m] ${blockedNodeModulesReason}`)});\nexport {};\n`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (!spec.startsWith('/')) {
|
|
71
|
+
spec = `/${spec}`;
|
|
72
|
+
}
|
|
73
|
+
const hasExt = /\.(ts|tsx|js|jsx|mjs|mts|cts|vue)$/i.test(spec);
|
|
74
|
+
const baseNoExt = hasExt ? spec.replace(/\.(ts|tsx|js|jsx|mjs|mts|cts)$/i, '') : spec;
|
|
75
|
+
const candidates = [...(hasExt ? [spec] : []), `${baseNoExt}.ts`, `${baseNoExt}.js`, `${baseNoExt}.tsx`, `${baseNoExt}.jsx`, `${baseNoExt}.mjs`, `${baseNoExt}.mts`, `${baseNoExt}.cts`, `${baseNoExt}.vue`, `${baseNoExt}/index.ts`, `${baseNoExt}/index.js`, `${baseNoExt}/index.tsx`, `${baseNoExt}/index.jsx`, `${baseNoExt}/index.mjs`];
|
|
76
|
+
const transformCandidates = filterExistingNodeModulesTransformCandidates(spec, candidates, serverRoot, workspaceRoot);
|
|
77
|
+
return {
|
|
78
|
+
kind: 'context',
|
|
79
|
+
value: {
|
|
80
|
+
requestUrl,
|
|
81
|
+
spec,
|
|
82
|
+
forcedVer,
|
|
83
|
+
bootTaggedRequest,
|
|
84
|
+
serverRoot,
|
|
85
|
+
workspaceRoot: workspaceRoot ?? null,
|
|
86
|
+
candidates,
|
|
87
|
+
transformCandidates,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return { kind: 'next' };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function tryTransformRequest(transformRequest, url, timeoutMs) {
|
|
96
|
+
try {
|
|
97
|
+
return await transformRequest(url, timeoutMs);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function getLoadedCode(loadResult) {
|
|
104
|
+
if (!loadResult) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if (typeof loadResult === 'string') {
|
|
108
|
+
return loadResult;
|
|
109
|
+
}
|
|
110
|
+
return typeof loadResult.code === 'string' ? loadResult.code : null;
|
|
111
|
+
}
|
|
112
|
+
export async function resolveNsMTransformedModule(options) {
|
|
113
|
+
const { context, transformRequest, resolveId, loadVirtualId, timeoutMs = 120000 } = options;
|
|
114
|
+
const { spec, serverRoot, workspaceRoot, transformCandidates } = context;
|
|
115
|
+
let transformed = null;
|
|
116
|
+
let resolvedCandidate = null;
|
|
117
|
+
if (spec.startsWith('/@id/')) {
|
|
118
|
+
transformed = await tryTransformRequest(transformRequest, spec, timeoutMs);
|
|
119
|
+
if (transformed?.code) {
|
|
120
|
+
return { transformed, resolvedCandidate };
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
const rawId = spec.slice('/@id/'.length).replace(/__x00__/g, '\0');
|
|
124
|
+
const loadedCode = getLoadedCode(await loadVirtualId(rawId));
|
|
125
|
+
if (loadedCode) {
|
|
126
|
+
return {
|
|
127
|
+
transformed: { code: loadedCode },
|
|
128
|
+
resolvedCandidate: rawId,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch { }
|
|
133
|
+
}
|
|
134
|
+
const rawExplicitModule = tryReadRawExplicitJavaScriptModule(spec, serverRoot);
|
|
135
|
+
if (rawExplicitModule) {
|
|
136
|
+
return {
|
|
137
|
+
transformed: { code: rawExplicitModule.code },
|
|
138
|
+
resolvedCandidate: rawExplicitModule.resolvedId,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
for (const candidate of transformCandidates) {
|
|
142
|
+
transformed = await tryTransformRequest(transformRequest, candidate, timeoutMs);
|
|
143
|
+
if (transformed?.code) {
|
|
144
|
+
resolvedCandidate = candidate;
|
|
145
|
+
return { transformed, resolvedCandidate };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const resolvedId = await resolveId(spec);
|
|
149
|
+
if (resolvedId) {
|
|
150
|
+
transformed = await tryTransformRequest(transformRequest, resolvedId, timeoutMs);
|
|
151
|
+
if (transformed?.code) {
|
|
152
|
+
return { transformed, resolvedCandidate: resolvedId };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (spec.includes('/node_modules/')) {
|
|
156
|
+
const nodeModulesIndex = spec.lastIndexOf('/node_modules/');
|
|
157
|
+
const bareSpecifier = spec.slice(nodeModulesIndex + '/node_modules/'.length);
|
|
158
|
+
if (bareSpecifier && !bareSpecifier.startsWith('.')) {
|
|
159
|
+
const resolvedBareId = await resolveId(bareSpecifier);
|
|
160
|
+
if (resolvedBareId) {
|
|
161
|
+
transformed = await tryTransformRequest(transformRequest, resolvedBareId, timeoutMs);
|
|
162
|
+
if (transformed?.code) {
|
|
163
|
+
return { transformed, resolvedCandidate: resolvedBareId };
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const buildFsCandidate = (root) => {
|
|
169
|
+
const rootPosix = root.replace(/\\/g, '/').replace(/\/$/, '');
|
|
170
|
+
const absolutePosixPath = `${rootPosix}${spec.startsWith('/') ? '' : '/'}${spec}`;
|
|
171
|
+
return `/@fs${absolutePosixPath}`;
|
|
172
|
+
};
|
|
173
|
+
const fsRootsToTry = [serverRoot, ...(workspaceRoot && path.resolve(workspaceRoot) !== path.resolve(serverRoot) ? [workspaceRoot] : [])];
|
|
174
|
+
for (const root of fsRootsToTry) {
|
|
175
|
+
const fsId = buildFsCandidate(root);
|
|
176
|
+
if (resolveCandidateFilePath(fsId, serverRoot, workspaceRoot)) {
|
|
177
|
+
transformed = await tryTransformRequest(transformRequest, fsId, timeoutMs);
|
|
178
|
+
if (transformed?.code) {
|
|
179
|
+
return { transformed, resolvedCandidate: fsId };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
for (const candidate of transformCandidates) {
|
|
184
|
+
const importHintCandidate = `${candidate}${candidate.includes('?') ? '&' : '?'}import`;
|
|
185
|
+
transformed = await tryTransformRequest(transformRequest, importHintCandidate, timeoutMs);
|
|
186
|
+
if (transformed?.code) {
|
|
187
|
+
resolvedCandidate = importHintCandidate;
|
|
188
|
+
return { transformed, resolvedCandidate };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
transformed: null,
|
|
193
|
+
resolvedCandidate,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=websocket-ns-m-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-ns-m-request.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-ns-m-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { TransformResult, ViteDevServer } from 'vite';
|
|
2
|
+
import type { FrameworkServerStrategy } from './framework-strategy.js';
|
|
3
|
+
type SharedTransformRequestFn = (url: string, timeoutMs?: number) => Promise<TransformResult | null>;
|
|
4
|
+
type UpsertGraphModuleFn = (rawId: string, code: string, deps: string[], options?: {
|
|
5
|
+
bumpVersion?: boolean;
|
|
6
|
+
emitDeltaOnInsert?: boolean;
|
|
7
|
+
broadcastDelta?: boolean;
|
|
8
|
+
}) => void;
|
|
9
|
+
/**
|
|
10
|
+
* Plugin-closure dependencies the `/ns/m` device module server needs. The pure
|
|
11
|
+
* transform/codegen functions are imported directly from
|
|
12
|
+
* `websocket-device-transform.ts`; only genuine plugin state (graph version,
|
|
13
|
+
* strategy, shared transform runner, graph upsert) is injected here.
|
|
14
|
+
*/
|
|
15
|
+
export interface RegisterNsModuleServerRouteOptions {
|
|
16
|
+
verbose: boolean;
|
|
17
|
+
appVirtualWithSlash: string;
|
|
18
|
+
sfcFileMap: Map<string, string>;
|
|
19
|
+
depFileMap: Map<string, string>;
|
|
20
|
+
getGraphVersion(): number;
|
|
21
|
+
getStrategy(): FrameworkServerStrategy;
|
|
22
|
+
getServerOrigin(server: ViteDevServer): string;
|
|
23
|
+
sharedTransformRequest: SharedTransformRequestFn;
|
|
24
|
+
ensureInitialGraphPopulationStarted(server: ViteDevServer): void;
|
|
25
|
+
upsertGraphModule: UpsertGraphModuleFn;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Registers the `/ns/m/*` device module server: the HTTP endpoint every
|
|
29
|
+
* NativeScript device uses to fetch app/source modules (and AnalogJS Angular
|
|
30
|
+
* `/@ng/component` live-reload requests) as device-ready ESM. This is the
|
|
31
|
+
* single hottest route in the HMR server.
|
|
32
|
+
*/
|
|
33
|
+
export declare function registerNsModuleServerRoute(server: ViteDevServer, options: RegisterNsModuleServerRouteOptions): void;
|
|
34
|
+
export {};
|