@nativescript/vite 8.0.0-alpha.1 → 8.0.0-alpha.10
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.d.ts +1 -1
- package/configuration/angular.js +486 -140
- package/configuration/angular.js.map +1 -1
- package/configuration/base.js +159 -29
- package/configuration/base.js.map +1 -1
- package/configuration/javascript.js +3 -3
- package/configuration/javascript.js.map +1 -1
- package/configuration/solid.js +7 -0
- package/configuration/solid.js.map +1 -1
- package/configuration/typescript.js +4 -4
- package/configuration/typescript.js.map +1 -1
- package/helpers/angular/angular-linker.js +38 -42
- 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 +359 -0
- package/helpers/angular/inject-component-hmr-registration.js.map +1 -0
- package/helpers/angular/inline-decorator-component-templates.d.ts +3 -0
- package/helpers/angular/inline-decorator-component-templates.js +400 -0
- package/helpers/angular/inline-decorator-component-templates.js.map +1 -0
- package/helpers/angular/shared-linker.d.ts +7 -0
- package/helpers/angular/shared-linker.js +37 -1
- package/helpers/angular/shared-linker.js.map +1 -1
- package/helpers/angular/synthesize-decorator-ctor-parameters.d.ts +1 -0
- package/helpers/angular/synthesize-decorator-ctor-parameters.js +256 -0
- package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +1 -0
- package/helpers/angular/synthesize-injectable-factories.d.ts +3 -0
- package/helpers/angular/synthesize-injectable-factories.js +414 -0
- package/helpers/angular/synthesize-injectable-factories.js.map +1 -0
- 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/commonjs-plugins.d.ts +5 -2
- package/helpers/commonjs-plugins.js +126 -0
- package/helpers/commonjs-plugins.js.map +1 -1
- package/helpers/config-as-json.js +10 -0
- package/helpers/config-as-json.js.map +1 -1
- package/helpers/esbuild-platform-resolver.js +5 -5
- package/helpers/esbuild-platform-resolver.js.map +1 -1
- package/helpers/external-configs.d.ts +9 -1
- package/helpers/external-configs.js +31 -6
- package/helpers/external-configs.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/import-meta-path.d.ts +4 -0
- package/helpers/import-meta-path.js +5 -0
- package/helpers/import-meta-path.js.map +1 -0
- package/helpers/import-specifier.d.ts +1 -0
- package/helpers/import-specifier.js +18 -0
- package/helpers/import-specifier.js.map +1 -0
- 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 +5 -2
- package/helpers/main-entry.js +365 -116
- package/helpers/main-entry.js.map +1 -1
- package/helpers/nativeclass-transform.js +8 -127
- package/helpers/nativeclass-transform.js.map +1 -1
- package/helpers/nativeclass-transformer-plugin.d.ts +19 -1
- package/helpers/nativeclass-transformer-plugin.js +318 -36
- package/helpers/nativeclass-transformer-plugin.js.map +1 -1
- package/helpers/ns-core-url.d.ts +83 -0
- package/helpers/ns-core-url.js +167 -0
- package/helpers/ns-core-url.js.map +1 -0
- package/helpers/prelink-angular.js +1 -4
- 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/ts-config-paths.js +50 -2
- package/helpers/ts-config-paths.js.map +1 -1
- package/helpers/workers.d.ts +20 -19
- package/helpers/workers.js +620 -3
- package/helpers/workers.js.map +1 -1
- package/hmr/client/css-handler.js +60 -19
- package/hmr/client/css-handler.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 +597 -24
- package/hmr/client/index.js.map +1 -1
- package/hmr/client/utils.d.ts +5 -0
- package/hmr/client/utils.js +212 -21
- package/hmr/client/utils.js.map +1 -1
- package/hmr/entry-runtime.d.ts +10 -0
- package/hmr/entry-runtime.js +330 -42
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/client/index.d.ts +3 -1
- package/hmr/frameworks/angular/client/index.js +821 -25
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/frameworks/angular/server/linker.js +37 -6
- package/hmr/frameworks/angular/server/linker.js.map +1 -1
- package/hmr/frameworks/angular/server/strategy.js +30 -6
- package/hmr/frameworks/angular/server/strategy.js.map +1 -1
- package/hmr/frameworks/typescript/server/strategy.js +8 -2
- package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
- package/hmr/frameworks/vue/client/index.js +18 -42
- package/hmr/frameworks/vue/client/index.js.map +1 -1
- package/hmr/helpers/ast-normalizer.js +22 -10
- 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/server/constants.d.ts +1 -0
- package/hmr/server/constants.js +14 -3
- package/hmr/server/constants.js.map +1 -1
- package/hmr/server/core-sanitize.d.ts +49 -2
- package/hmr/server/core-sanitize.js +267 -24
- package/hmr/server/core-sanitize.js.map +1 -1
- package/hmr/server/import-map.d.ts +65 -0
- package/hmr/server/import-map.js +222 -0
- package/hmr/server/import-map.js.map +1 -0
- package/hmr/server/index.d.ts +2 -1
- 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/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/runtime-graph-filter.d.ts +5 -0
- package/hmr/server/runtime-graph-filter.js +21 -0
- package/hmr/server/runtime-graph-filter.js.map +1 -0
- package/hmr/server/shared-transform-request.d.ts +12 -0
- package/hmr/server/shared-transform-request.js +144 -0
- package/hmr/server/shared-transform-request.js.map +1 -0
- package/hmr/server/vite-plugin.d.ts +21 -1
- package/hmr/server/vite-plugin.js +461 -22
- package/hmr/server/vite-plugin.js.map +1 -1
- package/hmr/server/websocket-angular-entry.d.ts +2 -0
- package/hmr/server/websocket-angular-entry.js +68 -0
- package/hmr/server/websocket-angular-entry.js.map +1 -0
- package/hmr/server/websocket-angular-hot-update.d.ts +78 -0
- package/hmr/server/websocket-angular-hot-update.js +413 -0
- package/hmr/server/websocket-angular-hot-update.js.map +1 -0
- package/hmr/server/websocket-core-bridge.d.ts +21 -0
- package/hmr/server/websocket-core-bridge.js +357 -0
- package/hmr/server/websocket-core-bridge.js.map +1 -0
- package/hmr/server/websocket-graph-upsert.d.ts +21 -0
- package/hmr/server/websocket-graph-upsert.js +33 -0
- package/hmr/server/websocket-graph-upsert.js.map +1 -0
- 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-module-bindings.d.ts +6 -0
- package/hmr/server/websocket-module-bindings.js +471 -0
- package/hmr/server/websocket-module-bindings.js.map +1 -0
- package/hmr/server/websocket-module-specifiers.d.ts +101 -0
- package/hmr/server/websocket-module-specifiers.js +820 -0
- package/hmr/server/websocket-module-specifiers.js.map +1 -0
- package/hmr/server/websocket-ns-m-finalize.d.ts +22 -0
- package/hmr/server/websocket-ns-m-finalize.js +88 -0
- package/hmr/server/websocket-ns-m-finalize.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-runtime-compat.d.ts +19 -0
- package/hmr/server/websocket-runtime-compat.js +287 -0
- package/hmr/server/websocket-runtime-compat.js.map +1 -0
- package/hmr/server/websocket-served-module-helpers.d.ts +36 -0
- package/hmr/server/websocket-served-module-helpers.js +631 -0
- package/hmr/server/websocket-served-module-helpers.js.map +1 -0
- package/hmr/server/websocket-txn.d.ts +6 -0
- package/hmr/server/websocket-txn.js +45 -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 +51 -0
- package/hmr/server/websocket-vendor-unifier.js.map +1 -0
- package/hmr/server/websocket-vue-sfc.d.ts +27 -0
- package/hmr/server/websocket-vue-sfc.js +1069 -0
- package/hmr/server/websocket-vue-sfc.js.map +1 -0
- package/hmr/server/websocket.d.ts +26 -3
- package/hmr/server/websocket.js +2233 -796
- package/hmr/server/websocket.js.map +1 -1
- package/hmr/shared/package-classifier.d.ts +9 -0
- package/hmr/shared/package-classifier.js +58 -0
- package/hmr/shared/package-classifier.js.map +1 -0
- package/hmr/shared/runtime/boot-timeline.d.ts +17 -0
- package/hmr/shared/runtime/boot-timeline.js +51 -0
- package/hmr/shared/runtime/boot-timeline.js.map +1 -0
- package/hmr/shared/runtime/browser-runtime-contract.d.ts +64 -0
- package/hmr/shared/runtime/browser-runtime-contract.js +54 -0
- package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -0
- package/hmr/shared/runtime/dev-overlay.d.ts +85 -0
- package/hmr/shared/runtime/dev-overlay.js +1236 -0
- package/hmr/shared/runtime/dev-overlay.js.map +1 -0
- package/hmr/shared/runtime/http-only-boot.d.ts +1 -0
- package/hmr/shared/runtime/http-only-boot.js +53 -6
- package/hmr/shared/runtime/http-only-boot.js.map +1 -1
- package/hmr/shared/runtime/module-provenance.d.ts +1 -0
- package/hmr/shared/runtime/module-provenance.js +63 -0
- package/hmr/shared/runtime/module-provenance.js.map +1 -0
- package/hmr/shared/runtime/platform-polyfills.d.ts +26 -0
- package/hmr/shared/runtime/platform-polyfills.js +122 -0
- package/hmr/shared/runtime/platform-polyfills.js.map +1 -0
- package/hmr/shared/runtime/root-placeholder.d.ts +1 -0
- package/hmr/shared/runtime/root-placeholder.js +552 -82
- package/hmr/shared/runtime/root-placeholder.js.map +1 -1
- package/hmr/shared/runtime/session-bootstrap.d.ts +1 -0
- package/hmr/shared/runtime/session-bootstrap.js +195 -0
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -0
- package/hmr/shared/runtime/vendor-bootstrap.js +52 -15
- package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
- package/hmr/shared/vendor/manifest.d.ts +37 -0
- package/hmr/shared/vendor/manifest.js +677 -57
- package/hmr/shared/vendor/manifest.js.map +1 -1
- package/hmr/shared/vendor/registry.js +104 -7
- package/hmr/shared/vendor/registry.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -1
- package/package.json +14 -2
- package/runtime/core-aliases-early.js +94 -67
- package/runtime/core-aliases-early.js.map +1 -1
- package/shims/solid-jsx-runtime.d.ts +7 -0
- package/shims/solid-jsx-runtime.js +17 -0
- package/shims/solid-jsx-runtime.js.map +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type CoreExportOrigin = {
|
|
2
|
+
moduleId: string;
|
|
3
|
+
mode: 'named' | 'module';
|
|
4
|
+
importedName?: string;
|
|
5
|
+
canonicalSubpath?: string;
|
|
6
|
+
};
|
|
7
|
+
export type ParsedCoreBridgeRequest = {
|
|
8
|
+
hasExplicitVersion: boolean;
|
|
9
|
+
ver: string;
|
|
10
|
+
sub: string;
|
|
11
|
+
normalizedSub: string | null;
|
|
12
|
+
key: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function extractDirectExportedNames(code: string): string[];
|
|
15
|
+
export declare function resolveRuntimeCoreModulePath(normalizedSubpath: string, resolveModuleId: (moduleId: string) => Promise<string | null> | string | null): Promise<string | null>;
|
|
16
|
+
export declare function collectStaticExportNamesFromFile(modulePath: string, seen?: Set<string>): string[];
|
|
17
|
+
export declare function collectStaticExportOriginsFromFile(modulePath: string, rootEntryPath?: string, seen?: Set<string>): Record<string, CoreExportOrigin[]>;
|
|
18
|
+
export declare function normalizeCoreExportOriginsForRuntime(exportOrigins: Record<string, CoreExportOrigin[]>, resolveModuleId: (moduleId: string) => Promise<string | null> | string | null, rootModulePath: string): Promise<Record<string, CoreExportOrigin[]>>;
|
|
19
|
+
export declare function ensureVersionedCoreImports(code: string, _origin: string, ver: number): string;
|
|
20
|
+
export declare function hasModuleDefaultExport(moduleCode: string): boolean;
|
|
21
|
+
export declare function parseCoreBridgeRequest(pathname: string, searchParams: URLSearchParams, currentGraphVersion: number): ParsedCoreBridgeRequest | null;
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { normalizeCoreSub } from '../../helpers/ns-core-url.js';
|
|
4
|
+
const REQUIRE_GUARD_SNIPPET = `// [guard] install require('http(s)://') detector\n(()=>{try{var g=globalThis;if(g.__NS_REQUIRE_GUARD_INSTALLED__){}else{var mk=function(o,l){return function(){try{var s=arguments[0];if(typeof s==='string'&&/^(?:https?:)\\/\\//.test(s)){var e=new Error('[ns-hmr][require-guard] require of URL: '+s+' via '+l);console.error(e.message+'\\n'+(e.stack||''));try{g.__NS_REQUIRE_GUARD_LAST__={spec:s,stack:e.stack,label:l,ts:Date.now()};}catch(e3){}}}catch(e1){}return o.apply(this, arguments);};};if(typeof g.require==='function'&&!g.require.__NS_REQ_GUARDED__){var o1=g.require;g.require=mk(o1,'require');g.require.__NS_REQ_GUARDED__=true;}if(typeof g.__nsRequire==='function'&&!g.__nsRequire.__NS_REQ_GUARDED__){var o2=g.__nsRequire;g.__nsRequire=mk(o2,'__nsRequire');g.__nsRequire.__NS_REQ_GUARDED__=true;}g.__NS_REQUIRE_GUARD_INSTALLED__=true;}}catch(e){}})();\n`;
|
|
5
|
+
export function extractDirectExportedNames(code) {
|
|
6
|
+
const names = new Set();
|
|
7
|
+
const declRe = /\bexport\s+(?:async\s+)?(?:function|class)\s+([A-Za-z_$][\w$]*)/g;
|
|
8
|
+
let match;
|
|
9
|
+
while ((match = declRe.exec(code)) !== null) {
|
|
10
|
+
names.add(match[1]);
|
|
11
|
+
}
|
|
12
|
+
const namespaceRe = /\bexport\s+namespace\s+([A-Za-z_$][\w$]*)/g;
|
|
13
|
+
while ((match = namespaceRe.exec(code)) !== null) {
|
|
14
|
+
names.add(match[1]);
|
|
15
|
+
}
|
|
16
|
+
const varRe = /\bexport\s+(?:const|let|var)\s+([^=;{]+)/g;
|
|
17
|
+
while ((match = varRe.exec(code)) !== null) {
|
|
18
|
+
const decl = match[1].trim();
|
|
19
|
+
if (decl.startsWith('{')) {
|
|
20
|
+
const inner = decl.replace(/^\{|\}$/g, '');
|
|
21
|
+
for (const part of inner.split(',')) {
|
|
22
|
+
const name = part.split(':')[0].trim();
|
|
23
|
+
if (/^[A-Za-z_$][\w$]*$/.test(name))
|
|
24
|
+
names.add(name);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const name = decl.split(/[\s,=]/)[0].trim();
|
|
29
|
+
if (/^[A-Za-z_$][\w$]*$/.test(name))
|
|
30
|
+
names.add(name);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const directBraceRe = /\bexport\s*\{([^}]+)\}(?!\s*from)/g;
|
|
34
|
+
while ((match = directBraceRe.exec(code)) !== null) {
|
|
35
|
+
for (const part of match[1].split(',')) {
|
|
36
|
+
const trimmed = part.trim();
|
|
37
|
+
const asMatch = trimmed.match(/(\S+)\s+as\s+(\S+)/);
|
|
38
|
+
const name = asMatch ? asMatch[2] : trimmed.split(/\s/)[0];
|
|
39
|
+
if (name && /^[A-Za-z_$][\w$]*$/.test(name) && name !== 'default') {
|
|
40
|
+
names.add(name);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return Array.from(names);
|
|
45
|
+
}
|
|
46
|
+
function parseExportSpecList(specList) {
|
|
47
|
+
return String(specList || '')
|
|
48
|
+
.split(',')
|
|
49
|
+
.map((part) => part.trim())
|
|
50
|
+
.filter(Boolean)
|
|
51
|
+
.map((part) => {
|
|
52
|
+
const asMatch = part.match(/(\S+)\s+as\s+(\S+)/i);
|
|
53
|
+
if (asMatch) {
|
|
54
|
+
return { importedName: asMatch[1].trim(), exportedName: asMatch[2].trim() };
|
|
55
|
+
}
|
|
56
|
+
const name = part.split(/\s/)[0]?.trim() || '';
|
|
57
|
+
return { importedName: name, exportedName: name };
|
|
58
|
+
})
|
|
59
|
+
.filter(({ exportedName, importedName }) => /^[A-Za-z_$][\w$]*$/.test(exportedName) && exportedName !== 'default' && /^[A-Za-z_$][\w$]*$/.test(importedName));
|
|
60
|
+
}
|
|
61
|
+
function runtimeModuleIdForFile(modulePath, rootEntryPath) {
|
|
62
|
+
const cleanedPath = String(modulePath || '').replace(/[?#].*$/, '');
|
|
63
|
+
const cleanedRoot = String(rootEntryPath || '').replace(/[?#].*$/, '');
|
|
64
|
+
if (!cleanedPath || !cleanedRoot)
|
|
65
|
+
return null;
|
|
66
|
+
const rootDir = path.dirname(cleanedRoot);
|
|
67
|
+
let rel = path.relative(rootDir, cleanedPath).replace(/\\/g, '/');
|
|
68
|
+
if (!rel || rel === 'index.ts' || rel === 'index.js' || rel === 'index.mjs') {
|
|
69
|
+
return '@nativescript/core';
|
|
70
|
+
}
|
|
71
|
+
rel = rel.replace(/\.(?:ts|js|mjs)$/, '');
|
|
72
|
+
rel = rel.replace(/\/index$/, '');
|
|
73
|
+
return `@nativescript/core/${rel}`;
|
|
74
|
+
}
|
|
75
|
+
function runtimeModuleIdFromLocalSpecifier(spec, currentModuleId) {
|
|
76
|
+
if (!spec.startsWith('.'))
|
|
77
|
+
return spec || null;
|
|
78
|
+
const base = currentModuleId.replace(/^@nativescript\/core(?:\/|$)/, '');
|
|
79
|
+
const baseDir = base ? `/${base}` : '/';
|
|
80
|
+
let rel = path.posix.normalize(path.posix.join(baseDir, spec)).replace(/^\/+/, '');
|
|
81
|
+
rel = rel.replace(/\.(?:ts|js|mjs)$/, '');
|
|
82
|
+
rel = rel.replace(/\/index$/, '');
|
|
83
|
+
return rel ? `@nativescript/core/${rel}` : '@nativescript/core';
|
|
84
|
+
}
|
|
85
|
+
function canonicalCoreSubpathForFile(modulePath, rootEntryPath) {
|
|
86
|
+
const cleanedPath = String(modulePath || '').replace(/[?#].*$/, '');
|
|
87
|
+
const cleanedRoot = String(rootEntryPath || '').replace(/[?#].*$/, '');
|
|
88
|
+
if (!cleanedPath || !cleanedRoot)
|
|
89
|
+
return null;
|
|
90
|
+
const rootDir = path.dirname(cleanedRoot);
|
|
91
|
+
let rel = path.relative(rootDir, cleanedPath).replace(/\\/g, '/');
|
|
92
|
+
if (!rel || rel === 'index.ts' || rel === 'index.js' || rel === 'index.mjs') {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
rel = rel.replace(/\.(?:ts|js|mjs)$/, '.js');
|
|
96
|
+
return rel;
|
|
97
|
+
}
|
|
98
|
+
function canonicalCoreSubpathFromLocalSpecifier(spec, currentCanonicalSubpath) {
|
|
99
|
+
if (!spec.startsWith('.'))
|
|
100
|
+
return null;
|
|
101
|
+
const baseDir = currentCanonicalSubpath ? path.posix.dirname(currentCanonicalSubpath) : '.';
|
|
102
|
+
let rel = path.posix.normalize(path.posix.join(baseDir, spec)).replace(/^\.?\/?/, '');
|
|
103
|
+
if (!rel)
|
|
104
|
+
return null;
|
|
105
|
+
if (/\.(?:ts|js|mjs)$/i.test(rel)) {
|
|
106
|
+
return rel.replace(/\.(?:ts|js|mjs)$/i, '.js');
|
|
107
|
+
}
|
|
108
|
+
return `${rel.replace(/\/+$/, '')}/index.js`;
|
|
109
|
+
}
|
|
110
|
+
export async function resolveRuntimeCoreModulePath(normalizedSubpath, resolveModuleId) {
|
|
111
|
+
const cleanedSubpath = String(normalizedSubpath || '').replace(/^\/+/, '');
|
|
112
|
+
const candidates = [];
|
|
113
|
+
if (!cleanedSubpath || cleanedSubpath === 'index.js') {
|
|
114
|
+
candidates.push('@nativescript/core');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
if (/\/index\.js$/i.test(cleanedSubpath)) {
|
|
118
|
+
const packageSubpath = cleanedSubpath.replace(/\/index\.js$/i, '');
|
|
119
|
+
if (packageSubpath) {
|
|
120
|
+
candidates.push(`@nativescript/core/${packageSubpath}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
candidates.push(`@nativescript/core/${cleanedSubpath}`);
|
|
124
|
+
}
|
|
125
|
+
for (const candidate of candidates) {
|
|
126
|
+
try {
|
|
127
|
+
const resolved = await resolveModuleId(candidate);
|
|
128
|
+
if (resolved) {
|
|
129
|
+
return String(resolved).replace(/[?#].*$/, '');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch { }
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
function appendCoreExportOrigin(map, exportedName, origin) {
|
|
137
|
+
if (!/^[A-Za-z_$][\w$]*$/.test(exportedName) || exportedName === 'default')
|
|
138
|
+
return;
|
|
139
|
+
const existing = map[exportedName] || (map[exportedName] = []);
|
|
140
|
+
if (existing.some((entry) => entry.moduleId === origin.moduleId && entry.mode === origin.mode && entry.importedName === origin.importedName)) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
existing.push(origin);
|
|
144
|
+
}
|
|
145
|
+
function resolveLocalExportTarget(spec, importerId) {
|
|
146
|
+
const importerPath = String(importerId || '').replace(/[?#].*$/, '');
|
|
147
|
+
if (!importerPath)
|
|
148
|
+
return null;
|
|
149
|
+
const importerDir = path.dirname(importerPath);
|
|
150
|
+
// Include platform-specific variants (.ios.js / .android.js / .visionos.js).
|
|
151
|
+
// @nativescript/core ships only platform-specific files for many submodules
|
|
152
|
+
// (e.g. `./application/index.ios.js`, no plain `./application/index.js`), so
|
|
153
|
+
// a plain Node-style resolution misses them and the recursive export-name
|
|
154
|
+
// walk fails to follow `export * from './application'`. Without this, the
|
|
155
|
+
// /ns/core bridge's named-export list omits `Application`, and any static
|
|
156
|
+
// `import { Application } from '@nativescript/core'` through the bridge
|
|
157
|
+
// fails with "module does not provide an export named 'Application'".
|
|
158
|
+
//
|
|
159
|
+
// Prefer .ios variants at the top since the HMR dev server is iOS-first;
|
|
160
|
+
// .android variants are still tried so Android serving also works.
|
|
161
|
+
const platformVariants = ['.ios.ts', '.ios.js', '.ios.mjs', '.android.ts', '.android.js', '.android.mjs', '.visionos.ts', '.visionos.js', '.visionos.mjs'];
|
|
162
|
+
const candidates = [path.resolve(importerDir, spec), path.resolve(importerDir, `${spec}.ts`), path.resolve(importerDir, `${spec}.js`), path.resolve(importerDir, `${spec}.mjs`), ...platformVariants.map((ext) => path.resolve(importerDir, `${spec}${ext}`)), path.resolve(importerDir, spec, 'index.ts'), path.resolve(importerDir, spec, 'index.js'), path.resolve(importerDir, spec, 'index.mjs'), ...platformVariants.map((ext) => path.resolve(importerDir, spec, `index${ext}`))];
|
|
163
|
+
for (const candidate of candidates) {
|
|
164
|
+
if (existsSync(candidate) && !statSync(candidate).isDirectory()) {
|
|
165
|
+
return candidate;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
export function collectStaticExportNamesFromFile(modulePath, seen = new Set()) {
|
|
171
|
+
return Object.keys(collectStaticExportOriginsFromFile(modulePath, modulePath, seen));
|
|
172
|
+
}
|
|
173
|
+
export function collectStaticExportOriginsFromFile(modulePath, rootEntryPath = modulePath, seen = new Set()) {
|
|
174
|
+
const cleanedPath = String(modulePath || '').replace(/[?#].*$/, '');
|
|
175
|
+
const cleanedRoot = String(rootEntryPath || '').replace(/[?#].*$/, '');
|
|
176
|
+
if (!cleanedPath || !cleanedRoot || seen.has(cleanedPath) || !existsSync(cleanedPath)) {
|
|
177
|
+
return {};
|
|
178
|
+
}
|
|
179
|
+
seen.add(cleanedPath);
|
|
180
|
+
let code = '';
|
|
181
|
+
try {
|
|
182
|
+
code = readFileSync(cleanedPath, 'utf8');
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return {};
|
|
186
|
+
}
|
|
187
|
+
const currentModuleId = runtimeModuleIdForFile(cleanedPath, cleanedRoot) || '@nativescript/core';
|
|
188
|
+
const currentCanonicalSubpath = canonicalCoreSubpathForFile(cleanedPath, cleanedRoot);
|
|
189
|
+
// Use a null-prototype map so keys like `toString`, `constructor`, or
|
|
190
|
+
// `hasOwnProperty` — which DO appear as real exports in some core
|
|
191
|
+
// subpaths (e.g. `@nativescript/core/ui/gestures/gestures-common`
|
|
192
|
+
// re-exports `toString`) — don't collide with Object.prototype's own
|
|
193
|
+
// properties. Previously `origins['toString']` returned the inherited
|
|
194
|
+
// Function, and the subsequent `existing.some(...)` call threw
|
|
195
|
+
// "existing.some is not a function", causing the whole subpath's
|
|
196
|
+
// export discovery to bail and fall back to a pure `export *` which
|
|
197
|
+
// in turn leaked into the "hasKey not provided" downstream crash.
|
|
198
|
+
const origins = Object.create(null);
|
|
199
|
+
for (const name of extractDirectExportedNames(code)) {
|
|
200
|
+
appendCoreExportOrigin(origins, name, { moduleId: currentModuleId, mode: 'named', importedName: name, canonicalSubpath: currentCanonicalSubpath || undefined });
|
|
201
|
+
}
|
|
202
|
+
const starAsRe = /\bexport\s+\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\s+["']([^"']+)["']/g;
|
|
203
|
+
let match;
|
|
204
|
+
while ((match = starAsRe.exec(code)) !== null) {
|
|
205
|
+
const exportedName = match[1];
|
|
206
|
+
const spec = match[2];
|
|
207
|
+
const resolvedTarget = spec.startsWith('.') ? resolveLocalExportTarget(spec, cleanedPath) : null;
|
|
208
|
+
const moduleId = resolvedTarget ? runtimeModuleIdForFile(resolvedTarget, cleanedRoot) : spec.startsWith('.') ? runtimeModuleIdFromLocalSpecifier(spec, currentModuleId) : spec;
|
|
209
|
+
const canonicalSubpath = resolvedTarget ? canonicalCoreSubpathForFile(resolvedTarget, cleanedRoot) : spec.startsWith('.') ? canonicalCoreSubpathFromLocalSpecifier(spec, currentCanonicalSubpath) : undefined;
|
|
210
|
+
if (!moduleId)
|
|
211
|
+
continue;
|
|
212
|
+
appendCoreExportOrigin(origins, exportedName, { moduleId, mode: 'module', canonicalSubpath: canonicalSubpath || undefined });
|
|
213
|
+
}
|
|
214
|
+
const namedReExportRe = /\bexport\s*\{([^}]+)\}\s*from\s*["']([^"']+)["']/g;
|
|
215
|
+
while ((match = namedReExportRe.exec(code)) !== null) {
|
|
216
|
+
const specList = match[1];
|
|
217
|
+
const spec = match[2];
|
|
218
|
+
const resolvedTarget = spec.startsWith('.') ? resolveLocalExportTarget(spec, cleanedPath) : null;
|
|
219
|
+
const moduleId = resolvedTarget ? runtimeModuleIdForFile(resolvedTarget, cleanedRoot) : spec.startsWith('.') ? runtimeModuleIdFromLocalSpecifier(spec, currentModuleId) : spec;
|
|
220
|
+
const canonicalSubpath = resolvedTarget ? canonicalCoreSubpathForFile(resolvedTarget, cleanedRoot) : spec.startsWith('.') ? canonicalCoreSubpathFromLocalSpecifier(spec, currentCanonicalSubpath) : undefined;
|
|
221
|
+
if (!moduleId)
|
|
222
|
+
continue;
|
|
223
|
+
for (const { exportedName, importedName } of parseExportSpecList(specList)) {
|
|
224
|
+
appendCoreExportOrigin(origins, exportedName, { moduleId, mode: 'named', importedName, canonicalSubpath: canonicalSubpath || undefined });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const directBraceRe = /\bexport\s*\{([^}]+)\}(?!\s*from)/g;
|
|
228
|
+
while ((match = directBraceRe.exec(code)) !== null) {
|
|
229
|
+
for (const { exportedName, importedName } of parseExportSpecList(match[1])) {
|
|
230
|
+
appendCoreExportOrigin(origins, exportedName, { moduleId: currentModuleId, mode: 'named', importedName, canonicalSubpath: currentCanonicalSubpath || undefined });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// Tolerate trailing comments on `export * from '…'` lines. @nativescript/core
|
|
234
|
+
// has lines like `export * from './layouts'; // barrel export`, and the
|
|
235
|
+
// previous strict `[ \t]*$` anchor refused to match them — which silently
|
|
236
|
+
// skipped recursion into ./layouts, omitting GridLayout/LayoutBase (and
|
|
237
|
+
// any name reached through a similarly-commented star re-export) from the
|
|
238
|
+
// /ns/core bridge's named-export list.
|
|
239
|
+
const starRe = /^[ \t]*export\s+\*\s+from\s+["']([^"']+)["'][^\n]*$/gm;
|
|
240
|
+
while ((match = starRe.exec(code)) !== null) {
|
|
241
|
+
const spec = match[1];
|
|
242
|
+
if (!spec.startsWith('.'))
|
|
243
|
+
continue;
|
|
244
|
+
const resolvedTarget = resolveLocalExportTarget(spec, cleanedPath);
|
|
245
|
+
const moduleId = resolvedTarget ? runtimeModuleIdForFile(resolvedTarget, cleanedRoot) : runtimeModuleIdFromLocalSpecifier(spec, currentModuleId);
|
|
246
|
+
const canonicalSubpath = resolvedTarget ? canonicalCoreSubpathForFile(resolvedTarget, cleanedRoot) : canonicalCoreSubpathFromLocalSpecifier(spec, currentCanonicalSubpath);
|
|
247
|
+
if (!resolvedTarget)
|
|
248
|
+
continue;
|
|
249
|
+
const childOrigins = collectStaticExportOriginsFromFile(resolvedTarget, cleanedRoot, seen);
|
|
250
|
+
for (const [exportedName, entries] of Object.entries(childOrigins)) {
|
|
251
|
+
if (moduleId) {
|
|
252
|
+
appendCoreExportOrigin(origins, exportedName, { moduleId, mode: 'named', importedName: exportedName, canonicalSubpath: canonicalSubpath || undefined });
|
|
253
|
+
}
|
|
254
|
+
for (const entry of entries) {
|
|
255
|
+
appendCoreExportOrigin(origins, exportedName, entry);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return origins;
|
|
260
|
+
}
|
|
261
|
+
export async function normalizeCoreExportOriginsForRuntime(exportOrigins, resolveModuleId, rootModulePath) {
|
|
262
|
+
const cleanedRoot = String(rootModulePath || '').replace(/[?#].*$/, '');
|
|
263
|
+
if (!cleanedRoot || !exportOrigins || typeof exportOrigins !== 'object') {
|
|
264
|
+
return exportOrigins;
|
|
265
|
+
}
|
|
266
|
+
const resolutionCache = new Map();
|
|
267
|
+
const normalizedOrigins = {};
|
|
268
|
+
for (const [exportedName, entries] of Object.entries(exportOrigins)) {
|
|
269
|
+
normalizedOrigins[exportedName] = await Promise.all((entries || []).map(async (entry) => {
|
|
270
|
+
if (!entry?.moduleId || !entry.moduleId.startsWith('@nativescript/core')) {
|
|
271
|
+
return entry;
|
|
272
|
+
}
|
|
273
|
+
let resolvedPath = resolutionCache.get(entry.moduleId);
|
|
274
|
+
if (resolvedPath === undefined) {
|
|
275
|
+
try {
|
|
276
|
+
resolvedPath = (await resolveModuleId(entry.moduleId)) || null;
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
resolvedPath = null;
|
|
280
|
+
}
|
|
281
|
+
resolvedPath = resolvedPath ? String(resolvedPath).replace(/[?#].*$/, '') : null;
|
|
282
|
+
resolutionCache.set(entry.moduleId, resolvedPath);
|
|
283
|
+
}
|
|
284
|
+
if (!resolvedPath) {
|
|
285
|
+
return entry;
|
|
286
|
+
}
|
|
287
|
+
const canonicalSubpath = canonicalCoreSubpathForFile(resolvedPath, cleanedRoot);
|
|
288
|
+
if (!canonicalSubpath || canonicalSubpath === entry.canonicalSubpath) {
|
|
289
|
+
return entry;
|
|
290
|
+
}
|
|
291
|
+
return { ...entry, canonicalSubpath };
|
|
292
|
+
}));
|
|
293
|
+
}
|
|
294
|
+
return normalizedOrigins;
|
|
295
|
+
}
|
|
296
|
+
export function ensureVersionedCoreImports(code, _origin, ver) {
|
|
297
|
+
try {
|
|
298
|
+
code = code.replace(/(["'])(?:https?:\/\/[^"']+)?\/ns\/core(?:\/[\d]+)?(\?p=[^"']+)?\1/g, (_m, q, qp) => `${q}/ns/core/${ver}${qp || ''}${q}`);
|
|
299
|
+
code = code.replace(/import\(\s*(["'])(?:https?:\/\/[^"']+)?\/ns\/core(?:\/[\d]+)?(\?p=[^"']+)?\1\s*\)/g, (_m, q, qp) => `import(${q}/ns/core/${ver}${qp || ''}${q})`);
|
|
300
|
+
}
|
|
301
|
+
catch { }
|
|
302
|
+
return code;
|
|
303
|
+
}
|
|
304
|
+
export function hasModuleDefaultExport(moduleCode) {
|
|
305
|
+
if (!moduleCode || typeof moduleCode !== 'string')
|
|
306
|
+
return false;
|
|
307
|
+
return /\bexport\s+default\b/.test(moduleCode) || /\bexport\s*\{[^}]*\bdefault\b[^}]*\}/.test(moduleCode);
|
|
308
|
+
}
|
|
309
|
+
// Versioned `/ns/core/<ver>?p=<sub>` proxy modules have been removed.
|
|
310
|
+
// The current /ns/core handler serves Vite-transformed @nativescript/core
|
|
311
|
+
// source directly with a self-registering preamble; no proxy layer is
|
|
312
|
+
// needed. Leaving the helpers wired up would have guaranteed drift
|
|
313
|
+
// between the URL canonicalizer and the module registry.
|
|
314
|
+
export function parseCoreBridgeRequest(pathname, searchParams, currentGraphVersion) {
|
|
315
|
+
if (!pathname)
|
|
316
|
+
return null;
|
|
317
|
+
if (!(pathname === '/ns/core' || pathname === '/ns/core/' || pathname.startsWith('/ns/core/'))) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
// Reject legacy versioned path-based deep imports. Every emitter now
|
|
321
|
+
// uses the canonical `/ns/core/<sub>` form. Serving a legacy request
|
|
322
|
+
// like `/ns/core/3/ui/frame/index.js` would split iOS's HTTP ESM
|
|
323
|
+
// cache across versioned and canonical URLs for the same file,
|
|
324
|
+
// re-triggering the double-evaluation bug. Also reject bare
|
|
325
|
+
// trailing-slash variants like `/ns/core/3/` which don't match the
|
|
326
|
+
// accepted forms `/ns/core` / `/ns/core/<sub>`.
|
|
327
|
+
if (/^\/ns\/core\/\d+\/.*$/.test(pathname)) {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const afterCore = pathname.replace(/^\/ns\/core\/?/, '');
|
|
331
|
+
if (afterCore.startsWith('/')) {
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
const hasExplicitVersion = /^\d+$/.test(afterCore);
|
|
335
|
+
const ver = hasExplicitVersion ? afterCore : String(currentGraphVersion || 0);
|
|
336
|
+
// Keep the raw ?p= value (including any `.js` / `/index` suffix) in
|
|
337
|
+
// `sub` and `normalizedSub` so existing call sites still see the
|
|
338
|
+
// as-requested spelling. Canonicalization for Invariant A identity
|
|
339
|
+
// lookups is the handler's responsibility — see the /ns/core bridge
|
|
340
|
+
// middleware in websocket.ts which uses normalizeCoreSub() before
|
|
341
|
+
// populating globalThis.__NS_CORE_MODULES__.
|
|
342
|
+
const sub = searchParams.get('p') || (afterCore && !hasExplicitVersion ? afterCore : '');
|
|
343
|
+
const normalizedSub = sub ? sub.replace(/^\/+/, '') : null;
|
|
344
|
+
// Guard: normalizeCoreSub is imported at the top of this module so
|
|
345
|
+
// adding it to the returned request here costs nothing, but keeping
|
|
346
|
+
// the RAW subpath in `normalizedSub` (matching the historical shape)
|
|
347
|
+
// preserves wire-level compatibility with specs and external callers.
|
|
348
|
+
void normalizeCoreSub;
|
|
349
|
+
return {
|
|
350
|
+
hasExplicitVersion,
|
|
351
|
+
ver,
|
|
352
|
+
sub: normalizedSub || '',
|
|
353
|
+
normalizedSub,
|
|
354
|
+
key: normalizedSub ? `@nativescript/core/${normalizedSub}` : '@nativescript/core',
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=websocket-core-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-core-bridge.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-core-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type GraphUpsertClassification = 'unchanged' | 'inserted' | 'changed';
|
|
2
|
+
export declare function classifyGraphUpsert(existing: {
|
|
3
|
+
hash: string;
|
|
4
|
+
deps: string[];
|
|
5
|
+
} | undefined, nextHash: string, nextDeps: string[]): GraphUpsertClassification;
|
|
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;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function classifyGraphUpsert(existing, nextHash, nextDeps) {
|
|
2
|
+
if (!existing) {
|
|
3
|
+
return 'inserted';
|
|
4
|
+
}
|
|
5
|
+
if (existing.hash === nextHash && existing.deps.length === nextDeps.length && existing.deps.every((d, i) => d === nextDeps[i])) {
|
|
6
|
+
return 'unchanged';
|
|
7
|
+
}
|
|
8
|
+
return 'changed';
|
|
9
|
+
}
|
|
10
|
+
export function shouldBroadcastGraphUpsertDelta(classification, emitDeltaOnInsert = false, broadcastEnabled = true) {
|
|
11
|
+
return broadcastEnabled && (classification === 'changed' || (classification === 'inserted' && emitDeltaOnInsert));
|
|
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
|
+
}
|
|
33
|
+
//# sourceMappingURL=websocket-graph-upsert.js.map
|
|
@@ -0,0 +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;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
|
+
* Early "pending" notification for HMR.
|
|
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;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Early "pending" notification for HMR.
|
|
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 function createHmrPendingMessage(input) {
|
|
23
|
+
const allowed = ['ts', 'css', 'html', 'unknown'];
|
|
24
|
+
const kind = allowed.includes(input.kind || '') ? input.kind : 'unknown';
|
|
25
|
+
return {
|
|
26
|
+
type: 'ns:hmr-pending',
|
|
27
|
+
origin: typeof input.origin === 'string' ? input.origin : '',
|
|
28
|
+
path: typeof input.path === 'string' ? input.path : '',
|
|
29
|
+
kind,
|
|
30
|
+
timestamp: typeof input.timestamp === 'number' && Number.isFinite(input.timestamp) ? input.timestamp : 0,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parser used by the client to identify a pending message regardless of
|
|
35
|
+
* which framework is active. We accept the message only when every
|
|
36
|
+
* expected field is present and well-formed — this guards against
|
|
37
|
+
* accidental matches on legacy server payloads or developer-written
|
|
38
|
+
* mocks during tests.
|
|
39
|
+
*/
|
|
40
|
+
export function isHmrPendingMessage(value) {
|
|
41
|
+
if (!value || typeof value !== 'object')
|
|
42
|
+
return false;
|
|
43
|
+
const v = value;
|
|
44
|
+
if (v.type !== 'ns:hmr-pending')
|
|
45
|
+
return false;
|
|
46
|
+
if (typeof v.path !== 'string' || !v.path)
|
|
47
|
+
return false;
|
|
48
|
+
if (typeof v.timestamp !== 'number' || !Number.isFinite(v.timestamp))
|
|
49
|
+
return false;
|
|
50
|
+
const allowed = ['ts', 'css', 'html', 'unknown'];
|
|
51
|
+
if (!allowed.includes(v.kind || ''))
|
|
52
|
+
return false;
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=websocket-hmr-pending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-hmr-pending.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-hmr-pending.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAYH,MAAM,UAAU,uBAAuB,CAAC,KAAwE;IAC/G,MAAM,OAAO,GAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,IAAI,GAAI,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,IAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACpH,OAAO;QACN,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAC5D,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACtD,IAAI;QACJ,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACxG,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAmC,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,MAAM,OAAO,GAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACzE,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface EnsureNativeScriptModuleBindingsOptions {
|
|
2
|
+
preserveNonPluginVendorImports?: boolean;
|
|
3
|
+
resolvedSpecifierOverrides?: Map<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export declare function ensureNativeScriptModuleBindings(code: string, options?: EnsureNativeScriptModuleBindingsOptions): string;
|
|
6
|
+
export declare function getProcessCodeResolvedSpecifierOverrides(sourceId: string | undefined, projectRoot: string): Map<string, string> | undefined;
|