@nativescript/vite 0.0.2 → 1.0.1
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 +37 -0
- package/bin/cli.cjs +32 -0
- package/configuration/angular.js +66 -175
- package/configuration/angular.js.map +1 -1
- package/configuration/base.js +18 -21
- package/configuration/base.js.map +1 -1
- package/configuration/javascript.js +6 -5
- package/configuration/javascript.js.map +1 -1
- package/configuration/typescript.js +6 -5
- package/configuration/typescript.js.map +1 -1
- package/helpers/{angular-linker.js → angular/angular-linker.js} +27 -19
- package/helpers/angular/angular-linker.js.map +1 -0
- package/helpers/angular/shared-linker.d.ts +4 -0
- package/helpers/angular/shared-linker.js +39 -0
- package/helpers/angular/shared-linker.js.map +1 -0
- package/helpers/angular/util.d.ts +1 -0
- package/helpers/angular/util.js +67 -0
- package/helpers/angular/util.js.map +1 -0
- package/helpers/global-defines.d.ts +2 -0
- package/helpers/global-defines.js +5 -0
- package/helpers/global-defines.js.map +1 -1
- package/helpers/init.d.ts +1 -0
- package/helpers/init.js +119 -0
- package/helpers/init.js.map +1 -0
- package/helpers/logging.js +4 -0
- package/helpers/logging.js.map +1 -1
- package/helpers/main-entry.js +12 -4
- package/helpers/main-entry.js.map +1 -1
- package/helpers/nativeclass-transform.js +1 -1
- package/helpers/nativeclass-transform.js.map +1 -1
- package/helpers/utils.d.ts +4 -0
- package/helpers/utils.js +55 -0
- package/helpers/utils.js.map +1 -1
- package/hmr/client/index.js +257 -84
- package/hmr/client/index.js.map +1 -1
- package/hmr/entry-runtime.js +1 -1
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/client/index.d.ts +8 -0
- package/hmr/frameworks/angular/client/index.js +59 -0
- package/hmr/frameworks/angular/client/index.js.map +1 -0
- package/hmr/frameworks/angular/server/linker.d.ts +1 -0
- package/hmr/frameworks/angular/server/linker.js +101 -0
- package/hmr/frameworks/angular/server/linker.js.map +1 -0
- package/hmr/frameworks/angular/server/strategy.js +106 -20
- package/hmr/frameworks/angular/server/strategy.js.map +1 -1
- package/hmr/frameworks/solid/server/strategy.d.ts +2 -0
- package/hmr/frameworks/solid/server/strategy.js +56 -0
- package/hmr/frameworks/solid/server/strategy.js.map +1 -0
- package/hmr/frameworks/typescript/server/strategy.d.ts +2 -0
- package/hmr/frameworks/typescript/server/strategy.js +125 -0
- package/hmr/frameworks/typescript/server/strategy.js.map +1 -0
- package/hmr/frameworks/vue/client/index.js +7 -3
- package/hmr/frameworks/vue/client/index.js.map +1 -1
- package/hmr/frameworks/vue/server/strategy.js +3 -4
- package/hmr/frameworks/vue/server/strategy.js.map +1 -1
- package/hmr/server/index.js +5 -1
- package/hmr/server/index.js.map +1 -1
- package/hmr/server/websocket.d.ts +6 -0
- package/hmr/server/websocket.js +117 -26
- package/hmr/server/websocket.js.map +1 -1
- package/hmr/shared/vendor/manifest.d.ts +1 -0
- package/hmr/shared/vendor/manifest.js +38 -14
- package/hmr/shared/vendor/manifest.js.map +1 -1
- package/index.js +11 -0
- package/index.js.map +1 -1
- package/package.json +12 -9
- package/shims/angular-animations-stub.d.ts +62 -2
- package/shims/angular-animations-stub.js +132 -6
- package/shims/angular-animations-stub.js.map +1 -1
- package/helpers/angular-linker.js.map +0 -1
- /package/helpers/{angular-linker.d.ts → angular/angular-linker.d.ts} +0 -0
|
@@ -1,47 +1,116 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import { readFileSync, readdirSync, statSync } from 'fs';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
3
|
+
import * as PAT from '../../../server/constants.js';
|
|
4
|
+
import { linkAngularPartialsIfNeeded } from './linker.js';
|
|
5
|
+
import { getProjectAppPath, getProjectAppVirtualPath } from '../../../../helpers/utils.js';
|
|
6
|
+
// Angular server strategy for NativeScript HMR.
|
|
7
|
+
//
|
|
8
|
+
// Responsibilities:
|
|
9
|
+
// - Identify Angular app entry modules under /src.
|
|
10
|
+
// - Use Vite dev server to transform HTTP-served Angular modules.
|
|
11
|
+
// - Run resulting code through the Angular linker helper so no ɵɵngDeclare
|
|
12
|
+
// partial declarations reach the device, even in strict mode.
|
|
13
|
+
// - Register external templates/styles with the watcher for live updates.
|
|
14
|
+
const ANGULAR_APP_DIR = getProjectAppPath();
|
|
15
|
+
const ANGULAR_APP_VIRTUAL_WITH_SLASH = `${getProjectAppVirtualPath()}/`;
|
|
16
|
+
function findAngularEntryFiles(root) {
|
|
17
|
+
const srcDir = path.join(root, ANGULAR_APP_DIR);
|
|
18
|
+
const results = [];
|
|
19
|
+
function walk(dir) {
|
|
20
|
+
let entries = [];
|
|
21
|
+
try {
|
|
22
|
+
entries = readdirSync(dir);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
for (const name of entries) {
|
|
28
|
+
if (name === 'node_modules' || name === '.ns-vite-build' || name === 'dist')
|
|
29
|
+
continue;
|
|
30
|
+
const full = path.join(dir, name);
|
|
31
|
+
let st;
|
|
32
|
+
try {
|
|
33
|
+
st = statSync(full);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (st.isDirectory()) {
|
|
39
|
+
walk(full);
|
|
40
|
+
}
|
|
41
|
+
else if (st.isFile() && (name.endsWith('.ts') || name.endsWith('.js'))) {
|
|
42
|
+
try {
|
|
43
|
+
const code = readFileSync(full, 'utf8');
|
|
44
|
+
// Heuristic: treat files that bootstrap Angular (platformNativeScript, bootstrapApplication, etc.)
|
|
45
|
+
// as HMR-relevant roots.
|
|
46
|
+
if (/bootstrapApplication\s*\(|platformNativeScript/i.test(code) || /@NgModule\s*\(/.test(code)) {
|
|
47
|
+
const rel = '/' + path.relative(root, full).split(path.sep).join('/');
|
|
48
|
+
results.push(rel);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch { }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
walk(srcDir);
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
9
58
|
export const angularServerStrategy = {
|
|
10
59
|
flavor: 'angular',
|
|
11
60
|
matchesFile(id) {
|
|
12
61
|
// Treat only application TS/JS as candidates for ordering/graph purposes
|
|
13
|
-
return /\.(ts|js|tsx|jsx|mjs)$/i.test(id) && id.startsWith(
|
|
62
|
+
return /\.(ts|js|tsx|jsx|mjs)$/i.test(id) && id.startsWith(ANGULAR_APP_VIRTUAL_WITH_SLASH);
|
|
14
63
|
},
|
|
15
64
|
preClean(code) {
|
|
16
65
|
return code;
|
|
17
66
|
},
|
|
18
67
|
rewriteFrameworkImports(code) {
|
|
68
|
+
// Angular runtime imports are handled via the vendor bridge; no extra rewrite.
|
|
19
69
|
return code;
|
|
20
70
|
},
|
|
21
71
|
postClean(code) {
|
|
22
72
|
return code;
|
|
23
73
|
},
|
|
24
|
-
ensureVersionedImports(code) {
|
|
74
|
+
ensureVersionedImports(code, _origin, _version) {
|
|
75
|
+
// No Angular-specific HTTP endpoints yet; leave imports as-is.
|
|
25
76
|
return code;
|
|
26
77
|
},
|
|
27
|
-
async processFile(
|
|
28
|
-
//
|
|
29
|
-
|
|
78
|
+
async processFile(ctx) {
|
|
79
|
+
// Ensure any Angular code the HMR server assembles for HTTP consumption is fully linked.
|
|
80
|
+
const { filePath, server, verbose } = ctx;
|
|
81
|
+
try {
|
|
82
|
+
const transformed = await server.transformRequest(filePath);
|
|
83
|
+
if (!transformed?.code)
|
|
84
|
+
return;
|
|
85
|
+
let code = transformed.code;
|
|
86
|
+
// Sanitize Angular partial declarations inline before device evaluation.
|
|
87
|
+
code = linkAngularPartialsIfNeeded(code, filePath);
|
|
88
|
+
// No additional per-file registry at the moment; core HMR loader will fetch via HTTP.
|
|
89
|
+
if (verbose) {
|
|
90
|
+
console.log(`[angular-hmr] processed ${filePath}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
if (verbose) {
|
|
95
|
+
console.warn('[angular-hmr] processFile error for', filePath, err);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
30
98
|
},
|
|
31
99
|
async buildRegistry(ctx) {
|
|
32
100
|
const { server, verbose } = ctx;
|
|
33
101
|
const root = server.config.root || process.cwd();
|
|
34
|
-
const
|
|
102
|
+
const entries = findAngularEntryFiles(root);
|
|
35
103
|
const templateFiles = [];
|
|
36
|
-
|
|
37
|
-
|
|
104
|
+
// Maintain existing behavior: watch external templates and styles referenced via templateUrl/styleUrls.
|
|
105
|
+
function walkForTemplates(dir) {
|
|
106
|
+
let list = [];
|
|
38
107
|
try {
|
|
39
|
-
|
|
108
|
+
list = readdirSync(dir);
|
|
40
109
|
}
|
|
41
110
|
catch {
|
|
42
111
|
return;
|
|
43
112
|
}
|
|
44
|
-
for (const name of
|
|
113
|
+
for (const name of list) {
|
|
45
114
|
if (name === 'node_modules' || name === '.ns-vite-build' || name === 'dist')
|
|
46
115
|
continue;
|
|
47
116
|
const full = path.join(dir, name);
|
|
@@ -53,7 +122,7 @@ export const angularServerStrategy = {
|
|
|
53
122
|
continue;
|
|
54
123
|
}
|
|
55
124
|
if (st.isDirectory()) {
|
|
56
|
-
|
|
125
|
+
walkForTemplates(full);
|
|
57
126
|
}
|
|
58
127
|
else if (st.isFile() && name.endsWith('.ts')) {
|
|
59
128
|
try {
|
|
@@ -65,12 +134,11 @@ export const angularServerStrategy = {
|
|
|
65
134
|
templateFiles.push(htmlAbs);
|
|
66
135
|
}
|
|
67
136
|
}
|
|
68
|
-
// Also detect styleUrls and watch those files, too
|
|
69
137
|
const styleArrayMatch = code.match(/styleUrls\s*:\s*\[([\s\S]*?)\]/);
|
|
70
138
|
if (styleArrayMatch && styleArrayMatch[1]) {
|
|
71
139
|
const entries = styleArrayMatch[1]
|
|
72
140
|
.split(',')
|
|
73
|
-
.map((s) => s.trim().replace(/^['
|
|
141
|
+
.map((s) => s.trim().replace(/^["'`]|["'`]$/g, ''))
|
|
74
142
|
.filter((s) => s.startsWith('./') && (s.endsWith('.css') || s.endsWith('.scss')));
|
|
75
143
|
for (const rel of entries) {
|
|
76
144
|
const cssAbs = path.join(path.dirname(full), rel);
|
|
@@ -82,7 +150,7 @@ export const angularServerStrategy = {
|
|
|
82
150
|
}
|
|
83
151
|
}
|
|
84
152
|
}
|
|
85
|
-
|
|
153
|
+
walkForTemplates(path.join(root, 'src'));
|
|
86
154
|
try {
|
|
87
155
|
for (const abs of templateFiles) {
|
|
88
156
|
try {
|
|
@@ -96,6 +164,24 @@ export const angularServerStrategy = {
|
|
|
96
164
|
}
|
|
97
165
|
}
|
|
98
166
|
catch { }
|
|
167
|
+
// At this stage, we only need to ensure Angular HMR roots are transformed and linked at least once.
|
|
168
|
+
for (const rel of entries) {
|
|
169
|
+
try {
|
|
170
|
+
const transformed = await server.transformRequest(rel);
|
|
171
|
+
if (!transformed?.code)
|
|
172
|
+
continue;
|
|
173
|
+
let code = transformed.code;
|
|
174
|
+
code = linkAngularPartialsIfNeeded(code, rel);
|
|
175
|
+
if (verbose) {
|
|
176
|
+
console.log(`[angular-registry] primed entry: ${rel}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (verbose) {
|
|
181
|
+
console.warn('[angular-registry] failed to prime entry', rel, err);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
99
185
|
},
|
|
100
186
|
};
|
|
101
187
|
//# sourceMappingURL=strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../../../../../packages/vite/hmr/frameworks/angular/server/strategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../../../../../packages/vite/hmr/frameworks/angular/server/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as PAT from '../../../server/constants.js';
|
|
3
|
+
import { getProjectAppVirtualPath } from '../../../../helpers/utils.js';
|
|
4
|
+
// Solid server strategy for NativeScript HMR.
|
|
5
|
+
// For Solid we don't have .vue-style SFCs today; this strategy mainly
|
|
6
|
+
// ensures Solid runtime imports can be rewritten to vendor when needed
|
|
7
|
+
// and allows future per-file processing hooks.
|
|
8
|
+
const SOLID_FILE_PATTERN = /\.(tsx?|jsx?)$/i;
|
|
9
|
+
const SOLID_APP_PREFIX = `${getProjectAppVirtualPath()}/`;
|
|
10
|
+
export const solidServerStrategy = {
|
|
11
|
+
flavor: 'solid',
|
|
12
|
+
matchesFile(id) {
|
|
13
|
+
// Treat app TS/TSX/JS/JSX under the configured app root as Solid candidates.
|
|
14
|
+
return SOLID_FILE_PATTERN.test(id) && id.startsWith(SOLID_APP_PREFIX);
|
|
15
|
+
},
|
|
16
|
+
preClean(code) {
|
|
17
|
+
// No Solid-specific pre-clean yet.
|
|
18
|
+
return code;
|
|
19
|
+
},
|
|
20
|
+
rewriteFrameworkImports(code) {
|
|
21
|
+
// Solid HMR primarily operates via Vite's own solid-refresh plugin;
|
|
22
|
+
// @nativescript/vite vendor bridging handles NativeScript modules.
|
|
23
|
+
// We keep this hook in case we need to remap solid-js imports later.
|
|
24
|
+
return code;
|
|
25
|
+
},
|
|
26
|
+
postClean(code) {
|
|
27
|
+
// No extra Solid-specific cleanup for now.
|
|
28
|
+
return code;
|
|
29
|
+
},
|
|
30
|
+
ensureVersionedImports(code, _origin, _version) {
|
|
31
|
+
// Solid currently has no dedicated HTTP endpoints like /ns/sfc.
|
|
32
|
+
return code;
|
|
33
|
+
},
|
|
34
|
+
async processFile(ctx) {
|
|
35
|
+
// For now we rely on the generic pipeline; no per-file Solid SFC registry.
|
|
36
|
+
const { filePath, server, verbose } = ctx;
|
|
37
|
+
try {
|
|
38
|
+
const transformed = await server.transformRequest(filePath);
|
|
39
|
+
if (!transformed?.code)
|
|
40
|
+
return;
|
|
41
|
+
if (verbose) {
|
|
42
|
+
console.log(`[solid-hmr] processed ${filePath}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (verbose) {
|
|
47
|
+
console.warn('[solid-hmr] processFile error for', filePath, err);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
async buildRegistry(_ctx) {
|
|
52
|
+
// No Solid registry messaging yet; HTTP-only boot imports app modules directly.
|
|
53
|
+
return;
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../../../../../packages/vite/hmr/frameworks/solid/server/strategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,8CAA8C;AAC9C,sEAAsE;AACtE,uEAAuE;AACvE,+CAA+C;AAE/C,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAC7C,MAAM,gBAAgB,GAAG,GAAG,wBAAwB,EAAE,GAAG,CAAC;AAE1D,MAAM,CAAC,MAAM,mBAAmB,GAA4B;IAC3D,MAAM,EAAE,OAAO;IACf,WAAW,CAAC,EAAU;QACrB,6EAA6E;QAC7E,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvE,CAAC;IACD,QAAQ,CAAC,IAAY;QACpB,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,uBAAuB,CAAC,IAAY;QACnC,oEAAoE;QACpE,mEAAmE;QACnE,qEAAqE;QACrE,OAAO,IAAI,CAAC;IACb,CAAC;IACD,SAAS,CAAC,IAAY;QACrB,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IACD,sBAAsB,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgB;QACrE,gEAAgE;QAChE,OAAO,IAAI,CAAC;IACb,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,GAAgC;QACjD,2EAA2E;QAC3E,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAC1C,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,EAAE,IAAI;gBAAE,OAAO;YAC/B,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClE,CAAC;QACF,CAAC;IACF,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,IAA8B;QACjD,gFAAgF;QAChF,OAAO;IACR,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { getProjectAppPath, getProjectAppVirtualPath } from '../../../../helpers/utils.js';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
// TypeScript server strategy for NativeScript HMR.
|
|
4
|
+
// This is a lightweight strategy that treats app TS/JS files
|
|
5
|
+
// as HTTP-loaded modules, relying on the shared HMR pipeline
|
|
6
|
+
// (rewriteImports, device-side require bridge, etc.).
|
|
7
|
+
const TS_APP_PREFIX = `${getProjectAppVirtualPath()}/`;
|
|
8
|
+
const TS_FILE_PATTERN = /\.(ts|tsx|js|jsx|mjs)$/i;
|
|
9
|
+
export const typescriptServerStrategy = {
|
|
10
|
+
flavor: 'typescript',
|
|
11
|
+
matchesFile(id) {
|
|
12
|
+
// Treat any app TS/JS under the virtual app root as HMR-relevant.
|
|
13
|
+
return TS_FILE_PATTERN.test(id) && id.startsWith(TS_APP_PREFIX);
|
|
14
|
+
},
|
|
15
|
+
preClean(code) {
|
|
16
|
+
// No TS-specific pre-clean; generic sanitizers handle core/HMR noise.
|
|
17
|
+
return code;
|
|
18
|
+
},
|
|
19
|
+
rewriteFrameworkImports(code) {
|
|
20
|
+
// For plain TS apps we rely on vendor bridging and generic import rewriting.
|
|
21
|
+
return code;
|
|
22
|
+
},
|
|
23
|
+
postClean(code) {
|
|
24
|
+
return code;
|
|
25
|
+
},
|
|
26
|
+
ensureVersionedImports(code, _origin, _version) {
|
|
27
|
+
// TypeScript flavor uses direct /ns/entry-rt and HTTP graph; no extra versioning.
|
|
28
|
+
return code;
|
|
29
|
+
},
|
|
30
|
+
async processFile(ctx) {
|
|
31
|
+
// Ensure that any TS app module requested by the HTTP realm is transformed once,
|
|
32
|
+
// so that downstream helpers (rewriteImports, vendor bridge) see a stable shape.
|
|
33
|
+
const { filePath, server, verbose } = ctx;
|
|
34
|
+
try {
|
|
35
|
+
const transformed = await server.transformRequest(filePath);
|
|
36
|
+
if (!transformed?.code)
|
|
37
|
+
return;
|
|
38
|
+
if (verbose) {
|
|
39
|
+
console.log(`[ts-hmr] processed ${filePath}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (verbose) {
|
|
44
|
+
console.warn('[ts-hmr] processFile error for', filePath, err);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
async buildRegistry(ctx) {
|
|
49
|
+
// Build a minimal registry for TS apps: treat all TS/JS
|
|
50
|
+
// modules under the app root as HMR graph members so the
|
|
51
|
+
// server can emit a non-empty ns:hmr-full-graph.
|
|
52
|
+
const { server, verbose, wss } = ctx;
|
|
53
|
+
const root = server.config.root || process.cwd();
|
|
54
|
+
const appDir = getProjectAppPath();
|
|
55
|
+
const appRootAbs = path.join(root, appDir);
|
|
56
|
+
const entries = [];
|
|
57
|
+
// Use Node's fs since getProjectAppPath/root are real filesystem paths.
|
|
58
|
+
const fs = await import('fs');
|
|
59
|
+
function walk(dir) {
|
|
60
|
+
let list = [];
|
|
61
|
+
try {
|
|
62
|
+
list = fs.readdirSync(dir);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
for (const name of list) {
|
|
68
|
+
const full = path.join(dir, name);
|
|
69
|
+
let st;
|
|
70
|
+
try {
|
|
71
|
+
st = fs.statSync(full);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (st.isDirectory()) {
|
|
77
|
+
walk(full);
|
|
78
|
+
}
|
|
79
|
+
else if (st.isFile() && TS_FILE_PATTERN.test(name)) {
|
|
80
|
+
const rel = '/' + path.relative(root, full).split(path.sep).join('/');
|
|
81
|
+
entries.push(rel);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
walk(appRootAbs);
|
|
86
|
+
if (!entries.length) {
|
|
87
|
+
if (verbose) {
|
|
88
|
+
console.log('[ts-hmr][registry] no TS app modules found');
|
|
89
|
+
}
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Prime transforms so the shared pipeline can analyze deps.
|
|
93
|
+
for (const rel of entries) {
|
|
94
|
+
try {
|
|
95
|
+
const transformed = await server.transformRequest(rel);
|
|
96
|
+
if (verbose && transformed?.code) {
|
|
97
|
+
console.log('[ts-hmr][registry] primed module', rel);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
if (verbose) {
|
|
102
|
+
console.warn('[ts-hmr][registry] failed to transform', rel, e);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Send a TS-oriented registry message; server-side graph
|
|
107
|
+
// code will coalesce this into ns:hmr-full-graph.
|
|
108
|
+
if (!wss)
|
|
109
|
+
return;
|
|
110
|
+
const msg = {
|
|
111
|
+
type: 'ns:ts-module-registry',
|
|
112
|
+
modules: entries,
|
|
113
|
+
ts: Date.now(),
|
|
114
|
+
};
|
|
115
|
+
wss.clients.forEach((client) => {
|
|
116
|
+
if (client.readyState === client.OPEN) {
|
|
117
|
+
client.send(JSON.stringify(msg));
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
if (verbose) {
|
|
121
|
+
console.log(`[ts-hmr][registry] sent ${entries.length} TS modules`);
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../../../../../packages/vite/hmr/frameworks/typescript/server/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { attachDiagnosticsToFrame, deriveHttpOrigin, getCore, getCurrentApp, getGraphVersion, getHMRWsUrl, getHttpOriginForVite, normalizeSpec, safeDynImport, safeReadDefault, setCurrentApp } from '../../../client/utils.js';
|
|
2
|
+
const APP_VIRTUAL_WITH_SLASH = (() => {
|
|
3
|
+
const root = typeof __NS_APP_ROOT_VIRTUAL__ === 'string' && __NS_APP_ROOT_VIRTUAL__ ? __NS_APP_ROOT_VIRTUAL__ : '/src';
|
|
4
|
+
return root.replace(/\/+$/, '') + '/';
|
|
5
|
+
})();
|
|
2
6
|
// Optional runtime knob: allow disabling assembler path in favor of variant-only flow
|
|
3
7
|
const DISABLE_ASM = !!globalThis.__NS_HMR_DISABLE_ASM__;
|
|
4
8
|
// Module-scoped state to avoid leaking into globalThis
|
|
@@ -688,7 +692,7 @@ async function waitForSfcMapping(id, timeoutMs = 350) {
|
|
|
688
692
|
if (!/\.vue$/i.test(id))
|
|
689
693
|
return true;
|
|
690
694
|
const base = id.split('?')[0];
|
|
691
|
-
const srcIdx = base.indexOf(
|
|
695
|
+
const srcIdx = base.indexOf(APP_VIRTUAL_WITH_SLASH);
|
|
692
696
|
const rel = srcIdx !== -1 ? base.slice(srcIdx) : base;
|
|
693
697
|
if (sfcArtifactMap.has(rel) || sfcArtifactMap.has(base))
|
|
694
698
|
return true;
|
|
@@ -707,9 +711,9 @@ export function addSfcMapping(originalPath, fileName) {
|
|
|
707
711
|
return;
|
|
708
712
|
const base = originalPath.split('?')[0];
|
|
709
713
|
const norm = normalizeSpec(base);
|
|
710
|
-
// Also derive a relative variant if under
|
|
714
|
+
// Also derive a relative variant if under app root to handle lookups that slice to that portion
|
|
711
715
|
let rel = norm;
|
|
712
|
-
const srcIdx = norm.indexOf(
|
|
716
|
+
const srcIdx = norm.indexOf(APP_VIRTUAL_WITH_SLASH);
|
|
713
717
|
if (srcIdx !== -1)
|
|
714
718
|
rel = norm.slice(srcIdx);
|
|
715
719
|
sfcArtifactMap.set(norm, fileName);
|