@bleedingdev/modern-js-app-tools-extensions 3.9.0-ultramodern.9 → 3.9.3-ultramodern.10
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 +30 -165
- package/dist/cjs/build-config/internal-effect-discovery.js +231 -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 +180 -17
- 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 +9 -6
- package/dist/cjs/renderer-build-identity.js +144 -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 +547 -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 +31 -163
- package/dist/esm/build-config/internal-effect-discovery.mjs +187 -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 +175 -18
- 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 +9 -6
- package/dist/esm/renderer-build-identity.mjs +92 -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 +547 -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 +31 -163
- package/dist/esm-node/build-config/internal-effect-discovery.mjs +188 -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 +175 -18
- 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 +9 -6
- package/dist/esm-node/renderer-build-identity.mjs +93 -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 +547 -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 +4 -10
- package/dist/types/build-config/internal-effect-discovery.d.ts +6 -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 +20 -4
- 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 +102 -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 +28 -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 +13 -2
- package/dist/types/renderer-build-identity.d.ts +41 -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 +69 -293
- package/src/build-config/internal-effect-discovery.ts +458 -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 +115 -13
- 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 +105 -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 +284 -27
- 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 +30 -4
- package/src/renderer-build-identity.ts +208 -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 +547 -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,34 @@
|
|
|
1
|
+
import { type UltramodernBuildArtifact, type UltramodernBuildUiSurface } from '@modern-js/backend-federation-contracts';
|
|
2
|
+
export type RendererBuildOutputContext = {
|
|
3
|
+
appDirectory: string;
|
|
4
|
+
distDirectory: string;
|
|
5
|
+
entrypoints: readonly {
|
|
6
|
+
entryName: string;
|
|
7
|
+
isMainEntry?: boolean;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
export type FinalizedRendererBuildOutput = {
|
|
11
|
+
buildMarker: string;
|
|
12
|
+
sourceRevision: string;
|
|
13
|
+
ui: Pick<UltramodernBuildUiSurface, 'rendererIdentity' | 'rendererProfile' | 'routerBindings'>;
|
|
14
|
+
};
|
|
15
|
+
export type RendererBuildOutputOptions = {
|
|
16
|
+
resolveRendererBuild: (context: RendererBuildOutputContext) => Promise<FinalizedRendererBuildOutput>;
|
|
17
|
+
/** Exact metadata producer selected by the owning renderer composition. */
|
|
18
|
+
rendererBuildPlugin: string;
|
|
19
|
+
};
|
|
20
|
+
export declare const validateFinalizedRendererBuild: (output: FinalizedRendererBuildOutput, context: RendererBuildOutputContext, appId: string) => void;
|
|
21
|
+
export declare const stampFinalizedRendererBuildArtifact: (artifact: UltramodernBuildArtifact, output: FinalizedRendererBuildOutput, context: RendererBuildOutputContext) => UltramodernBuildArtifact;
|
|
22
|
+
export declare function emitRendererBuildArtifact(context: RendererBuildOutputContext, options: RendererBuildOutputOptions): Promise<UltramodernBuildArtifact | undefined>;
|
|
23
|
+
/** Stamp generated UI carriers after their actual compiler manifest is committed. */
|
|
24
|
+
export declare function rendererBuildArtifactStampPlugin(options: RendererBuildOutputOptions): {
|
|
25
|
+
name: string;
|
|
26
|
+
pre: string[];
|
|
27
|
+
required: string[];
|
|
28
|
+
setup(api: {
|
|
29
|
+
getAppContext(): RendererBuildOutputContext & {
|
|
30
|
+
apiOnly?: boolean;
|
|
31
|
+
};
|
|
32
|
+
onAfterBuild(handler: () => Promise<void>): void;
|
|
33
|
+
}): void;
|
|
34
|
+
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { RendererIdentity, RendererProfile, RendererRouterBindings } from '@modern-js/backend-federation-contracts';
|
|
2
|
+
import { MICROVERTICAL_RELEASE_ENVELOPE_KIND, MICROVERTICAL_RELEASE_ENVELOPE_SCHEMA_VERSION, SHELL_RELEASE_ENVELOPE_KIND } from './contract.mjs';
|
|
3
|
+
export { MICROVERTICAL_RELEASE_ENVELOPE_KIND, MICROVERTICAL_RELEASE_ENVELOPE_SCHEMA_VERSION, SHELL_RELEASE_ENVELOPE_KIND, };
|
|
4
|
+
export type ReleaseEnvelopeKind = typeof MICROVERTICAL_RELEASE_ENVELOPE_KIND | typeof SHELL_RELEASE_ENVELOPE_KIND;
|
|
3
5
|
export declare const MICROVERTICAL_RELEASE_TARGETS: readonly ['node', 'cloudflare'];
|
|
4
6
|
export type MicroVerticalReleaseTarget = (typeof MICROVERTICAL_RELEASE_TARGETS)[number];
|
|
5
7
|
export type MicroVerticalReleaseIdentity = {
|
|
@@ -32,31 +34,67 @@ export type MicroVerticalReleaseSurfaces = {
|
|
|
32
34
|
uiClient: string[];
|
|
33
35
|
ssr: string[];
|
|
34
36
|
apiBackend: string[];
|
|
35
|
-
backendFederation
|
|
37
|
+
backendFederation?: {
|
|
36
38
|
manifest: string;
|
|
37
39
|
container: string;
|
|
38
40
|
};
|
|
39
41
|
};
|
|
42
|
+
export type MicroVerticalReleaseUi = {
|
|
43
|
+
rendererIdentity: RendererIdentity;
|
|
44
|
+
rendererProfile: RendererProfile;
|
|
45
|
+
routerBindings: RendererRouterBindings;
|
|
46
|
+
};
|
|
47
|
+
/** A Shell consumes remotes; it never publishes a backend federation pair. */
|
|
48
|
+
export type ShellReleaseSurfaces = {
|
|
49
|
+
uiClient: string[];
|
|
50
|
+
ssr: string[];
|
|
51
|
+
apiBackend: string[];
|
|
52
|
+
};
|
|
53
|
+
export type ReleaseSurfaces = MicroVerticalReleaseSurfaces | ShellReleaseSurfaces;
|
|
40
54
|
export type MicroVerticalReleaseEnvelopePayload = {
|
|
41
55
|
schemaVersion: typeof MICROVERTICAL_RELEASE_ENVELOPE_SCHEMA_VERSION;
|
|
42
56
|
kind: typeof MICROVERTICAL_RELEASE_ENVELOPE_KIND;
|
|
43
57
|
target: MicroVerticalReleaseTarget;
|
|
44
58
|
identity: MicroVerticalReleaseIdentity;
|
|
59
|
+
ui?: MicroVerticalReleaseUi;
|
|
45
60
|
artifacts: MicroVerticalReleaseArtifact[];
|
|
46
61
|
surfaces: MicroVerticalReleaseSurfaces;
|
|
47
62
|
};
|
|
48
63
|
export type MicroVerticalReleaseEnvelope = MicroVerticalReleaseEnvelopePayload & {
|
|
49
64
|
envelopeDigest: string;
|
|
50
65
|
};
|
|
66
|
+
export type ShellReleaseEnvelopePayload = {
|
|
67
|
+
schemaVersion: typeof MICROVERTICAL_RELEASE_ENVELOPE_SCHEMA_VERSION;
|
|
68
|
+
kind: typeof SHELL_RELEASE_ENVELOPE_KIND;
|
|
69
|
+
target: MicroVerticalReleaseTarget;
|
|
70
|
+
identity: MicroVerticalReleaseIdentity;
|
|
71
|
+
ui?: MicroVerticalReleaseUi;
|
|
72
|
+
artifacts: MicroVerticalReleaseArtifact[];
|
|
73
|
+
surfaces: ShellReleaseSurfaces;
|
|
74
|
+
};
|
|
75
|
+
export type ShellReleaseEnvelope = ShellReleaseEnvelopePayload & {
|
|
76
|
+
envelopeDigest: string;
|
|
77
|
+
};
|
|
78
|
+
export type ReleaseEnvelopePayload = MicroVerticalReleaseEnvelopePayload | ShellReleaseEnvelopePayload;
|
|
79
|
+
export type ReleaseEnvelope = MicroVerticalReleaseEnvelope | ShellReleaseEnvelope;
|
|
51
80
|
export type CreateMicroVerticalReleaseEnvelopeInput = {
|
|
52
81
|
artifactRoot: string;
|
|
53
82
|
target: MicroVerticalReleaseTarget;
|
|
54
83
|
identity: MicroVerticalReleaseIdentity;
|
|
84
|
+
ui?: MicroVerticalReleaseUi;
|
|
55
85
|
artifacts: MicroVerticalReleaseArtifactInput[];
|
|
86
|
+
} & ({
|
|
87
|
+
kind?: typeof MICROVERTICAL_RELEASE_ENVELOPE_KIND;
|
|
56
88
|
surfaces: MicroVerticalReleaseSurfaces;
|
|
57
|
-
}
|
|
89
|
+
} | {
|
|
90
|
+
kind: typeof SHELL_RELEASE_ENVELOPE_KIND;
|
|
91
|
+
surfaces: ShellReleaseSurfaces;
|
|
92
|
+
});
|
|
58
93
|
export type VerifyMicroVerticalReleaseEnvelopeOptions = {
|
|
59
94
|
artifactRoot: string;
|
|
60
95
|
logicalPathForArtifact?: (artifact: MicroVerticalReleaseArtifact) => string;
|
|
61
96
|
expectedTarget?: MicroVerticalReleaseTarget;
|
|
97
|
+
expectedKind?: ReleaseEnvelopeKind;
|
|
98
|
+
expectedRendererIdentity?: RendererIdentity;
|
|
99
|
+
expectedRendererProfile?: RendererProfile;
|
|
62
100
|
};
|
|
@@ -7,10 +7,21 @@ export declare const createUltramodernReleaseBuildMarker: ({ generationBuildMark
|
|
|
7
7
|
sourceRevision: string;
|
|
8
8
|
unitId: string;
|
|
9
9
|
}) => string;
|
|
10
|
-
export declare const resolveUltramodernSourceRevision: (workspaceRoot?: string, configuredSourceRevision?: string) => string;
|
|
11
|
-
|
|
10
|
+
export declare const resolveUltramodernSourceRevision: (workspaceRoot?: string, configuredSourceRevision?: string, environment?: Readonly<NodeJS.ProcessEnv>) => string;
|
|
11
|
+
/**
|
|
12
|
+
* The one release identity of a delivery unit, resolvable before its build.
|
|
13
|
+
*
|
|
14
|
+
* For a clean source revision the build marker is a 64-hex digest of the unit
|
|
15
|
+
* id, its generation marker and the revision. API bundles carry it, and a UI
|
|
16
|
+
* unit's renderer adopts it as its `buildId`, so contracts, release plans and
|
|
17
|
+
* Worker names derived from it before the build match the built
|
|
18
|
+
* `ultramodern-build.json`, `renderer-build.json`, chunk banners and envelope.
|
|
19
|
+
* A dirty or non-Git checkout yields the non-promotable `workspace` identity.
|
|
20
|
+
*/
|
|
21
|
+
export declare const resolveUltramodernReleaseIdentity: ({ generationBuildMarker, sourceRevision: configuredSourceRevision, unitId, workspaceRoot, environment, }: {
|
|
12
22
|
generationBuildMarker: string;
|
|
13
23
|
sourceRevision?: string;
|
|
14
24
|
unitId: string;
|
|
15
25
|
workspaceRoot?: string;
|
|
26
|
+
environment?: Readonly<NodeJS.ProcessEnv>;
|
|
16
27
|
}) => UltramodernReleaseIdentity;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type RendererIdentity, type RendererName, type RendererProfile, type RendererRouterBindings, type RouterFramework } from '@modern-js/backend-federation-contracts';
|
|
2
|
+
export type RendererProfileKeyInput = RendererProfile & {
|
|
3
|
+
readonly dependencies?: Readonly<Record<string, string>>;
|
|
4
|
+
};
|
|
5
|
+
export interface RendererBuildIdentityOptions {
|
|
6
|
+
projectRoot: string;
|
|
7
|
+
renderer: RendererName;
|
|
8
|
+
profile: RendererProfileKeyInput;
|
|
9
|
+
entryNames: readonly string[];
|
|
10
|
+
mode: 'development' | 'production';
|
|
11
|
+
/** Delivery-unit app id; defaults to the application package name. */
|
|
12
|
+
appId?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The declared delivery unit's release identity, resolved before the build
|
|
15
|
+
* by `resolveUltramodernReleaseIdentity`. A promotable production build
|
|
16
|
+
* adopts its buildMarker as the buildId, so consumers that resolve the unit
|
|
17
|
+
* identity before compiling see the marker the built artifacts carry.
|
|
18
|
+
*/
|
|
19
|
+
deliveryUnit?: {
|
|
20
|
+
readonly unitId: string;
|
|
21
|
+
readonly buildMarker: string;
|
|
22
|
+
readonly sourceRevision: string;
|
|
23
|
+
};
|
|
24
|
+
/** Externally authenticated source revision (CI) for an undeclared app. */
|
|
25
|
+
sourceRevision?: string;
|
|
26
|
+
/** Actual final entry ownership, supplied by the selected renderer composition. */
|
|
27
|
+
routerBindings: RendererRouterBindings;
|
|
28
|
+
/** Admitted router frameworks, supplied by the selected renderer owner. */
|
|
29
|
+
routerFrameworks?: readonly RouterFramework[];
|
|
30
|
+
}
|
|
31
|
+
export interface RendererBuildIdentities {
|
|
32
|
+
readonly identities: Readonly<Record<string, RendererIdentity>>;
|
|
33
|
+
readonly buildId: string;
|
|
34
|
+
readonly profileKey: string;
|
|
35
|
+
readonly sourceRevision: string;
|
|
36
|
+
readonly routerBindings: RendererRouterBindings;
|
|
37
|
+
}
|
|
38
|
+
/** Renderer, protocol and installed renderer/framework/compiler versions. */
|
|
39
|
+
export declare function rendererProfileKey(profile: RendererProfileKeyInput): string;
|
|
40
|
+
/** Resolve once per build before emitting entries; never rehashes sources. */
|
|
41
|
+
export declare function resolveRendererBuildIdentities(options: RendererBuildIdentityOptions): RendererBuildIdentities;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create the worker route data request handler for an entry's route loaders
|
|
3
|
+
* (the `routes` export of its generated `route-server-loaders.js`).
|
|
4
|
+
*
|
|
5
|
+
* The handler takes the Node data handler's options and resolves to
|
|
6
|
+
* `undefined` for requests that are not route data requests of a known entry,
|
|
7
|
+
* so the caller renders the page instead.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createRouteDataRequestHandler(routes: any): ({ request, serverRoutes, context, onTiming }: {
|
|
10
|
+
context?: {} | undefined;
|
|
11
|
+
onTiming: any;
|
|
12
|
+
request: any;
|
|
13
|
+
serverRoutes: any;
|
|
14
|
+
}) => Promise<any>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { CloudflareWorkerSecurityConfig } from './config.js';
|
|
2
|
+
export declare const REFERENCE_TOPOLOGY_PATH = "topology/reference-topology.json";
|
|
3
|
+
export declare const DEVELOPMENT_OVERLAY_PATH = "topology/local-overlays/development.json";
|
|
4
|
+
/** Fields consumed from the existing workspace topology by native plugins. */
|
|
5
|
+
export type TopologyApp = {
|
|
6
|
+
id?: unknown;
|
|
7
|
+
domain?: unknown;
|
|
8
|
+
kind?: unknown;
|
|
9
|
+
path?: unknown;
|
|
10
|
+
package?: unknown;
|
|
11
|
+
portEnv?: unknown;
|
|
12
|
+
surfaceProfile?: unknown;
|
|
13
|
+
verticalRefs?: unknown;
|
|
14
|
+
cloudflare?: {
|
|
15
|
+
workerName?: unknown;
|
|
16
|
+
publicUrlEnv?: unknown;
|
|
17
|
+
compatibilityDate?: unknown;
|
|
18
|
+
security?: CloudflareWorkerSecurityConfig;
|
|
19
|
+
};
|
|
20
|
+
api?: {
|
|
21
|
+
bff?: {
|
|
22
|
+
prefix?: unknown;
|
|
23
|
+
};
|
|
24
|
+
protocol?: unknown;
|
|
25
|
+
rpcPath?: unknown;
|
|
26
|
+
rpcSerialization?: unknown;
|
|
27
|
+
stem?: unknown;
|
|
28
|
+
};
|
|
29
|
+
moduleFederation?: {
|
|
30
|
+
name?: unknown;
|
|
31
|
+
manifestUrl?: unknown;
|
|
32
|
+
exposes?: unknown;
|
|
33
|
+
verticalRefs?: unknown;
|
|
34
|
+
remotes?: unknown;
|
|
35
|
+
};
|
|
36
|
+
backendFederation?: {
|
|
37
|
+
name?: unknown;
|
|
38
|
+
versionBoundary?: {
|
|
39
|
+
ui?: {
|
|
40
|
+
manifestUrl?: unknown;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
executionSurfaces?: {
|
|
44
|
+
node?: {
|
|
45
|
+
remoteName?: unknown;
|
|
46
|
+
manifestUrl?: unknown;
|
|
47
|
+
containerEntry?: unknown;
|
|
48
|
+
remoteType?: unknown;
|
|
49
|
+
};
|
|
50
|
+
cloudflare?: {
|
|
51
|
+
workerName?: unknown;
|
|
52
|
+
workerDispatch?: {
|
|
53
|
+
serviceBinding?: unknown;
|
|
54
|
+
serviceBindingEnv?: unknown;
|
|
55
|
+
dispatchWorkerNameEnv?: unknown;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
deliveryUnit?: {
|
|
61
|
+
unitId?: unknown;
|
|
62
|
+
buildMarker?: unknown;
|
|
63
|
+
sourceRevision?: unknown;
|
|
64
|
+
packageName?: unknown;
|
|
65
|
+
version?: unknown;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
export type DevelopmentOverlay = {
|
|
69
|
+
schemaVersion?: unknown;
|
|
70
|
+
ports?: Record<string, unknown>;
|
|
71
|
+
manifests?: Record<string, unknown>;
|
|
72
|
+
serverExecution?: Record<string, {
|
|
73
|
+
node?: {
|
|
74
|
+
remoteName?: unknown;
|
|
75
|
+
manifestUrl?: unknown;
|
|
76
|
+
containerEntry?: unknown;
|
|
77
|
+
remoteType?: unknown;
|
|
78
|
+
};
|
|
79
|
+
}>;
|
|
80
|
+
};
|
|
81
|
+
export type ReferenceTopology = {
|
|
82
|
+
schemaVersion?: unknown;
|
|
83
|
+
shell?: TopologyApp;
|
|
84
|
+
shells?: TopologyApp[];
|
|
85
|
+
verticals?: TopologyApp[];
|
|
86
|
+
};
|
|
87
|
+
export declare const normalizeRelativePath: (value: string) => string;
|
|
88
|
+
/** Shared by the generated route and the native Worker service binding. */
|
|
89
|
+
export declare const distributedSsrFragmentSlug: (expose: string) => string;
|
|
90
|
+
export declare const distributedSsrFragmentRoute: (expose: string) => string;
|
|
91
|
+
export declare const findWorkspaceRoot: (appDirectory: string) => string | undefined;
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bleedingdev/modern-js-app-tools-extensions",
|
|
3
3
|
"description": "Fork-owned UltraModern.js app-tools extensions for Cloudflare delivery and release envelopes.",
|
|
4
|
-
"homepage": "https://github.com/
|
|
4
|
+
"homepage": "https://github.com/ultramodernjs/ultramodern.js#readme",
|
|
5
5
|
"bugs": {
|
|
6
|
-
"url": "https://github.com/
|
|
6
|
+
"url": "https://github.com/ultramodernjs/ultramodern.js/issues"
|
|
7
7
|
},
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/
|
|
10
|
+
"url": "git+https://github.com/ultramodernjs/ultramodern.js.git",
|
|
11
11
|
"directory": "packages/solutions/app-tools-extensions"
|
|
12
12
|
},
|
|
13
13
|
"license": "MIT",
|
|
14
|
-
"version": "3.9.
|
|
14
|
+
"version": "3.9.3-ultramodern.10",
|
|
15
15
|
"files": [
|
|
16
16
|
"dist",
|
|
17
17
|
"src"
|
|
@@ -62,6 +62,11 @@
|
|
|
62
62
|
"import": "./dist/esm-node/cloudflare-output-verifier/*.mjs",
|
|
63
63
|
"require": "./dist/cjs/cloudflare-output-verifier/*.js"
|
|
64
64
|
},
|
|
65
|
+
"./internal-effect-discovery": {
|
|
66
|
+
"types": "./dist/types/build-config/internal-effect-discovery.d.ts",
|
|
67
|
+
"import": "./dist/cjs/build-config/internal-effect-discovery.js",
|
|
68
|
+
"require": "./dist/cjs/build-config/internal-effect-discovery.js"
|
|
69
|
+
},
|
|
65
70
|
"./config": {
|
|
66
71
|
"types": "./dist/types/config.d.ts",
|
|
67
72
|
"import": "./dist/esm-node/config.mjs",
|
|
@@ -77,6 +82,16 @@
|
|
|
77
82
|
"import": "./dist/esm-node/release-envelope/*.mjs",
|
|
78
83
|
"require": "./dist/cjs/release-envelope/*.js"
|
|
79
84
|
},
|
|
85
|
+
"./release-envelope/contract": {
|
|
86
|
+
"types": "./dist/types/release-envelope/contract.d.mts",
|
|
87
|
+
"import": "./dist/esm-node/release-envelope/contract.mjs",
|
|
88
|
+
"require": "./dist/cjs/release-envelope/contract.js"
|
|
89
|
+
},
|
|
90
|
+
"./renderer-build-identity": {
|
|
91
|
+
"types": "./dist/types/renderer-build-identity.d.ts",
|
|
92
|
+
"import": "./dist/esm-node/renderer-build-identity.mjs",
|
|
93
|
+
"require": "./dist/cjs/renderer-build-identity.js"
|
|
94
|
+
},
|
|
80
95
|
"./release-identity": {
|
|
81
96
|
"types": "./dist/types/release-identity.d.ts",
|
|
82
97
|
"import": "./dist/esm-node/release-identity.mjs",
|
|
@@ -116,6 +131,21 @@
|
|
|
116
131
|
"types": "./dist/types/deploy-output/target.d.ts",
|
|
117
132
|
"import": "./dist/esm-node/deploy-output/target.mjs",
|
|
118
133
|
"require": "./dist/cjs/deploy-output/target.js"
|
|
134
|
+
},
|
|
135
|
+
"./deploy-output/trace-files": {
|
|
136
|
+
"types": "./dist/types/deploy-output/trace-files.d.ts",
|
|
137
|
+
"import": "./dist/esm-node/deploy-output/trace-files.mjs",
|
|
138
|
+
"require": "./dist/cjs/deploy-output/trace-files.js"
|
|
139
|
+
},
|
|
140
|
+
"./workspace-topology": {
|
|
141
|
+
"types": "./dist/types/workspace-topology.d.ts",
|
|
142
|
+
"import": "./dist/esm-node/workspace-topology.mjs",
|
|
143
|
+
"require": "./dist/cjs/workspace-topology.js"
|
|
144
|
+
},
|
|
145
|
+
"./module-federation-config": {
|
|
146
|
+
"types": "./dist/types/module-federation-config/index.d.ts",
|
|
147
|
+
"import": "./dist/esm-node/module-federation-config/index.mjs",
|
|
148
|
+
"require": "./dist/cjs/module-federation-config/index.js"
|
|
119
149
|
}
|
|
120
150
|
},
|
|
121
151
|
"typesVersions": {
|
|
@@ -135,45 +165,72 @@
|
|
|
135
165
|
],
|
|
136
166
|
"deploy-output/target": [
|
|
137
167
|
"./dist/types/deploy-output/target.d.ts"
|
|
168
|
+
],
|
|
169
|
+
"deploy-output/trace-files": [
|
|
170
|
+
"./dist/types/deploy-output/trace-files.d.ts"
|
|
138
171
|
]
|
|
139
172
|
}
|
|
140
173
|
},
|
|
141
174
|
"engines": {
|
|
142
|
-
"node": ">=26.
|
|
175
|
+
"node": ">=26.12.0"
|
|
143
176
|
},
|
|
144
177
|
"dependencies": {
|
|
145
|
-
"@babel/parser": "^8.0.
|
|
146
|
-
"@babel/traverse": "^8.0.
|
|
147
|
-
"@
|
|
148
|
-
"@modern-js/
|
|
149
|
-
"@modern-js/
|
|
150
|
-
"@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.9.
|
|
151
|
-
"@modern-js/runtime-
|
|
152
|
-
"@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.
|
|
153
|
-
"@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.
|
|
154
|
-
"@modern-js/
|
|
155
|
-
"@modern-js/
|
|
178
|
+
"@babel/parser": "^8.0.7",
|
|
179
|
+
"@babel/traverse": "^8.0.7",
|
|
180
|
+
"@modern-js/backend-federation-contracts": "npm:@bleedingdev/modern-js-backend-federation-contracts@3.9.3-ultramodern.10",
|
|
181
|
+
"@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.9.3-ultramodern.10",
|
|
182
|
+
"@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.3-ultramodern.10",
|
|
183
|
+
"@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.9.3-ultramodern.10",
|
|
184
|
+
"@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.9.3-ultramodern.10",
|
|
185
|
+
"@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.3-ultramodern.10",
|
|
186
|
+
"@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.3-ultramodern.10",
|
|
187
|
+
"@modern-js/surface-resolution": "npm:@bleedingdev/modern-js-surface-resolution@3.9.3-ultramodern.10",
|
|
188
|
+
"@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.3-ultramodern.10",
|
|
189
|
+
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.3-ultramodern.10",
|
|
156
190
|
"@swc/helpers": "^0.5.23",
|
|
191
|
+
"@vercel/nft": "^1.11.0",
|
|
157
192
|
"compression-webpack-plugin": "^12.0.0",
|
|
158
193
|
"esbuild": "^0.28.2",
|
|
159
|
-
"
|
|
194
|
+
"jsonc-parser": "3.3.1",
|
|
195
|
+
"std-env": "4.3.0"
|
|
160
196
|
},
|
|
161
197
|
"peerDependencies": {
|
|
162
|
-
"@
|
|
198
|
+
"@loadable/component": "5.16.7",
|
|
199
|
+
"@modern-js/runtime-renderer-extensions": "3.9.3-ultramodern.10",
|
|
200
|
+
"@rsbuild/core": "2.2.13",
|
|
201
|
+
"react": "^19.3.1"
|
|
202
|
+
},
|
|
203
|
+
"peerDependenciesMeta": {
|
|
204
|
+
"@loadable/component": {
|
|
205
|
+
"optional": true
|
|
206
|
+
},
|
|
207
|
+
"@modern-js/runtime-renderer-extensions": {
|
|
208
|
+
"optional": true
|
|
209
|
+
},
|
|
210
|
+
"react": {
|
|
211
|
+
"optional": true
|
|
212
|
+
}
|
|
163
213
|
},
|
|
164
214
|
"devDependencies": {
|
|
165
|
-
"@
|
|
166
|
-
"@modern-js/
|
|
167
|
-
"@
|
|
168
|
-
"@
|
|
169
|
-
"@
|
|
215
|
+
"@loadable/component": "5.16.7",
|
|
216
|
+
"@modern-js/bff-effect": "npm:@bleedingdev/modern-js-bff-effect@3.9.3-ultramodern.10",
|
|
217
|
+
"@modern-js/plugin-bff-extensions": "npm:@bleedingdev/modern-js-plugin-bff-extensions@3.9.3-ultramodern.10",
|
|
218
|
+
"@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.9.3-ultramodern.10",
|
|
219
|
+
"@modern-js/runtime-renderer-extensions": "npm:@bleedingdev/modern-js-runtime-renderer-extensions@3.9.3-ultramodern.10",
|
|
220
|
+
"@module-federation/modern-js-v3": "2.9.2",
|
|
221
|
+
"@module-federation/runtime-tools": "2.9.2",
|
|
222
|
+
"@rsbuild/core": "2.2.13",
|
|
223
|
+
"@rslib/core": "1.0.3",
|
|
170
224
|
"@scripts/rstest-config": "2.66.0",
|
|
171
225
|
"@types/babel__traverse": "7.28.0",
|
|
172
|
-
"@types/node": "^26.
|
|
173
|
-
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
226
|
+
"@types/node": "^26.6.5",
|
|
174
227
|
"core-js": "^3.50.0",
|
|
175
|
-
"effect": "4.0.
|
|
176
|
-
"
|
|
228
|
+
"effect": "4.0.5",
|
|
229
|
+
"miniflare": "5.20261012.0-beta",
|
|
230
|
+
"ndepe": "^0.1.13",
|
|
231
|
+
"pg": "8.23.1",
|
|
232
|
+
"react": "^19.3.1",
|
|
233
|
+
"react-dom": "^19.3.1"
|
|
177
234
|
},
|
|
178
235
|
"sideEffects": false,
|
|
179
236
|
"publishConfig": {
|
|
@@ -185,5 +242,8 @@
|
|
|
185
242
|
"build": "rslib build && pnpm run verify:public-surface",
|
|
186
243
|
"test": "rstest",
|
|
187
244
|
"verify:public-surface": "node ./tests/build-config/verify-public-surface.mjs"
|
|
245
|
+
},
|
|
246
|
+
"ultramodern": {
|
|
247
|
+
"sourceName": "@modern-js/app-tools-extensions"
|
|
188
248
|
}
|
|
189
249
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import {
|
|
3
3
|
BACKEND_FEDERATION_EFFECT_EXPOSE as BACKEND_EXPOSE,
|
|
4
|
-
BACKEND_FEDERATION_MANIFEST_FILE as BACKEND_MANIFEST_FILE,
|
|
5
4
|
BACKEND_FEDERATION_REMOTE_ENTRY_FILE as BACKEND_REMOTE_ENTRY_FILE,
|
|
6
5
|
BACKEND_FEDERATION_CONTRACT_VERSION as CONTRACT_VERSION,
|
|
7
6
|
formatBackendFederationValidationErrors,
|
|
@@ -65,28 +64,34 @@ export const createBackendRemoteEntrySource = async (
|
|
|
65
64
|
...(app.sourceRevision ? { sourceRevision: app.sourceRevision } : {}),
|
|
66
65
|
};
|
|
67
66
|
const source = `// Generated by Modern.js backend federation build.
|
|
68
|
-
import
|
|
67
|
+
import { adoptEffectBffShareScope } from '@modern-js/bff-effect/effect-edge';
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
69
|
+
// The expose evaluates lazily so defineEffectBff registers its handler
|
|
70
|
+
// factories with the registry the host shares through init().
|
|
71
|
+
let exposedModule;
|
|
72
|
+
const loadExposedModule = () =>
|
|
73
|
+
(exposedModule ??= import(${JSON.stringify(effectApiSpecifier)}).then(exposedNamespace => ({
|
|
74
|
+
...exposedNamespace,
|
|
75
|
+
backendFederationContract: {
|
|
76
|
+
...(exposedNamespace.backendFederationContract ?? {}),
|
|
77
|
+
compatibility: {
|
|
78
|
+
...(exposedNamespace.backendFederationContract?.compatibility ?? {}),
|
|
79
|
+
...${JSON.stringify(compatibility)},
|
|
80
|
+
},
|
|
81
|
+
name: ${JSON.stringify(app.backendName)},
|
|
82
|
+
role: 'microvertical-server',
|
|
83
|
+
runtimeFramework: 'effect',
|
|
84
|
+
strictEffectApproach: true,
|
|
77
85
|
},
|
|
78
|
-
|
|
79
|
-
role: 'microvertical-server',
|
|
80
|
-
runtimeFramework: 'effect',
|
|
81
|
-
strictEffectApproach: true,
|
|
82
|
-
},
|
|
83
|
-
};
|
|
86
|
+
})));
|
|
84
87
|
const exposedModules = {
|
|
85
|
-
${JSON.stringify(BACKEND_EXPOSE)}:
|
|
88
|
+
${JSON.stringify(BACKEND_EXPOSE)}: loadExposedModule,
|
|
86
89
|
};
|
|
87
90
|
const __modernjsBackendFederation = ${JSON.stringify(containerMetadata)};
|
|
88
91
|
|
|
89
|
-
function init() {
|
|
92
|
+
function init(shareScope) {
|
|
93
|
+
return adoptEffectBffShareScope(shareScope);
|
|
94
|
+
}
|
|
90
95
|
|
|
91
96
|
function get(id) {
|
|
92
97
|
const load = exposedModules[id];
|
|
@@ -204,8 +209,12 @@ export const createBackendManifest = (
|
|
|
204
209
|
source: {
|
|
205
210
|
module: sourceModule,
|
|
206
211
|
},
|
|
207
|
-
|
|
208
|
-
|
|
212
|
+
...(app.apiProtocol === 'rpc'
|
|
213
|
+
? { rpcPath: app.rpcPath, rpcSerialization: 'json' }
|
|
214
|
+
: {
|
|
215
|
+
readinessPath: `${app.apiPrefix}/${app.apiStem}/readiness`,
|
|
216
|
+
openapiPath: `${app.apiPrefix}/openapi.json`,
|
|
217
|
+
}),
|
|
209
218
|
...(app.deliveryUnit ? { deliveryUnit: app.deliveryUnit } : {}),
|
|
210
219
|
versionBoundary: {
|
|
211
220
|
invariant: 'web-and-api-same-build',
|