@bleedingdev/modern-js-app-tools 3.2.0-ultramodern.99 → 3.4.0-ultramodern.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/dist/cjs/baseline.js +12 -92
- package/dist/cjs/builder/builder-rspack/index.js +9 -5
- package/dist/cjs/builder/generator/adapterCopy.js +9 -5
- package/dist/cjs/builder/generator/createBuilderProviderConfig.js +9 -5
- package/dist/cjs/builder/generator/createCopyPattern.js +9 -5
- package/dist/cjs/builder/generator/getBuilderEnvironments.js +41 -9
- package/dist/cjs/builder/generator/index.js +16 -5
- package/dist/cjs/builder/index.js +9 -5
- package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +9 -5
- package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +10 -6
- package/dist/cjs/builder/shared/builderPlugins/adapterPrecompress.js +9 -5
- package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +39 -9
- package/dist/cjs/builder/shared/builderPlugins/builderHooks.js +12 -8
- package/dist/cjs/builder/shared/builderPlugins/index.js +9 -5
- package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +9 -5
- package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +12 -8
- package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +41 -8
- package/dist/cjs/builder/shared/bundlerPlugins/index.js +9 -5
- package/dist/cjs/builder/shared/createCopyInfo.js +9 -5
- package/dist/cjs/builder/shared/index.js +9 -5
- package/dist/cjs/builder/shared/lazyCompilation.js +94 -0
- package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +12 -8
- package/dist/cjs/commands/build.js +9 -5
- package/dist/cjs/commands/deploy.js +9 -5
- package/dist/cjs/commands/dev.js +9 -5
- package/dist/cjs/commands/index.js +12 -11
- package/dist/cjs/commands/info.js +9 -5
- package/dist/cjs/commands/inspect.js +12 -8
- package/dist/cjs/commands/runtime.js +50 -13
- package/dist/cjs/commands/serve.js +9 -5
- package/dist/cjs/compat/hooks.js +9 -5
- package/dist/cjs/compat/index.js +9 -5
- package/dist/cjs/compat/utils.js +9 -5
- package/dist/cjs/config/default.js +27 -7
- package/dist/cjs/config/index.js +9 -5
- package/dist/cjs/config/initialize/index.js +9 -5
- package/dist/cjs/config/initialize/inits.js +9 -5
- package/dist/cjs/constants.js +13 -9
- package/dist/cjs/defineConfig.js +12 -8
- package/dist/cjs/esm/register-esm.js +12 -8
- package/dist/cjs/esm/ts-paths-loader.js +9 -5
- package/dist/cjs/index.js +23 -17
- package/dist/cjs/locale/en.js +12 -8
- package/dist/cjs/locale/index.js +9 -5
- package/dist/cjs/locale/zh.js +12 -8
- package/dist/cjs/plugins/analyze/constants.js +14 -10
- package/dist/cjs/plugins/analyze/getBundleEntry.js +9 -5
- package/dist/cjs/plugins/analyze/getFileSystemEntry.js +9 -5
- package/dist/cjs/plugins/analyze/getHtmlTemplate.js +9 -5
- package/dist/cjs/plugins/analyze/getServerRoutes.js +9 -5
- package/dist/cjs/plugins/analyze/index.js +12 -6
- package/dist/cjs/plugins/analyze/isDefaultExportFunction.js +10 -6
- package/dist/cjs/plugins/analyze/templates.js +12 -8
- package/dist/cjs/plugins/analyze/utils.js +9 -5
- package/dist/cjs/plugins/deploy/index.js +9 -5
- package/dist/cjs/plugins/deploy/platforms/cloudflare.js +185 -7
- package/dist/cjs/plugins/deploy/platforms/gh-pages.js +9 -5
- package/dist/cjs/plugins/deploy/platforms/netlify.js +9 -5
- package/dist/cjs/plugins/deploy/platforms/node.js +9 -5
- package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.mjs +141 -16
- package/dist/cjs/plugins/deploy/platforms/vercel.js +9 -5
- package/dist/cjs/plugins/deploy/utils/generator.js +9 -5
- package/dist/cjs/plugins/deploy/utils/index.js +19 -40
- package/dist/cjs/plugins/initialize/index.js +19 -6
- package/dist/cjs/plugins/serverBuild.js +9 -5
- package/dist/cjs/plugins/serverRuntime.js +12 -8
- package/dist/cjs/presetUltramodern.js +96 -7
- package/dist/cjs/rsbuild.js +55 -67
- package/dist/cjs/run/index.js +9 -5
- package/dist/cjs/types/config/cloudflareDeploy.js +18 -0
- package/dist/cjs/types/config/index.js +9 -5
- package/dist/cjs/types/config/precompress.js +18 -0
- package/dist/cjs/types/index.js +9 -5
- package/dist/cjs/ultramodern/designSystem.js +16 -12
- package/dist/cjs/utils/config.js +9 -5
- package/dist/cjs/utils/createServer.js +14 -10
- package/dist/cjs/utils/env.js +9 -5
- package/dist/cjs/utils/generateWatchFiles.js +9 -5
- package/dist/cjs/utils/getConfigFile.js +9 -5
- package/dist/cjs/utils/getSelectedEntries.js +9 -5
- package/dist/cjs/utils/initAppContext.js +9 -5
- package/dist/cjs/utils/loadPlugins.js +9 -5
- package/dist/cjs/utils/printInstructions.js +9 -5
- package/dist/cjs/utils/register.js +9 -5
- package/dist/cjs/utils/restart.js +9 -5
- package/dist/cjs/utils/routes.js +9 -5
- package/dist/esm/baseline.mjs +3 -77
- package/dist/esm/builder/generator/getBuilderEnvironments.mjs +32 -4
- package/dist/esm/builder/generator/index.mjs +7 -0
- package/dist/esm/builder/shared/builderPlugins/adapterHtml.mjs +1 -1
- package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +31 -5
- package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.mjs +32 -3
- package/dist/esm/builder/shared/lazyCompilation.mjs +44 -0
- package/dist/esm/commands/index.mjs +2 -5
- package/dist/esm/commands/runtime.mjs +33 -3
- package/dist/esm/config/default.mjs +14 -1
- package/dist/esm/index.mjs +3 -2
- package/dist/esm/plugins/analyze/index.mjs +3 -1
- package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +1 -1
- package/dist/esm/plugins/deploy/platforms/cloudflare.mjs +176 -2
- package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.mjs +141 -16
- package/dist/esm/plugins/deploy/utils/index.mjs +11 -36
- package/dist/esm/plugins/initialize/index.mjs +11 -2
- package/dist/esm/presetUltramodern.mjs +77 -3
- package/dist/esm/rsbuild.mjs +1 -8
- package/dist/esm/types/config/cloudflareDeploy.mjs +0 -0
- package/dist/esm/types/config/precompress.mjs +0 -0
- package/dist/esm-node/baseline.mjs +3 -77
- package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +32 -4
- package/dist/esm-node/builder/generator/index.mjs +7 -0
- package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.mjs +1 -1
- package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +31 -5
- package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.mjs +32 -3
- package/dist/esm-node/builder/shared/lazyCompilation.mjs +45 -0
- package/dist/esm-node/commands/index.mjs +2 -5
- package/dist/esm-node/commands/runtime.mjs +33 -3
- package/dist/esm-node/config/default.mjs +14 -1
- package/dist/esm-node/index.mjs +3 -2
- package/dist/esm-node/plugins/analyze/index.mjs +3 -1
- package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +1 -1
- package/dist/esm-node/plugins/deploy/platforms/cloudflare.mjs +176 -2
- package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.mjs +141 -16
- package/dist/esm-node/plugins/deploy/utils/index.mjs +12 -36
- package/dist/esm-node/plugins/initialize/index.mjs +11 -2
- package/dist/esm-node/presetUltramodern.mjs +77 -3
- package/dist/esm-node/rsbuild.mjs +1 -8
- package/dist/esm-node/types/config/cloudflareDeploy.mjs +1 -0
- package/dist/esm-node/types/config/precompress.mjs +1 -0
- package/dist/types/baseline.d.ts +16 -46
- package/dist/types/builder/builder-rspack/index.d.ts +1 -1
- package/dist/types/builder/generator/index.d.ts +1 -1
- package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +3 -1
- package/dist/types/builder/shared/createCopyInfo.d.ts +1 -1
- package/dist/types/builder/shared/lazyCompilation.d.ts +43 -0
- package/dist/types/builder/shared/types.d.ts +10 -0
- package/dist/types/commands/index.d.ts +1 -1
- package/dist/types/commands/inspect.d.ts +1 -1
- package/dist/types/commands/runtime.d.ts +1 -0
- package/dist/types/config/default.d.ts +6 -0
- package/dist/types/locale/index.d.ts +89 -2
- package/dist/types/plugins/analyze/getFileSystemEntry.d.ts +2 -2
- package/dist/types/plugins/analyze/index.d.ts +1 -1
- package/dist/types/plugins/analyze/utils.d.ts +1 -1
- package/dist/types/plugins/deploy/index.d.ts +1 -1
- package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.d.mts +1 -1
- package/dist/types/plugins/deploy/platforms/templates/netlify-entry.d.cts +1 -1
- package/dist/types/plugins/deploy/platforms/templates/vercel-entry.d.cts +1 -1
- package/dist/types/plugins/deploy/utils/generator.d.ts +2 -2
- package/dist/types/plugins/deploy/utils/index.d.ts +1 -1
- package/dist/types/plugins/initialize/index.d.ts +1 -1
- package/dist/types/plugins/serverBuild.d.ts +1 -1
- package/dist/types/plugins/serverRuntime.d.ts +1 -1
- package/dist/types/presetUltramodern.d.ts +52 -2
- package/dist/types/rsbuild.d.ts +1 -1
- package/dist/types/run/index.d.ts +1 -1
- package/dist/types/types/config/cloudflareDeploy.d.ts +79 -0
- package/dist/types/types/config/deploy.d.ts +9 -15
- package/dist/types/types/config/output.d.ts +4 -20
- package/dist/types/types/config/precompress.d.ts +20 -0
- package/dist/types/types/plugin.d.ts +20 -0
- package/dist/types/utils/getConfigFile.d.ts +1 -1
- package/dist/types/utils/loadPlugins.d.ts +2 -2
- package/package.json +26 -21
- package/dist/esm/rslib-runtime.mjs +0 -18
- package/dist/esm-node/rslib-runtime.mjs +0 -19
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -23,11 +27,6 @@ var __webpack_require__ = {};
|
|
|
23
27
|
})();
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
closeServer: ()=>closeServer,
|
|
28
|
-
getServer: ()=>getServer,
|
|
29
|
-
setServer: ()=>setServer
|
|
30
|
-
});
|
|
31
30
|
let server = null;
|
|
32
31
|
const getServer = ()=>server;
|
|
33
32
|
const setServer = (newServer)=>{
|
|
@@ -39,6 +38,11 @@ const closeServer = async ()=>{
|
|
|
39
38
|
server = null;
|
|
40
39
|
}
|
|
41
40
|
};
|
|
41
|
+
__webpack_require__.d(__webpack_exports__, {}, {
|
|
42
|
+
closeServer: closeServer,
|
|
43
|
+
getServer: getServer,
|
|
44
|
+
setServer: setServer
|
|
45
|
+
});
|
|
42
46
|
exports.closeServer = __webpack_exports__.closeServer;
|
|
43
47
|
exports.getServer = __webpack_exports__.getServer;
|
|
44
48
|
exports.setServer = __webpack_exports__.setServer;
|
package/dist/cjs/utils/env.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
18
22
|
};
|
|
19
23
|
})();
|
|
20
24
|
(()=>{
|
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
18
22
|
};
|
|
19
23
|
})();
|
|
20
24
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
18
22
|
};
|
|
19
23
|
})();
|
|
20
24
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
18
22
|
};
|
|
19
23
|
})();
|
|
20
24
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
package/dist/cjs/utils/routes.js
CHANGED
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
18
22
|
};
|
|
19
23
|
})();
|
|
20
24
|
(()=>{
|
package/dist/esm/baseline.mjs
CHANGED
|
@@ -1,78 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const resolveReactRouterPackageDir = ()=>{
|
|
5
|
-
const localRequire = createRequire(node_path.join(process.cwd(), 'package.json'));
|
|
6
|
-
try {
|
|
7
|
-
const reactRouterDomPackageJson = localRequire.resolve('react-router-dom/package.json', {
|
|
8
|
-
paths: [
|
|
9
|
-
process.cwd()
|
|
10
|
-
]
|
|
11
|
-
});
|
|
12
|
-
const reactRouterPackageJson = localRequire.resolve('react-router/package.json', {
|
|
13
|
-
paths: [
|
|
14
|
-
node_path.dirname(reactRouterDomPackageJson)
|
|
15
|
-
]
|
|
16
|
-
});
|
|
17
|
-
return node_path.dirname(reactRouterPackageJson);
|
|
18
|
-
} catch {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
const setReactRouterBridgeSafeAliases = (chain)=>{
|
|
23
|
-
const reactRouterPackageDir = resolveReactRouterPackageDir();
|
|
24
|
-
if (!reactRouterPackageDir) return;
|
|
25
|
-
const productionEntry = node_path.join(reactRouterPackageDir, 'dist/production/index.mjs');
|
|
26
|
-
const developmentEntry = node_path.join(reactRouterPackageDir, 'dist/development/index.mjs');
|
|
27
|
-
chain.resolve.alias.set('react-router$', productionEntry);
|
|
28
|
-
chain.resolve.alias.set('react-router/dist/production/index.js', productionEntry);
|
|
29
|
-
chain.resolve.alias.set('react-router/dist/development/index.js', developmentEntry);
|
|
30
|
-
};
|
|
31
|
-
const createAppBaselineConfig = (options = {})=>{
|
|
32
|
-
const { appId = 'app', enableBffRequestId = true, enableTelemetry = true, enableTelemetryExporters = true, otlpEndpoint = process.env.MODERN_TELEMETRY_OTLP_ENDPOINT || 'http://127.0.0.1:4318/v1/logs', victoriaMetricsEndpoint = process.env.MODERN_TELEMETRY_VICTORIA_ENDPOINT || 'http://127.0.0.1:8428/api/v1/import/prometheus', telemetryFailLoudStartup = true, enableModuleFederationSSR = true } = options;
|
|
33
|
-
const server = {};
|
|
34
|
-
if (enableTelemetry) {
|
|
35
|
-
server.telemetry = {
|
|
36
|
-
enabled: true,
|
|
37
|
-
failLoudStartup: telemetryFailLoudStartup
|
|
38
|
-
};
|
|
39
|
-
if (enableTelemetryExporters) server.telemetry.exporters = {
|
|
40
|
-
otlp: {
|
|
41
|
-
enabled: true,
|
|
42
|
-
endpoint: otlpEndpoint
|
|
43
|
-
},
|
|
44
|
-
victoriaMetrics: {
|
|
45
|
-
enabled: true,
|
|
46
|
-
endpoint: victoriaMetricsEndpoint
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
if (enableModuleFederationSSR) server.ssr = {
|
|
51
|
-
mode: 'stream',
|
|
52
|
-
moduleFederationAppSSR: true
|
|
53
|
-
};
|
|
54
|
-
const baselineConfig = {
|
|
55
|
-
output: {
|
|
56
|
-
precompress: true
|
|
57
|
-
},
|
|
58
|
-
performance: {
|
|
59
|
-
rsdoctor: {
|
|
60
|
-
enabled: 'production' === process.env.NODE_ENV,
|
|
61
|
-
disableClientServer: true
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
server,
|
|
65
|
-
tools: {
|
|
66
|
-
bundlerChain: setReactRouterBridgeSafeAliases
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
if (enableBffRequestId) baselineConfig.bff = {
|
|
70
|
-
requestId: appId
|
|
71
|
-
};
|
|
72
|
-
return baselineConfig;
|
|
73
|
-
};
|
|
74
|
-
const withAppBaseline = (config, options = {})=>mergeConfig([
|
|
75
|
-
createAppBaselineConfig(options),
|
|
76
|
-
config
|
|
77
|
-
]);
|
|
1
|
+
import { createPresetUltramodernConfig, presetUltramodern } from "./presetUltramodern.mjs";
|
|
2
|
+
const createAppBaselineConfig = createPresetUltramodernConfig;
|
|
3
|
+
const withAppBaseline = presetUltramodern;
|
|
78
4
|
export { createAppBaselineConfig, withAppBaseline };
|
|
@@ -12,6 +12,20 @@ const JS_OR_TS_EXTS = [
|
|
|
12
12
|
'.mjs',
|
|
13
13
|
'.cjs'
|
|
14
14
|
];
|
|
15
|
+
const CLOUDFLARE_WORKER_NODE_BUILTINS = [
|
|
16
|
+
'async_hooks',
|
|
17
|
+
'buffer',
|
|
18
|
+
'crypto',
|
|
19
|
+
'events',
|
|
20
|
+
'fs/promises',
|
|
21
|
+
'module',
|
|
22
|
+
'path',
|
|
23
|
+
'process',
|
|
24
|
+
'stream',
|
|
25
|
+
'string_decoder',
|
|
26
|
+
'url',
|
|
27
|
+
'util'
|
|
28
|
+
];
|
|
15
29
|
const CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR = node_path.resolve(__dirname, '../../plugins/deploy/platforms/templates');
|
|
16
30
|
function findExistingFile(candidates) {
|
|
17
31
|
return candidates.find((candidate)=>node_fs.existsSync(candidate));
|
|
@@ -55,6 +69,21 @@ function setAliasIfPresent(alias, name, value) {
|
|
|
55
69
|
function getCloudflareWorkerCompatFile(file) {
|
|
56
70
|
return node_path.join(CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR, file);
|
|
57
71
|
}
|
|
72
|
+
function getCloudflareWorkerNodeExternals() {
|
|
73
|
+
return Object.fromEntries(CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
|
|
74
|
+
const nodeBuiltin = `node:${builtin}`;
|
|
75
|
+
return [
|
|
76
|
+
[
|
|
77
|
+
builtin,
|
|
78
|
+
`module-import ${nodeBuiltin}`
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
nodeBuiltin,
|
|
82
|
+
`module-import ${nodeBuiltin}`
|
|
83
|
+
]
|
|
84
|
+
];
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
58
87
|
function getEffectBffEntry(normalizedConfig, appContext) {
|
|
59
88
|
if (!normalizedConfig.bff || 'hono' === normalizedConfig.bff.runtimeFramework) return;
|
|
60
89
|
const configuredEntry = normalizedConfig.bff.effect?.entry;
|
|
@@ -176,12 +205,13 @@ function getBuilderEnvironments(normalizedConfig, appContext, tempBuilderConfig)
|
|
|
176
205
|
chain.merge({
|
|
177
206
|
experiments: {
|
|
178
207
|
outputModule: true
|
|
179
|
-
}
|
|
208
|
+
},
|
|
209
|
+
externals: getCloudflareWorkerNodeExternals(),
|
|
210
|
+
externalsType: 'module-import'
|
|
180
211
|
});
|
|
181
212
|
chain.output.module(true).library({
|
|
182
213
|
type: 'module'
|
|
183
214
|
}).chunkFormat('module').chunkLoading('import').workerChunkLoading('import');
|
|
184
|
-
chain.target('webworker');
|
|
185
215
|
chain.plugins.delete('plugin-module-federation');
|
|
186
216
|
if (tanstackRouterSsrServerFile) {
|
|
187
217
|
chain.resolve.alias.set('@tanstack/router-core/ssr/server$', tanstackRouterSsrServerFile);
|
|
@@ -211,8 +241,6 @@ function getBuilderEnvironments(normalizedConfig, appContext, tempBuilderConfig)
|
|
|
211
241
|
chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
|
|
212
242
|
chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
|
|
213
243
|
chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
|
|
214
|
-
chain.resolve.fallback.set('async_hooks', false);
|
|
215
|
-
chain.resolve.fallback.set('node:async_hooks', false);
|
|
216
244
|
chain.resolve.fallback.set('fs', false);
|
|
217
245
|
chain.resolve.fallback.set('node:fs', false);
|
|
218
246
|
}
|
|
@@ -16,6 +16,13 @@ async function generateBuilder(options, bundlerType) {
|
|
|
16
16
|
else mergedEnvironments[name] = builderConfig.environments[name];
|
|
17
17
|
builderConfig.environments = mergedEnvironments;
|
|
18
18
|
} else builderConfig.environments = environments;
|
|
19
|
+
const hooks = appContext._internalContext.pluginAPI?.getHooks();
|
|
20
|
+
if (hooks?.modifyBuilderEnvironments) {
|
|
21
|
+
const { environments: modifiedEnvironments } = await hooks.modifyBuilderEnvironments.call({
|
|
22
|
+
environments: builderConfig.environments
|
|
23
|
+
});
|
|
24
|
+
builderConfig.environments = modifiedEnvironments;
|
|
25
|
+
}
|
|
19
26
|
const builder = await createBuilder({
|
|
20
27
|
cwd: appContext.appDirectory,
|
|
21
28
|
rscClientRuntimePath: `@${appContext.metaName}/runtime/rsc/client`,
|
|
@@ -38,7 +38,7 @@ function applyBottomHtmlPlugin({ chain, options, CHAIN_ID, HtmlBundlerPlugin, ht
|
|
|
38
38
|
const baseTemplateParams = {
|
|
39
39
|
entryName,
|
|
40
40
|
title: modernConfig.html.title,
|
|
41
|
-
mountId: modernConfig.html.
|
|
41
|
+
mountId: modernConfig.html.mountId
|
|
42
42
|
};
|
|
43
43
|
chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args)=>[
|
|
44
44
|
{
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
import { SERVICE_WORKER_ENVIRONMENT_NAME, isHtmlDisabled } from "@modern-js/builder";
|
|
2
|
-
import { fs, isUseRsc, isUseSSRBundle } from "@modern-js/utils";
|
|
2
|
+
import { fs, isUseRsc, isUseSSRBundle, logger } from "@modern-js/utils";
|
|
3
3
|
import { mergeRsbuildConfig } from "@rsbuild/core";
|
|
4
4
|
import { getServerCombinedModuleFile } from "../../../plugins/analyze/utils.mjs";
|
|
5
5
|
import { HtmlAsyncChunkPlugin, RouterPlugin } from "../bundlerPlugins/index.mjs";
|
|
6
|
+
import { aggregateEagerRouteComponentFiles, planSSRLazyCompilation } from "../lazyCompilation.mjs";
|
|
6
7
|
import * as __rspack_external_path from "path";
|
|
7
8
|
const builderPluginAdapterSSR = (options)=>({
|
|
8
9
|
name: 'builder-plugin-adapter-modern-ssr',
|
|
9
10
|
setup (api) {
|
|
10
|
-
const { normalizedConfig } = options;
|
|
11
|
-
api.modifyRsbuildConfig((config)=>
|
|
11
|
+
const { normalizedConfig, appContext, eagerRouteComponentFilesByEntry } = options;
|
|
12
|
+
api.modifyRsbuildConfig((config)=>{
|
|
13
|
+
const merged = mergeRsbuildConfig(config, {
|
|
12
14
|
html: {
|
|
13
15
|
inject: isStreamingSSR(normalizedConfig) ? 'head' : void 0
|
|
14
16
|
},
|
|
15
17
|
server: {
|
|
16
18
|
compress: isStreamingSSR(normalizedConfig) || isUseRsc(normalizedConfig) ? false : void 0
|
|
17
19
|
}
|
|
18
|
-
})
|
|
20
|
+
});
|
|
21
|
+
const lazyCompilation = getSSRLazyCompilation(merged.dev?.lazyCompilation, normalizedConfig, appContext, eagerRouteComponentFilesByEntry);
|
|
22
|
+
if (void 0 !== lazyCompilation) merged.dev = {
|
|
23
|
+
...merged.dev,
|
|
24
|
+
lazyCompilation
|
|
25
|
+
};
|
|
26
|
+
return merged;
|
|
27
|
+
});
|
|
19
28
|
api.modifyBundlerChain(async (chain, { target, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer, environment })=>{
|
|
20
29
|
const builderConfig = environment.config;
|
|
21
30
|
const { normalizedConfig } = options;
|
|
@@ -51,6 +60,22 @@ const isStreamingSSR = (userConfig)=>{
|
|
|
51
60
|
}
|
|
52
61
|
return false;
|
|
53
62
|
};
|
|
63
|
+
function getSSRLazyCompilation(current, normalizedConfig, appContext, eagerRouteComponentFilesByEntry) {
|
|
64
|
+
if (!current || isUseRsc(normalizedConfig) || !isStreamingSSR(normalizedConfig)) return;
|
|
65
|
+
const plan = planSSRLazyCompilation(current, aggregateEagerRouteComponentFiles(eagerRouteComponentFilesByEntry));
|
|
66
|
+
if (!plan.apply) {
|
|
67
|
+
if (plan.unresolvedByEntry) warnUnresolvedRouteComponents(appContext.appDirectory, plan.unresolvedByEntry);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
return plan.lazyCompilation;
|
|
71
|
+
}
|
|
72
|
+
const warnedLazyApps = new Set();
|
|
73
|
+
function warnUnresolvedRouteComponents(appDirectory, unresolvedByEntry) {
|
|
74
|
+
if (warnedLazyApps.has(appDirectory)) return;
|
|
75
|
+
warnedLazyApps.add(appDirectory);
|
|
76
|
+
const detail = Array.from(unresolvedByEntry).map(([entry, comps])=>`${entry}: ${comps.join(', ')}`).join('; ');
|
|
77
|
+
logger.warn(`[lazyCompilation] Skipped stream SSR route-eager optimization because some route components could not be resolved to a file (${detail}). Lazy compilation may break first-screen CSS/JS for these routes.`);
|
|
78
|
+
}
|
|
54
79
|
function applyAsyncChunkHtmlPlugin({ chain, modernConfig, HtmlBundlerPlugin }) {
|
|
55
80
|
if (isStreamingSSR(modernConfig) || isUseRsc(modernConfig)) chain.plugin('html-async-chunk').use(HtmlAsyncChunkPlugin, [
|
|
56
81
|
HtmlBundlerPlugin
|
|
@@ -70,7 +95,8 @@ function applyRouterPlugin(chain, pluginName, options, HtmlBundlerPlugin) {
|
|
|
70
95
|
staticJsDir: normalizedConfig.output?.distPath?.js,
|
|
71
96
|
disableFilenameHash: normalizedConfig.output?.filenameHash === false,
|
|
72
97
|
scriptLoading: normalizedConfig.html?.scriptLoading,
|
|
73
|
-
nonce: normalizedConfig.security?.nonce
|
|
98
|
+
nonce: normalizedConfig.security?.nonce,
|
|
99
|
+
useRsc: isUseRsc(normalizedConfig)
|
|
74
100
|
}
|
|
75
101
|
]);
|
|
76
102
|
}
|
|
@@ -64,6 +64,25 @@ class RouterPlugin {
|
|
|
64
64
|
routeAssets: {}
|
|
65
65
|
});
|
|
66
66
|
const prevManifest = JSON.parse(prevManifestStr);
|
|
67
|
+
const namedChunkGroupInstances = new Map();
|
|
68
|
+
for (const cg of compilation.chunkGroups || [])if (cg.name) namedChunkGroupInstances.set(cg.name, cg);
|
|
69
|
+
const collectDescendantCssAssets = (name)=>{
|
|
70
|
+
const root = namedChunkGroupInstances.get(name);
|
|
71
|
+
if (!root) return [];
|
|
72
|
+
const cssFiles = new Set();
|
|
73
|
+
const visited = new Set();
|
|
74
|
+
const stack = [
|
|
75
|
+
...root.childrenIterable
|
|
76
|
+
];
|
|
77
|
+
while(stack.length){
|
|
78
|
+
const child = stack.pop();
|
|
79
|
+
if (visited.has(child)) continue;
|
|
80
|
+
visited.add(child);
|
|
81
|
+
for (const chunk of child.chunks)for (const file of chunk.files)if (/\.css$/.test(file)) cssFiles.add(publicPath ? normalizePath(publicPath) + file : file);
|
|
82
|
+
for (const c of child.childrenIterable)stack.push(c);
|
|
83
|
+
}
|
|
84
|
+
return Array.from(cssFiles);
|
|
85
|
+
};
|
|
67
86
|
const asyncEntryNames = [];
|
|
68
87
|
for (const [name, chunkGroup] of Object.entries(namedChunkGroups)){
|
|
69
88
|
if (name.startsWith('async-')) asyncEntryNames.push(name);
|
|
@@ -71,7 +90,12 @@ class RouterPlugin {
|
|
|
71
90
|
const filename = asset.name;
|
|
72
91
|
return publicPath ? normalizePath(publicPath) + filename : filename;
|
|
73
92
|
});
|
|
74
|
-
const
|
|
93
|
+
const directCssAssets = assets.filter((asset)=>/\.css$/.test(asset));
|
|
94
|
+
const descendantCssAssets = collectDescendantCssAssets(name).filter((asset)=>!directCssAssets.includes(asset));
|
|
95
|
+
const referenceCssAssets = [
|
|
96
|
+
...directCssAssets,
|
|
97
|
+
...descendantCssAssets
|
|
98
|
+
];
|
|
75
99
|
routeAssets[name] = {
|
|
76
100
|
chunkIds: chunkGroup.chunks,
|
|
77
101
|
assets,
|
|
@@ -113,10 +137,14 @@ class RouterPlugin {
|
|
|
113
137
|
const manifest = {
|
|
114
138
|
routeAssets: relatedAssets
|
|
115
139
|
};
|
|
140
|
+
const { useRsc } = this;
|
|
116
141
|
const injectedContent = `
|
|
117
142
|
;(function(){
|
|
118
143
|
window.${ROUTE_MANIFEST} = ${JSON.stringify(manifest, (k, v)=>{
|
|
119
|
-
if (('assets' === k || 'referenceCssAssets' === k) && Array.isArray(v))
|
|
144
|
+
if (('assets' === k || 'referenceCssAssets' === k) && Array.isArray(v)) {
|
|
145
|
+
if (!useRsc) return;
|
|
146
|
+
return v.map((item)=>item.replace(publicPath, ''));
|
|
147
|
+
}
|
|
120
148
|
return v;
|
|
121
149
|
})};
|
|
122
150
|
})();
|
|
@@ -144,7 +172,7 @@ class RouterPlugin {
|
|
|
144
172
|
});
|
|
145
173
|
});
|
|
146
174
|
}
|
|
147
|
-
constructor({ staticJsDir = 'static/js', HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = 'defer', nonce }){
|
|
175
|
+
constructor({ staticJsDir = 'static/js', HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = 'defer', nonce, useRsc = false }){
|
|
148
176
|
this.name = 'RouterPlugin';
|
|
149
177
|
this.HtmlBundlerPlugin = HtmlBundlerPlugin;
|
|
150
178
|
this.enableInlineRouteManifests = enableInlineRouteManifests;
|
|
@@ -152,6 +180,7 @@ class RouterPlugin {
|
|
|
152
180
|
this.disableFilenameHash = disableFilenameHash;
|
|
153
181
|
this.scriptLoading = scriptLoading;
|
|
154
182
|
this.nonce = nonce;
|
|
183
|
+
this.useRsc = useRsc;
|
|
155
184
|
}
|
|
156
185
|
}
|
|
157
186
|
export { RouterPlugin };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { collectRouteComponentFiles, normalizeModulePath } from "@modern-js/utils";
|
|
2
|
+
function aggregateEagerRouteComponentFiles(byEntry) {
|
|
3
|
+
const files = new Set();
|
|
4
|
+
const unresolvedByEntry = new Map();
|
|
5
|
+
if (byEntry) for (const [entryName, collection] of byEntry){
|
|
6
|
+
for (const file of collection.resolvedFiles)files.add(file);
|
|
7
|
+
if (collection.unresolvedSpecifiers.length > 0) unresolvedByEntry.set(entryName, collection.unresolvedSpecifiers);
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
files,
|
|
11
|
+
unresolvedByEntry
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function buildSSRLazyCompilationTest(eagerRouteFiles, userTest) {
|
|
15
|
+
const userTestFn = 'function' == typeof userTest ? userTest : userTest instanceof RegExp ? (m)=>userTest.test(m.resource || '') : ()=>true;
|
|
16
|
+
return (m)=>{
|
|
17
|
+
const resource = m.resource;
|
|
18
|
+
if (!resource) return userTestFn(m);
|
|
19
|
+
if (eagerRouteFiles.has(normalizeModulePath(resource))) return false;
|
|
20
|
+
return userTestFn(m);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function planSSRLazyCompilation(current, info) {
|
|
24
|
+
if (!current) return {
|
|
25
|
+
apply: false
|
|
26
|
+
};
|
|
27
|
+
if (info.unresolvedByEntry.size > 0) return {
|
|
28
|
+
apply: false,
|
|
29
|
+
unresolvedByEntry: info.unresolvedByEntry
|
|
30
|
+
};
|
|
31
|
+
if (0 === info.files.size) return {
|
|
32
|
+
apply: false
|
|
33
|
+
};
|
|
34
|
+
const base = 'object' == typeof current ? current : {};
|
|
35
|
+
const userTest = current.test;
|
|
36
|
+
return {
|
|
37
|
+
apply: true,
|
|
38
|
+
lazyCompilation: {
|
|
39
|
+
...base,
|
|
40
|
+
test: buildSSRLazyCompilationTest(info.files, userTest)
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export { aggregateEagerRouteComponentFiles, buildSSRLazyCompilationTest, collectRouteComponentFiles, normalizeModulePath, planSSRLazyCompilation };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { i18n, localeKeys } from "../locale/index.mjs";
|
|
2
|
-
import { runtimeCommand } from "./runtime.mjs";
|
|
3
2
|
const devCommand = async (program, api)=>{
|
|
4
3
|
program.command('dev').alias('start').usage('[options]').description(i18n.t(localeKeys.command.dev.describe)).option('-c --config <config>', i18n.t(localeKeys.command.shared.config)).option('-e --entry [entry...]', i18n.t(localeKeys.command.dev.entry)).option('--analyze', i18n.t(localeKeys.command.shared.analyze)).option('--api-only', i18n.t(localeKeys.command.dev.apiOnly)).option('--web-only', i18n.t(localeKeys.command.dev.webOnly)).action(async (options)=>{
|
|
5
4
|
const { dev } = await import("./dev.mjs");
|
|
@@ -41,7 +40,5 @@ const infoCommand = (program, api)=>{
|
|
|
41
40
|
await info(api, options);
|
|
42
41
|
});
|
|
43
42
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
47
|
-
export { buildCommand, deployCommand, devCommand, infoCommand, inspectCommand, runtimeOperationsCommand, serverCommand };
|
|
43
|
+
export { runtimeCommand } from "./runtime.mjs";
|
|
44
|
+
export { buildCommand, deployCommand, devCommand, infoCommand, inspectCommand, serverCommand };
|