@bleedingdev/modern-js-plugin-bff 3.5.0-ultramodern.30 → 3.5.0-ultramodern.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/compress.js +52 -0
- package/dist/cjs/cli/generator.js +149 -0
- package/dist/cjs/cli/prefix.js +50 -0
- package/dist/cjs/cli/watch.js +51 -0
- package/dist/cjs/cli.js +11 -130
- package/dist/cjs/runtime/data-platform/batch/queue.js +287 -0
- package/dist/cjs/runtime/data-platform/batch/request.js +98 -0
- package/dist/cjs/runtime/data-platform/batch/response.js +67 -0
- package/dist/cjs/runtime/data-platform/batch/telemetry.js +67 -0
- package/dist/cjs/runtime/data-platform/batch/url.js +69 -0
- package/dist/cjs/runtime/data-platform/batch-transport.js +59 -0
- package/dist/cjs/runtime/data-platform/codec.js +155 -0
- package/dist/cjs/runtime/data-platform/index.js +30 -633
- package/dist/cjs/runtime/data-platform/invalidation.js +61 -0
- package/dist/cjs/runtime/data-platform/trace.js +73 -0
- package/dist/cjs/runtime/data-platform/types.js +48 -0
- package/dist/cjs/runtime/data-platform/validation.js +178 -0
- package/dist/cjs/runtime/effect/adapter/constants.js +44 -0
- package/dist/cjs/runtime/effect/adapter/cross-project-policy.js +61 -0
- package/dist/cjs/runtime/effect/adapter/entry.js +77 -0
- package/dist/cjs/runtime/effect/adapter/error-response.js +79 -0
- package/dist/cjs/runtime/effect/adapter/handler.js +53 -0
- package/dist/cjs/runtime/effect/adapter.js +12 -115
- package/dist/cjs/runtime/effect/backend-federation/entry.js +99 -0
- package/dist/cjs/runtime/effect/backend-federation/load.js +57 -0
- package/dist/cjs/runtime/effect/backend-federation/plugin.js +53 -0
- package/dist/cjs/runtime/effect/backend-federation/remotes.js +50 -0
- package/dist/cjs/runtime/effect/backend-federation/runtime.js +64 -0
- package/dist/cjs/runtime/effect/backend-federation/types.js +18 -0
- package/dist/cjs/runtime/effect/backend-federation/utils.js +48 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/errors.js +83 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/index.js +55 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/load.js +74 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/metadata.js +101 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/reference.js +117 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/remote.js +68 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/types.js +18 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/validation.js +108 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest.js +32 -257
- package/dist/cjs/runtime/effect/backend-federation.js +11 -139
- package/dist/cjs/runtime/effect/handler/batch-handler.js +161 -0
- package/dist/cjs/runtime/effect/handler/batch.js +195 -0
- package/dist/cjs/runtime/effect/handler/definition.js +101 -0
- package/dist/cjs/runtime/effect/handler/envelope.js +104 -0
- package/dist/cjs/runtime/effect/handler/http.js +96 -0
- package/dist/cjs/runtime/effect/handler/openapi.js +57 -0
- package/dist/cjs/runtime/effect/handler/routing.js +100 -0
- package/dist/cjs/runtime/effect/handler/rpc.js +63 -0
- package/dist/cjs/runtime/effect/handler/types.js +43 -0
- package/dist/cjs/runtime/effect/handler.js +35 -526
- package/dist/cjs/runtime/effect/rpcSerialization.js +54 -0
- package/dist/cjs/runtime/effect-client/batch.js +73 -0
- package/dist/cjs/runtime/effect-client/envelope.js +145 -0
- package/dist/cjs/runtime/effect-client/guards.js +44 -0
- package/dist/cjs/runtime/effect-client/index.js +6 -16
- package/dist/cjs/runtime/effect-client/request-context.js +64 -0
- package/dist/cjs/runtime/effect-client/request.js +66 -0
- package/dist/cjs/runtime/effect-client/runtime.js +12 -178
- package/dist/cjs/runtime/effect-client/types.js +18 -0
- package/dist/cjs/runtime/safe-failure.js +2 -1
- package/dist/cjs/utils/client-generator/files.js +152 -0
- package/dist/cjs/utils/client-generator/generate.js +138 -0
- package/dist/cjs/utils/client-generator/index.js +83 -0
- package/dist/cjs/utils/client-generator/package-json.js +132 -0
- package/dist/cjs/utils/client-generator/write-package.js +125 -0
- package/dist/cjs/utils/clientGenerator.js +26 -303
- package/dist/cjs/utils/effect-client-generator/generator.js +64 -0
- package/dist/cjs/utils/effect-client-generator/index.js +51 -0
- package/dist/cjs/utils/effect-client-generator/paths.js +73 -0
- package/dist/cjs/utils/effect-client-generator/rendering.js +231 -0
- package/dist/cjs/utils/effect-client-generator/runtime.js +84 -0
- package/dist/cjs/utils/effect-client-generator/types.js +18 -0
- package/dist/cjs/utils/effectClientGenerator.js +5 -262
- package/dist/esm/cli/compress.mjs +14 -0
- package/dist/esm/cli/generator.mjs +98 -0
- package/dist/esm/cli/prefix.mjs +9 -0
- package/dist/esm/cli/watch.mjs +13 -0
- package/dist/esm/cli.mjs +7 -121
- package/dist/esm/runtime/data-platform/batch/queue.mjs +246 -0
- package/dist/esm/runtime/data-platform/batch/request.mjs +45 -0
- package/dist/esm/runtime/data-platform/batch/response.mjs +23 -0
- package/dist/esm/runtime/data-platform/batch/telemetry.mjs +23 -0
- package/dist/esm/runtime/data-platform/batch/url.mjs +25 -0
- package/dist/esm/runtime/data-platform/batch-transport.mjs +12 -0
- package/dist/esm/runtime/data-platform/codec.mjs +90 -0
- package/dist/esm/runtime/data-platform/index.mjs +6 -610
- package/dist/esm/runtime/data-platform/invalidation.mjs +20 -0
- package/dist/esm/runtime/data-platform/trace.mjs +29 -0
- package/dist/esm/runtime/data-platform/types.mjs +4 -0
- package/dist/esm/runtime/data-platform/validation.mjs +128 -0
- package/dist/esm/runtime/effect/adapter/constants.mjs +6 -0
- package/dist/esm/runtime/effect/adapter/cross-project-policy.mjs +23 -0
- package/dist/esm/runtime/effect/adapter/entry.mjs +29 -0
- package/dist/esm/runtime/effect/adapter/error-response.mjs +41 -0
- package/dist/esm/runtime/effect/adapter/handler.mjs +15 -0
- package/dist/esm/runtime/effect/adapter.mjs +12 -105
- package/dist/esm/runtime/effect/backend-federation/entry.mjs +61 -0
- package/dist/esm/runtime/effect/backend-federation/load.mjs +19 -0
- package/dist/esm/runtime/effect/backend-federation/plugin.mjs +15 -0
- package/dist/esm/runtime/effect/backend-federation/remotes.mjs +12 -0
- package/dist/esm/runtime/effect/backend-federation/runtime.mjs +26 -0
- package/dist/esm/runtime/effect/backend-federation/types.mjs +0 -0
- package/dist/esm/runtime/effect/backend-federation/utils.mjs +7 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/errors.mjs +32 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/index.mjs +4 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/load.mjs +36 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/metadata.mjs +42 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/reference.mjs +76 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/remote.mjs +30 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/types.mjs +0 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/validation.mjs +64 -0
- package/dist/esm/runtime/effect/backend-federation-manifest.mjs +1 -237
- package/dist/esm/runtime/effect/backend-federation.mjs +4 -132
- package/dist/esm/runtime/effect/handler/batch-handler.mjs +123 -0
- package/dist/esm/runtime/effect/handler/batch.mjs +124 -0
- package/dist/esm/runtime/effect/handler/definition.mjs +60 -0
- package/dist/esm/runtime/effect/handler/envelope.mjs +63 -0
- package/dist/esm/runtime/effect/handler/http.mjs +58 -0
- package/dist/esm/runtime/effect/handler/openapi.mjs +19 -0
- package/dist/esm/runtime/effect/handler/routing.mjs +50 -0
- package/dist/esm/runtime/effect/handler/rpc.mjs +22 -0
- package/dist/esm/runtime/effect/handler/types.mjs +5 -0
- package/dist/esm/runtime/effect/handler.mjs +7 -499
- package/dist/esm/runtime/effect/rpcSerialization.mjs +16 -0
- package/dist/esm/runtime/effect-client/batch.mjs +35 -0
- package/dist/esm/runtime/effect-client/envelope.mjs +104 -0
- package/dist/esm/runtime/effect-client/guards.mjs +3 -0
- package/dist/esm/runtime/effect-client/index.mjs +5 -15
- package/dist/esm/runtime/effect-client/request-context.mjs +23 -0
- package/dist/esm/runtime/effect-client/request.mjs +28 -0
- package/dist/esm/runtime/effect-client/runtime.mjs +12 -178
- package/dist/esm/runtime/effect-client/types.mjs +0 -0
- package/dist/esm/runtime/safe-failure.mjs +2 -1
- package/dist/esm/utils/client-generator/files.mjs +68 -0
- package/dist/esm/utils/client-generator/generate.mjs +88 -0
- package/dist/esm/utils/client-generator/index.mjs +4 -0
- package/dist/esm/utils/client-generator/package-json.mjs +78 -0
- package/dist/esm/utils/client-generator/write-package.mjs +74 -0
- package/dist/esm/utils/clientGenerator.mjs +2 -293
- package/dist/esm/utils/effect-client-generator/generator.mjs +23 -0
- package/dist/esm/utils/effect-client-generator/index.mjs +3 -0
- package/dist/esm/utils/effect-client-generator/paths.mjs +25 -0
- package/dist/esm/utils/effect-client-generator/rendering.mjs +180 -0
- package/dist/esm/utils/effect-client-generator/runtime.mjs +33 -0
- package/dist/esm/utils/effect-client-generator/types.mjs +0 -0
- package/dist/esm/utils/effectClientGenerator.mjs +1 -249
- package/dist/esm-node/cli/compress.mjs +15 -0
- package/dist/esm-node/cli/generator.mjs +99 -0
- package/dist/esm-node/cli/prefix.mjs +10 -0
- package/dist/esm-node/cli/watch.mjs +14 -0
- package/dist/esm-node/cli.mjs +7 -121
- package/dist/esm-node/runtime/data-platform/batch/queue.mjs +247 -0
- package/dist/esm-node/runtime/data-platform/batch/request.mjs +46 -0
- package/dist/esm-node/runtime/data-platform/batch/response.mjs +24 -0
- package/dist/esm-node/runtime/data-platform/batch/telemetry.mjs +24 -0
- package/dist/esm-node/runtime/data-platform/batch/url.mjs +26 -0
- package/dist/esm-node/runtime/data-platform/batch-transport.mjs +13 -0
- package/dist/esm-node/runtime/data-platform/codec.mjs +91 -0
- package/dist/esm-node/runtime/data-platform/index.mjs +6 -610
- package/dist/esm-node/runtime/data-platform/invalidation.mjs +21 -0
- package/dist/esm-node/runtime/data-platform/trace.mjs +30 -0
- package/dist/esm-node/runtime/data-platform/types.mjs +5 -0
- package/dist/esm-node/runtime/data-platform/validation.mjs +129 -0
- package/dist/esm-node/runtime/effect/adapter/constants.mjs +7 -0
- package/dist/esm-node/runtime/effect/adapter/cross-project-policy.mjs +24 -0
- package/dist/esm-node/runtime/effect/adapter/entry.mjs +30 -0
- package/dist/esm-node/runtime/effect/adapter/error-response.mjs +42 -0
- package/dist/esm-node/runtime/effect/adapter/handler.mjs +16 -0
- package/dist/esm-node/runtime/effect/adapter.mjs +12 -105
- package/dist/esm-node/runtime/effect/backend-federation/entry.mjs +62 -0
- package/dist/esm-node/runtime/effect/backend-federation/load.mjs +20 -0
- package/dist/esm-node/runtime/effect/backend-federation/plugin.mjs +16 -0
- package/dist/esm-node/runtime/effect/backend-federation/remotes.mjs +13 -0
- package/dist/esm-node/runtime/effect/backend-federation/runtime.mjs +27 -0
- package/dist/esm-node/runtime/effect/backend-federation/types.mjs +1 -0
- package/dist/esm-node/runtime/effect/backend-federation/utils.mjs +8 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/errors.mjs +33 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/index.mjs +5 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/load.mjs +37 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/metadata.mjs +43 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/reference.mjs +77 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/remote.mjs +31 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/types.mjs +1 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest/validation.mjs +65 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest.mjs +1 -237
- package/dist/esm-node/runtime/effect/backend-federation.mjs +4 -132
- package/dist/esm-node/runtime/effect/handler/batch-handler.mjs +124 -0
- package/dist/esm-node/runtime/effect/handler/batch.mjs +125 -0
- package/dist/esm-node/runtime/effect/handler/definition.mjs +61 -0
- package/dist/esm-node/runtime/effect/handler/envelope.mjs +64 -0
- package/dist/esm-node/runtime/effect/handler/http.mjs +59 -0
- package/dist/esm-node/runtime/effect/handler/openapi.mjs +20 -0
- package/dist/esm-node/runtime/effect/handler/routing.mjs +51 -0
- package/dist/esm-node/runtime/effect/handler/rpc.mjs +23 -0
- package/dist/esm-node/runtime/effect/handler/types.mjs +6 -0
- package/dist/esm-node/runtime/effect/handler.mjs +7 -499
- package/dist/esm-node/runtime/effect/rpcSerialization.mjs +17 -0
- package/dist/esm-node/runtime/effect-client/batch.mjs +36 -0
- package/dist/esm-node/runtime/effect-client/envelope.mjs +105 -0
- package/dist/esm-node/runtime/effect-client/guards.mjs +4 -0
- package/dist/esm-node/runtime/effect-client/index.mjs +5 -15
- package/dist/esm-node/runtime/effect-client/request-context.mjs +24 -0
- package/dist/esm-node/runtime/effect-client/request.mjs +29 -0
- package/dist/esm-node/runtime/effect-client/runtime.mjs +12 -178
- package/dist/esm-node/runtime/effect-client/types.mjs +1 -0
- package/dist/esm-node/runtime/safe-failure.mjs +2 -1
- package/dist/esm-node/utils/client-generator/files.mjs +69 -0
- package/dist/esm-node/utils/client-generator/generate.mjs +89 -0
- package/dist/esm-node/utils/client-generator/index.mjs +5 -0
- package/dist/esm-node/utils/client-generator/package-json.mjs +79 -0
- package/dist/esm-node/utils/client-generator/write-package.mjs +75 -0
- package/dist/esm-node/utils/clientGenerator.mjs +2 -293
- package/dist/esm-node/utils/effect-client-generator/generator.mjs +24 -0
- package/dist/esm-node/utils/effect-client-generator/index.mjs +4 -0
- package/dist/esm-node/utils/effect-client-generator/paths.mjs +26 -0
- package/dist/esm-node/utils/effect-client-generator/rendering.mjs +181 -0
- package/dist/esm-node/utils/effect-client-generator/runtime.mjs +35 -0
- package/dist/esm-node/utils/effect-client-generator/types.mjs +1 -0
- package/dist/esm-node/utils/effectClientGenerator.mjs +2 -251
- package/dist/types/cli/compress.d.ts +2 -0
- package/dist/types/cli/generator.d.ts +7 -0
- package/dist/types/cli/prefix.d.ts +2 -0
- package/dist/types/cli/watch.d.ts +1 -0
- package/dist/types/cli.d.ts +0 -1
- package/dist/types/runtime/data-platform/batch/queue.d.ts +25 -0
- package/dist/types/runtime/data-platform/batch/request.d.ts +13 -0
- package/dist/types/runtime/data-platform/batch/response.d.ts +4 -0
- package/dist/types/runtime/data-platform/batch/telemetry.d.ts +4 -0
- package/dist/types/runtime/data-platform/batch/url.d.ts +4 -0
- package/dist/types/runtime/data-platform/batch-transport.d.ts +3 -0
- package/dist/types/runtime/data-platform/codec.d.ts +17 -0
- package/dist/types/runtime/data-platform/index.d.ts +7 -191
- package/dist/types/runtime/data-platform/invalidation.d.ts +8 -0
- package/dist/types/runtime/data-platform/trace.d.ts +4 -0
- package/dist/types/runtime/data-platform/types.d.ts +146 -0
- package/dist/types/runtime/data-platform/validation.d.ts +29 -0
- package/dist/types/runtime/effect/adapter/constants.d.ts +1 -0
- package/dist/types/runtime/effect/adapter/cross-project-policy.d.ts +4 -0
- package/dist/types/runtime/effect/adapter/entry.d.ts +2 -0
- package/dist/types/runtime/effect/adapter/error-response.d.ts +2 -0
- package/dist/types/runtime/effect/adapter/handler.d.ts +4 -0
- package/dist/types/runtime/effect/adapter.d.ts +4 -13
- package/dist/types/runtime/effect/backend-federation/entry.d.ts +2 -0
- package/dist/types/runtime/effect/backend-federation/load.d.ts +2 -0
- package/dist/types/runtime/effect/backend-federation/plugin.d.ts +3 -0
- package/dist/types/runtime/effect/backend-federation/remotes.d.ts +2 -0
- package/dist/types/runtime/effect/backend-federation/runtime.d.ts +3 -0
- package/dist/types/runtime/effect/backend-federation/types.d.ts +58 -0
- package/dist/types/runtime/effect/backend-federation/utils.d.ts +2 -0
- package/dist/types/runtime/effect/backend-federation-manifest/errors.d.ts +11 -0
- package/dist/types/runtime/effect/backend-federation-manifest/index.d.ts +6 -0
- package/dist/types/runtime/effect/backend-federation-manifest/load.d.ts +3 -0
- package/dist/types/runtime/effect/backend-federation-manifest/metadata.d.ts +18 -0
- package/dist/types/runtime/effect/backend-federation-manifest/reference.d.ts +3 -0
- package/dist/types/runtime/effect/backend-federation-manifest/remote.d.ts +3 -0
- package/dist/types/runtime/effect/backend-federation-manifest/types.d.ts +51 -0
- package/dist/types/runtime/effect/backend-federation-manifest/validation.d.ts +5 -0
- package/dist/types/runtime/effect/backend-federation-manifest.d.ts +1 -60
- package/dist/types/runtime/effect/backend-federation.d.ts +6 -60
- package/dist/types/runtime/effect/handler/batch-handler.d.ts +11 -0
- package/dist/types/runtime/effect/handler/batch.d.ts +17 -0
- package/dist/types/runtime/effect/handler/definition.d.ts +17 -0
- package/dist/types/runtime/effect/handler/envelope.d.ts +13 -0
- package/dist/types/runtime/effect/handler/http.d.ts +14 -0
- package/dist/types/runtime/effect/handler/openapi.d.ts +4 -0
- package/dist/types/runtime/effect/handler/routing.d.ts +5 -0
- package/dist/types/runtime/effect/handler/rpc.d.ts +7 -0
- package/dist/types/runtime/effect/handler/types.d.ts +148 -0
- package/dist/types/runtime/effect/handler.d.ts +3 -173
- package/dist/types/runtime/effect/rpcSerialization.d.ts +3 -0
- package/dist/types/runtime/effect-client/batch.d.ts +2 -0
- package/dist/types/runtime/effect-client/envelope.d.ts +15 -0
- package/dist/types/runtime/effect-client/guards.d.ts +2 -0
- package/dist/types/runtime/effect-client/request-context.d.ts +3 -0
- package/dist/types/runtime/effect-client/request.d.ts +1 -0
- package/dist/types/runtime/effect-client/runtime.d.ts +2 -68
- package/dist/types/runtime/effect-client/types.d.ts +68 -0
- package/dist/types/utils/client-generator/files.d.ts +28 -0
- package/dist/types/utils/client-generator/generate.d.ts +26 -0
- package/dist/types/utils/client-generator/index.d.ts +7 -0
- package/dist/types/utils/client-generator/package-json.d.ts +16 -0
- package/dist/types/utils/client-generator/write-package.d.ts +6 -0
- package/dist/types/utils/clientGenerator.d.ts +2 -37
- package/dist/types/utils/crossProjectServerPolicy.d.ts +3 -2
- package/dist/types/utils/effect-client-generator/generator.d.ts +10 -0
- package/dist/types/utils/effect-client-generator/index.d.ts +4 -0
- package/dist/types/utils/effect-client-generator/paths.d.ts +5 -0
- package/dist/types/utils/effect-client-generator/rendering.d.ts +4 -0
- package/dist/types/utils/effect-client-generator/runtime.d.ts +8 -0
- package/dist/types/utils/effect-client-generator/types.d.ts +26 -0
- package/dist/types/utils/effectClientGenerator.d.ts +2 -41
- package/package.json +13 -13
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data-platform envelope (`x-modernjs-data-envelope`): the TRANSPORT/CACHE
|
|
3
|
+
* contract of the effect lane — protocol versioning, cache scope keys,
|
|
4
|
+
* selection plans, batching and hydration checksums.
|
|
5
|
+
*
|
|
6
|
+
* Boundary note (one envelope system per concern): cross-project
|
|
7
|
+
* AUTHORIZATION is the bff-core policy's job (`x-modernjs-bff-envelope` +
|
|
8
|
+
* operation contracts, evaluated server-side in both the hono and effect
|
|
9
|
+
* lanes). Nothing in this module is a trust boundary; treat every value
|
|
10
|
+
* here as client-asserted cache metadata.
|
|
11
|
+
*/
|
|
12
|
+
export type DataRequestMode = 'cache-first' | 'stale-while-revalidate' | 'network-only';
|
|
13
|
+
export type DataMutationMode = 'optimistic' | 'pessimistic' | 'fire-and-forget';
|
|
14
|
+
export type SelectionPlan = {
|
|
15
|
+
[field: string]: true | SelectionPlan;
|
|
16
|
+
};
|
|
17
|
+
export interface OperationDescriptor {
|
|
18
|
+
appNamespace: string;
|
|
19
|
+
apiId: string;
|
|
20
|
+
group: string;
|
|
21
|
+
endpoint: string;
|
|
22
|
+
schemaHash?: string;
|
|
23
|
+
version?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CacheScope {
|
|
26
|
+
appNamespace: string;
|
|
27
|
+
origin: string;
|
|
28
|
+
tenantId?: string;
|
|
29
|
+
userId?: string;
|
|
30
|
+
sessionId?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface TraceContext {
|
|
33
|
+
traceId: string;
|
|
34
|
+
spanId: string;
|
|
35
|
+
sampled: boolean;
|
|
36
|
+
parentSpanId?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface RequestEnvelope<Input = unknown> {
|
|
39
|
+
protocolVersion: 1;
|
|
40
|
+
operationId: string;
|
|
41
|
+
appNamespace: string;
|
|
42
|
+
origin: string;
|
|
43
|
+
requestMode: DataRequestMode;
|
|
44
|
+
mutationMode?: DataMutationMode;
|
|
45
|
+
scopeKey: string;
|
|
46
|
+
input: Input;
|
|
47
|
+
inputHash: string;
|
|
48
|
+
selectionPlan?: SelectionPlan;
|
|
49
|
+
selectionHash?: string;
|
|
50
|
+
traceparent?: string;
|
|
51
|
+
timestamp: number;
|
|
52
|
+
}
|
|
53
|
+
export interface HydrationEnvelope<Payload = unknown> {
|
|
54
|
+
protocolVersion: 1;
|
|
55
|
+
runtimeVersion: string;
|
|
56
|
+
appNamespace: string;
|
|
57
|
+
origin: string;
|
|
58
|
+
createdAt: number;
|
|
59
|
+
payload: Payload;
|
|
60
|
+
checksum: string;
|
|
61
|
+
}
|
|
62
|
+
export interface InvalidationEvent {
|
|
63
|
+
sourceNamespace: string;
|
|
64
|
+
sourceOperationId: string;
|
|
65
|
+
scopeKey: string;
|
|
66
|
+
targetNamespaces?: string[];
|
|
67
|
+
targetOperationIds?: string[];
|
|
68
|
+
}
|
|
69
|
+
export interface InvalidationSubscriber {
|
|
70
|
+
namespace: string;
|
|
71
|
+
operationIds?: string[];
|
|
72
|
+
scopeKey?: string;
|
|
73
|
+
acceptCrossNamespace?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface DataBatchRequestItem {
|
|
76
|
+
id: string;
|
|
77
|
+
path: string;
|
|
78
|
+
method: string;
|
|
79
|
+
headers?: Record<string, string>;
|
|
80
|
+
body?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface DataBatchRequestPayload {
|
|
83
|
+
protocolVersion: 1;
|
|
84
|
+
batchId: string;
|
|
85
|
+
sentAt: number;
|
|
86
|
+
items: DataBatchRequestItem[];
|
|
87
|
+
}
|
|
88
|
+
export interface DataBatchResponseItem {
|
|
89
|
+
id: string;
|
|
90
|
+
status: number;
|
|
91
|
+
headers?: Record<string, string>;
|
|
92
|
+
body?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface DataBatchResponsePayload {
|
|
95
|
+
protocolVersion: 1;
|
|
96
|
+
batchId: string;
|
|
97
|
+
receivedAt: number;
|
|
98
|
+
items: DataBatchResponseItem[];
|
|
99
|
+
}
|
|
100
|
+
export interface DataBatchTransportEvent {
|
|
101
|
+
type: 'enqueue' | 'flush' | 'fallback' | 'disable';
|
|
102
|
+
endpoint: string;
|
|
103
|
+
batchId?: string;
|
|
104
|
+
size?: number;
|
|
105
|
+
reason?: string;
|
|
106
|
+
}
|
|
107
|
+
export type DataBatchTransportTelemetryAttributes = Record<string, string | number | boolean>;
|
|
108
|
+
export interface DataBatchTransportOptions {
|
|
109
|
+
endpoint?: string;
|
|
110
|
+
fetch?: (input: DataTransportRequestInfo, init?: RequestInit) => Promise<Response>;
|
|
111
|
+
flushIntervalMs?: number;
|
|
112
|
+
maxBatchSize?: number;
|
|
113
|
+
maxBatchBytes?: number;
|
|
114
|
+
requestTimeoutMs?: number;
|
|
115
|
+
allowedMethods?: string[];
|
|
116
|
+
onEvent?: (event: DataBatchTransportEvent) => void;
|
|
117
|
+
}
|
|
118
|
+
export interface SelectionPlanValidationOptions {
|
|
119
|
+
maxDepth?: number;
|
|
120
|
+
maxFields?: number;
|
|
121
|
+
allowedLeafPaths?: ReadonlyArray<string>;
|
|
122
|
+
}
|
|
123
|
+
export interface SelectionPlanValidationResult {
|
|
124
|
+
ok: boolean;
|
|
125
|
+
errors: string[];
|
|
126
|
+
stats: {
|
|
127
|
+
maxDepth: number;
|
|
128
|
+
fieldCount: number;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export interface RequestEnvelopeValidationOptions {
|
|
132
|
+
expectedProtocolVersion?: number;
|
|
133
|
+
expectedNamespace?: string;
|
|
134
|
+
expectedOrigin?: string;
|
|
135
|
+
requireTraceContext?: boolean;
|
|
136
|
+
}
|
|
137
|
+
export interface HydrationEnvelopeValidationOptions {
|
|
138
|
+
expectedProtocolVersion?: number;
|
|
139
|
+
expectedNamespace?: string;
|
|
140
|
+
expectedOrigin?: string;
|
|
141
|
+
expectedRuntimeVersion?: string;
|
|
142
|
+
}
|
|
143
|
+
export declare const DEFAULT_DATA_ENVELOPE_HEADER = "x-modernjs-data-envelope";
|
|
144
|
+
export declare const DEFAULT_DATA_BATCH_ENDPOINT = "/_data/batch";
|
|
145
|
+
export declare const DEFAULT_DATA_BATCH_HEADER = "x-modernjs-data-batch";
|
|
146
|
+
export type DataTransportRequestInfo = string | URL | Request;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CacheScope, DataMutationMode, DataRequestMode, HydrationEnvelope, HydrationEnvelopeValidationOptions, OperationDescriptor, RequestEnvelope, RequestEnvelopeValidationOptions, SelectionPlan, SelectionPlanValidationOptions, SelectionPlanValidationResult, TraceContext } from './types';
|
|
2
|
+
export declare function validateSelectionPlan(plan: SelectionPlan, options?: SelectionPlanValidationOptions): SelectionPlanValidationResult;
|
|
3
|
+
export declare function createRequestEnvelope<Input>(input: {
|
|
4
|
+
operation: OperationDescriptor;
|
|
5
|
+
scope: CacheScope;
|
|
6
|
+
requestInput: Input;
|
|
7
|
+
selectionPlan?: SelectionPlan;
|
|
8
|
+
requestMode?: DataRequestMode;
|
|
9
|
+
mutationMode?: DataMutationMode;
|
|
10
|
+
traceContext?: TraceContext;
|
|
11
|
+
requireTraceContext?: boolean;
|
|
12
|
+
timestamp?: number;
|
|
13
|
+
protocolVersion?: 1;
|
|
14
|
+
}): RequestEnvelope<Input>;
|
|
15
|
+
export declare function validateRequestEnvelope(envelope: RequestEnvelope, options?: RequestEnvelopeValidationOptions): {
|
|
16
|
+
ok: boolean;
|
|
17
|
+
errors: string[];
|
|
18
|
+
};
|
|
19
|
+
export declare function createHydrationEnvelope<Payload>(input: {
|
|
20
|
+
runtimeVersion: string;
|
|
21
|
+
scope: Pick<CacheScope, 'appNamespace' | 'origin'>;
|
|
22
|
+
payload: Payload;
|
|
23
|
+
createdAt?: number;
|
|
24
|
+
protocolVersion?: 1;
|
|
25
|
+
}): HydrationEnvelope<Payload>;
|
|
26
|
+
export declare function validateHydrationEnvelope(envelope: HydrationEnvelope, options?: HydrationEnvelopeValidationOptions): {
|
|
27
|
+
ok: boolean;
|
|
28
|
+
errors: string[];
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const before: string[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ServerPluginAPI } from '@modern-js/server-core';
|
|
2
|
+
import { type ResolvedCrossProjectPolicy } from '../../../utils/crossProjectServerPolicy';
|
|
3
|
+
import type { EffectApiModule } from '../module';
|
|
4
|
+
export declare function resolveEffectAdapterCrossProjectPolicy(api: ServerPluginAPI, prefix: string, mod: EffectApiModule | null): Promise<ResolvedCrossProjectPolicy>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ServerPluginAPI } from '@modern-js/server-core';
|
|
2
|
+
import { type ResolvedCrossProjectPolicy } from '../../../utils/crossProjectServerPolicy';
|
|
3
|
+
import { type EffectApiModule } from '../module';
|
|
4
|
+
export declare function loadEffectAdapterHandlerFromModule(api: ServerPluginAPI, mod: EffectApiModule, crossProjectPolicy: ResolvedCrossProjectPolicy | undefined): Promise<import("../module").LoadedEffectBffHandler | null>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { ServerMiddleware, ServerPluginAPI } from '@modern-js/server-core';
|
|
2
|
-
import {
|
|
2
|
+
import type { ResolvedCrossProjectPolicy } from '../../utils/crossProjectServerPolicy';
|
|
3
3
|
interface MiddlewareOptions {
|
|
4
4
|
prefix: string;
|
|
5
5
|
enableHandleWeb?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare class EffectAdapter {
|
|
8
|
-
api
|
|
8
|
+
private api;
|
|
9
9
|
isEffect: boolean;
|
|
10
|
-
effectMiddleware
|
|
11
|
-
crossProjectPolicy
|
|
10
|
+
effectMiddleware?: ServerMiddleware;
|
|
11
|
+
crossProjectPolicy?: ResolvedCrossProjectPolicy;
|
|
12
12
|
private handler;
|
|
13
13
|
private dispose;
|
|
14
14
|
private prefix;
|
|
@@ -16,16 +16,7 @@ export declare class EffectAdapter {
|
|
|
16
16
|
registerMiddleware: (options: MiddlewareOptions) => Promise<void>;
|
|
17
17
|
onApiHandlersUpdated: () => Promise<void>;
|
|
18
18
|
private resolveEntryFile;
|
|
19
|
-
/**
|
|
20
|
-
* Resolves the cross-project policy from the reflected HttpApi endpoints so
|
|
21
|
-
* the expected operation contracts match the hashes the client generators
|
|
22
|
-
* stamp into generated SDKs.
|
|
23
|
-
*/
|
|
24
|
-
private refreshCrossProjectPolicy;
|
|
25
|
-
private loadEffectHandlerFromModule;
|
|
26
19
|
private reloadHandler;
|
|
27
20
|
private disposeCurrentHandler;
|
|
28
|
-
private handleRuntimeError;
|
|
29
|
-
private ensureJsonContext;
|
|
30
21
|
}
|
|
31
22
|
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ModuleFederationRuntimePlugin } from '@module-federation/runtime';
|
|
2
|
+
import type { BackendFederationLoadEntryPluginOptions } from './types';
|
|
3
|
+
export declare function createBackendFederationLoadEntryPlugin(options: BackendFederationLoadEntryPluginOptions): ModuleFederationRuntimePlugin;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { BACKEND_FEDERATION_EFFECT_EXPOSE } from '@modern-js/utils/universal';
|
|
2
|
+
import type { ModuleFederation, ModuleFederationRuntimePlugin } from '@module-federation/runtime';
|
|
3
|
+
import type { EffectApiModule } from '../module';
|
|
4
|
+
export type BackendFederationRemote = {
|
|
5
|
+
name: string;
|
|
6
|
+
entry: string;
|
|
7
|
+
type?: 'commonjs-module' | 'module' | string;
|
|
8
|
+
entryGlobalName?: string;
|
|
9
|
+
shareScope?: string | string[];
|
|
10
|
+
expose?: typeof BACKEND_FEDERATION_EFFECT_EXPOSE;
|
|
11
|
+
};
|
|
12
|
+
export type BackendFederationRuntimeOptions = {
|
|
13
|
+
hostName: string;
|
|
14
|
+
remote?: BackendFederationRemote;
|
|
15
|
+
remotes?: BackendFederationRemote[];
|
|
16
|
+
plugins?: ModuleFederationRuntimePlugin[];
|
|
17
|
+
};
|
|
18
|
+
export type BackendFederationEntryExports = {
|
|
19
|
+
get: (id: string) => (() => Promise<unknown> | unknown) | Promise<() => Promise<unknown> | unknown>;
|
|
20
|
+
init?: (...args: unknown[]) => void | Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
export type BackendFederatedEffectApiModule = EffectApiModule & {
|
|
23
|
+
backendFederationContract?: {
|
|
24
|
+
compatibility?: {
|
|
25
|
+
build?: unknown;
|
|
26
|
+
contractVersion?: unknown;
|
|
27
|
+
nodeAdapterVersion?: unknown;
|
|
28
|
+
packageName?: unknown;
|
|
29
|
+
/**
|
|
30
|
+
* ADR-0019 delivery-unit identity root, generator-emitted alongside
|
|
31
|
+
* manifest's `versionBoundary.deliveryUnit`. Additive/optional.
|
|
32
|
+
*/
|
|
33
|
+
unitId?: unknown;
|
|
34
|
+
/** ADR-0019 delivery-unit source revision. Additive/optional. */
|
|
35
|
+
sourceRevision?: unknown;
|
|
36
|
+
};
|
|
37
|
+
name?: unknown;
|
|
38
|
+
role?: unknown;
|
|
39
|
+
runtimeFramework?: unknown;
|
|
40
|
+
strictEffectApproach?: unknown;
|
|
41
|
+
};
|
|
42
|
+
contract?: unknown;
|
|
43
|
+
operationContexts?: unknown;
|
|
44
|
+
runtime?: unknown;
|
|
45
|
+
};
|
|
46
|
+
export type BackendFederationLoadEntryPluginOptions = {
|
|
47
|
+
resolveEntry: (remote: BackendFederationRemote) => BackendFederationEntryExports | undefined | Promise<BackendFederationEntryExports | undefined>;
|
|
48
|
+
};
|
|
49
|
+
export type BackendFederationLoadOptions = BackendFederationRuntimeOptions & {
|
|
50
|
+
runtime?: ModuleFederation;
|
|
51
|
+
remoteName?: string;
|
|
52
|
+
expose?: string;
|
|
53
|
+
};
|
|
54
|
+
export type BackendFederationLoadEntryPlugin = ModuleFederationRuntimePlugin & {
|
|
55
|
+
loadEntry?: (args: {
|
|
56
|
+
remoteInfo: BackendFederationRemote;
|
|
57
|
+
}) => BackendFederationEntryExports | undefined | Promise<BackendFederationEntryExports | undefined>;
|
|
58
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type BackendFederationManifestAdapterErrorCode = 'manifest_unavailable' | 'manifest_invalid' | 'remote_unavailable' | 'strict_effect_required' | 'timeout' | 'version_mismatch';
|
|
2
|
+
export declare const BACKEND_FEDERATION_MANIFEST_ADAPTER_FAILURE_EVENT: 'modernjs:microvertical-server-fallback';
|
|
3
|
+
export declare class BackendFederationManifestAdapterError extends Error {
|
|
4
|
+
code: BackendFederationManifestAdapterErrorCode;
|
|
5
|
+
readonly failureEvent: "modernjs:microvertical-server-fallback";
|
|
6
|
+
details?: Record<string, unknown>;
|
|
7
|
+
constructor(code: BackendFederationManifestAdapterErrorCode, message: string, cause?: unknown, details?: Record<string, unknown>);
|
|
8
|
+
}
|
|
9
|
+
export declare function assertManifestAdapter(condition: unknown, code: BackendFederationManifestAdapterErrorCode, message: string): asserts condition;
|
|
10
|
+
export declare function assertVersionValue(actual: string | undefined, expected: string | undefined, label: string, details?: Record<string, unknown>): void;
|
|
11
|
+
export declare function assertConsistentValue(left: string | undefined, right: string | undefined, label: string, details?: Record<string, unknown>): void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { BackendFederationManifestAdapterErrorCode } from './errors';
|
|
2
|
+
export { BACKEND_FEDERATION_MANIFEST_ADAPTER_FAILURE_EVENT, BackendFederationManifestAdapterError, } from './errors';
|
|
3
|
+
export { loadBackendFederatedEffectApiFromManifest } from './load';
|
|
4
|
+
export { loadBackendFederationManifest } from './reference';
|
|
5
|
+
export { resolveBackendFederationRemoteFromManifest } from './remote';
|
|
6
|
+
export type { BackendFederationManifest, BackendFederationManifestAdapterFallback, BackendFederationManifestAdapterOptions, BackendFederationManifestFetchResponse, BackendFederationVersionBoundaryExpectation, } from './types';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type BackendFederatedEffectApiModule } from '../backend-federation';
|
|
2
|
+
import type { BackendFederationManifestAdapterOptions } from './types';
|
|
3
|
+
export declare function loadBackendFederatedEffectApiFromManifest(options: BackendFederationManifestAdapterOptions): Promise<BackendFederatedEffectApiModule>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BackendFederationManifest } from './types';
|
|
2
|
+
export declare function stringValue(value: unknown): string | undefined;
|
|
3
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
4
|
+
export declare function recordField(value: Record<string, unknown> | undefined, field: string): Record<string, unknown> | undefined;
|
|
5
|
+
export declare function resolveRemoteEntryFromMetadata(manifest: BackendFederationManifest): string | undefined;
|
|
6
|
+
export declare function backendFederationMetadata(manifest: BackendFederationManifest): Record<string, unknown> | undefined;
|
|
7
|
+
export declare function versionBoundaryMetadata(manifest: BackendFederationManifest): Record<string, unknown> | undefined;
|
|
8
|
+
export declare function deliveryUnitMetadata(record: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Resolves the delivery-unit identity root for a manifest (ADR-0019 §3):
|
|
11
|
+
* prefers `versionBoundary.deliveryUnit`, falls back to the top-level
|
|
12
|
+
* `backendFederation.deliveryUnit` record. Both are additive/optional so
|
|
13
|
+
* legacy manifests without delivery-unit metadata continue to validate.
|
|
14
|
+
*/
|
|
15
|
+
export declare function manifestDeliveryUnit(backendFederation: Record<string, unknown> | undefined, boundary: Record<string, unknown> | undefined): {
|
|
16
|
+
boundary: Record<string, unknown> | undefined;
|
|
17
|
+
top: Record<string, unknown> | undefined;
|
|
18
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BackendFederationManifest, BackendFederationManifestAdapterOptions } from './types';
|
|
2
|
+
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number | undefined, label: string): Promise<T>;
|
|
3
|
+
export declare function loadBackendFederationManifest(options: Pick<BackendFederationManifestAdapterOptions, 'allowLegacyManifest' | 'env' | 'expected' | 'fetch' | 'manifest' | 'manifestEnv' | 'manifestPath' | 'manifestUrl' | 'timeoutMs'>): Promise<BackendFederationManifest>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type BackendFederationRemote } from '../backend-federation';
|
|
2
|
+
import type { BackendFederationManifest } from './types';
|
|
3
|
+
export declare function resolveBackendFederationRemoteFromManifest(manifest: BackendFederationManifest, remoteOverride?: Partial<BackendFederationRemote>): BackendFederationRemote;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ModuleFederation, ModuleFederationRuntimePlugin } from '@module-federation/runtime';
|
|
2
|
+
import type { BackendFederatedEffectApiModule, BackendFederationRemote } from '../backend-federation';
|
|
3
|
+
import type { BackendFederationManifestAdapterError } from './errors';
|
|
4
|
+
export type BackendFederationManifest = Record<string, unknown>;
|
|
5
|
+
export type BackendFederationVersionBoundaryExpectation = {
|
|
6
|
+
buildVersion?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Delivery-unit build marker (ADR-0019). Semantically the same value as
|
|
9
|
+
* `buildVersion`; treated as an alias. If both are set and disagree the
|
|
10
|
+
* expectation itself is invalid and fails closed before any manifest
|
|
11
|
+
* comparison runs.
|
|
12
|
+
*/
|
|
13
|
+
buildMarker?: string;
|
|
14
|
+
contractVersion?: string;
|
|
15
|
+
nodeAdapterVersion?: string;
|
|
16
|
+
packageName?: string;
|
|
17
|
+
remoteName?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Delivery-unit identity root (ADR-0019 §3). When set, the manifest's
|
|
20
|
+
* `backendFederation.versionBoundary.deliveryUnit.unitId` (or the
|
|
21
|
+
* top-level `backendFederation.deliveryUnit.unitId` fallback) must match.
|
|
22
|
+
*/
|
|
23
|
+
unitId?: string;
|
|
24
|
+
version?: string;
|
|
25
|
+
};
|
|
26
|
+
export type BackendFederationManifestFetchResponse = {
|
|
27
|
+
ok: boolean;
|
|
28
|
+
status: number;
|
|
29
|
+
statusText?: string;
|
|
30
|
+
text: () => Promise<string>;
|
|
31
|
+
};
|
|
32
|
+
export type BackendFederationManifestAdapterFallback = (error: BackendFederationManifestAdapterError, context: {
|
|
33
|
+
manifest?: BackendFederationManifest;
|
|
34
|
+
remote?: BackendFederationRemote;
|
|
35
|
+
}) => BackendFederatedEffectApiModule | Promise<BackendFederatedEffectApiModule>;
|
|
36
|
+
export type BackendFederationManifestAdapterOptions = {
|
|
37
|
+
allowLegacyManifest?: boolean;
|
|
38
|
+
env?: Record<string, string | undefined>;
|
|
39
|
+
expected?: BackendFederationVersionBoundaryExpectation;
|
|
40
|
+
fallback?: BackendFederationManifestAdapterFallback;
|
|
41
|
+
fetch?: (url: string) => Promise<BackendFederationManifestFetchResponse>;
|
|
42
|
+
hostName: string;
|
|
43
|
+
manifest?: BackendFederationManifest;
|
|
44
|
+
manifestEnv?: string;
|
|
45
|
+
manifestPath?: string;
|
|
46
|
+
manifestUrl?: string;
|
|
47
|
+
plugins?: ModuleFederationRuntimePlugin[];
|
|
48
|
+
remote?: Partial<BackendFederationRemote>;
|
|
49
|
+
runtime?: ModuleFederation;
|
|
50
|
+
timeoutMs?: number;
|
|
51
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type BackendFederatedEffectApiModule, type BackendFederationRemote } from '../backend-federation';
|
|
2
|
+
import type { BackendFederationManifest, BackendFederationVersionBoundaryExpectation } from './types';
|
|
3
|
+
export declare function validateBackendFederationManifest(manifest: BackendFederationManifest, expected?: BackendFederationVersionBoundaryExpectation): void;
|
|
4
|
+
export declare function validateLoadedBackendFederationContract(loaded: BackendFederatedEffectApiModule, manifest: BackendFederationManifest, remote: BackendFederationRemote): void;
|
|
5
|
+
export declare function classifyLoadError(error: unknown): "remote_unavailable" | "strict_effect_required";
|
|
@@ -1,60 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { type BackendFederatedEffectApiModule, type BackendFederationRemote } from './backend-federation';
|
|
3
|
-
export type BackendFederationManifestAdapterErrorCode = 'manifest_unavailable' | 'manifest_invalid' | 'remote_unavailable' | 'strict_effect_required' | 'timeout' | 'version_mismatch';
|
|
4
|
-
export declare const BACKEND_FEDERATION_MANIFEST_ADAPTER_FAILURE_EVENT: 'modernjs:microvertical-server-fallback';
|
|
5
|
-
export declare class BackendFederationManifestAdapterError extends Error {
|
|
6
|
-
code: BackendFederationManifestAdapterErrorCode;
|
|
7
|
-
readonly failureEvent: "modernjs:microvertical-server-fallback";
|
|
8
|
-
details?: Record<string, unknown>;
|
|
9
|
-
constructor(code: BackendFederationManifestAdapterErrorCode, message: string, cause?: unknown, details?: Record<string, unknown>);
|
|
10
|
-
}
|
|
11
|
-
export type BackendFederationManifest = Record<string, unknown>;
|
|
12
|
-
export type BackendFederationVersionBoundaryExpectation = {
|
|
13
|
-
buildVersion?: string;
|
|
14
|
-
/**
|
|
15
|
-
* Delivery-unit build marker (ADR-0019). Semantically the same value as
|
|
16
|
-
* `buildVersion`; treated as an alias. If both are set and disagree the
|
|
17
|
-
* expectation itself is invalid and fails closed before any manifest
|
|
18
|
-
* comparison runs.
|
|
19
|
-
*/
|
|
20
|
-
buildMarker?: string;
|
|
21
|
-
contractVersion?: string;
|
|
22
|
-
nodeAdapterVersion?: string;
|
|
23
|
-
packageName?: string;
|
|
24
|
-
remoteName?: string;
|
|
25
|
-
/**
|
|
26
|
-
* Delivery-unit identity root (ADR-0019 §3). When set, the manifest's
|
|
27
|
-
* `backendFederation.versionBoundary.deliveryUnit.unitId` (or the
|
|
28
|
-
* top-level `backendFederation.deliveryUnit.unitId` fallback) must match.
|
|
29
|
-
*/
|
|
30
|
-
unitId?: string;
|
|
31
|
-
version?: string;
|
|
32
|
-
};
|
|
33
|
-
export type BackendFederationManifestFetchResponse = {
|
|
34
|
-
ok: boolean;
|
|
35
|
-
status: number;
|
|
36
|
-
statusText?: string;
|
|
37
|
-
text: () => Promise<string>;
|
|
38
|
-
};
|
|
39
|
-
export type BackendFederationManifestAdapterFallback = (error: BackendFederationManifestAdapterError, context: {
|
|
40
|
-
manifest?: BackendFederationManifest;
|
|
41
|
-
remote?: BackendFederationRemote;
|
|
42
|
-
}) => BackendFederatedEffectApiModule | Promise<BackendFederatedEffectApiModule>;
|
|
43
|
-
export type BackendFederationManifestAdapterOptions = {
|
|
44
|
-
env?: Record<string, string | undefined>;
|
|
45
|
-
expected?: BackendFederationVersionBoundaryExpectation;
|
|
46
|
-
fallback?: BackendFederationManifestAdapterFallback;
|
|
47
|
-
fetch?: (url: string) => Promise<BackendFederationManifestFetchResponse>;
|
|
48
|
-
hostName: string;
|
|
49
|
-
manifest?: BackendFederationManifest;
|
|
50
|
-
manifestEnv?: string;
|
|
51
|
-
manifestPath?: string;
|
|
52
|
-
manifestUrl?: string;
|
|
53
|
-
plugins?: ModuleFederationRuntimePlugin[];
|
|
54
|
-
remote?: Partial<BackendFederationRemote>;
|
|
55
|
-
runtime?: ModuleFederation;
|
|
56
|
-
timeoutMs?: number;
|
|
57
|
-
};
|
|
58
|
-
export declare function loadBackendFederationManifest(options: Pick<BackendFederationManifestAdapterOptions, 'env' | 'fetch' | 'manifest' | 'manifestEnv' | 'manifestPath' | 'manifestUrl' | 'timeoutMs'>): Promise<BackendFederationManifest>;
|
|
59
|
-
export declare function resolveBackendFederationRemoteFromManifest(manifest: BackendFederationManifest, remoteOverride?: Partial<BackendFederationRemote>): BackendFederationRemote;
|
|
60
|
-
export declare function loadBackendFederatedEffectApiFromManifest(options: BackendFederationManifestAdapterOptions): Promise<BackendFederatedEffectApiModule>;
|
|
1
|
+
export * from './backend-federation-manifest/index';
|
|
@@ -1,60 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export type BackendFederationRemote = {
|
|
8
|
-
name: string;
|
|
9
|
-
entry: string;
|
|
10
|
-
type?: 'commonjs-module' | 'module' | string;
|
|
11
|
-
entryGlobalName?: string;
|
|
12
|
-
shareScope?: string | string[];
|
|
13
|
-
expose?: typeof BACKEND_FEDERATION_EFFECT_EXPOSE;
|
|
14
|
-
};
|
|
15
|
-
export type BackendFederationRuntimeOptions = {
|
|
16
|
-
hostName: string;
|
|
17
|
-
remote?: BackendFederationRemote;
|
|
18
|
-
remotes?: BackendFederationRemote[];
|
|
19
|
-
plugins?: ModuleFederationRuntimePlugin[];
|
|
20
|
-
};
|
|
21
|
-
export type BackendFederationEntryExports = {
|
|
22
|
-
get: (id: string) => (() => Promise<unknown> | unknown) | Promise<() => Promise<unknown> | unknown>;
|
|
23
|
-
init?: (...args: unknown[]) => void | Promise<void>;
|
|
24
|
-
};
|
|
25
|
-
export type BackendFederatedEffectApiModule = EffectApiModule & {
|
|
26
|
-
backendFederationContract?: {
|
|
27
|
-
compatibility?: {
|
|
28
|
-
build?: unknown;
|
|
29
|
-
contractVersion?: unknown;
|
|
30
|
-
nodeAdapterVersion?: unknown;
|
|
31
|
-
packageName?: unknown;
|
|
32
|
-
/**
|
|
33
|
-
* ADR-0019 delivery-unit identity root, generator-emitted alongside
|
|
34
|
-
* the manifest's `versionBoundary.deliveryUnit`. Additive/optional.
|
|
35
|
-
*/
|
|
36
|
-
unitId?: unknown;
|
|
37
|
-
/** ADR-0019 delivery-unit source revision. Additive/optional. */
|
|
38
|
-
sourceRevision?: unknown;
|
|
39
|
-
};
|
|
40
|
-
name?: unknown;
|
|
41
|
-
role?: unknown;
|
|
42
|
-
runtimeFramework?: unknown;
|
|
43
|
-
strictEffectApproach?: unknown;
|
|
44
|
-
};
|
|
45
|
-
contract?: unknown;
|
|
46
|
-
operationContexts?: unknown;
|
|
47
|
-
runtime?: unknown;
|
|
48
|
-
};
|
|
49
|
-
export type BackendFederationLoadEntryPluginOptions = {
|
|
50
|
-
resolveEntry: (remote: BackendFederationRemote) => BackendFederationEntryExports | undefined | Promise<BackendFederationEntryExports | undefined>;
|
|
51
|
-
};
|
|
52
|
-
type BackendFederationLoadOptions = BackendFederationRuntimeOptions & {
|
|
53
|
-
runtime?: ModuleFederation;
|
|
54
|
-
remoteName?: string;
|
|
55
|
-
expose?: string;
|
|
56
|
-
};
|
|
57
|
-
export declare function createBackendFederationRuntime(options: BackendFederationRuntimeOptions): ModuleFederation;
|
|
58
|
-
export declare function createBackendFederationLoadEntryPlugin(options: BackendFederationLoadEntryPluginOptions): ModuleFederationRuntimePlugin;
|
|
59
|
-
export declare function loadBackendFederatedEffectApi(options: BackendFederationLoadOptions): Promise<BackendFederatedEffectApiModule>;
|
|
60
|
-
export {};
|
|
1
|
+
import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from '@modern-js/utils/universal';
|
|
2
|
+
export { loadBackendFederatedEffectApi } from './backend-federation/load';
|
|
3
|
+
export { createBackendFederationLoadEntryPlugin } from './backend-federation/plugin';
|
|
4
|
+
export { createBackendFederationRuntime } from './backend-federation/runtime';
|
|
5
|
+
export type { BackendFederatedEffectApiModule, BackendFederationEntryExports, BackendFederationLoadEntryPluginOptions, BackendFederationRemote, BackendFederationRuntimeOptions, } from './backend-federation/types';
|
|
6
|
+
export { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EffectDataPlatformValidationOptions } from './types';
|
|
2
|
+
type DataPlatformBatchItemHandler<TContext> = (request: Request, context?: TContext) => Promise<unknown>;
|
|
3
|
+
export declare function createDataPlatformBatchRequestHandler<TContext>(options: {
|
|
4
|
+
dataPlatform?: EffectDataPlatformValidationOptions;
|
|
5
|
+
handleItem: DataPlatformBatchItemHandler<TContext>;
|
|
6
|
+
}): {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
path: `/${string}`;
|
|
9
|
+
handle: (request: Request, context?: TContext) => Promise<Response>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type DataBatchRequestPayload, type DataBatchResponseItem } from '../../data-platform';
|
|
2
|
+
export declare function normalizeBatchPath(pathname: string | undefined): `/${string}`;
|
|
3
|
+
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
4
|
+
export declare function toTextLength(value: string): number;
|
|
5
|
+
export declare function toHeaderRecord(headers: Headers): Record<string, string>;
|
|
6
|
+
export declare function normalizeItemMethod(method: string | undefined): string;
|
|
7
|
+
export declare function normalizeBatchAllowedMethods(allowedMethods: string[] | undefined): Set<string>;
|
|
8
|
+
type ParsedBatchRequestPayload = Omit<DataBatchRequestPayload, 'items'> & {
|
|
9
|
+
items: unknown[];
|
|
10
|
+
};
|
|
11
|
+
export declare function isBatchRequestPayload(value: unknown): value is ParsedBatchRequestPayload;
|
|
12
|
+
export declare function createBatchValidationResponse(message: string, status?: number): Response;
|
|
13
|
+
export declare function prepareJsonRequestBody(request: Request): Promise<Request | Response>;
|
|
14
|
+
export declare function toBatchItemError(id: string, status: number, message: string): DataBatchResponseItem;
|
|
15
|
+
export declare function promiseWithTimeout<T>(effect: Promise<T>, timeoutMs: number): Promise<T>;
|
|
16
|
+
export declare function mapWithConcurrency<TItem, TResult>(items: readonly TItem[], concurrency: number, mapper: (item: TItem, index: number) => Promise<TResult>): Promise<TResult[]>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { HttpApi } from 'effect/unstable/httpapi';
|
|
2
|
+
import type { Rpc } from 'effect/unstable/rpc';
|
|
3
|
+
import type { EffectBffRuntime, EffectDataPlatformValidationOptions, EffectRpcBffDefinition, EffectRpcBffHandlerFactory, EffectRpcRuntimeLayer, EffectRuntimeLayer } from './types';
|
|
4
|
+
export declare function defineEffectBff<TApi extends HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer, TRpcs extends Rpc.Any = Rpc.Any>(definition: {
|
|
5
|
+
api: TApi;
|
|
6
|
+
layer: TLayer;
|
|
7
|
+
rpc?: EffectRpcBffDefinition<TRpcs>;
|
|
8
|
+
dataPlatform?: EffectDataPlatformValidationOptions;
|
|
9
|
+
}): {
|
|
10
|
+
api: TApi;
|
|
11
|
+
layer: TLayer;
|
|
12
|
+
rpc?: EffectRpcBffDefinition<TRpcs>;
|
|
13
|
+
dataPlatform?: EffectDataPlatformValidationOptions;
|
|
14
|
+
} & EffectBffRuntime<TApi, TLayer>;
|
|
15
|
+
export declare function defineEffectRpcBff<TRpcs extends Rpc.Any = Rpc.Any, TLayer extends EffectRpcRuntimeLayer<TRpcs> = EffectRpcRuntimeLayer<TRpcs>>(definition: EffectRpcBffDefinition<TRpcs, TLayer>): EffectRpcBffDefinition<TRpcs, TLayer> & {
|
|
16
|
+
createHandler: EffectRpcBffHandlerFactory<TRpcs>;
|
|
17
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EffectDataPlatformValidationOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Validates the `x-modernjs-data-envelope` header (the data-platform
|
|
4
|
+
* transport/cache contract: protocol version, scope, selection plan).
|
|
5
|
+
*
|
|
6
|
+
* This is NOT a security boundary: the envelope is client-constructed cache
|
|
7
|
+
* metadata used for batching, scope keys and hydration. Cross-project
|
|
8
|
+
* authorization runs through the bff-core policy evaluator wired in via
|
|
9
|
+
* `validateRequest` (see `EffectRequestValidator`), which both the direct
|
|
10
|
+
* and batched request paths hit before this check.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateDataPlatformRequestEnvelope(request: Request, options: EffectDataPlatformValidationOptions | undefined): Response | null;
|
|
13
|
+
export declare function mergeDataPlatformOptions(base: EffectDataPlatformValidationOptions | undefined, override: Partial<EffectDataPlatformValidationOptions> | undefined): EffectDataPlatformValidationOptions | undefined;
|