@nativescript/vite 8.0.0-alpha.1 → 8.0.0-alpha.3
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 +323 -119
- package/configuration/angular.js.map +1 -1
- package/configuration/base.js +41 -24
- 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 +3 -3
- package/configuration/typescript.js.map +1 -1
- package/helpers/angular/angular-linker.js +39 -34
- package/helpers/angular/angular-linker.js.map +1 -1
- 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/commonjs-plugins.d.ts +5 -2
- package/helpers/commonjs-plugins.js +126 -0
- package/helpers/commonjs-plugins.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/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/main-entry.d.ts +5 -2
- package/helpers/main-entry.js +112 -95
- 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 +12 -1
- package/helpers/nativeclass-transformer-plugin.js +175 -36
- package/helpers/nativeclass-transformer-plugin.js.map +1 -1
- package/hmr/client/css-handler.js +60 -20
- package/hmr/client/css-handler.js.map +1 -1
- package/hmr/client/index.js +524 -23
- package/hmr/client/index.js.map +1 -1
- package/hmr/client/utils.js +57 -6
- package/hmr/client/utils.js.map +1 -1
- package/hmr/entry-runtime.d.ts +10 -0
- package/hmr/entry-runtime.js +263 -21
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/client/index.d.ts +2 -1
- package/hmr/frameworks/angular/client/index.js +72 -19
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/frameworks/angular/server/linker.js +36 -2
- package/hmr/frameworks/angular/server/linker.js.map +1 -1
- package/hmr/frameworks/angular/server/strategy.js +20 -5
- 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/helpers/ast-normalizer.js +22 -10
- package/hmr/helpers/ast-normalizer.js.map +1 -1
- package/hmr/server/constants.d.ts +1 -0
- package/hmr/server/constants.js +2 -0
- package/hmr/server/constants.js.map +1 -1
- package/hmr/server/core-sanitize.d.ts +43 -0
- package/hmr/server/core-sanitize.js +219 -13
- package/hmr/server/core-sanitize.js.map +1 -1
- package/hmr/server/import-map.d.ts +65 -0
- package/hmr/server/import-map.js +219 -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/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 +137 -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 +443 -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 +61 -0
- package/hmr/server/websocket-angular-hot-update.js +239 -0
- package/hmr/server/websocket-angular-hot-update.js.map +1 -0
- package/hmr/server/websocket-core-bridge.d.ts +23 -0
- package/hmr/server/websocket-core-bridge.js +360 -0
- package/hmr/server/websocket-core-bridge.js.map +1 -0
- package/hmr/server/websocket-graph-upsert.d.ts +6 -0
- package/hmr/server/websocket-graph-upsert.js +13 -0
- package/hmr/server/websocket-graph-upsert.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 +37 -0
- package/hmr/server/websocket-module-specifiers.js +637 -0
- package/hmr/server/websocket-module-specifiers.js.map +1 -0
- package/hmr/server/websocket.d.ts +26 -3
- package/hmr/server/websocket.js +1402 -678
- 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/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 +38 -0
- package/hmr/shared/runtime/dev-overlay.js +675 -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 +66 -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 +576 -76
- 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 +146 -0
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -0
- package/hmr/shared/runtime/vendor-bootstrap.js +51 -6
- package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
- package/hmr/shared/vendor/manifest.d.ts +7 -0
- package/hmr/shared/vendor/manifest.js +363 -23
- 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/package.json +12 -2
- package/runtime/core-aliases-early.js +83 -32
- 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
|
@@ -1,49 +1,188 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
1
2
|
import { transformNativeClassSource } from './nativeclass-transform.js';
|
|
3
|
+
/**
|
|
4
|
+
* Post-phase cleanup for NativeClass decorators.
|
|
5
|
+
* Strips __decorate([NativeClass()], X) and downlevels ES6 classes to ES5
|
|
6
|
+
* so the NativeScript runtime can detect native class inheritance via __extends.
|
|
7
|
+
*
|
|
8
|
+
* Exported separately for testability.
|
|
9
|
+
*/
|
|
10
|
+
export function postCleanupNativeClass(code, bareId, verbose = false) {
|
|
11
|
+
if (!code)
|
|
12
|
+
return null;
|
|
13
|
+
if (!code.includes('__decorate') || !code.includes('NativeClass'))
|
|
14
|
+
return null;
|
|
15
|
+
// Collect class names that have NativeClass in their __decorate call
|
|
16
|
+
const decorateRe = /(\w+)\s*=\s*(?:\w+\s*=\s*)?__decorate\(\s*\[\s*NativeClass\(\)\s*\]\s*,\s*(\w+)\s*\)/g;
|
|
17
|
+
const classNamesToDownlevel = new Set();
|
|
18
|
+
let m;
|
|
19
|
+
while ((m = decorateRe.exec(code)) !== null) {
|
|
20
|
+
classNamesToDownlevel.add(m[2]);
|
|
21
|
+
}
|
|
22
|
+
if (!classNamesToDownlevel.size)
|
|
23
|
+
return null;
|
|
24
|
+
// Strip NativeClass from __decorate arrays: __decorate([NativeClass()], X) → X
|
|
25
|
+
let output = code.replace(decorateRe, '$1 = $2');
|
|
26
|
+
// Now downlevel any ES6 class expression that extends a native base.
|
|
27
|
+
// Angular's re-compilation may have emitted:
|
|
28
|
+
// var AppDelegate = class AppDelegate extends UIResponder { ... };
|
|
29
|
+
// or with _1 alias:
|
|
30
|
+
// var PDFViewDelegateImpl = PDFViewDelegateImpl_1 = class PDFViewDelegateImpl extends NSObject { ... };
|
|
31
|
+
// We need to find these and downlevel them to ES5 with __extends so the
|
|
32
|
+
// NativeScript runtime can detect native class inheritance.
|
|
33
|
+
for (const className of Array.from(classNamesToDownlevel)) {
|
|
34
|
+
try {
|
|
35
|
+
// Use TypeScript AST to find and extract the class expression reliably
|
|
36
|
+
const sf = ts.createSourceFile(bareId + '.js', output, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
|
|
37
|
+
let classNode;
|
|
38
|
+
let baseName = '';
|
|
39
|
+
let varDeclStart = -1;
|
|
40
|
+
let varDeclEnd = -1;
|
|
41
|
+
let aliasName = ''; // e.g. PDFViewDelegateImpl_1
|
|
42
|
+
const findClass = (node) => {
|
|
43
|
+
if (classNode)
|
|
44
|
+
return;
|
|
45
|
+
// Match: var X = class X extends Y { ... }
|
|
46
|
+
// or: var X = X_1 = class X extends Y { ... }
|
|
47
|
+
if (ts.isVariableStatement(node)) {
|
|
48
|
+
for (const decl of node.declarationList.declarations) {
|
|
49
|
+
if (ts.isIdentifier(decl.name) && decl.name.text === className && decl.initializer) {
|
|
50
|
+
let classExpr = decl.initializer;
|
|
51
|
+
// Handle alias: X = X_1 = class X extends Y { ... }
|
|
52
|
+
if (ts.isBinaryExpression(classExpr) && classExpr.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
53
|
+
if (ts.isIdentifier(classExpr.left)) {
|
|
54
|
+
aliasName = classExpr.left.text;
|
|
55
|
+
}
|
|
56
|
+
classExpr = classExpr.right;
|
|
57
|
+
}
|
|
58
|
+
if (ts.isClassExpression(classExpr) && classExpr.heritageClauses?.length) {
|
|
59
|
+
const extendsClause = classExpr.heritageClauses.find((h) => h.token === ts.SyntaxKind.ExtendsKeyword);
|
|
60
|
+
if (extendsClause?.types[0]) {
|
|
61
|
+
baseName = output.slice(extendsClause.types[0].expression.getStart(sf), extendsClause.types[0].expression.getEnd());
|
|
62
|
+
classNode = classExpr;
|
|
63
|
+
varDeclStart = node.getStart(sf);
|
|
64
|
+
varDeclEnd = node.getEnd();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
ts.forEachChild(node, findClass);
|
|
71
|
+
};
|
|
72
|
+
findClass(sf);
|
|
73
|
+
if (!classNode || !baseName)
|
|
74
|
+
continue;
|
|
75
|
+
// Extract just the class as a declaration for ts.transpileModule
|
|
76
|
+
const classText = output.slice(classNode.getStart(sf), classNode.getEnd());
|
|
77
|
+
// Convert class expression to declaration for proper downlevel
|
|
78
|
+
const classAsDecl = classText.replace(/^class\b/, `class`);
|
|
79
|
+
const toDownlevel = `class ${className} extends ${baseName} ${classAsDecl.slice(classAsDecl.indexOf('{'))}`;
|
|
80
|
+
const downleveled = ts
|
|
81
|
+
.transpileModule(toDownlevel, {
|
|
82
|
+
compilerOptions: {
|
|
83
|
+
module: ts.ModuleKind.ESNext,
|
|
84
|
+
target: ts.ScriptTarget.ES5,
|
|
85
|
+
experimentalDecorators: true,
|
|
86
|
+
emitDecoratorMetadata: false,
|
|
87
|
+
noEmitHelpers: true,
|
|
88
|
+
useDefineForClassFields: false,
|
|
89
|
+
},
|
|
90
|
+
})
|
|
91
|
+
.outputText.replace(/enumerable:\s*false/g, 'enumerable: true')
|
|
92
|
+
.replace(/export \{\};?\s*$/m, '')
|
|
93
|
+
.trim();
|
|
94
|
+
// The downleveled output is a var statement: var ClassName = (function(_super) { ... })(Base);
|
|
95
|
+
// Build the replacement, preserving any alias assignment
|
|
96
|
+
let replacement = downleveled;
|
|
97
|
+
if (aliasName) {
|
|
98
|
+
// Original was: var X = X_1 = class X extends Y {...};
|
|
99
|
+
// Downlevel produces: var X = (function(_super){...})(Y);
|
|
100
|
+
// We need: var X = X_1 = (function(_super){...})(Y);
|
|
101
|
+
replacement = replacement.replace(`var ${className} =`, `var ${className} = ${aliasName} =`);
|
|
102
|
+
}
|
|
103
|
+
output = output.slice(0, varDeclStart) + replacement + output.slice(varDeclEnd);
|
|
104
|
+
if (verbose) {
|
|
105
|
+
console.log(`[ns-nativeclass-post] Downleveled ES6 class "${className}" to ES5 with __extends in ${bareId}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
if (verbose) {
|
|
110
|
+
console.warn(`[ns-nativeclass-post] Failed to downlevel class "${className}" in ${bareId}:`, e);
|
|
111
|
+
}
|
|
112
|
+
// If downleveling fails, the decorator is at least stripped
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (output !== code) {
|
|
116
|
+
if (verbose) {
|
|
117
|
+
console.log(`[ns-nativeclass-post] Cleaned __decorate NativeClass from ${bareId}`);
|
|
118
|
+
}
|
|
119
|
+
return { code: output, map: null };
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
2
123
|
/**
|
|
3
124
|
* Wraps NativeClass TS transformer into a Vite plugin.
|
|
4
125
|
*/
|
|
5
126
|
export function createNativeClassTransformerPlugin() {
|
|
6
127
|
const verbose = !!process.env.NS_DEBUG_NATIVECLASS;
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
128
|
+
return [
|
|
129
|
+
{
|
|
130
|
+
name: 'ns-nativeclass-transformer',
|
|
131
|
+
enforce: 'pre',
|
|
132
|
+
async transform(code, id) {
|
|
133
|
+
if (!code)
|
|
134
|
+
return null;
|
|
135
|
+
const bareId = id.split('?')[0];
|
|
136
|
+
const isTSFile = /\.(ts|tsx)$/.test(bareId);
|
|
137
|
+
const isJSFile = /\.(js|mjs|cjs)$/.test(bareId);
|
|
138
|
+
const isVueTSBlock = !isTSFile && /[?&]lang\.(ts|tsx)\b/.test(id);
|
|
139
|
+
if (!isTSFile && !isVueTSBlock && !isJSFile)
|
|
140
|
+
return null;
|
|
141
|
+
const hasDecoratorSyntax = code.includes('@NativeClass');
|
|
142
|
+
const hasNativeClassIdentifier = code.includes('NativeClass');
|
|
143
|
+
const hasDecorateCall = isJSFile && code.includes('__decorate');
|
|
144
|
+
// Most modules never contain NativeClass decorations.
|
|
145
|
+
// Skip the heavier TS-based helper unless the source has one of the patterns it can actually rewrite.
|
|
146
|
+
if (!hasDecoratorSyntax && !hasNativeClassIdentifier && !hasDecorateCall) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
if (verbose && (hasDecoratorSyntax || hasNativeClassIdentifier)) {
|
|
150
|
+
console.log(`[ns-nativeclass] Processing file with NativeClass: ${bareId}`);
|
|
151
|
+
}
|
|
152
|
+
const res = transformNativeClassSource(code, bareId);
|
|
153
|
+
if (verbose && (hasDecoratorSyntax || hasNativeClassIdentifier)) {
|
|
154
|
+
if (res) {
|
|
155
|
+
const stillHas = /\bNativeClass\b/.test(res.code);
|
|
156
|
+
if (stillHas) {
|
|
157
|
+
console.warn(`[ns-nativeclass] WARNING: NativeClass still present after transform in ${bareId}`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(`[ns-nativeclass] Successfully transformed ${bareId}`);
|
|
161
|
+
}
|
|
36
162
|
}
|
|
37
163
|
else {
|
|
38
|
-
console.log(`[ns-nativeclass]
|
|
164
|
+
console.log(`[ns-nativeclass] Transform returned null for ${bareId} (may be skipped due to platform filter)`);
|
|
39
165
|
}
|
|
40
166
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
167
|
+
return res;
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
// Post-phase cleanup: the Angular plugin (normal phase) may re-compile TypeScript from its
|
|
171
|
+
// own compilation pipeline, re-introducing __decorate([NativeClass()], ...) after the pre-phase
|
|
172
|
+
// transformer already stripped @NativeClass. This post-phase pass catches those survivors.
|
|
173
|
+
// In addition to stripping the decorator, we must also downlevel any ES6 class that was
|
|
174
|
+
// decorated with NativeClass to ES5 (using __extends) so the NativeScript runtime can
|
|
175
|
+
// detect native class inheritance and register ObjC classes.
|
|
176
|
+
{
|
|
177
|
+
name: 'ns-nativeclass-post-cleanup',
|
|
178
|
+
enforce: 'post',
|
|
179
|
+
transform(code, id) {
|
|
180
|
+
const bareId = id.split('?')[0];
|
|
181
|
+
if (!/\.(ts|tsx|js|mjs)$/.test(bareId))
|
|
182
|
+
return null;
|
|
183
|
+
return postCleanupNativeClass(code, bareId, verbose);
|
|
184
|
+
},
|
|
46
185
|
},
|
|
47
|
-
|
|
186
|
+
];
|
|
48
187
|
}
|
|
49
188
|
//# sourceMappingURL=nativeclass-transformer-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeclass-transformer-plugin.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/nativeclass-transformer-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE;;GAEG;AACH,MAAM,UAAU,kCAAkC;IACjD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAEnD,OAAO;QACN,IAAI,EAAE,4BAA4B;
|
|
1
|
+
{"version":3,"file":"nativeclass-transformer-plugin.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/nativeclass-transformer-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,63 @@
|
|
|
1
|
-
import { Application, Frame } from '@nativescript/core';
|
|
2
1
|
const VERBOSE = !!globalThis.__NS_ENV_VERBOSE__;
|
|
3
|
-
|
|
2
|
+
function getPreferredCssApplier() {
|
|
3
|
+
try {
|
|
4
|
+
const applier = globalThis.__NS_HMR_APPLY_CSS__;
|
|
5
|
+
if (typeof applier === 'function') {
|
|
6
|
+
return applier;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
catch { }
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
function getCore(name) {
|
|
13
|
+
try {
|
|
14
|
+
const g = globalThis;
|
|
15
|
+
const reg = g.__nsVendorRegistry;
|
|
16
|
+
if (reg && reg.has('@nativescript/core')) {
|
|
17
|
+
const ns = reg.get('@nativescript/core');
|
|
18
|
+
return ns?.[name] || (ns?.default ?? ns)?.[name];
|
|
19
|
+
}
|
|
20
|
+
const req = g.__nsVendorRequire || g.__nsRequire || g.require;
|
|
21
|
+
if (typeof req === 'function') {
|
|
22
|
+
const ns = req('@nativescript/core');
|
|
23
|
+
return ns?.[name] || (ns?.default ?? ns)?.[name];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch { }
|
|
27
|
+
return globalThis[name];
|
|
28
|
+
}
|
|
29
|
+
// CSS helper: apply CSS and refresh the current page so new styles render
|
|
4
30
|
export function applyCssText(cssText) {
|
|
5
31
|
if (typeof cssText !== 'string' || !cssText.length)
|
|
6
32
|
return;
|
|
7
33
|
try {
|
|
8
|
-
|
|
9
|
-
|
|
34
|
+
const applyInHttpCoreRealm = getPreferredCssApplier();
|
|
35
|
+
if (applyInHttpCoreRealm) {
|
|
36
|
+
applyInHttpCoreRealm(cssText, true);
|
|
10
37
|
if (VERBOSE)
|
|
11
|
-
console.info('[ns-hmr]
|
|
38
|
+
console.info('[ns-hmr] CSS applied through HTTP core realm');
|
|
39
|
+
return;
|
|
12
40
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
41
|
+
const Application = getCore('Application');
|
|
42
|
+
if (Application && Application.addCss) {
|
|
43
|
+
Application.addCss(cssText);
|
|
44
|
+
console.info('[ns-hmr] CSS applied, refreshing view');
|
|
45
|
+
}
|
|
46
|
+
// Trigger a view refresh so the new styles are rendered.
|
|
47
|
+
// NativeScript caches computed styles — addCss alone won't repaint.
|
|
48
|
+
try {
|
|
49
|
+
const rootView = Application?.getRootView?.();
|
|
50
|
+
if (rootView && typeof rootView._onCssStateChange === 'function') {
|
|
51
|
+
rootView._onCssStateChange();
|
|
52
|
+
}
|
|
53
|
+
else if (rootView) {
|
|
54
|
+
// Force a style recalculation by toggling the root's class
|
|
55
|
+
const cls = rootView.className || '';
|
|
56
|
+
rootView.className = cls + ' ';
|
|
57
|
+
rootView.className = cls;
|
|
58
|
+
}
|
|
19
59
|
}
|
|
60
|
+
catch { }
|
|
20
61
|
}
|
|
21
62
|
catch (e) {
|
|
22
63
|
console.warn('[ns-hmr] CSS apply failed:', e?.message || String(e));
|
|
@@ -30,7 +71,6 @@ export async function fetchText(url) {
|
|
|
30
71
|
const res = await g.fetch(url);
|
|
31
72
|
return await res.text();
|
|
32
73
|
}
|
|
33
|
-
// Fallback to NativeScript Http if available
|
|
34
74
|
const Http = g.Http;
|
|
35
75
|
if (Http && Http.getString) {
|
|
36
76
|
return await Http.getString(url);
|
|
@@ -46,17 +86,17 @@ export async function fetchText(url) {
|
|
|
46
86
|
}
|
|
47
87
|
// Handle CSS updates from Vite
|
|
48
88
|
export async function handleCssUpdates(cssUpdates, httpOrigin) {
|
|
89
|
+
if (VERBOSE)
|
|
90
|
+
console.info('[ns-hmr] handleCssUpdates called, updates:', cssUpdates?.length, 'origin:', httpOrigin);
|
|
49
91
|
for (const update of cssUpdates) {
|
|
50
92
|
try {
|
|
51
|
-
const
|
|
52
|
-
if (!
|
|
93
|
+
const cssPath = update.path || update.acceptedPath || '';
|
|
94
|
+
if (!cssPath || !httpOrigin)
|
|
53
95
|
continue;
|
|
54
|
-
//
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const tSuffix = (hasQuery ? '&' : '?') + tParam;
|
|
59
|
-
const url = httpOrigin + path + directParam + tSuffix;
|
|
96
|
+
// Build URL: origin + path + ?direct=1&t=<timestamp>
|
|
97
|
+
const timestamp = update.timestamp || Date.now();
|
|
98
|
+
const sep = cssPath.includes('?') ? '&' : '?';
|
|
99
|
+
const url = `${httpOrigin}${cssPath}${sep}direct=1&t=${timestamp}`;
|
|
60
100
|
if (VERBOSE)
|
|
61
101
|
console.info('[ns-hmr] Fetching CSS:', url);
|
|
62
102
|
const cssText = await fetchText(url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-handler.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/client/css-handler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"css-handler.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/client/css-handler.ts"],"names":[],"mappings":"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"}
|