vxrn 0.1.47 → 0.1.49
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/cli.js +5 -0
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/cli.native.js +41 -34
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/constants.js +1 -69
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/constants.native.js +1 -105
- package/dist/cjs/constants.native.js.map +2 -2
- package/dist/cjs/exports/build.js +76 -50
- package/dist/cjs/exports/build.js.map +2 -2
- package/dist/cjs/exports/build.native.js +257 -140
- package/dist/cjs/exports/build.native.js.map +2 -2
- package/dist/cjs/exports/dev.js +23 -19
- package/dist/cjs/exports/dev.js.map +1 -1
- package/dist/cjs/exports/dev.native.js +32 -30
- package/dist/cjs/exports/dev.native.js.map +2 -2
- package/dist/cjs/utils/assert.js +24 -0
- package/dist/cjs/utils/assert.js.map +6 -0
- package/dist/cjs/utils/assert.native.js +32 -0
- package/dist/cjs/utils/assert.native.js.map +6 -0
- package/dist/cjs/utils/getOptimizeDeps.js +134 -0
- package/dist/cjs/utils/getOptimizeDeps.js.map +6 -0
- package/dist/cjs/utils/getOptimizeDeps.native.js +173 -0
- package/dist/cjs/utils/getOptimizeDeps.native.js.map +6 -0
- package/dist/esm/cli.js +5 -0
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/cli.mjs +5 -0
- package/dist/esm/cli.native.js +41 -34
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/constants.js +1 -69
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/constants.mjs +2 -12
- package/dist/esm/constants.native.js +1 -103
- package/dist/esm/constants.native.js.map +2 -2
- package/dist/esm/exports/build.js +78 -52
- package/dist/esm/exports/build.js.map +2 -2
- package/dist/esm/exports/build.mjs +80 -55
- package/dist/esm/exports/build.native.js +260 -142
- package/dist/esm/exports/build.native.js.map +2 -2
- package/dist/esm/exports/dev.js +20 -15
- package/dist/esm/exports/dev.js.map +1 -1
- package/dist/esm/exports/dev.mjs +27 -20
- package/dist/esm/exports/dev.native.js +29 -26
- package/dist/esm/exports/dev.native.js.map +2 -2
- package/dist/esm/utils/assert.js +8 -0
- package/dist/esm/utils/assert.js.map +6 -0
- package/dist/esm/utils/assert.mjs +4 -0
- package/dist/esm/utils/assert.native.js +11 -0
- package/dist/esm/utils/assert.native.js.map +6 -0
- package/dist/esm/utils/getOptimizeDeps.js +118 -0
- package/dist/esm/utils/getOptimizeDeps.js.map +6 -0
- package/dist/esm/utils/getOptimizeDeps.mjs +18 -0
- package/dist/esm/utils/getOptimizeDeps.native.js +152 -0
- package/dist/esm/utils/getOptimizeDeps.native.js.map +6 -0
- package/package.json +10 -10
- package/src/cli.ts +5 -0
- package/src/constants.ts +0 -75
- package/src/exports/build.ts +118 -76
- package/src/exports/dev.ts +28 -21
- package/src/utils/assert.ts +5 -0
- package/src/utils/getOptimizeDeps.ts +124 -0
- package/types/constants.d.ts +0 -9
- package/types/exports/build.d.ts +5 -2
- package/types/utils/assert.d.ts +2 -0
- package/types/utils/getOptimizeDeps.d.ts +13 -0
|
@@ -1,34 +1,3 @@
|
|
|
1
|
-
function _array_like_to_array(arr, len) {
|
|
2
|
-
(len == null || len > arr.length) && (len = arr.length);
|
|
3
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
4
|
-
arr2[i] = arr[i];
|
|
5
|
-
return arr2;
|
|
6
|
-
}
|
|
7
|
-
function _array_without_holes(arr) {
|
|
8
|
-
if (Array.isArray(arr))
|
|
9
|
-
return _array_like_to_array(arr);
|
|
10
|
-
}
|
|
11
|
-
function _iterable_to_array(iter) {
|
|
12
|
-
if (typeof Symbol < "u" && iter[Symbol.iterator] != null || iter["@@iterator"] != null)
|
|
13
|
-
return Array.from(iter);
|
|
14
|
-
}
|
|
15
|
-
function _non_iterable_spread() {
|
|
16
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
17
|
-
}
|
|
18
|
-
function _to_consumable_array(arr) {
|
|
19
|
-
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
20
|
-
}
|
|
21
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
22
|
-
if (o) {
|
|
23
|
-
if (typeof o == "string")
|
|
24
|
-
return _array_like_to_array(o, minLen);
|
|
25
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
26
|
-
if (n === "Object" && o.constructor && (n = o.constructor.name), n === "Map" || n === "Set")
|
|
27
|
-
return Array.from(n);
|
|
28
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
|
|
29
|
-
return _array_like_to_array(o, minLen);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
1
|
var DEFAULT_PORT = 8081, nativeExtensions = [
|
|
33
2
|
".native.tsx",
|
|
34
3
|
".native.jsx",
|
|
@@ -51,81 +20,10 @@ var DEFAULT_PORT = 8081, nativeExtensions = [
|
|
|
51
20
|
".js",
|
|
52
21
|
".css",
|
|
53
22
|
".json"
|
|
54
|
-
]
|
|
55
|
-
"react",
|
|
56
|
-
"react/jsx-runtime",
|
|
57
|
-
"react/jsx-dev-runtime",
|
|
58
|
-
"react-native-web-internals",
|
|
59
|
-
"react-dom",
|
|
60
|
-
"react-native-web",
|
|
61
|
-
"react-dom/server",
|
|
62
|
-
"react-dom/client",
|
|
63
|
-
"url-parse",
|
|
64
|
-
"@vxrn/safe-area",
|
|
65
|
-
"query-string",
|
|
66
|
-
"escape-string-regexp",
|
|
67
|
-
"use-latest-callback",
|
|
68
|
-
"react-is",
|
|
69
|
-
"fast-deep-equal",
|
|
70
|
-
"@react-navigation/native",
|
|
71
|
-
"react-native-svg",
|
|
72
|
-
"@supabase/auth-helpers-react",
|
|
73
|
-
"parse-numeric-range",
|
|
74
|
-
"use-sync-external-store",
|
|
75
|
-
"use-sync-external-store/shim"
|
|
76
|
-
], depsToOptimize = _to_consumable_array(needsInterop).concat([
|
|
77
|
-
"swr",
|
|
78
|
-
"tamagui/linear-gradient",
|
|
79
|
-
"@tamagui/linear-gradient",
|
|
80
|
-
"@react-native/normalize-color",
|
|
81
|
-
"@vxrn/router",
|
|
82
|
-
"expo-modules-core",
|
|
83
|
-
"expo-status-bar",
|
|
84
|
-
"react-native-web",
|
|
85
|
-
"react-native-web-lite",
|
|
86
|
-
"react-native",
|
|
87
|
-
"@tamagui/alert-dialog",
|
|
88
|
-
"@tamagui/avatar",
|
|
89
|
-
"@tamagui/core",
|
|
90
|
-
"@tamagui/dialog",
|
|
91
|
-
"@tamagui/group",
|
|
92
|
-
"@tamagui/helpers-icon",
|
|
93
|
-
"@tamagui/helpers",
|
|
94
|
-
"@tamagui/image",
|
|
95
|
-
"@tamagui/lucide-icons",
|
|
96
|
-
"@tamagui/popover",
|
|
97
|
-
"@tamagui/popper",
|
|
98
|
-
"@tamagui/scroll-view",
|
|
99
|
-
"@tamagui/select",
|
|
100
|
-
"@tamagui/sheet",
|
|
101
|
-
"@tamagui/switch",
|
|
102
|
-
"@tamagui/tabs",
|
|
103
|
-
"@tamagui/toast",
|
|
104
|
-
"@tamagui/toggle-group",
|
|
105
|
-
"@tamagui/tooltip",
|
|
106
|
-
"@tamagui/use-window-dimensions",
|
|
107
|
-
"@tamagui/web",
|
|
108
|
-
"tamagui",
|
|
109
|
-
"react-native-web",
|
|
110
|
-
"react-native-web-lite",
|
|
111
|
-
"reforest"
|
|
112
|
-
]), optimizeDeps = {
|
|
113
|
-
include: depsToOptimize,
|
|
114
|
-
exclude: [
|
|
115
|
-
"util",
|
|
116
|
-
"@swc/wasm",
|
|
117
|
-
"@swc/core-darwin-arm64"
|
|
118
|
-
],
|
|
119
|
-
needsInterop,
|
|
120
|
-
esbuildOptions: {
|
|
121
|
-
resolveExtensions: webExtensions
|
|
122
|
-
}
|
|
123
|
-
};
|
|
23
|
+
];
|
|
124
24
|
export {
|
|
125
25
|
DEFAULT_PORT,
|
|
126
|
-
depsToOptimize,
|
|
127
26
|
nativeExtensions,
|
|
128
|
-
optimizeDeps,
|
|
129
27
|
webExtensions
|
|
130
28
|
};
|
|
131
29
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/vxrn/packages/vxrn/src/constants.ts"],
|
|
4
|
-
"mappings": "
|
|
5
|
-
"names": ["DEFAULT_PORT", "nativeExtensions", "webExtensions"
|
|
4
|
+
"mappings": "AAAO,IAAMA,eAAe,MAEfC,mBAAmB;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;GAGWC,gBAAgB;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;",
|
|
5
|
+
"names": ["DEFAULT_PORT", "nativeExtensions", "webExtensions"]
|
|
6
6
|
}
|
|
@@ -2,22 +2,25 @@ import { build as esbuild } from "esbuild";
|
|
|
2
2
|
import { resolve as importMetaResolve } from "import-meta-resolve";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
|
-
import
|
|
5
|
+
import Path from "node:path";
|
|
6
6
|
import { mergeConfig, build as viteBuild } from "vite";
|
|
7
7
|
import FSExtra from "fs-extra";
|
|
8
|
-
import { optimizeDeps } from "../constants";
|
|
9
8
|
import { getBaseViteConfig } from "../utils/getBaseViteConfig";
|
|
10
9
|
import { getHtml } from "../utils/getHtml";
|
|
10
|
+
import { getOptimizeDeps } from "../utils/getOptimizeDeps";
|
|
11
11
|
import { getOptionsFilled } from "../utils/getOptionsFilled";
|
|
12
|
-
|
|
12
|
+
import { assertIsError } from "../utils/assert";
|
|
13
|
+
Error.stackTraceLimit = 1 / 0;
|
|
14
|
+
const resolveFile = (path) => {
|
|
13
15
|
try {
|
|
14
|
-
return importMetaResolve(
|
|
16
|
+
return importMetaResolve(path, import.meta.url).replace("file://", "");
|
|
15
17
|
} catch {
|
|
16
|
-
return require.resolve(
|
|
18
|
+
return require.resolve(path);
|
|
17
19
|
}
|
|
18
|
-
}, { ensureDir, existsSync, readFile, pathExists } = FSExtra, build = async (optionsIn,
|
|
20
|
+
}, { ensureDir, existsSync, readFile, pathExists } = FSExtra, build = async (optionsIn, buildOptions = {}) => {
|
|
19
21
|
const options = await getOptionsFilled(optionsIn);
|
|
20
22
|
process.env.NODE_ENV = "production";
|
|
23
|
+
const { optimizeDeps } = getOptimizeDeps("build");
|
|
21
24
|
let webBuildConfig = mergeConfig(
|
|
22
25
|
getBaseViteConfig({
|
|
23
26
|
mode: "production"
|
|
@@ -28,7 +31,7 @@ const resolveFile = (path2) => {
|
|
|
28
31
|
optimizeDeps
|
|
29
32
|
}
|
|
30
33
|
);
|
|
31
|
-
options.webConfig && (webBuildConfig = mergeConfig(webBuildConfig, options.webConfig)), step !== "generate" && (console.info("build client"), await viteBuild(
|
|
34
|
+
options.webConfig && (webBuildConfig = mergeConfig(webBuildConfig, options.webConfig)), buildOptions.step !== "generate" && (console.info("build client"), await viteBuild(
|
|
32
35
|
mergeConfig(webBuildConfig, {
|
|
33
36
|
build: {
|
|
34
37
|
ssrManifest: !0,
|
|
@@ -43,10 +46,10 @@ const resolveFile = (path2) => {
|
|
|
43
46
|
// format: 'cjs',
|
|
44
47
|
// },
|
|
45
48
|
// },
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
ssr: {
|
|
50
|
+
noExternal: optimizeDeps.include,
|
|
51
|
+
optimizeDeps
|
|
52
|
+
},
|
|
50
53
|
build: {
|
|
51
54
|
// we want one big file of css
|
|
52
55
|
cssCodeSplit: !1,
|
|
@@ -61,37 +64,50 @@ const resolveFile = (path2) => {
|
|
|
61
64
|
console.info("generating static pages"), await generateStaticPages(options, output);
|
|
62
65
|
};
|
|
63
66
|
async function generateStaticPages(options, serverOutput) {
|
|
64
|
-
const toAbsolute = (p) =>
|
|
67
|
+
const toAbsolute = (p) => Path.resolve(options.root, p), staticDir = toAbsolute("dist/static");
|
|
65
68
|
await ensureDir(staticDir);
|
|
66
|
-
const template = fs.readFileSync(toAbsolute("index.html"), "utf-8"), render = (await import(`${options.root}/dist/server/entry-server.js`)).render, assets = [], allRoutes =
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return [];
|
|
75
|
-
const exported = await import(path.join(options.root, "dist/server", output.fileName)), paramsList = await exported.generateStaticParams?.() ?? [{}];
|
|
76
|
-
return await Promise.all(
|
|
77
|
-
paramsList.map(async (params) => {
|
|
78
|
-
const path2 = getUrl(params), loaderData = await exported.loader?.({ path: path2, params }) ?? {};
|
|
79
|
-
return { path: path2, params, loaderData };
|
|
80
|
-
})
|
|
81
|
-
);
|
|
82
|
-
function getUrl(_params = {}) {
|
|
83
|
-
return name === "index" ? "/" : `/${name.split("/").map((part) => {
|
|
84
|
-
if (part[0] === "[") {
|
|
85
|
-
const found = _params[part.slice(1, part.length - 1)];
|
|
86
|
-
return found || console.warn("not found", { _params, part }), found;
|
|
87
|
-
}
|
|
88
|
-
return part;
|
|
89
|
-
}).join("/")}`;
|
|
69
|
+
const template = fs.readFileSync(toAbsolute("index.html"), "utf-8"), render = (await import(`${options.root}/dist/server/entry-server.js`)).render, assets = [], allRoutes = [];
|
|
70
|
+
for (const output of serverOutput) {
|
|
71
|
+
let getUrl = function(_params = {}) {
|
|
72
|
+
if (name === "index")
|
|
73
|
+
return "/";
|
|
74
|
+
if (name.startsWith("[...")) {
|
|
75
|
+
const part = name.replace("[...", "").replace("]", "");
|
|
76
|
+
return `/${_params[part]}`;
|
|
90
77
|
}
|
|
91
|
-
|
|
92
|
-
|
|
78
|
+
return `/${name.split("/").map((part) => {
|
|
79
|
+
if (part[0] === "[") {
|
|
80
|
+
const found = _params[part.slice(1, part.length - 1)];
|
|
81
|
+
return found || console.warn("not found", { _params, part }), found;
|
|
82
|
+
}
|
|
83
|
+
return part;
|
|
84
|
+
}).join("/")}`;
|
|
85
|
+
};
|
|
86
|
+
if (output.type === "asset") {
|
|
87
|
+
assets.push(output);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const id = output.facadeModuleId || "", file = Path.basename(id), name = file.replace(/\.[^/.]+$/, "");
|
|
91
|
+
if (!id || file[0] === "_" || file.includes("entry-server") || id.includes("+api"))
|
|
92
|
+
continue;
|
|
93
|
+
const endpointPath = Path.join(options.root, "dist/server", output.fileName);
|
|
94
|
+
let exported;
|
|
95
|
+
try {
|
|
96
|
+
exported = await import(endpointPath);
|
|
97
|
+
} catch (err) {
|
|
98
|
+
throw console.error("Error importing page (original error)", err), new Error(`Error importing page: ${endpointPath}`, {
|
|
99
|
+
cause: err
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const paramsList = await exported.generateStaticParams?.() ?? [{}];
|
|
103
|
+
for (const params of paramsList) {
|
|
104
|
+
const path = getUrl(params), loaderData = await exported.loader?.({ path, params }) ?? {};
|
|
105
|
+
allRoutes.push({ path, params, loaderData });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const cssStringRaw = assets.filter((x) => x.name?.endsWith(".css")).map((x) => x.source).join(`
|
|
93
109
|
|
|
94
|
-
`), tmpCssFile =
|
|
110
|
+
`), tmpCssFile = Path.join(tmpdir(), "tmp.css");
|
|
95
111
|
await FSExtra.writeFile(tmpCssFile, cssStringRaw, "utf-8"), await esbuild({
|
|
96
112
|
entryPoints: [tmpCssFile],
|
|
97
113
|
target: "safari17",
|
|
@@ -102,19 +118,29 @@ async function generateStaticPages(options, serverOutput) {
|
|
|
102
118
|
loader: { ".css": "css" }
|
|
103
119
|
});
|
|
104
120
|
const cssString = await FSExtra.readFile(tmpCssFile, "utf-8");
|
|
105
|
-
for (const { path
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
for (const { path, loaderData, params } of allRoutes)
|
|
122
|
+
try {
|
|
123
|
+
const loaderProps = { params };
|
|
124
|
+
globalThis.__vxrnLoaderProps__ = loaderProps, console.info("render", path);
|
|
125
|
+
const { appHtml, headHtml } = await render({ path }), slashFileName = `${path === "/" ? "/index" : path}.html`, clientHtmlPath = toAbsolute(`dist/client${slashFileName}`), clientHtml = existsSync(clientHtmlPath) ? await readFile(clientHtmlPath, "utf-8") : null, html = getHtml({
|
|
126
|
+
template: clientHtml || template,
|
|
127
|
+
appHtml,
|
|
128
|
+
headHtml,
|
|
129
|
+
loaderData,
|
|
130
|
+
loaderProps,
|
|
131
|
+
css: cssString
|
|
132
|
+
}), filePath = toAbsolute(`dist/static${slashFileName}`);
|
|
133
|
+
await ensureDir(Path.dirname(filePath)), fs.writeFileSync(toAbsolute(filePath), html);
|
|
134
|
+
} catch (err) {
|
|
135
|
+
throw assertIsError(err), console.error("og error because cause not working", err), new Error(
|
|
136
|
+
`Error building static page: ${path} with:
|
|
137
|
+
loaderData: ${JSON.stringify(loaderData || null)}
|
|
138
|
+
params: ${JSON.stringify(params || null)}`,
|
|
139
|
+
{
|
|
140
|
+
cause: err
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
}
|
|
118
144
|
}
|
|
119
145
|
export {
|
|
120
146
|
build,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/exports/build.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,SAAS,eAAe;AACjC,SAAS,WAAW,yBAAyB;AAC7C,OAAO,QAAQ;AACf,SAAS,cAAc;AACvB,OAAO,UAAU;AACjB,SAAS,aAAa,SAAS,iBAAkC;
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|
|
@@ -2,18 +2,20 @@ import { build as esbuild } from "esbuild";
|
|
|
2
2
|
import { resolve as importMetaResolve } from "import-meta-resolve";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
|
-
import
|
|
5
|
+
import Path from "node:path";
|
|
6
6
|
import { mergeConfig, build as viteBuild } from "vite";
|
|
7
7
|
import FSExtra from "fs-extra";
|
|
8
|
-
import { optimizeDeps } from "../constants.mjs";
|
|
9
8
|
import { getBaseViteConfig } from "../utils/getBaseViteConfig.mjs";
|
|
10
9
|
import { getHtml } from "../utils/getHtml.mjs";
|
|
10
|
+
import { getOptimizeDeps } from "../utils/getOptimizeDeps.mjs";
|
|
11
11
|
import { getOptionsFilled } from "../utils/getOptionsFilled.mjs";
|
|
12
|
-
|
|
12
|
+
import { assertIsError } from "../utils/assert.mjs";
|
|
13
|
+
Error.stackTraceLimit = 1 / 0;
|
|
14
|
+
const resolveFile = path => {
|
|
13
15
|
try {
|
|
14
|
-
return importMetaResolve(
|
|
16
|
+
return importMetaResolve(path, import.meta.url).replace("file://", "");
|
|
15
17
|
} catch {
|
|
16
|
-
return require.resolve(
|
|
18
|
+
return require.resolve(path);
|
|
17
19
|
}
|
|
18
20
|
},
|
|
19
21
|
{
|
|
@@ -22,11 +24,12 @@ const resolveFile = path2 => {
|
|
|
22
24
|
readFile,
|
|
23
25
|
pathExists
|
|
24
26
|
} = FSExtra,
|
|
25
|
-
build = async (optionsIn, {
|
|
26
|
-
step
|
|
27
|
-
} = {}) => {
|
|
27
|
+
build = async (optionsIn, buildOptions = {}) => {
|
|
28
28
|
const options = await getOptionsFilled(optionsIn);
|
|
29
29
|
process.env.NODE_ENV = "production";
|
|
30
|
+
const {
|
|
31
|
+
optimizeDeps
|
|
32
|
+
} = getOptimizeDeps("build");
|
|
30
33
|
let webBuildConfig = mergeConfig(getBaseViteConfig({
|
|
31
34
|
mode: "production"
|
|
32
35
|
}), {
|
|
@@ -34,7 +37,7 @@ const resolveFile = path2 => {
|
|
|
34
37
|
clearScreen: !1,
|
|
35
38
|
optimizeDeps
|
|
36
39
|
});
|
|
37
|
-
options.webConfig && (webBuildConfig = mergeConfig(webBuildConfig, options.webConfig)), step !== "generate" && (console.info("build client"), await viteBuild(mergeConfig(webBuildConfig, {
|
|
40
|
+
options.webConfig && (webBuildConfig = mergeConfig(webBuildConfig, options.webConfig)), buildOptions.step !== "generate" && (console.info("build client"), await viteBuild(mergeConfig(webBuildConfig, {
|
|
38
41
|
build: {
|
|
39
42
|
ssrManifest: !0,
|
|
40
43
|
outDir: "dist/client"
|
|
@@ -48,10 +51,10 @@ const resolveFile = path2 => {
|
|
|
48
51
|
// format: 'cjs',
|
|
49
52
|
// },
|
|
50
53
|
// },
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
ssr: {
|
|
55
|
+
noExternal: optimizeDeps.include,
|
|
56
|
+
optimizeDeps
|
|
57
|
+
},
|
|
55
58
|
build: {
|
|
56
59
|
// we want one big file of css
|
|
57
60
|
cssCodeSplit: !1,
|
|
@@ -65,50 +68,66 @@ const resolveFile = path2 => {
|
|
|
65
68
|
console.info("generating static pages"), await generateStaticPages(options, output);
|
|
66
69
|
};
|
|
67
70
|
async function generateStaticPages(options, serverOutput) {
|
|
68
|
-
const toAbsolute = p =>
|
|
71
|
+
const toAbsolute = p => Path.resolve(options.root, p),
|
|
69
72
|
staticDir = toAbsolute("dist/static");
|
|
70
73
|
await ensureDir(staticDir);
|
|
71
74
|
const template = fs.readFileSync(toAbsolute("index.html"), "utf-8"),
|
|
72
75
|
render = (await import(`${options.root}/dist/server/entry-server.js`)).render,
|
|
73
76
|
assets = [],
|
|
74
|
-
allRoutes =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const exported = await import(path.join(options.root, "dist/server", output.fileName)),
|
|
82
|
-
paramsList = (await exported.generateStaticParams?.()) ?? [{}];
|
|
83
|
-
return await Promise.all(paramsList.map(async params => {
|
|
84
|
-
const path2 = getUrl(params),
|
|
85
|
-
loaderData = (await exported.loader?.({
|
|
86
|
-
path: path2,
|
|
87
|
-
params
|
|
88
|
-
})) ?? {};
|
|
89
|
-
return {
|
|
90
|
-
path: path2,
|
|
91
|
-
params,
|
|
92
|
-
loaderData
|
|
93
|
-
};
|
|
94
|
-
}));
|
|
95
|
-
function getUrl(_params = {}) {
|
|
96
|
-
return name === "index" ? "/" : `/${name.split("/").map(part => {
|
|
97
|
-
if (part[0] === "[") {
|
|
98
|
-
const found = _params[part.slice(1, part.length - 1)];
|
|
99
|
-
return found || console.warn("not found", {
|
|
100
|
-
_params,
|
|
101
|
-
part
|
|
102
|
-
}), found;
|
|
103
|
-
}
|
|
104
|
-
return part;
|
|
105
|
-
}).join("/")}`;
|
|
77
|
+
allRoutes = [];
|
|
78
|
+
for (const output of serverOutput) {
|
|
79
|
+
let getUrl = function (_params = {}) {
|
|
80
|
+
if (name === "index") return "/";
|
|
81
|
+
if (name.startsWith("[...")) {
|
|
82
|
+
const part = name.replace("[...", "").replace("]", "");
|
|
83
|
+
return `/${_params[part]}`;
|
|
106
84
|
}
|
|
107
|
-
|
|
108
|
-
|
|
85
|
+
return `/${name.split("/").map(part => {
|
|
86
|
+
if (part[0] === "[") {
|
|
87
|
+
const found = _params[part.slice(1, part.length - 1)];
|
|
88
|
+
return found || console.warn("not found", {
|
|
89
|
+
_params,
|
|
90
|
+
part
|
|
91
|
+
}), found;
|
|
92
|
+
}
|
|
93
|
+
return part;
|
|
94
|
+
}).join("/")}`;
|
|
95
|
+
};
|
|
96
|
+
if (output.type === "asset") {
|
|
97
|
+
assets.push(output);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const id = output.facadeModuleId || "",
|
|
101
|
+
file = Path.basename(id),
|
|
102
|
+
name = file.replace(/\.[^/.]+$/, "");
|
|
103
|
+
if (!id || file[0] === "_" || file.includes("entry-server") || id.includes("+api")) continue;
|
|
104
|
+
const endpointPath = Path.join(options.root, "dist/server", output.fileName);
|
|
105
|
+
let exported;
|
|
106
|
+
try {
|
|
107
|
+
exported = await import(endpointPath);
|
|
108
|
+
} catch (err) {
|
|
109
|
+
throw console.error("Error importing page (original error)", err), new Error(`Error importing page: ${endpointPath}`, {
|
|
110
|
+
cause: err
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const paramsList = (await exported.generateStaticParams?.()) ?? [{}];
|
|
114
|
+
for (const params of paramsList) {
|
|
115
|
+
const path = getUrl(params),
|
|
116
|
+
loaderData = (await exported.loader?.({
|
|
117
|
+
path,
|
|
118
|
+
params
|
|
119
|
+
})) ?? {};
|
|
120
|
+
allRoutes.push({
|
|
121
|
+
path,
|
|
122
|
+
params,
|
|
123
|
+
loaderData
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const cssStringRaw = assets.filter(x => x.name?.endsWith(".css")).map(x => x.source).join(`
|
|
109
128
|
|
|
110
129
|
`),
|
|
111
|
-
tmpCssFile =
|
|
130
|
+
tmpCssFile = Path.join(tmpdir(), "tmp.css");
|
|
112
131
|
await FSExtra.writeFile(tmpCssFile, cssStringRaw, "utf-8"), await esbuild({
|
|
113
132
|
entryPoints: [tmpCssFile],
|
|
114
133
|
target: "safari17",
|
|
@@ -122,21 +141,21 @@ async function generateStaticPages(options, serverOutput) {
|
|
|
122
141
|
});
|
|
123
142
|
const cssString = await FSExtra.readFile(tmpCssFile, "utf-8");
|
|
124
143
|
for (const {
|
|
125
|
-
path
|
|
144
|
+
path,
|
|
126
145
|
loaderData,
|
|
127
146
|
params
|
|
128
|
-
} of allRoutes) {
|
|
147
|
+
} of allRoutes) try {
|
|
129
148
|
const loaderProps = {
|
|
130
149
|
params
|
|
131
150
|
};
|
|
132
|
-
globalThis.__vxrnLoaderProps__ = loaderProps;
|
|
151
|
+
globalThis.__vxrnLoaderProps__ = loaderProps, console.info("render", path);
|
|
133
152
|
const {
|
|
134
153
|
appHtml,
|
|
135
154
|
headHtml
|
|
136
155
|
} = await render({
|
|
137
|
-
path
|
|
156
|
+
path
|
|
138
157
|
}),
|
|
139
|
-
slashFileName = `${
|
|
158
|
+
slashFileName = `${path === "/" ? "/index" : path}.html`,
|
|
140
159
|
clientHtmlPath = toAbsolute(`dist/client${slashFileName}`),
|
|
141
160
|
clientHtml = existsSync(clientHtmlPath) ? await readFile(clientHtmlPath, "utf-8") : null,
|
|
142
161
|
html = getHtml({
|
|
@@ -148,7 +167,13 @@ async function generateStaticPages(options, serverOutput) {
|
|
|
148
167
|
css: cssString
|
|
149
168
|
}),
|
|
150
169
|
filePath = toAbsolute(`dist/static${slashFileName}`);
|
|
151
|
-
fs.writeFileSync(toAbsolute(filePath), html);
|
|
170
|
+
await ensureDir(Path.dirname(filePath)), fs.writeFileSync(toAbsolute(filePath), html);
|
|
171
|
+
} catch (err) {
|
|
172
|
+
throw assertIsError(err), console.error("og error because cause not working", err), new Error(`Error building static page: ${path} with:
|
|
173
|
+
loaderData: ${JSON.stringify(loaderData || null)}
|
|
174
|
+
params: ${JSON.stringify(params || null)}`, {
|
|
175
|
+
cause: err
|
|
176
|
+
});
|
|
152
177
|
}
|
|
153
178
|
}
|
|
154
179
|
export { build, resolveFile };
|