@bleedingdev/modern-js-plugin-bff 3.5.0-ultramodern.1 → 3.5.0-ultramodern.100
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 +184 -0
- package/dist/cjs/cli/prefix.js +50 -0
- package/dist/cjs/cli/serverGlobalVars.js +127 -0
- package/dist/cjs/cli/watch.js +51 -0
- package/dist/cjs/cli.js +11 -130
- package/dist/cjs/loader.js +19 -2
- package/dist/cjs/runtime/data-platform/batch/queue.js +284 -0
- package/dist/cjs/runtime/data-platform/batch/request.js +98 -0
- package/dist/cjs/runtime/data-platform/batch/response.js +64 -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 +92 -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 +26 -146
- package/dist/cjs/runtime/effect/backend-federation/entry.js +99 -0
- package/dist/cjs/runtime/effect/backend-federation/identity.js +82 -0
- package/dist/cjs/runtime/effect/backend-federation/load.js +66 -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 +94 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/metadata.js +101 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest/reference.js +120 -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 +109 -0
- package/dist/cjs/runtime/effect/backend-federation-manifest.js +62 -0
- package/dist/cjs/runtime/effect/backend-federation.js +65 -0
- package/dist/cjs/runtime/effect/dispatch.js +101 -0
- package/dist/cjs/runtime/effect/edge.js +64 -71
- package/dist/cjs/runtime/effect/endpoint-contracts.js +13 -22
- package/dist/cjs/runtime/effect/entry-shape.js +84 -0
- 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 +37 -529
- package/dist/cjs/runtime/effect/index.js +91 -15
- package/dist/cjs/runtime/effect/module.js +23 -80
- 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/hono/adapter.js +32 -79
- package/dist/cjs/runtime/safe-failure.js +2 -1
- package/dist/cjs/server.js +19 -30
- 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 +68 -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 +85 -0
- package/dist/cjs/utils/effect-client-generator/types.js +18 -0
- package/dist/cjs/utils/effectClientGenerator.js +5 -262
- package/dist/cjs/utils/effectSourceLoader.js +252 -0
- package/dist/esm/cli/compress.mjs +14 -0
- package/dist/esm/cli/generator.mjs +133 -0
- package/dist/esm/cli/prefix.mjs +9 -0
- package/dist/esm/cli/serverGlobalVars.mjs +76 -0
- package/dist/esm/cli/watch.mjs +13 -0
- package/dist/esm/cli.mjs +7 -121
- package/dist/esm/loader.mjs +19 -2
- 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 +44 -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 +27 -147
- package/dist/esm/runtime/effect/backend-federation/entry.mjs +61 -0
- package/dist/esm/runtime/effect/backend-federation/identity.mjs +41 -0
- package/dist/esm/runtime/effect/backend-federation/load.mjs +28 -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 +56 -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 +65 -0
- package/dist/esm/runtime/effect/backend-federation-manifest.mjs +1 -0
- package/dist/esm/runtime/effect/backend-federation.mjs +5 -0
- package/dist/esm/runtime/effect/dispatch.mjs +63 -0
- package/dist/esm/runtime/effect/edge.mjs +17 -63
- package/dist/esm/runtime/effect/endpoint-contracts.mjs +14 -14
- package/dist/esm/runtime/effect/entry-shape.mjs +36 -0
- 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 +11 -506
- package/dist/esm/runtime/effect/index.mjs +5 -2
- package/dist/esm/runtime/effect/module.mjs +25 -82
- 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 +27 -37
- 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/hono/adapter.mjs +33 -80
- package/dist/esm/runtime/safe-failure.mjs +2 -1
- package/dist/esm/server.mjs +18 -29
- 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 +27 -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 +34 -0
- package/dist/esm/utils/effect-client-generator/types.mjs +0 -0
- package/dist/esm/utils/effectClientGenerator.mjs +1 -249
- package/dist/esm/utils/effectSourceLoader.mjs +199 -0
- package/dist/esm-node/cli/compress.mjs +15 -0
- package/dist/esm-node/cli/generator.mjs +134 -0
- package/dist/esm-node/cli/prefix.mjs +10 -0
- package/dist/esm-node/cli/serverGlobalVars.mjs +77 -0
- package/dist/esm-node/cli/watch.mjs +14 -0
- package/dist/esm-node/cli.mjs +9 -123
- package/dist/esm-node/loader.mjs +19 -2
- 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 +45 -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 +28 -149
- package/dist/esm-node/runtime/effect/backend-federation/entry.mjs +62 -0
- package/dist/esm-node/runtime/effect/backend-federation/identity.mjs +42 -0
- package/dist/esm-node/runtime/effect/backend-federation/load.mjs +29 -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 +57 -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 +66 -0
- package/dist/esm-node/runtime/effect/backend-federation-manifest.mjs +2 -0
- package/dist/esm-node/runtime/effect/backend-federation.mjs +6 -0
- package/dist/esm-node/runtime/effect/dispatch.mjs +64 -0
- package/dist/esm-node/runtime/effect/edge.mjs +17 -63
- package/dist/esm-node/runtime/effect/endpoint-contracts.mjs +14 -14
- package/dist/esm-node/runtime/effect/entry-shape.mjs +37 -0
- 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 +11 -506
- package/dist/esm-node/runtime/effect/index.mjs +5 -2
- package/dist/esm-node/runtime/effect/module.mjs +25 -82
- 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 +27 -37
- 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/hono/adapter.mjs +33 -80
- package/dist/esm-node/runtime/safe-failure.mjs +2 -1
- package/dist/esm-node/server.mjs +18 -29
- 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 +28 -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 +36 -0
- package/dist/esm-node/utils/effect-client-generator/types.mjs +1 -0
- package/dist/esm-node/utils/effectClientGenerator.mjs +2 -251
- package/dist/esm-node/utils/effectSourceLoader.mjs +200 -0
- package/dist/esm-node/utils/pluginGenerator.mjs +2 -2
- 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/serverGlobalVars.d.ts +4 -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 +8 -0
- package/dist/types/runtime/data-platform/batch/request.d.ts +13 -0
- package/dist/types/runtime/data-platform/batch/response.d.ts +3 -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 +7 -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/identity.d.ts +30 -0
- package/dist/types/runtime/effect/backend-federation/load.d.ts +13 -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 +73 -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 +4 -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 -0
- package/dist/types/runtime/effect/backend-federation.d.ts +7 -0
- package/dist/types/runtime/effect/dispatch.d.ts +13 -0
- package/dist/types/runtime/effect/edge.d.ts +8 -8
- package/dist/types/runtime/effect/endpoint-contracts.d.ts +11 -7
- package/dist/types/runtime/effect/entry-shape.d.ts +31 -0
- 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 +4 -190
- package/dist/types/runtime/effect/index.d.ts +3 -0
- package/dist/types/runtime/effect/module.d.ts +3 -2
- 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/index.d.ts +1 -1
- 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/runtime/hono/adapter.d.ts +14 -8
- 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 +12 -0
- package/dist/types/utils/effect-client-generator/types.d.ts +27 -0
- package/dist/types/utils/effectClientGenerator.d.ts +2 -41
- package/dist/types/utils/effectSourceLoader.d.ts +15 -0
- package/package.json +57 -33
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
bundleEffectEntryForNode: ()=>bundleEffectEntryForNode,
|
|
41
|
+
loadEffectSourceModule: ()=>loadEffectSourceModule
|
|
42
|
+
});
|
|
43
|
+
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
44
|
+
var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
|
|
45
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
46
|
+
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
47
|
+
const external_node_module_namespaceObject = require("node:module");
|
|
48
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
49
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
50
|
+
const external_node_url_namespaceObject = require("node:url");
|
|
51
|
+
const external_esbuild_namespaceObject = require("esbuild");
|
|
52
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
53
|
+
const SOURCE_LOADERS = new Map([
|
|
54
|
+
[
|
|
55
|
+
'.js',
|
|
56
|
+
'js'
|
|
57
|
+
],
|
|
58
|
+
[
|
|
59
|
+
'.jsx',
|
|
60
|
+
'jsx'
|
|
61
|
+
],
|
|
62
|
+
[
|
|
63
|
+
'.mjs',
|
|
64
|
+
'js'
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
'.cjs',
|
|
68
|
+
'js'
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
'.ts',
|
|
72
|
+
'ts'
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
'.tsx',
|
|
76
|
+
'tsx'
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
'.mts',
|
|
80
|
+
'ts'
|
|
81
|
+
],
|
|
82
|
+
[
|
|
83
|
+
'.cts',
|
|
84
|
+
'ts'
|
|
85
|
+
]
|
|
86
|
+
]);
|
|
87
|
+
function sourceLoader(args) {
|
|
88
|
+
return SOURCE_LOADERS.get(external_node_path_default().extname(args.path).toLowerCase());
|
|
89
|
+
}
|
|
90
|
+
function preserveSourceModuleSemantics() {
|
|
91
|
+
return {
|
|
92
|
+
name: 'modern-js-effect-source-semantics',
|
|
93
|
+
setup (buildApi) {
|
|
94
|
+
buildApi.onLoad({
|
|
95
|
+
filter: /\.[cm]?[jt]sx?$/
|
|
96
|
+
}, async (args)=>{
|
|
97
|
+
const loader = sourceLoader(args);
|
|
98
|
+
if (!loader) return;
|
|
99
|
+
const source = await external_node_fs_default().promises.readFile(args.path, 'utf8');
|
|
100
|
+
const compiled = await (0, external_esbuild_namespaceObject.transform)(source, {
|
|
101
|
+
define: {
|
|
102
|
+
'import.meta.url': JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(args.path).href)
|
|
103
|
+
},
|
|
104
|
+
jsx: 'automatic',
|
|
105
|
+
loader,
|
|
106
|
+
sourcefile: args.path,
|
|
107
|
+
target: 'node20'
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
contents: compiled.code,
|
|
111
|
+
loader: 'js',
|
|
112
|
+
resolveDir: external_node_path_default().dirname(args.path)
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const nodeBuiltins = new Set([
|
|
119
|
+
...external_node_module_namespaceObject.builtinModules,
|
|
120
|
+
...external_node_module_namespaceObject.builtinModules.map((name)=>`node:${name}`)
|
|
121
|
+
]);
|
|
122
|
+
const dependencyResolutionMarker = 'modern-js-effect-dependency-resolution';
|
|
123
|
+
function isBareSpecifier(specifier) {
|
|
124
|
+
return !specifier.startsWith('.') && !specifier.startsWith('/') && !external_node_path_default().isAbsolute(specifier);
|
|
125
|
+
}
|
|
126
|
+
function externalizeInstalledDependencies() {
|
|
127
|
+
return {
|
|
128
|
+
name: 'modern-js-effect-installed-dependencies',
|
|
129
|
+
setup (buildApi) {
|
|
130
|
+
buildApi.onResolve({
|
|
131
|
+
filter: /.*/
|
|
132
|
+
}, async (args)=>{
|
|
133
|
+
if (!isBareSpecifier(args.path) || nodeBuiltins.has(args.path) || args.pluginData?.[dependencyResolutionMarker] === true) return nodeBuiltins.has(args.path) ? {
|
|
134
|
+
external: true,
|
|
135
|
+
path: args.path
|
|
136
|
+
} : void 0;
|
|
137
|
+
const resolution = await buildApi.resolve(args.path, {
|
|
138
|
+
importer: args.importer,
|
|
139
|
+
kind: args.kind,
|
|
140
|
+
namespace: args.namespace,
|
|
141
|
+
pluginData: {
|
|
142
|
+
...args.pluginData,
|
|
143
|
+
[dependencyResolutionMarker]: true
|
|
144
|
+
},
|
|
145
|
+
resolveDir: args.resolveDir
|
|
146
|
+
});
|
|
147
|
+
if (resolution.errors.length > 0) return {
|
|
148
|
+
external: true,
|
|
149
|
+
path: args.path
|
|
150
|
+
};
|
|
151
|
+
if (resolution.external || !resolution.path) return {
|
|
152
|
+
external: true,
|
|
153
|
+
path: args.path
|
|
154
|
+
};
|
|
155
|
+
const realPath = await external_node_fs_default().promises.realpath(resolution.path).catch(()=>resolution.path);
|
|
156
|
+
if (realPath.includes(`${external_node_path_default().sep}node_modules${external_node_path_default().sep}`)) return {
|
|
157
|
+
external: true,
|
|
158
|
+
path: args.path
|
|
159
|
+
};
|
|
160
|
+
return {
|
|
161
|
+
namespace: resolution.namespace,
|
|
162
|
+
path: resolution.path,
|
|
163
|
+
pluginData: resolution.pluginData,
|
|
164
|
+
sideEffects: resolution.sideEffects,
|
|
165
|
+
suffix: resolution.suffix,
|
|
166
|
+
warnings: resolution.warnings,
|
|
167
|
+
watchDirs: resolution.watchDirs,
|
|
168
|
+
watchFiles: resolution.watchFiles
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
async function bundleEffectEntryForNode(options) {
|
|
175
|
+
await (0, external_esbuild_namespaceObject.build)({
|
|
176
|
+
absWorkingDir: options.appDir,
|
|
177
|
+
allowOverwrite: true,
|
|
178
|
+
bundle: true,
|
|
179
|
+
entryPoints: [
|
|
180
|
+
options.entryPath
|
|
181
|
+
],
|
|
182
|
+
format: options.format,
|
|
183
|
+
logLevel: 'silent',
|
|
184
|
+
outfile: options.entryPath,
|
|
185
|
+
platform: 'node',
|
|
186
|
+
plugins: [
|
|
187
|
+
externalizeInstalledDependencies(),
|
|
188
|
+
preserveSourceModuleSemantics()
|
|
189
|
+
],
|
|
190
|
+
target: 'node20'
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function isWatchableInput(filename) {
|
|
194
|
+
return !filename.includes(`${external_node_path_default().sep}node_modules${external_node_path_default().sep}`) && (SOURCE_LOADERS.has(external_node_path_default().extname(filename).toLowerCase()) || '.json' === external_node_path_default().extname(filename).toLowerCase());
|
|
195
|
+
}
|
|
196
|
+
function normalizeImportedModule(module) {
|
|
197
|
+
if (!module || 'object' != typeof module) return module;
|
|
198
|
+
const namespace = module;
|
|
199
|
+
const commonJsModule = namespace.default;
|
|
200
|
+
if (1 === Object.keys(namespace).length && null !== commonJsModule && 'object' == typeof commonJsModule && true === commonJsModule.__esModule) return commonJsModule;
|
|
201
|
+
return module;
|
|
202
|
+
}
|
|
203
|
+
async function loadEffectSourceModule(options) {
|
|
204
|
+
const resourcePath = external_node_path_default().resolve(options.resourcePath);
|
|
205
|
+
const appDir = external_node_path_default().resolve(options.appDir ?? external_node_path_default().dirname(resourcePath));
|
|
206
|
+
const tsconfigPath = external_node_path_default().join(appDir, 'tsconfig.json');
|
|
207
|
+
const cacheDirectory = external_node_path_default().join(appDir, 'node_modules', '.cache', 'modern-js', 'effect-source-loader');
|
|
208
|
+
const outputName = external_node_crypto_default().createHash('sha256').update(resourcePath).digest('hex').slice(0, 24);
|
|
209
|
+
const outputPath = external_node_path_default().join(cacheDirectory, `${outputName}.mjs`);
|
|
210
|
+
await external_node_fs_default().promises.mkdir(cacheDirectory, {
|
|
211
|
+
recursive: true
|
|
212
|
+
});
|
|
213
|
+
const result = await (0, external_esbuild_namespaceObject.build)({
|
|
214
|
+
absWorkingDir: appDir,
|
|
215
|
+
banner: {
|
|
216
|
+
js: `import { createRequire as __modernCreateEffectRequire } from 'node:module'; const require = __modernCreateEffectRequire(${JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(resourcePath).href)});`
|
|
217
|
+
},
|
|
218
|
+
bundle: true,
|
|
219
|
+
entryPoints: [
|
|
220
|
+
resourcePath
|
|
221
|
+
],
|
|
222
|
+
format: 'esm',
|
|
223
|
+
jsx: 'automatic',
|
|
224
|
+
logLevel: 'silent',
|
|
225
|
+
metafile: true,
|
|
226
|
+
outfile: outputPath,
|
|
227
|
+
platform: 'node',
|
|
228
|
+
plugins: [
|
|
229
|
+
externalizeInstalledDependencies(),
|
|
230
|
+
preserveSourceModuleSemantics()
|
|
231
|
+
],
|
|
232
|
+
sourcemap: 'inline',
|
|
233
|
+
target: 'node20',
|
|
234
|
+
tsconfig: external_node_fs_default().existsSync(tsconfigPath) ? tsconfigPath : void 0
|
|
235
|
+
});
|
|
236
|
+
for (const input of Object.keys(result.metafile.inputs)){
|
|
237
|
+
const dependency = external_node_path_default().isAbsolute(input) ? external_node_path_default().normalize(input) : external_node_path_default().resolve(appDir, input);
|
|
238
|
+
if (isWatchableInput(dependency)) options.onDependency?.(dependency);
|
|
239
|
+
}
|
|
240
|
+
const output = await external_node_fs_default().promises.readFile(outputPath);
|
|
241
|
+
const revision = external_node_crypto_default().createHash('sha256').update(output).digest('hex');
|
|
242
|
+
return normalizeImportedModule(await dynamicImport(`${(0, external_node_url_namespaceObject.pathToFileURL)(outputPath).href}?v=${revision}`));
|
|
243
|
+
}
|
|
244
|
+
exports.bundleEffectEntryForNode = __webpack_exports__.bundleEffectEntryForNode;
|
|
245
|
+
exports.loadEffectSourceModule = __webpack_exports__.loadEffectSourceModule;
|
|
246
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
247
|
+
"bundleEffectEntryForNode",
|
|
248
|
+
"loadEffectSourceModule"
|
|
249
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
250
|
+
Object.defineProperty(exports, '__esModule', {
|
|
251
|
+
value: true
|
|
252
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { normalizePrefixList } from "./prefix.mjs";
|
|
2
|
+
const createCompressConfig = (devServer, prefix)=>{
|
|
3
|
+
if (!devServer || 'object' != typeof devServer || Array.isArray(devServer)) return;
|
|
4
|
+
const { compress } = devServer;
|
|
5
|
+
if (void 0 === compress || true === compress) {
|
|
6
|
+
const prefixes = normalizePrefixList(prefix);
|
|
7
|
+
return {
|
|
8
|
+
filter: (req)=>!prefixes.some((item)=>req.url?.includes(item))
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
if (false === compress) return false;
|
|
12
|
+
return compress;
|
|
13
|
+
};
|
|
14
|
+
export { createCompressConfig };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { ApiRouter } from "@modern-js/bff-core";
|
|
2
|
+
import { compile } from "@modern-js/server-utils";
|
|
3
|
+
import { API_DIR, SHARED_DIR, fs, resolveServerTsconfig } from "@modern-js/utils";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import clientGenerator from "../utils/clientGenerator.mjs";
|
|
6
|
+
import { bundleEffectEntryForNode } from "../utils/effectSourceLoader.mjs";
|
|
7
|
+
import pluginGenerator from "../utils/pluginGenerator.mjs";
|
|
8
|
+
import runtimeGenerator from "../utils/runtimeGenerator.mjs";
|
|
9
|
+
import { getPrimaryPrefix } from "./prefix.mjs";
|
|
10
|
+
import { serializeServerGlobalVars, transformServerGlobalVars } from "./serverGlobalVars.mjs";
|
|
11
|
+
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 = configuredEntry ? path.isAbsolute(configuredEntry) ? configuredEntry : path.resolve(appDirectory, configuredEntry) : path.resolve(apiDirectory, 'index');
|
|
24
|
+
return path.extname(entry) ? entry : effectEntryExtensions.map((extension)=>`${entry}${extension}`).find((candidate)=>fs.existsSync(candidate));
|
|
25
|
+
}
|
|
26
|
+
function resolveBuiltEffectEntry(appDirectory, distDirectory, sourceEntry) {
|
|
27
|
+
if (!sourceEntry) return;
|
|
28
|
+
const relativeEntry = path.relative(appDirectory, sourceEntry);
|
|
29
|
+
if ('..' === relativeEntry || relativeEntry.startsWith(`..${path.sep}`)) throw new Error(`Effect BFF entry must be inside the application directory: ${sourceEntry}`);
|
|
30
|
+
const builtEntry = path.resolve(distDirectory, relativeEntry).replace(/\.(?:[cm]?ts|tsx|jsx)$/u, '.js');
|
|
31
|
+
return fs.existsSync(builtEntry) ? builtEntry : void 0;
|
|
32
|
+
}
|
|
33
|
+
const createBffGenerator = (api)=>{
|
|
34
|
+
const compileApi = async ()=>{
|
|
35
|
+
const { appDirectory, distDirectory, apiDirectory, bffRuntimeFramework, sharedDirectory, moduleType } = api.getAppContext();
|
|
36
|
+
const modernConfig = api.getNormalizedConfig();
|
|
37
|
+
const distDir = path.resolve(distDirectory);
|
|
38
|
+
const apiDir = apiDirectory || path.resolve(appDirectory, API_DIR);
|
|
39
|
+
const sharedDir = sharedDirectory || path.resolve(appDirectory, SHARED_DIR);
|
|
40
|
+
const tsconfigPath = resolveServerTsconfig(appDirectory, modernConfig?.server?.tsconfigPath);
|
|
41
|
+
const sourceDirs = [];
|
|
42
|
+
if (await fs.pathExists(apiDir)) sourceDirs.push(apiDir);
|
|
43
|
+
if (await fs.pathExists(sharedDir)) sourceDirs.push(sharedDir);
|
|
44
|
+
const { alias, globalVars } = modernConfig.source;
|
|
45
|
+
const { alias: resolveAlias } = modernConfig.resolve;
|
|
46
|
+
if (sourceDirs.length > 0) {
|
|
47
|
+
const combinedAlias = [].concat(alias ?? []).concat(resolveAlias ?? []);
|
|
48
|
+
const serializedGlobalVars = serializeServerGlobalVars(globalVars);
|
|
49
|
+
await compile(appDirectory, {
|
|
50
|
+
alias: combinedAlias
|
|
51
|
+
}, {
|
|
52
|
+
sourceDirs,
|
|
53
|
+
distDir,
|
|
54
|
+
tsconfigPath,
|
|
55
|
+
moduleType,
|
|
56
|
+
throwErrorInsteadOfExit: true
|
|
57
|
+
});
|
|
58
|
+
await transformServerGlobalVars(sourceDirs.map((sourceDir)=>path.resolve(distDir, path.relative(appDirectory, sourceDir))), serializedGlobalVars);
|
|
59
|
+
if ('effect' === bffRuntimeFramework) {
|
|
60
|
+
const sourceEntry = resolveEffectSourceEntry(appDirectory, apiDir, modernConfig.bff?.effect?.entry);
|
|
61
|
+
const builtEntry = resolveBuiltEffectEntry(appDirectory, distDir, sourceEntry);
|
|
62
|
+
if (!builtEntry) throw new Error(`Effect BFF entry was not emitted into ${distDir}: ${sourceEntry ?? path.resolve(apiDir, 'index')}`);
|
|
63
|
+
await bundleEffectEntryForNode({
|
|
64
|
+
appDir: appDirectory,
|
|
65
|
+
entryPath: builtEntry,
|
|
66
|
+
format: 'module' === moduleType ? 'esm' : 'cjs'
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const generate = async ()=>{
|
|
72
|
+
const { appDirectory, apiDirectory, lambdaDirectory, port, bffRuntimeFramework } = api.getAppContext();
|
|
73
|
+
const modernConfig = api.getNormalizedConfig();
|
|
74
|
+
const relativeDistPath = modernConfig?.output?.distPath?.root || 'dist';
|
|
75
|
+
const { bff } = modernConfig || {};
|
|
76
|
+
const prefix = getPrimaryPrefix(bff?.prefix);
|
|
77
|
+
const httpMethodDecider = bff?.httpMethodDecider;
|
|
78
|
+
const apiRouter = new ApiRouter({
|
|
79
|
+
apiDir: apiDirectory,
|
|
80
|
+
appDir: appDirectory,
|
|
81
|
+
lambdaDir: lambdaDirectory,
|
|
82
|
+
prefix,
|
|
83
|
+
httpMethodDecider,
|
|
84
|
+
isBuild: true
|
|
85
|
+
});
|
|
86
|
+
const lambdaDir = apiRouter.getLambdaDir();
|
|
87
|
+
const existLambda = apiRouter.isExistLambda();
|
|
88
|
+
const runtime = bff?.runtimeCreateRequest || RUNTIME_CREATE_REQUEST;
|
|
89
|
+
const relativeApiPath = path.relative(appDirectory, apiDirectory);
|
|
90
|
+
const relativeLambdaPath = path.relative(appDirectory, lambdaDir);
|
|
91
|
+
await pluginGenerator({
|
|
92
|
+
prefix,
|
|
93
|
+
appDirectory,
|
|
94
|
+
relativeDistPath,
|
|
95
|
+
relativeApiPath,
|
|
96
|
+
relativeLambdaPath,
|
|
97
|
+
runtimeFramework: 'hono' === bffRuntimeFramework ? 'hono' : 'effect'
|
|
98
|
+
});
|
|
99
|
+
await clientGenerator({
|
|
100
|
+
prefix,
|
|
101
|
+
appDir: appDirectory,
|
|
102
|
+
apiDir: apiDirectory,
|
|
103
|
+
lambdaDir,
|
|
104
|
+
existLambda,
|
|
105
|
+
port,
|
|
106
|
+
requestCreator: bff?.requestCreator,
|
|
107
|
+
httpMethodDecider,
|
|
108
|
+
relativeDistPath,
|
|
109
|
+
relativeApiPath,
|
|
110
|
+
bffRuntimeFramework,
|
|
111
|
+
effectEntry: bff?.effect?.entry,
|
|
112
|
+
effectDataPlatformBatch: bff?.effect?.dataPlatform?.batch
|
|
113
|
+
});
|
|
114
|
+
await runtimeGenerator({
|
|
115
|
+
runtime,
|
|
116
|
+
appDirectory,
|
|
117
|
+
relativeDistPath
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const handleCrossProjectInvocation = async (isBuild = false)=>{
|
|
121
|
+
const { bff } = api.getNormalizedConfig();
|
|
122
|
+
if (bff?.crossProject) {
|
|
123
|
+
if (!isBuild) await compileApi();
|
|
124
|
+
await generate();
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
compileApi,
|
|
129
|
+
generate,
|
|
130
|
+
handleCrossProjectInvocation
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
export { createBffGenerator };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DEFAULT_API_PREFIX } from "@modern-js/utils";
|
|
2
|
+
const normalizePrefixList = (prefix)=>{
|
|
3
|
+
if (Array.isArray(prefix)) return prefix.filter(Boolean);
|
|
4
|
+
return [
|
|
5
|
+
prefix || DEFAULT_API_PREFIX
|
|
6
|
+
];
|
|
7
|
+
};
|
|
8
|
+
const getPrimaryPrefix = (prefix)=>normalizePrefixList(prefix)[0] || DEFAULT_API_PREFIX;
|
|
9
|
+
export { getPrimaryPrefix, normalizePrefixList };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { applyOptionsChain, fs } from "@modern-js/utils";
|
|
2
|
+
import { transform } from "@swc/core";
|
|
3
|
+
import path from "path";
|
|
4
|
+
const RELEASE_IDENTITY_GLOBAL_NAMES = [
|
|
5
|
+
'ULTRAMODERN_BUILD_MARKER',
|
|
6
|
+
'ULTRAMODERN_SOURCE_REVISION',
|
|
7
|
+
'ULTRAMODERN_RELEASE_VERSION'
|
|
8
|
+
];
|
|
9
|
+
const collectJavaScriptFiles = async (directory)=>{
|
|
10
|
+
const entries = await fs.readdir(directory, {
|
|
11
|
+
withFileTypes: true
|
|
12
|
+
});
|
|
13
|
+
const nested = await Promise.all(entries.map(async (entry)=>{
|
|
14
|
+
const absolutePath = path.join(directory, entry.name);
|
|
15
|
+
if (entry.isDirectory()) return collectJavaScriptFiles(absolutePath);
|
|
16
|
+
return /\.(?:c|m)?js$/u.test(entry.name) ? [
|
|
17
|
+
absolutePath
|
|
18
|
+
] : [];
|
|
19
|
+
}));
|
|
20
|
+
return nested.flat();
|
|
21
|
+
};
|
|
22
|
+
const serializeServerGlobalVars = (options)=>{
|
|
23
|
+
const globalVars = applyOptionsChain({}, options, {
|
|
24
|
+
env: 'server',
|
|
25
|
+
target: 'node'
|
|
26
|
+
});
|
|
27
|
+
return Object.fromEntries(Object.entries(globalVars).map(([key, value])=>{
|
|
28
|
+
let serialized;
|
|
29
|
+
try {
|
|
30
|
+
serialized = JSON.stringify(value);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
throw new Error(`source.globalVars["${key}"] cannot be serialized exactly for BFF compilation.`, {
|
|
33
|
+
cause: error
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (void 0 === serialized) throw new Error(`source.globalVars["${key}"] cannot be serialized exactly for BFF compilation.`);
|
|
37
|
+
return [
|
|
38
|
+
key,
|
|
39
|
+
serialized
|
|
40
|
+
];
|
|
41
|
+
}));
|
|
42
|
+
};
|
|
43
|
+
const transformServerGlobalVars = async (outputDirectories, globalVars)=>{
|
|
44
|
+
if (0 === Object.keys(globalVars).length) return;
|
|
45
|
+
const existingDirectories = (await Promise.all(outputDirectories.map(async (directory)=>await fs.pathExists(directory) ? directory : void 0))).filter((directory)=>Boolean(directory));
|
|
46
|
+
const files = (await Promise.all(existingDirectories.map(collectJavaScriptFiles))).flat();
|
|
47
|
+
const releaseIdentityBanner = RELEASE_IDENTITY_GLOBAL_NAMES.every((name)=>Object.hasOwn(globalVars, name)) ? `${RELEASE_IDENTITY_GLOBAL_NAMES.map((name)=>`void ${globalVars[name]};`).join('')}\n` : '';
|
|
48
|
+
await Promise.all(files.map(async (filename)=>{
|
|
49
|
+
const source = await fs.readFile(filename, 'utf8');
|
|
50
|
+
const sourceMapFilename = `${filename}.map`;
|
|
51
|
+
const sourceMapExists = await fs.pathExists(sourceMapFilename);
|
|
52
|
+
const inputSourceMap = sourceMapExists ? await fs.readFile(sourceMapFilename, 'utf8') : void 0;
|
|
53
|
+
const result = await transform(`${releaseIdentityBanner}${source}`, {
|
|
54
|
+
filename,
|
|
55
|
+
inputSourceMap,
|
|
56
|
+
sourceMaps: sourceMapExists,
|
|
57
|
+
jsc: {
|
|
58
|
+
parser: {
|
|
59
|
+
syntax: "ecmascript"
|
|
60
|
+
},
|
|
61
|
+
preserveAllComments: true,
|
|
62
|
+
target: 'es2022',
|
|
63
|
+
transform: {
|
|
64
|
+
optimizer: {
|
|
65
|
+
globals: {
|
|
66
|
+
vars: globalVars
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
await fs.writeFile(filename, result.code);
|
|
73
|
+
if (sourceMapExists && result.map) await fs.writeFile(sourceMapFilename, result.map);
|
|
74
|
+
}));
|
|
75
|
+
};
|
|
76
|
+
export { serializeServerGlobalVars, transformServerGlobalVars };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const WATCHABLE_EXTENSIONS = [
|
|
2
|
+
'.ts',
|
|
3
|
+
'.tsx',
|
|
4
|
+
'.js',
|
|
5
|
+
'.jsx',
|
|
6
|
+
'.mts',
|
|
7
|
+
'.cts',
|
|
8
|
+
'.mjs',
|
|
9
|
+
'.cjs',
|
|
10
|
+
'.json'
|
|
11
|
+
];
|
|
12
|
+
const isWatchableBffFile = (filename)=>WATCHABLE_EXTENSIONS.some((ext)=>filename.endsWith(ext));
|
|
13
|
+
export { isWatchableBffFile };
|
package/dist/esm/cli.mjs
CHANGED
|
@@ -1,30 +1,10 @@
|
|
|
1
1
|
import { ApiRouter } from "@modern-js/bff-core";
|
|
2
|
-
import {
|
|
3
|
-
import { API_DIR, DEFAULT_API_PREFIX, SHARED_DIR, fs, normalizeOutputPath, resolveServerTsconfig } from "@modern-js/utils";
|
|
2
|
+
import { normalizeOutputPath } from "@modern-js/utils";
|
|
4
3
|
import path from "path";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
const WATCHABLE_EXTENSIONS = [
|
|
10
|
-
'.ts',
|
|
11
|
-
'.tsx',
|
|
12
|
-
'.js',
|
|
13
|
-
'.jsx',
|
|
14
|
-
'.mts',
|
|
15
|
-
'.cts',
|
|
16
|
-
'.mjs',
|
|
17
|
-
'.cjs',
|
|
18
|
-
'.json'
|
|
19
|
-
];
|
|
20
|
-
const isWatchableBffFile = (filename)=>WATCHABLE_EXTENSIONS.some((ext)=>filename.endsWith(ext));
|
|
21
|
-
const normalizePrefixList = (prefix)=>{
|
|
22
|
-
if (Array.isArray(prefix)) return prefix.filter(Boolean);
|
|
23
|
-
return [
|
|
24
|
-
prefix || DEFAULT_API_PREFIX
|
|
25
|
-
];
|
|
26
|
-
};
|
|
27
|
-
const getPrimaryPrefix = (prefix)=>normalizePrefixList(prefix)[0] || DEFAULT_API_PREFIX;
|
|
4
|
+
import { createCompressConfig } from "./cli/compress.mjs";
|
|
5
|
+
import { createBffGenerator } from "./cli/generator.mjs";
|
|
6
|
+
import { getPrimaryPrefix } from "./cli/prefix.mjs";
|
|
7
|
+
import { isWatchableBffFile } from "./cli/watch.mjs";
|
|
28
8
|
const bffPlugin = ()=>({
|
|
29
9
|
name: '@modern-js/plugin-bff',
|
|
30
10
|
setup: (api)=>{
|
|
@@ -36,106 +16,14 @@ const bffPlugin = ()=>({
|
|
|
36
16
|
bffRuntimeFramework: 'hono' === userRuntimeFramework ? 'hono' : 'effect'
|
|
37
17
|
});
|
|
38
18
|
}
|
|
39
|
-
const compileApi =
|
|
40
|
-
const { appDirectory, distDirectory, apiDirectory, sharedDirectory, moduleType } = api.getAppContext();
|
|
41
|
-
const modernConfig = api.getNormalizedConfig();
|
|
42
|
-
const distDir = path.resolve(distDirectory);
|
|
43
|
-
const apiDir = apiDirectory || path.resolve(appDirectory, API_DIR);
|
|
44
|
-
const sharedDir = sharedDirectory || path.resolve(appDirectory, SHARED_DIR);
|
|
45
|
-
const tsconfigPath = resolveServerTsconfig(appDirectory, modernConfig?.server?.tsconfigPath);
|
|
46
|
-
const sourceDirs = [];
|
|
47
|
-
if (await fs.pathExists(apiDir)) sourceDirs.push(apiDir);
|
|
48
|
-
if (await fs.pathExists(sharedDir)) sourceDirs.push(sharedDir);
|
|
49
|
-
const { alias } = modernConfig.source;
|
|
50
|
-
const { alias: resolveAlias } = modernConfig.resolve;
|
|
51
|
-
if (sourceDirs.length > 0) {
|
|
52
|
-
const combinedAlias = [].concat(alias ?? []).concat(resolveAlias ?? []);
|
|
53
|
-
await compile(appDirectory, {
|
|
54
|
-
alias: combinedAlias
|
|
55
|
-
}, {
|
|
56
|
-
sourceDirs,
|
|
57
|
-
distDir,
|
|
58
|
-
tsconfigPath,
|
|
59
|
-
moduleType,
|
|
60
|
-
throwErrorInsteadOfExit: true
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
const generator = async ()=>{
|
|
65
|
-
const { appDirectory, apiDirectory, lambdaDirectory, port, bffRuntimeFramework } = api.getAppContext();
|
|
66
|
-
const modernConfig = api.getNormalizedConfig();
|
|
67
|
-
const relativeDistPath = modernConfig?.output?.distPath?.root || 'dist';
|
|
68
|
-
const { bff } = modernConfig || {};
|
|
69
|
-
const prefix = getPrimaryPrefix(bff?.prefix);
|
|
70
|
-
const httpMethodDecider = bff?.httpMethodDecider;
|
|
71
|
-
const apiRouter = new ApiRouter({
|
|
72
|
-
apiDir: apiDirectory,
|
|
73
|
-
appDir: appDirectory,
|
|
74
|
-
lambdaDir: lambdaDirectory,
|
|
75
|
-
prefix,
|
|
76
|
-
httpMethodDecider,
|
|
77
|
-
isBuild: true
|
|
78
|
-
});
|
|
79
|
-
const lambdaDir = apiRouter.getLambdaDir();
|
|
80
|
-
const existLambda = apiRouter.isExistLambda();
|
|
81
|
-
const runtime = bff?.runtimeCreateRequest || RUNTIME_CREATE_REQUEST;
|
|
82
|
-
const relativeApiPath = path.relative(appDirectory, apiDirectory);
|
|
83
|
-
const relativeLambdaPath = path.relative(appDirectory, lambdaDir);
|
|
84
|
-
await pluginGenerator({
|
|
85
|
-
prefix,
|
|
86
|
-
appDirectory,
|
|
87
|
-
relativeDistPath,
|
|
88
|
-
relativeApiPath,
|
|
89
|
-
relativeLambdaPath,
|
|
90
|
-
runtimeFramework: 'hono' === bffRuntimeFramework ? 'hono' : 'effect'
|
|
91
|
-
});
|
|
92
|
-
await clientGenerator({
|
|
93
|
-
prefix,
|
|
94
|
-
appDir: appDirectory,
|
|
95
|
-
apiDir: apiDirectory,
|
|
96
|
-
lambdaDir,
|
|
97
|
-
existLambda,
|
|
98
|
-
port,
|
|
99
|
-
requestCreator: bff?.requestCreator,
|
|
100
|
-
httpMethodDecider,
|
|
101
|
-
relativeDistPath,
|
|
102
|
-
relativeApiPath,
|
|
103
|
-
bffRuntimeFramework,
|
|
104
|
-
effectEntry: bff?.effect?.entry,
|
|
105
|
-
effectDataPlatformBatch: bff?.effect?.dataPlatform?.batch
|
|
106
|
-
});
|
|
107
|
-
await runtimeGenerator({
|
|
108
|
-
runtime,
|
|
109
|
-
appDirectory,
|
|
110
|
-
relativeDistPath
|
|
111
|
-
});
|
|
112
|
-
};
|
|
113
|
-
const handleCrossProjectInvocation = async (isBuild = false)=>{
|
|
114
|
-
const { bff } = api.getNormalizedConfig();
|
|
115
|
-
if (bff?.crossProject) {
|
|
116
|
-
if (!isBuild) await compileApi();
|
|
117
|
-
await generator();
|
|
118
|
-
}
|
|
119
|
-
};
|
|
19
|
+
const { compileApi, handleCrossProjectInvocation } = createBffGenerator(api);
|
|
120
20
|
const isHono = ()=>{
|
|
121
21
|
const { bffRuntimeFramework } = api.getAppContext();
|
|
122
22
|
return 'hono' === bffRuntimeFramework;
|
|
123
23
|
};
|
|
124
|
-
const createCompressConfig = (devServer, prefix)=>{
|
|
125
|
-
if (!devServer || 'object' != typeof devServer || Array.isArray(devServer)) return;
|
|
126
|
-
const { compress } = devServer;
|
|
127
|
-
if (void 0 === compress || true === compress) {
|
|
128
|
-
const prefixes = normalizePrefixList(prefix);
|
|
129
|
-
return {
|
|
130
|
-
filter: (req)=>!prefixes.some((item)=>req.url?.includes(item))
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
if (false === compress) return false;
|
|
134
|
-
return compress;
|
|
135
|
-
};
|
|
136
24
|
api.config(async ()=>{
|
|
137
25
|
const devServer = api.getConfig()?.tools?.devServer;
|
|
138
|
-
const prefix = api.getConfig()?.bff?.prefix
|
|
26
|
+
const prefix = api.getConfig()?.bff?.prefix;
|
|
139
27
|
const compress = createCompressConfig(devServer, prefix);
|
|
140
28
|
return {
|
|
141
29
|
tools: {
|
|
@@ -240,6 +128,4 @@ const bffPlugin = ()=>({
|
|
|
240
128
|
});
|
|
241
129
|
}
|
|
242
130
|
});
|
|
243
|
-
const cli = bffPlugin;
|
|
244
|
-
export default cli;
|
|
245
131
|
export { bffPlugin };
|