@bleedingdev/modern-js-app-tools-extensions 3.9.0-ultramodern.9 → 3.9.3-ultramodern.2
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/README.md +23 -0
- package/dist/cjs/backend-federation-build/codegen.js +29 -18
- package/dist/cjs/backend-federation-build/config.js +84 -45
- package/dist/cjs/backend-federation-build/emit.js +63 -22
- package/dist/cjs/build-config/build-environment.js +25 -162
- package/dist/cjs/build-config/internal-effect-discovery.js +143 -0
- package/dist/cjs/build-config/public.js +2 -5
- package/dist/cjs/build-config/remote-address.js +58 -0
- package/dist/cjs/cloudflare/artifacts.js +8 -19
- package/dist/cjs/cloudflare/delivery-unit.js +125 -43
- package/dist/cjs/cloudflare/index.js +14 -4
- package/dist/cjs/cloudflare/native-renderer.js +100 -0
- package/dist/cjs/cloudflare/renderer-identity.js +106 -0
- package/dist/cjs/cloudflare/worker-manifest.js +54 -13
- package/dist/cjs/cloudflare/worker-options.js +48 -0
- package/dist/cjs/cloudflare/wrangler-config.js +210 -13
- package/dist/cjs/cloudflare-builder.js +307 -89
- package/dist/cjs/cloudflare-output-contract.js +36 -4
- package/dist/cjs/cloudflare-output-verifier/identity.js +112 -23
- 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 +10 -5
- package/dist/cjs/config.js +10 -5
- package/dist/cjs/deploy-output/npmAliases.js +92 -6
- package/dist/cjs/deploy-output/plugin.js +27 -6
- package/dist/cjs/deploy-output/public-assets.js +146 -0
- package/dist/cjs/deploy-output/target.js +57 -1
- package/dist/cjs/deploy-output/trace-files.js +99 -0
- package/dist/cjs/module-federation-config/exposes.js +70 -0
- package/dist/cjs/module-federation-config/index.js +73 -0
- package/dist/cjs/module-federation-config/inspect.js +103 -0
- package/dist/cjs/module-federation-config/object-literal.js +87 -0
- package/dist/cjs/module-federation-config/syntax.js +151 -0
- package/dist/cjs/module-federation-config/types.js +18 -0
- package/dist/cjs/native-type-checker.js +130 -13
- package/dist/cjs/policy-defaults.js +38 -29
- package/dist/cjs/release-envelope/canonical.js +2 -9
- package/dist/cjs/release-envelope/contract.js +68 -0
- package/dist/cjs/release-envelope/framework-output.js +296 -105
- package/dist/cjs/release-envelope/index.js +150 -36
- package/dist/cjs/release-envelope/plugin.js +24 -15
- package/dist/cjs/release-envelope/renderer-output-stamp.js +170 -0
- package/dist/cjs/release-envelope/types.js +10 -8
- package/dist/cjs/release-identity.js +8 -5
- package/dist/cjs/renderer-build-identity.js +134 -0
- package/dist/cjs/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
- package/dist/cjs/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
- package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
- package/dist/cjs/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
- package/dist/cjs/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
- package/dist/cjs/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/cjs/workspace-topology.js +84 -0
- package/dist/esm/backend-federation-build/codegen.mjs +29 -18
- package/dist/esm/backend-federation-build/config.mjs +74 -38
- package/dist/esm/backend-federation-build/emit.mjs +64 -23
- package/dist/esm/build-config/build-environment.mjs +26 -160
- package/dist/esm/build-config/internal-effect-discovery.mjs +102 -0
- package/dist/esm/build-config/public.mjs +1 -1
- package/dist/esm/build-config/remote-address.mjs +20 -0
- package/dist/esm/cloudflare/artifacts.mjs +8 -19
- package/dist/esm/cloudflare/delivery-unit.mjs +124 -45
- package/dist/esm/cloudflare/index.mjs +15 -5
- package/dist/esm/cloudflare/native-renderer.mjs +48 -0
- package/dist/esm/cloudflare/renderer-identity.mjs +57 -0
- package/dist/esm/cloudflare/worker-manifest.mjs +55 -14
- package/dist/esm/cloudflare/worker-options.mjs +10 -0
- package/dist/esm/cloudflare/wrangler-config.mjs +203 -12
- package/dist/esm/cloudflare-builder.mjs +301 -89
- package/dist/esm/cloudflare-output-contract.mjs +29 -3
- package/dist/esm/cloudflare-output-verifier/identity.mjs +113 -24
- 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 +11 -6
- package/dist/esm/config.mjs +3 -1
- package/dist/esm/deploy-output/npmAliases.mjs +92 -6
- package/dist/esm/deploy-output/plugin.mjs +24 -6
- package/dist/esm/deploy-output/public-assets.mjs +82 -0
- package/dist/esm/deploy-output/target.mjs +50 -3
- package/dist/esm/deploy-output/trace-files.mjs +47 -0
- package/dist/esm/module-federation-config/exposes.mjs +18 -0
- package/dist/esm/module-federation-config/index.mjs +4 -0
- package/dist/esm/module-federation-config/inspect.mjs +65 -0
- package/dist/esm/module-federation-config/object-literal.mjs +43 -0
- package/dist/esm/module-federation-config/syntax.mjs +101 -0
- package/dist/esm/module-federation-config/types.mjs +0 -0
- package/dist/esm/native-type-checker.mjs +124 -13
- package/dist/esm/policy-defaults.mjs +36 -30
- package/dist/esm/release-envelope/canonical.mjs +2 -9
- package/dist/esm/release-envelope/contract.mjs +21 -0
- package/dist/esm/release-envelope/framework-output.mjs +297 -106
- package/dist/esm/release-envelope/index.mjs +149 -38
- package/dist/esm/release-envelope/plugin.mjs +24 -15
- package/dist/esm/release-envelope/renderer-output-stamp.mjs +112 -0
- package/dist/esm/release-envelope/types.mjs +2 -3
- package/dist/esm/release-identity.mjs +8 -5
- package/dist/esm/renderer-build-identity.mjs +82 -0
- package/dist/esm/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
- package/dist/esm/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
- package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
- package/dist/esm/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
- package/dist/esm/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
- package/dist/esm/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/esm/workspace-topology.mjs +21 -0
- package/dist/esm-node/backend-federation-build/codegen.mjs +29 -18
- package/dist/esm-node/backend-federation-build/config.mjs +74 -38
- package/dist/esm-node/backend-federation-build/emit.mjs +64 -23
- package/dist/esm-node/build-config/build-environment.mjs +26 -160
- package/dist/esm-node/build-config/internal-effect-discovery.mjs +103 -0
- package/dist/esm-node/build-config/public.mjs +1 -1
- 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/delivery-unit.mjs +124 -45
- package/dist/esm-node/cloudflare/index.mjs +15 -5
- package/dist/esm-node/cloudflare/native-renderer.mjs +49 -0
- package/dist/esm-node/cloudflare/renderer-identity.mjs +58 -0
- package/dist/esm-node/cloudflare/worker-manifest.mjs +55 -14
- package/dist/esm-node/cloudflare/worker-options.mjs +11 -0
- package/dist/esm-node/cloudflare/wrangler-config.mjs +203 -12
- package/dist/esm-node/cloudflare-builder.mjs +301 -89
- package/dist/esm-node/cloudflare-output-contract.mjs +29 -3
- package/dist/esm-node/cloudflare-output-verifier/identity.mjs +113 -24
- 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 +11 -6
- package/dist/esm-node/config.mjs +3 -1
- package/dist/esm-node/deploy-output/npmAliases.mjs +92 -6
- package/dist/esm-node/deploy-output/plugin.mjs +24 -6
- package/dist/esm-node/deploy-output/public-assets.mjs +83 -0
- package/dist/esm-node/deploy-output/target.mjs +50 -3
- package/dist/esm-node/deploy-output/trace-files.mjs +48 -0
- package/dist/esm-node/module-federation-config/exposes.mjs +19 -0
- package/dist/esm-node/module-federation-config/index.mjs +5 -0
- package/dist/esm-node/module-federation-config/inspect.mjs +66 -0
- package/dist/esm-node/module-federation-config/object-literal.mjs +44 -0
- package/dist/esm-node/module-federation-config/syntax.mjs +102 -0
- package/dist/esm-node/module-federation-config/types.mjs +1 -0
- package/dist/esm-node/native-type-checker.mjs +124 -13
- package/dist/esm-node/policy-defaults.mjs +36 -30
- package/dist/esm-node/release-envelope/canonical.mjs +2 -9
- package/dist/esm-node/release-envelope/contract.mjs +22 -0
- package/dist/esm-node/release-envelope/framework-output.mjs +297 -106
- package/dist/esm-node/release-envelope/index.mjs +149 -38
- package/dist/esm-node/release-envelope/plugin.mjs +24 -15
- package/dist/esm-node/release-envelope/renderer-output-stamp.mjs +113 -0
- package/dist/esm-node/release-envelope/types.mjs +2 -3
- package/dist/esm-node/release-identity.mjs +8 -5
- package/dist/esm-node/renderer-build-identity.mjs +83 -0
- package/dist/esm-node/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
- package/dist/esm-node/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
- package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
- package/dist/esm-node/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
- package/dist/esm-node/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
- package/dist/esm-node/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/esm-node/workspace-topology.mjs +22 -0
- package/dist/types/backend-federation-build/codegen.d.ts +30 -0
- package/dist/types/backend-federation-build/config.d.ts +10 -57
- package/dist/types/backend-federation-build/emit.d.ts +12 -2
- package/dist/types/backend-federation-build/index.d.ts +1 -1
- package/dist/types/build-config/build-environment.d.ts +1 -9
- package/dist/types/build-config/internal-effect-discovery.d.ts +4 -0
- package/dist/types/build-config/public.d.ts +1 -1
- 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 +38 -7
- package/dist/types/cloudflare/native-renderer.d.ts +30 -0
- package/dist/types/cloudflare/renderer-identity.d.ts +25 -0
- package/dist/types/cloudflare/worker-manifest.d.ts +17 -2
- package/dist/types/cloudflare/worker-options.d.ts +20 -0
- package/dist/types/cloudflare/wrangler-config.d.ts +55 -2
- package/dist/types/cloudflare-builder.d.ts +51 -8
- package/dist/types/cloudflare-output-contract.d.ts +5 -3
- package/dist/types/cloudflare-output-verifier/identity.d.ts +7 -3
- package/dist/types/cloudflare-output-verifier/worker-bundles.d.ts +2 -2
- package/dist/types/config.d.ts +98 -13
- package/dist/types/deploy-output/plugin.d.ts +29 -9
- package/dist/types/deploy-output/public-assets.d.ts +51 -0
- package/dist/types/deploy-output/target.d.ts +28 -5
- package/dist/types/deploy-output/trace-files.d.ts +17 -0
- package/dist/types/module-federation-config/exposes.d.ts +11 -0
- package/dist/types/module-federation-config/index.d.ts +5 -0
- package/dist/types/module-federation-config/inspect.d.ts +2 -0
- package/dist/types/module-federation-config/object-literal.d.ts +4 -0
- package/dist/types/module-federation-config/syntax.d.ts +7 -0
- package/dist/types/module-federation-config/types.d.ts +20 -0
- package/dist/types/native-type-checker.d.ts +26 -3
- package/dist/types/policy-defaults.d.ts +12 -2
- package/dist/types/release-envelope/canonical.d.ts +5 -5
- package/dist/types/release-envelope/contract.d.mts +8 -0
- package/dist/types/release-envelope/framework-output.d.ts +23 -13
- package/dist/types/release-envelope/index.d.ts +17 -5
- package/dist/types/release-envelope/plugin.d.ts +10 -6
- package/dist/types/release-envelope/renderer-output-stamp.d.ts +34 -0
- package/dist/types/release-envelope/types.d.ts +42 -4
- package/dist/types/release-identity.d.ts +3 -2
- package/dist/types/renderer-build-identity.d.ts +30 -0
- package/dist/types/templates/cloudflare-worker-route-data.d.mts +14 -0
- package/dist/types/workspace-topology.d.ts +91 -0
- package/package.json +87 -27
- package/src/backend-federation-build/codegen.ts +28 -19
- package/src/backend-federation-build/config.ts +189 -123
- package/src/backend-federation-build/emit.ts +119 -38
- package/src/backend-federation-build/index.ts +4 -1
- package/src/build-config/build-environment.ts +59 -285
- package/src/build-config/internal-effect-discovery.ts +239 -0
- package/src/build-config/public.ts +0 -1
- package/src/build-config/remote-address.ts +33 -0
- package/src/cloudflare/artifacts.ts +22 -43
- package/src/cloudflare/delivery-unit.ts +283 -60
- package/src/cloudflare/index.ts +35 -19
- package/src/cloudflare/native-renderer.ts +117 -0
- package/src/cloudflare/renderer-identity.ts +171 -0
- package/src/cloudflare/worker-manifest.ts +108 -10
- package/src/cloudflare/worker-options.ts +60 -0
- package/src/cloudflare/wrangler-config.ts +390 -14
- package/src/cloudflare-builder.ts +543 -170
- package/src/cloudflare-output-contract.ts +45 -2
- package/src/cloudflare-output-verifier/identity.ts +138 -7
- 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 +27 -11
- package/src/config.ts +101 -19
- package/src/deploy-output/npmAliases.ts +141 -4
- package/src/deploy-output/plugin.ts +55 -18
- package/src/deploy-output/public-assets.ts +224 -0
- package/src/deploy-output/target.ts +97 -14
- package/src/deploy-output/trace-files.ts +80 -0
- package/src/module-federation-config/exposes.ts +46 -0
- package/src/module-federation-config/index.ts +22 -0
- package/src/module-federation-config/inspect.ts +157 -0
- package/src/module-federation-config/object-literal.ts +76 -0
- package/src/module-federation-config/syntax.ts +212 -0
- package/src/module-federation-config/types.ts +22 -0
- package/src/native-type-checker.ts +233 -20
- package/src/policy-defaults.ts +47 -17
- package/src/release-envelope/canonical.ts +6 -18
- package/src/release-envelope/contract.mjs +28 -0
- package/src/release-envelope/framework-output.ts +681 -156
- package/src/release-envelope/index.ts +315 -60
- package/src/release-envelope/plugin.ts +54 -38
- package/src/release-envelope/renderer-output-stamp.ts +210 -0
- package/src/release-envelope/types.ts +75 -6
- package/src/release-identity.ts +19 -2
- package/src/renderer-build-identity.ts +168 -0
- package/src/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
- package/src/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
- package/src/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
- package/src/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
- package/src/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
- package/src/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/src/workspace-topology.ts +125 -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
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import node_path from "node:path";
|
|
4
|
+
const REFERENCE_TOPOLOGY_PATH = 'topology/reference-topology.json';
|
|
5
|
+
const DEVELOPMENT_OVERLAY_PATH = 'topology/local-overlays/development.json';
|
|
6
|
+
const normalizeRelativePath = (value)=>value.replace(/\\/gu, '/').replace(/^\.\/+/u, '');
|
|
7
|
+
const distributedSsrFragmentSlug = (expose)=>{
|
|
8
|
+
const slug = expose.replace(/^\.\//u, '').trim().replace(/([a-z0-9])([A-Z])/gu, '$1-$2').replace(/[^a-zA-Z0-9._-]+/gu, '-').replace(/[._]+/gu, '-').toLowerCase().replace(/-+/gu, '-').replace(/^-+|-+$/gu, '');
|
|
9
|
+
if (!slug) throw new Error(`Invalid distributed SSR expose ${expose}.`);
|
|
10
|
+
return slug;
|
|
11
|
+
};
|
|
12
|
+
const distributedSsrFragmentRoute = (expose)=>`/{locale}/_mf/fragment/${distributedSsrFragmentSlug(expose)}`;
|
|
13
|
+
const findWorkspaceRoot = (appDirectory)=>{
|
|
14
|
+
let current = appDirectory;
|
|
15
|
+
while(true){
|
|
16
|
+
if (existsSync(node_path.join(current, REFERENCE_TOPOLOGY_PATH))) return current;
|
|
17
|
+
const parent = node_path.dirname(current);
|
|
18
|
+
if (parent === current) return;
|
|
19
|
+
current = parent;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export { DEVELOPMENT_OVERLAY_PATH, REFERENCE_TOPOLOGY_PATH, distributedSsrFragmentRoute, distributedSsrFragmentSlug, findWorkspaceRoot, normalizeRelativePath };
|
|
@@ -53,6 +53,36 @@ export declare const createBackendManifest: (workspaceRoot: string, distDirector
|
|
|
53
53
|
}[];
|
|
54
54
|
shared: never[];
|
|
55
55
|
backendFederation: {
|
|
56
|
+
role: string;
|
|
57
|
+
appId: string;
|
|
58
|
+
name: string;
|
|
59
|
+
runtimeFramework: string;
|
|
60
|
+
strictEffectApproach: boolean;
|
|
61
|
+
contractVersion: string;
|
|
62
|
+
nodeAdapterVersion: string;
|
|
63
|
+
remoteType: string;
|
|
64
|
+
expose: string;
|
|
65
|
+
manifestUrl: string;
|
|
66
|
+
containerEntry: string;
|
|
67
|
+
source: {
|
|
68
|
+
module: string;
|
|
69
|
+
};
|
|
70
|
+
rpcPath: string | undefined;
|
|
71
|
+
rpcSerialization: string;
|
|
72
|
+
deliveryUnit?: import("@modern-js/backend-federation-contracts").DeliveryUnitContractBlock | undefined;
|
|
73
|
+
versionBoundary: {
|
|
74
|
+
invariant: string;
|
|
75
|
+
packageName: string | undefined;
|
|
76
|
+
version: string | undefined;
|
|
77
|
+
buildVersion: string | undefined;
|
|
78
|
+
uiManifestUrl?: string | undefined;
|
|
79
|
+
deliveryUnit?: {
|
|
80
|
+
unitId: string;
|
|
81
|
+
buildMarker: string;
|
|
82
|
+
sourceRevision: string;
|
|
83
|
+
} | undefined;
|
|
84
|
+
};
|
|
85
|
+
} | {
|
|
56
86
|
role: string;
|
|
57
87
|
appId: string;
|
|
58
88
|
name: string;
|
|
@@ -1,56 +1,6 @@
|
|
|
1
1
|
import { type DeliveryUnitContractBlock, type UltramodernBuildArtifact } from '@modern-js/backend-federation-contracts';
|
|
2
|
-
|
|
3
|
-
export type
|
|
4
|
-
id?: unknown;
|
|
5
|
-
kind?: unknown;
|
|
6
|
-
path?: unknown;
|
|
7
|
-
package?: unknown;
|
|
8
|
-
port?: unknown;
|
|
9
|
-
api?: {
|
|
10
|
-
prefix?: unknown;
|
|
11
|
-
stem?: unknown;
|
|
12
|
-
};
|
|
13
|
-
moduleFederation?: {
|
|
14
|
-
name?: unknown;
|
|
15
|
-
manifestUrl?: unknown;
|
|
16
|
-
};
|
|
17
|
-
backendFederation?: {
|
|
18
|
-
name?: unknown;
|
|
19
|
-
versionBoundary?: {
|
|
20
|
-
ui?: {
|
|
21
|
-
manifestUrl?: unknown;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
executionSurfaces?: {
|
|
25
|
-
node?: {
|
|
26
|
-
remoteName?: unknown;
|
|
27
|
-
manifestUrl?: unknown;
|
|
28
|
-
containerEntry?: unknown;
|
|
29
|
-
remoteType?: unknown;
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
deliveryUnit?: {
|
|
34
|
-
unitId?: unknown;
|
|
35
|
-
buildMarker?: unknown;
|
|
36
|
-
sourceRevision?: unknown;
|
|
37
|
-
packageName?: unknown;
|
|
38
|
-
version?: unknown;
|
|
39
|
-
};
|
|
40
|
-
serverExecution?: {
|
|
41
|
-
node?: {
|
|
42
|
-
remoteName?: unknown;
|
|
43
|
-
manifestUrl?: unknown;
|
|
44
|
-
containerEntry?: unknown;
|
|
45
|
-
remoteType?: unknown;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
export type CompactConfig = {
|
|
50
|
-
topology?: {
|
|
51
|
-
apps?: CompactApp[];
|
|
52
|
-
};
|
|
53
|
-
};
|
|
2
|
+
import { type DevelopmentOverlay, type TopologyApp } from '../workspace-topology.js';
|
|
3
|
+
export { DEVELOPMENT_OVERLAY_PATH, type DevelopmentOverlay, findWorkspaceRoot, normalizeRelativePath, REFERENCE_TOPOLOGY_PATH, type ReferenceTopology, type TopologyApp, } from '../workspace-topology.js';
|
|
54
4
|
export type BackendFederationApp = {
|
|
55
5
|
id: string;
|
|
56
6
|
directory: string;
|
|
@@ -62,13 +12,15 @@ export type BackendFederationApp = {
|
|
|
62
12
|
deliveryUnit?: DeliveryUnitContractBlock;
|
|
63
13
|
port: number;
|
|
64
14
|
apiPrefix: string;
|
|
15
|
+
apiProtocol: 'rest' | 'rpc';
|
|
16
|
+
rpcPath?: string;
|
|
65
17
|
apiStem: string;
|
|
66
18
|
backendName: string;
|
|
67
19
|
manifestUrl: string;
|
|
68
20
|
containerEntry: string;
|
|
69
21
|
remoteType: string;
|
|
70
22
|
uiManifestUrl?: string;
|
|
71
|
-
|
|
23
|
+
topologyDeliveryUnit?: {
|
|
72
24
|
unitId?: string;
|
|
73
25
|
buildMarker?: string;
|
|
74
26
|
sourceRevision?: string;
|
|
@@ -85,10 +37,8 @@ export type BackendFederationBuildIdentity = {
|
|
|
85
37
|
sourceRevision?: string;
|
|
86
38
|
artifact?: UltramodernBuildArtifact;
|
|
87
39
|
};
|
|
88
|
-
export declare const normalizeRelativePath: (value: string) => string;
|
|
89
40
|
export declare const buildArtifactPathFor: (appDirectory: string) => string;
|
|
90
41
|
export declare const readBuildIdentity: (appDirectory: string) => Promise<BackendFederationBuildIdentity>;
|
|
91
|
-
export declare const findWorkspaceRoot: (appDirectory: string) => string | undefined;
|
|
92
42
|
export declare const resolveWorkspaceSourceRevision: (workspaceRoot: string) => Promise<string>;
|
|
93
43
|
export declare const createStampedDeliveryUnit: (input: {
|
|
94
44
|
appId: string;
|
|
@@ -98,5 +48,8 @@ export declare const createStampedDeliveryUnit: (input: {
|
|
|
98
48
|
version?: string;
|
|
99
49
|
sourceRevision: string;
|
|
100
50
|
}) => DeliveryUnitContractBlock | undefined;
|
|
101
|
-
export declare const
|
|
102
|
-
|
|
51
|
+
export declare const createAppFromTopology: (workspaceRoot: string, appDirectory: string, topologyApp: TopologyApp, overlay: DevelopmentOverlay, packageManifest: {
|
|
52
|
+
name?: unknown;
|
|
53
|
+
version?: unknown;
|
|
54
|
+
}) => BackendFederationApp | undefined;
|
|
55
|
+
export declare const findBackendFederationApp: (workspaceRoot: string, appDirectory: string) => Promise<BackendFederationApp>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RendererBuildOutputContext, type RendererBuildOutputOptions } from '../release-envelope/renderer-output-stamp.js';
|
|
1
2
|
export type { BackendFederationBuildIdentity } from './config.js';
|
|
2
3
|
export type BackendFederationArtifactResult = {
|
|
3
4
|
appId: string;
|
|
@@ -7,14 +8,23 @@ export type BackendFederationArtifactResult = {
|
|
|
7
8
|
remoteName: string;
|
|
8
9
|
remoteType: string;
|
|
9
10
|
};
|
|
10
|
-
export
|
|
11
|
+
export type BackendFederationBuildOptions = {
|
|
12
|
+
resolveRendererBuild?: RendererBuildOutputOptions['resolveRendererBuild'];
|
|
13
|
+
rendererBuildPlugin?: RendererBuildOutputOptions['rendererBuildPlugin'];
|
|
14
|
+
entrypoints?: RendererBuildOutputContext['entrypoints'];
|
|
15
|
+
};
|
|
16
|
+
export declare const emitBackendFederationArtifacts: (appDirectory: string, distDirectory: string, options?: BackendFederationBuildOptions) => Promise<BackendFederationArtifactResult | undefined>;
|
|
11
17
|
export default _default;
|
|
12
|
-
declare function _default(): {
|
|
18
|
+
declare function _default(options?: Omit<BackendFederationBuildOptions, 'entrypoints'>): {
|
|
13
19
|
name: string;
|
|
20
|
+
pre: string[];
|
|
21
|
+
required: string[];
|
|
14
22
|
setup(api: {
|
|
15
23
|
getAppContext(): {
|
|
16
24
|
appDirectory: string;
|
|
17
25
|
distDirectory: string;
|
|
26
|
+
entrypoints?: RendererBuildOutputContext['entrypoints'];
|
|
27
|
+
apiOnly?: boolean;
|
|
18
28
|
};
|
|
19
29
|
onAfterBuild(handler: () => Promise<void>): void;
|
|
20
30
|
}): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { BackendFederationArtifactResult } from './emit.js';
|
|
1
|
+
export type { BackendFederationArtifactResult, BackendFederationBuildOptions, } from './emit.js';
|
|
2
2
|
export { default, emitBackendFederationArtifacts } from './emit.js';
|
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { Rspack } from '@rsbuild/core';
|
|
1
|
+
import { type URL } from 'node:url';
|
|
3
2
|
/**
|
|
4
3
|
* Reads an environment variable while keeping generated build configs free of
|
|
5
4
|
* direct process access.
|
|
6
5
|
*/
|
|
7
6
|
export declare function getBuildConfigEnvironment(name: string): string | undefined;
|
|
8
|
-
/**
|
|
9
|
-
* Runs a Rspack config setup under a leased environment value. The lease is
|
|
10
|
-
* restored when that compiler reaches any supported terminal hook.
|
|
11
|
-
*/
|
|
12
|
-
export declare function withBuildConfigEnvironment<Config extends {
|
|
13
|
-
plugins?: Rspack.Plugin[];
|
|
14
|
-
}, SetupArguments extends unknown[]>(name: string, value: string, setup: (config: Config, ...args: SetupArguments) => Config | void | Promise<Config | void>): (config: Config, ...args: SetupArguments) => Promise<Config>;
|
|
15
7
|
export type ResolveEffectTsgoCompilerOptions = {
|
|
16
8
|
/** Module URL or absolute filename used to resolve the consumer's compiler. */
|
|
17
9
|
from: string | URL;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type URL } from 'node:url';
|
|
2
|
+
export declare function effectCompilerDiscoveryFailureStage(error: unknown): string | undefined;
|
|
3
|
+
/** Selects the exact native replacement without invoking the provider. */
|
|
4
|
+
export declare function resolveInstalledEffectCompiler(from: string | URL): string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export type { ResolveEffectTsgoCompilerOptions } from './build-environment.js';
|
|
2
|
-
export { getBuildConfigEnvironment, resolveEffectTsgoCompiler,
|
|
2
|
+
export { getBuildConfigEnvironment, resolveEffectTsgoCompiler, } from './build-environment.js';
|
|
@@ -4,12 +4,13 @@ export declare const getCloudflareArtifacts: (modernConfig: CloudflareModernConf
|
|
|
4
4
|
to: string;
|
|
5
5
|
index: number;
|
|
6
6
|
}[];
|
|
7
|
-
export declare const getCloudflarePublicAssets: (modernConfig: CloudflareModernConfig) =>
|
|
8
|
-
from: string;
|
|
9
|
-
to: string;
|
|
10
|
-
index: number;
|
|
11
|
-
}[];
|
|
7
|
+
export declare const getCloudflarePublicAssets: (modernConfig: CloudflareModernConfig) => import("../deploy-output/public-assets.js").DeclaredPublicAsset[];
|
|
12
8
|
export declare const copyCloudflareArtifacts: (appDirectory: string, outputDirectory: string, artifacts: ReturnType<typeof getCloudflareArtifacts>) => Promise<void>;
|
|
13
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Stage `deploy.worker.publicAssets` into Worker Static Assets.
|
|
11
|
+
*
|
|
12
|
+
* @returns the staged files relative to the Cloudflare output root.
|
|
13
|
+
*/
|
|
14
|
+
export declare const copyCloudflarePublicAssets: (appDirectory: string, outputDirectory: string, publicAssets: ReturnType<typeof getCloudflarePublicAssets>) => Promise<string[]>;
|
|
14
15
|
export declare const copyCloudflareD1Migrations: (appDirectory: string, outputDirectory: string, modernConfig: CloudflareModernConfig) => Promise<void>;
|
|
15
16
|
export declare const readRouteSpec: (outputDirectory: string) => Promise<any>;
|
|
@@ -19,6 +19,6 @@ export declare const BFF_EFFECT_WORKER_DISPATCHER_EXPORT = "__modern_create_effe
|
|
|
19
19
|
export declare const EFFECT_BFF_CLOUDFLARE_IMPORT_GUIDANCE = "Ensure the Effect API entry exists at api/index.ts or bff.effect.entry, and import Cloudflare edge handlers from @modern-js/bff-effect/effect-edge instead of lambda/Hono server helpers.";
|
|
20
20
|
export declare const DEFAULT_COMPATIBILITY_DATE = "2026-06-02";
|
|
21
21
|
export declare const COMPATIBILITY_DATE_PATTERN: RegExp;
|
|
22
|
-
export declare const REQUIRED_COMPATIBILITY_FLAGS: readonly ["nodejs_compat", "global_fetch_strictly_public"];
|
|
22
|
+
export declare const REQUIRED_COMPATIBILITY_FLAGS: readonly ["nodejs_compat", "global_fetch_strictly_public", "enable_request_signal"];
|
|
23
23
|
export declare const RESERVED_ARTIFACT_DESTINATION_FILES: Set<string>;
|
|
24
24
|
export declare const RESERVED_ARTIFACT_DESTINATION_DIRECTORIES: Set<string>;
|
|
@@ -1,23 +1,54 @@
|
|
|
1
|
-
import { type DeliveryUnitIdentity } from '@modern-js/backend-federation-contracts';
|
|
1
|
+
import { type DeliveryUnitIdentity, type RendererIdentity, type RendererProfile, type RendererRouterBindings } from '@modern-js/backend-federation-contracts';
|
|
2
2
|
export type DeliveryUnitStamp = DeliveryUnitIdentity & {
|
|
3
3
|
surfaces: {
|
|
4
4
|
ui?: DeliveryUnitIdentity & {
|
|
5
5
|
surface: 'ui';
|
|
6
|
+
rendererIdentity: RendererIdentity;
|
|
7
|
+
rendererProfile: RendererProfile;
|
|
8
|
+
routerBindings: RendererRouterBindings;
|
|
6
9
|
};
|
|
7
10
|
api?: DeliveryUnitIdentity & {
|
|
8
11
|
surface: 'api';
|
|
9
12
|
};
|
|
10
13
|
};
|
|
11
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* The topology's declaration of one delivery unit. A UI surface may omit the
|
|
17
|
+
* renderer projection entirely (a React workspace authored before renderer
|
|
18
|
+
* selection); the build then resolves its renderer identity from the app
|
|
19
|
+
* config alone, and there is no declared projection to verify it against.
|
|
20
|
+
*/
|
|
21
|
+
export type TopologyUiSurface = DeliveryUnitIdentity & {
|
|
22
|
+
surface: 'ui';
|
|
23
|
+
} & ({
|
|
24
|
+
rendererIdentity: RendererIdentity;
|
|
25
|
+
rendererProfile: RendererProfile;
|
|
26
|
+
routerBindings: RendererRouterBindings;
|
|
27
|
+
} | {
|
|
28
|
+
rendererIdentity?: undefined;
|
|
29
|
+
rendererProfile?: undefined;
|
|
30
|
+
routerBindings?: undefined;
|
|
31
|
+
});
|
|
32
|
+
export type TopologyDeliveryUnit = DeliveryUnitIdentity & {
|
|
33
|
+
/** The declaring topology app. */
|
|
34
|
+
appId: string;
|
|
35
|
+
surfaces: {
|
|
36
|
+
ui?: TopologyUiSurface;
|
|
37
|
+
api?: DeliveryUnitIdentity & {
|
|
38
|
+
surface: 'api';
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
/** Resolve the producer role from this app's authoritative topology membership. */
|
|
43
|
+
export declare const resolveTopologyReleaseRole: (appDirectory: string) => Promise<'microvertical' | 'shell' | undefined>;
|
|
12
44
|
/**
|
|
13
45
|
* Resolve the delivery-unit record declared for this app by the workspace
|
|
14
|
-
*
|
|
46
|
+
* reference topology. This is the topology source
|
|
15
47
|
* of truth the Cloudflare worker snapshot is verified against.
|
|
16
48
|
*/
|
|
17
|
-
export declare const resolveTopologyDeliveryUnit: (appDirectory: string) => Promise<
|
|
49
|
+
export declare const resolveTopologyDeliveryUnit: (appDirectory: string) => Promise<TopologyDeliveryUnit | undefined>;
|
|
18
50
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* worker snapshot / declared surface source that gets stamped into the manifest.
|
|
51
|
+
* Preserve the finalized build artifact already stamped from renderer-build.json.
|
|
52
|
+
* The generation artifact cannot attest the compiled application.
|
|
22
53
|
*/
|
|
23
|
-
export declare const resolveWorkerDeliveryUnitStamp: (appDirectory: string) => Promise<DeliveryUnitStamp | undefined>;
|
|
54
|
+
export declare const resolveWorkerDeliveryUnitStamp: (appDirectory: string, distDirectory: string) => Promise<DeliveryUnitStamp | undefined>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { WorkerRendererBuild } from './renderer-identity.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build-validated native document inputs for each worker route. The Node host
|
|
4
|
+
* reads these from `dist`; a module worker has no filesystem, so the native
|
|
5
|
+
* build writes them beside its worker bundles and deploy inlines them.
|
|
6
|
+
*/
|
|
7
|
+
export declare const NATIVE_RENDERER_WORKER_RESOURCES_FILE = "worker/native-renderer.json";
|
|
8
|
+
export interface NativeRendererWorkerEntry {
|
|
9
|
+
readonly assets: readonly unknown[];
|
|
10
|
+
readonly nativeManifest?: unknown;
|
|
11
|
+
readonly hydrationBuildId?: string;
|
|
12
|
+
readonly serverConfig: {
|
|
13
|
+
readonly ssr: boolean | 'stream';
|
|
14
|
+
readonly ssrByRouteIds?: readonly string[];
|
|
15
|
+
};
|
|
16
|
+
readonly csrFallbackHeader?: string;
|
|
17
|
+
readonly nonce?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface NativeRendererWorkerResources {
|
|
20
|
+
readonly schema: 'ultramodern-native-worker-resources';
|
|
21
|
+
readonly version: 1;
|
|
22
|
+
/** The built renderer, whose adapter serves native documents. */
|
|
23
|
+
readonly renderer: string;
|
|
24
|
+
readonly entries: Readonly<Record<string, NativeRendererWorkerEntry>>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Read the native worker resources for a built application. Every built entry
|
|
28
|
+
* of the resources' renderer must have validated document inputs.
|
|
29
|
+
*/
|
|
30
|
+
export declare function readNativeRendererWorkerResources(distDirectory: string, build: WorkerRendererBuild | undefined): Promise<NativeRendererWorkerResources | undefined>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type RendererIdentity } from '@modern-js/backend-federation-contracts';
|
|
2
|
+
import type { DeliveryUnitStamp } from './delivery-unit.js';
|
|
3
|
+
export type WorkerRendererIdentities = Readonly<Record<string, RendererIdentity>>;
|
|
4
|
+
/** The built renderer and how its adapter serves worker documents. */
|
|
5
|
+
export interface WorkerRenderer {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
/** Documents come only from the renderer's native server handler. */
|
|
8
|
+
readonly nativeDocuments: boolean;
|
|
9
|
+
readonly rsc: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface WorkerRendererBuild {
|
|
12
|
+
readonly renderer: WorkerRenderer;
|
|
13
|
+
readonly identities: WorkerRendererIdentities;
|
|
14
|
+
}
|
|
15
|
+
/** Bind response metadata to the finalized build and its generated entries. */
|
|
16
|
+
export declare function readWorkerRendererBuild(distDirectory: string, routes: readonly {
|
|
17
|
+
entryName?: unknown;
|
|
18
|
+
entryPath?: unknown;
|
|
19
|
+
isApi?: unknown;
|
|
20
|
+
isSSR?: unknown;
|
|
21
|
+
worker?: unknown;
|
|
22
|
+
bundle?: unknown;
|
|
23
|
+
isRSC?: unknown;
|
|
24
|
+
isStream?: unknown;
|
|
25
|
+
}[], deliveryUnit?: DeliveryUnitStamp): Promise<WorkerRendererBuild | undefined>;
|
|
@@ -84,8 +84,18 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
|
|
|
84
84
|
path: string;
|
|
85
85
|
css: string[];
|
|
86
86
|
}[];
|
|
87
|
+
routeCss: string[];
|
|
87
88
|
} | undefined;
|
|
88
89
|
deliveryUnit?: DeliveryUnitStamp | undefined;
|
|
90
|
+
renderer?: import("./renderer-identity.js").WorkerRenderer | undefined;
|
|
91
|
+
rendererIdentities?: Readonly<Record<string, Readonly<{
|
|
92
|
+
renderer: import("@modern-js/backend-federation-contracts").RendererName;
|
|
93
|
+
appId: string;
|
|
94
|
+
entryName: string;
|
|
95
|
+
protocolVersion: typeof import("@modern-js/backend-federation-contracts").RENDERER_PROTOCOL_VERSION;
|
|
96
|
+
buildId: string;
|
|
97
|
+
}>>> | undefined;
|
|
98
|
+
nativeRenderer?: import("./native-renderer.js").NativeRendererWorkerResources | undefined;
|
|
89
99
|
i18n: {
|
|
90
100
|
entries: Record<string, {
|
|
91
101
|
i18nextDetector: boolean;
|
|
@@ -130,7 +140,12 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
|
|
|
130
140
|
};
|
|
131
141
|
} | undefined;
|
|
132
142
|
} | undefined;
|
|
133
|
-
serviceBindings?: {
|
|
143
|
+
serviceBindings?: ({
|
|
144
|
+
binding: string;
|
|
145
|
+
interface: string;
|
|
146
|
+
prefix: string;
|
|
147
|
+
vpcServiceId: string;
|
|
148
|
+
} | {
|
|
134
149
|
binding: string;
|
|
135
150
|
service: string;
|
|
136
151
|
interface: string;
|
|
@@ -141,7 +156,7 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
|
|
|
141
156
|
boundaryId: string;
|
|
142
157
|
path: string;
|
|
143
158
|
}[] | undefined;
|
|
144
|
-
}[] | undefined;
|
|
159
|
+
})[] | undefined;
|
|
145
160
|
}>;
|
|
146
161
|
export declare const createWorkerModuleLoaders: (manifest: any) => string;
|
|
147
162
|
export declare const getPublicAssetExcludes: (appDirectory: string, modernConfig: CloudflareModernConfig) => string[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RequestHandlerOptions } from '@modern-js/server-core';
|
|
2
|
+
/** The native context supplied to a Cloudflare module worker's fetch method. */
|
|
3
|
+
export interface CloudflareExecutionContext {
|
|
4
|
+
waitUntil(promise: Promise<unknown>): void;
|
|
5
|
+
passThroughOnException(): void;
|
|
6
|
+
}
|
|
7
|
+
/** Worker request bindings follow the shared RequestPlatform kind/bindings shape. */
|
|
8
|
+
export interface CloudflareWorkerPlatform<Bindings extends object = object> {
|
|
9
|
+
readonly kind: 'worker';
|
|
10
|
+
/** The original env object. Direct worker invocations may omit it. */
|
|
11
|
+
readonly bindings: Bindings | undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Request-owned options for manifest HTML and Flight worker handlers. */
|
|
14
|
+
export interface CloudflareWorkerRequestHandlerOptions<Bindings extends object = object> extends RequestHandlerOptions {
|
|
15
|
+
readonly platform: CloudflareWorkerPlatform<Bindings>;
|
|
16
|
+
/** The original context, including its native method receivers. */
|
|
17
|
+
readonly executionContext: CloudflareExecutionContext | undefined;
|
|
18
|
+
}
|
|
19
|
+
/** Narrow native handler options without replacing their worker references. */
|
|
20
|
+
export declare function isCloudflareWorkerRequestHandlerOptions(options: RequestHandlerOptions): options is CloudflareWorkerRequestHandlerOptions;
|
|
@@ -11,7 +11,22 @@ export declare const createWorkerServiceBindings: (modernConfig: CloudflareModer
|
|
|
11
11
|
path: string;
|
|
12
12
|
}[] | undefined;
|
|
13
13
|
}[] | JsonValue | undefined;
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* The prefix the worker's Effect BFF dispatcher owns. It runs before any
|
|
16
|
+
* service binding, so it takes part in route-overlap checks.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getWorkerEffectBffPrefix: (modernConfig: CloudflareModernConfig) => string | undefined;
|
|
19
|
+
export declare const createWorkerVpcServiceBindings: (modernConfig: CloudflareModernConfig, configuredWranglerVpcServices: JsonValue | undefined, serviceBindings: ReturnType<typeof createWorkerServiceBindings>, workerBindingNames: ReadonlySet<string>) => {
|
|
20
|
+
binding: string;
|
|
21
|
+
serviceId: string;
|
|
22
|
+
prefix?: string | undefined;
|
|
23
|
+
}[] | undefined;
|
|
24
|
+
export declare const createWorkerManifestServiceBindings: (serviceBindings: ReturnType<typeof createWorkerServiceBindings>, vpcServiceBindings: ReturnType<typeof createWorkerVpcServiceBindings>) => ({
|
|
25
|
+
binding: string;
|
|
26
|
+
interface: string;
|
|
27
|
+
prefix: string;
|
|
28
|
+
vpcServiceId: string;
|
|
29
|
+
} | {
|
|
15
30
|
binding: string;
|
|
16
31
|
service: string;
|
|
17
32
|
interface: string;
|
|
@@ -22,7 +37,7 @@ export declare const createWorkerManifestServiceBindings: (serviceBindings: Retu
|
|
|
22
37
|
boundaryId: string;
|
|
23
38
|
path: string;
|
|
24
39
|
}[] | undefined;
|
|
25
|
-
}[] | undefined;
|
|
40
|
+
})[] | undefined;
|
|
26
41
|
export declare const createWranglerConfig: (appDirectory: string, modernConfig: CloudflareModernConfig) => {
|
|
27
42
|
$schema: string;
|
|
28
43
|
name: string;
|
|
@@ -34,6 +49,7 @@ export declare const createWranglerConfig: (appDirectory: string, modernConfig:
|
|
|
34
49
|
binding: string;
|
|
35
50
|
run_worker_first: boolean;
|
|
36
51
|
};
|
|
52
|
+
env?: Record<string, Record<string, JsonValue>> | undefined;
|
|
37
53
|
d1_databases?: {
|
|
38
54
|
binding: string;
|
|
39
55
|
database_name: string;
|
|
@@ -48,4 +64,41 @@ export declare const createWranglerConfig: (appDirectory: string, modernConfig:
|
|
|
48
64
|
}[] | {
|
|
49
65
|
[key: string]: JsonValue;
|
|
50
66
|
} | null | undefined;
|
|
67
|
+
} | {
|
|
68
|
+
$schema: string;
|
|
69
|
+
name: string;
|
|
70
|
+
compatibility_date: string;
|
|
71
|
+
main: string;
|
|
72
|
+
compatibility_flags: JsonValue[];
|
|
73
|
+
assets: {
|
|
74
|
+
directory: string;
|
|
75
|
+
binding: string;
|
|
76
|
+
run_worker_first: boolean;
|
|
77
|
+
};
|
|
78
|
+
env?: Record<string, Record<string, JsonValue>> | {
|
|
79
|
+
[k: string]: {
|
|
80
|
+
vpc_services: {
|
|
81
|
+
binding: string;
|
|
82
|
+
service_id: string;
|
|
83
|
+
}[];
|
|
84
|
+
};
|
|
85
|
+
} | undefined;
|
|
86
|
+
d1_databases?: {
|
|
87
|
+
binding: string;
|
|
88
|
+
database_name: string;
|
|
89
|
+
database_id: string;
|
|
90
|
+
migrations_dir?: string | undefined;
|
|
91
|
+
preview_database_id?: string | undefined;
|
|
92
|
+
remote?: boolean | undefined;
|
|
93
|
+
}[] | JsonValue | undefined;
|
|
94
|
+
services?: string | number | boolean | JsonValue[] | {
|
|
95
|
+
binding: string;
|
|
96
|
+
service: string;
|
|
97
|
+
}[] | {
|
|
98
|
+
[key: string]: JsonValue;
|
|
99
|
+
} | null | undefined;
|
|
100
|
+
vpc_services: {
|
|
101
|
+
binding: string;
|
|
102
|
+
service_id: string;
|
|
103
|
+
}[];
|
|
51
104
|
};
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import type { BffUserConfig } from '@modern-js/server-core';
|
|
2
|
-
import type { EnvironmentConfig, ModifyBundlerChainFn } from '@rsbuild/core';
|
|
2
|
+
import type { EnvironmentConfig, ModifyBundlerChainFn, Rspack } from '@rsbuild/core';
|
|
3
|
+
import type { ResolvedDeployTarget } from './deploy-output/target.js';
|
|
3
4
|
export interface CloudflareBuilderNormalizedConfig {
|
|
4
5
|
bff?: BffUserConfig;
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
server?: {
|
|
7
|
+
rsc?: unknown;
|
|
7
8
|
};
|
|
8
9
|
}
|
|
9
10
|
export interface CloudflareBuilderAppContext {
|
|
11
|
+
apiOnly?: boolean;
|
|
12
|
+
deployTarget?: ResolvedDeployTarget;
|
|
10
13
|
apiDirectory: string;
|
|
11
14
|
appDirectory: string;
|
|
15
|
+
entrypoints?: ReadonlyArray<{
|
|
16
|
+
entryName: string;
|
|
17
|
+
}>;
|
|
18
|
+
internalDirectory?: string;
|
|
12
19
|
}
|
|
13
20
|
export interface CloudflareBuilderEnvironmentsOptions {
|
|
14
21
|
appContext: CloudflareBuilderAppContext;
|
|
15
22
|
environments: Record<string, EnvironmentConfig>;
|
|
16
23
|
normalizedConfig: CloudflareBuilderNormalizedConfig;
|
|
17
|
-
resolveDeployProvider?: ResolveCloudflareDeployProvider;
|
|
18
24
|
}
|
|
19
|
-
export type ResolveCloudflareDeployProvider = () => string | undefined;
|
|
20
25
|
export interface CloudflareWorkerRspackConfig {
|
|
21
26
|
externals: Record<string, string>;
|
|
22
27
|
externalsType: 'module-import';
|
|
@@ -51,9 +56,47 @@ export interface CloudflareBuilderPlugin {
|
|
|
51
56
|
name: string;
|
|
52
57
|
setup(api: CloudflareBuilderPluginApi): void;
|
|
53
58
|
}
|
|
59
|
+
type AliasField = string | readonly string[];
|
|
60
|
+
/**
|
|
61
|
+
* Leaves an absent optional dependency missing at runtime, exactly as Node
|
|
62
|
+
* does, instead of failing the worker build. It applies only when the
|
|
63
|
+
* importing package itself declares the request as an optional peer
|
|
64
|
+
* (`peerDependenciesMeta.<name>.optional`) or an `optionalDependencies`
|
|
65
|
+
* entry, the package is not found in any `resolve.modules` directory, and
|
|
66
|
+
* neither the app (`resolve.alias`, `resolve.fallback`, `externals`) nor the
|
|
67
|
+
* importing package (an enabled `resolve.aliasFields` entry such as
|
|
68
|
+
* `browser`) redirects the request. The import
|
|
69
|
+
* then rejects with "Cannot find module" so the library's own fallback
|
|
70
|
+
* handles it (for example `@redis/client` guards `import('@node-rs/xxhash')`).
|
|
71
|
+
*/
|
|
72
|
+
export declare const createAbsentOptionalDependencyFilter: (isRedirected?: (request: string) => boolean, moduleDirectories?: readonly string[], aliasFields?: readonly AliasField[]) => (request: string, context: string) => boolean;
|
|
73
|
+
type AliasOption = Record<string, unknown> | {
|
|
74
|
+
name: string;
|
|
75
|
+
onlyModule?: boolean;
|
|
76
|
+
}[] | false | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Reads the final resolved `resolve.alias`, `resolve.fallback` and
|
|
79
|
+
* `externals` so an app's own
|
|
80
|
+
* replacement for an optional package still wins over the absent-module
|
|
81
|
+
* fallback (the fallback runs before resolution).
|
|
82
|
+
*/
|
|
83
|
+
export declare const createRequestRedirectMatcher: (options: {
|
|
84
|
+
externals?: unknown;
|
|
85
|
+
resolve?: {
|
|
86
|
+
alias?: AliasOption;
|
|
87
|
+
fallback?: AliasOption;
|
|
88
|
+
};
|
|
89
|
+
}) => (request: string) => boolean;
|
|
90
|
+
type FunctionExternal = (data: Rspack.ExternalItemFunctionData, callback: (error?: Error | null, result?: unknown) => void) => unknown;
|
|
91
|
+
/**
|
|
92
|
+
* Reports whether any function external claims the request. A function that
|
|
93
|
+
* throws is treated as claiming it, so the request goes through ordinary
|
|
94
|
+
* external processing and surfaces that error instead of being ignored.
|
|
95
|
+
*/
|
|
96
|
+
export declare const claimsByFunctionExternal: (externals: readonly FunctionExternal[], data: Rspack.ExternalItemFunctionData) => Promise<boolean>;
|
|
54
97
|
export declare function getCloudflareWorkerRspackConfig(workerEntryNames: Iterable<string>): CloudflareWorkerRspackConfig;
|
|
55
98
|
export declare function applyCloudflareWorkerRspackConfig(chain: Parameters<ModifyBundlerChainFn>[0], workerEntryNames: Iterable<string>): void;
|
|
56
|
-
export declare function
|
|
57
|
-
export declare function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, resolveDeployProvider, }: CloudflareBuilderEnvironmentsOptions): Record<string, EnvironmentConfig>;
|
|
99
|
+
export declare function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, }: CloudflareBuilderEnvironmentsOptions): Record<string, EnvironmentConfig>;
|
|
58
100
|
export declare function applyCloudflareBuilderEnvironments(options: CloudflareBuilderEnvironmentsOptions): CloudflareBuilderEnvironmentsResult;
|
|
59
|
-
export declare const createCloudflareBuilderPlugin: (
|
|
101
|
+
export declare const createCloudflareBuilderPlugin: () => CloudflareBuilderPlugin;
|
|
102
|
+
export {};
|
|
@@ -10,6 +10,8 @@ export declare const CLOUDFLARE_RUNTIME_TYPE = "cloudflare-module-worker";
|
|
|
10
10
|
export declare const CLOUDFLARE_OUTPUT_PACKAGE_TYPE = "module";
|
|
11
11
|
export declare const CLOUDFLARE_WORKER_PACKAGE_TYPE = "commonjs";
|
|
12
12
|
export declare const CLOUDFLARE_WORKER_BUNDLE_FORMAT = "commonjs";
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const
|
|
15
|
-
export declare const
|
|
13
|
+
export declare const CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT = "handleRouteDataRequest";
|
|
14
|
+
export declare const getCloudflareWorkerRouteDataEntryName: (entryName: string) => string;
|
|
15
|
+
export declare const CLOUDFLARE_WORKER_NODE_BUILTINS: readonly ['_http_agent', '_http_client', '_http_common', '_http_incoming', '_http_outgoing', '_http_server', '_tls_common', '_tls_wrap', 'assert', 'assert/strict', 'async_hooks', 'buffer', 'child_process', 'cluster', 'console', 'constants', 'crypto', 'dgram', 'diagnostics_channel', 'dns', 'dns/promises', 'domain', 'events', 'fs', 'fs/promises', 'http', 'http2', 'https', 'inspector', 'inspector/promises', 'module', 'net', 'os', 'path', 'path/posix', 'path/win32', 'perf_hooks', 'process', 'punycode', 'querystring', 'readline', 'readline/promises', 'repl', 'sqlite', 'stream', 'stream/consumers', 'stream/promises', 'stream/web', 'string_decoder', 'sys', 'test', 'timers', 'timers/promises', 'tls', 'trace_events', 'tty', 'url', 'util', 'util/types', 'v8', 'vm', 'wasi', 'worker_threads', 'zlib'];
|
|
16
|
+
export declare const CLOUDFLARE_WORKER_PLATFORM_MODULES: readonly ['cloudflare:sockets', 'cloudflare:workers'];
|
|
17
|
+
export declare const CLOUDFLARE_REQUIRED_COMPATIBILITY_FLAGS: readonly ['nodejs_compat', 'global_fetch_strictly_public', 'enable_request_signal'];
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { type DeliveryUnitIdentity } from '@modern-js/backend-federation-contracts';
|
|
2
|
+
import type { TopologyUiSurface } from '../cloudflare/delivery-unit.js';
|
|
2
3
|
import type { CloudflareOutputVerifierIssue, JsonObject } from './issues.js';
|
|
3
4
|
export type CloudflareDeliveryUnitIdentity = DeliveryUnitIdentity & {
|
|
4
|
-
surfaces?:
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
surfaces?: {
|
|
6
|
+
ui?: TopologyUiSurface;
|
|
7
|
+
api?: DeliveryUnitIdentity & {
|
|
8
|
+
surface: 'api';
|
|
9
|
+
};
|
|
10
|
+
};
|
|
7
11
|
};
|
|
8
12
|
export declare const verifyDeliveryUnitIdentity: (issues: CloudflareOutputVerifierIssue[], manifest: JsonObject, manifestPath: string, declared: CloudflareDeliveryUnitIdentity | undefined) => void;
|