one 1.2.60 → 1.2.62
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/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +4 -44
- package/dist/cjs/vite/plugins/SSRCSSPlugin.js +4 -48
- package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js +5 -62
- package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/SSRCSSPlugin.js +4 -48
- package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +4 -44
- package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/SSRCSSPlugin.native.js +4 -61
- package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
- package/env.d.ts +43 -0
- package/package.json +15 -11
- package/server.js +9 -0
- package/src/vite/plugins/SSRCSSPlugin.ts +0 -104
- package/types/env.d.ts +30 -0
- package/types/env.d.ts.map +1 -0
- package/types/vite/plugins/SSRCSSPlugin.d.ts.map +1 -1
|
@@ -36,43 +36,17 @@ __export(SSRCSSPlugin_exports, {
|
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(SSRCSSPlugin_exports);
|
|
38
38
|
var import_constants = require("../../constants.cjs");
|
|
39
|
-
let cssCache = null,
|
|
40
|
-
routesPreWarmed = !1;
|
|
41
|
-
const CSS_CACHE_TTL = 1e3;
|
|
42
39
|
function SSRCSSPlugin(pluginOpts) {
|
|
43
40
|
let server;
|
|
44
41
|
return {
|
|
45
42
|
name: "one-plugin-ssr-css",
|
|
46
43
|
apply: "serve",
|
|
47
44
|
configureServer(server_) {
|
|
48
|
-
server = server_
|
|
49
|
-
const preWarmRoutes = async () => {
|
|
50
|
-
if (!routesPreWarmed) {
|
|
51
|
-
routesPreWarmed = !0;
|
|
52
|
-
try {
|
|
53
|
-
await server.transformRequest(pluginOpts.entries[0]);
|
|
54
|
-
const routeFiles = await collectRouteFiles(server, pluginOpts.entries);
|
|
55
|
-
await Promise.all(routeFiles.map(file => server.transformRequest(file).catch(() => {}))), process.env.ONE_DEBUG && console.log(`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`);
|
|
56
|
-
} catch (err) {
|
|
57
|
-
console.error("[one] Error pre-warming routes:", err);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
server.watcher.on("change", () => {
|
|
62
|
-
cssCache = null;
|
|
63
|
-
}), server.middlewares.use(async (req, res, next) => {
|
|
45
|
+
server = server_, server.middlewares.use(async (req, res, next) => {
|
|
64
46
|
if (req.url?.includes(import_constants.VIRTUAL_SSR_CSS_HREF)) {
|
|
65
|
-
|
|
66
|
-
const now = Date.now();
|
|
67
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
68
|
-
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(cssCache.css), res.end();
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
47
|
+
invalidateModule(server, "\0" + import_constants.VIRTUAL_SSR_CSS_ENTRY + "?direct");
|
|
71
48
|
const code = await collectStyle(server, pluginOpts.entries);
|
|
72
|
-
|
|
73
|
-
css: code,
|
|
74
|
-
timestamp: now
|
|
75
|
-
}, res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
49
|
+
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
76
50
|
return;
|
|
77
51
|
}
|
|
78
52
|
next();
|
|
@@ -171,18 +145,4 @@ async function collectStyleUrls(server, entries) {
|
|
|
171
145
|
}
|
|
172
146
|
return await Promise.all(entries.map(e => server.transformRequest(e))), await Promise.all(entries.map(url => traverse(url))), [...visited].filter(url => url.match(CSS_LANGS_RE));
|
|
173
147
|
}
|
|
174
|
-
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)
|
|
175
|
-
DYNAMIC_IMPORT_RE = /import\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g;
|
|
176
|
-
async function collectRouteFiles(server, entries) {
|
|
177
|
-
const routeFiles = [];
|
|
178
|
-
for (const entry of entries) try {
|
|
179
|
-
const result = await server.transformRequest(entry);
|
|
180
|
-
if (!result?.code) continue;
|
|
181
|
-
let match;
|
|
182
|
-
for (; (match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null;) {
|
|
183
|
-
const importPath = match[1];
|
|
184
|
-
importPath && !importPath.includes("node_modules") && !importPath.startsWith("\0") && !importPath.startsWith("virtual:") && (importPath.endsWith(".tsx") || importPath.endsWith(".ts") || importPath.endsWith(".jsx") || importPath.endsWith(".js")) && routeFiles.push(importPath);
|
|
185
|
-
}
|
|
186
|
-
} catch {}
|
|
187
|
-
return routeFiles;
|
|
188
|
-
}
|
|
148
|
+
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
@@ -27,46 +27,17 @@ __export(SSRCSSPlugin_exports, {
|
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(SSRCSSPlugin_exports);
|
|
29
29
|
var import_constants = require("../../constants");
|
|
30
|
-
let cssCache = null, routesPreWarmed = !1;
|
|
31
|
-
const CSS_CACHE_TTL = 1e3;
|
|
32
30
|
function SSRCSSPlugin(pluginOpts) {
|
|
33
31
|
let server;
|
|
34
32
|
return {
|
|
35
33
|
name: "one-plugin-ssr-css",
|
|
36
34
|
apply: "serve",
|
|
37
35
|
configureServer(server_) {
|
|
38
|
-
server = server_
|
|
39
|
-
const preWarmRoutes = async () => {
|
|
40
|
-
if (!routesPreWarmed) {
|
|
41
|
-
routesPreWarmed = !0;
|
|
42
|
-
try {
|
|
43
|
-
await server.transformRequest(pluginOpts.entries[0]);
|
|
44
|
-
const routeFiles = await collectRouteFiles(server, pluginOpts.entries);
|
|
45
|
-
await Promise.all(
|
|
46
|
-
routeFiles.map(
|
|
47
|
-
(file) => server.transformRequest(file).catch(() => {
|
|
48
|
-
})
|
|
49
|
-
)
|
|
50
|
-
), process.env.ONE_DEBUG && console.log(
|
|
51
|
-
`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`
|
|
52
|
-
);
|
|
53
|
-
} catch (err) {
|
|
54
|
-
console.error("[one] Error pre-warming routes:", err);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
server.watcher.on("change", () => {
|
|
59
|
-
cssCache = null;
|
|
60
|
-
}), server.middlewares.use(async (req, res, next) => {
|
|
36
|
+
server = server_, server.middlewares.use(async (req, res, next) => {
|
|
61
37
|
if (req.url?.includes(import_constants.VIRTUAL_SSR_CSS_HREF)) {
|
|
62
|
-
|
|
63
|
-
const now = Date.now();
|
|
64
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
65
|
-
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(cssCache.css), res.end();
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
38
|
+
invalidateModule(server, "\0" + import_constants.VIRTUAL_SSR_CSS_ENTRY + "?direct");
|
|
68
39
|
const code = await collectStyle(server, pluginOpts.entries);
|
|
69
|
-
|
|
40
|
+
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
70
41
|
return;
|
|
71
42
|
}
|
|
72
43
|
next();
|
|
@@ -168,20 +139,5 @@ async function collectStyleUrls(server, entries) {
|
|
|
168
139
|
}
|
|
169
140
|
return await Promise.all(entries.map((e) => server.transformRequest(e))), await Promise.all(entries.map((url) => traverse(url))), [...visited].filter((url) => url.match(CSS_LANGS_RE));
|
|
170
141
|
}
|
|
171
|
-
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)
|
|
172
|
-
async function collectRouteFiles(server, entries) {
|
|
173
|
-
const routeFiles = [];
|
|
174
|
-
for (const entry of entries)
|
|
175
|
-
try {
|
|
176
|
-
const result = await server.transformRequest(entry);
|
|
177
|
-
if (!result?.code) continue;
|
|
178
|
-
let match;
|
|
179
|
-
for (; (match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null; ) {
|
|
180
|
-
const importPath = match[1];
|
|
181
|
-
importPath && !importPath.includes("node_modules") && !importPath.startsWith("\0") && !importPath.startsWith("virtual:") && (importPath.endsWith(".tsx") || importPath.endsWith(".ts") || importPath.endsWith(".jsx") || importPath.endsWith(".js")) && routeFiles.push(importPath);
|
|
182
|
-
}
|
|
183
|
-
} catch {
|
|
184
|
-
}
|
|
185
|
-
return routeFiles;
|
|
186
|
-
}
|
|
142
|
+
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
187
143
|
//# sourceMappingURL=SSRCSSPlugin.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/vite/plugins/SSRCSSPlugin.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAA4D;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -37,47 +37,19 @@ __export(SSRCSSPlugin_exports, {
|
|
|
37
37
|
collectStyle: () => collectStyle
|
|
38
38
|
});
|
|
39
39
|
module.exports = __toCommonJS(SSRCSSPlugin_exports);
|
|
40
|
-
var import_constants = require("../../constants.native.js")
|
|
41
|
-
cssCache = null,
|
|
42
|
-
routesPreWarmed = !1,
|
|
43
|
-
CSS_CACHE_TTL = 1e3;
|
|
40
|
+
var import_constants = require("../../constants.native.js");
|
|
44
41
|
function SSRCSSPlugin(pluginOpts) {
|
|
45
42
|
var server;
|
|
46
43
|
return {
|
|
47
44
|
name: "one-plugin-ssr-css",
|
|
48
45
|
apply: "serve",
|
|
49
46
|
configureServer(server_) {
|
|
50
|
-
server = server_
|
|
51
|
-
var preWarmRoutes = async function () {
|
|
52
|
-
if (!routesPreWarmed) {
|
|
53
|
-
routesPreWarmed = !0;
|
|
54
|
-
try {
|
|
55
|
-
await server.transformRequest(pluginOpts.entries[0]);
|
|
56
|
-
var routeFiles = await collectRouteFiles(server, pluginOpts.entries);
|
|
57
|
-
await Promise.all(routeFiles.map(function (file) {
|
|
58
|
-
return server.transformRequest(file).catch(function () {});
|
|
59
|
-
})), process.env.ONE_DEBUG && console.log(`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`);
|
|
60
|
-
} catch (err) {
|
|
61
|
-
console.error("[one] Error pre-warming routes:", err);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
server.watcher.on("change", function () {
|
|
66
|
-
cssCache = null;
|
|
67
|
-
}), server.middlewares.use(async function (req, res, next) {
|
|
47
|
+
server = server_, server.middlewares.use(async function (req, res, next) {
|
|
68
48
|
var _req_url;
|
|
69
49
|
if (!((_req_url = req.url) === null || _req_url === void 0) && _req_url.includes(import_constants.VIRTUAL_SSR_CSS_HREF)) {
|
|
70
|
-
|
|
71
|
-
var now = Date.now();
|
|
72
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
73
|
-
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(cssCache.css), res.end();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
50
|
+
invalidateModule(server, "\0" + import_constants.VIRTUAL_SSR_CSS_ENTRY + "?direct");
|
|
76
51
|
var code = await collectStyle(server, pluginOpts.entries);
|
|
77
|
-
|
|
78
|
-
css: code,
|
|
79
|
-
timestamp: now
|
|
80
|
-
}, res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
52
|
+
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
81
53
|
return;
|
|
82
54
|
}
|
|
83
55
|
next();
|
|
@@ -189,34 +161,5 @@ async function collectStyleUrls(server, entries) {
|
|
|
189
161
|
return url.match(CSS_LANGS_RE);
|
|
190
162
|
});
|
|
191
163
|
}
|
|
192
|
-
var CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)
|
|
193
|
-
DYNAMIC_IMPORT_RE = /import\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g;
|
|
194
|
-
async function collectRouteFiles(server, entries) {
|
|
195
|
-
var routeFiles = [],
|
|
196
|
-
_iteratorNormalCompletion = !0,
|
|
197
|
-
_didIteratorError = !1,
|
|
198
|
-
_iteratorError = void 0;
|
|
199
|
-
try {
|
|
200
|
-
for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
201
|
-
var entry = _step.value;
|
|
202
|
-
try {
|
|
203
|
-
var result = await server.transformRequest(entry);
|
|
204
|
-
if (!result?.code) continue;
|
|
205
|
-
for (var match = void 0; (match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null;) {
|
|
206
|
-
var importPath = match[1];
|
|
207
|
-
importPath && !importPath.includes("node_modules") && !importPath.startsWith("\0") && !importPath.startsWith("virtual:") && (importPath.endsWith(".tsx") || importPath.endsWith(".ts") || importPath.endsWith(".jsx") || importPath.endsWith(".js")) && routeFiles.push(importPath);
|
|
208
|
-
}
|
|
209
|
-
} catch {}
|
|
210
|
-
}
|
|
211
|
-
} catch (err) {
|
|
212
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
213
|
-
} finally {
|
|
214
|
-
try {
|
|
215
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
216
|
-
} finally {
|
|
217
|
-
if (_didIteratorError) throw _iteratorError;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return routeFiles;
|
|
221
|
-
}
|
|
164
|
+
var CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
222
165
|
//# sourceMappingURL=SSRCSSPlugin.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","SSRCSSPlugin_exports","__export","SSRCSSPlugin","collectStyle","module","exports","import_constants","require","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","SSRCSSPlugin_exports","__export","SSRCSSPlugin","collectStyle","module","exports","import_constants","require","pluginOpts","server","name","apply","configureServer","server_","middlewares","use","req","res","next","_req_url","url","includes","VIRTUAL_SSR_CSS_HREF","invalidateModule","VIRTUAL_SSR_CSS_ENTRY","code","entries","setHeader","write","end","resolveId","source","_importer","_options","startsWith","load","id","URL","slice","searchParams","has","JSON","stringify","transformIndexHtml","handler","tag","injectTo","attrs","rel","href","type","children","moduleGraph","getModuleById","transform","urls","collectStyleUrls","codes","Promise","all","map","transformRequest","prefix","buffer2","Buffer","from","codeOut2","Uint8Array","buffer","byteOffset","byteLength","processed","filename","config","css","lightningcss","toString","err","console","error","out","flat","filter","Boolean","join","codeOut","visited","Set","traverse","resolveUrl","add","importedModules"],"sources":["../../../../src/vite/plugins/SSRCSSPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,44 +1,15 @@
|
|
|
1
1
|
import { VIRTUAL_SSR_CSS_ENTRY, VIRTUAL_SSR_CSS_HREF } from "../../constants";
|
|
2
|
-
let cssCache = null, routesPreWarmed = !1;
|
|
3
|
-
const CSS_CACHE_TTL = 1e3;
|
|
4
2
|
function SSRCSSPlugin(pluginOpts) {
|
|
5
3
|
let server;
|
|
6
4
|
return {
|
|
7
5
|
name: "one-plugin-ssr-css",
|
|
8
6
|
apply: "serve",
|
|
9
7
|
configureServer(server_) {
|
|
10
|
-
server = server_
|
|
11
|
-
const preWarmRoutes = async () => {
|
|
12
|
-
if (!routesPreWarmed) {
|
|
13
|
-
routesPreWarmed = !0;
|
|
14
|
-
try {
|
|
15
|
-
await server.transformRequest(pluginOpts.entries[0]);
|
|
16
|
-
const routeFiles = await collectRouteFiles(server, pluginOpts.entries);
|
|
17
|
-
await Promise.all(
|
|
18
|
-
routeFiles.map(
|
|
19
|
-
(file) => server.transformRequest(file).catch(() => {
|
|
20
|
-
})
|
|
21
|
-
)
|
|
22
|
-
), process.env.ONE_DEBUG && console.log(
|
|
23
|
-
`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`
|
|
24
|
-
);
|
|
25
|
-
} catch (err) {
|
|
26
|
-
console.error("[one] Error pre-warming routes:", err);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
server.watcher.on("change", () => {
|
|
31
|
-
cssCache = null;
|
|
32
|
-
}), server.middlewares.use(async (req, res, next) => {
|
|
8
|
+
server = server_, server.middlewares.use(async (req, res, next) => {
|
|
33
9
|
if (req.url?.includes(VIRTUAL_SSR_CSS_HREF)) {
|
|
34
|
-
|
|
35
|
-
const now = Date.now();
|
|
36
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
37
|
-
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(cssCache.css), res.end();
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
10
|
+
invalidateModule(server, "\0" + VIRTUAL_SSR_CSS_ENTRY + "?direct");
|
|
40
11
|
const code = await collectStyle(server, pluginOpts.entries);
|
|
41
|
-
|
|
12
|
+
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
42
13
|
return;
|
|
43
14
|
}
|
|
44
15
|
next();
|
|
@@ -140,22 +111,7 @@ async function collectStyleUrls(server, entries) {
|
|
|
140
111
|
}
|
|
141
112
|
return await Promise.all(entries.map((e) => server.transformRequest(e))), await Promise.all(entries.map((url) => traverse(url))), [...visited].filter((url) => url.match(CSS_LANGS_RE));
|
|
142
113
|
}
|
|
143
|
-
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)
|
|
144
|
-
async function collectRouteFiles(server, entries) {
|
|
145
|
-
const routeFiles = [];
|
|
146
|
-
for (const entry of entries)
|
|
147
|
-
try {
|
|
148
|
-
const result = await server.transformRequest(entry);
|
|
149
|
-
if (!result?.code) continue;
|
|
150
|
-
let match;
|
|
151
|
-
for (; (match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null; ) {
|
|
152
|
-
const importPath = match[1];
|
|
153
|
-
importPath && !importPath.includes("node_modules") && !importPath.startsWith("\0") && !importPath.startsWith("virtual:") && (importPath.endsWith(".tsx") || importPath.endsWith(".ts") || importPath.endsWith(".jsx") || importPath.endsWith(".js")) && routeFiles.push(importPath);
|
|
154
|
-
}
|
|
155
|
-
} catch {
|
|
156
|
-
}
|
|
157
|
-
return routeFiles;
|
|
158
|
-
}
|
|
114
|
+
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
159
115
|
export {
|
|
160
116
|
SSRCSSPlugin,
|
|
161
117
|
collectStyle
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/vite/plugins/SSRCSSPlugin.ts"],
|
|
4
|
-
"mappings": "AACA,SAAS,uBAAuB,4BAA4B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,41 +1,15 @@
|
|
|
1
1
|
import { VIRTUAL_SSR_CSS_ENTRY, VIRTUAL_SSR_CSS_HREF } from "../../constants.mjs";
|
|
2
|
-
let cssCache = null,
|
|
3
|
-
routesPreWarmed = !1;
|
|
4
|
-
const CSS_CACHE_TTL = 1e3;
|
|
5
2
|
function SSRCSSPlugin(pluginOpts) {
|
|
6
3
|
let server;
|
|
7
4
|
return {
|
|
8
5
|
name: "one-plugin-ssr-css",
|
|
9
6
|
apply: "serve",
|
|
10
7
|
configureServer(server_) {
|
|
11
|
-
server = server_
|
|
12
|
-
const preWarmRoutes = async () => {
|
|
13
|
-
if (!routesPreWarmed) {
|
|
14
|
-
routesPreWarmed = !0;
|
|
15
|
-
try {
|
|
16
|
-
await server.transformRequest(pluginOpts.entries[0]);
|
|
17
|
-
const routeFiles = await collectRouteFiles(server, pluginOpts.entries);
|
|
18
|
-
await Promise.all(routeFiles.map(file => server.transformRequest(file).catch(() => {}))), process.env.ONE_DEBUG && console.log(`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`);
|
|
19
|
-
} catch (err) {
|
|
20
|
-
console.error("[one] Error pre-warming routes:", err);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
server.watcher.on("change", () => {
|
|
25
|
-
cssCache = null;
|
|
26
|
-
}), server.middlewares.use(async (req, res, next) => {
|
|
8
|
+
server = server_, server.middlewares.use(async (req, res, next) => {
|
|
27
9
|
if (req.url?.includes(VIRTUAL_SSR_CSS_HREF)) {
|
|
28
|
-
|
|
29
|
-
const now = Date.now();
|
|
30
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
31
|
-
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(cssCache.css), res.end();
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
10
|
+
invalidateModule(server, "\0" + VIRTUAL_SSR_CSS_ENTRY + "?direct");
|
|
34
11
|
const code = await collectStyle(server, pluginOpts.entries);
|
|
35
|
-
|
|
36
|
-
css: code,
|
|
37
|
-
timestamp: now
|
|
38
|
-
}, res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
12
|
+
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
39
13
|
return;
|
|
40
14
|
}
|
|
41
15
|
next();
|
|
@@ -134,20 +108,6 @@ async function collectStyleUrls(server, entries) {
|
|
|
134
108
|
}
|
|
135
109
|
return await Promise.all(entries.map(e => server.transformRequest(e))), await Promise.all(entries.map(url => traverse(url))), [...visited].filter(url => url.match(CSS_LANGS_RE));
|
|
136
110
|
}
|
|
137
|
-
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)
|
|
138
|
-
DYNAMIC_IMPORT_RE = /import\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g;
|
|
139
|
-
async function collectRouteFiles(server, entries) {
|
|
140
|
-
const routeFiles = [];
|
|
141
|
-
for (const entry of entries) try {
|
|
142
|
-
const result = await server.transformRequest(entry);
|
|
143
|
-
if (!result?.code) continue;
|
|
144
|
-
let match;
|
|
145
|
-
for (; (match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null;) {
|
|
146
|
-
const importPath = match[1];
|
|
147
|
-
importPath && !importPath.includes("node_modules") && !importPath.startsWith("\0") && !importPath.startsWith("virtual:") && (importPath.endsWith(".tsx") || importPath.endsWith(".ts") || importPath.endsWith(".jsx") || importPath.endsWith(".js")) && routeFiles.push(importPath);
|
|
148
|
-
}
|
|
149
|
-
} catch {}
|
|
150
|
-
return routeFiles;
|
|
151
|
-
}
|
|
111
|
+
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
152
112
|
export { SSRCSSPlugin, collectStyle };
|
|
153
113
|
//# sourceMappingURL=SSRCSSPlugin.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","
|
|
1
|
+
{"version":3,"names":["VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","SSRCSSPlugin","pluginOpts","server","name","apply","configureServer","server_","middlewares","use","req","res","next","url","includes","invalidateModule","code","collectStyle","entries","setHeader","write","end","resolveId","source","_importer","_options","startsWith","load","id","URL","slice","searchParams","has","JSON","stringify","transformIndexHtml","handler","tag","injectTo","attrs","rel","href","type","children","mod","moduleGraph","getModuleById","transform","urls","collectStyleUrls","out","Promise","all","map","transformRequest","prefix","buffer","Buffer","from","codeOut","Uint8Array","byteOffset","byteLength","processed","filename","config","css","lightningcss","toString","err","console","error","flat","filter","Boolean","join","visited","Set","traverse","resolveUrl","add","importedModules","childMod","e","match","CSS_LANGS_RE"],"sources":["../../../../src/vite/plugins/SSRCSSPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,44 +1,16 @@
|
|
|
1
1
|
import { VIRTUAL_SSR_CSS_ENTRY, VIRTUAL_SSR_CSS_HREF } from "../../constants.native.js";
|
|
2
|
-
var cssCache = null,
|
|
3
|
-
routesPreWarmed = !1,
|
|
4
|
-
CSS_CACHE_TTL = 1e3;
|
|
5
2
|
function SSRCSSPlugin(pluginOpts) {
|
|
6
3
|
var server;
|
|
7
4
|
return {
|
|
8
5
|
name: "one-plugin-ssr-css",
|
|
9
6
|
apply: "serve",
|
|
10
7
|
configureServer(server_) {
|
|
11
|
-
server = server_
|
|
12
|
-
var preWarmRoutes = async function () {
|
|
13
|
-
if (!routesPreWarmed) {
|
|
14
|
-
routesPreWarmed = !0;
|
|
15
|
-
try {
|
|
16
|
-
await server.transformRequest(pluginOpts.entries[0]);
|
|
17
|
-
var routeFiles = await collectRouteFiles(server, pluginOpts.entries);
|
|
18
|
-
await Promise.all(routeFiles.map(function (file) {
|
|
19
|
-
return server.transformRequest(file).catch(function () {});
|
|
20
|
-
})), process.env.ONE_DEBUG && console.log(`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`);
|
|
21
|
-
} catch (err) {
|
|
22
|
-
console.error("[one] Error pre-warming routes:", err);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
server.watcher.on("change", function () {
|
|
27
|
-
cssCache = null;
|
|
28
|
-
}), server.middlewares.use(async function (req, res, next) {
|
|
8
|
+
server = server_, server.middlewares.use(async function (req, res, next) {
|
|
29
9
|
var _req_url;
|
|
30
10
|
if (!((_req_url = req.url) === null || _req_url === void 0) && _req_url.includes(VIRTUAL_SSR_CSS_HREF)) {
|
|
31
|
-
|
|
32
|
-
var now = Date.now();
|
|
33
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
34
|
-
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(cssCache.css), res.end();
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
11
|
+
invalidateModule(server, "\0" + VIRTUAL_SSR_CSS_ENTRY + "?direct");
|
|
37
12
|
var code = await collectStyle(server, pluginOpts.entries);
|
|
38
|
-
|
|
39
|
-
css: code,
|
|
40
|
-
timestamp: now
|
|
41
|
-
}, res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
13
|
+
res.setHeader("Content-Type", "text/css"), res.setHeader("Cache-Control", "no-store"), res.setHeader("Vary", "*"), res.write(code), res.end();
|
|
42
14
|
return;
|
|
43
15
|
}
|
|
44
16
|
next();
|
|
@@ -150,35 +122,6 @@ async function collectStyleUrls(server, entries) {
|
|
|
150
122
|
return url.match(CSS_LANGS_RE);
|
|
151
123
|
});
|
|
152
124
|
}
|
|
153
|
-
var CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)
|
|
154
|
-
DYNAMIC_IMPORT_RE = /import\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g;
|
|
155
|
-
async function collectRouteFiles(server, entries) {
|
|
156
|
-
var routeFiles = [],
|
|
157
|
-
_iteratorNormalCompletion = !0,
|
|
158
|
-
_didIteratorError = !1,
|
|
159
|
-
_iteratorError = void 0;
|
|
160
|
-
try {
|
|
161
|
-
for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
162
|
-
var entry = _step.value;
|
|
163
|
-
try {
|
|
164
|
-
var result = await server.transformRequest(entry);
|
|
165
|
-
if (!result?.code) continue;
|
|
166
|
-
for (var match = void 0; (match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null;) {
|
|
167
|
-
var importPath = match[1];
|
|
168
|
-
importPath && !importPath.includes("node_modules") && !importPath.startsWith("\0") && !importPath.startsWith("virtual:") && (importPath.endsWith(".tsx") || importPath.endsWith(".ts") || importPath.endsWith(".jsx") || importPath.endsWith(".js")) && routeFiles.push(importPath);
|
|
169
|
-
}
|
|
170
|
-
} catch {}
|
|
171
|
-
}
|
|
172
|
-
} catch (err) {
|
|
173
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
174
|
-
} finally {
|
|
175
|
-
try {
|
|
176
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
177
|
-
} finally {
|
|
178
|
-
if (_didIteratorError) throw _iteratorError;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return routeFiles;
|
|
182
|
-
}
|
|
125
|
+
var CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
183
126
|
export { SSRCSSPlugin, collectStyle };
|
|
184
127
|
//# sourceMappingURL=SSRCSSPlugin.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","
|
|
1
|
+
{"version":3,"names":["VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","SSRCSSPlugin","pluginOpts","server","name","apply","configureServer","server_","middlewares","use","req","res","next","_req_url","url","includes","invalidateModule","code","collectStyle","entries","setHeader","write","end","resolveId","source","_importer","_options","startsWith","load","id","URL","slice","searchParams","has","JSON","stringify","transformIndexHtml","handler","tag","injectTo","attrs","rel","href","type","children","mod","moduleGraph","getModuleById","transform","urls","collectStyleUrls","codes","Promise","all","map","transformRequest","prefix","buffer2","Buffer","from","codeOut2","Uint8Array","buffer","byteOffset","byteLength","processed","filename","config","css","lightningcss","toString","err","console","error","out","flat","filter","Boolean","join","codeOut","visited","Set","traverse","resolveUrl","add","importedModules","childMod"],"sources":["../../../../src/vite/plugins/SSRCSSPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/env.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
2
|
+
|
|
3
|
+
interface OneEnvVariables {
|
|
4
|
+
// Core One variables
|
|
5
|
+
/** Random number for each production build, or stable per dev server run. Useful for cache keys. */
|
|
6
|
+
ONE_CACHE_KEY: string
|
|
7
|
+
/** Your app.key setting from vite.config */
|
|
8
|
+
ONE_APP_NAME: string
|
|
9
|
+
/** Current running server URL in development, e.g. "http://0.0.0.0:8081". Set this yourself for production. */
|
|
10
|
+
ONE_SERVER_URL: string
|
|
11
|
+
/** "ssr", "ssg", or "spa" based on your defaultRenderMode setting */
|
|
12
|
+
ONE_DEFAULT_RENDER_MODE: 'ssr' | 'ssg' | 'spa'
|
|
13
|
+
|
|
14
|
+
// Platform detection
|
|
15
|
+
/** "client" for client-side web, "ssr" for server-side web, "ios" or "android" for native */
|
|
16
|
+
VITE_ENVIRONMENT: 'client' | 'ssr' | 'ios' | 'android'
|
|
17
|
+
/** "web" for all web builds (client and SSR), "native" for native platforms (iOS and Android) */
|
|
18
|
+
VITE_PLATFORM: 'web' | 'native'
|
|
19
|
+
/** "web" for web builds, "ios" or "android" for native. Matches Expo convention. */
|
|
20
|
+
EXPO_OS: 'web' | 'ios' | 'android'
|
|
21
|
+
|
|
22
|
+
// React Native (available in native builds)
|
|
23
|
+
/** The React Native version string */
|
|
24
|
+
REACT_NATIVE_VERSION: string
|
|
25
|
+
/** "ios" or "android" in native builds */
|
|
26
|
+
REACT_NATIVE_PLATFORM: 'ios' | 'android'
|
|
27
|
+
/** Dev server port for React Native */
|
|
28
|
+
REACT_NATIVE_SERVER_PUBLIC_PORT: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare global {
|
|
32
|
+
namespace NodeJS {
|
|
33
|
+
interface ProcessEnv extends Partial<OneEnvVariables> {}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface ImportMetaEnv extends Partial<OneEnvVariables> {}
|
|
38
|
+
|
|
39
|
+
interface ImportMeta {
|
|
40
|
+
readonly env: ImportMetaEnv
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.62",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"setup.mjs",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"import": "./metro-entry.js"
|
|
86
86
|
},
|
|
87
87
|
"./env": {
|
|
88
|
-
"types": "./
|
|
88
|
+
"types": "./env.d.ts"
|
|
89
89
|
},
|
|
90
90
|
"./image": {
|
|
91
91
|
"types": "./types/image.d.ts",
|
|
@@ -103,9 +103,13 @@
|
|
|
103
103
|
"types",
|
|
104
104
|
"dist",
|
|
105
105
|
"vendor",
|
|
106
|
+
"run.mjs",
|
|
107
|
+
"env.d.ts",
|
|
108
|
+
"server.js",
|
|
106
109
|
"metro-entry.js",
|
|
107
110
|
"metro-entry-ctx.js",
|
|
108
|
-
"LICENSE"
|
|
111
|
+
"LICENSE",
|
|
112
|
+
"README.md"
|
|
109
113
|
],
|
|
110
114
|
"scripts": {
|
|
111
115
|
"build": "tamagui-build",
|
|
@@ -135,17 +139,17 @@
|
|
|
135
139
|
"@react-navigation/routers": "~7.5.1",
|
|
136
140
|
"@swc/core": "^1.14.0",
|
|
137
141
|
"@ungap/structured-clone": "^1.2.0",
|
|
138
|
-
"@vxrn/color-scheme": "1.2.
|
|
139
|
-
"@vxrn/compiler": "1.2.
|
|
140
|
-
"@vxrn/resolve": "1.2.
|
|
141
|
-
"@vxrn/tslib-lite": "1.2.
|
|
142
|
-
"@vxrn/use-isomorphic-layout-effect": "1.2.
|
|
143
|
-
"@vxrn/vite-plugin-metro": "1.2.
|
|
142
|
+
"@vxrn/color-scheme": "1.2.62",
|
|
143
|
+
"@vxrn/compiler": "1.2.62",
|
|
144
|
+
"@vxrn/resolve": "1.2.62",
|
|
145
|
+
"@vxrn/tslib-lite": "1.2.62",
|
|
146
|
+
"@vxrn/use-isomorphic-layout-effect": "1.2.62",
|
|
147
|
+
"@vxrn/vite-plugin-metro": "1.2.62",
|
|
144
148
|
"babel-dead-code-elimination": "1.0.10",
|
|
145
149
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
146
150
|
"citty": "^0.1.6",
|
|
147
151
|
"core-js": "^3.38.1",
|
|
148
|
-
"create-vxrn": "1.2.
|
|
152
|
+
"create-vxrn": "1.2.62",
|
|
149
153
|
"escape-string-regexp": "^5.0.0",
|
|
150
154
|
"expo-linking": "~8.0.8",
|
|
151
155
|
"expo-modules-core": "~3.0.24",
|
|
@@ -173,7 +177,7 @@
|
|
|
173
177
|
"vite": "7.1.12",
|
|
174
178
|
"vite-plugin-barrel": "^0.4.1",
|
|
175
179
|
"vite-tsconfig-paths": "^5.1.4",
|
|
176
|
-
"vxrn": "1.2.
|
|
180
|
+
"vxrn": "1.2.62",
|
|
177
181
|
"ws": "^8.18.0",
|
|
178
182
|
"xxhashjs": "^0.2.2"
|
|
179
183
|
},
|
package/server.js
ADDED
|
@@ -3,11 +3,6 @@ import { VIRTUAL_SSR_CSS_ENTRY, VIRTUAL_SSR_CSS_HREF } from '../../constants'
|
|
|
3
3
|
|
|
4
4
|
// thanks to hi-ogawa https://github.com/hi-ogawa/vite-plugins/tree/main/packages/ssr-css
|
|
5
5
|
|
|
6
|
-
// Track if we've pre-warmed routes and cached CSS
|
|
7
|
-
let cssCache: { css: string; timestamp: number } | null = null
|
|
8
|
-
let routesPreWarmed = false
|
|
9
|
-
const CSS_CACHE_TTL = 1000 // 1 second cache for dev mode
|
|
10
|
-
|
|
11
6
|
export function SSRCSSPlugin(pluginOpts: { entries: string[] }): Plugin {
|
|
12
7
|
let server: ViteDevServer
|
|
13
8
|
|
|
@@ -17,64 +12,12 @@ export function SSRCSSPlugin(pluginOpts: { entries: string[] }): Plugin {
|
|
|
17
12
|
configureServer(server_) {
|
|
18
13
|
server = server_
|
|
19
14
|
|
|
20
|
-
// Pre-warm route modules on first request to populate the module graph
|
|
21
|
-
// This ensures CSS from all routes is collected even for lazy imports
|
|
22
|
-
const preWarmRoutes = async () => {
|
|
23
|
-
if (routesPreWarmed) return
|
|
24
|
-
routesPreWarmed = true
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
// Transform the virtual entry to get route module paths
|
|
28
|
-
await server.transformRequest(pluginOpts.entries[0])
|
|
29
|
-
|
|
30
|
-
// Get all route files from the module graph
|
|
31
|
-
const routeFiles = await collectRouteFiles(server, pluginOpts.entries)
|
|
32
|
-
|
|
33
|
-
// Transform each route file to warm its CSS dependencies
|
|
34
|
-
await Promise.all(
|
|
35
|
-
routeFiles.map((file) =>
|
|
36
|
-
server.transformRequest(file).catch(() => {
|
|
37
|
-
// Ignore errors - some routes may have issues
|
|
38
|
-
})
|
|
39
|
-
)
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
if (process.env.ONE_DEBUG) {
|
|
43
|
-
console.log(
|
|
44
|
-
`[one] Pre-warmed ${routeFiles.length} route modules for CSS collection`
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
} catch (err) {
|
|
48
|
-
console.error('[one] Error pre-warming routes:', err)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Invalidate CSS cache on HMR
|
|
53
|
-
server.watcher.on('change', () => {
|
|
54
|
-
cssCache = null
|
|
55
|
-
})
|
|
56
|
-
|
|
57
15
|
// invalidate virtual modules for each direct request
|
|
58
16
|
server.middlewares.use(async (req, res, next) => {
|
|
59
17
|
if (req.url?.includes(VIRTUAL_SSR_CSS_HREF)) {
|
|
60
|
-
// Pre-warm routes on first CSS request
|
|
61
|
-
await preWarmRoutes()
|
|
62
|
-
|
|
63
18
|
invalidateModule(server, '\0' + VIRTUAL_SSR_CSS_ENTRY + '?direct')
|
|
64
19
|
|
|
65
|
-
// Use cached CSS if fresh
|
|
66
|
-
const now = Date.now()
|
|
67
|
-
if (cssCache && now - cssCache.timestamp < CSS_CACHE_TTL) {
|
|
68
|
-
res.setHeader('Content-Type', 'text/css')
|
|
69
|
-
res.setHeader('Cache-Control', 'no-store')
|
|
70
|
-
res.setHeader('Vary', '*')
|
|
71
|
-
res.write(cssCache.css)
|
|
72
|
-
res.end()
|
|
73
|
-
return
|
|
74
|
-
}
|
|
75
|
-
|
|
76
20
|
const code = await collectStyle(server, pluginOpts.entries)
|
|
77
|
-
cssCache = { css: code, timestamp: now }
|
|
78
21
|
|
|
79
22
|
res.setHeader('Content-Type', 'text/css')
|
|
80
23
|
res.setHeader('Cache-Control', 'no-store')
|
|
@@ -232,50 +175,3 @@ async function collectStyleUrls(
|
|
|
232
175
|
|
|
233
176
|
// cf. https://github.com/vitejs/vite/blob/d6bde8b03d433778aaed62afc2be0630c8131908/packages/vite/src/node/constants.ts#L49C23-L50
|
|
234
177
|
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/
|
|
235
|
-
|
|
236
|
-
// Match route files from dynamic imports in virtual entry
|
|
237
|
-
// Vite transforms import.meta.glob to:
|
|
238
|
-
// const routes = { "./path/to/file.tsx": () => import("./path/to/file.tsx") }
|
|
239
|
-
const DYNAMIC_IMPORT_RE = /import\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Collect all route file paths from the module graph.
|
|
243
|
-
* This is used to pre-warm route modules so their CSS is included.
|
|
244
|
-
*/
|
|
245
|
-
async function collectRouteFiles(
|
|
246
|
-
server: ViteDevServer,
|
|
247
|
-
entries: string[]
|
|
248
|
-
): Promise<string[]> {
|
|
249
|
-
const routeFiles: string[] = []
|
|
250
|
-
|
|
251
|
-
for (const entry of entries) {
|
|
252
|
-
try {
|
|
253
|
-
// Get the transformed code for the entry
|
|
254
|
-
const result = await server.transformRequest(entry)
|
|
255
|
-
if (!result?.code) continue
|
|
256
|
-
|
|
257
|
-
// Extract dynamic import paths from the transformed code
|
|
258
|
-
let match
|
|
259
|
-
while ((match = DYNAMIC_IMPORT_RE.exec(result.code)) !== null) {
|
|
260
|
-
const importPath = match[1]
|
|
261
|
-
// Only include actual route files, not node_modules or virtual
|
|
262
|
-
if (
|
|
263
|
-
importPath &&
|
|
264
|
-
!importPath.includes('node_modules') &&
|
|
265
|
-
!importPath.startsWith('\0') &&
|
|
266
|
-
!importPath.startsWith('virtual:') &&
|
|
267
|
-
(importPath.endsWith('.tsx') ||
|
|
268
|
-
importPath.endsWith('.ts') ||
|
|
269
|
-
importPath.endsWith('.jsx') ||
|
|
270
|
-
importPath.endsWith('.js'))
|
|
271
|
-
) {
|
|
272
|
-
routeFiles.push(importPath)
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
} catch {
|
|
276
|
-
// Ignore errors
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
return routeFiles
|
|
281
|
-
}
|
package/types/env.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
interface OneEnvVariables {
|
|
2
|
+
/** Random number for each production build, or stable per dev server run. Useful for cache keys. */
|
|
3
|
+
ONE_CACHE_KEY: string;
|
|
4
|
+
/** Your app.key setting from vite.config */
|
|
5
|
+
ONE_APP_NAME: string;
|
|
6
|
+
/** Current running server URL in development, e.g. "http://0.0.0.0:8081". Set this yourself for production. */
|
|
7
|
+
ONE_SERVER_URL: string;
|
|
8
|
+
/** "ssr", "ssg", or "spa" based on your defaultRenderMode setting */
|
|
9
|
+
ONE_DEFAULT_RENDER_MODE: 'ssr' | 'ssg' | 'spa';
|
|
10
|
+
/** "client" for client-side web, "ssr" for server-side web, "ios" or "android" for native */
|
|
11
|
+
VITE_ENVIRONMENT: 'client' | 'ssr' | 'ios' | 'android';
|
|
12
|
+
/** "web" for all web builds (client and SSR), "native" for native platforms (iOS and Android) */
|
|
13
|
+
VITE_PLATFORM: 'web' | 'native';
|
|
14
|
+
/** "web" for web builds, "ios" or "android" for native. Matches Expo convention. */
|
|
15
|
+
EXPO_OS: 'web' | 'ios' | 'android';
|
|
16
|
+
/** The React Native version string */
|
|
17
|
+
REACT_NATIVE_VERSION: string;
|
|
18
|
+
/** "ios" or "android" in native builds */
|
|
19
|
+
REACT_NATIVE_PLATFORM: 'ios' | 'android';
|
|
20
|
+
/** Dev server port for React Native */
|
|
21
|
+
REACT_NATIVE_SERVER_PUBLIC_PORT: string;
|
|
22
|
+
}
|
|
23
|
+
declare global {
|
|
24
|
+
namespace NodeJS {
|
|
25
|
+
interface ProcessEnv extends Partial<OneEnvVariables> {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAEA,UAAU,eAAe;IAEvB,oGAAoG;IACpG,aAAa,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAA;IACpB,+GAA+G;IAC/G,cAAc,EAAE,MAAM,CAAA;IACtB,qEAAqE;IACrE,uBAAuB,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;IAG9C,6FAA6F;IAC7F,gBAAgB,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IACtD,iGAAiG;IACjG,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAA;IAC/B,oFAAoF;IACpF,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IAGlC,sCAAsC;IACtC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,0CAA0C;IAC1C,qBAAqB,EAAE,KAAK,GAAG,SAAS,CAAA;IACxC,uCAAuC;IACvC,+BAA+B,EAAE,MAAM,CAAA;CACxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM,CAAC;QACf,UAAU,UAAW,SAAQ,OAAO,CAAC,eAAe,CAAC;SAAG;KACzD;CACF;AAQD,OAAO,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SSRCSSPlugin.d.ts","sourceRoot":"","sources":["../../../src/vite/plugins/SSRCSSPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"SSRCSSPlugin.d.ts","sourceRoot":"","sources":["../../../src/vite/plugins/SSRCSSPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAKjD,wBAAgB,YAAY,CAAC,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CA8EtE;AAaD,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,mBAgD1E"}
|