@powerhousedao/reactor-api 6.0.0-dev.15 → 6.0.0-dev.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/codegen.js +1 -1
- package/dist/codegen.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/src/config.d.ts +1 -2
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -5
- package/dist/src/config.js.map +1 -1
- package/dist/src/dev.d.ts +2 -0
- package/dist/src/dev.d.ts.map +1 -0
- package/dist/src/dev.js +51 -0
- package/dist/src/dev.js.map +1 -0
- package/dist/src/graphql/auth/resolvers.d.ts +17 -0
- package/dist/src/graphql/auth/resolvers.d.ts.map +1 -1
- package/dist/src/graphql/auth/resolvers.js +54 -0
- package/dist/src/graphql/auth/resolvers.js.map +1 -1
- package/dist/src/graphql/auth/schema.graphql +27 -5
- package/dist/src/graphql/auth/subgraph.d.ts +25 -0
- package/dist/src/graphql/auth/subgraph.d.ts.map +1 -1
- package/dist/src/graphql/auth/subgraph.js +46 -2
- package/dist/src/graphql/auth/subgraph.js.map +1 -1
- package/dist/src/graphql/base-subgraph.d.ts +11 -4
- package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/base-subgraph.js +94 -2
- package/dist/src/graphql/base-subgraph.js.map +1 -1
- package/dist/src/graphql/document-model-subgraph.d.ts +104 -45
- package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/document-model-subgraph.js +323 -91
- package/dist/src/graphql/document-model-subgraph.js.map +1 -1
- package/dist/src/graphql/gateway/adapter-gateway-apollo.d.ts +23 -0
- package/dist/src/graphql/gateway/adapter-gateway-apollo.d.ts.map +1 -0
- package/dist/src/graphql/gateway/adapter-gateway-apollo.js +156 -0
- package/dist/src/graphql/gateway/adapter-gateway-apollo.js.map +1 -0
- package/dist/src/graphql/gateway/adapter-gateway-mercurius.d.ts +17 -0
- package/dist/src/graphql/gateway/adapter-gateway-mercurius.d.ts.map +1 -0
- package/dist/src/graphql/gateway/adapter-gateway-mercurius.js +154 -0
- package/dist/src/graphql/gateway/adapter-gateway-mercurius.js.map +1 -0
- package/dist/src/graphql/gateway/adapter-http-express.d.ts +25 -0
- package/dist/src/graphql/gateway/adapter-http-express.d.ts.map +1 -0
- package/dist/src/graphql/gateway/adapter-http-express.js +163 -0
- package/dist/src/graphql/gateway/adapter-http-express.js.map +1 -0
- package/dist/src/graphql/gateway/adapter-http-fastify.d.ts +23 -0
- package/dist/src/graphql/gateway/adapter-http-fastify.d.ts.map +1 -0
- package/dist/src/graphql/gateway/adapter-http-fastify.js +228 -0
- package/dist/src/graphql/gateway/adapter-http-fastify.js.map +1 -0
- package/dist/src/graphql/gateway/auth-middleware.d.ts +7 -0
- package/dist/src/graphql/gateway/auth-middleware.d.ts.map +1 -0
- package/dist/src/graphql/gateway/auth-middleware.js +15 -0
- package/dist/src/graphql/gateway/auth-middleware.js.map +1 -0
- package/dist/src/graphql/gateway/factory.d.ts +11 -0
- package/dist/src/graphql/gateway/factory.d.ts.map +1 -0
- package/dist/src/graphql/gateway/factory.js +21 -0
- package/dist/src/graphql/gateway/factory.js.map +1 -0
- package/dist/src/graphql/gateway/types.d.ts +100 -0
- package/dist/src/graphql/gateway/types.d.ts.map +1 -0
- package/dist/src/{sync → graphql/gateway}/types.js.map +1 -1
- package/dist/src/graphql/graphql-manager.d.ts +30 -12
- package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
- package/dist/src/graphql/graphql-manager.js +282 -232
- package/dist/src/graphql/graphql-manager.js.map +1 -1
- package/dist/src/graphql/index.d.ts +5 -1
- package/dist/src/graphql/index.d.ts.map +1 -1
- package/dist/src/graphql/index.js +5 -1
- package/dist/src/graphql/index.js.map +1 -1
- package/dist/src/graphql/packages/index.d.ts +2 -0
- package/dist/src/graphql/packages/index.d.ts.map +1 -0
- package/dist/src/graphql/packages/index.js +2 -0
- package/dist/src/graphql/packages/index.js.map +1 -0
- package/dist/src/graphql/packages/resolvers.d.ts +31 -0
- package/dist/src/graphql/packages/resolvers.d.ts.map +1 -0
- package/dist/src/graphql/packages/resolvers.js +37 -0
- package/dist/src/graphql/packages/resolvers.js.map +1 -0
- package/dist/src/graphql/packages/schema.graphql +50 -0
- package/dist/src/graphql/packages/subgraph.d.ts +55 -0
- package/dist/src/graphql/packages/subgraph.d.ts.map +1 -0
- package/dist/src/graphql/packages/subgraph.js +73 -0
- package/dist/src/graphql/packages/subgraph.js.map +1 -0
- package/dist/src/graphql/playground.d.ts.map +1 -1
- package/dist/src/graphql/playground.js +19 -12
- package/dist/src/graphql/playground.js.map +1 -1
- package/dist/src/graphql/reactor/adapters.d.ts +10 -2
- package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
- package/dist/src/graphql/reactor/adapters.js +36 -1
- package/dist/src/graphql/reactor/adapters.js.map +1 -1
- package/dist/src/graphql/reactor/factory.d.ts +28 -7
- package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
- package/dist/src/graphql/reactor/factory.js +1 -1
- package/dist/src/graphql/reactor/factory.js.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.d.ts +363 -84
- package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.js +247 -12
- package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
- package/dist/src/graphql/reactor/index.d.ts +1 -1
- package/dist/src/graphql/reactor/index.d.ts.map +1 -1
- package/dist/src/graphql/reactor/index.js +1 -1
- package/dist/src/graphql/reactor/index.js.map +1 -1
- package/dist/src/graphql/reactor/operations.graphql +193 -3
- package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
- package/dist/src/graphql/reactor/requester.with-zod.js +114 -38
- package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
- package/dist/src/graphql/reactor/resolvers.d.ts +90 -26
- package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
- package/dist/src/graphql/reactor/resolvers.js +258 -77
- package/dist/src/graphql/reactor/resolvers.js.map +1 -1
- package/dist/src/graphql/reactor/schema.graphql +78 -32
- package/dist/src/graphql/reactor/subgraph.d.ts +2 -31
- package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
- package/dist/src/graphql/reactor/subgraph.js +139 -213
- package/dist/src/graphql/reactor/subgraph.js.map +1 -1
- package/dist/src/graphql/reactor/validation.d.ts +266 -20
- package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
- package/dist/src/graphql/reactor/validation.js +98 -4
- package/dist/src/graphql/reactor/validation.js.map +1 -1
- package/dist/src/graphql/sse.d.ts +35 -0
- package/dist/src/graphql/sse.d.ts.map +1 -0
- package/dist/src/graphql/sse.js +29 -0
- package/dist/src/graphql/sse.js.map +1 -0
- package/dist/src/graphql/system/index.d.ts +0 -1
- package/dist/src/graphql/system/index.d.ts.map +1 -1
- package/dist/src/graphql/system/index.js +0 -1
- package/dist/src/graphql/system/index.js.map +1 -1
- package/dist/src/graphql/types.d.ts +7 -8
- package/dist/src/graphql/types.d.ts.map +1 -1
- package/dist/src/graphql/utils.d.ts +3 -20
- package/dist/src/graphql/utils.d.ts.map +1 -1
- package/dist/src/graphql/utils.js +7 -35
- package/dist/src/graphql/utils.js.map +1 -1
- package/dist/src/migrations/002_add_document_protection.d.ts +4 -0
- package/dist/src/migrations/002_add_document_protection.d.ts.map +1 -0
- package/dist/src/migrations/002_add_document_protection.js +18 -0
- package/dist/src/migrations/002_add_document_protection.js.map +1 -0
- package/dist/src/migrations/index.d.ts.map +1 -1
- package/dist/src/migrations/index.js +2 -0
- package/dist/src/migrations/index.js.map +1 -1
- package/dist/src/packages/http-loader.d.ts +59 -0
- package/dist/src/packages/http-loader.d.ts.map +1 -0
- package/dist/src/packages/http-loader.js +203 -0
- package/dist/src/packages/http-loader.js.map +1 -0
- package/dist/src/packages/https-hooks.d.mts +37 -0
- package/dist/src/packages/https-hooks.d.mts.map +1 -0
- package/dist/src/packages/https-hooks.mjs +95 -0
- package/dist/src/packages/https-hooks.mjs.map +1 -0
- package/dist/src/packages/import-loader.d.ts +4 -6
- package/dist/src/packages/import-loader.d.ts.map +1 -1
- package/dist/src/packages/import-loader.js +4 -18
- package/dist/src/packages/import-loader.js.map +1 -1
- package/dist/src/packages/package-manager.d.ts +3 -4
- package/dist/src/packages/package-manager.d.ts.map +1 -1
- package/dist/src/packages/package-manager.js +10 -7
- package/dist/src/packages/package-manager.js.map +1 -1
- package/dist/src/packages/types.d.ts +8 -8
- package/dist/src/packages/types.d.ts.map +1 -1
- package/dist/src/packages/util.d.ts +4 -5
- package/dist/src/packages/util.d.ts.map +1 -1
- package/dist/src/packages/util.js +2 -14
- package/dist/src/packages/util.js.map +1 -1
- package/dist/src/packages/vite-loader.d.ts +12 -11
- package/dist/src/packages/vite-loader.d.ts.map +1 -1
- package/dist/src/packages/vite-loader.js +20 -21
- package/dist/src/packages/vite-loader.js.map +1 -1
- package/dist/src/server.d.ts +15 -33
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +164 -244
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/auth.service.d.ts +3 -18
- package/dist/src/services/auth.service.d.ts.map +1 -1
- package/dist/src/services/auth.service.js +38 -72
- package/dist/src/services/auth.service.js.map +1 -1
- package/dist/src/services/authorization.service.d.ts +70 -0
- package/dist/src/services/authorization.service.d.ts.map +1 -0
- package/dist/src/services/authorization.service.js +155 -0
- package/dist/src/services/authorization.service.js.map +1 -0
- package/dist/src/services/document-permission.service.d.ts +47 -7
- package/dist/src/services/document-permission.service.d.ts.map +1 -1
- package/dist/src/services/document-permission.service.js +162 -7
- package/dist/src/services/document-permission.service.js.map +1 -1
- package/dist/src/services/package-management.service.d.ts +32 -0
- package/dist/src/services/package-management.service.d.ts.map +1 -0
- package/dist/src/services/package-management.service.js +95 -0
- package/dist/src/services/package-management.service.js.map +1 -0
- package/dist/src/services/package-storage.d.ts +23 -0
- package/dist/src/services/package-storage.d.ts.map +1 -0
- package/dist/src/services/package-storage.js +19 -0
- package/dist/src/services/package-storage.js.map +1 -0
- package/dist/src/tracing.d.ts.map +1 -1
- package/dist/src/tracing.js +25 -1
- package/dist/src/tracing.js.map +1 -1
- package/dist/src/types.d.ts +13 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/create-schema.d.ts +31 -6
- package/dist/src/utils/create-schema.d.ts.map +1 -1
- package/dist/src/utils/create-schema.js +446 -40
- package/dist/src/utils/create-schema.js.map +1 -1
- package/dist/src/utils/db.d.ts +8 -0
- package/dist/src/utils/db.d.ts.map +1 -1
- package/dist/src/utils/db.js.map +1 -1
- package/dist/test/auth-chain.test.d.ts +12 -0
- package/dist/test/auth-chain.test.d.ts.map +1 -0
- package/dist/test/auth-chain.test.js +157 -0
- package/dist/test/auth-chain.test.js.map +1 -0
- package/dist/test/auth.service.test.d.ts +10 -0
- package/dist/test/auth.service.test.d.ts.map +1 -0
- package/dist/test/auth.service.test.js +141 -0
- package/dist/test/auth.service.test.js.map +1 -0
- package/dist/test/authorization.service.test.d.ts +2 -0
- package/dist/test/authorization.service.test.d.ts.map +1 -0
- package/dist/test/authorization.service.test.js +252 -0
- package/dist/test/authorization.service.test.js.map +1 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts +2 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts.map +1 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.js +204 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.js.map +1 -0
- package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
- package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
- package/dist/test/connect-switchboard-sync.test.js +633 -0
- package/dist/test/connect-switchboard-sync.test.js.map +1 -0
- package/dist/test/document-drive-subgraph.test.d.ts +2 -0
- package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
- package/dist/test/document-drive-subgraph.test.js +244 -0
- package/dist/test/document-drive-subgraph.test.js.map +1 -0
- package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
- package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
- package/dist/test/document-model-subgraph-permissions.test.js +587 -0
- package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
- package/dist/test/drive-info-endpoint.test.d.ts +2 -0
- package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
- package/dist/test/drive-info-endpoint.test.js +123 -0
- package/dist/test/drive-info-endpoint.test.js.map +1 -0
- package/dist/test/fault-injection-sync.test.d.ts +2 -0
- package/dist/test/fault-injection-sync.test.d.ts.map +1 -0
- package/dist/test/fault-injection-sync.test.js +197 -0
- package/dist/test/fault-injection-sync.test.js.map +1 -0
- package/dist/test/gateway/adapter-gateway-apollo.test.d.ts +2 -0
- package/dist/test/gateway/adapter-gateway-apollo.test.d.ts.map +1 -0
- package/dist/test/gateway/adapter-gateway-apollo.test.js +206 -0
- package/dist/test/gateway/adapter-gateway-apollo.test.js.map +1 -0
- package/dist/test/gateway/adapter-gateway-mercurius.test.d.ts +2 -0
- package/dist/test/gateway/adapter-gateway-mercurius.test.d.ts.map +1 -0
- package/dist/test/gateway/adapter-gateway-mercurius.test.js +23 -0
- package/dist/test/gateway/adapter-gateway-mercurius.test.js.map +1 -0
- package/dist/test/gateway/adapter-http-express.test.d.ts +2 -0
- package/dist/test/gateway/adapter-http-express.test.d.ts.map +1 -0
- package/dist/test/gateway/adapter-http-express.test.js +17 -0
- package/dist/test/gateway/adapter-http-express.test.js.map +1 -0
- package/dist/test/gateway/adapter-http-fastify.test.d.ts +2 -0
- package/dist/test/gateway/adapter-http-fastify.test.d.ts.map +1 -0
- package/dist/test/gateway/adapter-http-fastify.test.js +17 -0
- package/dist/test/gateway/adapter-http-fastify.test.js.map +1 -0
- package/dist/test/gateway/auth-middleware.test.d.ts +8 -0
- package/dist/test/gateway/auth-middleware.test.d.ts.map +1 -0
- package/dist/test/gateway/auth-middleware.test.js +73 -0
- package/dist/test/gateway/auth-middleware.test.js.map +1 -0
- package/dist/test/gateway/gateway-adapter-contract.d.ts +30 -0
- package/dist/test/gateway/gateway-adapter-contract.d.ts.map +1 -0
- package/dist/test/gateway/gateway-adapter-contract.js +347 -0
- package/dist/test/gateway/gateway-adapter-contract.js.map +1 -0
- package/dist/test/gateway/http-adapter-contract.d.ts +30 -0
- package/dist/test/gateway/http-adapter-contract.d.ts.map +1 -0
- package/dist/test/gateway/http-adapter-contract.js +277 -0
- package/dist/test/gateway/http-adapter-contract.js.map +1 -0
- package/dist/test/graphql-manager.test.d.ts +12 -0
- package/dist/test/graphql-manager.test.d.ts.map +1 -0
- package/dist/test/graphql-manager.test.js +576 -0
- package/dist/test/graphql-manager.test.js.map +1 -0
- package/dist/test/index.d.ts +0 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +0 -1
- package/dist/test/index.js.map +1 -1
- package/dist/test/permissions-integration.test.js +6 -20
- package/dist/test/permissions-integration.test.js.map +1 -1
- package/dist/test/push-backfill.test.d.ts +2 -0
- package/dist/test/push-backfill.test.d.ts.map +1 -0
- package/dist/test/push-backfill.test.js +299 -0
- package/dist/test/push-backfill.test.js.map +1 -0
- package/dist/test/reactor-adapters.test.js +3 -2
- package/dist/test/reactor-adapters.test.js.map +1 -1
- package/dist/test/reactor-client.test.js +172 -13
- package/dist/test/reactor-client.test.js.map +1 -1
- package/dist/test/reactor-resolvers.test.js +11 -13
- package/dist/test/reactor-resolvers.test.js.map +1 -1
- package/dist/test/reactor-subgraph-permissions.test.js +7 -36
- package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
- package/dist/test/subscriptions-sse.test.d.ts +2 -0
- package/dist/test/subscriptions-sse.test.d.ts.map +1 -0
- package/dist/test/subscriptions-sse.test.js +264 -0
- package/dist/test/subscriptions-sse.test.js.map +1 -0
- package/dist/test/subscriptions.test.js +2 -0
- package/dist/test/subscriptions.test.js.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.d.ts +4 -1
- package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.js +36 -7
- package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
- package/dist/test/utils.d.ts +1 -5
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +0 -10
- package/dist/test/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vitest.config.d.ts.map +1 -1
- package/dist/vitest.config.js +1 -0
- package/dist/vitest.config.js.map +1 -1
- package/package.json +64 -59
- package/dist/src/graphql/drive-subgraph.d.ts +0 -25
- package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
- package/dist/src/graphql/drive-subgraph.js +0 -487
- package/dist/src/graphql/drive-subgraph.js.map +0 -1
- package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
- package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
- package/dist/src/graphql/system/system-subgraph.js +0 -130
- package/dist/src/graphql/system/system-subgraph.js.map +0 -1
- package/dist/src/sync/types.d.ts +0 -10
- package/dist/src/sync/types.d.ts.map +0 -1
- package/dist/src/sync/utils.d.ts +0 -7
- package/dist/src/sync/utils.d.ts.map +0 -1
- package/dist/src/sync/utils.js +0 -78
- package/dist/src/sync/utils.js.map +0 -1
- package/dist/src/utils/auth.d.ts +0 -3
- package/dist/src/utils/auth.d.ts.map +0 -1
- package/dist/src/utils/auth.js +0 -19
- package/dist/src/utils/auth.js.map +0 -1
- package/dist/test/benchmarks/load.bench.d.ts +0 -2
- package/dist/test/benchmarks/load.bench.d.ts.map +0 -1
- package/dist/test/benchmarks/load.bench.js +0 -73
- package/dist/test/benchmarks/load.bench.js.map +0 -1
- package/dist/test/benchmarks/sync.bench.d.ts +0 -2
- package/dist/test/benchmarks/sync.bench.d.ts.map +0 -1
- package/dist/test/benchmarks/sync.bench.js +0 -119
- package/dist/test/benchmarks/sync.bench.js.map +0 -1
- package/dist/test/drive-handlers.d.ts +0 -4
- package/dist/test/drive-handlers.d.ts.map +0 -1
- package/dist/test/drive-handlers.js +0 -39
- package/dist/test/drive-handlers.js.map +0 -1
- package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
- package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
- package/dist/test/drive-subgraph-permissions.test.js +0 -195
- package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
- package/dist/test/drive.test.d.ts +0 -2
- package/dist/test/drive.test.d.ts.map +0 -1
- package/dist/test/drive.test.js +0 -142
- package/dist/test/drive.test.js.map +0 -1
- package/dist/test/identity-integration.test.d.ts +0 -2
- package/dist/test/identity-integration.test.d.ts.map +0 -1
- package/dist/test/identity-integration.test.js +0 -349
- package/dist/test/identity-integration.test.js.map +0 -1
- package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
- package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
- package/dist/test/pull-responder-transmitter.test.js +0 -220
- package/dist/test/pull-responder-transmitter.test.js.map +0 -1
- package/dist/test/push-transmitter.test.d.ts +0 -2
- package/dist/test/push-transmitter.test.d.ts.map +0 -1
- package/dist/test/push-transmitter.test.js +0 -179
- package/dist/test/push-transmitter.test.js.map +0 -1
- package/dist/test/system.test.d.ts +0 -2
- package/dist/test/system.test.d.ts.map +0 -1
- package/dist/test/system.test.js +0 -211
- package/dist/test/system.test.js.map +0 -1
- package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
- package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
- package/dist/test/three-reactor-gql-sync.test.js +0 -368
- package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
- package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
- package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
- package/dist/test/two-reactor-gql-sync.test.js +0 -348
- package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
- /package/dist/src/{sync → graphql/gateway}/types.js +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import fastifyCors from "@fastify/cors";
|
|
2
|
+
import fastifyFormbody from "@fastify/formbody";
|
|
3
|
+
import fastifyMiddie from "@fastify/middie";
|
|
4
|
+
import devcert from "devcert";
|
|
5
|
+
import Fastify from "fastify";
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import http from "node:http";
|
|
8
|
+
import https from "node:https";
|
|
9
|
+
import nodePath from "node:path";
|
|
10
|
+
import { match } from "path-to-regexp";
|
|
11
|
+
/**
|
|
12
|
+
* Normalises a route path for path-to-regexp v8:
|
|
13
|
+
* - Collapses duplicate slashes (e.g. "//explorer" → "/explorer")
|
|
14
|
+
* - Converts legacy optional-param syntax ":param?" → "{/:param}?"
|
|
15
|
+
*/
|
|
16
|
+
function normalizePath(path) {
|
|
17
|
+
return path.replace(/\/+/g, "/").replace(/:(\w+)\?/g, "{/:$1}");
|
|
18
|
+
}
|
|
19
|
+
/** Parses body-limit strings like "50mb" to bytes. */
|
|
20
|
+
function parseBodyLimit(limit) {
|
|
21
|
+
const m = /^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i.exec(limit.trim());
|
|
22
|
+
if (!m)
|
|
23
|
+
return 52_428_800; // 50 MB fallback
|
|
24
|
+
const n = parseFloat(m[1]);
|
|
25
|
+
const units = {
|
|
26
|
+
b: 1,
|
|
27
|
+
kb: 1_024,
|
|
28
|
+
mb: 1_048_576,
|
|
29
|
+
gb: 1_073_741_824,
|
|
30
|
+
};
|
|
31
|
+
return Math.round(n * (units[(m[2] ?? "b").toLowerCase()] ?? 1));
|
|
32
|
+
}
|
|
33
|
+
export class FastifyHttpAdapter {
|
|
34
|
+
// Dispatch maps — populated at any time (before or after listen).
|
|
35
|
+
#fetchRoutes = [];
|
|
36
|
+
#getRoutes = new Map();
|
|
37
|
+
// path → method → handler
|
|
38
|
+
#nodeRoutes = new Map();
|
|
39
|
+
// Ops that need the Fastify instance (CORS config, Connect middleware).
|
|
40
|
+
#setupOps = [];
|
|
41
|
+
#instance;
|
|
42
|
+
get handle() {
|
|
43
|
+
return this.#instance;
|
|
44
|
+
}
|
|
45
|
+
setupMiddleware({ corsOptions, bodyLimit = "50mb", }) {
|
|
46
|
+
this.#setupOps.push({
|
|
47
|
+
kind: "cors",
|
|
48
|
+
options: corsOptions,
|
|
49
|
+
bodyLimit: parseBodyLimit(bodyLimit),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
mount(path, handler, { exact = false } = {}) {
|
|
53
|
+
this.#fetchRoutes.push({
|
|
54
|
+
handler,
|
|
55
|
+
// exact=false → exact path match; exact=true → prefix match.
|
|
56
|
+
matcher: match(normalizePath(path), { end: !exact }),
|
|
57
|
+
prefix: exact,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
getRoute(path, handler) {
|
|
61
|
+
this.#getRoutes.set(path, { handler, matcher: match(normalizePath(path)) });
|
|
62
|
+
}
|
|
63
|
+
mountNodeRoute(method, path, handler) {
|
|
64
|
+
if (!this.#nodeRoutes.has(path)) {
|
|
65
|
+
this.#nodeRoutes.set(path, new Map());
|
|
66
|
+
}
|
|
67
|
+
this.#nodeRoutes.get(path).set(method, handler);
|
|
68
|
+
}
|
|
69
|
+
mountRawMiddleware(middleware) {
|
|
70
|
+
if (this.#instance) {
|
|
71
|
+
// @fastify/middie is always registered, so .use() is available post-listen.
|
|
72
|
+
this.#instance.use(middleware);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.#setupOps.push({ kind: "middie", middleware });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
setupSentryErrorHandler(sentry) {
|
|
79
|
+
if (!this.#instance)
|
|
80
|
+
return;
|
|
81
|
+
const s = sentry;
|
|
82
|
+
s.setupFastifyErrorHandler(this.#instance);
|
|
83
|
+
}
|
|
84
|
+
async listen(port, tls) {
|
|
85
|
+
let httpServer;
|
|
86
|
+
if (tls === true) {
|
|
87
|
+
const { cert, key } = (await devcert.certificateFor("localhost"));
|
|
88
|
+
if (!cert || !key)
|
|
89
|
+
throw new Error("Invalid certificate generated");
|
|
90
|
+
httpServer = https.createServer({ cert, key });
|
|
91
|
+
}
|
|
92
|
+
else if (tls && "keyPath" in tls) {
|
|
93
|
+
const cwd = process.cwd();
|
|
94
|
+
httpServer = https.createServer({
|
|
95
|
+
key: fs.readFileSync(nodePath.join(cwd, tls.keyPath)),
|
|
96
|
+
cert: fs.readFileSync(nodePath.join(cwd, tls.certPath)),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else if (tls && "cert" in tls) {
|
|
100
|
+
httpServer = https.createServer({ cert: tls.cert, key: tls.key });
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
httpServer = http.createServer();
|
|
104
|
+
}
|
|
105
|
+
const corsOp = this.#setupOps.find((op) => op.kind === "cors");
|
|
106
|
+
const bodyLimit = corsOp?.bodyLimit ?? 52_428_800;
|
|
107
|
+
const instance = Fastify({
|
|
108
|
+
serverFactory: (handler) => {
|
|
109
|
+
httpServer.on("request", handler);
|
|
110
|
+
return httpServer;
|
|
111
|
+
},
|
|
112
|
+
bodyLimit,
|
|
113
|
+
logger: false,
|
|
114
|
+
});
|
|
115
|
+
this.#instance = instance;
|
|
116
|
+
// Always register middie first so .use() is available post-listen.
|
|
117
|
+
await instance.register(fastifyMiddie);
|
|
118
|
+
await instance.register(fastifyFormbody);
|
|
119
|
+
for (const op of this.#setupOps) {
|
|
120
|
+
if (op.kind === "cors") {
|
|
121
|
+
await instance.register(fastifyCors, op.options);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
instance.use(op.middleware);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Single catch-all route — all dispatching is done via the Maps above so
|
|
128
|
+
// that routes registered after listen() are picked up automatically.
|
|
129
|
+
// OPTIONS is excluded because @fastify/cors registers its own OPTIONS /*
|
|
130
|
+
// handler for preflight; including it here would cause a duplicate-route
|
|
131
|
+
// conflict at startup.
|
|
132
|
+
instance.route({
|
|
133
|
+
method: ["DELETE", "GET", "HEAD", "PATCH", "POST", "PUT"],
|
|
134
|
+
url: "/*",
|
|
135
|
+
handler: (req, reply) => this.#dispatch(req, reply),
|
|
136
|
+
});
|
|
137
|
+
await instance.ready();
|
|
138
|
+
return new Promise((resolve, reject) => {
|
|
139
|
+
httpServer.once("error", reject);
|
|
140
|
+
httpServer.listen(port, () => {
|
|
141
|
+
httpServer.off("error", reject);
|
|
142
|
+
resolve(httpServer);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
#dispatch(req, reply) {
|
|
147
|
+
const pathname = new URL(req.url, "http://localhost").pathname;
|
|
148
|
+
const method = req.method.toUpperCase();
|
|
149
|
+
// 1. Node routes — exact path + method, handler manages raw response.
|
|
150
|
+
const nodeHandlers = this.#nodeRoutes.get(pathname);
|
|
151
|
+
if (nodeHandlers) {
|
|
152
|
+
const handler = nodeHandlers.get(method);
|
|
153
|
+
if (handler) {
|
|
154
|
+
reply.hijack();
|
|
155
|
+
handler(req.raw, reply.raw, req.body);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// 2. GET-specific routes (health, explorer, etc.).
|
|
160
|
+
if (method === "GET") {
|
|
161
|
+
for (const entry of this.#getRoutes.values()) {
|
|
162
|
+
if (entry.matcher(pathname)) {
|
|
163
|
+
return this.#serveGetEntry(entry, req, reply);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// 3. Fetch routes (GraphQL handlers, SSE, etc.).
|
|
168
|
+
// Iterate in reverse so that the last-mounted handler wins when the same
|
|
169
|
+
// path is mounted more than once (e.g. supergraph remount after reload).
|
|
170
|
+
for (let i = this.#fetchRoutes.length - 1; i >= 0; i--) {
|
|
171
|
+
const entry = this.#fetchRoutes[i];
|
|
172
|
+
if (entry.matcher(pathname)) {
|
|
173
|
+
return serveFetchHandler(entry.handler, req, reply);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
void reply.status(404).send({
|
|
177
|
+
message: `Route ${req.method}:${pathname} not found`,
|
|
178
|
+
error: "Not Found",
|
|
179
|
+
statusCode: 404,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async #serveGetEntry(entry, req, reply) {
|
|
183
|
+
const url = buildUrl(req);
|
|
184
|
+
const headers = buildHeaders(req);
|
|
185
|
+
const fetchReq = new Request(url, { method: "GET", headers });
|
|
186
|
+
const response = await entry.handler(fetchReq);
|
|
187
|
+
writeResponse(reply, response);
|
|
188
|
+
return reply.send(await response.text());
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async function serveFetchHandler(handler, req, reply) {
|
|
192
|
+
const url = buildUrl(req);
|
|
193
|
+
const headers = buildHeaders(req);
|
|
194
|
+
let body;
|
|
195
|
+
if (req.method !== "GET" && req.method !== "HEAD" && req.body !== undefined) {
|
|
196
|
+
body = JSON.stringify(req.body);
|
|
197
|
+
}
|
|
198
|
+
const fetchRequest = new Request(url, { method: req.method, headers, body });
|
|
199
|
+
const response = await handler(fetchRequest);
|
|
200
|
+
writeResponse(reply, response);
|
|
201
|
+
return reply.send(await response.text());
|
|
202
|
+
}
|
|
203
|
+
function buildUrl(req) {
|
|
204
|
+
const host = req.headers.host ?? "localhost";
|
|
205
|
+
return `${req.protocol}://${host}${req.url}`;
|
|
206
|
+
}
|
|
207
|
+
function buildHeaders(req) {
|
|
208
|
+
const headers = new Headers();
|
|
209
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
210
|
+
if (typeof value === "string") {
|
|
211
|
+
headers.set(key, value);
|
|
212
|
+
}
|
|
213
|
+
else if (Array.isArray(value)) {
|
|
214
|
+
headers.set(key, value.join(", "));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return headers;
|
|
218
|
+
}
|
|
219
|
+
function writeResponse(reply, response) {
|
|
220
|
+
void reply.status(response.status);
|
|
221
|
+
response.headers.forEach((value, key) => {
|
|
222
|
+
void reply.header(key, value);
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
export function createFastifyHttpAdapter() {
|
|
226
|
+
return { adapter: new FastifyHttpAdapter() };
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=adapter-http-fastify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-http-fastify.js","sourceRoot":"","sources":["../../../../src/graphql/gateway/adapter-http-fastify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AuthContext, AuthService } from "../../services/auth.service.js";
|
|
2
|
+
import type { FetchHandler } from "./types.js";
|
|
3
|
+
export type AuthFetchMiddleware = (handler: FetchHandler) => FetchHandler;
|
|
4
|
+
/** Internal — only `graphql-manager.ts` should call this. */
|
|
5
|
+
export declare function getAuthContext(request: globalThis.Request): AuthContext | undefined;
|
|
6
|
+
export declare function createAuthFetchMiddleware(authService: AuthService): AuthFetchMiddleware;
|
|
7
|
+
//# sourceMappingURL=auth-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.d.ts","sourceRoot":"","sources":["../../../../src/graphql/gateway/auth-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;AAI1E,6DAA6D;AAC7D,wBAAgB,cAAc,CAC5B,OAAO,EAAE,UAAU,CAAC,OAAO,GAC1B,WAAW,GAAG,SAAS,CAEzB;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,WAAW,GACvB,mBAAmB,CAQrB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const authContextMap = new WeakMap();
|
|
2
|
+
/** Internal — only `graphql-manager.ts` should call this. */
|
|
3
|
+
export function getAuthContext(request) {
|
|
4
|
+
return authContextMap.get(request);
|
|
5
|
+
}
|
|
6
|
+
export function createAuthFetchMiddleware(authService) {
|
|
7
|
+
return (next) => async (request) => {
|
|
8
|
+
const result = await authService.authenticateRequest(request);
|
|
9
|
+
if (result instanceof globalThis.Response)
|
|
10
|
+
return result;
|
|
11
|
+
authContextMap.set(request, result);
|
|
12
|
+
return next(request);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=auth-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.js","sourceRoot":"","sources":["../../../../src/graphql/gateway/auth-middleware.ts"],"names":[],"mappings":"AAKA,MAAM,cAAc,GAAG,IAAI,OAAO,EAAmC,CAAC;AAEtE,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAC5B,OAA2B;IAE3B,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,WAAwB;IAExB,OAAO,CAAC,IAAkB,EAAgB,EAAE,CAC1C,KAAK,EAAE,OAA2B,EAAgC,EAAE;QAClE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,MAAM,YAAY,UAAU,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QACzD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ILogger } from "document-model";
|
|
2
|
+
import type { Context } from "../types.js";
|
|
3
|
+
import type { IGatewayAdapter, IHttpAdapter } from "./types.js";
|
|
4
|
+
export type GatewayAdapterType = "apollo" | "mercurius";
|
|
5
|
+
export type HttpAdapterType = "express" | "fastify";
|
|
6
|
+
export declare function createGatewayAdapter(type: GatewayAdapterType, logger: ILogger): IGatewayAdapter<Context>;
|
|
7
|
+
export type HttpAdapterSetup = {
|
|
8
|
+
adapter: IHttpAdapter;
|
|
9
|
+
};
|
|
10
|
+
export declare function createHttpAdapter(type: HttpAdapterType): HttpAdapterSetup;
|
|
11
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/graphql/gateway/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,OAAO,GACd,eAAe,CAAC,OAAO,CAAC,CAO1B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB,CAOzE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ApolloGatewayAdapter } from "./adapter-gateway-apollo.js";
|
|
2
|
+
import { MercuriusGatewayAdapter } from "./adapter-gateway-mercurius.js";
|
|
3
|
+
import { createExpressHttpAdapter } from "./adapter-http-express.js";
|
|
4
|
+
import { createFastifyHttpAdapter } from "./adapter-http-fastify.js";
|
|
5
|
+
export function createGatewayAdapter(type, logger) {
|
|
6
|
+
switch (type) {
|
|
7
|
+
case "apollo":
|
|
8
|
+
return new ApolloGatewayAdapter(logger);
|
|
9
|
+
case "mercurius":
|
|
10
|
+
return new MercuriusGatewayAdapter(logger);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function createHttpAdapter(type) {
|
|
14
|
+
switch (type) {
|
|
15
|
+
case "express":
|
|
16
|
+
return createExpressHttpAdapter();
|
|
17
|
+
case "fastify":
|
|
18
|
+
return createFastifyHttpAdapter();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/graphql/gateway/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAMrE,MAAM,UAAU,oBAAoB,CAClC,IAAwB,EACxB,MAAe;IAEf,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,wBAAwB,EAAE,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,wBAAwB,EAAE,CAAC;IACtC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { CorsOptions } from "cors";
|
|
2
|
+
import type { DocumentNode, GraphQLSchema } from "graphql";
|
|
3
|
+
import type http from "node:http";
|
|
4
|
+
import type { WebSocketServer } from "ws";
|
|
5
|
+
export type TlsOptions = {
|
|
6
|
+
keyPath: string;
|
|
7
|
+
certPath: string;
|
|
8
|
+
} | {
|
|
9
|
+
cert: Buffer | string;
|
|
10
|
+
key: Buffer | string;
|
|
11
|
+
} | true;
|
|
12
|
+
export type GatewayContextFactory<TContext = unknown> = (request: Request) => Promise<TContext>;
|
|
13
|
+
export type WsContextFactory<TContext = unknown> = (connectionParams: Record<string, unknown>) => Promise<TContext>;
|
|
14
|
+
export type WsDisposer = {
|
|
15
|
+
dispose: () => void | Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
export type FetchHandler = (request: Request) => Promise<Response>;
|
|
18
|
+
/**
|
|
19
|
+
* A framework-agnostic description of a federated subgraph service.
|
|
20
|
+
* Used by IGatewayAdapter.createSupergraphHandler() to compose the supergraph SDL.
|
|
21
|
+
*/
|
|
22
|
+
export type SubgraphDefinition = {
|
|
23
|
+
name: string;
|
|
24
|
+
typeDefs: DocumentNode;
|
|
25
|
+
url: string;
|
|
26
|
+
};
|
|
27
|
+
export interface IGatewayAdapter<TContext = unknown> {
|
|
28
|
+
/** One-time startup. */
|
|
29
|
+
start(httpServer: http.Server): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Returns a Fetch API handler for the given schema.
|
|
32
|
+
* Caller (IHttpAdapter) is responsible for mounting it at a path.
|
|
33
|
+
*/
|
|
34
|
+
createHandler(schema: GraphQLSchema, contextFactory: GatewayContextFactory<TContext>): Promise<FetchHandler>;
|
|
35
|
+
/**
|
|
36
|
+
* Create a federation gateway handler that composes all subgraphs into a supergraph.
|
|
37
|
+
* getSubgraphs is called eagerly (during setup) and again on every updateSupergraph() call.
|
|
38
|
+
*/
|
|
39
|
+
createSupergraphHandler(getSubgraphs: () => SubgraphDefinition[], httpServer: http.Server, contextFactory: GatewayContextFactory<TContext>): Promise<FetchHandler>;
|
|
40
|
+
/**
|
|
41
|
+
* Recompose the supergraph SDL from the current subgraph list and push the update
|
|
42
|
+
* to the running federation gateway. No-op if createSupergraphHandler() has not
|
|
43
|
+
* been called yet.
|
|
44
|
+
*/
|
|
45
|
+
updateSupergraph(): Promise<void>;
|
|
46
|
+
/** Attach WebSocket subscriptions. Returns a disposer. */
|
|
47
|
+
attachWebSocket(wsServer: WebSocketServer, schema: GraphQLSchema, contextFactory: WsContextFactory<TContext>): WsDisposer;
|
|
48
|
+
stop(): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export interface IHttpAdapter {
|
|
51
|
+
/** Set up CORS and body-parser equivalent middleware. */
|
|
52
|
+
setupMiddleware(config: {
|
|
53
|
+
corsOptions?: CorsOptions;
|
|
54
|
+
bodyLimit?: string;
|
|
55
|
+
}): void;
|
|
56
|
+
/**
|
|
57
|
+
* Mount a Fetch API handler.
|
|
58
|
+
* - exact = false (default): exact path match via internal dispatch map.
|
|
59
|
+
* - exact = true: prefix match - handler also receives all sub-paths
|
|
60
|
+
* (uses framework router.use() semantics).
|
|
61
|
+
*/
|
|
62
|
+
mount(path: string, handler: FetchHandler, options?: {
|
|
63
|
+
exact?: boolean;
|
|
64
|
+
}): void;
|
|
65
|
+
/**
|
|
66
|
+
* Register a GET route that returns a Fetch Response (for health, explorer, etc.).
|
|
67
|
+
* Registered directly on the underlying framework app, bypassing the sub-router.
|
|
68
|
+
*/
|
|
69
|
+
getRoute(path: string, handler: (request: Request) => Response | Promise<Response>): void;
|
|
70
|
+
/**
|
|
71
|
+
* Start listening on the given port. Returns the underlying http.Server
|
|
72
|
+
* so callers can attach WebSocket servers.
|
|
73
|
+
*/
|
|
74
|
+
listen(port: number, tls?: TlsOptions): Promise<http.Server>;
|
|
75
|
+
/**
|
|
76
|
+
* Mount a raw Connect/Express-compatible middleware function (e.g. Vite dev
|
|
77
|
+
* server middleware). The implementation is adapter-specific; for Express this
|
|
78
|
+
* is equivalent to `app.use(middleware)`.
|
|
79
|
+
*/
|
|
80
|
+
mountRawMiddleware(middleware: unknown): void;
|
|
81
|
+
/**
|
|
82
|
+
* Register a method-specific route handler using Node.js core HTTP types.
|
|
83
|
+
* Use this when a Fetch API FetchHandler is not possible (e.g. streaming
|
|
84
|
+
* protocols that require direct access to IncomingMessage/ServerResponse).
|
|
85
|
+
*
|
|
86
|
+
* The req/res objects are `http.IncomingMessage`/`http.ServerResponse`
|
|
87
|
+
* (Express Request/Response are compatible subtypes).
|
|
88
|
+
*/
|
|
89
|
+
mountNodeRoute(method: "DELETE" | "GET" | "POST", path: string, handler: (req: http.IncomingMessage, res: http.ServerResponse, body?: unknown) => void): void;
|
|
90
|
+
/**
|
|
91
|
+
* Register framework-specific Sentry error-capturing middleware after all routes
|
|
92
|
+
* are mounted. Each adapter calls the Sentry setup function appropriate for its
|
|
93
|
+
* framework (e.g. setupExpressErrorHandler, setupFastifyErrorHandler).
|
|
94
|
+
* No-op if Sentry is not relevant for the adapter.
|
|
95
|
+
*/
|
|
96
|
+
setupSentryErrorHandler(sentry: object): void;
|
|
97
|
+
/** The raw framework handle (e.g. Express app). Cast as needed at call sites. */
|
|
98
|
+
readonly handle: unknown;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/graphql/gateway/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/graphql/gateway/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,41 +1,59 @@
|
|
|
1
1
|
import type { IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
|
|
2
|
-
import type { IReactorClient, ISyncManager } from "@powerhousedao/reactor";
|
|
3
|
-
import type { ISubgraph, SubgraphClass } from "@powerhousedao/reactor-api";
|
|
4
|
-
import type {
|
|
5
|
-
import type express from "express";
|
|
2
|
+
import type { IReactorClient, IRelationalDb, ISyncManager } from "@powerhousedao/reactor";
|
|
3
|
+
import type { Context, ISubgraph, SubgraphClass } from "@powerhousedao/reactor-api";
|
|
4
|
+
import type { ILogger } from "document-model";
|
|
6
5
|
import type http from "node:http";
|
|
7
6
|
import type { WebSocketServer } from "ws";
|
|
8
7
|
import type { AuthConfig } from "../services/auth.service.js";
|
|
8
|
+
import { type AuthFetchMiddleware } from "./gateway/auth-middleware.js";
|
|
9
|
+
import type { AuthorizationService } from "../services/authorization.service.js";
|
|
9
10
|
import type { DocumentPermissionService } from "../services/document-permission.service.js";
|
|
11
|
+
import type { IGatewayAdapter, IHttpAdapter } from "./gateway/types.js";
|
|
10
12
|
export type GraphqlManagerFeatureFlags = {
|
|
11
13
|
enableDocumentModelSubgraphs?: boolean;
|
|
12
14
|
};
|
|
13
15
|
export declare class GraphQLManager {
|
|
14
16
|
#private;
|
|
15
17
|
private readonly path;
|
|
16
|
-
private readonly app;
|
|
17
18
|
private readonly httpServer;
|
|
18
19
|
private readonly wsServer;
|
|
19
|
-
private readonly reactor;
|
|
20
20
|
private readonly reactorClient;
|
|
21
21
|
private readonly relationalDb;
|
|
22
22
|
private readonly analyticsStore;
|
|
23
23
|
private readonly syncManager;
|
|
24
|
+
private readonly logger;
|
|
25
|
+
private readonly httpAdapter;
|
|
26
|
+
private readonly gatewayAdapter;
|
|
24
27
|
private readonly authConfig?;
|
|
25
28
|
private readonly documentPermissionService?;
|
|
26
29
|
private readonly featureFlags;
|
|
27
30
|
private readonly port;
|
|
31
|
+
private readonly authorizationService?;
|
|
28
32
|
private initialized;
|
|
29
|
-
private coreRouter;
|
|
30
33
|
private coreSubgraphsMap;
|
|
31
|
-
private reactorRouter;
|
|
32
34
|
private contextFields;
|
|
33
35
|
private readonly subgraphs;
|
|
34
36
|
private authService;
|
|
35
|
-
private readonly
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
private readonly subgraphWsDisposers;
|
|
38
|
+
/** Cached document models for schema generation - updated on init and regenerate */
|
|
39
|
+
private cachedDocumentModels;
|
|
40
|
+
private readonly subgraphHandlerCache;
|
|
41
|
+
constructor(path: string, httpServer: http.Server, wsServer: WebSocketServer, reactorClient: IReactorClient, relationalDb: IRelationalDb, analyticsStore: IAnalyticsStore, syncManager: ISyncManager, logger: ILogger, httpAdapter: IHttpAdapter, gatewayAdapter: IGatewayAdapter<Context>, authConfig?: AuthConfig | undefined, documentPermissionService?: DocumentPermissionService | undefined, featureFlags?: GraphqlManagerFeatureFlags, port?: number, authorizationService?: AuthorizationService | undefined);
|
|
42
|
+
init(coreSubgraphs: SubgraphClass[], authMiddleware?: AuthFetchMiddleware): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Regenerate document model subgraphs when models are dynamically loaded.
|
|
45
|
+
* Fetches current modules from reactor client (source of truth).
|
|
46
|
+
*/
|
|
47
|
+
regenerateDocumentModelSubgraphs(): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Register a pre-constructed subgraph instance.
|
|
50
|
+
* Use this when you need to pass custom dependencies to a subgraph.
|
|
51
|
+
*/
|
|
52
|
+
registerSubgraphInstance(subgraphInstance: ISubgraph, supergraph?: string, core?: boolean): Promise<ISubgraph>;
|
|
53
|
+
/**
|
|
54
|
+
* Get the base path used for subgraph registration.
|
|
55
|
+
*/
|
|
56
|
+
getBasePath(): string;
|
|
39
57
|
registerSubgraph(subgraph: SubgraphClass, supergraph?: string, core?: boolean): Promise<ISubgraph>;
|
|
40
58
|
updateRouter: (immediate?: boolean) => Promise<void>;
|
|
41
59
|
private _updateRouter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-manager.d.ts","sourceRoot":"","sources":["../../../src/graphql/graphql-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphql-manager.d.ts","sourceRoot":"","sources":["../../../src/graphql/graphql-manager.ts"],"names":[],"mappings":"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"}
|