dinou 6.1.1 → 7.1.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.
Files changed (135) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +9352 -1081
  3. package/cli.js +314 -91
  4. package/dinou/adapters/bun.js +62 -0
  5. package/dinou/adapters/cloudflare.js +65 -0
  6. package/dinou/adapters/deno.js +48 -0
  7. package/dinou/adapters/netlify.js +85 -0
  8. package/dinou/adapters/node.mjs +31 -0
  9. package/dinou/bun/build.mjs +1077 -0
  10. package/dinou/cloudflare/build.mjs +1121 -0
  11. package/dinou/cloudflare/shims/child_process.js +14 -0
  12. package/dinou/cloudflare/shims/empty.js +2 -0
  13. package/dinou/cloudflare/shims/fs.js +99 -0
  14. package/dinou/cloudflare/shims/os.js +29 -0
  15. package/dinou/config.js +1 -0
  16. package/dinou/config.mjs +2 -0
  17. package/dinou/constants.js +29 -4
  18. package/dinou/core/babel-esm-loader.js +66 -37
  19. package/dinou/core/bailout-proxy.js +61 -0
  20. package/dinou/core/build-static-pages.js +322 -165
  21. package/dinou/core/cache-revalidate.js +471 -144
  22. package/dinou/core/cache-slot.js +387 -0
  23. package/dinou/core/client-redirect.jsx +12 -7
  24. package/dinou/core/client-webpack.jsx +457 -82
  25. package/dinou/core/client.jsx +452 -82
  26. package/dinou/core/config.js +11 -0
  27. package/dinou/core/dinou-paths.js +52 -0
  28. package/dinou/core/edge-ssr.js +122 -0
  29. package/dinou/core/export-static.mjs +64 -0
  30. package/dinou/core/generate-route-types.js +252 -0
  31. package/dinou/core/generate-static-page.js +55 -94
  32. package/dinou/core/generate-static-rsc.js +47 -15
  33. package/dinou/core/generate-static.js +212 -10
  34. package/dinou/core/generating-isg.js +5 -0
  35. package/dinou/core/get-asset-from-manifest.js +9 -3
  36. package/dinou/core/get-error-jsx.js +221 -41
  37. package/dinou/core/get-file-path-and-dynamic-params.js +9 -13
  38. package/dinou/core/get-jsx.js +175 -96
  39. package/dinou/core/handler.js +2303 -0
  40. package/dinou/core/http-adapter.js +115 -0
  41. package/dinou/core/import-module.js +83 -53
  42. package/dinou/core/layout-functions.js +183 -0
  43. package/dinou/core/link.jsx +18 -6
  44. package/dinou/core/load-dinou-config.js +60 -0
  45. package/dinou/core/manifest-provider.js +261 -0
  46. package/dinou/core/navigation-utils.js +4 -0
  47. package/dinou/core/navigation.js +50 -39
  48. package/dinou/core/parse-exports.js +252 -2
  49. package/dinou/core/ppr-context.js +105 -0
  50. package/dinou/core/ppr-runtime.js +263 -0
  51. package/dinou/core/redirect.jsx +20 -19
  52. package/dinou/core/render-jsx-to-client-jsx.js +91 -87
  53. package/dinou/core/request-context.js +47 -13
  54. package/dinou/core/resolve-module-ppr.js +34 -0
  55. package/dinou/core/revalidating.js +28 -9
  56. package/dinou/core/route-generator.js +107 -0
  57. package/dinou/core/rsc-renderer.js +90 -0
  58. package/dinou/core/run-ssg.js +19 -0
  59. package/dinou/core/scan-dependency-components.js +218 -0
  60. package/dinou/core/server-function-proxy-webpack.js +3 -0
  61. package/dinou/core/server-function-proxy.js +3 -0
  62. package/dinou/core/slot.js +302 -0
  63. package/dinou/core/status-manifest.js +41 -1
  64. package/dinou/core/storage-adapter.js +522 -0
  65. package/dinou/core/url-resolver.js +16 -16
  66. package/dinou/core/vfs.js +139 -68
  67. package/dinou/deno/build.mjs +1112 -0
  68. package/dinou/deno/seed-kv.js +115 -0
  69. package/dinou/esbuild/build.mjs +51 -1
  70. package/dinou/esbuild/dev.mjs +290 -224
  71. package/dinou/esbuild/helpers-esbuild/get-config-esbuild-prod.mjs +3 -2
  72. package/dinou/esbuild/helpers-esbuild/get-config-esbuild.mjs +104 -16
  73. package/dinou/esbuild/helpers-esbuild/get-esbuild-entries.mjs +31 -19
  74. package/dinou/esbuild/helpers-esbuild/strip-namespace.mjs +9 -0
  75. package/dinou/esbuild/helpers-esbuild/swc-disk-cache.mjs +225 -0
  76. package/dinou/esbuild/helpers-esbuild/update-manifest-for-module.mjs +7 -0
  77. package/dinou/esbuild/helpers-esbuild/write.mjs +111 -2
  78. package/dinou/esbuild/plugins-esbuild/assets-plugin.mjs +236 -161
  79. package/dinou/esbuild/plugins-esbuild/css-processor-plugin.mjs +101 -5
  80. package/dinou/esbuild/plugins-esbuild/react-client-manifest-plugin.mjs +63 -24
  81. package/dinou/esbuild/plugins-esbuild/server-functions-plugin.mjs +177 -56
  82. package/dinou/esbuild/plugins-esbuild/skip-missing-entry-points-plugin.mjs +3 -0
  83. package/dinou/esbuild/plugins-esbuild/stable-chunk-names-and-maps-plugin.mjs +182 -137
  84. package/dinou/esbuild/plugins-postcss/postcss-extract-plugin.js +38 -11
  85. package/dinou/esbuild/react-refresh/esm-hmr/client.mjs +55 -8
  86. package/dinou/esbuild/react-refresh/esm-hmr/server.js +1 -1
  87. package/dinou/esbuild/react-refresh/esm-hmr-plugin.mjs +238 -101
  88. package/dinou/esbuild/react-refresh/is-react-refresh-boundary.mjs +18 -4
  89. package/dinou/index.d.ts +315 -11
  90. package/dinou/index.js +12 -6
  91. package/dinou/index.mjs +9 -0
  92. package/dinou/node/build.mjs +195 -0
  93. package/dinou/node/bundle-dual-engine.mjs +1012 -0
  94. package/dinou/node/dev.mjs +2589 -0
  95. package/dinou/node/port-selector.mjs +164 -0
  96. package/dinou/node/terminal-status.mjs +345 -0
  97. package/dinou/package.json +16 -14
  98. package/dinou/rollup/react-refresh/esm-hmr/client.js +66 -10
  99. package/dinou/rollup/react-refresh/esm-hmr/server.js +1 -1
  100. package/dinou/rollup/react-refresh/is-react-refresh-boundary.js +24 -5
  101. package/dinou/rollup/react-refresh/react-refresh-runtime.js +13 -6
  102. package/dinou/rollup/react-refresh/react-refresh-wrap-modules.js +56 -11
  103. package/dinou/rollup/react-refresh/rollup-plugin-esm-hmr.js +176 -48
  104. package/dinou/rollup/rollup-plugins/dinou-asset-plugin.js +9 -5
  105. package/dinou/rollup/rollup-plugins/rollup-plugin-memory.js +66 -0
  106. package/dinou/rollup/rollup-plugins/rollup-plugin-react-client-manifest.js +468 -123
  107. package/dinou/rollup/rollup-plugins/rollup-plugin-server-functions.js +44 -12
  108. package/dinou/rollup/rollup-plugins/rollup-plugin-swc.js +100 -0
  109. package/dinou/rollup/rollup.config.js +155 -43
  110. package/dinou/server.d.ts +114 -12
  111. package/dinou/server.js +35 -10
  112. package/dinou/server.mjs +30 -9
  113. package/dinou/webpack/helpers/get-webpack-entries.js +14 -19
  114. package/dinou/webpack/loaders/server-functions-loader.js +22 -1
  115. package/dinou/webpack/loaders/swc-loader.js +76 -0
  116. package/dinou/webpack/plugins/manifest-generator-plugin.js +1 -0
  117. package/dinou/webpack/plugins/server-functions-plugin.js +75 -19
  118. package/dinou/webpack/plugins/webpack-memory-plugin.js +66 -0
  119. package/dinou/webpack/webpack.config.js +227 -29
  120. package/eject.js +113 -34
  121. package/package.json +18 -16
  122. package/dinou/core/asset-require-hook.js +0 -58
  123. package/dinou/core/client-error-webpack.jsx +0 -432
  124. package/dinou/core/client-error.jsx +0 -432
  125. package/dinou/core/concurrency-manager.js +0 -48
  126. package/dinou/core/context-proxy.js +0 -68
  127. package/dinou/core/generate-static-pages.js +0 -130
  128. package/dinou/core/generate-static-rscs.js +0 -151
  129. package/dinou/core/get-ssg-metadata.js +0 -31
  130. package/dinou/core/register-loader.mjs +0 -11
  131. package/dinou/core/register-paths.js +0 -27
  132. package/dinou/core/render-app-to-html.js +0 -430
  133. package/dinou/core/render-html.js +0 -407
  134. package/dinou/core/server.js +0 -1542
  135. package/dinou/esbuild/plugins-esbuild/write-metafile-plugin.mjs +0 -16
