@bleedingdev/modern-js-plugin-bff 3.5.0-ultramodern.6 → 3.5.0-ultramodern.75
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 +152 -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 +7 -21
- 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/safe-failure.js +2 -1
- package/dist/cjs/utils/client-generator/files.js +152 -0
- package/dist/cjs/utils/client-generator/generate.js +138 -0
- package/dist/cjs/utils/client-generator/index.js +83 -0
- package/dist/cjs/utils/client-generator/package-json.js +132 -0
- package/dist/cjs/utils/client-generator/write-package.js +125 -0
- package/dist/cjs/utils/clientGenerator.js +26 -303
- package/dist/cjs/utils/effect-client-generator/generator.js +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 +173 -0
- package/dist/esm/cli/compress.mjs +14 -0
- package/dist/esm/cli/generator.mjs +101 -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 +8 -13
- 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/safe-failure.mjs +2 -1
- package/dist/esm/utils/client-generator/files.mjs +68 -0
- package/dist/esm/utils/client-generator/generate.mjs +88 -0
- package/dist/esm/utils/client-generator/index.mjs +4 -0
- package/dist/esm/utils/client-generator/package-json.mjs +78 -0
- package/dist/esm/utils/client-generator/write-package.mjs +74 -0
- package/dist/esm/utils/clientGenerator.mjs +2 -293
- package/dist/esm/utils/effect-client-generator/generator.mjs +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 +123 -0
- package/dist/esm-node/cli/compress.mjs +15 -0
- package/dist/esm-node/cli/generator.mjs +102 -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 +7 -121
- 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 +8 -13
- 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/safe-failure.mjs +2 -1
- package/dist/esm-node/utils/client-generator/files.mjs +69 -0
- package/dist/esm-node/utils/client-generator/generate.mjs +89 -0
- package/dist/esm-node/utils/client-generator/index.mjs +5 -0
- package/dist/esm-node/utils/client-generator/package-json.mjs +79 -0
- package/dist/esm-node/utils/client-generator/write-package.mjs +75 -0
- package/dist/esm-node/utils/clientGenerator.mjs +2 -293
- package/dist/esm-node/utils/effect-client-generator/generator.mjs +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 +124 -0
- 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 +5 -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/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 +10 -0
- package/package.json +45 -33
|
@@ -0,0 +1,173 @@
|
|
|
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
|
+
loadEffectSourceModule: ()=>loadEffectSourceModule
|
|
41
|
+
});
|
|
42
|
+
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
43
|
+
var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
|
|
44
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
45
|
+
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
46
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
47
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
48
|
+
const external_node_url_namespaceObject = require("node:url");
|
|
49
|
+
const external_esbuild_namespaceObject = require("esbuild");
|
|
50
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
51
|
+
const SOURCE_LOADERS = new Map([
|
|
52
|
+
[
|
|
53
|
+
'.js',
|
|
54
|
+
'js'
|
|
55
|
+
],
|
|
56
|
+
[
|
|
57
|
+
'.jsx',
|
|
58
|
+
'jsx'
|
|
59
|
+
],
|
|
60
|
+
[
|
|
61
|
+
'.mjs',
|
|
62
|
+
'js'
|
|
63
|
+
],
|
|
64
|
+
[
|
|
65
|
+
'.cjs',
|
|
66
|
+
'js'
|
|
67
|
+
],
|
|
68
|
+
[
|
|
69
|
+
'.ts',
|
|
70
|
+
'ts'
|
|
71
|
+
],
|
|
72
|
+
[
|
|
73
|
+
'.tsx',
|
|
74
|
+
'tsx'
|
|
75
|
+
],
|
|
76
|
+
[
|
|
77
|
+
'.mts',
|
|
78
|
+
'ts'
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
'.cts',
|
|
82
|
+
'ts'
|
|
83
|
+
]
|
|
84
|
+
]);
|
|
85
|
+
function sourceLoader(args) {
|
|
86
|
+
return SOURCE_LOADERS.get(external_node_path_default().extname(args.path).toLowerCase());
|
|
87
|
+
}
|
|
88
|
+
function preserveSourceModuleSemantics() {
|
|
89
|
+
return {
|
|
90
|
+
name: 'modern-js-effect-source-semantics',
|
|
91
|
+
setup (buildApi) {
|
|
92
|
+
buildApi.onLoad({
|
|
93
|
+
filter: /\.[cm]?[jt]sx?$/
|
|
94
|
+
}, async (args)=>{
|
|
95
|
+
const loader = sourceLoader(args);
|
|
96
|
+
if (!loader) return;
|
|
97
|
+
const source = await external_node_fs_default().promises.readFile(args.path, 'utf8');
|
|
98
|
+
const compiled = await (0, external_esbuild_namespaceObject.transform)(source, {
|
|
99
|
+
define: {
|
|
100
|
+
'import.meta.url': JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(args.path).href)
|
|
101
|
+
},
|
|
102
|
+
jsx: 'automatic',
|
|
103
|
+
loader,
|
|
104
|
+
sourcefile: args.path,
|
|
105
|
+
target: 'node20'
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
contents: compiled.code,
|
|
109
|
+
loader: 'js',
|
|
110
|
+
resolveDir: external_node_path_default().dirname(args.path)
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function isWatchableInput(filename) {
|
|
117
|
+
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());
|
|
118
|
+
}
|
|
119
|
+
function normalizeImportedModule(module) {
|
|
120
|
+
if (!module || 'object' != typeof module) return module;
|
|
121
|
+
const namespace = module;
|
|
122
|
+
const commonJsModule = namespace.default;
|
|
123
|
+
if (1 === Object.keys(namespace).length && null !== commonJsModule && 'object' == typeof commonJsModule && true === commonJsModule.__esModule) return commonJsModule;
|
|
124
|
+
return module;
|
|
125
|
+
}
|
|
126
|
+
async function loadEffectSourceModule(options) {
|
|
127
|
+
const resourcePath = external_node_path_default().resolve(options.resourcePath);
|
|
128
|
+
const appDir = external_node_path_default().resolve(options.appDir ?? external_node_path_default().dirname(resourcePath));
|
|
129
|
+
const tsconfigPath = external_node_path_default().join(appDir, 'tsconfig.json');
|
|
130
|
+
const cacheDirectory = external_node_path_default().join(appDir, 'node_modules', '.cache', 'modern-js', 'effect-source-loader');
|
|
131
|
+
const outputName = external_node_crypto_default().createHash('sha256').update(resourcePath).digest('hex').slice(0, 24);
|
|
132
|
+
const outputPath = external_node_path_default().join(cacheDirectory, `${outputName}.mjs`);
|
|
133
|
+
await external_node_fs_default().promises.mkdir(cacheDirectory, {
|
|
134
|
+
recursive: true
|
|
135
|
+
});
|
|
136
|
+
const result = await (0, external_esbuild_namespaceObject.build)({
|
|
137
|
+
absWorkingDir: appDir,
|
|
138
|
+
banner: {
|
|
139
|
+
js: `import { createRequire as __modernCreateEffectRequire } from 'node:module'; const require = __modernCreateEffectRequire(${JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(resourcePath).href)});`
|
|
140
|
+
},
|
|
141
|
+
bundle: true,
|
|
142
|
+
entryPoints: [
|
|
143
|
+
resourcePath
|
|
144
|
+
],
|
|
145
|
+
format: 'esm',
|
|
146
|
+
jsx: 'automatic',
|
|
147
|
+
logLevel: 'silent',
|
|
148
|
+
metafile: true,
|
|
149
|
+
outfile: outputPath,
|
|
150
|
+
packages: 'external',
|
|
151
|
+
platform: 'node',
|
|
152
|
+
plugins: [
|
|
153
|
+
preserveSourceModuleSemantics()
|
|
154
|
+
],
|
|
155
|
+
sourcemap: 'inline',
|
|
156
|
+
target: 'node20',
|
|
157
|
+
tsconfig: external_node_fs_default().existsSync(tsconfigPath) ? tsconfigPath : void 0
|
|
158
|
+
});
|
|
159
|
+
for (const input of Object.keys(result.metafile.inputs)){
|
|
160
|
+
const dependency = external_node_path_default().isAbsolute(input) ? external_node_path_default().normalize(input) : external_node_path_default().resolve(appDir, input);
|
|
161
|
+
if (isWatchableInput(dependency)) options.onDependency?.(dependency);
|
|
162
|
+
}
|
|
163
|
+
const output = await external_node_fs_default().promises.readFile(outputPath);
|
|
164
|
+
const revision = external_node_crypto_default().createHash('sha256').update(output).digest('hex');
|
|
165
|
+
return normalizeImportedModule(await dynamicImport(`${(0, external_node_url_namespaceObject.pathToFileURL)(outputPath).href}?v=${revision}`));
|
|
166
|
+
}
|
|
167
|
+
exports.loadEffectSourceModule = __webpack_exports__.loadEffectSourceModule;
|
|
168
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
169
|
+
"loadEffectSourceModule"
|
|
170
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
171
|
+
Object.defineProperty(exports, '__esModule', {
|
|
172
|
+
value: true
|
|
173
|
+
});
|
|
@@ -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,101 @@
|
|
|
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 pluginGenerator from "../utils/pluginGenerator.mjs";
|
|
7
|
+
import runtimeGenerator from "../utils/runtimeGenerator.mjs";
|
|
8
|
+
import { getPrimaryPrefix } from "./prefix.mjs";
|
|
9
|
+
import { serializeServerGlobalVars, transformServerGlobalVars } from "./serverGlobalVars.mjs";
|
|
10
|
+
const RUNTIME_CREATE_REQUEST = '@modern-js/plugin-bff/client';
|
|
11
|
+
const createBffGenerator = (api)=>{
|
|
12
|
+
const compileApi = async ()=>{
|
|
13
|
+
const { appDirectory, distDirectory, apiDirectory, sharedDirectory, moduleType } = api.getAppContext();
|
|
14
|
+
const modernConfig = api.getNormalizedConfig();
|
|
15
|
+
const distDir = path.resolve(distDirectory);
|
|
16
|
+
const apiDir = apiDirectory || path.resolve(appDirectory, API_DIR);
|
|
17
|
+
const sharedDir = sharedDirectory || path.resolve(appDirectory, SHARED_DIR);
|
|
18
|
+
const tsconfigPath = resolveServerTsconfig(appDirectory, modernConfig?.server?.tsconfigPath);
|
|
19
|
+
const sourceDirs = [];
|
|
20
|
+
if (await fs.pathExists(apiDir)) sourceDirs.push(apiDir);
|
|
21
|
+
if (await fs.pathExists(sharedDir)) sourceDirs.push(sharedDir);
|
|
22
|
+
const { alias, globalVars } = modernConfig.source;
|
|
23
|
+
const { alias: resolveAlias } = modernConfig.resolve;
|
|
24
|
+
if (sourceDirs.length > 0) {
|
|
25
|
+
const combinedAlias = [].concat(alias ?? []).concat(resolveAlias ?? []);
|
|
26
|
+
const serializedGlobalVars = serializeServerGlobalVars(globalVars);
|
|
27
|
+
await compile(appDirectory, {
|
|
28
|
+
alias: combinedAlias
|
|
29
|
+
}, {
|
|
30
|
+
sourceDirs,
|
|
31
|
+
distDir,
|
|
32
|
+
tsconfigPath,
|
|
33
|
+
moduleType,
|
|
34
|
+
throwErrorInsteadOfExit: true
|
|
35
|
+
});
|
|
36
|
+
await transformServerGlobalVars(sourceDirs.map((sourceDir)=>path.resolve(distDir, path.relative(appDirectory, sourceDir))), serializedGlobalVars);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const generate = async ()=>{
|
|
40
|
+
const { appDirectory, apiDirectory, lambdaDirectory, port, bffRuntimeFramework } = api.getAppContext();
|
|
41
|
+
const modernConfig = api.getNormalizedConfig();
|
|
42
|
+
const relativeDistPath = modernConfig?.output?.distPath?.root || 'dist';
|
|
43
|
+
const { bff } = modernConfig || {};
|
|
44
|
+
const prefix = getPrimaryPrefix(bff?.prefix);
|
|
45
|
+
const httpMethodDecider = bff?.httpMethodDecider;
|
|
46
|
+
const apiRouter = new ApiRouter({
|
|
47
|
+
apiDir: apiDirectory,
|
|
48
|
+
appDir: appDirectory,
|
|
49
|
+
lambdaDir: lambdaDirectory,
|
|
50
|
+
prefix,
|
|
51
|
+
httpMethodDecider,
|
|
52
|
+
isBuild: true
|
|
53
|
+
});
|
|
54
|
+
const lambdaDir = apiRouter.getLambdaDir();
|
|
55
|
+
const existLambda = apiRouter.isExistLambda();
|
|
56
|
+
const runtime = bff?.runtimeCreateRequest || RUNTIME_CREATE_REQUEST;
|
|
57
|
+
const relativeApiPath = path.relative(appDirectory, apiDirectory);
|
|
58
|
+
const relativeLambdaPath = path.relative(appDirectory, lambdaDir);
|
|
59
|
+
await pluginGenerator({
|
|
60
|
+
prefix,
|
|
61
|
+
appDirectory,
|
|
62
|
+
relativeDistPath,
|
|
63
|
+
relativeApiPath,
|
|
64
|
+
relativeLambdaPath,
|
|
65
|
+
runtimeFramework: 'hono' === bffRuntimeFramework ? 'hono' : 'effect'
|
|
66
|
+
});
|
|
67
|
+
await clientGenerator({
|
|
68
|
+
prefix,
|
|
69
|
+
appDir: appDirectory,
|
|
70
|
+
apiDir: apiDirectory,
|
|
71
|
+
lambdaDir,
|
|
72
|
+
existLambda,
|
|
73
|
+
port,
|
|
74
|
+
requestCreator: bff?.requestCreator,
|
|
75
|
+
httpMethodDecider,
|
|
76
|
+
relativeDistPath,
|
|
77
|
+
relativeApiPath,
|
|
78
|
+
bffRuntimeFramework,
|
|
79
|
+
effectEntry: bff?.effect?.entry,
|
|
80
|
+
effectDataPlatformBatch: bff?.effect?.dataPlatform?.batch
|
|
81
|
+
});
|
|
82
|
+
await runtimeGenerator({
|
|
83
|
+
runtime,
|
|
84
|
+
appDirectory,
|
|
85
|
+
relativeDistPath
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const handleCrossProjectInvocation = async (isBuild = false)=>{
|
|
89
|
+
const { bff } = api.getNormalizedConfig();
|
|
90
|
+
if (bff?.crossProject) {
|
|
91
|
+
if (!isBuild) await compileApi();
|
|
92
|
+
await generate();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
compileApi,
|
|
97
|
+
generate,
|
|
98
|
+
handleCrossProjectInvocation
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
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 };
|
package/dist/esm/loader.mjs
CHANGED
|
@@ -2,6 +2,8 @@ import { generateClient } from "@modern-js/bff-core";
|
|
|
2
2
|
import { logger } from "@modern-js/utils";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { generateEffectClientCode, resolveEffectEntryFile } from "./utils/effectClientGenerator.mjs";
|
|
5
|
+
const EFFECT_BFF_WORKER_RUNTIME_QUERY = 'modern-bff-runtime';
|
|
6
|
+
const EFFECT_BFF_WORKER_RUNTIME_SOURCE_QUERY = 'modern-bff-runtime-source';
|
|
5
7
|
async function transformEffectRuntimeSource(source, filename) {
|
|
6
8
|
const swc = await import("@swc/core");
|
|
7
9
|
const result = await swc.transform(source, {
|
|
@@ -20,22 +22,36 @@ async function transformEffectRuntimeSource(source, filename) {
|
|
|
20
22
|
});
|
|
21
23
|
return result.code;
|
|
22
24
|
}
|
|
25
|
+
function createEffectWorkerRuntimeWrapper(resourcePath) {
|
|
26
|
+
const sourceRequest = `${resourcePath}?${EFFECT_BFF_WORKER_RUNTIME_SOURCE_QUERY}`;
|
|
27
|
+
return `import * as effectBffModule from ${JSON.stringify(sourceRequest)};
|
|
28
|
+
import { createEffectBffEdgeDispatcher } from '@modern-js/plugin-bff/effect-edge';
|
|
29
|
+
|
|
30
|
+
export const __modern_create_effect_bff_dispatcher = options =>
|
|
31
|
+
createEffectBffEdgeDispatcher({
|
|
32
|
+
...options,
|
|
33
|
+
module: effectBffModule,
|
|
34
|
+
});
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
23
37
|
async function loader(source) {
|
|
24
38
|
this.cacheable();
|
|
25
39
|
const { resourcePath } = this;
|
|
26
40
|
delete require.cache[resourcePath];
|
|
27
41
|
const callback = this.async();
|
|
28
42
|
const draftOptions = this.getOptions();
|
|
43
|
+
const resourceQueries = new URLSearchParams(this.resourceQuery);
|
|
29
44
|
const effectEntryFile = resolveEffectEntryFile({
|
|
30
45
|
appDir: draftOptions.appDir,
|
|
31
46
|
apiDir: draftOptions.apiDir,
|
|
32
47
|
effectEntry: draftOptions.effectEntry
|
|
33
48
|
});
|
|
34
|
-
if ('effect' === draftOptions.bffRuntimeFramework && effectEntryFile && path.resolve(effectEntryFile) === path.resolve(resourcePath) &&
|
|
49
|
+
if ('effect' === draftOptions.bffRuntimeFramework && effectEntryFile && path.resolve(effectEntryFile) === path.resolve(resourcePath) && resourceQueries.has(EFFECT_BFF_WORKER_RUNTIME_SOURCE_QUERY)) {
|
|
35
50
|
const code = await transformEffectRuntimeSource(source, resourcePath);
|
|
36
51
|
callback(void 0, code);
|
|
37
52
|
return;
|
|
38
53
|
}
|
|
54
|
+
if ('effect' === draftOptions.bffRuntimeFramework && effectEntryFile && path.resolve(effectEntryFile) === path.resolve(resourcePath) && resourceQueries.has(EFFECT_BFF_WORKER_RUNTIME_QUERY)) return void callback(void 0, createEffectWorkerRuntimeWrapper(resourcePath));
|
|
39
55
|
if ('effect' === draftOptions.bffRuntimeFramework && effectEntryFile && path.resolve(effectEntryFile) === path.resolve(resourcePath)) {
|
|
40
56
|
const code = await generateEffectClientCode({
|
|
41
57
|
appDir: draftOptions.appDir,
|
|
@@ -46,7 +62,8 @@ async function loader(source) {
|
|
|
46
62
|
target: draftOptions.target,
|
|
47
63
|
requestCreator: draftOptions.requestCreator,
|
|
48
64
|
httpMethodDecider: draftOptions.httpMethodDecider,
|
|
49
|
-
dataPlatformBatch: draftOptions.effectDataPlatformBatch
|
|
65
|
+
dataPlatformBatch: draftOptions.effectDataPlatformBatch,
|
|
66
|
+
onDependency: (dependency)=>this.addDependency(dependency)
|
|
50
67
|
});
|
|
51
68
|
if (code) return void callback(void 0, code);
|
|
52
69
|
callback(void 0, `throw new Error('Failed to generate Effect client for ${resourcePath}')`);
|