@bleedingdev/modern-js-app-tools-extensions 3.9.0-ultramodern.2 → 3.9.0-ultramodern.20
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/backend-federation-build/codegen.js +267 -0
- package/dist/cjs/backend-federation-build/config.js +239 -0
- package/dist/cjs/backend-federation-build/emit.js +154 -0
- package/dist/cjs/backend-federation-build/index.js +53 -0
- package/dist/cjs/build-config/build-environment.js +129 -0
- package/dist/cjs/build-config/precompress/plugin.js +124 -0
- package/dist/cjs/build-config/precompress/types.js +18 -0
- package/dist/cjs/build-config/public.js +43 -0
- package/dist/cjs/build-config/remote-address.js +58 -0
- package/dist/cjs/cloudflare/artifacts.js +8 -19
- package/dist/cjs/cloudflare/constants.js +1 -1
- package/dist/cjs/cloudflare/delivery-unit.js +23 -42
- package/dist/cjs/cloudflare/index.js +10 -2
- package/dist/cjs/cloudflare/worker-manifest.js +13 -4
- package/dist/cjs/cloudflare/wrangler-config.js +35 -7
- package/dist/cjs/cloudflare-builder.js +251 -75
- package/dist/cjs/cloudflare-output-contract.js +69 -3
- package/dist/cjs/cloudflare-output-verifier/identity.js +29 -27
- package/dist/cjs/cloudflare-output-verifier/index.js +10 -0
- package/dist/cjs/cloudflare-output-verifier/manifest.js +46 -0
- package/dist/cjs/cloudflare-output-verifier/mutation-policy.js +7 -1
- package/dist/cjs/cloudflare-output-verifier/worker-bundles.js +14 -6
- package/dist/cjs/config.js +34 -1
- package/dist/cjs/deploy-output/npmAliases.js +251 -0
- package/dist/cjs/deploy-output/plugin.js +97 -0
- package/dist/cjs/deploy-output/public-assets.js +146 -0
- package/dist/cjs/deploy-output/target.js +104 -0
- package/dist/cjs/deploy-output/trace-files.js +90 -0
- package/dist/cjs/native-type-checker.js +193 -0
- package/dist/cjs/policy-defaults.js +101 -0
- package/dist/cjs/release-envelope/framework-output.js +153 -79
- package/dist/cjs/release-envelope/index.js +10 -4
- package/dist/cjs/release-envelope/plugin.js +18 -13
- package/dist/cjs/release-identity.js +5 -6
- package/dist/cjs/runtime-package-resolution.js +118 -0
- package/dist/cjs/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
- package/dist/cjs/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
- package/dist/cjs/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/dist/cjs/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/esm/backend-federation-build/codegen.mjs +216 -0
- package/dist/esm/backend-federation-build/config.mjs +163 -0
- package/dist/esm/backend-federation-build/emit.mjs +103 -0
- package/dist/esm/backend-federation-build/index.mjs +1 -0
- package/dist/esm/build-config/build-environment.mjs +88 -0
- package/dist/esm/build-config/precompress/plugin.mjs +76 -0
- package/dist/esm/build-config/precompress/types.mjs +0 -0
- package/dist/esm/build-config/public.mjs +1 -0
- package/dist/esm/build-config/remote-address.mjs +20 -0
- package/dist/esm/cloudflare/artifacts.mjs +8 -19
- package/dist/esm/cloudflare/constants.mjs +1 -1
- package/dist/esm/cloudflare/delivery-unit.mjs +17 -36
- package/dist/esm/cloudflare/index.mjs +10 -2
- package/dist/esm/cloudflare/worker-manifest.mjs +13 -4
- package/dist/esm/cloudflare/wrangler-config.mjs +35 -7
- package/dist/esm/cloudflare-builder.mjs +245 -75
- package/dist/esm/cloudflare-output-contract.mjs +59 -2
- package/dist/esm/cloudflare-output-verifier/identity.mjs +27 -25
- package/dist/esm/cloudflare-output-verifier/index.mjs +10 -0
- package/dist/esm/cloudflare-output-verifier/manifest.mjs +46 -0
- package/dist/esm/cloudflare-output-verifier/mutation-policy.mjs +7 -1
- package/dist/esm/cloudflare-output-verifier/worker-bundles.mjs +15 -7
- package/dist/esm/config.mjs +3 -0
- package/dist/esm/deploy-output/npmAliases.mjs +199 -0
- package/dist/esm/deploy-output/plugin.mjs +46 -0
- package/dist/esm/deploy-output/public-assets.mjs +82 -0
- package/dist/esm/deploy-output/target.mjs +57 -0
- package/dist/esm/deploy-output/trace-files.mjs +38 -0
- package/dist/esm/native-type-checker.mjs +142 -0
- package/dist/esm/policy-defaults.mjs +45 -0
- package/dist/esm/release-envelope/framework-output.mjs +130 -56
- package/dist/esm/release-envelope/index.mjs +10 -4
- package/dist/esm/release-envelope/plugin.mjs +18 -13
- package/dist/esm/release-identity.mjs +5 -6
- package/dist/esm/runtime-package-resolution.mjs +60 -0
- package/dist/esm/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
- package/dist/esm/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
- package/dist/esm/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/dist/esm/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/esm-node/backend-federation-build/codegen.mjs +217 -0
- package/dist/esm-node/backend-federation-build/config.mjs +164 -0
- package/dist/esm-node/backend-federation-build/emit.mjs +104 -0
- package/dist/esm-node/backend-federation-build/index.mjs +2 -0
- package/dist/esm-node/build-config/build-environment.mjs +89 -0
- package/dist/esm-node/build-config/precompress/plugin.mjs +77 -0
- package/dist/esm-node/build-config/precompress/types.mjs +1 -0
- package/dist/esm-node/build-config/public.mjs +2 -0
- package/dist/esm-node/build-config/remote-address.mjs +21 -0
- package/dist/esm-node/cloudflare/artifacts.mjs +8 -19
- package/dist/esm-node/cloudflare/constants.mjs +1 -1
- package/dist/esm-node/cloudflare/delivery-unit.mjs +17 -36
- package/dist/esm-node/cloudflare/index.mjs +10 -2
- package/dist/esm-node/cloudflare/worker-manifest.mjs +13 -4
- package/dist/esm-node/cloudflare/wrangler-config.mjs +35 -7
- package/dist/esm-node/cloudflare-builder.mjs +245 -75
- package/dist/esm-node/cloudflare-output-contract.mjs +59 -2
- package/dist/esm-node/cloudflare-output-verifier/identity.mjs +27 -25
- package/dist/esm-node/cloudflare-output-verifier/index.mjs +10 -0
- package/dist/esm-node/cloudflare-output-verifier/manifest.mjs +46 -0
- package/dist/esm-node/cloudflare-output-verifier/mutation-policy.mjs +7 -1
- package/dist/esm-node/cloudflare-output-verifier/worker-bundles.mjs +15 -7
- package/dist/esm-node/config.mjs +3 -0
- package/dist/esm-node/deploy-output/npmAliases.mjs +200 -0
- package/dist/esm-node/deploy-output/plugin.mjs +49 -0
- package/dist/esm-node/deploy-output/public-assets.mjs +83 -0
- package/dist/esm-node/deploy-output/target.mjs +58 -0
- package/dist/esm-node/deploy-output/trace-files.mjs +39 -0
- package/dist/esm-node/native-type-checker.mjs +143 -0
- package/dist/esm-node/policy-defaults.mjs +46 -0
- package/dist/esm-node/release-envelope/framework-output.mjs +130 -56
- package/dist/esm-node/release-envelope/index.mjs +10 -4
- package/dist/esm-node/release-envelope/plugin.mjs +18 -13
- package/dist/esm-node/release-identity.mjs +5 -6
- package/dist/esm-node/runtime-package-resolution.mjs +61 -0
- package/dist/esm-node/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
- package/dist/esm-node/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
- package/dist/esm-node/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/dist/esm-node/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/types/backend-federation-build/codegen.d.ts +116 -0
- package/dist/types/backend-federation-build/config.d.ts +121 -0
- package/dist/types/backend-federation-build/emit.d.ts +21 -0
- package/dist/types/backend-federation-build/index.d.ts +2 -0
- package/dist/types/build-config/build-environment.d.ts +14 -0
- package/dist/types/build-config/precompress/plugin.d.ts +4 -0
- package/dist/types/build-config/precompress/types.d.ts +19 -0
- package/dist/types/build-config/public.d.ts +2 -0
- package/dist/types/build-config/remote-address.d.ts +3 -0
- package/dist/types/cloudflare/artifacts.d.ts +7 -6
- package/dist/types/cloudflare/constants.d.ts +1 -1
- package/dist/types/cloudflare/delivery-unit.d.ts +3 -3
- package/dist/types/cloudflare/worker-manifest.d.ts +2 -2
- package/dist/types/cloudflare/wrangler-config.d.ts +6 -0
- package/dist/types/cloudflare-builder.d.ts +49 -9
- package/dist/types/cloudflare-output-contract.d.ts +4 -1
- package/dist/types/cloudflare-output-verifier/identity.d.ts +1 -1
- package/dist/types/cloudflare-output-verifier/worker-bundles.d.ts +2 -2
- package/dist/types/config.d.ts +29 -1
- package/dist/types/deploy-output/npmAliases.d.ts +14 -0
- package/dist/types/deploy-output/plugin.d.ts +35 -0
- package/dist/types/deploy-output/public-assets.d.ts +51 -0
- package/dist/types/deploy-output/target.d.ts +29 -0
- package/dist/types/deploy-output/trace-files.d.ts +17 -0
- package/dist/types/native-type-checker.d.ts +15 -0
- package/dist/types/policy-defaults.d.ts +46 -0
- package/dist/types/precompress/LICENSE +20 -0
- package/dist/types/precompress/index.d.ts +76 -0
- package/dist/types/release-envelope/framework-output.d.ts +8 -3
- package/dist/types/release-envelope/plugin.d.ts +7 -7
- package/dist/types/runtime-package-resolution.d.ts +28 -0
- package/dist/types/templates/cloudflare-worker-route-data.d.mts +14 -0
- package/package.json +97 -15
- package/src/backend-federation-build/codegen.ts +254 -0
- package/src/backend-federation-build/config.ts +492 -0
- package/src/backend-federation-build/emit.ts +213 -0
- package/src/backend-federation-build/index.ts +2 -0
- package/src/build-config/build-environment.ts +160 -0
- package/src/build-config/precompress/plugin.ts +140 -0
- package/src/build-config/precompress/types.ts +26 -0
- package/src/build-config/public.ts +5 -0
- package/src/build-config/remote-address.ts +33 -0
- package/src/cloudflare/artifacts.ts +22 -43
- package/src/cloudflare/constants.ts +1 -1
- package/src/cloudflare/delivery-unit.ts +42 -53
- package/src/cloudflare/index.ts +24 -11
- package/src/cloudflare/worker-manifest.ts +20 -3
- package/src/cloudflare/wrangler-config.ts +86 -10
- package/src/cloudflare-builder.ts +472 -151
- package/src/cloudflare-output-contract.ts +70 -0
- package/src/cloudflare-output-verifier/identity.ts +5 -1
- package/src/cloudflare-output-verifier/index.ts +20 -0
- package/src/cloudflare-output-verifier/manifest.ts +77 -0
- package/src/cloudflare-output-verifier/mutation-policy.ts +11 -1
- package/src/cloudflare-output-verifier/worker-bundles.ts +32 -14
- package/src/config.ts +34 -6
- package/src/deploy-output/npmAliases.ts +382 -0
- package/src/deploy-output/plugin.ts +86 -0
- package/src/deploy-output/public-assets.ts +224 -0
- package/src/deploy-output/target.ts +106 -0
- package/src/deploy-output/trace-files.ts +67 -0
- package/src/native-type-checker.ts +183 -0
- package/src/policy-defaults.ts +127 -0
- package/src/release-envelope/framework-output.ts +346 -94
- package/src/release-envelope/index.ts +26 -5
- package/src/release-envelope/plugin.ts +43 -40
- package/src/release-identity.ts +13 -2
- package/src/runtime-package-resolution.ts +115 -0
- package/src/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/src/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
- package/src/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
- package/src/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/src/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/cjs/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/dist/cjs/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/dist/cjs/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
- package/dist/cjs/templates/cloudflare-worker-path.mjs +0 -98
- package/dist/esm/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/dist/esm/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/dist/esm/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
- package/dist/esm/templates/cloudflare-worker-path.mjs +0 -98
- package/dist/esm-node/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/dist/esm-node/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/dist/esm-node/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
- package/dist/esm-node/templates/cloudflare-worker-path.mjs +0 -98
- package/dist/types/templates/cloudflare-worker-fs-promises.d.mts +0 -5
- package/dist/types/templates/cloudflare-worker-loadable-server.d.mts +0 -48
- package/dist/types/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +0 -13
- package/dist/types/templates/cloudflare-worker-path.d.mts +0 -21
- package/src/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/src/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/src/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
- package/src/templates/cloudflare-worker-path.mjs +0 -98
|
@@ -46,6 +46,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
46
46
|
const external_node_path_namespaceObject = require("node:path");
|
|
47
47
|
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
48
48
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
49
|
+
const external_cloudflare_output_contract_js_namespaceObject = require("../cloudflare-output-contract.js");
|
|
49
50
|
const external_artifacts_js_namespaceObject = require("./artifacts.js");
|
|
50
51
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
51
52
|
const external_i18n_worker_js_namespaceObject = require("./i18n-worker.js");
|
|
@@ -111,13 +112,18 @@ const createWorkerManifest = async (outputDirectory, modernConfig, appContext, d
|
|
|
111
112
|
const routeSpec = await (0, external_artifacts_js_namespaceObject.readRouteSpec)(outputDirectory);
|
|
112
113
|
const routes = await Promise.all(routeSpec.routes.map(async (route)=>{
|
|
113
114
|
const worker = 'string' == typeof route.worker ? route.worker : void 0;
|
|
115
|
+
const routeDataWorker = route.isSSR && 'string' == typeof route.entryName ? `${external_constants_js_namespaceObject.WORKER_BUNDLE_DIRECTORY}/${(0, external_cloudflare_output_contract_js_namespaceObject.getCloudflareWorkerRouteDataEntryName)(route.entryName)}.js` : void 0;
|
|
116
|
+
const hasRouteDataWorker = routeDataWorker ? await utils_namespaceObject.fs.pathExists(external_node_path_default().join(outputDirectory, routeDataWorker)) : false;
|
|
114
117
|
return {
|
|
115
118
|
urlPath: route.urlPath,
|
|
116
119
|
entryName: route.entryName,
|
|
117
120
|
entryPath: route.entryPath,
|
|
118
121
|
isSSR: Boolean(route.isSSR),
|
|
119
122
|
worker,
|
|
120
|
-
workerExists: worker ? await utils_namespaceObject.fs.pathExists(external_node_path_default().join(outputDirectory, worker)) : false
|
|
123
|
+
workerExists: worker ? await utils_namespaceObject.fs.pathExists(external_node_path_default().join(outputDirectory, worker)) : false,
|
|
124
|
+
...hasRouteDataWorker ? {
|
|
125
|
+
routeDataWorker
|
|
126
|
+
} : {}
|
|
121
127
|
};
|
|
122
128
|
}));
|
|
123
129
|
const bffPrefix = modernConfig.bff?.prefix;
|
|
@@ -177,9 +183,12 @@ const createWorkerManifest = async (outputDirectory, modernConfig, appContext, d
|
|
|
177
183
|
};
|
|
178
184
|
const createWorkerModuleLoaders = (manifest)=>{
|
|
179
185
|
const imports = new Map();
|
|
180
|
-
for (const route of manifest.routeSpec.routes)
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
for (const route of manifest.routeSpec.routes)for (const worker of [
|
|
187
|
+
route.workerExists ? route.worker : void 0,
|
|
188
|
+
route.routeDataWorker
|
|
189
|
+
])if (worker) {
|
|
190
|
+
const importPath = `../${String(worker).replace(/^\/+/u, '')}`;
|
|
191
|
+
imports.set(worker, `() => import(${JSON.stringify(importPath)})`);
|
|
183
192
|
}
|
|
184
193
|
if (manifest.bff?.worker) {
|
|
185
194
|
const importPath = `../${String(manifest.bff.worker).replace(/^\/+/u, '')}`;
|
|
@@ -45,12 +45,16 @@ const external_node_path_namespaceObject = require("node:path");
|
|
|
45
45
|
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
46
46
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
47
47
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (
|
|
48
|
+
const assertSupportedCompatibilityDate = (compatibilityDate, label)=>{
|
|
49
|
+
if ('string' != typeof compatibilityDate) throw new Error(`${label} must be a YYYY-MM-DD string.`);
|
|
50
|
+
if (!external_constants_js_namespaceObject.COMPATIBILITY_DATE_PATTERN.test(compatibilityDate)) throw new Error(`${label} must use YYYY-MM-DD, received ${JSON.stringify(compatibilityDate)}.`);
|
|
51
|
+
if (compatibilityDate < external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE) throw new Error(`${label} must be ${external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE} or later, the date the Cloudflare worker Node.js built-in contract is verified against; received ${JSON.stringify(compatibilityDate)}.`);
|
|
52
52
|
return compatibilityDate;
|
|
53
53
|
};
|
|
54
|
+
const getCompatibilityDate = (modernConfig, wranglerCompatibilityDate)=>{
|
|
55
|
+
if (void 0 !== wranglerCompatibilityDate) return assertSupportedCompatibilityDate(wranglerCompatibilityDate, 'deploy.worker.wrangler.compatibility_date');
|
|
56
|
+
return assertSupportedCompatibilityDate(modernConfig.deploy?.worker?.compatibilityDate?.trim() || external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE, 'deploy.worker.compatibilityDate');
|
|
57
|
+
};
|
|
54
58
|
const getWorkerName = (appDirectory)=>{
|
|
55
59
|
const basename = external_node_path_default().basename(appDirectory);
|
|
56
60
|
return basename.replace(/[^a-zA-Z0-9-_]/g, '-') || 'modern-cloudflare-worker';
|
|
@@ -65,11 +69,11 @@ const getConfiguredWrangler = (modernConfig)=>{
|
|
|
65
69
|
if (!(0, external_utils_js_namespaceObject.isJsonRecord)(wrangler)) throw new Error('deploy.worker.wrangler must be a JSON object.');
|
|
66
70
|
return wrangler;
|
|
67
71
|
};
|
|
68
|
-
const createWranglerCompatibilityFlags = (configuredFlags)=>{
|
|
72
|
+
const createWranglerCompatibilityFlags = (configuredFlags, label = 'deploy.worker.wrangler.compatibility_flags')=>{
|
|
69
73
|
if (void 0 === configuredFlags) return [
|
|
70
74
|
...external_constants_js_namespaceObject.REQUIRED_COMPATIBILITY_FLAGS
|
|
71
75
|
];
|
|
72
|
-
if (!Array.isArray(configuredFlags) || configuredFlags.some((flag)=>'string' != typeof flag)) throw new Error(
|
|
76
|
+
if (!Array.isArray(configuredFlags) || configuredFlags.some((flag)=>'string' != typeof flag)) throw new Error(`${label} must be an array of strings.`);
|
|
73
77
|
return [
|
|
74
78
|
...new Set([
|
|
75
79
|
...configuredFlags,
|
|
@@ -77,6 +81,26 @@ const createWranglerCompatibilityFlags = (configuredFlags)=>{
|
|
|
77
81
|
])
|
|
78
82
|
];
|
|
79
83
|
};
|
|
84
|
+
const createWranglerEnvironments = (wranglerEnv)=>{
|
|
85
|
+
if (void 0 === wranglerEnv) return;
|
|
86
|
+
if (!(0, external_utils_js_namespaceObject.isJsonRecord)(wranglerEnv)) throw new Error('deploy.worker.wrangler.env must be an object.');
|
|
87
|
+
return Object.fromEntries(Object.entries(wranglerEnv).map(([name, environment])=>{
|
|
88
|
+
const label = `deploy.worker.wrangler.env.${name}`;
|
|
89
|
+
if (!(0, external_utils_js_namespaceObject.isJsonRecord)(environment)) throw new Error(`${label} must be an object.`);
|
|
90
|
+
return [
|
|
91
|
+
name,
|
|
92
|
+
{
|
|
93
|
+
...environment,
|
|
94
|
+
...void 0 === environment.compatibility_date ? {} : {
|
|
95
|
+
compatibility_date: assertSupportedCompatibilityDate(environment.compatibility_date, `${label}.compatibility_date`)
|
|
96
|
+
},
|
|
97
|
+
...void 0 === environment.compatibility_flags ? {} : {
|
|
98
|
+
compatibility_flags: createWranglerCompatibilityFlags(environment.compatibility_flags, `${label}.compatibility_flags`)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
];
|
|
102
|
+
}));
|
|
103
|
+
};
|
|
80
104
|
const createWranglerAssetsConfig = (configuredAssets)=>{
|
|
81
105
|
if (void 0 !== configuredAssets && !(0, external_utils_js_namespaceObject.isJsonRecord)(configuredAssets)) throw new Error('deploy.worker.wrangler.assets must be an object.');
|
|
82
106
|
return {
|
|
@@ -173,17 +197,21 @@ const createWorkerManifestServiceBindings = (serviceBindings)=>{
|
|
|
173
197
|
};
|
|
174
198
|
const createWranglerConfig = (appDirectory, modernConfig)=>{
|
|
175
199
|
const wrangler = getConfiguredWrangler(modernConfig);
|
|
200
|
+
const environments = createWranglerEnvironments(wrangler.env);
|
|
176
201
|
const d1Databases = createWranglerD1Databases(modernConfig, wrangler.d1_databases);
|
|
177
202
|
const serviceBindings = createWorkerServiceBindings(modernConfig, wrangler.services);
|
|
178
203
|
const wranglerServices = createWranglerServices(serviceBindings);
|
|
179
204
|
return {
|
|
180
205
|
$schema: 'node_modules/wrangler/config-schema.json',
|
|
181
206
|
name: getConfiguredWorkerName(appDirectory, modernConfig),
|
|
182
|
-
compatibility_date: getCompatibilityDate(modernConfig),
|
|
183
207
|
...wrangler,
|
|
208
|
+
compatibility_date: getCompatibilityDate(modernConfig, wrangler.compatibility_date),
|
|
184
209
|
main: external_constants_js_namespaceObject.WORKER_ENTRY,
|
|
185
210
|
compatibility_flags: createWranglerCompatibilityFlags(wrangler.compatibility_flags),
|
|
186
211
|
assets: createWranglerAssetsConfig(wrangler.assets),
|
|
212
|
+
...void 0 === environments ? {} : {
|
|
213
|
+
env: environments
|
|
214
|
+
},
|
|
187
215
|
...void 0 === d1Databases ? {} : {
|
|
188
216
|
d1_databases: d1Databases
|
|
189
217
|
},
|
|
@@ -41,9 +41,11 @@ var __webpack_exports__ = {};
|
|
|
41
41
|
__webpack_require__.r(__webpack_exports__);
|
|
42
42
|
__webpack_require__.d(__webpack_exports__, {
|
|
43
43
|
applyCloudflareBuilderEnvironments: ()=>applyCloudflareBuilderEnvironments,
|
|
44
|
-
applyCloudflareWorkerMfRuntimeBoundary: ()=>applyCloudflareWorkerMfRuntimeBoundary,
|
|
45
44
|
applyCloudflareWorkerRspackConfig: ()=>applyCloudflareWorkerRspackConfig,
|
|
45
|
+
claimsByFunctionExternal: ()=>claimsByFunctionExternal,
|
|
46
|
+
createAbsentOptionalDependencyFilter: ()=>createAbsentOptionalDependencyFilter,
|
|
46
47
|
createCloudflareBuilderPlugin: ()=>createCloudflareBuilderPlugin,
|
|
48
|
+
createRequestRedirectMatcher: ()=>createRequestRedirectMatcher,
|
|
47
49
|
getCloudflareBuilderEnvironments: ()=>getCloudflareBuilderEnvironments,
|
|
48
50
|
getCloudflareWorkerRspackConfig: ()=>getCloudflareWorkerRspackConfig
|
|
49
51
|
});
|
|
@@ -54,14 +56,50 @@ const external_node_path_namespaceObject = require("node:path");
|
|
|
54
56
|
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
55
57
|
const builder_namespaceObject = require("@modern-js/builder");
|
|
56
58
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
57
|
-
const external_std_env_namespaceObject = require("std-env");
|
|
58
59
|
const external_cloudflare_output_contract_js_namespaceObject = require("./cloudflare-output-contract.js");
|
|
59
60
|
const external_read_template_js_namespaceObject = require("./read-template.js");
|
|
60
61
|
const moduleRequire = (0, external_node_module_namespaceObject.createRequire)(__rslib_import_meta_url__);
|
|
61
62
|
const BFF_EFFECT_WORKER_ENTRY_NAME = '__modern_bff_effect';
|
|
62
63
|
const BFF_EFFECT_WORKER_RUNTIME_QUERY = 'modern-bff-runtime';
|
|
63
|
-
const
|
|
64
|
-
const
|
|
64
|
+
const SERVER_LOADER_COMBINED_FILE = 'server-loader-combined.js';
|
|
65
|
+
const ROUTE_SERVER_LOADERS_FILE = 'route-server-loaders.js';
|
|
66
|
+
const WORKER_ROUTE_DATA_FILE = 'cloudflare-worker-route-data.js';
|
|
67
|
+
const WORKER_ROUTE_DATA_TEMPLATE = 'cloudflare-worker-route-data.mjs';
|
|
68
|
+
const DATA_LOADER_CLIENT_TRANSFORM = /plugin-data-loader[\\/](?:.+[\\/])?loader\.[cm]?js$/u;
|
|
69
|
+
const WORKER_DEPENDENCY_CONDITIONS = [
|
|
70
|
+
[
|
|
71
|
+
'esm',
|
|
72
|
+
'import'
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
'wasm',
|
|
76
|
+
'import'
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
'loaderImport',
|
|
80
|
+
'import'
|
|
81
|
+
],
|
|
82
|
+
[
|
|
83
|
+
'worker',
|
|
84
|
+
'import'
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
'commonjs',
|
|
88
|
+
'require'
|
|
89
|
+
],
|
|
90
|
+
[
|
|
91
|
+
'amd',
|
|
92
|
+
'require'
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'loader',
|
|
96
|
+
'require'
|
|
97
|
+
],
|
|
98
|
+
[
|
|
99
|
+
'unknown',
|
|
100
|
+
'require'
|
|
101
|
+
]
|
|
102
|
+
];
|
|
65
103
|
const JS_OR_TS_EXTENSIONS = new Set([
|
|
66
104
|
'.js',
|
|
67
105
|
'.jsx',
|
|
@@ -121,19 +159,154 @@ const resolvePackageFile = (packageName, filePath, paths)=>{
|
|
|
121
159
|
const setAliasIfPresent = (alias, name, value)=>{
|
|
122
160
|
if (value) alias.set(name, value);
|
|
123
161
|
};
|
|
124
|
-
const getCloudflareWorkerNodeExternals = ()=>Object.fromEntries(
|
|
125
|
-
|
|
162
|
+
const getCloudflareWorkerNodeExternals = ()=>Object.fromEntries([
|
|
163
|
+
...external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
|
|
164
|
+
const nodeBuiltin = `node:${builtin}`;
|
|
165
|
+
const external = `module-import ${nodeBuiltin}`;
|
|
166
|
+
return (0, external_node_module_namespaceObject.isBuiltin)(builtin) ? [
|
|
167
|
+
[
|
|
168
|
+
builtin,
|
|
169
|
+
external
|
|
170
|
+
],
|
|
171
|
+
[
|
|
172
|
+
nodeBuiltin,
|
|
173
|
+
external
|
|
174
|
+
]
|
|
175
|
+
] : [
|
|
176
|
+
[
|
|
177
|
+
nodeBuiltin,
|
|
178
|
+
external
|
|
179
|
+
]
|
|
180
|
+
];
|
|
181
|
+
}),
|
|
182
|
+
...external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_WORKER_PLATFORM_MODULES.map((platformModule)=>[
|
|
183
|
+
platformModule,
|
|
184
|
+
`module-import ${platformModule}`
|
|
185
|
+
])
|
|
186
|
+
]);
|
|
187
|
+
const getPackageNameFromRequest = (request)=>{
|
|
188
|
+
if (request.startsWith('.') || request.startsWith('/') || request.includes(':') || external_node_path_default().isAbsolute(request)) return;
|
|
189
|
+
const segments = request.split('/');
|
|
190
|
+
return request.startsWith('@') ? segments.length > 1 ? `${segments[0]}/${segments[1]}` : void 0 : segments[0];
|
|
191
|
+
};
|
|
192
|
+
const isRedirectedByAliasField = (manifest, aliasFields, request)=>aliasFields.some((field)=>{
|
|
193
|
+
let value = manifest;
|
|
194
|
+
for (const key of 'string' == typeof field ? [
|
|
195
|
+
field
|
|
196
|
+
] : field)value = value && 'object' == typeof value ? value[key] : void 0;
|
|
197
|
+
return 'object' == typeof value && null !== value && Object.hasOwn(value, request);
|
|
198
|
+
});
|
|
199
|
+
const findOwningPackageManifest = (directory, cache)=>{
|
|
200
|
+
if (cache.has(directory)) return cache.get(directory);
|
|
201
|
+
let manifest;
|
|
202
|
+
const packageJsonPath = external_node_path_default().join(directory, 'package.json');
|
|
203
|
+
if (external_node_fs_default().existsSync(packageJsonPath)) try {
|
|
204
|
+
manifest = JSON.parse(external_node_fs_default().readFileSync(packageJsonPath, 'utf-8'));
|
|
205
|
+
} catch {
|
|
206
|
+
manifest = void 0;
|
|
207
|
+
}
|
|
208
|
+
else if (external_node_path_default().dirname(directory) !== directory) manifest = findOwningPackageManifest(external_node_path_default().dirname(directory), cache);
|
|
209
|
+
cache.set(directory, manifest);
|
|
210
|
+
return manifest;
|
|
211
|
+
};
|
|
212
|
+
const isPackageInstalled = (packageName, directory, moduleDirectories)=>moduleDirectories.some((moduleDirectory)=>{
|
|
213
|
+
if (external_node_path_default().isAbsolute(moduleDirectory)) return external_node_fs_default().existsSync(external_node_path_default().join(moduleDirectory, packageName));
|
|
214
|
+
let current = directory;
|
|
215
|
+
while(true){
|
|
216
|
+
if (external_node_fs_default().existsSync(external_node_path_default().join(current, moduleDirectory, packageName))) return true;
|
|
217
|
+
const parent = external_node_path_default().dirname(current);
|
|
218
|
+
if (parent === current) return false;
|
|
219
|
+
current = parent;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
const createAbsentOptionalDependencyFilter = (isRedirected = ()=>false, moduleDirectories = [
|
|
223
|
+
'node_modules'
|
|
224
|
+
], aliasFields = [])=>{
|
|
225
|
+
const manifests = new Map();
|
|
226
|
+
return (request, context)=>{
|
|
227
|
+
const packageName = getPackageNameFromRequest(request);
|
|
228
|
+
if (!packageName || !context || isRedirected(request)) return false;
|
|
229
|
+
const manifest = findOwningPackageManifest(context, manifests);
|
|
230
|
+
if (!manifest) return false;
|
|
231
|
+
const optional = manifest.peerDependenciesMeta?.[packageName]?.optional === true || Object.hasOwn(manifest.optionalDependencies ?? {}, packageName);
|
|
232
|
+
return optional && !isRedirectedByAliasField(manifest, aliasFields, request) && !isPackageInstalled(packageName, context, moduleDirectories);
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
const getAliasNames = (alias)=>alias ? Array.isArray(alias) ? alias.map((entry)=>entry.onlyModule ? `${entry.name}$` : entry.name) : Object.keys(alias) : [];
|
|
236
|
+
const getExternalMatchers = (externals)=>{
|
|
237
|
+
if (Array.isArray(externals)) return externals.flatMap(getExternalMatchers);
|
|
238
|
+
if ('string' == typeof externals) return [
|
|
239
|
+
(request)=>request === externals
|
|
240
|
+
];
|
|
241
|
+
if (externals instanceof RegExp) return [
|
|
242
|
+
(request)=>{
|
|
243
|
+
externals.lastIndex = 0;
|
|
244
|
+
return externals.test(request);
|
|
245
|
+
}
|
|
246
|
+
];
|
|
247
|
+
if (externals && 'object' == typeof externals) {
|
|
248
|
+
const names = new Set(Object.entries(externals).filter(([, value])=>false !== value).map(([name])=>name));
|
|
126
249
|
return [
|
|
127
|
-
|
|
128
|
-
builtin,
|
|
129
|
-
`module-import ${nodeBuiltin}`
|
|
130
|
-
],
|
|
131
|
-
[
|
|
132
|
-
nodeBuiltin,
|
|
133
|
-
`module-import ${nodeBuiltin}`
|
|
134
|
-
]
|
|
250
|
+
(request)=>names.has(request)
|
|
135
251
|
];
|
|
136
|
-
}
|
|
252
|
+
}
|
|
253
|
+
return [];
|
|
254
|
+
};
|
|
255
|
+
const createRequestRedirectMatcher = (options)=>{
|
|
256
|
+
const aliasNames = [
|
|
257
|
+
...getAliasNames(options.resolve?.alias),
|
|
258
|
+
...getAliasNames(options.resolve?.fallback)
|
|
259
|
+
];
|
|
260
|
+
const externalMatchers = getExternalMatchers(options.externals);
|
|
261
|
+
return (request)=>externalMatchers.some((matches)=>matches(request)) || aliasNames.some((name)=>name.endsWith('$') ? request === name.slice(0, -1) : request === name || request.startsWith(`${name}/`));
|
|
262
|
+
};
|
|
263
|
+
const getFunctionExternals = (externals)=>Array.isArray(externals) ? externals.flatMap(getFunctionExternals) : 'function' == typeof externals ? [
|
|
264
|
+
externals
|
|
265
|
+
] : [];
|
|
266
|
+
const callFunctionExternal = (external, data)=>new Promise((resolve, reject)=>{
|
|
267
|
+
const returned = external(data, (error, result)=>error ? reject(error) : resolve(result));
|
|
268
|
+
if (null !== returned && 'object' == typeof returned && 'function' == typeof returned.then) returned.then(resolve, reject);
|
|
269
|
+
else if (1 === external.length) resolve(returned);
|
|
270
|
+
});
|
|
271
|
+
const claimsByFunctionExternal = async (externals, data)=>{
|
|
272
|
+
for (const external of externals)try {
|
|
273
|
+
const result = await callFunctionExternal(external, data);
|
|
274
|
+
if (null != result && false !== result) return true;
|
|
275
|
+
} catch {
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
return false;
|
|
279
|
+
};
|
|
280
|
+
const PLUGIN_NAME = 'AbsentOptionalDependencyPlugin';
|
|
281
|
+
class AbsentOptionalDependencyPlugin {
|
|
282
|
+
apply(compiler) {
|
|
283
|
+
const isAbsent = createAbsentOptionalDependencyFilter(createRequestRedirectMatcher(compiler.options), compiler.options.resolve.modules, compiler.options.resolve.aliasFields);
|
|
284
|
+
const functionExternals = getFunctionExternals(compiler.options.externals);
|
|
285
|
+
compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, (factory)=>{
|
|
286
|
+
factory.hooks.beforeResolve.tapPromise(PLUGIN_NAME, async (data)=>{
|
|
287
|
+
if (!isAbsent(data.request, data.context)) return;
|
|
288
|
+
const claimed = await claimsByFunctionExternal(functionExternals, {
|
|
289
|
+
context: data.context,
|
|
290
|
+
contextInfo: {
|
|
291
|
+
issuer: data.contextInfo.issuer,
|
|
292
|
+
issuerLayer: data.contextInfo.issuerLayer ?? null
|
|
293
|
+
},
|
|
294
|
+
getResolve: (options)=>{
|
|
295
|
+
const resolver = factory.getResolver('normal', options ?? {});
|
|
296
|
+
return (context, request, callback)=>{
|
|
297
|
+
if (callback) return void resolver.resolve({}, context, request, {}, callback);
|
|
298
|
+
return new Promise((resolve, reject)=>{
|
|
299
|
+
resolver.resolve({}, context, request, {}, (error, result)=>error ? reject(error) : resolve(result || void 0));
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
},
|
|
303
|
+
request: data.request
|
|
304
|
+
});
|
|
305
|
+
return claimed ? void 0 : false;
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
137
310
|
const normalizeWorkerOutputName = (name)=>external_node_path_default().posix.normalize(name.replace(/\\/gu, '/')).toLowerCase();
|
|
138
311
|
const reserveWorkerChunkName = (baseName, reservedOutputNames)=>{
|
|
139
312
|
let name = baseName;
|
|
@@ -183,11 +356,8 @@ function applyCloudflareWorkerRspackConfig(chain, workerEntryNames) {
|
|
|
183
356
|
chain.optimization.runtimeChunk(config.optimization.runtimeChunk);
|
|
184
357
|
chain.optimization.splitChunks(config.optimization.splitChunks);
|
|
185
358
|
}
|
|
186
|
-
function
|
|
187
|
-
const
|
|
188
|
-
chain.plugins.delete('plugin-module-federation');
|
|
189
|
-
chain.resolve.alias.set(`${MF_SSR_DATA_FETCH_RUNTIME_PLUGIN}$`, runtimePlugin);
|
|
190
|
-
chain.resolve.alias.set(`${MF_SSR_DEV_RUNTIME_PLUGIN}$`, runtimePlugin);
|
|
359
|
+
function removeCloudflareWorkerDataLoaderClientTransform(chain) {
|
|
360
|
+
for (const [name, rule] of Object.entries(chain.module.rules.entries() ?? {}))if (rule.uses.values().some((use)=>DATA_LOADER_CLIENT_TRANSFORM.test(String(use.get('loader'))))) chain.module.rules.delete(name);
|
|
191
361
|
}
|
|
192
362
|
const getEffectBffEntry = (normalizedConfig, appContext)=>{
|
|
193
363
|
if (!normalizedConfig.bff || 'hono' === normalizedConfig.bff.runtimeFramework) return;
|
|
@@ -198,18 +368,6 @@ const getEffectBffEntry = (normalizedConfig, appContext)=>{
|
|
|
198
368
|
}
|
|
199
369
|
return resolveJsOrTsEntry(external_node_path_default().resolve(appContext.apiDirectory, 'index'));
|
|
200
370
|
};
|
|
201
|
-
const CLOUDFLARE_DEPLOY_PROVIDERS = new Set([
|
|
202
|
-
'cloudflare',
|
|
203
|
-
'cloudflare_pages',
|
|
204
|
-
'cloudflare_workers'
|
|
205
|
-
]);
|
|
206
|
-
const resolveStdEnvDeployProvider = ()=>external_std_env_namespaceObject.provider;
|
|
207
|
-
const isCloudflareWorkerDeploy = (normalizedConfig, resolveDeployProvider)=>{
|
|
208
|
-
const explicitTarget = normalizedConfig.deploy?.target || process.env.MODERNJS_DEPLOY;
|
|
209
|
-
if (explicitTarget) return 'cloudflare' === explicitTarget;
|
|
210
|
-
const detectedProvider = resolveDeployProvider();
|
|
211
|
-
return detectedProvider ? CLOUDFLARE_DEPLOY_PROVIDERS.has(detectedProvider) : false;
|
|
212
|
-
};
|
|
213
371
|
const rewriteWorkerEntryPath = (entry)=>entry.replace('index.jsx', 'index.server.jsx').replace('bootstrap.server.jsx', 'index.server.jsx').replace('bootstrap.jsx', 'index.server.jsx');
|
|
214
372
|
const rewriteWorkerEntryDescription = (description)=>{
|
|
215
373
|
const entryImport = description.import;
|
|
@@ -254,11 +412,40 @@ const prependBundlerChain = (environment, handler)=>{
|
|
|
254
412
|
}
|
|
255
413
|
};
|
|
256
414
|
};
|
|
415
|
+
const createWorkerRouteDataModule = ()=>[
|
|
416
|
+
`import { routes } from './${ROUTE_SERVER_LOADERS_FILE}';`,
|
|
417
|
+
`import { createRouteDataRequestHandler } from ${JSON.stringify((0, external_read_template_js_namespaceObject.getTemplatePath)(WORKER_ROUTE_DATA_TEMPLATE))};`,
|
|
418
|
+
'',
|
|
419
|
+
`export const ${external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT} =`,
|
|
420
|
+
' createRouteDataRequestHandler(routes);',
|
|
421
|
+
''
|
|
422
|
+
].join('\n');
|
|
423
|
+
const getWorkerRouteDataEntries = (appContext)=>{
|
|
424
|
+
const { entrypoints, internalDirectory } = appContext;
|
|
425
|
+
if (!entrypoints || !internalDirectory) return {};
|
|
426
|
+
return Object.fromEntries(entrypoints.flatMap(({ entryName })=>{
|
|
427
|
+
const entryDirectory = external_node_path_default().join(internalDirectory, entryName);
|
|
428
|
+
if (!external_node_fs_default().existsSync(external_node_path_default().join(entryDirectory, SERVER_LOADER_COMBINED_FILE)) || !external_node_fs_default().existsSync(external_node_path_default().join(entryDirectory, ROUTE_SERVER_LOADERS_FILE))) return [];
|
|
429
|
+
const routeDataFile = external_node_path_default().join(entryDirectory, WORKER_ROUTE_DATA_FILE);
|
|
430
|
+
external_node_fs_default().writeFileSync(routeDataFile, createWorkerRouteDataModule());
|
|
431
|
+
return [
|
|
432
|
+
[
|
|
433
|
+
(0, external_cloudflare_output_contract_js_namespaceObject.getCloudflareWorkerRouteDataEntryName)(entryName),
|
|
434
|
+
[
|
|
435
|
+
routeDataFile
|
|
436
|
+
]
|
|
437
|
+
]
|
|
438
|
+
];
|
|
439
|
+
}));
|
|
440
|
+
};
|
|
257
441
|
const getWorkerEntries = (environment, normalizedConfig, appContext)=>{
|
|
258
442
|
const configuredEntries = environment.source?.entry;
|
|
259
|
-
if (!configuredEntries) return;
|
|
260
|
-
const entries = rewriteWorkerEntries(configuredEntries);
|
|
261
443
|
const effectApiEntry = getEffectBffEntry(normalizedConfig, appContext);
|
|
444
|
+
if (!configuredEntries && !effectApiEntry) return;
|
|
445
|
+
const entries = configuredEntries ? {
|
|
446
|
+
...rewriteWorkerEntries(configuredEntries),
|
|
447
|
+
...getWorkerRouteDataEntries(appContext)
|
|
448
|
+
} : {};
|
|
262
449
|
return effectApiEntry ? {
|
|
263
450
|
...entries,
|
|
264
451
|
[BFF_EFFECT_WORKER_ENTRY_NAME]: [
|
|
@@ -271,9 +458,6 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
|
|
|
271
458
|
appContext.appDirectory,
|
|
272
459
|
process.cwd()
|
|
273
460
|
];
|
|
274
|
-
const tanstackRouterSsrServerFile = resolvePackageFile('@tanstack/router-core', 'dist/esm/ssr/ssr-server.js', resolvePaths);
|
|
275
|
-
const runtimeRscWorkerFile = resolvePackageFile('@modern-js/runtime', 'dist/esm/rsc/server.worker.mjs', resolvePaths);
|
|
276
|
-
const renderRscWorkerFile = resolvePackageFile('@modern-js/render', 'dist/esm/rscWorker.mjs', resolvePaths);
|
|
277
461
|
const reactFile = resolvePackageFile('react', 'index.js', resolvePaths);
|
|
278
462
|
const reactJsxRuntimeFile = resolvePackageFile('react', 'jsx-runtime.js', resolvePaths);
|
|
279
463
|
const reactJsxDevRuntimeFile = resolvePackageFile('react', 'jsx-dev-runtime.js', resolvePaths);
|
|
@@ -283,14 +467,12 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
|
|
|
283
467
|
...resolvePaths,
|
|
284
468
|
(0, external_read_template_js_namespaceObject.getTemplatePath)('')
|
|
285
469
|
]);
|
|
286
|
-
const loadableServerWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-loadable-server.mjs');
|
|
287
|
-
const fsPromisesWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-fs-promises.mjs');
|
|
288
|
-
const pathWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-path.mjs');
|
|
289
470
|
const entryNames = [
|
|
290
471
|
...workerEntryNames
|
|
291
472
|
];
|
|
292
473
|
return (chain)=>{
|
|
293
474
|
applyCloudflareWorkerRspackConfig(chain, entryNames);
|
|
475
|
+
removeCloudflareWorkerDataLoaderClientTransform(chain);
|
|
294
476
|
chain.output.module(true).library({
|
|
295
477
|
type: 'module'
|
|
296
478
|
}).publicPath('/').chunkFormat('module').chunkLoading('import').workerChunkLoading('import');
|
|
@@ -299,46 +481,34 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
|
|
|
299
481
|
'worker',
|
|
300
482
|
'webpack',
|
|
301
483
|
(0, utils_namespaceObject.isProd)() ? 'production' : 'development',
|
|
302
|
-
'import',
|
|
303
|
-
'require',
|
|
304
484
|
'module'
|
|
305
485
|
])chain.resolve.conditionNames.add(condition);
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
}
|
|
315
|
-
if (renderRscWorkerFile) {
|
|
316
|
-
chain.resolve.alias.set('@modern-js/render/rsc$', renderRscWorkerFile);
|
|
317
|
-
chain.resolve.alias.set('@modern-js/render/rsc', renderRscWorkerFile);
|
|
318
|
-
chain.resolve.alias.set('@modern-js/render/rsc-worker$', renderRscWorkerFile);
|
|
319
|
-
}
|
|
486
|
+
for (const [dependencyType, condition] of WORKER_DEPENDENCY_CONDITIONS)chain.resolve.byDependency.set(dependencyType, {
|
|
487
|
+
conditionNames: [
|
|
488
|
+
condition,
|
|
489
|
+
'...'
|
|
490
|
+
]
|
|
491
|
+
});
|
|
492
|
+
chain.plugin('cloudflare-worker-absent-optional-dependencies').use(AbsentOptionalDependencyPlugin);
|
|
493
|
+
chain.plugins.delete('plugin-module-federation');
|
|
320
494
|
setAliasIfPresent(chain.resolve.alias, 'react$', reactFile);
|
|
321
495
|
setAliasIfPresent(chain.resolve.alias, 'react/jsx-runtime$', reactJsxRuntimeFile);
|
|
322
496
|
setAliasIfPresent(chain.resolve.alias, 'react/jsx-dev-runtime$', reactJsxDevRuntimeFile);
|
|
323
497
|
setAliasIfPresent(chain.resolve.alias, 'react-dom$', reactDomFile);
|
|
324
498
|
setAliasIfPresent(chain.resolve.alias, 'react-dom/server.edge$', reactDomServerEdgeFile);
|
|
325
499
|
setAliasIfPresent(chain.resolve.alias, '@loadable/component$', loadableComponentFile);
|
|
326
|
-
setAliasIfPresent(chain.resolve.alias, '@loadable/server$', loadableServerWorkerFile);
|
|
327
|
-
setAliasIfPresent(chain.resolve.alias, 'fs/promises$', fsPromisesWorkerFile);
|
|
328
|
-
setAliasIfPresent(chain.resolve.alias, 'node:fs/promises$', fsPromisesWorkerFile);
|
|
329
|
-
setAliasIfPresent(chain.resolve.alias, 'path$', pathWorkerFile);
|
|
330
|
-
setAliasIfPresent(chain.resolve.alias, 'node:path$', pathWorkerFile);
|
|
331
|
-
chain.resolve.alias.set('react-server-dom-rspack/server.node$', 'react-server-dom-rspack/server.edge');
|
|
332
|
-
chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
|
|
333
|
-
chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
|
|
334
|
-
chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
|
|
335
|
-
chain.resolve.fallback.set('fs', false);
|
|
336
|
-
chain.resolve.fallback.set('node:fs', false);
|
|
337
500
|
};
|
|
338
501
|
};
|
|
339
|
-
function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig
|
|
340
|
-
if (
|
|
341
|
-
const workerEnvironment = environments[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME]
|
|
502
|
+
function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig }) {
|
|
503
|
+
if (appContext.deployTarget?.target !== 'cloudflare') return environments;
|
|
504
|
+
const workerEnvironment = environments[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME] ?? (appContext.apiOnly ? {
|
|
505
|
+
output: {
|
|
506
|
+
target: 'web-worker'
|
|
507
|
+
},
|
|
508
|
+
source: {
|
|
509
|
+
entry: {}
|
|
510
|
+
}
|
|
511
|
+
} : void 0);
|
|
342
512
|
if (!workerEnvironment) return environments;
|
|
343
513
|
const workerEntries = getWorkerEntries(workerEnvironment, normalizedConfig, appContext);
|
|
344
514
|
if (!workerEntries) return environments;
|
|
@@ -354,6 +524,9 @@ function getCloudflareBuilderEnvironments({ appContext, environments, normalized
|
|
|
354
524
|
entry: workerEntries
|
|
355
525
|
}
|
|
356
526
|
}, createCloudflareBundlerChain(appContext, Object.keys(workerEntries)));
|
|
527
|
+
if (appContext.apiOnly) return {
|
|
528
|
+
[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME]: cloudflareWorkerEnvironment
|
|
529
|
+
};
|
|
357
530
|
return {
|
|
358
531
|
...environments,
|
|
359
532
|
[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME]: cloudflareWorkerEnvironment
|
|
@@ -364,28 +537,31 @@ function applyCloudflareBuilderEnvironments(options) {
|
|
|
364
537
|
environments: getCloudflareBuilderEnvironments(options)
|
|
365
538
|
};
|
|
366
539
|
}
|
|
367
|
-
const createCloudflareBuilderPlugin = (
|
|
540
|
+
const createCloudflareBuilderPlugin = ()=>({
|
|
368
541
|
name: '@modern-js/cloudflare-builder',
|
|
369
542
|
setup (api) {
|
|
370
543
|
api.modifyBuilderEnvironments(({ environments })=>applyCloudflareBuilderEnvironments({
|
|
371
544
|
appContext: api.getAppContext(),
|
|
372
545
|
environments,
|
|
373
|
-
normalizedConfig: api.getNormalizedConfig()
|
|
374
|
-
resolveDeployProvider
|
|
546
|
+
normalizedConfig: api.getNormalizedConfig()
|
|
375
547
|
}));
|
|
376
548
|
}
|
|
377
549
|
});
|
|
378
550
|
exports.applyCloudflareBuilderEnvironments = __webpack_exports__.applyCloudflareBuilderEnvironments;
|
|
379
|
-
exports.applyCloudflareWorkerMfRuntimeBoundary = __webpack_exports__.applyCloudflareWorkerMfRuntimeBoundary;
|
|
380
551
|
exports.applyCloudflareWorkerRspackConfig = __webpack_exports__.applyCloudflareWorkerRspackConfig;
|
|
552
|
+
exports.claimsByFunctionExternal = __webpack_exports__.claimsByFunctionExternal;
|
|
553
|
+
exports.createAbsentOptionalDependencyFilter = __webpack_exports__.createAbsentOptionalDependencyFilter;
|
|
381
554
|
exports.createCloudflareBuilderPlugin = __webpack_exports__.createCloudflareBuilderPlugin;
|
|
555
|
+
exports.createRequestRedirectMatcher = __webpack_exports__.createRequestRedirectMatcher;
|
|
382
556
|
exports.getCloudflareBuilderEnvironments = __webpack_exports__.getCloudflareBuilderEnvironments;
|
|
383
557
|
exports.getCloudflareWorkerRspackConfig = __webpack_exports__.getCloudflareWorkerRspackConfig;
|
|
384
558
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
385
559
|
"applyCloudflareBuilderEnvironments",
|
|
386
|
-
"applyCloudflareWorkerMfRuntimeBoundary",
|
|
387
560
|
"applyCloudflareWorkerRspackConfig",
|
|
561
|
+
"claimsByFunctionExternal",
|
|
562
|
+
"createAbsentOptionalDependencyFilter",
|
|
388
563
|
"createCloudflareBuilderPlugin",
|
|
564
|
+
"createRequestRedirectMatcher",
|
|
389
565
|
"getCloudflareBuilderEnvironments",
|
|
390
566
|
"getCloudflareWorkerRspackConfig"
|
|
391
567
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|