@@ -0,0 +1,85 @@
1
+ // dinou/adapters/netlify.js
2
+ // Netlify Functions v2 Adapter for Dinou.
3
+ // Automatically routes all requests to Dinou's universal Web Standards handler.
4
+ Object.assign(process.env, { NODE_ENV: "production" });
5
+
6
+ import { register } from "node:module";
7
+ import { pathToFileURL } from "node:url";
8
+ import path from "node:path";
9
+ import Module from "node:module";
10
+
11
+ import { dinouCoreDir } from "../core/dinou-paths.js";
12
+
13
+ if (typeof register === "function") {
14
+ try {
15
+ const loaderPath = path.join(dinouCoreDir, "babel-esm-loader.js");
16
+ register(pathToFileURL(loaderPath).href, pathToFileURL("./"));
17
+ } catch (e) {
18
+ console.error("[Dinou Adapter] Loader registration failed:", e);
19
+ }
20
+ }
21
+
22
+ let reactServerPath, reactDomServerPath, reactJsxRuntimePath, reactJsxDevRuntimePath;
23
+ let roggcServerNodePath, webpackServerNodePath;
24
+
25
+ try {
26
+ const reactPkgJson = require.resolve("react/package.json");
27
+ reactServerPath = path.join(path.dirname(reactPkgJson), "react.react-server.js");
28
+ reactJsxRuntimePath = path.join(path.dirname(reactPkgJson), "jsx-runtime.react-server.js");
29
+ reactJsxDevRuntimePath = path.join(path.dirname(reactPkgJson), "jsx-dev-runtime.react-server.js");
30
+
31
+ const reactDomPkgJson = require.resolve("react-dom/package.json");
32
+ reactDomServerPath = path.join(path.dirname(reactDomPkgJson), "react-dom.react-server.js");
33
+ } catch (e) {}
34
+
35
+ try {
36
+ const roggcPkgJson = require.resolve("@roggc/react-server-dom-esm/package.json");
37
+ roggcServerNodePath = path.join(path.dirname(roggcPkgJson), "server.node.js");
38
+ } catch (e) {}
39
+
40
+ try {
41
+ const webpackPkgJson = require.resolve("react-server-dom-webpack/package.json");
42
+ webpackServerNodePath = path.join(path.dirname(webpackPkgJson), "server.node.js");
43
+ } catch (e) {}
44
+
45
+ if (Module && Module._resolveFilename) {
46
+ const originalResolveFilename = Module._resolveFilename;
47
+ Module._resolveFilename = function (request, parent, isMain, options) {
48
+ if (request === "react") {
49
+ return reactServerPath;
50
+ } else if (request === "react-dom") {
51
+ return reactDomServerPath;
52
+ } else if (request === "react/jsx-runtime") {
53
+ return reactJsxRuntimePath;
54
+ } else if (request === "react/jsx-dev-runtime") {
55
+ return reactJsxDevRuntimePath;
56
+ } else if (request === "@roggc/react-server-dom-esm/server" && roggcServerNodePath) {
57
+ return roggcServerNodePath;
58
+ } else if (request === "react-server-dom-webpack/server" && webpackServerNodePath) {
59
+ return webpackServerNodePath;
60
+ }
61
+ return originalResolveFilename.call(this, request, parent, isMain, options);
62
+ };
63
+ }
64
+
65
+ if (typeof require === "function") {
66
+ globalThis.__dinou_require__ = require;
67
+ }
68
+
69
+ import { handleRequest } from "../core/handler.js";
70
+
71
+ /**
72
+ * Netlify Function v2 handler
73
+ * @param {Request} request
74
+ * @param {object} context
75
+ * @returns {Promise<Response>}
76
+ */
77
+ export default async function netlifyHandler(request, context) {
78
+ return handleRequest(request);
79
+ }
80
+
81
+ export const config = {
82
+ path: "/*",
83
+ preferStatic: true,
84
+ };
85
+
@@ -0,0 +1,31 @@
1
+ // dinou/adapters/node.mjs
2
+ // Native Node.js Pre-Bundled Adapter for Dinou v7.
3
+ // Serves the standalone pre-bundled server from .dinou/node/server.mjs.
4
+
5
+ import * as path from "node:path";
6
+ import * as fs from "node:fs";
7
+ import { pathToFileURL } from "node:url";
8
+ import { AsyncLocalStorage } from "node:async_hooks";
9
+
10
+ if (typeof globalThis.AsyncLocalStorage === "undefined" && typeof AsyncLocalStorage !== "undefined") {
11
+ globalThis.AsyncLocalStorage = AsyncLocalStorage;
12
+ }
13
+
14
+ const cwd = typeof process !== "undefined" && typeof process.cwd === "function" ? process.cwd() : ".";
15
+ const bundlePath = path.resolve(cwd, ".dinou/node/server.mjs");
16
+
17
+ if (!fs.existsSync(bundlePath)) {
18
+ console.error("❌ [Dinou Node Adapter] .dinou/node/server.mjs not found. Please run 'npm run build:node' first.");
19
+ process.exit(1);
20
+ }
21
+
22
+ const serverModule = await import(pathToFileURL(bundlePath).href);
23
+ const PORT = Number(process.env.PORT || 3000);
24
+
25
+ if (typeof serverModule.startServer === "function") {
26
+ await serverModule.startServer(PORT);
27
+ } else if (serverModule.default && typeof serverModule.default.startServer === "function") {
28
+ await serverModule.default.startServer(PORT);
29
+ }
30
+
31
+ export default serverModule.default || serverModule;