@bleedingdev/modern-js-plugin-bff 3.8.3-ultramodern.1 → 3.8.3-ultramodern.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/generator.js +45 -53
- package/dist/cjs/cli/serverGlobalVars.js +1 -1
- package/dist/cjs/cli.js +1 -0
- package/dist/cjs/loader.js +7 -18
- package/dist/cjs/runtime/data-platform/index.js +32 -94
- package/dist/cjs/runtime/effect/edge-dispatcher.js +5 -91
- package/dist/cjs/runtime/effect/edge.js +11 -45
- package/dist/cjs/runtime/effect/index.js +173 -55
- package/dist/cjs/runtime/effect-client/index.js +32 -166
- package/dist/cjs/runtime/effect-client/runtime.js +32 -70
- package/dist/cjs/runtime/hono/adapter.js +13 -54
- package/dist/cjs/server.js +2 -2
- package/dist/cjs/utils/client-generator/generate.js +9 -6
- package/dist/cjs/utils/crossProjectApiPlugin.js +5 -1
- package/dist/cjs/utils/pluginGenerator.js +4 -4
- package/dist/cjs/utils/runtimeGenerator.js +4 -16
- package/dist/esm/cli/generator.mjs +45 -53
- package/dist/esm/cli/serverGlobalVars.mjs +1 -1
- package/dist/esm/cli.mjs +1 -0
- package/dist/esm/loader.mjs +5 -16
- package/dist/esm/runtime/data-platform/index.mjs +1 -7
- package/dist/esm/runtime/effect/edge-dispatcher.mjs +1 -38
- package/dist/esm/runtime/effect/edge.mjs +2 -2
- package/dist/esm/runtime/effect/index.mjs +16 -8
- package/dist/esm/runtime/effect-client/index.mjs +1 -98
- package/dist/esm/runtime/effect-client/runtime.mjs +1 -62
- package/dist/esm/runtime/hono/adapter.mjs +13 -54
- package/dist/esm/server.mjs +2 -2
- package/dist/esm/utils/client-generator/generate.mjs +8 -5
- package/dist/esm/utils/crossProjectApiPlugin.mjs +3 -2
- package/dist/esm/utils/pluginGenerator.mjs +5 -5
- package/dist/esm/utils/runtimeGenerator.mjs +4 -16
- package/dist/esm-node/cli/generator.mjs +45 -53
- package/dist/esm-node/cli/serverGlobalVars.mjs +1 -1
- package/dist/esm-node/cli.mjs +1 -0
- package/dist/esm-node/loader.mjs +5 -16
- package/dist/esm-node/runtime/data-platform/index.mjs +1 -7
- package/dist/esm-node/runtime/effect/edge-dispatcher.mjs +1 -38
- package/dist/esm-node/runtime/effect/edge.mjs +2 -2
- package/dist/esm-node/runtime/effect/index.mjs +16 -8
- package/dist/esm-node/runtime/effect-client/index.mjs +1 -98
- package/dist/esm-node/runtime/effect-client/runtime.mjs +1 -62
- package/dist/esm-node/runtime/hono/adapter.mjs +13 -54
- package/dist/esm-node/server.mjs +2 -2
- package/dist/esm-node/utils/client-generator/generate.mjs +8 -5
- package/dist/esm-node/utils/crossProjectApiPlugin.mjs +3 -2
- package/dist/esm-node/utils/pluginGenerator.mjs +5 -5
- package/dist/esm-node/utils/runtimeGenerator.mjs +4 -16
- package/dist/types/loader.d.ts +1 -0
- package/dist/types/runtime/data-platform/index.d.ts +1 -8
- package/dist/types/runtime/effect/edge-dispatcher.d.ts +1 -26
- package/dist/types/runtime/effect/edge.d.ts +2 -2
- package/dist/types/runtime/effect/index.d.ts +15 -7
- package/dist/types/runtime/effect-client/index.d.ts +1 -58
- package/dist/types/runtime/effect-client/runtime.d.ts +1 -5
- package/dist/types/runtime/hono/adapter.d.ts +1 -11
- package/dist/types/utils/client-generator/generate.d.ts +2 -1
- package/dist/types/utils/crossProjectApiPlugin.d.ts +1 -0
- package/dist/types/utils/pluginGenerator.d.ts +2 -1
- package/package.json +29 -28
- package/dist/cjs/runtime/data-platform/batch/queue.js +0 -284
- package/dist/cjs/runtime/data-platform/batch/request.js +0 -98
- package/dist/cjs/runtime/data-platform/batch/response.js +0 -64
- package/dist/cjs/runtime/data-platform/batch/telemetry.js +0 -67
- package/dist/cjs/runtime/data-platform/batch/url.js +0 -69
- package/dist/cjs/runtime/data-platform/batch-transport.js +0 -59
- package/dist/cjs/runtime/data-platform/codec.js +0 -155
- package/dist/cjs/runtime/data-platform/invalidation.js +0 -61
- package/dist/cjs/runtime/data-platform/trace.js +0 -73
- package/dist/cjs/runtime/data-platform/types.js +0 -48
- package/dist/cjs/runtime/data-platform/validation.js +0 -178
- package/dist/cjs/runtime/effect/adapter/constants.js +0 -44
- package/dist/cjs/runtime/effect/adapter/cross-project-policy.js +0 -66
- package/dist/cjs/runtime/effect/adapter/entry.js +0 -100
- package/dist/cjs/runtime/effect/adapter/error-response.js +0 -81
- package/dist/cjs/runtime/effect/adapter/handler.js +0 -53
- package/dist/cjs/runtime/effect/adapter.js +0 -155
- package/dist/cjs/runtime/effect/backend-federation/entry.js +0 -99
- package/dist/cjs/runtime/effect/backend-federation/identity.js +0 -82
- package/dist/cjs/runtime/effect/backend-federation/load.js +0 -75
- package/dist/cjs/runtime/effect/backend-federation/plugin.js +0 -63
- package/dist/cjs/runtime/effect/backend-federation/remotes.js +0 -51
- package/dist/cjs/runtime/effect/backend-federation/runtime.js +0 -128
- package/dist/cjs/runtime/effect/backend-federation/types.js +0 -18
- package/dist/cjs/runtime/effect/backend-federation/utils.js +0 -48
- package/dist/cjs/runtime/effect/backend-federation-manifest/errors.js +0 -83
- package/dist/cjs/runtime/effect/backend-federation-manifest/index.js +0 -55
- package/dist/cjs/runtime/effect/backend-federation-manifest/load.js +0 -94
- package/dist/cjs/runtime/effect/backend-federation-manifest/metadata.js +0 -101
- package/dist/cjs/runtime/effect/backend-federation-manifest/reference.js +0 -120
- package/dist/cjs/runtime/effect/backend-federation-manifest/remote.js +0 -68
- package/dist/cjs/runtime/effect/backend-federation-manifest/types.js +0 -18
- package/dist/cjs/runtime/effect/backend-federation-manifest/validation.js +0 -109
- package/dist/cjs/runtime/effect/backend-federation-manifest.js +0 -62
- package/dist/cjs/runtime/effect/backend-federation.js +0 -65
- package/dist/cjs/runtime/effect/context.js +0 -60
- package/dist/cjs/runtime/effect/dispatch.js +0 -101
- package/dist/cjs/runtime/effect/edge-context.js +0 -81
- package/dist/cjs/runtime/effect/endpoint-contracts.js +0 -121
- package/dist/cjs/runtime/effect/entry-shape.js +0 -84
- package/dist/cjs/runtime/effect/handler/batch-handler.js +0 -161
- package/dist/cjs/runtime/effect/handler/batch.js +0 -159
- package/dist/cjs/runtime/effect/handler/definition.js +0 -102
- package/dist/cjs/runtime/effect/handler/envelope.js +0 -104
- package/dist/cjs/runtime/effect/handler/http.js +0 -107
- package/dist/cjs/runtime/effect/handler/openapi.js +0 -57
- package/dist/cjs/runtime/effect/handler/routing.js +0 -100
- package/dist/cjs/runtime/effect/handler/rpc.js +0 -63
- package/dist/cjs/runtime/effect/handler/types.js +0 -43
- package/dist/cjs/runtime/effect/handler.js +0 -189
- package/dist/cjs/runtime/effect/module.js +0 -113
- package/dist/cjs/runtime/effect/operation-context.js +0 -103
- package/dist/cjs/runtime/effect/rpcSerialization.js +0 -54
- package/dist/cjs/runtime/effect-client/batch.js +0 -73
- package/dist/cjs/runtime/effect-client/envelope.js +0 -145
- package/dist/cjs/runtime/effect-client/guards.js +0 -44
- package/dist/cjs/runtime/effect-client/request-context.js +0 -64
- package/dist/cjs/runtime/effect-client/request.js +0 -66
- package/dist/cjs/runtime/effect-client/types.js +0 -18
- package/dist/cjs/runtime/safe-failure.js +0 -84
- package/dist/cjs/utils/crossProjectServerPolicy.js +0 -98
- package/dist/cjs/utils/effect-client-generator/generator.js +0 -69
- package/dist/cjs/utils/effect-client-generator/index.js +0 -51
- package/dist/cjs/utils/effect-client-generator/paths.js +0 -62
- package/dist/cjs/utils/effect-client-generator/rendering.js +0 -220
- package/dist/cjs/utils/effect-client-generator/runtime.js +0 -68
- package/dist/cjs/utils/effect-client-generator/types.js +0 -18
- package/dist/cjs/utils/effectClientGenerator.js +0 -49
- package/dist/cjs/utils/effectSourceLoader.js +0 -312
- package/dist/cjs/utils/headers.js +0 -46
- package/dist/esm/runtime/data-platform/batch/queue.mjs +0 -246
- package/dist/esm/runtime/data-platform/batch/request.mjs +0 -45
- package/dist/esm/runtime/data-platform/batch/response.mjs +0 -23
- package/dist/esm/runtime/data-platform/batch/telemetry.mjs +0 -23
- package/dist/esm/runtime/data-platform/batch/url.mjs +0 -25
- package/dist/esm/runtime/data-platform/batch-transport.mjs +0 -12
- package/dist/esm/runtime/data-platform/codec.mjs +0 -90
- package/dist/esm/runtime/data-platform/invalidation.mjs +0 -20
- package/dist/esm/runtime/data-platform/trace.mjs +0 -29
- package/dist/esm/runtime/data-platform/types.mjs +0 -4
- package/dist/esm/runtime/data-platform/validation.mjs +0 -128
- package/dist/esm/runtime/effect/adapter/constants.mjs +0 -6
- package/dist/esm/runtime/effect/adapter/cross-project-policy.mjs +0 -28
- package/dist/esm/runtime/effect/adapter/entry.mjs +0 -52
- package/dist/esm/runtime/effect/adapter/error-response.mjs +0 -43
- package/dist/esm/runtime/effect/adapter/handler.mjs +0 -15
- package/dist/esm/runtime/effect/adapter.mjs +0 -107
- package/dist/esm/runtime/effect/backend-federation/entry.mjs +0 -61
- package/dist/esm/runtime/effect/backend-federation/identity.mjs +0 -41
- package/dist/esm/runtime/effect/backend-federation/load.mjs +0 -37
- package/dist/esm/runtime/effect/backend-federation/plugin.mjs +0 -25
- package/dist/esm/runtime/effect/backend-federation/remotes.mjs +0 -13
- package/dist/esm/runtime/effect/backend-federation/runtime.mjs +0 -90
- package/dist/esm/runtime/effect/backend-federation/types.mjs +0 -0
- package/dist/esm/runtime/effect/backend-federation/utils.mjs +0 -7
- package/dist/esm/runtime/effect/backend-federation-manifest/errors.mjs +0 -32
- package/dist/esm/runtime/effect/backend-federation-manifest/index.mjs +0 -4
- package/dist/esm/runtime/effect/backend-federation-manifest/load.mjs +0 -56
- package/dist/esm/runtime/effect/backend-federation-manifest/metadata.mjs +0 -42
- package/dist/esm/runtime/effect/backend-federation-manifest/reference.mjs +0 -76
- package/dist/esm/runtime/effect/backend-federation-manifest/remote.mjs +0 -30
- package/dist/esm/runtime/effect/backend-federation-manifest/types.mjs +0 -0
- package/dist/esm/runtime/effect/backend-federation-manifest/validation.mjs +0 -65
- package/dist/esm/runtime/effect/backend-federation-manifest.mjs +0 -1
- package/dist/esm/runtime/effect/backend-federation.mjs +0 -5
- package/dist/esm/runtime/effect/context.mjs +0 -13
- package/dist/esm/runtime/effect/dispatch.mjs +0 -63
- package/dist/esm/runtime/effect/edge-context.mjs +0 -34
- package/dist/esm/runtime/effect/endpoint-contracts.mjs +0 -68
- package/dist/esm/runtime/effect/entry-shape.mjs +0 -36
- package/dist/esm/runtime/effect/handler/batch-handler.mjs +0 -123
- package/dist/esm/runtime/effect/handler/batch.mjs +0 -97
- package/dist/esm/runtime/effect/handler/definition.mjs +0 -61
- package/dist/esm/runtime/effect/handler/envelope.mjs +0 -63
- package/dist/esm/runtime/effect/handler/http.mjs +0 -69
- package/dist/esm/runtime/effect/handler/openapi.mjs +0 -19
- package/dist/esm/runtime/effect/handler/routing.mjs +0 -50
- package/dist/esm/runtime/effect/handler/rpc.mjs +0 -22
- package/dist/esm/runtime/effect/handler/types.mjs +0 -5
- package/dist/esm/runtime/effect/handler.mjs +0 -14
- package/dist/esm/runtime/effect/module.mjs +0 -75
- package/dist/esm/runtime/effect/operation-context.mjs +0 -65
- package/dist/esm/runtime/effect/rpcSerialization.mjs +0 -16
- package/dist/esm/runtime/effect-client/batch.mjs +0 -35
- package/dist/esm/runtime/effect-client/envelope.mjs +0 -104
- package/dist/esm/runtime/effect-client/guards.mjs +0 -3
- package/dist/esm/runtime/effect-client/request-context.mjs +0 -23
- package/dist/esm/runtime/effect-client/request.mjs +0 -28
- package/dist/esm/runtime/effect-client/types.mjs +0 -0
- package/dist/esm/runtime/safe-failure.mjs +0 -46
- package/dist/esm/utils/crossProjectServerPolicy.mjs +0 -44
- package/dist/esm/utils/effect-client-generator/generator.mjs +0 -28
- package/dist/esm/utils/effect-client-generator/index.mjs +0 -3
- package/dist/esm/utils/effect-client-generator/paths.mjs +0 -24
- package/dist/esm/utils/effect-client-generator/rendering.mjs +0 -179
- package/dist/esm/utils/effect-client-generator/runtime.mjs +0 -27
- package/dist/esm/utils/effect-client-generator/types.mjs +0 -0
- package/dist/esm/utils/effectClientGenerator.mjs +0 -1
- package/dist/esm/utils/effectSourceLoader.mjs +0 -256
- package/dist/esm/utils/headers.mjs +0 -8
- package/dist/esm-node/runtime/data-platform/batch/queue.mjs +0 -247
- package/dist/esm-node/runtime/data-platform/batch/request.mjs +0 -46
- package/dist/esm-node/runtime/data-platform/batch/response.mjs +0 -24
- package/dist/esm-node/runtime/data-platform/batch/telemetry.mjs +0 -24
- package/dist/esm-node/runtime/data-platform/batch/url.mjs +0 -26
- package/dist/esm-node/runtime/data-platform/batch-transport.mjs +0 -13
- package/dist/esm-node/runtime/data-platform/codec.mjs +0 -91
- package/dist/esm-node/runtime/data-platform/invalidation.mjs +0 -21
- package/dist/esm-node/runtime/data-platform/trace.mjs +0 -30
- package/dist/esm-node/runtime/data-platform/types.mjs +0 -5
- package/dist/esm-node/runtime/data-platform/validation.mjs +0 -129
- package/dist/esm-node/runtime/effect/adapter/constants.mjs +0 -7
- package/dist/esm-node/runtime/effect/adapter/cross-project-policy.mjs +0 -29
- package/dist/esm-node/runtime/effect/adapter/entry.mjs +0 -53
- package/dist/esm-node/runtime/effect/adapter/error-response.mjs +0 -44
- package/dist/esm-node/runtime/effect/adapter/handler.mjs +0 -16
- package/dist/esm-node/runtime/effect/adapter.mjs +0 -108
- package/dist/esm-node/runtime/effect/backend-federation/entry.mjs +0 -62
- package/dist/esm-node/runtime/effect/backend-federation/identity.mjs +0 -42
- package/dist/esm-node/runtime/effect/backend-federation/load.mjs +0 -38
- package/dist/esm-node/runtime/effect/backend-federation/plugin.mjs +0 -26
- package/dist/esm-node/runtime/effect/backend-federation/remotes.mjs +0 -14
- package/dist/esm-node/runtime/effect/backend-federation/runtime.mjs +0 -91
- package/dist/esm-node/runtime/effect/backend-federation/types.mjs +0 -1
- package/dist/esm-node/runtime/effect/backend-federation/utils.mjs +0 -8
- package/dist/esm-node/runtime/effect/backend-federation-manifest/errors.mjs +0 -33
- package/dist/esm-node/runtime/effect/backend-federation-manifest/index.mjs +0 -5
- package/dist/esm-node/runtime/effect/backend-federation-manifest/load.mjs +0 -57
- package/dist/esm-node/runtime/effect/backend-federation-manifest/metadata.mjs +0 -43
- package/dist/esm-node/runtime/effect/backend-federation-manifest/reference.mjs +0 -77
- package/dist/esm-node/runtime/effect/backend-federation-manifest/remote.mjs +0 -31
- package/dist/esm-node/runtime/effect/backend-federation-manifest/types.mjs +0 -1
- package/dist/esm-node/runtime/effect/backend-federation-manifest/validation.mjs +0 -66
- package/dist/esm-node/runtime/effect/backend-federation-manifest.mjs +0 -2
- package/dist/esm-node/runtime/effect/backend-federation.mjs +0 -6
- package/dist/esm-node/runtime/effect/context.mjs +0 -14
- package/dist/esm-node/runtime/effect/dispatch.mjs +0 -64
- package/dist/esm-node/runtime/effect/edge-context.mjs +0 -35
- package/dist/esm-node/runtime/effect/endpoint-contracts.mjs +0 -69
- package/dist/esm-node/runtime/effect/entry-shape.mjs +0 -37
- package/dist/esm-node/runtime/effect/handler/batch-handler.mjs +0 -124
- package/dist/esm-node/runtime/effect/handler/batch.mjs +0 -98
- package/dist/esm-node/runtime/effect/handler/definition.mjs +0 -62
- package/dist/esm-node/runtime/effect/handler/envelope.mjs +0 -64
- package/dist/esm-node/runtime/effect/handler/http.mjs +0 -70
- package/dist/esm-node/runtime/effect/handler/openapi.mjs +0 -20
- package/dist/esm-node/runtime/effect/handler/routing.mjs +0 -51
- package/dist/esm-node/runtime/effect/handler/rpc.mjs +0 -23
- package/dist/esm-node/runtime/effect/handler/types.mjs +0 -6
- package/dist/esm-node/runtime/effect/handler.mjs +0 -15
- package/dist/esm-node/runtime/effect/module.mjs +0 -76
- package/dist/esm-node/runtime/effect/operation-context.mjs +0 -66
- package/dist/esm-node/runtime/effect/rpcSerialization.mjs +0 -17
- package/dist/esm-node/runtime/effect-client/batch.mjs +0 -36
- package/dist/esm-node/runtime/effect-client/envelope.mjs +0 -105
- package/dist/esm-node/runtime/effect-client/guards.mjs +0 -4
- package/dist/esm-node/runtime/effect-client/request-context.mjs +0 -24
- package/dist/esm-node/runtime/effect-client/request.mjs +0 -29
- package/dist/esm-node/runtime/effect-client/types.mjs +0 -1
- package/dist/esm-node/runtime/safe-failure.mjs +0 -47
- package/dist/esm-node/utils/crossProjectServerPolicy.mjs +0 -46
- package/dist/esm-node/utils/effect-client-generator/generator.mjs +0 -29
- package/dist/esm-node/utils/effect-client-generator/index.mjs +0 -4
- package/dist/esm-node/utils/effect-client-generator/paths.mjs +0 -25
- package/dist/esm-node/utils/effect-client-generator/rendering.mjs +0 -180
- package/dist/esm-node/utils/effect-client-generator/runtime.mjs +0 -29
- package/dist/esm-node/utils/effect-client-generator/types.mjs +0 -1
- package/dist/esm-node/utils/effectClientGenerator.mjs +0 -2
- package/dist/esm-node/utils/effectSourceLoader.mjs +0 -257
- package/dist/esm-node/utils/headers.mjs +0 -9
- package/dist/types/runtime/data-platform/batch/queue.d.ts +0 -8
- package/dist/types/runtime/data-platform/batch/request.d.ts +0 -13
- package/dist/types/runtime/data-platform/batch/response.d.ts +0 -3
- package/dist/types/runtime/data-platform/batch/telemetry.d.ts +0 -4
- package/dist/types/runtime/data-platform/batch/url.d.ts +0 -4
- package/dist/types/runtime/data-platform/batch-transport.d.ts +0 -3
- package/dist/types/runtime/data-platform/codec.d.ts +0 -17
- package/dist/types/runtime/data-platform/invalidation.d.ts +0 -8
- package/dist/types/runtime/data-platform/trace.d.ts +0 -4
- package/dist/types/runtime/data-platform/types.d.ts +0 -146
- package/dist/types/runtime/data-platform/validation.d.ts +0 -29
- package/dist/types/runtime/effect/adapter/constants.d.ts +0 -1
- package/dist/types/runtime/effect/adapter/cross-project-policy.d.ts +0 -4
- package/dist/types/runtime/effect/adapter/entry.d.ts +0 -2
- package/dist/types/runtime/effect/adapter/error-response.d.ts +0 -2
- package/dist/types/runtime/effect/adapter/handler.d.ts +0 -7
- package/dist/types/runtime/effect/adapter.d.ts +0 -22
- package/dist/types/runtime/effect/backend-federation/entry.d.ts +0 -2
- package/dist/types/runtime/effect/backend-federation/identity.d.ts +0 -30
- package/dist/types/runtime/effect/backend-federation/load.d.ts +0 -13
- package/dist/types/runtime/effect/backend-federation/plugin.d.ts +0 -3
- package/dist/types/runtime/effect/backend-federation/remotes.d.ts +0 -2
- package/dist/types/runtime/effect/backend-federation/runtime.d.ts +0 -3
- package/dist/types/runtime/effect/backend-federation/types.d.ts +0 -73
- package/dist/types/runtime/effect/backend-federation/utils.d.ts +0 -2
- package/dist/types/runtime/effect/backend-federation-manifest/errors.d.ts +0 -11
- package/dist/types/runtime/effect/backend-federation-manifest/index.d.ts +0 -6
- package/dist/types/runtime/effect/backend-federation-manifest/load.d.ts +0 -3
- package/dist/types/runtime/effect/backend-federation-manifest/metadata.d.ts +0 -18
- package/dist/types/runtime/effect/backend-federation-manifest/reference.d.ts +0 -4
- package/dist/types/runtime/effect/backend-federation-manifest/remote.d.ts +0 -3
- package/dist/types/runtime/effect/backend-federation-manifest/types.d.ts +0 -51
- package/dist/types/runtime/effect/backend-federation-manifest/validation.d.ts +0 -5
- package/dist/types/runtime/effect/backend-federation-manifest.d.ts +0 -1
- package/dist/types/runtime/effect/backend-federation.d.ts +0 -7
- package/dist/types/runtime/effect/context.d.ts +0 -5
- package/dist/types/runtime/effect/dispatch.d.ts +0 -13
- package/dist/types/runtime/effect/edge-context.d.ts +0 -5
- package/dist/types/runtime/effect/endpoint-contracts.d.ts +0 -66
- package/dist/types/runtime/effect/entry-shape.d.ts +0 -31
- package/dist/types/runtime/effect/handler/batch-handler.d.ts +0 -11
- package/dist/types/runtime/effect/handler/batch.d.ts +0 -13
- package/dist/types/runtime/effect/handler/definition.d.ts +0 -7
- package/dist/types/runtime/effect/handler/envelope.d.ts +0 -13
- package/dist/types/runtime/effect/handler/http.d.ts +0 -15
- package/dist/types/runtime/effect/handler/openapi.d.ts +0 -4
- package/dist/types/runtime/effect/handler/routing.d.ts +0 -5
- package/dist/types/runtime/effect/handler/rpc.d.ts +0 -7
- package/dist/types/runtime/effect/handler/types.d.ts +0 -153
- package/dist/types/runtime/effect/handler.d.ts +0 -14
- package/dist/types/runtime/effect/module.d.ts +0 -36
- package/dist/types/runtime/effect/operation-context.d.ts +0 -10
- package/dist/types/runtime/effect/rpcSerialization.d.ts +0 -3
- package/dist/types/runtime/effect-client/batch.d.ts +0 -2
- package/dist/types/runtime/effect-client/envelope.d.ts +0 -15
- package/dist/types/runtime/effect-client/guards.d.ts +0 -2
- package/dist/types/runtime/effect-client/request-context.d.ts +0 -3
- package/dist/types/runtime/effect-client/request.d.ts +0 -1
- package/dist/types/runtime/effect-client/types.d.ts +0 -68
- package/dist/types/runtime/safe-failure.d.ts +0 -1
- package/dist/types/utils/crossProjectServerPolicy.d.ts +0 -36
- package/dist/types/utils/effect-client-generator/generator.d.ts +0 -10
- package/dist/types/utils/effect-client-generator/index.d.ts +0 -4
- package/dist/types/utils/effect-client-generator/paths.d.ts +0 -5
- package/dist/types/utils/effect-client-generator/rendering.d.ts +0 -4
- package/dist/types/utils/effect-client-generator/runtime.d.ts +0 -12
- package/dist/types/utils/effect-client-generator/types.d.ts +0 -27
- package/dist/types/utils/effectClientGenerator.d.ts +0 -2
- package/dist/types/utils/effectSourceLoader.d.ts +0 -25
- package/dist/types/utils/headers.d.ts +0 -1
|
@@ -1,98 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import * as __rspack_external_effect_Effect_41060786 from "effect/Effect";
|
|
3
|
-
import * as __rspack_external_effect_Layer_69c46453 from "effect/Layer";
|
|
4
|
-
import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http";
|
|
5
|
-
import { HttpApi, HttpApiClient, HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
|
|
6
|
-
import { Rpc, RpcClient, RpcGroup, RpcSchema, RpcSerialization } from "effect/unstable/rpc";
|
|
7
|
-
import { getRpcSerializationLayer } from "../effect/rpcSerialization.mjs";
|
|
8
|
-
import * as __rspack_external_effect_Schema_6065f72d from "effect/Schema";
|
|
9
|
-
import * as __rspack_external_effect_unstable_http_HttpClientError_4b9eaee6 from "effect/unstable/http/HttpClientError";
|
|
10
|
-
import * as __rspack_external_effect_Data_2b3f4efb from "effect/Data";
|
|
11
|
-
import * as __rspack_external_effect_Exit_1ca64b33 from "effect/Exit";
|
|
12
|
-
import * as __rspack_external_effect_ManagedRuntime_bfe218e3 from "effect/ManagedRuntime";
|
|
13
|
-
import * as __rspack_external_effect_Scope_f87b0bd6 from "effect/Scope";
|
|
14
|
-
class EffectRpcClientError extends __rspack_external_effect_Data_2b3f4efb.TaggedError('EffectRpcClientError') {
|
|
15
|
-
}
|
|
16
|
-
function isRecord(value) {
|
|
17
|
-
return 'object' == typeof value && null !== value && !Array.isArray(value);
|
|
18
|
-
}
|
|
19
|
-
function applySelection(value, selection) {
|
|
20
|
-
if (true === selection || void 0 === selection) return value;
|
|
21
|
-
if (Array.isArray(value)) return value.map((item)=>applySelection(item, selection));
|
|
22
|
-
if (!isRecord(value) || !isRecord(selection)) return value;
|
|
23
|
-
const masked = {};
|
|
24
|
-
for (const key of Object.keys(selection)){
|
|
25
|
-
const selected = selection[key];
|
|
26
|
-
if (void 0 !== selected && key in value && (true === selected || isRecord(selected))) masked[key] = applySelection(value[key], selected);
|
|
27
|
-
}
|
|
28
|
-
return masked;
|
|
29
|
-
}
|
|
30
|
-
function view() {
|
|
31
|
-
return (selection)=>selection;
|
|
32
|
-
}
|
|
33
|
-
function mask(value, selection) {
|
|
34
|
-
return applySelection(value, selection);
|
|
35
|
-
}
|
|
36
|
-
function runEffectView(request, selection) {
|
|
37
|
-
return new Promise((resolve, reject)=>{
|
|
38
|
-
request.then((value)=>resolve(mask(value, selection)), (reason)=>reject(reason));
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function makeEffectHttpApiClient(api, options) {
|
|
42
|
-
const requestContextHeaders = createRequestContextHeaders(options?.requestContext);
|
|
43
|
-
const transformClient = (client)=>{
|
|
44
|
-
const contextClient = 0 === Object.keys(requestContextHeaders).length ? client : client.pipe(HttpClient.mapRequest((request)=>{
|
|
45
|
-
let nextRequest = request;
|
|
46
|
-
for (const [header, value] of Object.entries(requestContextHeaders))if (void 0 === nextRequest.headers[header.toLowerCase()]) nextRequest = HttpClientRequest.setHeader(nextRequest, header, value);
|
|
47
|
-
return nextRequest;
|
|
48
|
-
}));
|
|
49
|
-
return 'function' == typeof options?.transformClient ? options.transformClient(contextClient) : contextClient;
|
|
50
|
-
};
|
|
51
|
-
return HttpApiClient.make(api, {
|
|
52
|
-
baseUrl: options?.baseUrl,
|
|
53
|
-
transformClient,
|
|
54
|
-
transformResponse: options?.transformResponse
|
|
55
|
-
}).pipe(__rspack_external_effect_Effect_41060786.provide(FetchHttpClient.layer));
|
|
56
|
-
}
|
|
57
|
-
function makeEffectRpcClient(group, options) {
|
|
58
|
-
const protocolLayer = __rspack_external_effect_Layer_69c46453.provide(RpcClient.layerProtocolHttp({
|
|
59
|
-
url: options.url
|
|
60
|
-
}), __rspack_external_effect_Layer_69c46453.mergeAll(getRpcSerializationLayer(options.serialization), FetchHttpClient.layer));
|
|
61
|
-
const middlewareLayer = options.middlewareLayer ?? __rspack_external_effect_Layer_69c46453.empty;
|
|
62
|
-
const runtimeLayer = __rspack_external_effect_Layer_69c46453.mergeAll(protocolLayer, middlewareLayer);
|
|
63
|
-
return __rspack_external_effect_Effect_41060786.tryPromise({
|
|
64
|
-
try: async ()=>{
|
|
65
|
-
const runtime = __rspack_external_effect_ManagedRuntime_bfe218e3.make(runtimeLayer);
|
|
66
|
-
const scope = await runtime.runPromise(__rspack_external_effect_Scope_f87b0bd6.make());
|
|
67
|
-
try {
|
|
68
|
-
const client = await runtime.runPromise(RpcClient.make(group, {
|
|
69
|
-
flatten: options.flatten
|
|
70
|
-
}).pipe(__rspack_external_effect_Effect_41060786.provideService(__rspack_external_effect_Scope_f87b0bd6.Scope, scope)));
|
|
71
|
-
let disposed = false;
|
|
72
|
-
const clientWithDispose = Object.assign(client, {
|
|
73
|
-
dispose: async ()=>{
|
|
74
|
-
if (!disposed) {
|
|
75
|
-
disposed = true;
|
|
76
|
-
await runtime.runPromise(__rspack_external_effect_Scope_f87b0bd6.close(scope, __rspack_external_effect_Exit_1ca64b33["void"]));
|
|
77
|
-
}
|
|
78
|
-
await runtime.dispose();
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return clientWithDispose;
|
|
82
|
-
} catch (error) {
|
|
83
|
-
try {
|
|
84
|
-
await runtime.runPromise(__rspack_external_effect_Scope_f87b0bd6.close(scope, __rspack_external_effect_Exit_1ca64b33["void"]));
|
|
85
|
-
} catch {}
|
|
86
|
-
try {
|
|
87
|
-
await runtime.dispose();
|
|
88
|
-
} catch {}
|
|
89
|
-
throw error;
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
catch: (error)=>new EffectRpcClientError({
|
|
93
|
-
cause: error
|
|
94
|
-
})
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
const runEffectRequest = __rspack_external_effect_Effect_41060786.runPromise;
|
|
98
|
-
export { EffectRpcClientError, HttpApi, HttpApiClient, HttpApiEndpoint, HttpApiGroup, HttpApiSchema, Rpc, RpcClient, RpcGroup, RpcSchema, RpcSerialization, __rspack_external_effect_Effect_41060786 as Effect, __rspack_external_effect_Layer_69c46453 as Layer, __rspack_external_effect_Schema_6065f72d as Schema, __rspack_external_effect_unstable_http_HttpClientError_4b9eaee6 as HttpClientError, makeEffectHttpApiClient, makeEffectRpcClient, mask, runEffectRequest, runEffectView, view };
|
|
1
|
+
export * from "@modern-js/bff-effect/effect-client";
|
|
@@ -1,62 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { prepareEffectRequest } from "./envelope.mjs";
|
|
3
|
-
import { createEffectRequestContext as external_request_context_mjs_createEffectRequestContext } from "./request-context.mjs";
|
|
4
|
-
const createGeneratedEffectClient = (manifest, config, requestRuntime)=>{
|
|
5
|
-
const createRequest = requestRuntime.createRequest;
|
|
6
|
-
const configureRequest = 'function' == typeof requestRuntime.configure ? requestRuntime.configure : void 0;
|
|
7
|
-
const createRequestContextHeaders = 'function' == typeof requestRuntime.createRequestContextHeaders ? requestRuntime.createRequestContextHeaders : void 0;
|
|
8
|
-
const httpMethodDecider = config.httpMethodDecider || 'functionName';
|
|
9
|
-
const port = config.useEnvPort && "u" > typeof process && process.env && process.env.PORT ? process.env.PORT : config.port;
|
|
10
|
-
configureGeneratedEffectClientRuntime(config, configureRequest);
|
|
11
|
-
const createEffectRequestContext = (requestContext)=>external_request_context_mjs_createEffectRequestContext(createRequestContextHeaders, requestContext);
|
|
12
|
-
const client = {};
|
|
13
|
-
const operationManifest = {};
|
|
14
|
-
for (const endpoint of manifest.endpoints){
|
|
15
|
-
const operationId = `${endpoint.method}:${endpoint.routePath}`;
|
|
16
|
-
const operation = {
|
|
17
|
-
appNamespace: config.appNamespace,
|
|
18
|
-
apiId: endpoint.apiId,
|
|
19
|
-
group: endpoint.group,
|
|
20
|
-
endpoint: endpoint.endpoint,
|
|
21
|
-
operationId,
|
|
22
|
-
routePath: endpoint.routePath,
|
|
23
|
-
method: endpoint.method,
|
|
24
|
-
operationVersion: endpoint.operationVersion,
|
|
25
|
-
schemaHash: endpoint.schemaHash,
|
|
26
|
-
version: endpoint.operationVersion
|
|
27
|
-
};
|
|
28
|
-
const sender = createRequest({
|
|
29
|
-
path: endpoint.routePath,
|
|
30
|
-
method: endpoint.method,
|
|
31
|
-
port,
|
|
32
|
-
operationContext: {
|
|
33
|
-
operationId,
|
|
34
|
-
routePath: endpoint.routePath,
|
|
35
|
-
method: endpoint.method,
|
|
36
|
-
schemaHash: endpoint.schemaHash,
|
|
37
|
-
operationVersion: endpoint.operationVersion
|
|
38
|
-
},
|
|
39
|
-
httpMethodDecider,
|
|
40
|
-
...config.requestId ? {
|
|
41
|
-
requestId: config.requestId
|
|
42
|
-
} : {}
|
|
43
|
-
});
|
|
44
|
-
const call = (request = {})=>sender(prepareEffectRequest({
|
|
45
|
-
endpoint,
|
|
46
|
-
operation,
|
|
47
|
-
request,
|
|
48
|
-
config,
|
|
49
|
-
createEffectRequestContext
|
|
50
|
-
}));
|
|
51
|
-
client[endpoint.group] ??= {};
|
|
52
|
-
client[endpoint.group][endpoint.endpoint] = call;
|
|
53
|
-
operationManifest[endpoint.group] ??= {};
|
|
54
|
-
operationManifest[endpoint.group][endpoint.endpoint] = operation;
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
client,
|
|
58
|
-
operationManifest,
|
|
59
|
-
createEffectRequestContext
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
export { createGeneratedEffectClient };
|
|
1
|
+
export * from "@modern-js/bff-effect/effect-client-runtime";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { resolveAdapterCrossProjectPolicy } from "@modern-js/plugin-bff-extensions/cross-project-policy";
|
|
2
|
+
import { bindHonoRouteHandlers } from "@modern-js/plugin-bff-extensions/hono";
|
|
1
3
|
import { logger } from "@modern-js/utils";
|
|
2
4
|
import createHonoRoutes from "../../utils/createHonoRoutes.mjs";
|
|
3
|
-
import { checkCrossProjectPolicyResponse, resolveAdapterCrossProjectPolicy } from "../../utils/crossProjectServerPolicy.mjs";
|
|
4
|
-
import { createSafeFailureResponse } from "../safe-failure.mjs";
|
|
5
5
|
const before = [
|
|
6
6
|
'custom-server-hook',
|
|
7
7
|
'custom-server-middleware',
|
|
@@ -11,78 +11,37 @@ class HonoAdapter {
|
|
|
11
11
|
constructor(api){
|
|
12
12
|
this.apiMiddleware = [];
|
|
13
13
|
this.isHono = true;
|
|
14
|
-
this.prefix = '/api';
|
|
15
14
|
this.setHandlers = async ()=>{
|
|
16
15
|
if (!this.isHono) return;
|
|
17
16
|
const { apiHandlerInfos } = this.api.getServerContext();
|
|
18
|
-
const
|
|
17
|
+
const handlers = apiHandlerInfos ?? [];
|
|
18
|
+
const honoHandlers = createHonoRoutes(handlers);
|
|
19
|
+
const policy = resolveAdapterCrossProjectPolicy(this.api, handlers);
|
|
19
20
|
this.apiMiddleware = honoHandlers.map(({ path, method, handler })=>({
|
|
20
21
|
name: 'hono-bff-api',
|
|
21
22
|
path,
|
|
22
23
|
method,
|
|
23
|
-
handler:
|
|
24
|
+
handler: bindHonoRouteHandlers({
|
|
25
|
+
handler,
|
|
26
|
+
policy,
|
|
27
|
+
routePath: path,
|
|
28
|
+
onError: this.api.getServerConfig()?.onError,
|
|
29
|
+
reportError: (error)=>logger.error(error)
|
|
30
|
+
}),
|
|
24
31
|
order: 'post',
|
|
25
32
|
before: before
|
|
26
33
|
}));
|
|
27
|
-
this.crossProjectPolicy = resolveAdapterCrossProjectPolicy(this.api, apiHandlerInfos || []);
|
|
28
|
-
if (this.crossProjectPolicy) {
|
|
29
|
-
const policyMiddleware = async (c, next)=>{
|
|
30
|
-
const denial = checkCrossProjectPolicyResponse(c.req.header(), this.crossProjectPolicy);
|
|
31
|
-
if (denial) return denial;
|
|
32
|
-
await next();
|
|
33
|
-
};
|
|
34
|
-
this.apiMiddleware.unshift({
|
|
35
|
-
name: 'bff-cross-project-policy',
|
|
36
|
-
path: `${this.prefix}/*`,
|
|
37
|
-
method: 'all',
|
|
38
|
-
handler: policyMiddleware,
|
|
39
|
-
order: 'post',
|
|
40
|
-
before: before
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
34
|
};
|
|
44
|
-
this.registerMiddleware = async (
|
|
35
|
+
this.registerMiddleware = async (_options)=>{
|
|
45
36
|
const { bffRuntimeFramework } = this.api.getServerContext();
|
|
46
37
|
if ('hono' !== bffRuntimeFramework) {
|
|
47
38
|
this.isHono = false;
|
|
48
39
|
return;
|
|
49
40
|
}
|
|
50
|
-
const { prefix } = options;
|
|
51
|
-
this.prefix = prefix || this.prefix;
|
|
52
41
|
const { middlewares: globalMiddlewares } = this.api.getServerContext();
|
|
53
42
|
await this.setHandlers();
|
|
54
43
|
globalMiddlewares.push(...this.apiMiddleware);
|
|
55
44
|
};
|
|
56
|
-
this.handleRouteError = async (error, c)=>{
|
|
57
|
-
try {
|
|
58
|
-
const onErrorHandler = this.api.getServerConfig()?.onError;
|
|
59
|
-
if (onErrorHandler) {
|
|
60
|
-
const result = await onErrorHandler(error, c);
|
|
61
|
-
if (result instanceof Response) return result;
|
|
62
|
-
} else logger.error(error);
|
|
63
|
-
} catch (configError) {
|
|
64
|
-
logger.error(`Error in serverConfig.onError handler: ${configError}`);
|
|
65
|
-
}
|
|
66
|
-
return createSafeFailureResponse(error);
|
|
67
|
-
};
|
|
68
|
-
this.withErrorBoundary = (handler)=>{
|
|
69
|
-
const handlers = Array.isArray(handler) ? handler : [
|
|
70
|
-
handler
|
|
71
|
-
];
|
|
72
|
-
const [firstHandler, ...restHandlers] = handlers;
|
|
73
|
-
if (!firstHandler) return handler;
|
|
74
|
-
const boundary = async (c, next)=>{
|
|
75
|
-
try {
|
|
76
|
-
return await firstHandler(c, next);
|
|
77
|
-
} catch (error) {
|
|
78
|
-
return this.handleRouteError(error, c);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
return Array.isArray(handler) ? [
|
|
82
|
-
boundary,
|
|
83
|
-
...restHandlers
|
|
84
|
-
] : boundary;
|
|
85
|
-
};
|
|
86
45
|
this.api = api;
|
|
87
46
|
}
|
|
88
47
|
}
|
package/dist/esm/server.mjs
CHANGED
|
@@ -7,7 +7,7 @@ const RUNTIME_ADAPTER_LOADERS = {
|
|
|
7
7
|
new HonoAdapter(api)
|
|
8
8
|
],
|
|
9
9
|
effect: async (api)=>{
|
|
10
|
-
const { EffectAdapter } = await import("
|
|
10
|
+
const { EffectAdapter } = await import("@modern-js/plugin-bff-extensions/effect-adapter");
|
|
11
11
|
return [
|
|
12
12
|
new EffectAdapter(api)
|
|
13
13
|
];
|
|
@@ -82,7 +82,7 @@ const server = ()=>({
|
|
|
82
82
|
}
|
|
83
83
|
const runtimeAdapters = await RUNTIME_ADAPTER_LOADERS[runtimeFramework](api);
|
|
84
84
|
await Promise.all(runtimeAdapters.map((adapter)=>adapter.registerMiddleware({
|
|
85
|
-
prefix,
|
|
85
|
+
prefix: 'effect' === runtimeFramework ? prefixList : prefix,
|
|
86
86
|
enableHandleWeb
|
|
87
87
|
})));
|
|
88
88
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { generateClient } from "@modern-js/bff-core";
|
|
2
2
|
import { fs, logger } from "@modern-js/utils";
|
|
3
3
|
import path from "path";
|
|
4
|
-
import { generateEffectClient, resolveEffectEntryFile } from "../effectClientGenerator.mjs";
|
|
5
4
|
import { CLIENT_DIR, createFileDetails, readDirectoryFiles, writeTargetFile } from "./files.mjs";
|
|
6
5
|
import { getPackageName } from "./package-json.mjs";
|
|
7
6
|
import { DEFAULT_EXPORT_RE, buildClientTypeFacade, createMissingClientDeclarationError, isMissingClientDeclarationError } from "./type-facade.mjs";
|
|
@@ -14,6 +13,7 @@ async function clientGenerator(draftOptions) {
|
|
|
14
13
|
const generatedSourceList = [
|
|
15
14
|
...lambdaSourceList
|
|
16
15
|
];
|
|
16
|
+
let generatedEffectClient = null;
|
|
17
17
|
const getClitentCode = async (resourcePath, source)=>{
|
|
18
18
|
const warning = `The file ${resourcePath} is not allowed to be imported in src directory, only API definition files are allowed.`;
|
|
19
19
|
if (!draftOptions.existLambda) return void logger.warn(warning);
|
|
@@ -49,6 +49,7 @@ async function clientGenerator(draftOptions) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
if ('effect' === draftOptions.bffRuntimeFramework) {
|
|
52
|
+
const { generateEffectClient, resolveEffectEntryFile } = await import("@modern-js/plugin-bff-extensions/client-generator");
|
|
52
53
|
const effectEntryFile = resolveEffectEntryFile({
|
|
53
54
|
appDir: draftOptions.appDir,
|
|
54
55
|
apiDir: draftOptions.apiDir,
|
|
@@ -63,21 +64,22 @@ async function clientGenerator(draftOptions) {
|
|
|
63
64
|
source: effectSource,
|
|
64
65
|
relativeDistPath: draftOptions.relativeDistPath
|
|
65
66
|
});
|
|
66
|
-
|
|
67
|
+
generatedEffectClient = await generateEffectClient({
|
|
67
68
|
appDir: draftOptions.appDir,
|
|
68
69
|
apiDir: draftOptions.apiDir,
|
|
69
70
|
resourcePath: effectEntryFile,
|
|
70
71
|
prefix: Array.isArray(draftOptions.prefix) ? draftOptions.prefix[0] : draftOptions.prefix,
|
|
71
72
|
port: Number(draftOptions.port),
|
|
72
73
|
target: 'bundle',
|
|
74
|
+
requestId: draftOptions.requestId,
|
|
73
75
|
requestCreator: draftOptions.requestCreator,
|
|
74
76
|
httpMethodDecider: draftOptions.httpMethodDecider,
|
|
75
77
|
dataPlatformBatch: draftOptions.effectDataPlatformBatch
|
|
76
78
|
});
|
|
77
|
-
if (
|
|
79
|
+
if (generatedEffectClient) {
|
|
78
80
|
const targetTypeFile = effectFileDetails.targetDir.replace(/\.js$/, '.d.ts');
|
|
79
|
-
await writeTargetFile(effectFileDetails.absTargetDir,
|
|
80
|
-
await writeTargetFile(path.resolve(targetTypeFile),
|
|
81
|
+
await writeTargetFile(effectFileDetails.absTargetDir, generatedEffectClient.code);
|
|
82
|
+
await writeTargetFile(path.resolve(targetTypeFile), generatedEffectClient.declaration);
|
|
81
83
|
generatedSourceList.push(effectFileDetails);
|
|
82
84
|
}
|
|
83
85
|
}
|
|
@@ -89,6 +91,7 @@ async function clientGenerator(draftOptions) {
|
|
|
89
91
|
}
|
|
90
92
|
if (generatedSourceList.length > 0) await writeClientModuleBoundary(draftOptions.appDir, draftOptions.relativeDistPath);
|
|
91
93
|
await setPackage(generatedSourceList, draftOptions.appDir, draftOptions.relativeDistPath);
|
|
94
|
+
return generatedEffectClient;
|
|
92
95
|
}
|
|
93
96
|
const generate = clientGenerator;
|
|
94
97
|
export default generate;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
const PACKAGE_NAME = '{packageName}';
|
|
3
|
+
const REQUEST_ID = '{requestId}';
|
|
3
4
|
const PREFIX = '{prefix}';
|
|
4
5
|
const API_DIR = '{apiDirectory}';
|
|
5
6
|
const LAMBDA_DIR = '{lambdaDirectory}';
|
|
@@ -42,7 +43,7 @@ const crossProjectApiPlugin = ()=>({
|
|
|
42
43
|
entry: effectEntry
|
|
43
44
|
};
|
|
44
45
|
resolvedConfig.bff.isCrossProjectServer = true;
|
|
45
|
-
resolvedConfig.bff.requestId = resolvedConfig.bff.requestId || config?.bff?.requestId || PACKAGE_NAME || 'default';
|
|
46
|
+
resolvedConfig.bff.requestId = resolvedConfig.bff.requestId || config?.bff?.requestId || REQUEST_ID || PACKAGE_NAME || 'default';
|
|
46
47
|
const generatedOperationContracts = "{operationContracts}" === OPERATION_CONTRACTS_JSON ? {} : JSON.parse(OPERATION_CONTRACTS_JSON);
|
|
47
48
|
resolvedConfig.bff.crossProjectPolicy = {
|
|
48
49
|
...resolvedConfig.bff.crossProjectPolicy || {},
|
|
@@ -64,4 +65,4 @@ const crossProjectApiPlugin = ()=>({
|
|
|
64
65
|
});
|
|
65
66
|
const utils_crossProjectApiPlugin = crossProjectApiPlugin;
|
|
66
67
|
export default utils_crossProjectApiPlugin;
|
|
67
|
-
export { API_DIR, DIST_DIR, EFFECT_ENTRY, LAMBDA_DIR, OPERATION_CONTRACTS_JSON, PACKAGE_NAME, PREFIX, RUNTIME_FRAMEWORK, crossProjectApiPlugin };
|
|
68
|
+
export { API_DIR, DIST_DIR, EFFECT_ENTRY, LAMBDA_DIR, OPERATION_CONTRACTS_JSON, PACKAGE_NAME, PREFIX, REQUEST_ID, RUNTIME_FRAMEWORK, crossProjectApiPlugin };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { fs, logger, normalizeToPosixPath } from "@modern-js/utils";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import { API_DIR, DIST_DIR, EFFECT_ENTRY, LAMBDA_DIR, OPERATION_CONTRACTS_JSON, PACKAGE_NAME, PREFIX, RUNTIME_FRAMEWORK } from "./crossProjectApiPlugin.mjs";
|
|
4
|
-
function replaceContent(source, packageName, prefix, relativeDistPath, relativeApiPath, relativeLambdaPath, runtimeFramework, relativeEffectEntry, operationContracts) {
|
|
5
|
-
const updatedSource = source.replace(new RegExp(PACKAGE_NAME, 'g'), packageName).replace(new RegExp(PREFIX, 'g'), prefix).replace(new RegExp(DIST_DIR, 'g'), normalizeToPosixPath(relativeDistPath)).replace(new RegExp(API_DIR, 'g'), normalizeToPosixPath(relativeApiPath)).replace(new RegExp(LAMBDA_DIR, 'g'), normalizeToPosixPath(relativeLambdaPath)).replace(new RegExp(RUNTIME_FRAMEWORK, 'g'), runtimeFramework).replace(new RegExp(EFFECT_ENTRY, 'g'), normalizeToPosixPath(relativeEffectEntry)).replace(`'${OPERATION_CONTRACTS_JSON}'`, ()=>JSON.stringify(JSON.stringify(operationContracts)));
|
|
3
|
+
import { API_DIR, DIST_DIR, EFFECT_ENTRY, LAMBDA_DIR, OPERATION_CONTRACTS_JSON, PACKAGE_NAME, PREFIX, REQUEST_ID, RUNTIME_FRAMEWORK } from "./crossProjectApiPlugin.mjs";
|
|
4
|
+
function replaceContent(source, packageName, requestId, prefix, relativeDistPath, relativeApiPath, relativeLambdaPath, runtimeFramework, relativeEffectEntry, operationContracts) {
|
|
5
|
+
const updatedSource = source.replace(new RegExp(PACKAGE_NAME, 'g'), packageName).replace(new RegExp(REQUEST_ID, 'g'), requestId).replace(new RegExp(PREFIX, 'g'), prefix).replace(new RegExp(DIST_DIR, 'g'), normalizeToPosixPath(relativeDistPath)).replace(new RegExp(API_DIR, 'g'), normalizeToPosixPath(relativeApiPath)).replace(new RegExp(LAMBDA_DIR, 'g'), normalizeToPosixPath(relativeLambdaPath)).replace(new RegExp(RUNTIME_FRAMEWORK, 'g'), runtimeFramework).replace(new RegExp(EFFECT_ENTRY, 'g'), normalizeToPosixPath(relativeEffectEntry)).replace(`'${OPERATION_CONTRACTS_JSON}'`, ()=>JSON.stringify(JSON.stringify(operationContracts)));
|
|
6
6
|
return updatedSource;
|
|
7
7
|
}
|
|
8
|
-
async function pluginGenerator({ prefix, appDirectory, relativeDistPath, relativeApiPath, relativeLambdaPath, runtimeFramework, relativeEffectEntry, operationContracts }) {
|
|
8
|
+
async function pluginGenerator({ prefix, appDirectory, requestId, relativeDistPath, relativeApiPath, relativeLambdaPath, runtimeFramework, relativeEffectEntry, operationContracts }) {
|
|
9
9
|
try {
|
|
10
10
|
const packageContent = await fs.readFile(path.resolve(appDirectory, './package.json'), 'utf8');
|
|
11
11
|
const packageJson = JSON.parse(packageContent);
|
|
12
12
|
const pluginDir = path.resolve(appDirectory, `./${relativeDistPath}`, 'plugin');
|
|
13
13
|
const pluginPath = path.join(pluginDir, 'index.js');
|
|
14
14
|
const pluginTemplate = await fs.readFile(path.resolve(__dirname, 'crossProjectApiPlugin.js'), 'utf8');
|
|
15
|
-
const updatedPlugin = replaceContent(pluginTemplate, packageJson.name, prefix, relativeDistPath, relativeApiPath, relativeLambdaPath, runtimeFramework, relativeEffectEntry, operationContracts);
|
|
15
|
+
const updatedPlugin = replaceContent(pluginTemplate, packageJson.name, requestId, prefix, relativeDistPath, relativeApiPath, relativeLambdaPath, runtimeFramework, relativeEffectEntry, operationContracts);
|
|
16
16
|
await fs.ensureFile(pluginPath);
|
|
17
17
|
await fs.writeFile(pluginPath, updatedPlugin);
|
|
18
18
|
const typeContent = `import type { AppTools, CliPlugin } from '@modern-js/app-tools';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { renderProducerRuntimeDefaults } from "@modern-js/plugin-bff-extensions/cross-project-generation";
|
|
1
2
|
import { fs } from "@modern-js/utils";
|
|
2
3
|
import path from "path";
|
|
3
4
|
const getPackageName = (appDirectory)=>{
|
|
@@ -14,21 +15,8 @@ async function runtimeGenerator({ runtime, appDirectory, relativeDistPath, packa
|
|
|
14
15
|
const requestId = packageName || getPackageName(appDirectory) || process.env.npm_package_name || 'default';
|
|
15
16
|
const runtimeImportPath = JSON.stringify(runtime);
|
|
16
17
|
const requestIdValue = JSON.stringify(requestId);
|
|
17
|
-
const source = `const { configure: _configure } = require(${runtimeImportPath});
|
|
18
|
-
const defaultSecureOptions = {
|
|
19
|
-
requestId: ${requestIdValue},
|
|
20
|
-
requireEnvelope: true,
|
|
21
|
-
identityBinding: {
|
|
22
|
-
enabled: true,
|
|
23
|
-
strict: true,
|
|
24
|
-
},
|
|
25
|
-
operationContract: {
|
|
26
|
-
enabled: true,
|
|
27
|
-
strict: true,
|
|
28
|
-
requireSchemaHash: true,
|
|
29
|
-
requireOperationVersion: true,
|
|
30
|
-
},
|
|
31
|
-
};
|
|
18
|
+
const source = `'use strict'; const { configure: _configure } = require(${runtimeImportPath});
|
|
19
|
+
const defaultSecureOptions = ${renderProducerRuntimeDefaults(requestIdValue)};
|
|
32
20
|
const initProducerClient = (options) => {
|
|
33
21
|
return _configure({
|
|
34
22
|
...defaultSecureOptions,
|
|
@@ -79,7 +67,7 @@ async function runtimeGenerator({ runtime, appDirectory, relativeDistPath, packa
|
|
|
79
67
|
}) => string;
|
|
80
68
|
requestId?: string;
|
|
81
69
|
};
|
|
82
|
-
export declare const initProducerClient: (options
|
|
70
|
+
export declare const initProducerClient: (options?: ProducerClientOptions) => ReturnType<ProducerRuntimeModule['configure']>;
|
|
83
71
|
export declare const configure: typeof initProducerClient;`;
|
|
84
72
|
const pluginTypePath = path.join(pluginDir, 'index.d.ts');
|
|
85
73
|
await fs.ensureFile(pluginTypePath);
|
|
@@ -3,33 +3,11 @@ import { ApiRouter, buildOperationContractMap, deriveOperationVersion } from "@m
|
|
|
3
3
|
import { compile } from "@modern-js/server-utils";
|
|
4
4
|
import { API_DIR, SHARED_DIR, fs, resolveServerTsconfig, upath } from "@modern-js/utils";
|
|
5
5
|
import clientGenerator from "../utils/clientGenerator.mjs";
|
|
6
|
-
import { bundleEffectEntryForNode } from "../utils/effectSourceLoader.mjs";
|
|
7
6
|
import pluginGenerator from "../utils/pluginGenerator.mjs";
|
|
8
7
|
import runtimeGenerator from "../utils/runtimeGenerator.mjs";
|
|
9
8
|
import { getPrimaryPrefix } from "./prefix.mjs";
|
|
10
9
|
import { serializeServerGlobalVars, transformServerGlobalVars } from "./serverGlobalVars.mjs";
|
|
11
10
|
const RUNTIME_CREATE_REQUEST = '@modern-js/plugin-bff/client';
|
|
12
|
-
const effectEntryExtensions = [
|
|
13
|
-
'.js',
|
|
14
|
-
'.jsx',
|
|
15
|
-
'.ts',
|
|
16
|
-
'.tsx',
|
|
17
|
-
'.mjs',
|
|
18
|
-
'.mts',
|
|
19
|
-
'.cjs',
|
|
20
|
-
'.cts'
|
|
21
|
-
];
|
|
22
|
-
function resolveEffectSourceEntry(appDirectory, apiDirectory, configuredEntry) {
|
|
23
|
-
const entry = void 0 !== configuredEntry && configuredEntry.length > 0 ? upath.isAbsolute(configuredEntry) ? configuredEntry : upath.resolve(appDirectory, configuredEntry) : upath.resolve(apiDirectory, 'index');
|
|
24
|
-
return upath.extname(entry).length > 0 ? entry : effectEntryExtensions.map((extension)=>`${entry}${extension}`).find((candidate)=>fs.existsSync(candidate));
|
|
25
|
-
}
|
|
26
|
-
function resolveBuiltEffectEntry(appDirectory, distDirectory, sourceEntry) {
|
|
27
|
-
if (void 0 === sourceEntry || 0 === sourceEntry.length) return;
|
|
28
|
-
const relativeEntry = upath.relative(appDirectory, sourceEntry);
|
|
29
|
-
if ('..' === relativeEntry || relativeEntry.startsWith(`..${upath.sep}`)) throw new Error(`Effect BFF entry must be inside the application directory: ${sourceEntry}`);
|
|
30
|
-
const builtEntry = upath.resolve(distDirectory, relativeEntry).replace(/\.(?:[cm]?ts|tsx|jsx)$/u, '.js');
|
|
31
|
-
return fs.existsSync(builtEntry) ? builtEntry : void 0;
|
|
32
|
-
}
|
|
33
11
|
const createBffGenerator = (api)=>{
|
|
34
12
|
const compileApi = ()=>Promise.resolve().then(()=>{
|
|
35
13
|
const { appDirectory, distDirectory, apiDirectory, bffRuntimeFramework, sharedDirectory, moduleType } = api.getAppContext();
|
|
@@ -57,20 +35,20 @@ const createBffGenerator = (api)=>{
|
|
|
57
35
|
tsconfigPath,
|
|
58
36
|
moduleType,
|
|
59
37
|
throwErrorInsteadOfExit: true
|
|
60
|
-
}).then(()=>transformServerGlobalVars(sourceDirs.map((sourceDir)=>upath.resolve(distDir, upath.relative(appDirectory, sourceDir))), serializedGlobalVars)).then(()=>{
|
|
38
|
+
}).then(()=>transformServerGlobalVars(sourceDirs.map((sourceDir)=>upath.resolve(distDir, upath.relative(appDirectory, sourceDir))), serializedGlobalVars)).then(async ()=>{
|
|
61
39
|
if ('effect' !== bffRuntimeFramework) return;
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
if (void 0 === builtEntry || 0 === builtEntry.length) throw new Error(`Effect BFF entry was not emitted into ${distDir}: ${sourceEntry ?? upath.resolve(apiDir, 'index')}`);
|
|
65
|
-
return bundleEffectEntryForNode({
|
|
40
|
+
const { bundleBuiltEffectEntryForNode } = await import("@modern-js/plugin-bff-extensions/client-generator");
|
|
41
|
+
return bundleBuiltEffectEntryForNode({
|
|
66
42
|
appDir: appDirectory,
|
|
67
|
-
|
|
43
|
+
apiDir,
|
|
44
|
+
distDir,
|
|
45
|
+
effectEntry: modernConfig.bff?.effect?.entry,
|
|
68
46
|
format: 'module' === moduleType ? 'esm' : 'cjs'
|
|
69
47
|
});
|
|
70
48
|
});
|
|
71
49
|
});
|
|
72
50
|
});
|
|
73
|
-
const generate = ()=>Promise.resolve().then(()=>{
|
|
51
|
+
const generate = ()=>Promise.resolve().then(async ()=>{
|
|
74
52
|
const { appDirectory, apiDirectory, lambdaDirectory, port, bffRuntimeFramework, packageName } = api.getAppContext();
|
|
75
53
|
const modernConfig = api.getNormalizedConfig();
|
|
76
54
|
const relativeDistPath = modernConfig?.output?.distPath?.root || 'dist';
|
|
@@ -88,43 +66,57 @@ const createBffGenerator = (api)=>{
|
|
|
88
66
|
const lambdaDir = apiRouter.getLambdaDir();
|
|
89
67
|
const existLambda = apiRouter.isExistLambda();
|
|
90
68
|
const packageJson = fs.readJSONSync(upath.resolve(appDirectory, 'package.json'));
|
|
91
|
-
const requestId = packageJson.name || packageName;
|
|
92
|
-
const operationContractsPromise = existLambda ? apiRouter.getApiHandlers().then((handlers)=>buildOperationContractMap({
|
|
69
|
+
const requestId = bff?.requestId || packageJson.name || packageName || 'default';
|
|
70
|
+
const operationContractsPromise = 'effect' !== bffRuntimeFramework && existLambda ? apiRouter.getApiHandlers().then((handlers)=>buildOperationContractMap({
|
|
93
71
|
handlers,
|
|
94
72
|
requestId,
|
|
95
73
|
operationVersion: deriveOperationVersion(packageJson.version)
|
|
96
74
|
})) : Promise.resolve({});
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
75
|
+
const runtime = bff?.runtimeCreateRequest || RUNTIME_CREATE_REQUEST;
|
|
76
|
+
const relativeApiPath = upath.relative(appDirectory, apiDirectory);
|
|
77
|
+
const relativeLambdaPath = upath.relative(appDirectory, lambdaDir);
|
|
78
|
+
const { sourceEffectEntry, relativeEffectEntry } = 'effect' === bffRuntimeFramework ? (await import("@modern-js/plugin-bff-extensions/client-generator")).resolveEffectEntryPaths({
|
|
79
|
+
appDir: appDirectory,
|
|
80
|
+
apiDir: apiDirectory,
|
|
81
|
+
effectEntry: bff?.effect?.entry
|
|
82
|
+
}) : {
|
|
83
|
+
sourceEffectEntry: void 0,
|
|
84
|
+
relativeEffectEntry: ''
|
|
85
|
+
};
|
|
86
|
+
const clientGenerationPromise = clientGenerator({
|
|
87
|
+
prefix,
|
|
88
|
+
appDir: appDirectory,
|
|
89
|
+
apiDir: apiDirectory,
|
|
90
|
+
lambdaDir,
|
|
91
|
+
existLambda,
|
|
92
|
+
port,
|
|
93
|
+
requestId,
|
|
94
|
+
requestCreator: bff?.requestCreator,
|
|
95
|
+
httpMethodDecider,
|
|
96
|
+
relativeDistPath,
|
|
97
|
+
relativeApiPath,
|
|
98
|
+
apiFiles: apiRouter.getApiFiles(),
|
|
99
|
+
bffRuntimeFramework,
|
|
100
|
+
effectEntry: bff?.effect?.entry,
|
|
101
|
+
effectDataPlatformBatch: bff?.effect?.dataPlatform?.batch
|
|
102
|
+
});
|
|
103
|
+
return Promise.all([
|
|
104
|
+
operationContractsPromise,
|
|
105
|
+
clientGenerationPromise
|
|
106
|
+
]).then(([lambdaContracts, generatedEffectClient])=>{
|
|
107
|
+
if ('effect' === bffRuntimeFramework && null === generatedEffectClient) throw new Error(`Effect cross-project client generation failed for ${sourceEffectEntry ?? apiDirectory}.`);
|
|
108
|
+
const operationContracts = 'effect' === bffRuntimeFramework ? generatedEffectClient?.operationContracts ?? {} : lambdaContracts;
|
|
103
109
|
return pluginGenerator({
|
|
104
110
|
prefix,
|
|
105
111
|
appDirectory,
|
|
112
|
+
requestId,
|
|
106
113
|
relativeDistPath,
|
|
107
114
|
relativeApiPath,
|
|
108
115
|
relativeLambdaPath,
|
|
109
116
|
runtimeFramework: 'hono' === bffRuntimeFramework ? 'hono' : 'effect',
|
|
110
117
|
relativeEffectEntry,
|
|
111
118
|
operationContracts
|
|
112
|
-
}).then(()=>
|
|
113
|
-
prefix,
|
|
114
|
-
appDir: appDirectory,
|
|
115
|
-
apiDir: apiDirectory,
|
|
116
|
-
lambdaDir,
|
|
117
|
-
existLambda,
|
|
118
|
-
port,
|
|
119
|
-
requestCreator: bff?.requestCreator,
|
|
120
|
-
httpMethodDecider,
|
|
121
|
-
relativeDistPath,
|
|
122
|
-
relativeApiPath,
|
|
123
|
-
apiFiles: apiRouter.getApiFiles(),
|
|
124
|
-
bffRuntimeFramework,
|
|
125
|
-
effectEntry: bff?.effect?.entry,
|
|
126
|
-
effectDataPlatformBatch: bff?.effect?.dataPlatform?.batch
|
|
127
|
-
})).then(()=>runtimeGenerator({
|
|
119
|
+
}).then(()=>runtimeGenerator({
|
|
128
120
|
runtime,
|
|
129
121
|
appDirectory,
|
|
130
122
|
relativeDistPath
|