dinou 6.1.0 → 7.0.0
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/CHANGELOG.md +99 -0
- package/README.md +9461 -1080
- package/cli.js +392 -169
- package/dinou/adapters/bun.js +62 -0
- package/dinou/adapters/cloudflare.js +65 -0
- package/dinou/adapters/deno.js +48 -0
- package/dinou/adapters/netlify.js +85 -0
- package/dinou/adapters/node.mjs +31 -0
- package/dinou/bun/build.mjs +1077 -0
- package/dinou/cloudflare/build.mjs +1121 -0
- package/dinou/cloudflare/shims/child_process.js +14 -0
- package/dinou/cloudflare/shims/empty.js +2 -0
- package/dinou/cloudflare/shims/fs.js +99 -0
- package/dinou/cloudflare/shims/os.js +29 -0
- package/dinou/config.js +1 -0
- package/dinou/config.mjs +2 -0
- package/dinou/constants.js +29 -4
- package/dinou/core/babel-esm-loader.js +66 -37
- package/dinou/core/bailout-proxy.js +61 -0
- package/dinou/core/build-static-pages.js +309 -157
- package/dinou/core/cache-revalidate.js +471 -144
- package/dinou/core/cache-slot.js +387 -0
- package/dinou/core/client-redirect.jsx +12 -7
- package/dinou/core/client-webpack.jsx +457 -82
- package/dinou/core/client.jsx +452 -82
- package/dinou/core/config.js +11 -0
- package/dinou/core/dinou-paths.js +52 -0
- package/dinou/core/edge-ssr.js +122 -0
- package/dinou/core/export-static.mjs +64 -0
- package/dinou/core/generate-route-types.js +252 -0
- package/dinou/core/generate-static-page.js +55 -94
- package/dinou/core/generate-static-rsc.js +47 -15
- package/dinou/core/generate-static.js +212 -10
- package/dinou/core/generating-isg.js +5 -0
- package/dinou/core/get-asset-from-manifest.js +9 -3
- package/dinou/core/get-error-jsx.js +221 -41
- package/dinou/core/get-file-path-and-dynamic-params.js +9 -13
- package/dinou/core/get-jsx.js +172 -95
- package/dinou/core/handler.js +2296 -0
- package/dinou/core/http-adapter.js +115 -0
- package/dinou/core/import-module.js +83 -53
- package/dinou/core/layout-functions.js +181 -0
- package/dinou/core/link.jsx +18 -6
- package/dinou/core/load-dinou-config.js +60 -0
- package/dinou/core/manifest-provider.js +261 -0
- package/dinou/core/navigation-utils.js +4 -0
- package/dinou/core/navigation.js +50 -39
- package/dinou/core/parse-exports.js +207 -2
- package/dinou/core/ppr-context.js +105 -0
- package/dinou/core/ppr-runtime.js +263 -0
- package/dinou/core/redirect.jsx +20 -19
- package/dinou/core/render-jsx-to-client-jsx.js +133 -15
- package/dinou/core/request-context.js +47 -13
- package/dinou/core/resolve-module-ppr.js +32 -0
- package/dinou/core/revalidating.js +28 -9
- package/dinou/core/route-generator.js +107 -0
- package/dinou/core/rsc-renderer.js +90 -0
- package/dinou/core/run-ssg.js +19 -0
- package/dinou/core/scan-dependency-components.js +218 -0
- package/dinou/core/server-function-proxy-webpack.js +3 -0
- package/dinou/core/server-function-proxy.js +3 -0
- package/dinou/core/slot.js +302 -0
- package/dinou/core/status-manifest.js +41 -1
- package/dinou/core/storage-adapter.js +522 -0
- package/dinou/core/url-resolver.js +16 -16
- package/dinou/core/vfs.js +139 -68
- package/dinou/deno/build.mjs +1112 -0
- package/dinou/deno/seed-kv.js +115 -0
- package/dinou/esbuild/build.mjs +51 -1
- package/dinou/esbuild/dev.mjs +290 -224
- package/dinou/esbuild/helpers-esbuild/get-config-esbuild-prod.mjs +3 -2
- package/dinou/esbuild/helpers-esbuild/get-config-esbuild.mjs +104 -16
- package/dinou/esbuild/helpers-esbuild/get-esbuild-entries.mjs +31 -19
- package/dinou/esbuild/helpers-esbuild/strip-namespace.mjs +9 -0
- package/dinou/esbuild/helpers-esbuild/swc-disk-cache.mjs +225 -0
- package/dinou/esbuild/helpers-esbuild/update-manifest-for-module.mjs +7 -0
- package/dinou/esbuild/helpers-esbuild/write.mjs +111 -2
- package/dinou/esbuild/plugins-esbuild/assets-plugin.mjs +236 -161
- package/dinou/esbuild/plugins-esbuild/css-processor-plugin.mjs +101 -5
- package/dinou/esbuild/plugins-esbuild/react-client-manifest-plugin.mjs +63 -24
- package/dinou/esbuild/plugins-esbuild/server-functions-plugin.mjs +177 -56
- package/dinou/esbuild/plugins-esbuild/skip-missing-entry-points-plugin.mjs +3 -0
- package/dinou/esbuild/plugins-esbuild/stable-chunk-names-and-maps-plugin.mjs +182 -137
- package/dinou/esbuild/plugins-postcss/postcss-extract-plugin.js +38 -11
- package/dinou/esbuild/react-refresh/esm-hmr/client.mjs +55 -8
- package/dinou/esbuild/react-refresh/esm-hmr/server.js +1 -1
- package/dinou/esbuild/react-refresh/esm-hmr-plugin.mjs +238 -101
- package/dinou/esbuild/react-refresh/is-react-refresh-boundary.mjs +18 -4
- package/dinou/index.d.ts +315 -11
- package/dinou/index.js +12 -6
- package/dinou/index.mjs +9 -0
- package/dinou/node/build.mjs +195 -0
- package/dinou/node/bundle-dual-engine.mjs +1012 -0
- package/dinou/node/dev.mjs +2589 -0
- package/dinou/node/port-selector.mjs +164 -0
- package/dinou/node/terminal-status.mjs +345 -0
- package/dinou/package.json +17 -14
- package/dinou/rollup/react-refresh/esm-hmr/client.js +66 -10
- package/dinou/rollup/react-refresh/esm-hmr/server.js +1 -1
- package/dinou/rollup/react-refresh/is-react-refresh-boundary.js +24 -5
- package/dinou/rollup/react-refresh/react-refresh-runtime.js +13 -6
- package/dinou/rollup/react-refresh/react-refresh-wrap-modules.js +56 -11
- package/dinou/rollup/react-refresh/rollup-plugin-esm-hmr.js +176 -48
- package/dinou/rollup/rollup-plugins/dinou-asset-plugin.js +9 -5
- package/dinou/rollup/rollup-plugins/rollup-plugin-memory.js +66 -0
- package/dinou/rollup/rollup-plugins/rollup-plugin-react-client-manifest.js +468 -123
- package/dinou/rollup/rollup-plugins/rollup-plugin-server-functions.js +44 -12
- package/dinou/rollup/rollup-plugins/rollup-plugin-swc.js +100 -0
- package/dinou/rollup/rollup.config.js +155 -43
- package/dinou/server.d.ts +114 -12
- package/dinou/server.js +35 -10
- package/dinou/server.mjs +30 -9
- package/dinou/webpack/helpers/get-webpack-entries.js +14 -19
- package/dinou/webpack/loaders/server-functions-loader.js +22 -1
- package/dinou/webpack/loaders/swc-loader.js +76 -0
- package/dinou/webpack/plugins/manifest-generator-plugin.js +1 -0
- package/dinou/webpack/plugins/server-functions-plugin.js +75 -19
- package/dinou/webpack/plugins/webpack-memory-plugin.js +66 -0
- package/dinou/webpack/webpack.config.js +227 -29
- package/eject.js +173 -94
- package/package.json +110 -107
- package/dinou/core/asset-require-hook.js +0 -58
- package/dinou/core/client-error-webpack.jsx +0 -432
- package/dinou/core/client-error.jsx +0 -432
- package/dinou/core/concurrency-manager.js +0 -48
- package/dinou/core/context-proxy.js +0 -68
- package/dinou/core/generate-static-pages.js +0 -130
- package/dinou/core/generate-static-rscs.js +0 -151
- package/dinou/core/get-ssg-metadata.js +0 -31
- package/dinou/core/register-loader.mjs +0 -11
- package/dinou/core/register-paths.js +0 -27
- package/dinou/core/render-app-to-html.js +0 -430
- package/dinou/core/render-html.js +0 -407
- package/dinou/core/server.js +0 -1542
- package/dinou/esbuild/plugins-esbuild/write-metafile-plugin.mjs +0 -16
package/dinou/core/vfs.js
CHANGED
|
@@ -1,68 +1,139 @@
|
|
|
1
|
-
const fs = require("fs");
|
|
2
|
-
const path = require("path");
|
|
3
|
-
|
|
4
|
-
const isDevelopment =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
|
|
4
|
+
const isDevelopment =
|
|
5
|
+
process.env.DINOU_DEV === "true" ||
|
|
6
|
+
(typeof globalThis !== "undefined" && Boolean(globalThis.__DINOU_DEV__)) ||
|
|
7
|
+
process.env.NODE_ENV !== "production";
|
|
8
|
+
const localVfs = {};
|
|
9
|
+
|
|
10
|
+
function getVfs() {
|
|
11
|
+
if (typeof globalThis !== "undefined" && globalThis.__DINOU_VFS__) {
|
|
12
|
+
return globalThis.__DINOU_VFS__;
|
|
13
|
+
}
|
|
14
|
+
return localVfs;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function normalizeKey(p) {
|
|
18
|
+
if (!p) return "";
|
|
19
|
+
let s = String(p).replace(/\\/g, "/");
|
|
20
|
+
if (s.length > 2 && s[1] === ":") s = s.slice(2);
|
|
21
|
+
return s;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function buildVfs(dir, baseDir = dir) {
|
|
25
|
+
const vfs = getVfs();
|
|
26
|
+
if (!fs.existsSync(dir)) return;
|
|
27
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
28
|
+
const children = [];
|
|
29
|
+
|
|
30
|
+
for (const entry of entries) {
|
|
31
|
+
const fullPath = path.join(dir, entry.name);
|
|
32
|
+
const isDirectory = entry.isDirectory();
|
|
33
|
+
children.push({
|
|
34
|
+
name: entry.name,
|
|
35
|
+
isDirectory
|
|
36
|
+
});
|
|
37
|
+
const slashPath = fullPath.replace(/\\/g, "/");
|
|
38
|
+
const relFromSrc = path.relative(baseDir, fullPath).replace(/\\/g, "/");
|
|
39
|
+
if (isDirectory) {
|
|
40
|
+
buildVfs(fullPath, baseDir);
|
|
41
|
+
} else {
|
|
42
|
+
vfs[normalizeKey(fullPath)] = { type: "file" };
|
|
43
|
+
vfs[slashPath] = { type: "file" };
|
|
44
|
+
vfs["src/" + relFromSrc] = { type: "file" };
|
|
45
|
+
vfs["/src/" + relFromSrc] = { type: "file" };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const slashDir = dir.replace(/\\/g, "/");
|
|
50
|
+
const relDir = path.relative(baseDir, dir).replace(/\\/g, "/");
|
|
51
|
+
const entry = { type: "directory", children };
|
|
52
|
+
vfs[normalizeKey(dir)] = entry;
|
|
53
|
+
vfs[slashDir] = entry;
|
|
54
|
+
vfs[relDir ? "src/" + relDir : "src"] = entry;
|
|
55
|
+
vfs[relDir ? "/src/" + relDir : "/src"] = entry;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!isDevelopment) {
|
|
59
|
+
try {
|
|
60
|
+
const srcDir = path.resolve(process.cwd(), "src");
|
|
61
|
+
if (Object.keys(getVfs()).length === 0 && fs.existsSync && fs.existsSync(srcDir)) {
|
|
62
|
+
buildVfs(srcDir, srcDir);
|
|
63
|
+
}
|
|
64
|
+
} catch (e) {}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function lookupVfs(vfs, p) {
|
|
68
|
+
if (!vfs || !p) return null;
|
|
69
|
+
if (vfs[p]) return vfs[p];
|
|
70
|
+
|
|
71
|
+
const s = String(p).split("\\").join("/");
|
|
72
|
+
if (vfs[s]) return vfs[s];
|
|
73
|
+
|
|
74
|
+
if (s.length > 2 && s[1] === ":") {
|
|
75
|
+
const noDrive = s.slice(2);
|
|
76
|
+
if (vfs[noDrive]) return vfs[noDrive];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const idx = s.indexOf("/src");
|
|
80
|
+
if (idx !== -1) {
|
|
81
|
+
const fromSlash = s.slice(idx);
|
|
82
|
+
if (vfs[fromSlash]) return vfs[fromSlash];
|
|
83
|
+
const noSlash = fromSlash.slice(1);
|
|
84
|
+
if (vfs[noSlash]) return vfs[noSlash];
|
|
85
|
+
} else if (s.startsWith("src/") || s === "src") {
|
|
86
|
+
if (vfs[s]) return vfs[s];
|
|
87
|
+
if (vfs["/" + s]) return vfs["/" + s];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const trimmed = s.replace(/^\/+/, "");
|
|
91
|
+
if (vfs[trimmed]) return vfs[trimmed];
|
|
92
|
+
if (vfs["/" + trimmed]) return vfs["/" + trimmed];
|
|
93
|
+
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function existsSync(filePath) {
|
|
98
|
+
const vfs = getVfs();
|
|
99
|
+
if (lookupVfs(vfs, filePath) !== null) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
if (typeof fs.existsSync === "function" && fs.existsSync(filePath)) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
} catch (e) {}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function readdirSync(dirPath, options) {
|
|
111
|
+
const vfs = getVfs();
|
|
112
|
+
const entry = lookupVfs(vfs, dirPath);
|
|
113
|
+
|
|
114
|
+
if (entry && entry.type === "directory" && Array.isArray(entry.children)) {
|
|
115
|
+
if (options && options.withFileTypes) {
|
|
116
|
+
return entry.children.map(child => ({
|
|
117
|
+
name: child.name,
|
|
118
|
+
isDirectory: () => child.isDirectory,
|
|
119
|
+
isFile: () => !child.isDirectory
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
return entry.children.map(child => child.name);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
if (typeof fs.readdirSync === "function") {
|
|
127
|
+
const res = fs.readdirSync(dirPath, options);
|
|
128
|
+
if (res) return res;
|
|
129
|
+
}
|
|
130
|
+
} catch (e) {}
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
module.exports = {
|
|
135
|
+
existsSync,
|
|
136
|
+
readdirSync,
|
|
137
|
+
buildVfs,
|
|
138
|
+
getVfs,
|
|
139
|
+
};
|