@h4ad/serverless-adapter 3.2.0 → 4.0.1
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/lib/adapter.contract-EQE3rlgO.d.ts +278 -0
- package/lib/adapter.contract-y5xSjOjo.d.cts +278 -0
- package/lib/adapters/apollo-server/index.cjs +4 -0
- package/lib/adapters/apollo-server/index.cjs.map +1 -0
- package/lib/adapters/apollo-server/{apollo-server-mutation.adapter.d.ts → index.d.cts} +10 -5
- package/lib/adapters/apollo-server/index.d.ts +61 -2
- package/lib/adapters/apollo-server/index.mjs +2 -0
- package/lib/adapters/apollo-server/index.mjs.map +1 -0
- package/lib/adapters/aws/index.cjs +4 -0
- package/lib/adapters/aws/index.cjs.map +1 -0
- package/lib/adapters/aws/index.d.cts +910 -0
- package/lib/adapters/aws/index.d.ts +910 -12
- package/lib/adapters/aws/index.mjs +2 -0
- package/lib/adapters/aws/index.mjs.map +1 -0
- package/lib/adapters/azure/index.cjs +4 -0
- package/lib/adapters/azure/index.cjs.map +1 -0
- package/lib/adapters/azure/{http-trigger-v4.adapter.d.ts → index.d.cts} +11 -6
- package/lib/adapters/azure/index.d.ts +86 -2
- package/lib/adapters/azure/index.mjs +2 -0
- package/lib/adapters/azure/index.mjs.map +1 -0
- package/lib/adapters/digital-ocean/index.cjs +4 -0
- package/lib/adapters/digital-ocean/index.cjs.map +1 -0
- package/lib/adapters/digital-ocean/index.d.cts +126 -0
- package/lib/adapters/digital-ocean/index.d.ts +126 -2
- package/lib/adapters/digital-ocean/index.mjs +2 -0
- package/lib/adapters/digital-ocean/index.mjs.map +1 -0
- package/lib/adapters/dummy/index.cjs +4 -0
- package/lib/adapters/dummy/index.cjs.map +1 -0
- package/lib/adapters/dummy/{dummy.adapter.d.ts → index.d.cts} +10 -4
- package/lib/adapters/dummy/index.d.ts +37 -2
- package/lib/adapters/dummy/index.mjs +2 -0
- package/lib/adapters/dummy/index.mjs.map +1 -0
- package/lib/adapters/huawei/index.cjs +4 -0
- package/lib/adapters/huawei/index.cjs.map +1 -0
- package/lib/adapters/huawei/index.d.cts +365 -0
- package/lib/adapters/huawei/index.d.ts +365 -2
- package/lib/adapters/huawei/index.mjs +2 -0
- package/lib/adapters/huawei/index.mjs.map +1 -0
- package/lib/{core/base-handler.d.ts → base-handler-fYEk59Xq.d.ts} +9 -6
- package/lib/base-handler-peEBoKtZ.d.cts +35 -0
- package/lib/chunk-22SSVZU5.mjs +1 -0
- package/lib/chunk-22SSVZU5.mjs.map +1 -0
- package/lib/chunk-HU5XBQCP.mjs +10 -0
- package/lib/chunk-HU5XBQCP.mjs.map +1 -0
- package/lib/chunk-NSO4L3EI.mjs +2 -0
- package/lib/chunk-NSO4L3EI.mjs.map +1 -0
- package/lib/chunk-OYOJMOFP.mjs +2 -0
- package/lib/chunk-OYOJMOFP.mjs.map +1 -0
- package/lib/chunk-Y6H576RS.mjs +2 -0
- package/lib/chunk-Y6H576RS.mjs.map +1 -0
- package/lib/{core/constants.d.ts → constants-0cgQlFSV.d.cts} +6 -5
- package/lib/constants-0cgQlFSV.d.ts +32 -0
- package/lib/{contracts/framework.contract.d.ts → framework.contract-YnJ-fl1w.d.cts} +4 -3
- package/lib/framework.contract-YnJ-fl1w.d.ts +20 -0
- package/lib/frameworks/apollo-server/index.cjs +4 -0
- package/lib/frameworks/apollo-server/index.cjs.map +1 -0
- package/lib/frameworks/apollo-server/{apollo-server.framework.d.ts → index.d.cts} +12 -9
- package/lib/frameworks/apollo-server/index.d.ts +72 -2
- package/lib/frameworks/apollo-server/index.mjs +2 -0
- package/lib/frameworks/apollo-server/index.mjs.map +1 -0
- package/lib/frameworks/body-parser/index.cjs +4 -0
- package/lib/frameworks/body-parser/index.cjs.map +1 -0
- package/lib/frameworks/body-parser/index.d.cts +159 -0
- package/lib/frameworks/body-parser/index.d.ts +159 -6
- package/lib/frameworks/body-parser/index.mjs +2 -0
- package/lib/frameworks/body-parser/index.mjs.map +1 -0
- package/lib/frameworks/cors/index.cjs +5 -0
- package/lib/frameworks/cors/index.cjs.map +1 -0
- package/lib/frameworks/cors/{cors.framework.d.ts → index.d.cts} +6 -5
- package/lib/frameworks/cors/index.d.ts +79 -2
- package/lib/frameworks/cors/index.mjs +3 -0
- package/lib/frameworks/cors/index.mjs.map +1 -0
- package/lib/frameworks/deepkit/index.cjs +4 -0
- package/lib/frameworks/deepkit/index.cjs.map +1 -0
- package/lib/frameworks/deepkit/{http-deepkit.framework.d.ts → index.d.cts} +8 -5
- package/lib/frameworks/deepkit/index.d.ts +21 -2
- package/lib/frameworks/deepkit/index.mjs +2 -0
- package/lib/frameworks/deepkit/index.mjs.map +1 -0
- package/lib/frameworks/express/index.cjs +2 -0
- package/lib/frameworks/express/index.cjs.map +1 -0
- package/lib/frameworks/express/{express.framework.d.ts → index.d.cts} +6 -5
- package/lib/frameworks/express/index.d.ts +18 -2
- package/lib/frameworks/express/index.mjs +2 -0
- package/lib/frameworks/express/index.mjs.map +1 -0
- package/lib/frameworks/fastify/index.cjs +2 -0
- package/lib/frameworks/fastify/index.cjs.map +1 -0
- package/lib/frameworks/fastify/{fastify.framework.d.ts → index.d.cts} +6 -5
- package/lib/frameworks/fastify/index.d.ts +18 -2
- package/lib/frameworks/fastify/index.mjs +2 -0
- package/lib/frameworks/fastify/index.mjs.map +1 -0
- package/lib/frameworks/hapi/index.cjs +2 -0
- package/lib/frameworks/hapi/index.cjs.map +1 -0
- package/lib/frameworks/hapi/{hapi.framework.d.ts → index.d.cts} +6 -5
- package/lib/frameworks/hapi/index.d.ts +18 -2
- package/lib/frameworks/hapi/index.mjs +2 -0
- package/lib/frameworks/hapi/index.mjs.map +1 -0
- package/lib/frameworks/koa/index.cjs +2 -0
- package/lib/frameworks/koa/index.cjs.map +1 -0
- package/lib/frameworks/koa/{koa.framework.d.ts → index.d.cts} +6 -5
- package/lib/frameworks/koa/index.d.ts +18 -2
- package/lib/frameworks/koa/index.mjs +2 -0
- package/lib/frameworks/koa/index.mjs.map +1 -0
- package/lib/frameworks/lazy/index.cjs +4 -0
- package/lib/frameworks/lazy/index.cjs.map +1 -0
- package/lib/frameworks/lazy/{lazy.framework.d.ts → index.d.cts} +7 -6
- package/lib/frameworks/lazy/index.d.ts +57 -2
- package/lib/frameworks/lazy/index.mjs +2 -0
- package/lib/frameworks/lazy/index.mjs.map +1 -0
- package/lib/frameworks/trpc/index.cjs +4 -0
- package/lib/frameworks/trpc/index.cjs.map +1 -0
- package/lib/frameworks/trpc/{trpc.framework.d.ts → index.d.cts} +12 -11
- package/lib/frameworks/trpc/index.d.ts +154 -2
- package/lib/frameworks/trpc/index.mjs +2 -0
- package/lib/frameworks/trpc/index.mjs.map +1 -0
- package/lib/handler.contract-8Cb7qLSi.d.ts +66 -0
- package/lib/handler.contract-TQk8iM8f.d.cts +66 -0
- package/lib/handlers/aws/index.cjs +10 -0
- package/lib/handlers/aws/index.cjs.map +1 -0
- package/lib/handlers/aws/{aws-stream.handler.d.ts → index.d.cts} +22 -15
- package/lib/handlers/aws/index.d.ts +96 -2
- package/lib/handlers/aws/index.mjs +2 -0
- package/lib/handlers/aws/index.mjs.map +1 -0
- package/lib/handlers/azure/index.cjs +4 -0
- package/lib/handlers/azure/index.cjs.map +1 -0
- package/lib/handlers/azure/{azure.handler.d.ts → index.d.cts} +16 -8
- package/lib/handlers/azure/index.d.ts +53 -2
- package/lib/handlers/azure/index.mjs +2 -0
- package/lib/handlers/azure/index.mjs.map +1 -0
- package/lib/handlers/default/index.cjs +4 -0
- package/lib/handlers/default/index.cjs.map +1 -0
- package/lib/handlers/default/{default.handler.d.ts → index.d.cts} +13 -6
- package/lib/handlers/default/index.d.ts +95 -2
- package/lib/handlers/default/index.mjs +2 -0
- package/lib/handlers/default/index.mjs.map +1 -0
- package/lib/handlers/digital-ocean/index.cjs +4 -0
- package/lib/handlers/digital-ocean/index.cjs.map +1 -0
- package/lib/handlers/digital-ocean/index.d.cts +25 -0
- package/lib/handlers/digital-ocean/index.d.ts +25 -2
- package/lib/handlers/digital-ocean/index.mjs +2 -0
- package/lib/handlers/digital-ocean/index.mjs.map +1 -0
- package/lib/handlers/firebase/index.cjs +4 -0
- package/lib/handlers/firebase/index.cjs.map +1 -0
- package/lib/handlers/firebase/index.d.cts +59 -0
- package/lib/handlers/firebase/index.d.ts +59 -3
- package/lib/handlers/firebase/index.mjs +2 -0
- package/lib/handlers/firebase/index.mjs.map +1 -0
- package/lib/handlers/gcp/index.cjs +4 -0
- package/lib/handlers/gcp/index.cjs.map +1 -0
- package/lib/handlers/gcp/{gcp.handler.d.ts → index.d.cts} +12 -5
- package/lib/handlers/gcp/index.d.ts +33 -2
- package/lib/handlers/gcp/index.mjs +2 -0
- package/lib/handlers/gcp/index.mjs.map +1 -0
- package/lib/handlers/huawei/index.cjs +4 -0
- package/lib/handlers/huawei/index.cjs.map +1 -0
- package/lib/handlers/huawei/{http-huawei.handler.d.ts → index.d.cts} +15 -12
- package/lib/handlers/huawei/index.d.ts +62 -2
- package/lib/handlers/huawei/index.mjs +2 -0
- package/lib/handlers/huawei/index.mjs.map +1 -0
- package/lib/{@types/headers.d.ts → headers-K2qbcurv.d.cts} +5 -4
- package/lib/headers-K2qbcurv.d.ts +38 -0
- package/lib/index.cjs +10 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.d.cts +439 -0
- package/lib/index.d.ts +439 -6
- package/lib/index.mjs +2 -0
- package/lib/index.mjs.map +1 -0
- package/lib/{core/logger.d.ts → logger-9me5n48P.d.cts} +8 -7
- package/lib/logger-9me5n48P.d.ts +65 -0
- package/lib/{core/path.d.ts → path-yBwCb8C1.d.cts} +16 -5
- package/lib/path-yBwCb8C1.d.ts +64 -0
- package/lib/{handlers/base/raw-request.d.ts → raw-request-B2vPjAfE.d.cts} +6 -5
- package/lib/raw-request-b6AYnkxd.d.ts +32 -0
- package/lib/{network/request.d.ts → request-DNNIV9ub.d.cts} +7 -7
- package/lib/request-sVa4pxmx.d.ts +44 -0
- package/lib/resolvers/aws-context/index.cjs +2 -0
- package/lib/resolvers/aws-context/index.cjs.map +1 -0
- package/lib/resolvers/aws-context/{aws-context.resolver.d.ts → index.d.cts} +10 -4
- package/lib/resolvers/aws-context/index.d.ts +25 -2
- package/lib/resolvers/aws-context/index.mjs +2 -0
- package/lib/resolvers/aws-context/index.mjs.map +1 -0
- package/lib/resolvers/callback/index.cjs +2 -0
- package/lib/resolvers/callback/index.cjs.map +1 -0
- package/lib/resolvers/callback/{callback.resolver.d.ts → index.d.cts} +10 -4
- package/lib/resolvers/callback/index.d.ts +29 -2
- package/lib/resolvers/callback/index.mjs +2 -0
- package/lib/resolvers/callback/index.mjs.map +1 -0
- package/lib/resolvers/dummy/index.cjs +2 -0
- package/lib/resolvers/dummy/index.cjs.map +1 -0
- package/lib/resolvers/dummy/index.d.cts +20 -0
- package/lib/resolvers/dummy/index.d.ts +20 -2
- package/lib/resolvers/dummy/index.mjs +2 -0
- package/lib/resolvers/dummy/index.mjs.map +1 -0
- package/lib/resolvers/promise/index.cjs +2 -0
- package/lib/resolvers/promise/index.cjs.map +1 -0
- package/lib/resolvers/promise/index.d.cts +20 -0
- package/lib/resolvers/promise/index.d.ts +20 -2
- package/lib/resolvers/promise/index.mjs +2 -0
- package/lib/resolvers/promise/index.mjs.map +1 -0
- package/package.json +565 -7
- package/lib/@types/binary-settings.d.ts +0 -41
- package/lib/@types/binary-settings.d.ts.map +0 -1
- package/lib/@types/binary-settings.js +0 -2
- package/lib/@types/binary-settings.js.map +0 -1
- package/lib/@types/digital-ocean/digital-ocean-http-event.d.ts +0 -37
- package/lib/@types/digital-ocean/digital-ocean-http-event.d.ts.map +0 -1
- package/lib/@types/digital-ocean/digital-ocean-http-event.js +0 -2
- package/lib/@types/digital-ocean/digital-ocean-http-event.js.map +0 -1
- package/lib/@types/digital-ocean/digital-ocean-http-response.d.ts +0 -22
- package/lib/@types/digital-ocean/digital-ocean-http-response.d.ts.map +0 -1
- package/lib/@types/digital-ocean/digital-ocean-http-response.js +0 -2
- package/lib/@types/digital-ocean/digital-ocean-http-response.js.map +0 -1
- package/lib/@types/digital-ocean/index.d.ts +0 -2
- package/lib/@types/digital-ocean/index.d.ts.map +0 -1
- package/lib/@types/digital-ocean/index.js +0 -2
- package/lib/@types/digital-ocean/index.js.map +0 -1
- package/lib/@types/headers.d.ts.map +0 -1
- package/lib/@types/headers.js +0 -2
- package/lib/@types/headers.js.map +0 -1
- package/lib/@types/helpers.d.ts +0 -10
- package/lib/@types/helpers.d.ts.map +0 -1
- package/lib/@types/helpers.js +0 -2
- package/lib/@types/helpers.js.map +0 -1
- package/lib/@types/huawei/huawei-api-gateway-event.d.ts +0 -81
- package/lib/@types/huawei/huawei-api-gateway-event.d.ts.map +0 -1
- package/lib/@types/huawei/huawei-api-gateway-event.js +0 -2
- package/lib/@types/huawei/huawei-api-gateway-event.js.map +0 -1
- package/lib/@types/huawei/huawei-api-gateway-response.d.ts +0 -27
- package/lib/@types/huawei/huawei-api-gateway-response.d.ts.map +0 -1
- package/lib/@types/huawei/huawei-api-gateway-response.js +0 -2
- package/lib/@types/huawei/huawei-api-gateway-response.js.map +0 -1
- package/lib/@types/huawei/huawei-context.d.ts +0 -188
- package/lib/@types/huawei/huawei-context.d.ts.map +0 -1
- package/lib/@types/huawei/huawei-context.js +0 -2
- package/lib/@types/huawei/huawei-context.js.map +0 -1
- package/lib/@types/huawei/index.d.ts +0 -4
- package/lib/@types/huawei/index.d.ts.map +0 -1
- package/lib/@types/huawei/index.js +0 -2
- package/lib/@types/huawei/index.js.map +0 -1
- package/lib/@types/index.d.ts +0 -4
- package/lib/@types/index.d.ts.map +0 -1
- package/lib/@types/index.js +0 -2
- package/lib/@types/index.js.map +0 -1
- package/lib/adapters/apollo-server/apollo-server-mutation.adapter.d.ts.map +0 -1
- package/lib/adapters/apollo-server/apollo-server-mutation.adapter.js +0 -2
- package/lib/adapters/apollo-server/apollo-server-mutation.adapter.js.map +0 -1
- package/lib/adapters/apollo-server/index.d.ts.map +0 -1
- package/lib/adapters/apollo-server/index.js +0 -2
- package/lib/adapters/apollo-server/index.js.map +0 -1
- package/lib/adapters/aws/alb.adapter.d.ts +0 -71
- package/lib/adapters/aws/alb.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/alb.adapter.js +0 -2
- package/lib/adapters/aws/alb.adapter.js.map +0 -1
- package/lib/adapters/aws/api-gateway-v1.adapter.d.ts +0 -76
- package/lib/adapters/aws/api-gateway-v1.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/api-gateway-v1.adapter.js +0 -2
- package/lib/adapters/aws/api-gateway-v1.adapter.js.map +0 -1
- package/lib/adapters/aws/api-gateway-v2.adapter.d.ts +0 -75
- package/lib/adapters/aws/api-gateway-v2.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/api-gateway-v2.adapter.js +0 -2
- package/lib/adapters/aws/api-gateway-v2.adapter.js.map +0 -1
- package/lib/adapters/aws/base/aws-simple-adapter.d.ts +0 -83
- package/lib/adapters/aws/base/aws-simple-adapter.d.ts.map +0 -1
- package/lib/adapters/aws/base/aws-simple-adapter.js +0 -2
- package/lib/adapters/aws/base/aws-simple-adapter.js.map +0 -1
- package/lib/adapters/aws/base/index.d.ts +0 -2
- package/lib/adapters/aws/base/index.d.ts.map +0 -1
- package/lib/adapters/aws/base/index.js +0 -2
- package/lib/adapters/aws/base/index.js.map +0 -1
- package/lib/adapters/aws/dynamodb.adapter.d.ts +0 -56
- package/lib/adapters/aws/dynamodb.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/dynamodb.adapter.js +0 -2
- package/lib/adapters/aws/dynamodb.adapter.js.map +0 -1
- package/lib/adapters/aws/event-bridge.adapter.d.ts +0 -63
- package/lib/adapters/aws/event-bridge.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/event-bridge.adapter.js +0 -2
- package/lib/adapters/aws/event-bridge.adapter.js.map +0 -1
- package/lib/adapters/aws/index.d.ts.map +0 -1
- package/lib/adapters/aws/index.js +0 -2
- package/lib/adapters/aws/index.js.map +0 -1
- package/lib/adapters/aws/lambda-edge.adapter.d.ts +0 -209
- package/lib/adapters/aws/lambda-edge.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/lambda-edge.adapter.js +0 -2
- package/lib/adapters/aws/lambda-edge.adapter.js.map +0 -1
- package/lib/adapters/aws/request-lambda-edge.adapter.d.ts +0 -131
- package/lib/adapters/aws/request-lambda-edge.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/request-lambda-edge.adapter.js +0 -2
- package/lib/adapters/aws/request-lambda-edge.adapter.js.map +0 -1
- package/lib/adapters/aws/s3.adapter.d.ts +0 -56
- package/lib/adapters/aws/s3.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/s3.adapter.js +0 -2
- package/lib/adapters/aws/s3.adapter.js.map +0 -1
- package/lib/adapters/aws/sns.adapter.d.ts +0 -56
- package/lib/adapters/aws/sns.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/sns.adapter.js +0 -2
- package/lib/adapters/aws/sns.adapter.js.map +0 -1
- package/lib/adapters/aws/sqs.adapter.d.ts +0 -56
- package/lib/adapters/aws/sqs.adapter.d.ts.map +0 -1
- package/lib/adapters/aws/sqs.adapter.js +0 -2
- package/lib/adapters/aws/sqs.adapter.js.map +0 -1
- package/lib/adapters/azure/http-trigger-v4.adapter.d.ts.map +0 -1
- package/lib/adapters/azure/http-trigger-v4.adapter.js +0 -2
- package/lib/adapters/azure/http-trigger-v4.adapter.js.map +0 -1
- package/lib/adapters/azure/index.d.ts.map +0 -1
- package/lib/adapters/azure/index.js +0 -2
- package/lib/adapters/azure/index.js.map +0 -1
- package/lib/adapters/digital-ocean/http-function.adapter.d.ts +0 -65
- package/lib/adapters/digital-ocean/http-function.adapter.d.ts.map +0 -1
- package/lib/adapters/digital-ocean/http-function.adapter.js +0 -2
- package/lib/adapters/digital-ocean/http-function.adapter.js.map +0 -1
- package/lib/adapters/digital-ocean/index.d.ts.map +0 -1
- package/lib/adapters/digital-ocean/index.js +0 -2
- package/lib/adapters/digital-ocean/index.js.map +0 -1
- package/lib/adapters/dummy/dummy.adapter.d.ts.map +0 -1
- package/lib/adapters/dummy/dummy.adapter.js +0 -2
- package/lib/adapters/dummy/dummy.adapter.js.map +0 -1
- package/lib/adapters/dummy/index.d.ts.map +0 -1
- package/lib/adapters/dummy/index.js +0 -2
- package/lib/adapters/dummy/index.js.map +0 -1
- package/lib/adapters/huawei/huawei-api-gateway.adapter.d.ts +0 -66
- package/lib/adapters/huawei/huawei-api-gateway.adapter.d.ts.map +0 -1
- package/lib/adapters/huawei/huawei-api-gateway.adapter.js +0 -2
- package/lib/adapters/huawei/huawei-api-gateway.adapter.js.map +0 -1
- package/lib/adapters/huawei/index.d.ts.map +0 -1
- package/lib/adapters/huawei/index.js +0 -2
- package/lib/adapters/huawei/index.js.map +0 -1
- package/lib/contracts/adapter.contract.d.ts +0 -152
- package/lib/contracts/adapter.contract.d.ts.map +0 -1
- package/lib/contracts/adapter.contract.js +0 -2
- package/lib/contracts/adapter.contract.js.map +0 -1
- package/lib/contracts/framework.contract.d.ts.map +0 -1
- package/lib/contracts/framework.contract.js +0 -2
- package/lib/contracts/framework.contract.js.map +0 -1
- package/lib/contracts/handler.contract.d.ts +0 -25
- package/lib/contracts/handler.contract.d.ts.map +0 -1
- package/lib/contracts/handler.contract.js +0 -2
- package/lib/contracts/handler.contract.js.map +0 -1
- package/lib/contracts/index.d.ts +0 -5
- package/lib/contracts/index.d.ts.map +0 -1
- package/lib/contracts/index.js +0 -2
- package/lib/contracts/index.js.map +0 -1
- package/lib/contracts/resolver.contract.d.ts +0 -83
- package/lib/contracts/resolver.contract.d.ts.map +0 -1
- package/lib/contracts/resolver.contract.js +0 -2
- package/lib/contracts/resolver.contract.js.map +0 -1
- package/lib/core/base-handler.d.ts.map +0 -1
- package/lib/core/base-handler.js +0 -2
- package/lib/core/base-handler.js.map +0 -1
- package/lib/core/constants.d.ts.map +0 -1
- package/lib/core/constants.js +0 -2
- package/lib/core/constants.js.map +0 -1
- package/lib/core/current-invoke.d.ts +0 -48
- package/lib/core/current-invoke.d.ts.map +0 -1
- package/lib/core/current-invoke.js +0 -2
- package/lib/core/current-invoke.js.map +0 -1
- package/lib/core/event-body.d.ts +0 -22
- package/lib/core/event-body.d.ts.map +0 -1
- package/lib/core/event-body.js +0 -2
- package/lib/core/event-body.js.map +0 -1
- package/lib/core/headers.d.ts +0 -73
- package/lib/core/headers.d.ts.map +0 -1
- package/lib/core/headers.js +0 -3
- package/lib/core/headers.js.map +0 -1
- package/lib/core/index.d.ts +0 -12
- package/lib/core/index.d.ts.map +0 -1
- package/lib/core/index.js +0 -2
- package/lib/core/index.js.map +0 -1
- package/lib/core/is-binary.d.ts +0 -73
- package/lib/core/is-binary.d.ts.map +0 -1
- package/lib/core/is-binary.js +0 -2
- package/lib/core/is-binary.js.map +0 -1
- package/lib/core/logger.d.ts.map +0 -1
- package/lib/core/logger.js +0 -2
- package/lib/core/logger.js.map +0 -1
- package/lib/core/no-op.d.ts +0 -8
- package/lib/core/no-op.d.ts.map +0 -1
- package/lib/core/no-op.js +0 -2
- package/lib/core/no-op.js.map +0 -1
- package/lib/core/optional.d.ts +0 -22
- package/lib/core/optional.d.ts.map +0 -1
- package/lib/core/optional.js +0 -2
- package/lib/core/optional.js.map +0 -1
- package/lib/core/path.d.ts.map +0 -1
- package/lib/core/path.js +0 -2
- package/lib/core/path.js.map +0 -1
- package/lib/core/stream.d.ts +0 -21
- package/lib/core/stream.d.ts.map +0 -1
- package/lib/core/stream.js +0 -2
- package/lib/core/stream.js.map +0 -1
- package/lib/frameworks/apollo-server/apollo-server.framework.d.ts.map +0 -1
- package/lib/frameworks/apollo-server/apollo-server.framework.js +0 -2
- package/lib/frameworks/apollo-server/apollo-server.framework.js.map +0 -1
- package/lib/frameworks/apollo-server/index.d.ts.map +0 -1
- package/lib/frameworks/apollo-server/index.js +0 -2
- package/lib/frameworks/apollo-server/index.js.map +0 -1
- package/lib/frameworks/body-parser/base-body-parser.framework.d.ts +0 -69
- package/lib/frameworks/body-parser/base-body-parser.framework.d.ts.map +0 -1
- package/lib/frameworks/body-parser/base-body-parser.framework.js +0 -2
- package/lib/frameworks/body-parser/base-body-parser.framework.js.map +0 -1
- package/lib/frameworks/body-parser/index.d.ts.map +0 -1
- package/lib/frameworks/body-parser/index.js +0 -2
- package/lib/frameworks/body-parser/index.js.map +0 -1
- package/lib/frameworks/body-parser/json-body-parser.framework.d.ts +0 -26
- package/lib/frameworks/body-parser/json-body-parser.framework.d.ts.map +0 -1
- package/lib/frameworks/body-parser/json-body-parser.framework.js +0 -2
- package/lib/frameworks/body-parser/json-body-parser.framework.js.map +0 -1
- package/lib/frameworks/body-parser/raw-body-parser.framework.d.ts +0 -26
- package/lib/frameworks/body-parser/raw-body-parser.framework.d.ts.map +0 -1
- package/lib/frameworks/body-parser/raw-body-parser.framework.js +0 -2
- package/lib/frameworks/body-parser/raw-body-parser.framework.js.map +0 -1
- package/lib/frameworks/body-parser/text-body-parser.framework.d.ts +0 -26
- package/lib/frameworks/body-parser/text-body-parser.framework.d.ts.map +0 -1
- package/lib/frameworks/body-parser/text-body-parser.framework.js +0 -2
- package/lib/frameworks/body-parser/text-body-parser.framework.js.map +0 -1
- package/lib/frameworks/body-parser/urlencoded-body-parser.framework.d.ts +0 -26
- package/lib/frameworks/body-parser/urlencoded-body-parser.framework.d.ts.map +0 -1
- package/lib/frameworks/body-parser/urlencoded-body-parser.framework.js +0 -2
- package/lib/frameworks/body-parser/urlencoded-body-parser.framework.js.map +0 -1
- package/lib/frameworks/cors/cors.framework.d.ts.map +0 -1
- package/lib/frameworks/cors/cors.framework.js +0 -3
- package/lib/frameworks/cors/cors.framework.js.map +0 -1
- package/lib/frameworks/cors/index.d.ts.map +0 -1
- package/lib/frameworks/cors/index.js +0 -2
- package/lib/frameworks/cors/index.js.map +0 -1
- package/lib/frameworks/deepkit/http-deepkit.framework.d.ts.map +0 -1
- package/lib/frameworks/deepkit/http-deepkit.framework.js +0 -2
- package/lib/frameworks/deepkit/http-deepkit.framework.js.map +0 -1
- package/lib/frameworks/deepkit/index.d.ts.map +0 -1
- package/lib/frameworks/deepkit/index.js +0 -2
- package/lib/frameworks/deepkit/index.js.map +0 -1
- package/lib/frameworks/express/express.framework.d.ts.map +0 -1
- package/lib/frameworks/express/express.framework.js +0 -2
- package/lib/frameworks/express/express.framework.js.map +0 -1
- package/lib/frameworks/express/index.d.ts.map +0 -1
- package/lib/frameworks/express/index.js +0 -2
- package/lib/frameworks/express/index.js.map +0 -1
- package/lib/frameworks/fastify/fastify.framework.d.ts.map +0 -1
- package/lib/frameworks/fastify/fastify.framework.js +0 -2
- package/lib/frameworks/fastify/fastify.framework.js.map +0 -1
- package/lib/frameworks/fastify/helpers/no-op-content-parser.d.ts +0 -14
- package/lib/frameworks/fastify/helpers/no-op-content-parser.d.ts.map +0 -1
- package/lib/frameworks/fastify/helpers/no-op-content-parser.js +0 -2
- package/lib/frameworks/fastify/helpers/no-op-content-parser.js.map +0 -1
- package/lib/frameworks/fastify/index.d.ts.map +0 -1
- package/lib/frameworks/fastify/index.js +0 -2
- package/lib/frameworks/fastify/index.js.map +0 -1
- package/lib/frameworks/hapi/hapi.framework.d.ts.map +0 -1
- package/lib/frameworks/hapi/hapi.framework.js +0 -2
- package/lib/frameworks/hapi/hapi.framework.js.map +0 -1
- package/lib/frameworks/hapi/index.d.ts.map +0 -1
- package/lib/frameworks/hapi/index.js +0 -2
- package/lib/frameworks/hapi/index.js.map +0 -1
- package/lib/frameworks/koa/index.d.ts.map +0 -1
- package/lib/frameworks/koa/index.js +0 -2
- package/lib/frameworks/koa/index.js.map +0 -1
- package/lib/frameworks/koa/koa.framework.d.ts.map +0 -1
- package/lib/frameworks/koa/koa.framework.js +0 -2
- package/lib/frameworks/koa/koa.framework.js.map +0 -1
- package/lib/frameworks/lazy/index.d.ts.map +0 -1
- package/lib/frameworks/lazy/index.js +0 -2
- package/lib/frameworks/lazy/index.js.map +0 -1
- package/lib/frameworks/lazy/lazy.framework.d.ts.map +0 -1
- package/lib/frameworks/lazy/lazy.framework.js +0 -2
- package/lib/frameworks/lazy/lazy.framework.js.map +0 -1
- package/lib/frameworks/trpc/index.d.ts.map +0 -1
- package/lib/frameworks/trpc/index.js +0 -2
- package/lib/frameworks/trpc/index.js.map +0 -1
- package/lib/frameworks/trpc/trpc.framework.d.ts.map +0 -1
- package/lib/frameworks/trpc/trpc.framework.js +0 -2
- package/lib/frameworks/trpc/trpc.framework.js.map +0 -1
- package/lib/handlers/aws/aws-stream.handler.d.ts.map +0 -1
- package/lib/handlers/aws/aws-stream.handler.js +0 -2
- package/lib/handlers/aws/aws-stream.handler.js.map +0 -1
- package/lib/handlers/aws/index.d.ts.map +0 -1
- package/lib/handlers/aws/index.js +0 -2
- package/lib/handlers/aws/index.js.map +0 -1
- package/lib/handlers/azure/azure.handler.d.ts.map +0 -1
- package/lib/handlers/azure/azure.handler.js +0 -2
- package/lib/handlers/azure/azure.handler.js.map +0 -1
- package/lib/handlers/azure/index.d.ts.map +0 -1
- package/lib/handlers/azure/index.js +0 -2
- package/lib/handlers/azure/index.js.map +0 -1
- package/lib/handlers/base/index.d.ts +0 -2
- package/lib/handlers/base/index.d.ts.map +0 -1
- package/lib/handlers/base/index.js +0 -2
- package/lib/handlers/base/index.js.map +0 -1
- package/lib/handlers/base/raw-request.d.ts.map +0 -1
- package/lib/handlers/base/raw-request.js +0 -2
- package/lib/handlers/base/raw-request.js.map +0 -1
- package/lib/handlers/default/default.handler.d.ts.map +0 -1
- package/lib/handlers/default/default.handler.js +0 -2
- package/lib/handlers/default/default.handler.js.map +0 -1
- package/lib/handlers/default/index.d.ts.map +0 -1
- package/lib/handlers/default/index.js +0 -2
- package/lib/handlers/default/index.js.map +0 -1
- package/lib/handlers/digital-ocean/digital-ocean.handler.d.ts +0 -17
- package/lib/handlers/digital-ocean/digital-ocean.handler.d.ts.map +0 -1
- package/lib/handlers/digital-ocean/digital-ocean.handler.js +0 -2
- package/lib/handlers/digital-ocean/digital-ocean.handler.js.map +0 -1
- package/lib/handlers/digital-ocean/index.d.ts.map +0 -1
- package/lib/handlers/digital-ocean/index.js +0 -2
- package/lib/handlers/digital-ocean/index.js.map +0 -1
- package/lib/handlers/firebase/http-firebase-v2.handler.d.ts +0 -27
- package/lib/handlers/firebase/http-firebase-v2.handler.d.ts.map +0 -1
- package/lib/handlers/firebase/http-firebase-v2.handler.js +0 -2
- package/lib/handlers/firebase/http-firebase-v2.handler.js.map +0 -1
- package/lib/handlers/firebase/http-firebase.handler.d.ts +0 -19
- package/lib/handlers/firebase/http-firebase.handler.d.ts.map +0 -1
- package/lib/handlers/firebase/http-firebase.handler.js +0 -2
- package/lib/handlers/firebase/http-firebase.handler.js.map +0 -1
- package/lib/handlers/firebase/index.d.ts.map +0 -1
- package/lib/handlers/firebase/index.js +0 -2
- package/lib/handlers/firebase/index.js.map +0 -1
- package/lib/handlers/gcp/gcp.handler.d.ts.map +0 -1
- package/lib/handlers/gcp/gcp.handler.js +0 -2
- package/lib/handlers/gcp/gcp.handler.js.map +0 -1
- package/lib/handlers/gcp/index.d.ts.map +0 -1
- package/lib/handlers/gcp/index.js +0 -2
- package/lib/handlers/gcp/index.js.map +0 -1
- package/lib/handlers/huawei/http-huawei.handler.d.ts.map +0 -1
- package/lib/handlers/huawei/http-huawei.handler.js +0 -2
- package/lib/handlers/huawei/http-huawei.handler.js.map +0 -1
- package/lib/handlers/huawei/index.d.ts.map +0 -1
- package/lib/handlers/huawei/index.js +0 -2
- package/lib/handlers/huawei/index.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.doc.js +0 -2
- package/lib/index.doc.js.map +0 -1
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/lib/network/index.d.ts +0 -5
- package/lib/network/index.d.ts.map +0 -1
- package/lib/network/index.js +0 -2
- package/lib/network/index.js.map +0 -1
- package/lib/network/request.d.ts.map +0 -1
- package/lib/network/request.js +0 -2
- package/lib/network/request.js.map +0 -1
- package/lib/network/response-stream.d.ts +0 -41
- package/lib/network/response-stream.d.ts.map +0 -1
- package/lib/network/response-stream.js +0 -7
- package/lib/network/response-stream.js.map +0 -1
- package/lib/network/response.d.ts +0 -48
- package/lib/network/response.d.ts.map +0 -1
- package/lib/network/response.js +0 -4
- package/lib/network/response.js.map +0 -1
- package/lib/network/utils.d.ts +0 -9
- package/lib/network/utils.d.ts.map +0 -1
- package/lib/network/utils.js +0 -2
- package/lib/network/utils.js.map +0 -1
- package/lib/resolvers/aws-context/aws-context.resolver.d.ts.map +0 -1
- package/lib/resolvers/aws-context/aws-context.resolver.js +0 -2
- package/lib/resolvers/aws-context/aws-context.resolver.js.map +0 -1
- package/lib/resolvers/aws-context/index.d.ts.map +0 -1
- package/lib/resolvers/aws-context/index.js +0 -2
- package/lib/resolvers/aws-context/index.js.map +0 -1
- package/lib/resolvers/callback/callback.resolver.d.ts.map +0 -1
- package/lib/resolvers/callback/callback.resolver.js +0 -2
- package/lib/resolvers/callback/callback.resolver.js.map +0 -1
- package/lib/resolvers/callback/index.d.ts.map +0 -1
- package/lib/resolvers/callback/index.js +0 -2
- package/lib/resolvers/callback/index.js.map +0 -1
- package/lib/resolvers/dummy/dummy.resolver.d.ts +0 -14
- package/lib/resolvers/dummy/dummy.resolver.d.ts.map +0 -1
- package/lib/resolvers/dummy/dummy.resolver.js +0 -2
- package/lib/resolvers/dummy/dummy.resolver.js.map +0 -1
- package/lib/resolvers/dummy/index.d.ts.map +0 -1
- package/lib/resolvers/dummy/index.js +0 -2
- package/lib/resolvers/dummy/index.js.map +0 -1
- package/lib/resolvers/promise/index.d.ts.map +0 -1
- package/lib/resolvers/promise/index.js +0 -2
- package/lib/resolvers/promise/index.js.map +0 -1
- package/lib/resolvers/promise/promise.resolver.d.ts +0 -14
- package/lib/resolvers/promise/promise.resolver.d.ts.map +0 -1
- package/lib/resolvers/promise/promise.resolver.js +0 -2
- package/lib/resolvers/promise/promise.resolver.js.map +0 -1
- package/lib/serverless-adapter.d.ts +0 -119
- package/lib/serverless-adapter.d.ts.map +0 -1
- package/lib/serverless-adapter.js +0 -2
- package/lib/serverless-adapter.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/handlers/default/default.handler.ts"],"sourcesContent":["//#region Imports\n\nimport util from 'node:util';\nimport type { BinarySettings, SingleValueHeaders } from '../../@types';\nimport type {\n AdapterContract,\n AdapterRequest,\n FrameworkContract,\n ResolverContract,\n ServerlessHandler,\n} from '../../contracts';\nimport {\n BaseHandler,\n type ILogger,\n isBinary,\n setCurrentInvoke,\n waitForStreamComplete,\n} from '../../core';\nimport { ServerlessResponse } from '../../network';\n\n//#endregion\n\n/**\n * The class that implements a default serverless handler consisting of a function with event, context and callback parameters respectively\n *\n * @breadcrumb Handlers / DefaultHandler\n * @public\n */\nexport class DefaultHandler<\n TApp,\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn,\n> extends BaseHandler<TApp, TEvent, TContext, TCallback, TResponse, TReturn> {\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getHandler(\n app: TApp,\n framework: FrameworkContract<TApp>,\n adapters: AdapterContract<TEvent, TContext, TResponse>[],\n resolverFactory: ResolverContract<\n TEvent,\n TContext,\n TCallback,\n TResponse,\n TReturn\n >,\n binarySettings: BinarySettings,\n respondWithErrors: boolean,\n log: ILogger,\n ): ServerlessHandler<TReturn> {\n return (event: TEvent, context: TContext, callback?: TCallback) => {\n this.onReceiveRequest(\n log,\n event,\n context,\n binarySettings,\n respondWithErrors,\n );\n\n const adapter = this.getAdapterByEventAndContext(\n event,\n context,\n adapters,\n log,\n );\n\n this.onResolveAdapter(log, adapter);\n\n setCurrentInvoke({ event, context });\n\n const resolver = resolverFactory.createResolver({\n event,\n context,\n callback,\n log,\n respondWithErrors,\n adapter,\n });\n\n return resolver.run(() =>\n this.forwardRequestToFramework(\n app,\n framework,\n event,\n context,\n adapter,\n binarySettings,\n log,\n ),\n );\n };\n }\n\n //#endregion\n\n //#region Hooks\n\n /**\n * The hook executed on receive a request, before the request is being processed\n *\n * @param log - The instance of logger\n * @param event - The event sent by serverless\n * @param context - The context sent by serverless\n * @param binarySettings - The binary settings\n * @param respondWithErrors - Indicates whether the error stack should be included in the response or not\n */\n protected onReceiveRequest(\n log: ILogger,\n event: TEvent,\n context: TContext,\n binarySettings: BinarySettings,\n respondWithErrors: boolean,\n ): void {\n log.debug('SERVERLESS_ADAPTER:PROXY', () => ({\n event: util.inspect(event, { depth: null }),\n context: util.inspect(context, { depth: null }),\n binarySettings,\n respondWithErrors,\n }));\n }\n\n /**\n * The hook executed after resolve the adapter that will be used to handle the request and response\n *\n * @param log - The instance of logger\n * @param adapter - The adapter resolved\n */\n protected onResolveAdapter(\n log: ILogger,\n adapter: AdapterContract<TEvent, TContext, TResponse>,\n ): void {\n log.debug(\n 'SERVERLESS_ADAPTER:RESOLVED_ADAPTER_NAME: ',\n adapter.getAdapterName(),\n );\n }\n\n /**\n * The hook executed after resolves the request values that will be sent to the framework\n *\n * @param log - The instance of logger\n * @param requestValues - The request values returned by the adapter\n */\n protected onResolveRequestValues(\n log: ILogger,\n requestValues: AdapterRequest,\n ): void {\n log.debug(\n 'SERVERLESS_ADAPTER:FORWARD_REQUEST_TO_FRAMEWORK:REQUEST_VALUES',\n () => ({\n requestValues: {\n ...requestValues,\n body: requestValues.body?.toString(),\n },\n }),\n );\n }\n\n /**\n * The hook executed after handling the response sent by the framework\n *\n * @param log - The instance of logger\n * @param response - The response sent by the framework\n */\n protected onResolveForwardedResponseToFramework(\n log: ILogger,\n response: ServerlessResponse,\n ): void {\n log.debug(\n 'SERVERLESS_ADAPTER:FORWARD_REQUEST_TO_FRAMEWORK:RESPONSE',\n () => ({\n response,\n }),\n );\n }\n\n /**\n * The hook executed before sending response to the serverless\n *\n * @param log - The instance of logger\n * @param statusCode - The status code of the response\n * @param body - The body of the response\n * @param headers - The headers of the response\n * @param isBase64Encoded - Indicates whether the response was encoded as binary or not\n */\n protected onForwardResponse(\n log: ILogger,\n statusCode: number,\n body: string,\n headers: SingleValueHeaders,\n isBase64Encoded: boolean,\n ) {\n log.debug(\n 'SERVERLESS_ADAPTER:FORWARD_RESPONSE:EVENT_SOURCE_RESPONSE_PARAMS',\n () => ({\n statusCode,\n body,\n headers,\n isBase64Encoded,\n }),\n );\n }\n\n /**\n * The hook executed before sending response to the serverless with response from adapter\n *\n * @param log - The instance of logger\n * @param successResponse - The success response resolved by the adapter\n * @param body - The body of the response sent by the framework\n */\n protected onForwardResponseAdapterResponse(\n log: ILogger,\n successResponse: TResponse,\n body: string,\n ) {\n log.debug(\n 'SERVERLESS_ADAPTER:FORWARD_RESPONSE:EVENT_SOURCE_RESPONSE',\n () => ({\n successResponse: util.inspect(successResponse, { depth: null }),\n body,\n }),\n );\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * The function to forward the event to the framework\n *\n * @param app - The instance of the app (express, hapi, etc...)\n * @param framework - The framework that will process requests\n * @param event - The event sent by serverless\n * @param context - The context sent by serverless\n * @param adapter - The adapter resolved to this event\n * @param log - The instance of logger\n * @param binarySettings - The binary settings\n */\n protected async forwardRequestToFramework(\n app: TApp,\n framework: FrameworkContract<TApp>,\n event: TEvent,\n context: TContext,\n adapter: AdapterContract<TEvent, TContext, TResponse>,\n binarySettings: BinarySettings,\n log: ILogger,\n ): Promise<TResponse> {\n const requestValues = adapter.getRequest(event, context, log);\n\n this.onResolveRequestValues(log, requestValues);\n\n const [request, response] =\n this.getServerlessRequestResponseFromAdapterRequest(requestValues);\n\n framework.sendRequest(app, request, response);\n\n await waitForStreamComplete(response);\n\n this.onResolveForwardedResponseToFramework(log, response);\n\n return this.forwardResponse(event, response, adapter, binarySettings, log);\n }\n\n /**\n * The function to forward the response back to the serverless\n *\n * @param event - The event sent by serverless\n * @param response - The response of the framework\n * @param adapter - The adapter resolved to this event\n * @param binarySettings - The binary settings\n * @param log - The instance of logger\n */\n protected forwardResponse(\n event: TEvent,\n response: ServerlessResponse,\n adapter: AdapterContract<TEvent, TContext, TResponse>,\n binarySettings: BinarySettings,\n log: ILogger,\n ): TResponse {\n const statusCode = response.statusCode;\n const headers = ServerlessResponse.headers(response);\n const isBase64Encoded = isBinary(headers, binarySettings);\n const encoding = isBase64Encoded ? 'base64' : 'utf8';\n const body = ServerlessResponse.body(response).toString(encoding);\n const logBody = isBase64Encoded ? '[BASE64_ENCODED]' : body;\n\n this.onForwardResponse(log, statusCode, logBody, headers, isBase64Encoded);\n\n const successResponse = adapter.getResponse({\n event,\n statusCode,\n body,\n headers,\n isBase64Encoded,\n response,\n log,\n });\n\n this.onForwardResponseAdapterResponse(log, successResponse, logBody);\n\n return successResponse;\n }\n\n //#endregion\n}\n"],"mappings":"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","names":["util","DefaultHandler","BaseHandler","__name","app","framework","adapters","resolverFactory","binarySettings","respondWithErrors","log","event","context","callback","adapter","setCurrentInvoke","util","requestValues","response","statusCode","body","headers","isBase64Encoded","successResponse","request","waitForStreamComplete","ServerlessResponse","isBinary","encoding","logBody"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{g as d,h as p,y as c}from"./chunk-HU5XBQCP.mjs";import{a as n}from"./chunk-OYOJMOFP.mjs";var a=class{static{n(this,"RawRequest")}onRequestCallback(e,t){return(r,s)=>{let o=this.getRequestFromExpressRequest(r);return t.sendRequest(e,o,s)}}getRequestFromExpressRequest(e){let t=e,r=p(e.headers,",",!0),s=r["x-forwarded-for"],o;if(t.body&&typeof t.body=="object"){let m=JSON.stringify(t.body),[f,u]=d(m,!1);o=f,r["content-length"]=String(u)}return new c({method:e.method,url:e.url,body:o,headers:r,remoteAddress:s})}};export{a};
|
|
2
|
+
//# sourceMappingURL=chunk-Y6H576RS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/handlers/base/raw-request.ts"],"sourcesContent":["//#region Imports\n\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport type { FrameworkContract } from '../../contracts';\nimport { ServerlessRequest } from '../../network';\nimport { getEventBodyAsBuffer, getFlattenedHeadersMap } from '../../core';\n\n//#endregion\n\n/**\n * The class that expose some methods to be used to get raw request from Express HTTP Request\n *\n * @breadcrumb Handlers / Base / RawRequest\n * @public\n */\nexport abstract class RawRequest<TApp> {\n //#region Protected Methods\n\n /**\n * The callback to when receive some request from external source\n *\n * @param app - The instance of the app\n * @param framework - The framework for the app\n */\n protected onRequestCallback(\n app: TApp,\n framework: FrameworkContract<TApp>,\n ): (req: IncomingMessage, res: ServerResponse) => void | Promise<void> {\n return (request: IncomingMessage, response: ServerResponse) => {\n const customRequest = this.getRequestFromExpressRequest(request);\n\n return framework.sendRequest(app, customRequest, response);\n };\n }\n\n /**\n * Not sure why they think using Express instance with prebuilt middlewares was a good idea, but Firebase/GCP\n * decides to use `Express` and `body-parser` by default, so you don't get a raw request, instead, you get a modified version by\n * Express and also with the body parsed by `body-parser`.\n * If you use NestJS or Express it's awesome, but for the rest of the frameworks it's terrible!\n * That's why I have this method, just to try and create a raw request to be used and passed to the frameworks so they can handle the request\n * as if they received the request from the native http module.\n *\n * @param request - The Express request\n */\n protected getRequestFromExpressRequest(\n request: IncomingMessage,\n ): ServerlessRequest {\n const expressRequestParsed = request as unknown as {\n body: object | Buffer;\n };\n\n const headers = getFlattenedHeadersMap(request.headers, ',', true);\n const remoteAddress = headers['x-forwarded-for'];\n\n let body: Buffer | undefined;\n\n if (\n expressRequestParsed.body &&\n typeof expressRequestParsed.body === 'object'\n ) {\n const jsonContent = JSON.stringify(expressRequestParsed.body);\n\n const [bufferBody, contentLength] = getEventBodyAsBuffer(\n jsonContent,\n false,\n );\n\n body = bufferBody;\n headers['content-length'] = String(contentLength);\n }\n\n return new ServerlessRequest({\n method: request.method!,\n url: request.url!,\n body,\n headers,\n remoteAddress,\n });\n }\n\n //#endregion\n}\n"],"mappings":"gGAeO,IAAeA,EAAf,KAAgC,CAfvC,MAeuC,CAAAC,EAAA,mBAS3B,kBACRC,EACAC,EACqE,CACrE,MAAO,CAACC,EAA0BC,IAA6B,CAC7D,IAAMC,EAAgB,KAAK,6BAA6BF,CAAO,EAE/D,OAAOD,EAAU,YAAYD,EAAKI,EAAeD,CAAQ,CAC3D,CACF,CAYU,6BACRD,EACmB,CACnB,IAAMG,EAAuBH,EAIvBI,EAAUC,EAAuBL,EAAQ,QAAS,IAAK,EAAI,EAC3DM,EAAgBF,EAAQ,iBAAiB,EAE3CG,EAEJ,GACEJ,EAAqB,MACrB,OAAOA,EAAqB,MAAS,SACrC,CACA,IAAMK,EAAc,KAAK,UAAUL,EAAqB,IAAI,EAEtD,CAACM,EAAYC,CAAa,EAAIC,EAClCH,EACA,EACF,EAEAD,EAAOE,EACPL,EAAQ,gBAAgB,EAAI,OAAOM,CAAa,CAClD,CAEA,OAAO,IAAIE,EAAkB,CAC3B,OAAQZ,EAAQ,OAChB,IAAKA,EAAQ,IACb,KAAAO,EACA,QAAAH,EACA,cAAAE,CACF,CAAC,CACH,CAGF","names":["RawRequest","__name","app","framework","request","response","customRequest","expressRequestParsed","headers","getFlattenedHeadersMap","remoteAddress","body","jsonContent","bufferBody","contentLength","getEventBodyAsBuffer","ServerlessRequest"]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @defaultValue ['gzip', 'deflate', 'br']
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
declare const DEFAULT_BINARY_ENCODINGS: string[];
|
|
9
9
|
/**
|
|
10
10
|
* Default content types that are treated as binary, they are compared with the `Content-Type` header.
|
|
11
11
|
*
|
|
@@ -13,19 +13,20 @@ export declare const DEFAULT_BINARY_ENCODINGS: string[];
|
|
|
13
13
|
* @defaultValue ['image/png', 'image/jpeg', 'image/jpg', 'image/avif', 'image/bmp', 'image/x-png', 'image/gif', 'image/webp', 'video/mp4', 'application/pdf']
|
|
14
14
|
* @public
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
declare const DEFAULT_BINARY_CONTENT_TYPES: string[];
|
|
17
17
|
/**
|
|
18
18
|
* Type alias for empty response and can be used on some adapters when the adapter does not need to return a response.
|
|
19
19
|
*
|
|
20
20
|
* @breadcrumb Core / Constants
|
|
21
21
|
* @public
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
type IEmptyResponse = {};
|
|
24
24
|
/**
|
|
25
25
|
* Constant for empty response and can be used on some adapters when the adapter does not need to return a response.
|
|
26
26
|
*
|
|
27
27
|
* @breadcrumb Core / Constants
|
|
28
28
|
* @public
|
|
29
29
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
declare const EmptyResponse: IEmptyResponse;
|
|
31
|
+
|
|
32
|
+
export { DEFAULT_BINARY_ENCODINGS as D, EmptyResponse as E, type IEmptyResponse as I, DEFAULT_BINARY_CONTENT_TYPES as a };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default encodings that are treated as binary, they are compared with the `Content-Encoding` header.
|
|
3
|
+
*
|
|
4
|
+
* @breadcrumb Core / Constants
|
|
5
|
+
* @defaultValue ['gzip', 'deflate', 'br']
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
declare const DEFAULT_BINARY_ENCODINGS: string[];
|
|
9
|
+
/**
|
|
10
|
+
* Default content types that are treated as binary, they are compared with the `Content-Type` header.
|
|
11
|
+
*
|
|
12
|
+
* @breadcrumb Core / Constants
|
|
13
|
+
* @defaultValue ['image/png', 'image/jpeg', 'image/jpg', 'image/avif', 'image/bmp', 'image/x-png', 'image/gif', 'image/webp', 'video/mp4', 'application/pdf']
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
declare const DEFAULT_BINARY_CONTENT_TYPES: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Type alias for empty response and can be used on some adapters when the adapter does not need to return a response.
|
|
19
|
+
*
|
|
20
|
+
* @breadcrumb Core / Constants
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
type IEmptyResponse = {};
|
|
24
|
+
/**
|
|
25
|
+
* Constant for empty response and can be used on some adapters when the adapter does not need to return a response.
|
|
26
|
+
*
|
|
27
|
+
* @breadcrumb Core / Constants
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
declare const EmptyResponse: IEmptyResponse;
|
|
31
|
+
|
|
32
|
+
export { DEFAULT_BINARY_ENCODINGS as D, EmptyResponse as E, type IEmptyResponse as I, DEFAULT_BINARY_CONTENT_TYPES as a };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
|
|
3
3
|
/**
|
|
4
4
|
* The interface that represents a contract between the framework and the framework implementation
|
|
5
5
|
*
|
|
6
6
|
* @breadcrumb Contracts
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
interface FrameworkContract<TApp> {
|
|
10
10
|
/**
|
|
11
11
|
* Send the request and response objects to the framework
|
|
12
12
|
*
|
|
@@ -16,4 +16,5 @@ export interface FrameworkContract<TApp> {
|
|
|
16
16
|
*/
|
|
17
17
|
sendRequest(app: TApp, request: IncomingMessage, response: ServerResponse): void;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
export type { FrameworkContract as F };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The interface that represents a contract between the framework and the framework implementation
|
|
5
|
+
*
|
|
6
|
+
* @breadcrumb Contracts
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
interface FrameworkContract<TApp> {
|
|
10
|
+
/**
|
|
11
|
+
* Send the request and response objects to the framework
|
|
12
|
+
*
|
|
13
|
+
* @param app - The instance of your app (Express, Fastify, Koa, etc...)
|
|
14
|
+
* @param request - The request object that will be forward to your app
|
|
15
|
+
* @param response - The response object that will be forward to your app to output the response
|
|
16
|
+
*/
|
|
17
|
+
sendRequest(app: TApp, request: IncomingMessage, response: ServerResponse): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type { FrameworkContract as F };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var g=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var n=(t,e)=>g(t,"name",{value:e,configurable:!0});var w=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},k=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!E.call(t,s)&&s!==r&&g(t,s,{get:()=>e[s],enumerable:!(o=b(e,s))||o.enumerable});return t};var B=t=>k(g({},"__esModule",{value:!0}),t);var O={};w(O,{ApolloServerFramework:()=>h});module.exports=B(O);var R=require("@apollo/server");var H=require("http");var a=n(()=>{},"NO_OP");var X=Symbol("InternalLogger");function x(t,e){return t===void 0?e:t}n(x,"getDefaultIfUndefined");var ne=require("stream");var T=require("http");function m(t){if(Buffer.isBuffer(t))return t.toString("utf8");if(typeof t=="string")return t;if(t instanceof Uint8Array)return new TextDecoder().decode(t);throw new Error(`response.write() of unexpected type: ${typeof t}`)}n(m,"getString");var S=`\r
|
|
2
|
+
\r
|
|
3
|
+
`,c=Symbol("Response body"),u=Symbol("Response headers");function v(t,e){if(Buffer.isBuffer(e)||typeof e=="string"||e instanceof Uint8Array)t[c].push(Buffer.from(e));else throw new Error(`response.write() of unexpected type: ${typeof e}`)}n(v,"addData");var y=class t extends T.ServerResponse{static{n(this,"ServerlessResponse")}constructor({method:e}){super({method:e}),this[c]=[],this[u]={},this.useChunkedEncodingByDefault=!1,this.chunkedEncoding=!1,this._header="";let r={_writableState:{},writable:!0,on:a,removeListener:a,destroy:a,cork:a,uncork:a,write:(o,s,l)=>{if(typeof s=="function"&&(l=s,s=null),this._header===""||this._wroteHeader)v(this,o);else{let p=m(o),f=p.indexOf(S);if(f!==-1){let i=p.slice(f+S.length);i&&v(this,i),this._wroteHeader=!0}}typeof l=="function"&&l()}};this.assignSocket(r)}_header;_headers;_wroteHeader;[c];[u];get headers(){return this[u]}static from(e){let r=new t({method:e.method});return r.statusCode=e.statusCode||0,r[u]=e.headers,r[c]=e.body?[Buffer.from(e.body)]:[],r.end(),r}static body(e){return Buffer.concat(e[c])}static headers(e){let r=e.getHeaders();return Object.assign(r,e[u])}setHeader(e,r){this._wroteHeader?this[u][e]=r:super.setHeader(e,r)}writeHead(e,r,o){let s=typeof r=="string"?o:r,l=Array.isArray(s)?s:[s||{}];for(let p of l)for(let f in p)if(this.setHeader(f,p[f]),!this._wroteHeader)break;return this.callNativeWriteHead(e,r,o)}callNativeWriteHead(e,r,o){return super.writeHead(e,r,o)}};var L=require("http");var h=class{constructor(e){this.options=e}static{n(this,"ApolloServerFramework")}sendRequest(e,r,o){let s=new R.HeaderMap;for(let[i,d]of Object.entries(r.headers))d!==void 0&&s.set(i,Array.isArray(d)?d.join(", "):d.toString());let l=n(i=>Promise.resolve(i),"defaultContext"),p=n(()=>x(this.options?.context,l)({request:r,response:o}),"context"),f=r.url?.startsWith("http")?new URL(r.url).search??"":r.url?.split("?")[1]||"";e.executeHTTPGraphQLRequest({httpGraphQLRequest:{method:r.method.toUpperCase(),headers:s,body:r.body,search:f},context:p}).then(async i=>{for(let[d,A]of i.headers)o.setHeader(d,A);if(o.statusCode=i.status||200,i.body.kind==="complete"){o.end(i.body.string);return}for await(let d of i.body.asyncIterator)o.write(d),typeof o.flush=="function"&&o.flush();o.end()})}};0&&(module.exports={ApolloServerFramework});
|
|
4
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/frameworks/apollo-server/index.ts","../../../src/frameworks/apollo-server/apollo-server.framework.ts","../../../src/network/request.ts","../../../src/core/no-op.ts","../../../src/core/logger.ts","../../../src/core/optional.ts","../../../src/core/stream.ts","../../../src/network/response.ts","../../../src/network/utils.ts","../../../src/network/response-stream.ts"],"sourcesContent":["export * from './apollo-server.framework';\n","//#region\n\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport { type ApolloServer, type BaseContext, HeaderMap } from '@apollo/server';\nimport type { FrameworkContract } from '../../contracts';\nimport { ServerlessRequest } from '../../network';\nimport { getDefaultIfUndefined } from '../../core';\n\n//#endregion\n\n/**\n * The default context of Apollo Server when you integrate and don't pass any context.\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport interface DefaultServerlessApolloServerContext extends BaseContext {\n /**\n * The request reference\n */\n request: IncomingMessage;\n /**\n * The response reference\n */\n response: ServerResponse;\n}\n\n/**\n * The arguments used to create a Context inside {@link ApolloServerOptions}\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport type ApolloServerContextArguments = {\n /**\n * The request reference\n */\n request: IncomingMessage;\n /**\n * The response reference\n */\n response: ServerResponse;\n};\n\n/**\n * The options to customize {@link ApolloServerFramework}\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport interface ApolloServerOptions<TContext extends BaseContext> {\n /**\n * Define a function to create the context of Apollo Server\n *\n * @param options - Default options passed by library\n */\n context?: (options: ApolloServerContextArguments) => Promise<TContext>;\n}\n\n/**\n * The framework that forwards requests to Apollo Server\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport class ApolloServerFramework<TContext extends BaseContext>\n implements FrameworkContract<ApolloServer<TContext>>\n{\n //#region Constructor\n\n /**\n * Construtor padrão\n */\n constructor(protected readonly options?: ApolloServerOptions<TContext>) {}\n\n //#endregion\n\n /**\n * {@inheritDoc}\n */\n public sendRequest(\n app: ApolloServer<TContext>,\n request: ServerlessRequest,\n response: ServerResponse,\n ): void {\n const headers = new HeaderMap();\n\n for (const [key, value] of Object.entries(request.headers)) {\n if (value === undefined) continue;\n\n headers.set(\n key,\n Array.isArray(value) ? value.join(', ') : value.toString(),\n );\n }\n\n const defaultContext: ApolloServerOptions<any>['context'] = context =>\n Promise.resolve(context);\n\n const context = () =>\n getDefaultIfUndefined(\n this.options?.context,\n defaultContext,\n )({ request, response });\n\n const search = request.url?.startsWith('http')\n ? new URL(request.url).search ?? ''\n : request.url?.split('?')[1] || '';\n\n // we don't need to handle catch because of https://www.apollographql.com/docs/apollo-server/integrations/building-integrations/#handle-errors\n app\n .executeHTTPGraphQLRequest({\n httpGraphQLRequest: {\n method: request.method!.toUpperCase(),\n headers,\n body: request.body,\n search,\n },\n context,\n })\n .then(async httpGraphQLResponse => {\n // this section was copy and pasted from https://github.com/apollographql/apollo-server/blob/main/packages/server/src/express4/index.ts#L95\n\n for (const [key, value] of httpGraphQLResponse.headers)\n response.setHeader(key, value);\n\n response.statusCode = httpGraphQLResponse.status || 200;\n\n if (httpGraphQLResponse.body.kind === 'complete') {\n response.end(httpGraphQLResponse.body.string);\n return;\n }\n\n for await (const chunk of httpGraphQLResponse.body.asyncIterator) {\n response.write(chunk);\n // Express/Node doesn't define a way of saying \"it's time to send this\n // data over the wire\"... but the popular `compression` middleware\n // (which implements `accept-encoding: gzip` and friends) does, by\n // monkey-patching a `flush` method onto the response. So we call it\n // if it's there.\n if (typeof (response as any).flush === 'function')\n (response as any).flush();\n }\n\n response.end();\n });\n }\n}\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\nimport { IncomingMessage } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport type { SingleValueHeaders } from '../@types';\nimport { NO_OP } from '../core';\n\nconst HTTPS_PORT = 443;\n\n/**\n * The properties to create a {@link ServerlessRequest}\n *\n * @breadcrumb Network / ServerlessRequest\n * @public\n */\nexport interface ServerlessRequestProps {\n /**\n * The HTTP Method of the request\n */\n method: string;\n\n /**\n * The URL requested\n */\n url: string;\n\n /**\n * The headers from the event source\n */\n headers: SingleValueHeaders;\n\n /**\n * The body from the event source\n */\n body?: Buffer | Uint8Array;\n\n /**\n * The IP Address from caller\n */\n remoteAddress?: string;\n}\n\n/**\n * The class that represents an {@link http#IncomingMessage} created by the library to represent an actual request to the framework.\n *\n * @breadcrumb Network / ServerlessRequest\n * @public\n */\nexport class ServerlessRequest extends IncomingMessage {\n constructor({\n method,\n url,\n headers,\n body,\n remoteAddress,\n }: ServerlessRequestProps) {\n super({\n encrypted: true,\n readable: false,\n remoteAddress,\n address: () => ({ port: HTTPS_PORT }) as AddressInfo,\n end: NO_OP,\n destroy: NO_OP,\n } as any);\n\n this.statusCode = 200;\n this.statusMessage = 'OK';\n this.complete = true;\n this.httpVersion = '1.1';\n this.httpVersionMajor = 1;\n this.httpVersionMinor = 1;\n this.method = method;\n this.headers = headers;\n this.body = body;\n this.url = url;\n this.ip = remoteAddress;\n\n this._read = () => {\n this.push(body);\n this.push(null);\n };\n }\n\n ip?: string;\n body?: Buffer | Uint8Array;\n}\n","/**\n * No operation function is used when we need to pass a function, but we don't want to specify any behavior.\n *\n * @breadcrumb Core\n * @public\n */\nexport const NO_OP: (...args: any[]) => any = () => void 0;\n","import { NO_OP } from './no-op';\n\n/**\n * The type representing the possible log levels to choose from.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LogLevels =\n | 'debug'\n | 'verbose'\n | 'info'\n | 'warn'\n | 'error'\n | 'none';\n\n/**\n * The options to customize {@link ILogger}\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LoggerOptions = {\n /**\n * Select the log level, {@link LogLevels | see more}.\n *\n * @defaultValue error\n */\n level: LogLevels;\n};\n\n/**\n * The log function used in any level.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LoggerFN = (message: any, ...additional: any[]) => void;\n\n/**\n * The interface representing the logger, you can provide a custom logger by implementing this interface.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type ILogger = Record<Exclude<LogLevels, 'none'>, LoggerFN>;\n\n/**\n * The symbol used to check against an ILogger instace to verify if that ILogger was created by this library\n *\n * @breadcrumb Core / Logger\n * @public\n */\nconst InternalLoggerSymbol = Symbol('InternalLogger');\n\nconst logLevels: Record<\n LogLevels,\n [level: LogLevels, consoleMethod: keyof Console][]\n> = {\n debug: [\n ['debug', 'debug'],\n ['verbose', 'debug'],\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n verbose: [\n ['verbose', 'debug'],\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n info: [\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n warn: [\n ['warn', 'warn'],\n ['error', 'error'],\n ],\n error: [['error', 'error']],\n none: [],\n};\n\nconst lazyPrint = (value: () => any | unknown) => {\n if (typeof value === 'function') return value();\n\n return value;\n};\n\nconst print =\n (fn: string) =>\n (message: any, ...additional: (() => any)[]) =>\n console[fn](message, ...additional.map(lazyPrint));\n\n/**\n * The method used to create a simple logger instance to use in this library.\n *\n * @remarks Behind the scenes, this simple logger sends the message to the `console` methods.\n *\n * @example\n * ```typescript\n * const logger = createDefaultLogger();\n *\n * logger.error('An error happens.');\n * // An error happens.\n * ```\n *\n * @param level - Select the level of the log\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport function createDefaultLogger(\n { level }: LoggerOptions = { level: 'error' },\n): ILogger {\n const levels = logLevels[level];\n\n if (!levels) throw new Error('Invalid log level');\n\n const logger = {\n [InternalLoggerSymbol]: true,\n error: NO_OP,\n debug: NO_OP,\n info: NO_OP,\n verbose: NO_OP,\n warn: NO_OP,\n } as ILogger;\n\n for (const [level, consoleMethod] of levels)\n logger[level] = print(consoleMethod);\n\n return logger;\n}\n\n/**\n * The method used to chck if logger was created by this library, or it was defined by the user.\n *\n * @param logger - The instance of the logger to check\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport function isInternalLogger(logger: ILogger): boolean {\n return !!logger[InternalLoggerSymbol];\n}\n","/**\n * Return the defaultValue whether the value is undefined, otherwise, return the value.\n *\n * @example\n * ```typescript\n * const value1 = getDefaultIfUndefined(undefined, true);\n * const value2 = getDefaultIfUndefined(false, true);\n *\n * console.log(value1);\n * // true\n * console.log(value2);\n * // false\n * ```\n *\n * @param value - The value to be checked\n * @param defaultValue - The default value when value is undefined\n *\n * @breadcrumb Core\n * @public\n */\nexport function getDefaultIfUndefined<T>(\n value: T | undefined,\n defaultValue: T,\n): T {\n if (value === undefined) return defaultValue;\n\n return value;\n}\n","//#region Imports\n\nimport { Readable, Writable } from 'node:stream';\n\n//#endregion\n\n/**\n * Check if stream already ended\n *\n * @param stream - The stream\n *\n * @breadcrumb Core / Stream\n * @public\n */\nexport function isStreamEnded(stream: Readable | Writable): boolean {\n if ('readableEnded' in stream && stream.readableEnded) return true;\n\n if ('writableEnded' in stream && stream.writableEnded) return true;\n\n return false;\n}\n\n/**\n * Wait asynchronous the stream to complete\n *\n * @param stream - The stream\n *\n * @breadcrumb Core / Stream\n * @public\n */\nexport function waitForStreamComplete<TStream extends Readable | Writable>(\n stream: TStream,\n): Promise<TStream> {\n if (isStreamEnded(stream)) return Promise.resolve(stream);\n\n return new Promise<TStream>((resolve, reject) => {\n // Reading the {@link https://github.com/nodejs/node/blob/v12.22.9/lib/events.js#L262 | emit source code},\n // it's almost impossible to complete being called twice because the emit function runs synchronously and removes the other listeners,\n // but I'll leave it at that because I didn't write that code, so I couldn't figure out what the author thought when he wrote this.\n let isComplete = false;\n\n function complete(err: any) {\n /* istanbul ignore next */\n if (isComplete) return;\n\n isComplete = true;\n\n stream.removeListener('error', complete);\n stream.removeListener('end', complete);\n stream.removeListener('finish', complete);\n\n if (err) reject(err);\n else resolve(stream);\n }\n\n stream.once('error', complete);\n stream.once('end', complete);\n stream.once('finish', complete);\n });\n}\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\nimport { IncomingMessage, ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport { NO_OP } from '../core';\nimport { getString } from './utils';\n\nconst headerEnd = '\\r\\n\\r\\n';\n\nconst BODY = Symbol('Response body');\nconst HEADERS = Symbol('Response headers');\n\nfunction addData(stream: ServerlessResponse, data: Uint8Array | string) {\n if (\n Buffer.isBuffer(data) ||\n typeof data === 'string' ||\n data instanceof Uint8Array\n )\n stream[BODY].push(Buffer.from(data));\n else throw new Error(`response.write() of unexpected type: ${typeof data}`);\n}\n\n/**\n * The properties to create a {@link ServerlessResponse}.\n *\n * @breadcrumb Network / ServerlessResponse\n * @public\n */\nexport interface ServerlessResponseProps {\n /**\n * The HTTP Method from request\n */\n method?: string;\n}\n\n/**\n * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.\n * Once it's happens, we use the properties from this response to built the response to the cloud.\n *\n * @breadcrumb Network / ServerlessResponse\n * @public\n */\nexport class ServerlessResponse extends ServerResponse {\n constructor({ method }: ServerlessResponseProps) {\n super({ method } as any);\n\n this[BODY] = [];\n this[HEADERS] = {};\n\n this.useChunkedEncodingByDefault = false;\n this.chunkedEncoding = false;\n this._header = '';\n\n const socket: Partial<Socket> & { _writableState: any } = {\n _writableState: {},\n writable: true,\n on: NO_OP,\n removeListener: NO_OP,\n destroy: NO_OP,\n cork: NO_OP,\n uncork: NO_OP,\n write: (\n data: Uint8Array | string,\n encoding?: string | null | (() => void),\n cb?: () => void,\n ): any => {\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (this._header === '' || this._wroteHeader) addData(this, data);\n else {\n const string = getString(data);\n const index = string.indexOf(headerEnd);\n\n if (index !== -1) {\n const remainder = string.slice(index + headerEnd.length);\n\n if (remainder) addData(this, remainder);\n\n this._wroteHeader = true;\n }\n }\n\n if (typeof cb === 'function') cb();\n },\n };\n\n this.assignSocket(socket as unknown as Socket);\n }\n\n _header: string;\n _headers?: Record<any, any>;\n _wroteHeader?: boolean;\n\n [BODY]: any[];\n [HEADERS]: Record<any, any>;\n\n get headers(): Record<any, any> {\n return this[HEADERS];\n }\n\n static from(res: IncomingMessage) {\n const response = new ServerlessResponse({ method: res.method });\n\n response.statusCode = res.statusCode || 0;\n response[HEADERS] = res.headers;\n response[BODY] = (res as any).body ? [Buffer.from((res as any).body)] : [];\n response.end();\n\n return response;\n }\n\n static body(res: ServerlessResponse): Buffer {\n return Buffer.concat(res[BODY]);\n }\n\n static headers(res: ServerlessResponse) {\n const headers = res.getHeaders();\n\n return Object.assign(headers, res[HEADERS]);\n }\n\n override setHeader(\n key: string,\n value: number | string | readonly string[],\n ): any {\n if (this._wroteHeader) this[HEADERS][key] = value;\n else super.setHeader(key, value);\n }\n\n override writeHead(\n statusCode: number,\n statusMessage?: string | any | any[],\n obj?: any | any[],\n ): any {\n const headersObjOrArray =\n typeof statusMessage === 'string' ? obj : statusMessage;\n\n const arrayHeaders = Array.isArray(headersObjOrArray)\n ? headersObjOrArray\n : [headersObjOrArray || {}];\n\n for (const headers of arrayHeaders) {\n for (const name in headers) {\n this.setHeader(name, headers[name]!);\n\n if (!this._wroteHeader) {\n // we only need to initiate super.headers once\n // writeHead will add the other headers itself\n break;\n }\n }\n }\n\n return this.callNativeWriteHead(statusCode, statusMessage, obj);\n }\n\n /**\n * I use ignore here because in nodejs 12.x, statusMessage can be string | OutgoingHttpHeaders\n * But in nodejs \\>=14.x, statusMessage can also be OutgoingHttpHeaders[]\n * I take care of these cases above, but here I can't handle it well, so I give up\n * nodejs 12.x ref: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/v12/http.d.ts#L229\n * nodejs 14.x ref: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/v14/http.d.ts#L263\n */\n protected callNativeWriteHead(\n statusCode: number,\n statusMessage?: string | any | any[],\n obj?: any | any[],\n ): this {\n return super.writeHead(statusCode, statusMessage, obj);\n }\n}\n","/**\n * Get the data from a buffer, string, or Uint8Array\n *\n * @breadcrumb Network\n * @param data - The data that was written inside the stream\n */\nexport function getString(data: Buffer | string | unknown) {\n if (Buffer.isBuffer(data)) return data.toString('utf8');\n else if (typeof data === 'string') return data;\n else if (data instanceof Uint8Array) return new TextDecoder().decode(data);\n else throw new Error(`response.write() of unexpected type: ${typeof data}`);\n}\n","import { ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport type { Writable } from 'node:stream';\nimport type { BothValueHeaders } from '../@types';\nimport { type ILogger, NO_OP, parseHeaders } from '../core';\nimport { getString } from './utils';\n\nconst endChunked = '0\\r\\n\\r\\n';\nconst headerEnd = '\\r\\n\\r\\n';\nconst endStatusSeparator = '\\r\\n';\n\n/**\n * The properties to create a {@link ServerlessStreamResponse}.\n *\n * @breadcrumb Network / ServerlessStreamResponse\n * @public\n */\nexport interface ServerlessStreamResponseProps {\n /**\n * The HTTP Method from request\n */\n method?: string;\n\n /**\n * The callback to receive the headers when they are written to the stream\n * You need to return a writable stream be able to continue writing the response\n *\n * @param statusCode - The status code of the response\n * @param headers - The headers of the response\n */\n onReceiveHeaders: (statusCode: number, headers: BothValueHeaders) => Writable;\n\n /**\n * Instance of the logger\n */\n log: ILogger;\n}\n\n/**\n * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.\n * This response is specially built to deal with transfer-encoding: chunked\n *\n * @breadcrumb Network / ServerlessStreamResponse\n * @public\n */\nexport class ServerlessStreamResponse extends ServerResponse {\n constructor({\n method,\n onReceiveHeaders,\n log,\n }: ServerlessStreamResponseProps) {\n super({ method } as any);\n\n this.useChunkedEncodingByDefault = true;\n this.chunkedEncoding = true;\n\n let internalWritable: Writable | null = null;\n let isFirstCall = true;\n // this ignore is used because I need to ignore these write calls:\n // https://github.com/nodejs/node/blob/main/lib/_http_outgoing.js#L934-L935\n // https://github.com/nodejs/node/blob/main/lib/_http_outgoing.js#L937\n let writesToIgnore = 0;\n\n const socket: Partial<Socket> & { _writableState: any } = {\n _writableState: {},\n writable: true,\n on: NO_OP,\n removeListener: NO_OP,\n destroy: NO_OP,\n cork: NO_OP,\n uncork: NO_OP,\n write: (\n data: Uint8Array | string,\n encoding?: string | null | (() => void),\n cb?: () => void,\n ): any => {\n // very unlikely, I don't even know how to reproduce this, but exist on types\n // istanbul ignore if\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n log.debug('SERVERLESS_ADAPTER:RESPONSE_STREAM:DATA', () => ({\n data: Buffer.isBuffer(data) ? data.toString('utf8') : data,\n encoding,\n }));\n\n if (!isFirstCall && internalWritable) {\n if (data === endChunked) {\n internalWritable.end(cb);\n\n return true;\n }\n\n if (writesToIgnore > 0) {\n writesToIgnore--;\n return true;\n }\n\n internalWritable.write(data, cb);\n writesToIgnore = 3;\n } else if (isFirstCall) {\n isFirstCall = false;\n\n const stringData = getString(data);\n const endStatusIndex = stringData.indexOf(endStatusSeparator);\n const status = +stringData.slice(0, endStatusIndex).split(' ')[1];\n\n const headerData = stringData.slice(\n endStatusIndex + 2,\n stringData.indexOf(headerEnd),\n );\n const headers = parseHeaders(headerData);\n log.debug('SERVERLESS_ADAPTER:RESPONSE_STREAM:FRAMEWORK_HEADERS', {\n headers,\n });\n\n writesToIgnore = 1;\n internalWritable = onReceiveHeaders(status, headers);\n }\n\n return true;\n },\n };\n\n this.assignSocket(socket as unknown as Socket);\n }\n}\n"],"mappings":"4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GCGA,IAAAI,EAA+D,0BCF/D,IAAAC,EAAgC,gBCKzB,IAAMC,EAAiCC,EAAA,IAAG,GAAH,SC+C9C,IAAMC,EAAuB,OAAO,gBAAgB,ECjC7C,SAASC,EACdC,EACAC,EACG,CACH,OAAID,IAAU,OAAkBC,EAEzBD,CACT,CAPgBE,EAAAH,EAAA,yBClBhB,IAAAI,GAAmC,kBCDnC,IAAAC,EAAgD,gBCKzC,SAASC,EAAUC,EAAiC,CACzD,GAAI,OAAO,SAASA,CAAI,EAAG,OAAOA,EAAK,SAAS,MAAM,EACjD,GAAI,OAAOA,GAAS,SAAU,OAAOA,EACrC,GAAIA,aAAgB,WAAY,OAAO,IAAI,YAAY,EAAE,OAAOA,CAAI,EACpE,MAAM,IAAI,MAAM,wCAAwC,OAAOA,CAAI,EAAE,CAC5E,CALgBC,EAAAF,EAAA,aDAhB,IAAMG,EAAY;AAAA;AAAA,EAEZC,EAAO,OAAO,eAAe,EAC7BC,EAAU,OAAO,kBAAkB,EAEzC,SAASC,EAAQC,EAA4BC,EAA2B,CACtE,GACE,OAAO,SAASA,CAAI,GACpB,OAAOA,GAAS,UAChBA,aAAgB,WAEhBD,EAAOH,CAAI,EAAE,KAAK,OAAO,KAAKI,CAAI,CAAC,MAChC,OAAM,IAAI,MAAM,wCAAwC,OAAOA,CAAI,EAAE,CAC5E,CARSC,EAAAH,EAAA,WA8BF,IAAMI,EAAN,MAAMC,UAA2B,gBAAe,CAzCvD,MAyCuD,CAAAF,EAAA,2BACrD,YAAY,CAAE,OAAAG,CAAO,EAA4B,CAC/C,MAAM,CAAE,OAAAA,CAAO,CAAQ,EAEvB,KAAKR,CAAI,EAAI,CAAC,EACd,KAAKC,CAAO,EAAI,CAAC,EAEjB,KAAK,4BAA8B,GACnC,KAAK,gBAAkB,GACvB,KAAK,QAAU,GAEf,IAAMQ,EAAoD,CACxD,eAAgB,CAAC,EACjB,SAAU,GACV,GAAIC,EACJ,eAAgBA,EAChB,QAASA,EACT,KAAMA,EACN,OAAQA,EACR,MAAO,CACLN,EACAO,EACAC,IACQ,CAMR,GALI,OAAOD,GAAa,aACtBC,EAAKD,EACLA,EAAW,MAGT,KAAK,UAAY,IAAM,KAAK,aAAcT,EAAQ,KAAME,CAAI,MAC3D,CACH,IAAMS,EAASC,EAAUV,CAAI,EACvBW,EAAQF,EAAO,QAAQd,CAAS,EAEtC,GAAIgB,IAAU,GAAI,CAChB,IAAMC,EAAYH,EAAO,MAAME,EAAQhB,EAAU,MAAM,EAEnDiB,GAAWd,EAAQ,KAAMc,CAAS,EAEtC,KAAK,aAAe,EACtB,CACF,CAEI,OAAOJ,GAAO,YAAYA,EAAG,CACnC,CACF,EAEA,KAAK,aAAaH,CAA2B,CAC/C,CAEA,QACA,SACA,aAEA,CAACT,CAAI,EACL,CAACC,CAAO,EAER,IAAI,SAA4B,CAC9B,OAAO,KAAKA,CAAO,CACrB,CAEA,OAAO,KAAKgB,EAAsB,CAChC,IAAMC,EAAW,IAAIX,EAAmB,CAAE,OAAQU,EAAI,MAAO,CAAC,EAE9D,OAAAC,EAAS,WAAaD,EAAI,YAAc,EACxCC,EAASjB,CAAO,EAAIgB,EAAI,QACxBC,EAASlB,CAAI,EAAKiB,EAAY,KAAO,CAAC,OAAO,KAAMA,EAAY,IAAI,CAAC,EAAI,CAAC,EACzEC,EAAS,IAAI,EAENA,CACT,CAEA,OAAO,KAAKD,EAAiC,CAC3C,OAAO,OAAO,OAAOA,EAAIjB,CAAI,CAAC,CAChC,CAEA,OAAO,QAAQiB,EAAyB,CACtC,IAAME,EAAUF,EAAI,WAAW,EAE/B,OAAO,OAAO,OAAOE,EAASF,EAAIhB,CAAO,CAAC,CAC5C,CAES,UACPmB,EACAC,EACK,CACD,KAAK,aAAc,KAAKpB,CAAO,EAAEmB,CAAG,EAAIC,EACvC,MAAM,UAAUD,EAAKC,CAAK,CACjC,CAES,UACPC,EACAC,EACAC,EACK,CACL,IAAMC,EACJ,OAAOF,GAAkB,SAAWC,EAAMD,EAEtCG,EAAe,MAAM,QAAQD,CAAiB,EAChDA,EACA,CAACA,GAAqB,CAAC,CAAC,EAE5B,QAAWN,KAAWO,EACpB,QAAWC,KAAQR,EAGjB,GAFA,KAAK,UAAUQ,EAAMR,EAAQQ,CAAI,CAAE,EAE/B,CAAC,KAAK,aAGR,MAKN,OAAO,KAAK,oBAAoBL,EAAYC,EAAeC,CAAG,CAChE,CASU,oBACRF,EACAC,EACAC,EACM,CACN,OAAO,MAAM,UAAUF,EAAYC,EAAeC,CAAG,CACvD,CACF,EE5KA,IAAAI,EAA+B,gBRiExB,IAAMC,EAAN,KAEP,CAME,YAA+BC,EAAyC,CAAzC,aAAAA,CAA0C,CAzE3E,MAmEA,CAAAC,EAAA,8BAaS,YACLC,EACAC,EACAC,EACM,CACN,IAAMC,EAAU,IAAI,YAEpB,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQJ,EAAQ,OAAO,EACnDI,IAAU,QAEdF,EAAQ,IACNC,EACA,MAAM,QAAQC,CAAK,EAAIA,EAAM,KAAK,IAAI,EAAIA,EAAM,SAAS,CAC3D,EAGF,IAAMC,EAAsDP,EAAAQ,GAC1D,QAAQ,QAAQA,CAAO,EADmC,kBAGtDA,EAAUR,EAAA,IACdS,EACE,KAAK,SAAS,QACdF,CACF,EAAE,CAAE,QAAAL,EAAS,SAAAC,CAAS,CAAC,EAJT,WAMVO,EAASR,EAAQ,KAAK,WAAW,MAAM,EACzC,IAAI,IAAIA,EAAQ,GAAG,EAAE,QAAU,GAC/BA,EAAQ,KAAK,MAAM,GAAG,EAAE,CAAC,GAAK,GAGlCD,EACG,0BAA0B,CACzB,mBAAoB,CAClB,OAAQC,EAAQ,OAAQ,YAAY,EACpC,QAAAE,EACA,KAAMF,EAAQ,KACd,OAAAQ,CACF,EACA,QAAAF,CACF,CAAC,EACA,KAAK,MAAMG,GAAuB,CAGjC,OAAW,CAACN,EAAKC,CAAK,IAAKK,EAAoB,QAC7CR,EAAS,UAAUE,EAAKC,CAAK,EAI/B,GAFAH,EAAS,WAAaQ,EAAoB,QAAU,IAEhDA,EAAoB,KAAK,OAAS,WAAY,CAChDR,EAAS,IAAIQ,EAAoB,KAAK,MAAM,EAC5C,MACF,CAEA,cAAiBC,KAASD,EAAoB,KAAK,cACjDR,EAAS,MAAMS,CAAK,EAMhB,OAAQT,EAAiB,OAAU,YACpCA,EAAiB,MAAM,EAG5BA,EAAS,IAAI,CACf,CAAC,CACL,CACF","names":["apollo_server_exports","__export","ApolloServerFramework","__toCommonJS","import_server","import_node_http","NO_OP","__name","InternalLoggerSymbol","getDefaultIfUndefined","value","defaultValue","__name","import_node_stream","import_node_http","getString","data","__name","headerEnd","BODY","HEADERS","addData","stream","data","__name","ServerlessResponse","_ServerlessResponse","method","socket","NO_OP","encoding","cb","string","getString","index","remainder","res","response","headers","key","value","statusCode","statusMessage","obj","headersObjOrArray","arrayHeaders","name","import_node_http","ApolloServerFramework","options","__name","app","request","response","headers","key","value","defaultContext","context","getDefaultIfUndefined","search","httpGraphQLResponse","chunk"]}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { BaseContext, ApolloServer } from '@apollo/server';
|
|
3
|
+
import { S as ServerlessRequest } from '../../request-DNNIV9ub.cjs';
|
|
4
|
+
import { F as FrameworkContract } from '../../framework.contract-YnJ-fl1w.cjs';
|
|
5
|
+
import 'node:http';
|
|
6
|
+
import '../../headers-K2qbcurv.cjs';
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* The default context of Apollo Server when you integrate and don't pass any context.
|
|
8
10
|
*
|
|
9
11
|
* @breadcrumb Frameworks / ApolloServerFramework
|
|
10
12
|
* @public
|
|
11
13
|
*/
|
|
12
|
-
|
|
14
|
+
interface DefaultServerlessApolloServerContext extends BaseContext {
|
|
13
15
|
/**
|
|
14
16
|
* The request reference
|
|
15
17
|
*/
|
|
@@ -25,7 +27,7 @@ export interface DefaultServerlessApolloServerContext extends BaseContext {
|
|
|
25
27
|
* @breadcrumb Frameworks / ApolloServerFramework
|
|
26
28
|
* @public
|
|
27
29
|
*/
|
|
28
|
-
|
|
30
|
+
type ApolloServerContextArguments = {
|
|
29
31
|
/**
|
|
30
32
|
* The request reference
|
|
31
33
|
*/
|
|
@@ -41,7 +43,7 @@ export type ApolloServerContextArguments = {
|
|
|
41
43
|
* @breadcrumb Frameworks / ApolloServerFramework
|
|
42
44
|
* @public
|
|
43
45
|
*/
|
|
44
|
-
|
|
46
|
+
interface ApolloServerOptions<TContext extends BaseContext> {
|
|
45
47
|
/**
|
|
46
48
|
* Define a function to create the context of Apollo Server
|
|
47
49
|
*
|
|
@@ -55,7 +57,7 @@ export interface ApolloServerOptions<TContext extends BaseContext> {
|
|
|
55
57
|
* @breadcrumb Frameworks / ApolloServerFramework
|
|
56
58
|
* @public
|
|
57
59
|
*/
|
|
58
|
-
|
|
60
|
+
declare class ApolloServerFramework<TContext extends BaseContext> implements FrameworkContract<ApolloServer<TContext>> {
|
|
59
61
|
protected readonly options?: ApolloServerOptions<TContext> | undefined;
|
|
60
62
|
/**
|
|
61
63
|
* Construtor padrão
|
|
@@ -66,4 +68,5 @@ export declare class ApolloServerFramework<TContext extends BaseContext> impleme
|
|
|
66
68
|
*/
|
|
67
69
|
sendRequest(app: ApolloServer<TContext>, request: ServerlessRequest, response: ServerResponse): void;
|
|
68
70
|
}
|
|
69
|
-
|
|
71
|
+
|
|
72
|
+
export { type ApolloServerContextArguments, ApolloServerFramework, type ApolloServerOptions, type DefaultServerlessApolloServerContext };
|
|
@@ -1,2 +1,72 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
import { BaseContext, ApolloServer } from '@apollo/server';
|
|
3
|
+
import { S as ServerlessRequest } from '../../request-sVa4pxmx.js';
|
|
4
|
+
import { F as FrameworkContract } from '../../framework.contract-YnJ-fl1w.js';
|
|
5
|
+
import 'node:http';
|
|
6
|
+
import '../../headers-K2qbcurv.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The default context of Apollo Server when you integrate and don't pass any context.
|
|
10
|
+
*
|
|
11
|
+
* @breadcrumb Frameworks / ApolloServerFramework
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
interface DefaultServerlessApolloServerContext extends BaseContext {
|
|
15
|
+
/**
|
|
16
|
+
* The request reference
|
|
17
|
+
*/
|
|
18
|
+
request: IncomingMessage;
|
|
19
|
+
/**
|
|
20
|
+
* The response reference
|
|
21
|
+
*/
|
|
22
|
+
response: ServerResponse;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The arguments used to create a Context inside {@link ApolloServerOptions}
|
|
26
|
+
*
|
|
27
|
+
* @breadcrumb Frameworks / ApolloServerFramework
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
type ApolloServerContextArguments = {
|
|
31
|
+
/**
|
|
32
|
+
* The request reference
|
|
33
|
+
*/
|
|
34
|
+
request: IncomingMessage;
|
|
35
|
+
/**
|
|
36
|
+
* The response reference
|
|
37
|
+
*/
|
|
38
|
+
response: ServerResponse;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* The options to customize {@link ApolloServerFramework}
|
|
42
|
+
*
|
|
43
|
+
* @breadcrumb Frameworks / ApolloServerFramework
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
interface ApolloServerOptions<TContext extends BaseContext> {
|
|
47
|
+
/**
|
|
48
|
+
* Define a function to create the context of Apollo Server
|
|
49
|
+
*
|
|
50
|
+
* @param options - Default options passed by library
|
|
51
|
+
*/
|
|
52
|
+
context?: (options: ApolloServerContextArguments) => Promise<TContext>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The framework that forwards requests to Apollo Server
|
|
56
|
+
*
|
|
57
|
+
* @breadcrumb Frameworks / ApolloServerFramework
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
declare class ApolloServerFramework<TContext extends BaseContext> implements FrameworkContract<ApolloServer<TContext>> {
|
|
61
|
+
protected readonly options?: ApolloServerOptions<TContext> | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Construtor padrão
|
|
64
|
+
*/
|
|
65
|
+
constructor(options?: ApolloServerOptions<TContext> | undefined);
|
|
66
|
+
/**
|
|
67
|
+
* {@inheritDoc}
|
|
68
|
+
*/
|
|
69
|
+
sendRequest(app: ApolloServer<TContext>, request: ServerlessRequest, response: ServerResponse): void;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { type ApolloServerContextArguments, ApolloServerFramework, type ApolloServerOptions, type DefaultServerlessApolloServerContext };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{s as i}from"../../chunk-HU5XBQCP.mjs";import{a as n}from"../../chunk-OYOJMOFP.mjs";import{HeaderMap as x}from"@apollo/server";var l=class{constructor(s){this.options=s}static{n(this,"ApolloServerFramework")}sendRequest(s,r,t){let a=new x;for(let[e,o]of Object.entries(r.headers))o!==void 0&&a.set(e,Array.isArray(o)?o.join(", "):o.toString());let c=n(e=>Promise.resolve(e),"defaultContext"),p=n(()=>i(this.options?.context,c)({request:r,response:t}),"context"),d=r.url?.startsWith("http")?new URL(r.url).search??"":r.url?.split("?")[1]||"";s.executeHTTPGraphQLRequest({httpGraphQLRequest:{method:r.method.toUpperCase(),headers:a,body:r.body,search:d},context:p}).then(async e=>{for(let[o,f]of e.headers)t.setHeader(o,f);if(t.statusCode=e.status||200,e.body.kind==="complete"){t.end(e.body.string);return}for await(let o of e.body.asyncIterator)t.write(o),typeof t.flush=="function"&&t.flush();t.end()})}};export{l as ApolloServerFramework};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/frameworks/apollo-server/apollo-server.framework.ts"],"sourcesContent":["//#region\n\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport { type ApolloServer, type BaseContext, HeaderMap } from '@apollo/server';\nimport type { FrameworkContract } from '../../contracts';\nimport { ServerlessRequest } from '../../network';\nimport { getDefaultIfUndefined } from '../../core';\n\n//#endregion\n\n/**\n * The default context of Apollo Server when you integrate and don't pass any context.\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport interface DefaultServerlessApolloServerContext extends BaseContext {\n /**\n * The request reference\n */\n request: IncomingMessage;\n /**\n * The response reference\n */\n response: ServerResponse;\n}\n\n/**\n * The arguments used to create a Context inside {@link ApolloServerOptions}\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport type ApolloServerContextArguments = {\n /**\n * The request reference\n */\n request: IncomingMessage;\n /**\n * The response reference\n */\n response: ServerResponse;\n};\n\n/**\n * The options to customize {@link ApolloServerFramework}\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport interface ApolloServerOptions<TContext extends BaseContext> {\n /**\n * Define a function to create the context of Apollo Server\n *\n * @param options - Default options passed by library\n */\n context?: (options: ApolloServerContextArguments) => Promise<TContext>;\n}\n\n/**\n * The framework that forwards requests to Apollo Server\n *\n * @breadcrumb Frameworks / ApolloServerFramework\n * @public\n */\nexport class ApolloServerFramework<TContext extends BaseContext>\n implements FrameworkContract<ApolloServer<TContext>>\n{\n //#region Constructor\n\n /**\n * Construtor padrão\n */\n constructor(protected readonly options?: ApolloServerOptions<TContext>) {}\n\n //#endregion\n\n /**\n * {@inheritDoc}\n */\n public sendRequest(\n app: ApolloServer<TContext>,\n request: ServerlessRequest,\n response: ServerResponse,\n ): void {\n const headers = new HeaderMap();\n\n for (const [key, value] of Object.entries(request.headers)) {\n if (value === undefined) continue;\n\n headers.set(\n key,\n Array.isArray(value) ? value.join(', ') : value.toString(),\n );\n }\n\n const defaultContext: ApolloServerOptions<any>['context'] = context =>\n Promise.resolve(context);\n\n const context = () =>\n getDefaultIfUndefined(\n this.options?.context,\n defaultContext,\n )({ request, response });\n\n const search = request.url?.startsWith('http')\n ? new URL(request.url).search ?? ''\n : request.url?.split('?')[1] || '';\n\n // we don't need to handle catch because of https://www.apollographql.com/docs/apollo-server/integrations/building-integrations/#handle-errors\n app\n .executeHTTPGraphQLRequest({\n httpGraphQLRequest: {\n method: request.method!.toUpperCase(),\n headers,\n body: request.body,\n search,\n },\n context,\n })\n .then(async httpGraphQLResponse => {\n // this section was copy and pasted from https://github.com/apollographql/apollo-server/blob/main/packages/server/src/express4/index.ts#L95\n\n for (const [key, value] of httpGraphQLResponse.headers)\n response.setHeader(key, value);\n\n response.statusCode = httpGraphQLResponse.status || 200;\n\n if (httpGraphQLResponse.body.kind === 'complete') {\n response.end(httpGraphQLResponse.body.string);\n return;\n }\n\n for await (const chunk of httpGraphQLResponse.body.asyncIterator) {\n response.write(chunk);\n // Express/Node doesn't define a way of saying \"it's time to send this\n // data over the wire\"... but the popular `compression` middleware\n // (which implements `accept-encoding: gzip` and friends) does, by\n // monkey-patching a `flush` method onto the response. So we call it\n // if it's there.\n if (typeof (response as any).flush === 'function')\n (response as any).flush();\n }\n\n response.end();\n });\n }\n}\n"],"mappings":"0FAGA,OAA8C,aAAAA,MAAiB,iBA8DxD,IAAMC,EAAN,KAEP,CAME,YAA+BC,EAAyC,CAAzC,aAAAA,CAA0C,CAzE3E,MAmEA,CAAAC,EAAA,8BAaS,YACLC,EACAC,EACAC,EACM,CACN,IAAMC,EAAU,IAAIC,EAEpB,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQL,EAAQ,OAAO,EACnDK,IAAU,QAEdH,EAAQ,IACNE,EACA,MAAM,QAAQC,CAAK,EAAIA,EAAM,KAAK,IAAI,EAAIA,EAAM,SAAS,CAC3D,EAGF,IAAMC,EAAsDR,EAAAS,GAC1D,QAAQ,QAAQA,CAAO,EADmC,kBAGtDA,EAAUT,EAAA,IACdU,EACE,KAAK,SAAS,QACdF,CACF,EAAE,CAAE,QAAAN,EAAS,SAAAC,CAAS,CAAC,EAJT,WAMVQ,EAAST,EAAQ,KAAK,WAAW,MAAM,EACzC,IAAI,IAAIA,EAAQ,GAAG,EAAE,QAAU,GAC/BA,EAAQ,KAAK,MAAM,GAAG,EAAE,CAAC,GAAK,GAGlCD,EACG,0BAA0B,CACzB,mBAAoB,CAClB,OAAQC,EAAQ,OAAQ,YAAY,EACpC,QAAAE,EACA,KAAMF,EAAQ,KACd,OAAAS,CACF,EACA,QAAAF,CACF,CAAC,EACA,KAAK,MAAMG,GAAuB,CAGjC,OAAW,CAACN,EAAKC,CAAK,IAAKK,EAAoB,QAC7CT,EAAS,UAAUG,EAAKC,CAAK,EAI/B,GAFAJ,EAAS,WAAaS,EAAoB,QAAU,IAEhDA,EAAoB,KAAK,OAAS,WAAY,CAChDT,EAAS,IAAIS,EAAoB,KAAK,MAAM,EAC5C,MACF,CAEA,cAAiBC,KAASD,EAAoB,KAAK,cACjDT,EAAS,MAAMU,CAAK,EAMhB,OAAQV,EAAiB,OAAU,YACpCA,EAAiB,MAAM,EAG5BA,EAAS,IAAI,CACf,CAAC,CACL,CACF","names":["HeaderMap","ApolloServerFramework","options","__name","app","request","response","headers","HeaderMap","key","value","defaultContext","context","getDefaultIfUndefined","search","httpGraphQLResponse","chunk"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var u=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var o=(t,e)=>u(t,"name",{value:e,configurable:!0});var P=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},L=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of H(e))!O.call(t,s)&&s!==r&&u(t,s,{get:()=>e[s],enumerable:!(n=B(e,s))||n.enumerable});return t};var F=t=>L(u({},"__esModule",{value:!0}),t);var V={};P(V,{BaseBodyParserFramework:()=>i,JsonBodyParserFramework:()=>y,RawBodyParserFramework:()=>h,TextBodyParserFramework:()=>x,UrlencodedBodyParserFramework:()=>T});module.exports=F(V);var I=require("http");var A=require("http");function m(t){if(Buffer.isBuffer(t))return t.toString("utf8");if(typeof t=="string")return t;if(t instanceof Uint8Array)return new TextDecoder().decode(t);throw new Error(`response.write() of unexpected type: ${typeof t}`)}o(m,"getString");var R=`\r
|
|
2
|
+
\r
|
|
3
|
+
`,f=Symbol("Response body"),p=Symbol("Response headers");function w(t,e){if(Buffer.isBuffer(e)||typeof e=="string"||e instanceof Uint8Array)t[f].push(Buffer.from(e));else throw new Error(`response.write() of unexpected type: ${typeof e}`)}o(w,"addData");var g=class t extends A.ServerResponse{static{o(this,"ServerlessResponse")}constructor({method:e}){super({method:e}),this[f]=[],this[p]={},this.useChunkedEncodingByDefault=!1,this.chunkedEncoding=!1,this._header="";let r={_writableState:{},writable:!0,on:a,removeListener:a,destroy:a,cork:a,uncork:a,write:(n,s,d)=>{if(typeof s=="function"&&(d=s,s=null),this._header===""||this._wroteHeader)w(this,n);else{let l=m(n),c=l.indexOf(R);if(c!==-1){let v=l.slice(c+R.length);v&&w(this,v),this._wroteHeader=!0}}typeof d=="function"&&d()}};this.assignSocket(r)}_header;_headers;_wroteHeader;[f];[p];get headers(){return this[p]}static from(e){let r=new t({method:e.method});return r.statusCode=e.statusCode||0,r[p]=e.headers,r[f]=e.body?[Buffer.from(e.body)]:[],r.end(),r}static body(e){return Buffer.concat(e[f])}static headers(e){let r=e.getHeaders();return Object.assign(r,e[p])}setHeader(e,r){this._wroteHeader?this[p][e]=r:super.setHeader(e,r)}writeHead(e,r,n){let s=typeof r=="string"?n:r,d=Array.isArray(s)?s:[s||{}];for(let l of d)for(let c in l)if(this.setHeader(c,l[c]),!this._wroteHeader)break;return this.callNativeWriteHead(e,r,n)}callNativeWriteHead(e,r,n){return super.writeHead(e,r,n)}};var _=require("http");var a=o(()=>{},"NO_OP");var Re=Symbol("InternalLogger");function E(t,e){return t===void 0?e:t}o(E,"getDefaultIfUndefined");var ke=require("stream");var i=class{constructor(e,r,n){this.framework=e;this.middleware=r;this.options=n;this.errorHandler=E(this.options?.customErrorHandler,this.defaultHandleOnError.bind(this))}static{o(this,"BaseBodyParserFramework")}errorHandler;sendRequest(e,r,n){this.middleware(r,n,this.onBodyParserFinished(e,r,n))}onBodyParserFinished(e,r,n){return s=>{if(s)return this.errorHandler(r,n,s);this.framework.sendRequest(e,r,n)}}defaultHandleOnError(e,r,n){r.setHeader("content-type","text/plain"),r.statusCode=n.statusCode,r.end(n.message)}};var S=require("body-parser");var y=class extends i{static{o(this,"JsonBodyParserFramework")}constructor(e,r){super(e,(0,S.json)(r),r)}};var b=require("body-parser");var h=class extends i{static{o(this,"RawBodyParserFramework")}constructor(e,r){super(e,(0,b.raw)(r),r)}};var C=require("body-parser");var x=class extends i{static{o(this,"TextBodyParserFramework")}constructor(e,r){super(e,(0,C.text)(r),r)}};var k=require("body-parser");var T=class extends i{static{o(this,"UrlencodedBodyParserFramework")}constructor(e,r){super(e,(0,k.urlencoded)(r),r)}};0&&(module.exports={BaseBodyParserFramework,JsonBodyParserFramework,RawBodyParserFramework,TextBodyParserFramework,UrlencodedBodyParserFramework});
|
|
4
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/frameworks/body-parser/index.ts","../../../src/network/request.ts","../../../src/network/response.ts","../../../src/network/utils.ts","../../../src/network/response-stream.ts","../../../src/core/no-op.ts","../../../src/core/logger.ts","../../../src/core/optional.ts","../../../src/core/stream.ts","../../../src/frameworks/body-parser/base-body-parser.framework.ts","../../../src/frameworks/body-parser/json-body-parser.framework.ts","../../../src/frameworks/body-parser/raw-body-parser.framework.ts","../../../src/frameworks/body-parser/text-body-parser.framework.ts","../../../src/frameworks/body-parser/urlencoded-body-parser.framework.ts"],"sourcesContent":["export * from './base-body-parser.framework';\nexport * from './json-body-parser.framework';\nexport * from './raw-body-parser.framework';\nexport * from './text-body-parser.framework';\nexport * from './urlencoded-body-parser.framework';\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\nimport { IncomingMessage } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport type { SingleValueHeaders } from '../@types';\nimport { NO_OP } from '../core';\n\nconst HTTPS_PORT = 443;\n\n/**\n * The properties to create a {@link ServerlessRequest}\n *\n * @breadcrumb Network / ServerlessRequest\n * @public\n */\nexport interface ServerlessRequestProps {\n /**\n * The HTTP Method of the request\n */\n method: string;\n\n /**\n * The URL requested\n */\n url: string;\n\n /**\n * The headers from the event source\n */\n headers: SingleValueHeaders;\n\n /**\n * The body from the event source\n */\n body?: Buffer | Uint8Array;\n\n /**\n * The IP Address from caller\n */\n remoteAddress?: string;\n}\n\n/**\n * The class that represents an {@link http#IncomingMessage} created by the library to represent an actual request to the framework.\n *\n * @breadcrumb Network / ServerlessRequest\n * @public\n */\nexport class ServerlessRequest extends IncomingMessage {\n constructor({\n method,\n url,\n headers,\n body,\n remoteAddress,\n }: ServerlessRequestProps) {\n super({\n encrypted: true,\n readable: false,\n remoteAddress,\n address: () => ({ port: HTTPS_PORT }) as AddressInfo,\n end: NO_OP,\n destroy: NO_OP,\n } as any);\n\n this.statusCode = 200;\n this.statusMessage = 'OK';\n this.complete = true;\n this.httpVersion = '1.1';\n this.httpVersionMajor = 1;\n this.httpVersionMinor = 1;\n this.method = method;\n this.headers = headers;\n this.body = body;\n this.url = url;\n this.ip = remoteAddress;\n\n this._read = () => {\n this.push(body);\n this.push(null);\n };\n }\n\n ip?: string;\n body?: Buffer | Uint8Array;\n}\n","// ATTRIBUTION: https://github.com/dougmoscrop/serverless-http\nimport { IncomingMessage, ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport { NO_OP } from '../core';\nimport { getString } from './utils';\n\nconst headerEnd = '\\r\\n\\r\\n';\n\nconst BODY = Symbol('Response body');\nconst HEADERS = Symbol('Response headers');\n\nfunction addData(stream: ServerlessResponse, data: Uint8Array | string) {\n if (\n Buffer.isBuffer(data) ||\n typeof data === 'string' ||\n data instanceof Uint8Array\n )\n stream[BODY].push(Buffer.from(data));\n else throw new Error(`response.write() of unexpected type: ${typeof data}`);\n}\n\n/**\n * The properties to create a {@link ServerlessResponse}.\n *\n * @breadcrumb Network / ServerlessResponse\n * @public\n */\nexport interface ServerlessResponseProps {\n /**\n * The HTTP Method from request\n */\n method?: string;\n}\n\n/**\n * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.\n * Once it's happens, we use the properties from this response to built the response to the cloud.\n *\n * @breadcrumb Network / ServerlessResponse\n * @public\n */\nexport class ServerlessResponse extends ServerResponse {\n constructor({ method }: ServerlessResponseProps) {\n super({ method } as any);\n\n this[BODY] = [];\n this[HEADERS] = {};\n\n this.useChunkedEncodingByDefault = false;\n this.chunkedEncoding = false;\n this._header = '';\n\n const socket: Partial<Socket> & { _writableState: any } = {\n _writableState: {},\n writable: true,\n on: NO_OP,\n removeListener: NO_OP,\n destroy: NO_OP,\n cork: NO_OP,\n uncork: NO_OP,\n write: (\n data: Uint8Array | string,\n encoding?: string | null | (() => void),\n cb?: () => void,\n ): any => {\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (this._header === '' || this._wroteHeader) addData(this, data);\n else {\n const string = getString(data);\n const index = string.indexOf(headerEnd);\n\n if (index !== -1) {\n const remainder = string.slice(index + headerEnd.length);\n\n if (remainder) addData(this, remainder);\n\n this._wroteHeader = true;\n }\n }\n\n if (typeof cb === 'function') cb();\n },\n };\n\n this.assignSocket(socket as unknown as Socket);\n }\n\n _header: string;\n _headers?: Record<any, any>;\n _wroteHeader?: boolean;\n\n [BODY]: any[];\n [HEADERS]: Record<any, any>;\n\n get headers(): Record<any, any> {\n return this[HEADERS];\n }\n\n static from(res: IncomingMessage) {\n const response = new ServerlessResponse({ method: res.method });\n\n response.statusCode = res.statusCode || 0;\n response[HEADERS] = res.headers;\n response[BODY] = (res as any).body ? [Buffer.from((res as any).body)] : [];\n response.end();\n\n return response;\n }\n\n static body(res: ServerlessResponse): Buffer {\n return Buffer.concat(res[BODY]);\n }\n\n static headers(res: ServerlessResponse) {\n const headers = res.getHeaders();\n\n return Object.assign(headers, res[HEADERS]);\n }\n\n override setHeader(\n key: string,\n value: number | string | readonly string[],\n ): any {\n if (this._wroteHeader) this[HEADERS][key] = value;\n else super.setHeader(key, value);\n }\n\n override writeHead(\n statusCode: number,\n statusMessage?: string | any | any[],\n obj?: any | any[],\n ): any {\n const headersObjOrArray =\n typeof statusMessage === 'string' ? obj : statusMessage;\n\n const arrayHeaders = Array.isArray(headersObjOrArray)\n ? headersObjOrArray\n : [headersObjOrArray || {}];\n\n for (const headers of arrayHeaders) {\n for (const name in headers) {\n this.setHeader(name, headers[name]!);\n\n if (!this._wroteHeader) {\n // we only need to initiate super.headers once\n // writeHead will add the other headers itself\n break;\n }\n }\n }\n\n return this.callNativeWriteHead(statusCode, statusMessage, obj);\n }\n\n /**\n * I use ignore here because in nodejs 12.x, statusMessage can be string | OutgoingHttpHeaders\n * But in nodejs \\>=14.x, statusMessage can also be OutgoingHttpHeaders[]\n * I take care of these cases above, but here I can't handle it well, so I give up\n * nodejs 12.x ref: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/v12/http.d.ts#L229\n * nodejs 14.x ref: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/v14/http.d.ts#L263\n */\n protected callNativeWriteHead(\n statusCode: number,\n statusMessage?: string | any | any[],\n obj?: any | any[],\n ): this {\n return super.writeHead(statusCode, statusMessage, obj);\n }\n}\n","/**\n * Get the data from a buffer, string, or Uint8Array\n *\n * @breadcrumb Network\n * @param data - The data that was written inside the stream\n */\nexport function getString(data: Buffer | string | unknown) {\n if (Buffer.isBuffer(data)) return data.toString('utf8');\n else if (typeof data === 'string') return data;\n else if (data instanceof Uint8Array) return new TextDecoder().decode(data);\n else throw new Error(`response.write() of unexpected type: ${typeof data}`);\n}\n","import { ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport type { Writable } from 'node:stream';\nimport type { BothValueHeaders } from '../@types';\nimport { type ILogger, NO_OP, parseHeaders } from '../core';\nimport { getString } from './utils';\n\nconst endChunked = '0\\r\\n\\r\\n';\nconst headerEnd = '\\r\\n\\r\\n';\nconst endStatusSeparator = '\\r\\n';\n\n/**\n * The properties to create a {@link ServerlessStreamResponse}.\n *\n * @breadcrumb Network / ServerlessStreamResponse\n * @public\n */\nexport interface ServerlessStreamResponseProps {\n /**\n * The HTTP Method from request\n */\n method?: string;\n\n /**\n * The callback to receive the headers when they are written to the stream\n * You need to return a writable stream be able to continue writing the response\n *\n * @param statusCode - The status code of the response\n * @param headers - The headers of the response\n */\n onReceiveHeaders: (statusCode: number, headers: BothValueHeaders) => Writable;\n\n /**\n * Instance of the logger\n */\n log: ILogger;\n}\n\n/**\n * The class that represents a response instance used to send to the framework and wait until the framework finishes processing the request.\n * This response is specially built to deal with transfer-encoding: chunked\n *\n * @breadcrumb Network / ServerlessStreamResponse\n * @public\n */\nexport class ServerlessStreamResponse extends ServerResponse {\n constructor({\n method,\n onReceiveHeaders,\n log,\n }: ServerlessStreamResponseProps) {\n super({ method } as any);\n\n this.useChunkedEncodingByDefault = true;\n this.chunkedEncoding = true;\n\n let internalWritable: Writable | null = null;\n let isFirstCall = true;\n // this ignore is used because I need to ignore these write calls:\n // https://github.com/nodejs/node/blob/main/lib/_http_outgoing.js#L934-L935\n // https://github.com/nodejs/node/blob/main/lib/_http_outgoing.js#L937\n let writesToIgnore = 0;\n\n const socket: Partial<Socket> & { _writableState: any } = {\n _writableState: {},\n writable: true,\n on: NO_OP,\n removeListener: NO_OP,\n destroy: NO_OP,\n cork: NO_OP,\n uncork: NO_OP,\n write: (\n data: Uint8Array | string,\n encoding?: string | null | (() => void),\n cb?: () => void,\n ): any => {\n // very unlikely, I don't even know how to reproduce this, but exist on types\n // istanbul ignore if\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n log.debug('SERVERLESS_ADAPTER:RESPONSE_STREAM:DATA', () => ({\n data: Buffer.isBuffer(data) ? data.toString('utf8') : data,\n encoding,\n }));\n\n if (!isFirstCall && internalWritable) {\n if (data === endChunked) {\n internalWritable.end(cb);\n\n return true;\n }\n\n if (writesToIgnore > 0) {\n writesToIgnore--;\n return true;\n }\n\n internalWritable.write(data, cb);\n writesToIgnore = 3;\n } else if (isFirstCall) {\n isFirstCall = false;\n\n const stringData = getString(data);\n const endStatusIndex = stringData.indexOf(endStatusSeparator);\n const status = +stringData.slice(0, endStatusIndex).split(' ')[1];\n\n const headerData = stringData.slice(\n endStatusIndex + 2,\n stringData.indexOf(headerEnd),\n );\n const headers = parseHeaders(headerData);\n log.debug('SERVERLESS_ADAPTER:RESPONSE_STREAM:FRAMEWORK_HEADERS', {\n headers,\n });\n\n writesToIgnore = 1;\n internalWritable = onReceiveHeaders(status, headers);\n }\n\n return true;\n },\n };\n\n this.assignSocket(socket as unknown as Socket);\n }\n}\n","/**\n * No operation function is used when we need to pass a function, but we don't want to specify any behavior.\n *\n * @breadcrumb Core\n * @public\n */\nexport const NO_OP: (...args: any[]) => any = () => void 0;\n","import { NO_OP } from './no-op';\n\n/**\n * The type representing the possible log levels to choose from.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LogLevels =\n | 'debug'\n | 'verbose'\n | 'info'\n | 'warn'\n | 'error'\n | 'none';\n\n/**\n * The options to customize {@link ILogger}\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LoggerOptions = {\n /**\n * Select the log level, {@link LogLevels | see more}.\n *\n * @defaultValue error\n */\n level: LogLevels;\n};\n\n/**\n * The log function used in any level.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type LoggerFN = (message: any, ...additional: any[]) => void;\n\n/**\n * The interface representing the logger, you can provide a custom logger by implementing this interface.\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport type ILogger = Record<Exclude<LogLevels, 'none'>, LoggerFN>;\n\n/**\n * The symbol used to check against an ILogger instace to verify if that ILogger was created by this library\n *\n * @breadcrumb Core / Logger\n * @public\n */\nconst InternalLoggerSymbol = Symbol('InternalLogger');\n\nconst logLevels: Record<\n LogLevels,\n [level: LogLevels, consoleMethod: keyof Console][]\n> = {\n debug: [\n ['debug', 'debug'],\n ['verbose', 'debug'],\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n verbose: [\n ['verbose', 'debug'],\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n info: [\n ['info', 'info'],\n ['error', 'error'],\n ['warn', 'warn'],\n ],\n warn: [\n ['warn', 'warn'],\n ['error', 'error'],\n ],\n error: [['error', 'error']],\n none: [],\n};\n\nconst lazyPrint = (value: () => any | unknown) => {\n if (typeof value === 'function') return value();\n\n return value;\n};\n\nconst print =\n (fn: string) =>\n (message: any, ...additional: (() => any)[]) =>\n console[fn](message, ...additional.map(lazyPrint));\n\n/**\n * The method used to create a simple logger instance to use in this library.\n *\n * @remarks Behind the scenes, this simple logger sends the message to the `console` methods.\n *\n * @example\n * ```typescript\n * const logger = createDefaultLogger();\n *\n * logger.error('An error happens.');\n * // An error happens.\n * ```\n *\n * @param level - Select the level of the log\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport function createDefaultLogger(\n { level }: LoggerOptions = { level: 'error' },\n): ILogger {\n const levels = logLevels[level];\n\n if (!levels) throw new Error('Invalid log level');\n\n const logger = {\n [InternalLoggerSymbol]: true,\n error: NO_OP,\n debug: NO_OP,\n info: NO_OP,\n verbose: NO_OP,\n warn: NO_OP,\n } as ILogger;\n\n for (const [level, consoleMethod] of levels)\n logger[level] = print(consoleMethod);\n\n return logger;\n}\n\n/**\n * The method used to chck if logger was created by this library, or it was defined by the user.\n *\n * @param logger - The instance of the logger to check\n *\n * @breadcrumb Core / Logger\n * @public\n */\nexport function isInternalLogger(logger: ILogger): boolean {\n return !!logger[InternalLoggerSymbol];\n}\n","/**\n * Return the defaultValue whether the value is undefined, otherwise, return the value.\n *\n * @example\n * ```typescript\n * const value1 = getDefaultIfUndefined(undefined, true);\n * const value2 = getDefaultIfUndefined(false, true);\n *\n * console.log(value1);\n * // true\n * console.log(value2);\n * // false\n * ```\n *\n * @param value - The value to be checked\n * @param defaultValue - The default value when value is undefined\n *\n * @breadcrumb Core\n * @public\n */\nexport function getDefaultIfUndefined<T>(\n value: T | undefined,\n defaultValue: T,\n): T {\n if (value === undefined) return defaultValue;\n\n return value;\n}\n","//#region Imports\n\nimport { Readable, Writable } from 'node:stream';\n\n//#endregion\n\n/**\n * Check if stream already ended\n *\n * @param stream - The stream\n *\n * @breadcrumb Core / Stream\n * @public\n */\nexport function isStreamEnded(stream: Readable | Writable): boolean {\n if ('readableEnded' in stream && stream.readableEnded) return true;\n\n if ('writableEnded' in stream && stream.writableEnded) return true;\n\n return false;\n}\n\n/**\n * Wait asynchronous the stream to complete\n *\n * @param stream - The stream\n *\n * @breadcrumb Core / Stream\n * @public\n */\nexport function waitForStreamComplete<TStream extends Readable | Writable>(\n stream: TStream,\n): Promise<TStream> {\n if (isStreamEnded(stream)) return Promise.resolve(stream);\n\n return new Promise<TStream>((resolve, reject) => {\n // Reading the {@link https://github.com/nodejs/node/blob/v12.22.9/lib/events.js#L262 | emit source code},\n // it's almost impossible to complete being called twice because the emit function runs synchronously and removes the other listeners,\n // but I'll leave it at that because I didn't write that code, so I couldn't figure out what the author thought when he wrote this.\n let isComplete = false;\n\n function complete(err: any) {\n /* istanbul ignore next */\n if (isComplete) return;\n\n isComplete = true;\n\n stream.removeListener('error', complete);\n stream.removeListener('end', complete);\n stream.removeListener('finish', complete);\n\n if (err) reject(err);\n else resolve(stream);\n }\n\n stream.once('error', complete);\n stream.once('end', complete);\n stream.once('finish', complete);\n });\n}\n","//#region Imports\n\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport type { NextHandleFunction } from 'connect';\nimport type { HttpError } from 'http-errors';\nimport type { FrameworkContract } from '../../contracts';\nimport { getDefaultIfUndefined } from '../../core';\n\n//#endregion\n\n/**\n * The options for {@link BaseBodyParserFramework}\n *\n * @breadcrumb Frameworks / BodyParserFramework\n * @public\n */\nexport type BodyParserOptions = {\n /**\n * Implements a custom way of handling error.\n *\n * @defaultValue {@link BaseBodyParserFramework.defaultHandleOnError}\n *\n * @example\n * ```typescript\n * customErrorHandler: (req: IncomingMessage, response: ServerResponse, error: HttpError<any>) => {\n * response.setHeader('content-type', 'text/plain');\n * response.statusCode = error.statusCode;\n * // always call end to return the error\n * response.end(error.message);\n * }\n * ```\n *\n * @param request - The referecene for request\n * @param response - The reference for response\n * @param error - The error throwed by body-parser\n */\n customErrorHandler?: (\n request: IncomingMessage,\n response: ServerResponse,\n error: HttpError<any>,\n ) => void;\n};\n\n/**\n * The base class used by other body-parser functions to parse a specific content-type\n *\n * @breadcrumb Frameworks / BodyParserFramework\n * @public\n */\nexport class BaseBodyParserFramework<TApp> implements FrameworkContract<TApp> {\n //#region Constructor\n\n /**\n * Default Constructor\n */\n protected constructor(\n protected readonly framework: FrameworkContract<TApp>,\n protected readonly middleware: NextHandleFunction,\n protected readonly options?: BodyParserOptions,\n ) {\n this.errorHandler = getDefaultIfUndefined(\n this.options?.customErrorHandler,\n this.defaultHandleOnError.bind(this),\n );\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * The selected error handler\n */\n protected readonly errorHandler: NonNullable<\n BodyParserOptions['customErrorHandler']\n >;\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public sendRequest(\n app: TApp,\n request: IncomingMessage,\n response: ServerResponse,\n ): void {\n this.middleware(\n request,\n response,\n this.onBodyParserFinished(app, request, response),\n );\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Handle next execution called by the cors package\n */\n protected onBodyParserFinished(\n app: TApp,\n request: IncomingMessage,\n response: ServerResponse,\n ): () => void {\n return (err?: any) => {\n if (err) return this.errorHandler(request, response, err);\n\n this.framework.sendRequest(app, request, response);\n };\n }\n\n /**\n * The default function to handle errors\n *\n * @param _request - The referecene for request\n * @param response - The reference for response\n * @param error - The error throwed by body-parser\n */\n protected defaultHandleOnError(\n _request: IncomingMessage,\n response: ServerResponse,\n error: HttpError<any>,\n ): void {\n response.setHeader('content-type', 'text/plain');\n response.statusCode = error.statusCode;\n response.end(error.message);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type OptionsJson, json } from 'body-parser';\nimport { type FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body-parser options for application/json\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparserjsonoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / JsonBodyParserFramework\n * @public\n */\nexport type JsonBodyParserFrameworkOptions = OptionsJson & BodyParserOptions;\n\n/**\n * The body-parser class used to parse application/json.\n *\n * @breadcrumb Frameworks / BodyParserFramework / JsonBodyParserFramework\n * @public\n */\nexport class JsonBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: JsonBodyParserFrameworkOptions,\n ) {\n super(framework, json(options), options);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type Options, raw } from 'body-parser';\nimport type { FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body-parser options for application/octet-stream\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparserrawoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / RawBodyParserFramework\n * @public\n */\nexport type RawBodyParserFrameworkOptions = Options & BodyParserOptions;\n\n/**\n * The body-parser class used to parse application/octet-stream.\n *\n * @breadcrumb Frameworks / BodyParserFramework / RawBodyParserFramework\n * @public\n */\nexport class RawBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: RawBodyParserFrameworkOptions,\n ) {\n super(framework, raw(options), options);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type OptionsText, text } from 'body-parser';\nimport type { FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body-parser options for text/plain\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparsertextoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / TextBodyParserFramework\n * @public\n */\nexport type TextBodyParserFrameworkOptions = OptionsText & BodyParserOptions;\n\n/**\n * The body-parser class used to parse text/plain.\n *\n * @breadcrumb Frameworks / BodyParserFramework / TextBodyParserFramework\n * @public\n */\nexport class TextBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: TextBodyParserFrameworkOptions,\n ) {\n super(framework, text(options), options);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type OptionsUrlencoded, urlencoded } from 'body-parser';\nimport { type FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body parser options for application/x-www-form-urlencoded\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparserurlencodedoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / UrlencodedBodyParserFramework\n * @public\n */\nexport type UrlencodedBodyParserFrameworkOptions = OptionsUrlencoded &\n BodyParserOptions;\n\n/**\n * The body-parser class used to parse application/x-www-form-urlencoded.\n *\n * @breadcrumb Frameworks / BodyParserFramework / UrlencodedBodyParserFramework\n * @public\n */\nexport class UrlencodedBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: UrlencodedBodyParserFrameworkOptions,\n ) {\n super(framework, urlencoded(options), options);\n }\n\n //#endregion\n}\n"],"mappings":"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","names":["body_parser_exports","__export","BaseBodyParserFramework","JsonBodyParserFramework","RawBodyParserFramework","TextBodyParserFramework","UrlencodedBodyParserFramework","__toCommonJS","import_node_http","import_node_http","getString","data","__name","headerEnd","BODY","HEADERS","addData","stream","data","__name","ServerlessResponse","_ServerlessResponse","method","socket","NO_OP","encoding","cb","string","getString","index","remainder","res","response","headers","key","value","statusCode","statusMessage","obj","headersObjOrArray","arrayHeaders","name","import_node_http","NO_OP","__name","InternalLoggerSymbol","getDefaultIfUndefined","value","defaultValue","__name","import_node_stream","BaseBodyParserFramework","framework","middleware","options","getDefaultIfUndefined","__name","app","request","response","err","_request","error","import_body_parser","JsonBodyParserFramework","BaseBodyParserFramework","__name","framework","options","import_body_parser","RawBodyParserFramework","BaseBodyParserFramework","__name","framework","options","import_body_parser","TextBodyParserFramework","BaseBodyParserFramework","__name","framework","options","import_body_parser","UrlencodedBodyParserFramework","BaseBodyParserFramework","__name","framework","options"]}
|