@tstdl/base 0.78.0-beta8 → 0.78.0-beta81
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/api/client/client.d.ts +2 -1
- package/api/client/client.js +38 -16
- package/api/client/client.js.map +1 -1
- package/api/response.js +3 -2
- package/api/response.js.map +1 -1
- package/api/server/api-controller.d.ts +3 -1
- package/api/server/api-controller.js +7 -2
- package/api/server/api-controller.js.map +1 -1
- package/api/server/gateway.d.ts +15 -3
- package/api/server/gateway.js +53 -37
- package/api/server/gateway.js.map +1 -1
- package/api/server/middlewares/allowed-methods.middleware.js +1 -1
- package/api/server/middlewares/allowed-methods.middleware.js.map +1 -1
- package/api/server/middlewares/cors.middleware.d.ts +6 -4
- package/api/server/middlewares/cors.middleware.js +30 -30
- package/api/server/middlewares/cors.middleware.js.map +1 -1
- package/api/types.d.ts +36 -14
- package/api/types.js +1 -2
- package/api/types.js.map +1 -1
- package/api/utils.d.ts +9 -0
- package/api/utils.js +15 -0
- package/api/utils.js.map +1 -0
- package/application/application.d.ts +15 -2
- package/application/application.js +89 -42
- package/application/application.js.map +1 -1
- package/collections/awaitable/awaitable-list.js +10 -11
- package/collections/awaitable/awaitable-list.js.map +1 -1
- package/collections/observable/observable-array.js +1 -1
- package/collections/observable/observable-array.js.map +1 -1
- package/collections/observable/observable-collection-base.js +12 -14
- package/collections/observable/observable-collection-base.js.map +1 -1
- package/collections/observable/observable-list-base.js +6 -8
- package/collections/observable/observable-list-base.js.map +1 -1
- package/collections/observable/observable-sorted-array-list.js +3 -3
- package/collections/observable/observable-sorted-array-list.js.map +1 -1
- package/collections/sorted-array-list.js +3 -3
- package/collections/sorted-array-list.js.map +1 -1
- package/collections/sorted-map.js +1 -1
- package/collections/sorted-map.js.map +1 -1
- package/container/container.js +19 -21
- package/container/container.js.map +1 -1
- package/container/decorators.d.ts +1 -1
- package/container/decorators.js.map +1 -1
- package/container/resolve-chain.d.ts +2 -1
- package/container/resolve-chain.js +6 -2
- package/container/resolve-chain.js.map +1 -1
- package/core.js +2 -2
- package/core.js.map +1 -1
- package/css/theme/theme.service.js.map +1 -1
- package/data-structures/circular-buffer.js +5 -6
- package/data-structures/circular-buffer.js.map +1 -1
- package/data-structures/collection.js +4 -5
- package/data-structures/collection.js.map +1 -1
- package/data-structures/index-out-of-bounds.error.d.ts +1 -1
- package/data-structures/index-out-of-bounds.error.js +2 -2
- package/data-structures/index-out-of-bounds.error.js.map +1 -1
- package/data-structures/iterable-weak-map.js +1 -1
- package/data-structures/iterable-weak-map.js.map +1 -1
- package/data-structures/linked-list.js.map +1 -1
- package/data-structures/sorted-array-list.js +2 -2
- package/data-structures/sorted-array-list.js.map +1 -1
- package/database/mongo/classes.js.map +1 -1
- package/database/mongo/mongo-base.repository.js +3 -3
- package/database/mongo/mongo-base.repository.js.map +1 -1
- package/database/mongo/mongo-entity-repository.js +2 -2
- package/database/mongo/mongo-entity-repository.js.map +1 -1
- package/distributed-loop/distributed-loop.js.map +1 -1
- package/distributed-loop/provider.js.map +1 -1
- package/environment.d.ts +10 -0
- package/environment.js +26 -0
- package/environment.js.map +1 -0
- package/error/custom.error.d.ts +7 -3
- package/error/custom.error.js +17 -8
- package/error/custom.error.js.map +1 -1
- package/error/index.d.ts +1 -0
- package/error/index.js +1 -0
- package/error/index.js.map +1 -1
- package/error/max-bytes-exceeded.error.d.ts +1 -0
- package/error/max-bytes-exceeded.error.js +3 -0
- package/error/max-bytes-exceeded.error.js.map +1 -1
- package/error/not-implemented.error.js +1 -1
- package/error/not-implemented.error.js.map +1 -1
- package/error/not-supported.error.d.ts +7 -0
- package/error/not-supported.error.js +17 -0
- package/error/not-supported.error.js.map +1 -0
- package/error/unsupported-media-type.error.js +1 -1
- package/error/unsupported-media-type.error.js.map +1 -1
- package/examples/api/basic-overview.js +17 -25
- package/examples/api/basic-overview.js.map +1 -1
- package/examples/api/streaming.d.ts +1 -0
- package/examples/api/streaming.js +79 -0
- package/examples/api/streaming.js.map +1 -0
- package/examples/mail/basic.js +12 -7
- package/examples/mail/basic.js.map +1 -1
- package/examples/mail/templates/hello-name.d.ts +2 -0
- package/examples/mail/templates/hello-name.js +11 -0
- package/examples/mail/templates/hello-name.js.map +1 -0
- package/examples/pdf/basic.js +9 -6
- package/examples/pdf/basic.js.map +1 -1
- package/examples/pdf/templates/hello-name.d.ts +1 -4
- package/examples/pdf/templates/hello-name.js +30 -4
- package/examples/pdf/templates/hello-name.js.map +1 -1
- package/examples/reflection/basic.js +1 -1
- package/examples/reflection/basic.js.map +1 -1
- package/examples/template/basic.d.ts +1 -0
- package/examples/template/basic.js +25 -0
- package/examples/template/basic.js.map +1 -0
- package/examples/template/templates/hello-name.d.ts +2 -0
- package/examples/template/templates/hello-name.js +23 -0
- package/examples/template/templates/hello-name.js.map +1 -0
- package/http/client/adapters/undici-http-client.adapter.d.ts +1 -2
- package/http/client/adapters/undici-http-client.adapter.js +10 -12
- package/http/client/adapters/undici-http-client.adapter.js.map +1 -1
- package/http/client/http-client-request.d.ts +24 -14
- package/http/client/http-client-request.js +4 -2
- package/http/client/http-client-request.js.map +1 -1
- package/http/client/http-client-response.d.ts +10 -12
- package/http/client/http-client-response.js +5 -1
- package/http/client/http-client-response.js.map +1 -1
- package/http/client/http-client.adapter.d.ts +1 -2
- package/http/client/http-client.adapter.js.map +1 -1
- package/http/client/http-client.d.ts +30 -31
- package/http/client/http-client.js +107 -74
- package/http/client/http-client.js.map +1 -1
- package/http/http-body.d.ts +19 -0
- package/http/http-body.js +52 -0
- package/http/http-body.js.map +1 -0
- package/http/http-headers.d.ts +3 -0
- package/http/http-headers.js +6 -0
- package/http/http-headers.js.map +1 -1
- package/http/http-value-map.js +2 -2
- package/http/http-value-map.js.map +1 -1
- package/http/http.error.d.ts +5 -2
- package/http/http.error.js +27 -5
- package/http/http.error.js.map +1 -1
- package/http/index.d.ts +2 -0
- package/http/index.js +2 -0
- package/http/index.js.map +1 -1
- package/http/server/http-server-request.d.ts +5 -10
- package/http/server/http-server-request.js +3 -30
- package/http/server/http-server-request.js.map +1 -1
- package/http/server/http-server-response.d.ts +4 -4
- package/http/server/node/node-http-server.js +6 -5
- package/http/server/node/node-http-server.js.map +1 -1
- package/http/types.d.ts +1 -11
- package/http/types.js +1 -2
- package/http/types.js.map +1 -1
- package/http/utils.d.ts +15 -0
- package/http/utils.js +113 -0
- package/http/utils.js.map +1 -0
- package/image-service/image-service.js.map +1 -1
- package/image-service/imgproxy/imgproxy-image-service.js.map +1 -1
- package/json-path/json-path.d.ts +8 -5
- package/json-path/json-path.js +15 -1
- package/json-path/json-path.js.map +1 -1
- package/key-value-store/mongo/mongo-key-value-store.provider.js.map +1 -1
- package/key-value-store/mongo/mongo-key-value.repository.js.map +1 -1
- package/key-value-store/mongo/mongo-key-value.store.js.map +1 -1
- package/lock/mongo/lock.js.map +1 -1
- package/lock/mongo/mongo-lock-repository.js.map +1 -1
- package/lock/mongo/provider.js.map +1 -1
- package/logger/console/logger.js +1 -1
- package/logger/console/logger.js.map +1 -1
- package/logger/logger.d.ts +2 -2
- package/mail/clients/nodemailer.mail-client.js.map +1 -1
- package/mail/index.d.ts +0 -3
- package/mail/index.js +0 -3
- package/mail/index.js.map +1 -1
- package/mail/mail.service.d.ts +3 -5
- package/mail/mail.service.js +8 -14
- package/mail/mail.service.js.map +1 -1
- package/mail/models/mail-template.model.d.ts +11 -10
- package/mail/models/mail-template.model.js +7 -0
- package/mail/models/mail-template.model.js.map +1 -1
- package/mail/module.d.ts +1 -5
- package/mail/module.js +2 -11
- package/mail/module.js.map +1 -1
- package/mail/repositories/mongo-mail-log.repository.js.map +1 -1
- package/mail/tokens.d.ts +0 -3
- package/mail/tokens.js +1 -2
- package/mail/tokens.js.map +1 -1
- package/message-bus/local/local-message-bus-provider.js.map +1 -1
- package/message-bus/local/local-message-bus.js.map +1 -1
- package/message-bus/message-bus-base.js +1 -2
- package/message-bus/message-bus-base.js.map +1 -1
- package/migration/migrator.js.map +1 -1
- package/migration/mongo/migration-state-repository.js.map +1 -1
- package/module/modules/web-server.module.js.map +1 -1
- package/notification/api.d.ts +20 -0
- package/notification/api.js +35 -0
- package/notification/api.js.map +1 -0
- package/notification/model.d.ts +18 -0
- package/notification/model.js +36 -0
- package/notification/model.js.map +1 -0
- package/notification/module.d.ts +9 -0
- package/notification/module.js +15 -0
- package/notification/module.js.map +1 -0
- package/object-storage/s3/s3.object-storage-provider.js.map +1 -1
- package/object-storage/s3/s3.object-storage.js.map +1 -1
- package/openid-connect/cached-oidc-configuration.service.js.map +1 -1
- package/openid-connect/mongo-oidc-state.repository.js.map +1 -1
- package/openid-connect/oidc-configuration.service.d.ts +2 -1
- package/openid-connect/oidc-configuration.service.js +5 -3
- package/openid-connect/oidc-configuration.service.js.map +1 -1
- package/openid-connect/oidc.service-model.d.ts +11 -3
- package/openid-connect/oidc.service.d.ts +6 -3
- package/openid-connect/oidc.service.js +72 -25
- package/openid-connect/oidc.service.js.map +1 -1
- package/package.json +13 -12
- package/pdf/pdf.service.d.ts +92 -12
- package/pdf/pdf.service.js +234 -34
- package/pdf/pdf.service.js.map +1 -1
- package/pool/pool.d.ts +23 -4
- package/pool/pool.js +76 -40
- package/pool/pool.js.map +1 -1
- package/promise/deferred-promise.d.ts +2 -15
- package/promise/deferred-promise.js +5 -10
- package/promise/deferred-promise.js.map +1 -1
- package/promise/index.d.ts +1 -0
- package/promise/index.js +1 -0
- package/promise/index.js.map +1 -1
- package/promise/lazy-promise.d.ts +11 -0
- package/promise/lazy-promise.js +31 -0
- package/promise/lazy-promise.js.map +1 -0
- package/queue/mongo/mongo-job.repository.js +1 -1
- package/queue/mongo/mongo-job.repository.js.map +1 -1
- package/queue/mongo/queue.js.map +1 -1
- package/queue/mongo/queue.provider.js.map +1 -1
- package/reflection/decorator-data.js +1 -1
- package/reflection/decorator-data.js.map +1 -1
- package/reflection/decorators.d.ts +2 -2
- package/reflection/decorators.js +7 -7
- package/reflection/decorators.js.map +1 -1
- package/reflection/registry.d.ts +8 -8
- package/reflection/registry.js +1 -1
- package/reflection/registry.js.map +1 -1
- package/reflection/types.d.ts +3 -2
- package/reflection/utils.d.ts +7 -2
- package/reflection/utils.js +38 -12
- package/reflection/utils.js.map +1 -1
- package/require.d.ts +1 -0
- package/require.js +9 -0
- package/require.js.map +1 -0
- package/rpc/endpoints/message-port.rpc-endpoint.d.ts +19 -0
- package/rpc/endpoints/message-port.rpc-endpoint.js +34 -0
- package/rpc/endpoints/message-port.rpc-endpoint.js.map +1 -0
- package/rpc/index.d.ts +4 -0
- package/rpc/index.js +21 -0
- package/rpc/index.js.map +1 -0
- package/rpc/model.d.ts +72 -0
- package/rpc/model.js +13 -0
- package/rpc/model.js.map +1 -0
- package/rpc/rpc-endpoint.d.ts +11 -0
- package/rpc/rpc-endpoint.js +23 -0
- package/rpc/rpc-endpoint.js.map +1 -0
- package/rpc/rpc-error.d.ts +8 -0
- package/rpc/rpc-error.js +26 -0
- package/rpc/rpc-error.js.map +1 -0
- package/rpc/rpc.d.ts +19 -0
- package/rpc/rpc.js +263 -0
- package/rpc/rpc.js.map +1 -0
- package/rxjs/retry-backoff.js +4 -5
- package/rxjs/retry-backoff.js.map +1 -1
- package/schema/array-constraints/maximum-length.d.ts +2 -2
- package/schema/array-constraints/maximum-length.js +2 -2
- package/schema/array-constraints/maximum-length.js.map +1 -1
- package/schema/array-constraints/minimum-length.d.ts +2 -2
- package/schema/array-constraints/minimum-length.js +2 -2
- package/schema/array-constraints/minimum-length.js.map +1 -1
- package/schema/coercers/boolean.coercer.d.ts +2 -2
- package/schema/coercers/boolean.coercer.js +2 -2
- package/schema/coercers/boolean.coercer.js.map +1 -1
- package/schema/coercers/date.coercer.d.ts +2 -2
- package/schema/coercers/date.coercer.js +2 -2
- package/schema/coercers/date.coercer.js.map +1 -1
- package/schema/coercers/number.coercer.d.ts +3 -3
- package/schema/coercers/number.coercer.js +2 -2
- package/schema/coercers/number.coercer.js.map +1 -1
- package/schema/coercers/regexp.coercer.d.ts +2 -2
- package/schema/coercers/regexp.coercer.js +2 -2
- package/schema/coercers/regexp.coercer.js.map +1 -1
- package/schema/coercers/string.coercer.d.ts +3 -3
- package/schema/coercers/string.coercer.js +2 -2
- package/schema/coercers/string.coercer.js.map +1 -1
- package/schema/coercers/uint8-array.coercer.js +2 -2
- package/schema/coercers/uint8-array.coercer.js.map +1 -1
- package/schema/constraints/enumeration.d.ts +5 -5
- package/schema/constraints/enumeration.js +6 -6
- package/schema/constraints/enumeration.js.map +1 -1
- package/schema/constraints/generic.d.ts +2 -2
- package/schema/constraints/generic.js +2 -2
- package/schema/constraints/generic.js.map +1 -1
- package/schema/constraints/integer.d.ts +2 -2
- package/schema/constraints/integer.js +2 -2
- package/schema/constraints/integer.js.map +1 -1
- package/schema/constraints/literal.d.ts +2 -2
- package/schema/constraints/literal.js +2 -2
- package/schema/constraints/literal.js.map +1 -1
- package/schema/constraints/maximum-date.d.ts +2 -2
- package/schema/constraints/maximum-date.js +2 -2
- package/schema/constraints/maximum-date.js.map +1 -1
- package/schema/constraints/maximum-length.d.ts +3 -3
- package/schema/constraints/maximum-length.js +2 -2
- package/schema/constraints/maximum-length.js.map +1 -1
- package/schema/constraints/maximum.d.ts +2 -2
- package/schema/constraints/maximum.js +2 -2
- package/schema/constraints/maximum.js.map +1 -1
- package/schema/constraints/minimum-date.d.ts +2 -2
- package/schema/constraints/minimum-date.js +2 -2
- package/schema/constraints/minimum-date.js.map +1 -1
- package/schema/constraints/minimum-length.d.ts +3 -3
- package/schema/constraints/minimum-length.js +2 -2
- package/schema/constraints/minimum-length.js.map +1 -1
- package/schema/constraints/minimum.d.ts +2 -2
- package/schema/constraints/minimum.js +2 -2
- package/schema/constraints/minimum.js.map +1 -1
- package/schema/constraints/pattern.d.ts +2 -2
- package/schema/constraints/pattern.js +2 -2
- package/schema/constraints/pattern.js.map +1 -1
- package/schema/decorators/array.d.ts +2 -2
- package/schema/decorators/array.js.map +1 -1
- package/schema/decorators/defaulted.d.ts +2 -2
- package/schema/decorators/defaulted.js.map +1 -1
- package/schema/decorators/index.d.ts +1 -0
- package/schema/decorators/index.js +1 -0
- package/schema/decorators/index.js.map +1 -1
- package/schema/decorators/one-or-many.d.ts +6 -0
- package/schema/decorators/one-or-many.js +12 -0
- package/schema/decorators/one-or-many.js.map +1 -0
- package/schema/decorators/optional.d.ts +3 -1
- package/schema/decorators/optional.js +2 -2
- package/schema/decorators/optional.js.map +1 -1
- package/schema/decorators/types.d.ts +3 -3
- package/schema/decorators/utils.d.ts +3 -2
- package/schema/decorators/utils.js +8 -4
- package/schema/decorators/utils.js.map +1 -1
- package/schema/schema.d.ts +4 -10
- package/schema/schema.error.d.ts +6 -5
- package/schema/schema.error.js +13 -10
- package/schema/schema.error.js.map +1 -1
- package/schema/schema.js +113 -104
- package/schema/schema.js.map +1 -1
- package/schema/schemas/array.d.ts +3 -3
- package/schema/schemas/array.js +1 -1
- package/schema/schemas/array.js.map +1 -1
- package/schema/schemas/assign.d.ts +6 -6
- package/schema/schemas/assign.js +3 -1
- package/schema/schemas/assign.js.map +1 -1
- package/schema/schemas/constraint.d.ts +3 -2
- package/schema/schemas/constraint.js.map +1 -1
- package/schema/schemas/defaulted.d.ts +2 -2
- package/schema/schemas/defaulted.js.map +1 -1
- package/schema/schemas/enumeration.js +1 -1
- package/schema/schemas/enumeration.js.map +1 -1
- package/schema/schemas/index.d.ts +3 -1
- package/schema/schemas/index.js +3 -1
- package/schema/schemas/index.js.map +1 -1
- package/schema/schemas/nullable.d.ts +2 -2
- package/schema/schemas/nullable.js.map +1 -1
- package/schema/schemas/number.d.ts +1 -1
- package/schema/schemas/number.js +0 -3
- package/schema/schemas/number.js.map +1 -1
- package/schema/schemas/omit.d.ts +4 -0
- package/schema/schemas/{exclude.js → omit.js} +8 -6
- package/schema/schemas/omit.js.map +1 -0
- package/schema/schemas/one-or-many.d.ts +10 -0
- package/schema/schemas/one-or-many.js +12 -0
- package/schema/schemas/one-or-many.js.map +1 -0
- package/schema/schemas/optional.d.ts +3 -2
- package/schema/schemas/optional.js.map +1 -1
- package/schema/schemas/partial.d.ts +4 -0
- package/schema/schemas/partial.js +22 -0
- package/schema/schemas/partial.js.map +1 -0
- package/schema/schemas/pick.d.ts +2 -2
- package/schema/schemas/pick.js +3 -1
- package/schema/schemas/pick.js.map +1 -1
- package/schema/schemas/record.d.ts +2 -2
- package/schema/schemas/record.js.map +1 -1
- package/schema/schemas/union.d.ts +4 -9
- package/schema/schemas/union.js.map +1 -1
- package/schema/types.d.ts +30 -20
- package/schema/types.js +22 -8
- package/schema/types.js.map +1 -1
- package/schema/utils/schema.d.ts +6 -1
- package/schema/utils/schema.js +60 -7
- package/schema/utils/schema.js.map +1 -1
- package/schema/utils/value-type.d.ts +5 -3
- package/schema/utils/value-type.js +22 -7
- package/schema/utils/value-type.js.map +1 -1
- package/search-index/elastic/config.js.map +1 -1
- package/search-index/elastic/model/index-mapping.d.ts +2 -1
- package/search-index/elastic/model/index-mapping.js.map +1 -1
- package/search-index/elastic/search-index.js +5 -4
- package/search-index/elastic/search-index.js.map +1 -1
- package/search-index/error.d.ts +1 -1
- package/search-index/error.js +2 -2
- package/search-index/error.js.map +1 -1
- package/serializer/handlers/register.d.ts +2 -2
- package/serializer/handlers/register.js +6 -2
- package/serializer/handlers/register.js.map +1 -1
- package/serializer/serializable.d.ts +11 -8
- package/serializer/serializable.js +13 -4
- package/serializer/serializable.js.map +1 -1
- package/serializer/serializer.js +21 -8
- package/serializer/serializer.js.map +1 -1
- package/serializer/types.d.ts +21 -6
- package/serializer/types.js +2 -1
- package/serializer/types.js.map +1 -1
- package/supports.d.ts +5 -0
- package/supports.js +9 -0
- package/supports.js.map +1 -0
- package/templates/index.d.ts +2 -0
- package/templates/index.js +2 -0
- package/templates/index.js.map +1 -1
- package/templates/module.d.ts +3 -1
- package/templates/module.js +31 -8
- package/templates/module.js.map +1 -1
- package/templates/providers/file.provider-template.d.ts +16 -0
- package/templates/providers/{file-template.provider.js → file.provider-template.js} +22 -15
- package/templates/providers/file.provider-template.js.map +1 -0
- package/templates/providers/memory.template-provider.d.ts +8 -0
- package/templates/providers/{memory-template.provider.base.js → memory.template-provider.js} +8 -6
- package/templates/providers/memory.template-provider.js.map +1 -0
- package/templates/renderers/handlebars.template-renderer.d.ts +38 -6
- package/templates/renderers/handlebars.template-renderer.js +70 -3
- package/templates/renderers/handlebars.template-renderer.js.map +1 -1
- package/templates/renderers/mjml.template-renderer.d.ts +6 -6
- package/templates/renderers/mjml.template-renderer.js +8 -9
- package/templates/renderers/mjml.template-renderer.js.map +1 -1
- package/templates/renderers/string.template-renderer.d.ts +8 -0
- package/{mail/template-providers/memory-mail-template.provider.js → templates/renderers/string.template-renderer.js} +13 -7
- package/templates/renderers/string.template-renderer.js.map +1 -0
- package/templates/resolvers/file.template-resolver.d.ts +23 -0
- package/templates/resolvers/file.template-resolver.js +63 -0
- package/templates/resolvers/file.template-resolver.js.map +1 -0
- package/templates/resolvers/string.template-resolver.d.ts +13 -0
- package/templates/resolvers/string.template-resolver.js +44 -0
- package/templates/resolvers/string.template-resolver.js.map +1 -0
- package/templates/template-renderer.provider.js +7 -19
- package/templates/template-renderer.provider.js.map +1 -1
- package/templates/template-resolver.provider.d.ts +8 -0
- package/templates/template-resolver.provider.js +48 -0
- package/templates/template-resolver.provider.js.map +1 -0
- package/templates/template.model.d.ts +15 -4
- package/templates/template.model.js +50 -0
- package/templates/template.model.js.map +1 -1
- package/templates/template.renderer.d.ts +14 -3
- package/templates/template.renderer.js +3 -0
- package/templates/template.renderer.js.map +1 -1
- package/templates/template.resolver.d.ts +5 -0
- package/templates/template.resolver.js +7 -0
- package/templates/template.resolver.js.map +1 -0
- package/templates/template.service.d.ts +10 -4
- package/templates/template.service.js +19 -6
- package/templates/template.service.js.map +1 -1
- package/templates/tokens.d.ts +3 -2
- package/templates/tokens.js +2 -1
- package/templates/tokens.js.map +1 -1
- package/threading/index.d.ts +2 -0
- package/{rxjs/compat → threading}/index.js +2 -1
- package/threading/index.js.map +1 -0
- package/threading/thread-pool.d.ts +20 -0
- package/threading/thread-pool.js +50 -0
- package/threading/thread-pool.js.map +1 -0
- package/threading/thread-worker.d.ts +3 -0
- package/threading/thread-worker.js +9 -0
- package/threading/thread-worker.js.map +1 -0
- package/types.d.ts +27 -9
- package/utils/alphabet.d.ts +3 -1
- package/utils/alphabet.js +2 -0
- package/utils/alphabet.js.map +1 -1
- package/utils/array/array.d.ts +1 -2
- package/utils/array/array.js.map +1 -1
- package/utils/async-iterable-helpers/observable-iterable.js +1 -2
- package/utils/async-iterable-helpers/observable-iterable.js.map +1 -1
- package/utils/async-iterable-helpers/take-until.js +2 -3
- package/utils/async-iterable-helpers/take-until.js.map +1 -1
- package/utils/base64.js +3 -2
- package/utils/base64.js.map +1 -1
- package/utils/binary.js +3 -2
- package/utils/binary.js.map +1 -1
- package/utils/cancellation-token.d.ts +28 -28
- package/utils/cancellation-token.js +14 -14
- package/utils/cancellation-token.js.map +1 -1
- package/utils/clone.js +4 -0
- package/utils/clone.js.map +1 -1
- package/utils/compression.d.ts +19 -15
- package/utils/compression.js +43 -10
- package/utils/compression.js.map +1 -1
- package/utils/encoding.d.ts +10 -0
- package/utils/encoding.js +20 -4
- package/utils/encoding.js.map +1 -1
- package/utils/enum.d.ts +5 -8
- package/utils/enum.js +15 -13
- package/utils/enum.js.map +1 -1
- package/utils/feedable-async-iterable.js +1 -2
- package/utils/feedable-async-iterable.js.map +1 -1
- package/utils/function/memoize.js +4 -4
- package/utils/function/memoize.js.map +1 -1
- package/utils/helpers.d.ts +0 -2
- package/utils/helpers.js +3 -14
- package/utils/helpers.js.map +1 -1
- package/utils/image.js +7 -8
- package/utils/image.js.map +1 -1
- package/utils/index.d.ts +2 -0
- package/utils/index.js +2 -0
- package/utils/index.js.map +1 -1
- package/utils/math.d.ts +37 -10
- package/utils/math.js +57 -12
- package/utils/math.js.map +1 -1
- package/utils/object/decycle.js +10 -21
- package/utils/object/decycle.js.map +1 -1
- package/utils/object/dereference.d.ts +7 -5
- package/utils/object/dereference.js +4 -4
- package/utils/object/dereference.js.map +1 -1
- package/utils/object/forward-ref.js +3 -19
- package/utils/object/forward-ref.js.map +1 -1
- package/utils/object/merge.js +3 -3
- package/utils/object/merge.js.map +1 -1
- package/utils/object/object.js +3 -3
- package/utils/object/object.js.map +1 -1
- package/utils/object/property-name.d.ts +2 -2
- package/utils/patch-worker.js +1 -2
- package/utils/patch-worker.js.map +1 -1
- package/utils/periodic-sampler.js +2 -2
- package/utils/periodic-sampler.js.map +1 -1
- package/utils/proxy.d.ts +6 -0
- package/utils/proxy.js +21 -0
- package/utils/proxy.js.map +1 -0
- package/utils/stream/finalize-stream.d.ts +1 -0
- package/utils/stream/finalize-stream.js +38 -0
- package/utils/stream/finalize-stream.js.map +1 -0
- package/utils/stream/index.d.ts +4 -3
- package/utils/stream/index.js +4 -3
- package/utils/stream/index.js.map +1 -1
- package/utils/stream/readable-stream-adapter.d.ts +5 -0
- package/utils/stream/readable-stream-adapter.js +45 -0
- package/utils/stream/readable-stream-adapter.js.map +1 -0
- package/utils/stream/readable-stream-from-promise.d.ts +1 -0
- package/utils/stream/readable-stream-from-promise.js +12 -0
- package/utils/stream/readable-stream-from-promise.js.map +1 -0
- package/utils/stream/size-limited-stream.d.ts +2 -0
- package/utils/stream/size-limited-stream.js +18 -0
- package/utils/stream/size-limited-stream.js.map +1 -0
- package/utils/stream/stream-reader.d.ts +2 -1
- package/utils/stream/stream-reader.js +7 -10
- package/utils/stream/stream-reader.js.map +1 -1
- package/utils/throw.d.ts +2 -0
- package/utils/throw.js +15 -0
- package/utils/throw.js.map +1 -0
- package/utils/timing.js +2 -2
- package/utils/timing.js.map +1 -1
- package/utils/type-guards.d.ts +34 -16
- package/utils/type-guards.js +112 -75
- package/utils/type-guards.js.map +1 -1
- package/web-types.d.ts +28 -0
- package/web-types.js +3 -0
- package/web-types.js.map +1 -0
- package/http/client/adapters/got-http-client.adapter.d.ts +0 -10
- package/http/client/adapters/got-http-client.adapter.js +0 -141
- package/http/client/adapters/got-http-client.adapter.js.map +0 -1
- package/http/client/adapters/utils.d.ts +0 -11
- package/http/client/adapters/utils.js +0 -79
- package/http/client/adapters/utils.js.map +0 -1
- package/mail/mail-template-renderer.provider.d.ts +0 -8
- package/mail/mail-template-renderer.provider.js +0 -60
- package/mail/mail-template-renderer.provider.js.map +0 -1
- package/mail/mail-template.provider.d.ts +0 -4
- package/mail/mail-template.provider.js +0 -7
- package/mail/mail-template.provider.js.map +0 -1
- package/mail/mail-template.renderer.d.ts +0 -10
- package/mail/mail-template.renderer.js +0 -7
- package/mail/mail-template.renderer.js.map +0 -1
- package/mail/template-providers/file-mail-template.provider.d.ts +0 -24
- package/mail/template-providers/file-mail-template.provider.js +0 -51
- package/mail/template-providers/file-mail-template.provider.js.map +0 -1
- package/mail/template-providers/memory-mail-template.provider.d.ts +0 -6
- package/mail/template-providers/memory-mail-template.provider.js.map +0 -1
- package/mail/template-renderers/handlebars.mail-template-renderer.d.ts +0 -13
- package/mail/template-renderers/handlebars.mail-template-renderer.js +0 -49
- package/mail/template-renderers/handlebars.mail-template-renderer.js.map +0 -1
- package/mail/template-renderers/mjml.mail-template-renderer.d.ts +0 -14
- package/mail/template-renderers/mjml.mail-template-renderer.js +0 -63
- package/mail/template-renderers/mjml.mail-template-renderer.js.map +0 -1
- package/rxjs/compat/first-value-from.d.ts +0 -2
- package/rxjs/compat/first-value-from.js +0 -9
- package/rxjs/compat/first-value-from.js.map +0 -1
- package/rxjs/compat/index.d.ts +0 -1
- package/rxjs/compat/index.js.map +0 -1
- package/schema/schemas/exclude.d.ts +0 -4
- package/schema/schemas/exclude.js.map +0 -1
- package/templates/providers/file-template.provider.base.d.ts +0 -12
- package/templates/providers/file-template.provider.base.js +0 -50
- package/templates/providers/file-template.provider.base.js.map +0 -1
- package/templates/providers/file-template.provider.d.ts +0 -22
- package/templates/providers/file-template.provider.js.map +0 -1
- package/templates/providers/memory-template.provider.base.d.ts +0 -9
- package/templates/providers/memory-template.provider.base.js.map +0 -1
- package/templates/providers/memory-template.provider.d.ts +0 -4
- package/templates/providers/memory-template.provider.js +0 -18
- package/templates/providers/memory-template.provider.js.map +0 -1
- package/utils/stream/async-iterable-readable.d.ts +0 -13
- package/utils/stream/async-iterable-readable.js +0 -40
- package/utils/stream/async-iterable-readable.js.map +0 -1
- package/utils/stream/async-writable-stream.d.ts +0 -16
- package/utils/stream/async-writable-stream.js +0 -41
- package/utils/stream/async-writable-stream.js.map +0 -1
- package/utils/stream/typed-readable.d.ts +0 -58
- package/utils/stream/typed-readable.js +0 -9
- package/utils/stream/typed-readable.js.map +0 -1
package/api/client/client.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ import type { ApiClientImplementation, ApiDefinition, ApiEndpointDefinition } fr
|
|
|
5
5
|
export declare type ApiClient<T extends ApiDefinition> = new (httpClient: HttpClient) => ApiClientImplementation<T> & Injectable<HttpClientOptions>;
|
|
6
6
|
export declare type ClientOptions = {
|
|
7
7
|
/**
|
|
8
|
-
* url prefix
|
|
8
|
+
* url prefix
|
|
9
|
+
* @default `api/`
|
|
9
10
|
*/
|
|
10
11
|
prefix?: string;
|
|
11
12
|
defaultHttpClientOptions?: HttpClientOptions;
|
package/api/client/client.js
CHANGED
|
@@ -4,10 +4,9 @@ exports.compileClient = exports.apiDefinitionSymbol = exports.httpClientSymbol =
|
|
|
4
4
|
const container_1 = require("../../container");
|
|
5
5
|
const client_1 = require("../../http/client");
|
|
6
6
|
const schema_1 = require("../../schema");
|
|
7
|
-
const array_1 = require("../../utils/array");
|
|
8
|
-
const comparison_1 = require("../../utils/comparison");
|
|
9
7
|
const type_guards_1 = require("../../utils/type-guards");
|
|
10
8
|
const types_1 = require("../types");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
11
10
|
exports.httpClientSymbol = Symbol('ApiTransport');
|
|
12
11
|
exports.apiDefinitionSymbol = Symbol('ApiDefinition');
|
|
13
12
|
// eslint-disable-next-line max-lines-per-function
|
|
@@ -30,29 +29,24 @@ function compileClient(definition, options = {}) {
|
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
31
|
const endpointsEntries = (0, types_1.normalizedApiDefinitionEndpointsEntries)(endpoints);
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const version = ((0, type_guards_1.isUndefined)(config.version) ? [1] : (0, array_1.toArray)(config.version)).sort(comparison_1.compareByValueDescending)[0];
|
|
37
|
-
const methods = (0, type_guards_1.isArray)(config.method) ? config.method : [config.method ?? 'GET'];
|
|
38
|
-
const versionPrefix = (0, type_guards_1.isNull)(config.version) ? '' : `v${version}/`;
|
|
39
|
-
const resource = (config.resource == types_1.rootResource) ? `${prefix}${versionPrefix}${base}` : `${prefix}${versionPrefix}${base}/${config.resource ?? name}`;
|
|
32
|
+
for (const [name, endpoint] of endpointsEntries) {
|
|
33
|
+
const methods = (0, type_guards_1.isArray)(endpoint.method) ? endpoint.method : [endpoint.method ?? 'GET'];
|
|
34
|
+
const resource = (0, utils_1.getFullApiEndpointResource)({ api: definition, endpoint, prefix: options.prefix });
|
|
40
35
|
const hasGet = methods.includes('GET');
|
|
41
36
|
const fallbackMethod = methods.filter((method) => method != 'GET')[0] ?? 'GET';
|
|
42
37
|
const apiEndpointFunction = {
|
|
43
|
-
async [name](parameters) {
|
|
44
|
-
const context = {
|
|
45
|
-
endpoint: config
|
|
46
|
-
};
|
|
38
|
+
async [name](parameters, requestBody) {
|
|
39
|
+
const context = { endpoint };
|
|
47
40
|
const method = (hasGet && (0, type_guards_1.isUndefined)(parameters)) ? 'GET' : fallbackMethod;
|
|
48
41
|
const request = new client_1.HttpClientRequest({
|
|
49
42
|
method,
|
|
50
43
|
url: resource,
|
|
51
44
|
parameters,
|
|
45
|
+
body: getRequestBody(requestBody),
|
|
52
46
|
context
|
|
53
47
|
});
|
|
54
48
|
const response = await this[exports.httpClientSymbol].rawRequest(request);
|
|
55
|
-
return
|
|
49
|
+
return getResponseBody(response, endpoint.result);
|
|
56
50
|
}
|
|
57
51
|
}[name];
|
|
58
52
|
Object.defineProperty(api.prototype, name, {
|
|
@@ -65,10 +59,38 @@ function compileClient(definition, options = {}) {
|
|
|
65
59
|
return api;
|
|
66
60
|
}
|
|
67
61
|
exports.compileClient = compileClient;
|
|
68
|
-
function
|
|
62
|
+
function getRequestBody(body) {
|
|
63
|
+
if ((0, type_guards_1.isUndefined)(body)) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if ((0, type_guards_1.isUint8Array)(body)) {
|
|
67
|
+
return { buffer: body };
|
|
68
|
+
}
|
|
69
|
+
if ((0, type_guards_1.isReadableStream)(body)) {
|
|
70
|
+
return { stream: body };
|
|
71
|
+
}
|
|
72
|
+
if ((0, type_guards_1.isBlob)(body)) {
|
|
73
|
+
return { blob: body };
|
|
74
|
+
}
|
|
75
|
+
if ((0, type_guards_1.isString)(body)) {
|
|
76
|
+
return { text: body };
|
|
77
|
+
}
|
|
78
|
+
return { json: body };
|
|
79
|
+
}
|
|
80
|
+
async function getResponseBody(response, schema) {
|
|
69
81
|
if ((0, type_guards_1.isUndefined)(schema)) {
|
|
82
|
+
response.close();
|
|
70
83
|
return undefined;
|
|
71
84
|
}
|
|
72
|
-
|
|
85
|
+
const body = response.hasBody
|
|
86
|
+
? (schema == ReadableStream)
|
|
87
|
+
? response.body.readAsBinaryStream()
|
|
88
|
+
: (schema == Uint8Array)
|
|
89
|
+
? await response.body.readAsBuffer()
|
|
90
|
+
: (schema == String)
|
|
91
|
+
? await response.body.readAsText()
|
|
92
|
+
: await response.body.read()
|
|
93
|
+
: undefined;
|
|
94
|
+
return schema_1.Schema.parse(schema, body, { mask: true });
|
|
73
95
|
}
|
|
74
96
|
//# sourceMappingURL=client.js.map
|
package/api/client/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../source/api/client/client.ts"],"names":[],"mappings":";;;AACA,+CAA6D;AAE7D,8CAA8D;AAC9D,yCAAkC;AAElC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../source/api/client/client.ts"],"names":[],"mappings":"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"}
|
package/api/response.js
CHANGED
|
@@ -8,7 +8,7 @@ const default_error_handlers_1 = require("./default-error-handlers");
|
|
|
8
8
|
const errorHandlers = new Map();
|
|
9
9
|
function registerErrorHandler(constructor, statusCode, serializer, deserializer) {
|
|
10
10
|
if (errorHandlers.has(constructor.errorName)) {
|
|
11
|
-
throw new Error(`
|
|
11
|
+
throw new Error(`A handler for ${constructor.errorName} already registered.`);
|
|
12
12
|
}
|
|
13
13
|
errorHandlers.set(constructor.errorName, { statusCode, serializer, deserializer });
|
|
14
14
|
}
|
|
@@ -79,7 +79,7 @@ function parseResponse(response) {
|
|
|
79
79
|
if (isErrorResponse(response)) {
|
|
80
80
|
throw parseErrorResponse(response);
|
|
81
81
|
}
|
|
82
|
-
throw new Error('
|
|
82
|
+
throw new Error('Unsupported response.');
|
|
83
83
|
}
|
|
84
84
|
exports.parseResponse = parseResponse;
|
|
85
85
|
function parseErrorResponse(response, fallbackToGenericApiError = true) {
|
|
@@ -115,6 +115,7 @@ registerErrorHandler(error_1.InvalidTokenError, 401, () => undefined, (_, error)
|
|
|
115
115
|
registerErrorHandler(error_1.MaxBytesExceededError, 400, () => undefined, (_, error) => new error_1.MaxBytesExceededError(error.message));
|
|
116
116
|
registerErrorHandler(error_1.NotFoundError, 404, () => undefined, (_, error) => new error_1.NotFoundError(error.message));
|
|
117
117
|
registerErrorHandler(error_1.NotImplementedError, 404, () => undefined, (_, error) => new error_1.NotImplementedError(error.message));
|
|
118
|
+
registerErrorHandler(error_1.NotSupportedError, 400, () => undefined, (_, error) => new error_1.NotSupportedError(error.message));
|
|
118
119
|
registerErrorHandler(error_1.UnauthorizedError, 401, () => undefined, (_, error) => new error_1.UnauthorizedError(error.message));
|
|
119
120
|
registerErrorHandler(error_1.MethodNotAllowedError, 405, () => undefined, (_, error) => new error_1.MethodNotAllowedError(error.message));
|
|
120
121
|
registerErrorHandler(error_1.UnsupportedMediaTypeError, 415, () => undefined, (_, error) => new error_1.UnsupportedMediaTypeError(error.message));
|
package/api/response.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../source/api/response.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAEpD,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../source/api/response.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { InjectableOptionsWithoutLifecycle } from "../../container";
|
|
2
2
|
import type { Constructor, Type } from "../../types";
|
|
3
3
|
import type { ApiController, ApiDefinition } from '../types';
|
|
4
|
+
declare type ApiDefinitionProvider = () => ApiDefinition;
|
|
4
5
|
export declare const apiControllerDefinition: unique symbol;
|
|
5
6
|
export declare function getApiControllerDefinition(controller: Type): ApiDefinition;
|
|
6
7
|
export declare function isApiController(controller: Type): boolean;
|
|
7
8
|
export declare function ensureApiController(controller: Type): void;
|
|
8
|
-
export declare function apiController<T = Type<ApiController>,
|
|
9
|
+
export declare function apiController<T = Type<ApiController>, A = any>(definition: ApiDefinition | ApiDefinitionProvider, injectableOptions?: InjectableOptionsWithoutLifecycle<T, A>): ClassDecorator;
|
|
9
10
|
export declare function implementApi<T extends ApiDefinition>(definition: T, implementation: ApiController<T>): Constructor<ApiController<T>>;
|
|
11
|
+
export {};
|
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.implementApi = exports.apiController = exports.ensureApiController = exports.isApiController = exports.getApiControllerDefinition = exports.apiControllerDefinition = void 0;
|
|
4
4
|
const container_1 = require("../../container");
|
|
5
|
+
const type_guards_1 = require("../../utils/type-guards");
|
|
5
6
|
exports.apiControllerDefinition = Symbol('ApiController definition');
|
|
6
7
|
const registeredApiControllers = new Map();
|
|
7
8
|
function getApiControllerDefinition(controller) {
|
|
8
9
|
ensureApiController(controller);
|
|
9
|
-
|
|
10
|
+
const definitionOrProvider = registeredApiControllers.get(controller);
|
|
11
|
+
if ((0, type_guards_1.isFunction)(definitionOrProvider)) {
|
|
12
|
+
return definitionOrProvider();
|
|
13
|
+
}
|
|
14
|
+
return definitionOrProvider;
|
|
10
15
|
}
|
|
11
16
|
exports.getApiControllerDefinition = getApiControllerDefinition;
|
|
12
17
|
function isApiController(controller) {
|
|
@@ -15,7 +20,7 @@ function isApiController(controller) {
|
|
|
15
20
|
exports.isApiController = isApiController;
|
|
16
21
|
function ensureApiController(controller) {
|
|
17
22
|
if (!isApiController(controller)) {
|
|
18
|
-
throw new Error(`Provided type ${controller?.name} is not a known ApiController. Make sure to use @ApiController decorator
|
|
23
|
+
throw new Error(`Provided type ${controller?.name} is not a known ApiController. Make sure to use @ApiController decorator.`);
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
26
|
exports.ensureApiController = ensureApiController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-controller.js","sourceRoot":"","sources":["../../../source/api/server/api-controller.ts"],"names":[],"mappings":";;;AAEA,+CAAwC;
|
|
1
|
+
{"version":3,"file":"api-controller.js","sourceRoot":"","sources":["../../../source/api/server/api-controller.ts"],"names":[],"mappings":";;;AAEA,+CAAwC;AAExC,yDAAiD;AAKpC,QAAA,uBAAuB,GAAkB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAEzF,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAA8D,CAAC;AAEvG,SAAgB,0BAA0B,CAAC,UAAgB;IACzD,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;IAEvE,IAAI,IAAA,wBAAU,EAAC,oBAAoB,CAAC,EAAE;QACpC,OAAO,oBAAoB,EAAE,CAAC;KAC/B;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAVD,gEAUC;AAED,SAAgB,eAAe,CAAC,UAAgB;IAC9C,OAAO,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAFD,0CAEC;AAED,SAAgB,mBAAmB,CAAC,UAAgB;IAClD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,iBAAkB,UAA+B,EAAE,IAAI,2EAA2E,CAAC,CAAC;KACrJ;AACH,CAAC;AAJD,kDAIC;AAED,SAAgB,aAAa,CAAmC,UAAiD,EAAE,oBAA6D,EAAE;IAChL,SAAS,sBAAsB,CAAc,WAA2B;QACtE,wBAAwB,CAAC,GAAG,CAAC,WAA6C,EAAE,UAAU,CAAC,CAAC;QACxF,IAAA,qBAAS,EAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,sBAAwC,CAAC;AAClD,CAAC;AAPD,sCAOC;AAED,SAAgB,YAAY,CAA0B,UAAa,EAAE,cAAgC;IACnG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;IACtC,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,GAAG,kBAAkB,eAAe,CAAC;IAErD,MAAM,GAAG,GAAG;QACV,CAAC,OAAO,CAAC,EAAE;SAAS;KACrB,CAAC,OAAO,CAAE,CAAC;IAEZ,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAE7D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,qBAAqB,EAAE;QACnD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE;YACzC,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;KACJ;IAED,OAAO,GAA+C,CAAC;AACzD,CAAC;AAvBD,oCAuBC"}
|
package/api/server/gateway.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { Type } from "../../types";
|
|
|
8
8
|
import type { AsyncMiddleware, AsyncMiddlewareNext } from "../../utils/middleware";
|
|
9
9
|
import 'urlpattern-polyfill';
|
|
10
10
|
import type { ApiController, ApiDefinition, ApiEndpointDefinition, ApiEndpointMethod, ApiEndpointServerImplementation } from '../types';
|
|
11
|
+
import type { CorsMiddlewareOptions } from './middlewares';
|
|
11
12
|
export declare type ApiGatewayMiddlewareContext = {
|
|
12
13
|
api: ApiItem;
|
|
13
14
|
/** can be undefined if used before allowedMethods middleware */
|
|
@@ -17,12 +18,22 @@ export declare type ApiGatewayMiddlewareContext = {
|
|
|
17
18
|
export declare type ApiGatewayMiddlewareNext = AsyncMiddlewareNext<HttpServerRequest, HttpServerResponse>;
|
|
18
19
|
export declare type ApiGatewayMiddleware = AsyncMiddleware<HttpServerRequest, HttpServerResponse, ApiGatewayMiddlewareContext>;
|
|
19
20
|
export declare type ApiGatewayOptions = {
|
|
20
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Api prefix
|
|
23
|
+
* @default api/
|
|
24
|
+
*/
|
|
21
25
|
prefix?: string;
|
|
22
|
-
/**
|
|
26
|
+
/** Initial middlewares */
|
|
23
27
|
middlewares?: ApiGatewayMiddleware[];
|
|
24
|
-
/**
|
|
28
|
+
/** Errors to supress in log output */
|
|
25
29
|
supressedErrors?: Type<Error>[];
|
|
30
|
+
/** Cors middleware options */
|
|
31
|
+
cors?: CorsMiddlewareOptions;
|
|
32
|
+
/**
|
|
33
|
+
* Maximum size of request body. Useful to prevent harmful requests.
|
|
34
|
+
* @default 10 MB
|
|
35
|
+
*/
|
|
36
|
+
defaultMaxBytes?: number;
|
|
26
37
|
};
|
|
27
38
|
export declare type GatewayEndpoint = {
|
|
28
39
|
definition: ApiEndpointDefinition;
|
|
@@ -50,6 +61,7 @@ export declare class ApiGateway implements Injectable<ApiGatewayOptions> {
|
|
|
50
61
|
private readonly middlewares;
|
|
51
62
|
private readonly supressedErrors;
|
|
52
63
|
private readonly catchErrorMiddleware;
|
|
64
|
+
private readonly options;
|
|
53
65
|
private handler;
|
|
54
66
|
readonly [resolveArgumentType]: ApiGatewayOptions;
|
|
55
67
|
constructor(logger: Logger, options?: ApiGatewayOptions);
|
package/api/server/gateway.js
CHANGED
|
@@ -15,31 +15,37 @@ var ApiGateway_1;
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.ApiGateway = void 0;
|
|
17
17
|
const container_1 = require("../../container");
|
|
18
|
-
const
|
|
18
|
+
const bad_request_error_1 = require("../../error/bad-request.error");
|
|
19
|
+
const not_found_error_1 = require("../../error/not-found.error");
|
|
20
|
+
const not_implemented_error_1 = require("../../error/not-implemented.error");
|
|
19
21
|
const server_1 = require("../../http/server");
|
|
20
22
|
const logger_1 = require("../../logger");
|
|
21
23
|
const schema_1 = require("../../schema");
|
|
22
24
|
const array_1 = require("../../utils/array");
|
|
23
|
-
const helpers_1 = require("../../utils/helpers");
|
|
24
25
|
const middleware_1 = require("../../utils/middleware");
|
|
26
|
+
const throw_1 = require("../../utils/throw");
|
|
25
27
|
const type_guards_1 = require("../../utils/type-guards");
|
|
28
|
+
const units_1 = require("../../utils/units");
|
|
26
29
|
require("urlpattern-polyfill");
|
|
27
30
|
const types_1 = require("../types");
|
|
31
|
+
const utils_1 = require("../utils");
|
|
28
32
|
const api_controller_1 = require("./api-controller");
|
|
29
33
|
const error_handler_1 = require("./error-handler");
|
|
30
34
|
const middlewares_1 = require("./middlewares");
|
|
31
35
|
const tokens_1 = require("./tokens");
|
|
36
|
+
const defaultMaxBytes = 10 * units_1.mebibyte;
|
|
32
37
|
/**
|
|
33
38
|
* router for {@link ApiTransport} requests to {@link ApiImplementation}
|
|
34
39
|
* @todo error handling (standardized format, serialization etc.)
|
|
35
40
|
*/
|
|
36
41
|
let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
37
|
-
constructor(logger, options) {
|
|
42
|
+
constructor(logger, options = {}) {
|
|
38
43
|
this.logger = logger;
|
|
39
|
-
this.
|
|
44
|
+
this.options = options;
|
|
45
|
+
this.prefix = options.prefix ?? 'api/';
|
|
40
46
|
this.apis = new Map();
|
|
41
|
-
this.middlewares = options
|
|
42
|
-
this.supressedErrors = new Set(options
|
|
47
|
+
this.middlewares = options.middlewares ?? [];
|
|
48
|
+
this.supressedErrors = new Set(options.supressedErrors);
|
|
43
49
|
this.catchErrorMiddleware = (0, middlewares_1.catchErrorMiddleware)(this.supressedErrors, logger);
|
|
44
50
|
this.updateMiddleware();
|
|
45
51
|
}
|
|
@@ -58,21 +64,19 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
58
64
|
this.registerApi(definition, instance);
|
|
59
65
|
}
|
|
60
66
|
registerApi(definition, implementation) {
|
|
61
|
-
const base = definition.resource;
|
|
62
67
|
for (const [name, endpointDefinition] of (0, types_1.normalizedApiDefinitionEndpointsEntries)(definition.endpoints)) {
|
|
63
68
|
const versionArray = (0, type_guards_1.isUndefined)(endpointDefinition.version) ? [1] : (0, array_1.toArray)(endpointDefinition.version);
|
|
64
69
|
for (const version of versionArray) {
|
|
65
|
-
const
|
|
66
|
-
const resource = (endpointDefinition.resource == types_1.rootResource) ? `${this.prefix}${versionPrefix}${base}` : `${this.prefix}${versionPrefix}${base}/${endpointDefinition.resource ?? name}`;
|
|
70
|
+
const resource = (0, utils_1.getFullApiEndpointResource)({ api: definition, endpoint: endpointDefinition, prefix: this.prefix, explicitVersion: version });
|
|
67
71
|
const methods = (0, type_guards_1.isArray)(endpointDefinition.method) ? endpointDefinition.method : [endpointDefinition.method ?? 'GET'];
|
|
68
72
|
if (methods.length == 0) {
|
|
69
|
-
throw new Error(`No method provided for resource ${resource}
|
|
73
|
+
throw new Error(`No method provided for resource ${resource}.`);
|
|
70
74
|
}
|
|
71
75
|
let resourceApis = this.apis.get(resource);
|
|
72
76
|
if ((0, type_guards_1.isUndefined)(resourceApis)) {
|
|
73
77
|
resourceApis = {
|
|
74
78
|
resource,
|
|
75
|
-
pattern: new
|
|
79
|
+
pattern: new URLPattern({
|
|
76
80
|
pathname: resource,
|
|
77
81
|
baseURL: 'http://localhost',
|
|
78
82
|
username: '*',
|
|
@@ -87,7 +91,7 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
87
91
|
};
|
|
88
92
|
this.apis.set(resource, resourceApis);
|
|
89
93
|
}
|
|
90
|
-
const endpointImplementation = implementation[name]?.bind(implementation) ?? (0,
|
|
94
|
+
const endpointImplementation = implementation[name]?.bind(implementation) ?? (0, throw_1.deferThrow)(new not_implemented_error_1.NotImplementedError(`Endpoint ${name} for resource ${resource} not implemented.`));
|
|
91
95
|
for (const method of methods) {
|
|
92
96
|
resourceApis.endpoints.set(method, { definition: endpointDefinition, implementation: endpointImplementation });
|
|
93
97
|
}
|
|
@@ -119,21 +123,22 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
119
123
|
}
|
|
120
124
|
return { api, patternResult: result };
|
|
121
125
|
}
|
|
122
|
-
throw new
|
|
126
|
+
throw new not_found_error_1.NotFoundError(`Resource ${resource.pathname} not available.`);
|
|
123
127
|
}
|
|
124
128
|
updateMiddleware() {
|
|
125
|
-
const middlewares = [middlewares_1.responseTimeMiddleware, middlewares_1.corsMiddleware, middlewares_1.allowedMethodsMiddleware, this.catchErrorMiddleware, ...this.middlewares];
|
|
129
|
+
const middlewares = [middlewares_1.responseTimeMiddleware, (0, middlewares_1.corsMiddleware)(this.options.cors), middlewares_1.allowedMethodsMiddleware, this.catchErrorMiddleware, ...this.middlewares];
|
|
126
130
|
this.handler = (0, middleware_1.composeAsyncMiddleware)(middlewares, async (request, context) => this.middlewareHandler(request, context));
|
|
127
131
|
}
|
|
128
132
|
async middlewareHandler(request, context) {
|
|
133
|
+
const readBodyOptions = { maxBytes: context.endpoint.definition.maxBytes ?? this.options.defaultMaxBytes ?? defaultMaxBytes };
|
|
129
134
|
const body = (0, type_guards_1.isDefined)(context.endpoint.definition.body)
|
|
130
|
-
? await this.getBody(request, context.endpoint.definition.body)
|
|
135
|
+
? await this.getBody(request, readBodyOptions, context.endpoint.definition.body)
|
|
131
136
|
: undefined;
|
|
132
137
|
const bodyAsParameters = ((0, type_guards_1.isUndefined)(context.endpoint.definition.body) && (request.headers.contentType?.includes('json') == true))
|
|
133
|
-
? await request.
|
|
138
|
+
? await request.body.readAsJson(readBodyOptions)
|
|
134
139
|
: undefined;
|
|
135
140
|
if ((0, type_guards_1.isDefined)(bodyAsParameters) && !(0, type_guards_1.isObject)(bodyAsParameters)) {
|
|
136
|
-
throw new
|
|
141
|
+
throw new bad_request_error_1.BadRequestError('Expected json object as body.');
|
|
137
142
|
}
|
|
138
143
|
const parameters = { ...request.query.asObject(), ...bodyAsParameters, ...context.resourcePatternResult.pathname.groups };
|
|
139
144
|
const validatedParameters = (0, type_guards_1.isDefined)(context.endpoint.definition.parameters)
|
|
@@ -141,7 +146,7 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
141
146
|
: parameters;
|
|
142
147
|
const requestData = {
|
|
143
148
|
parameters: validatedParameters,
|
|
144
|
-
body
|
|
149
|
+
body,
|
|
145
150
|
request
|
|
146
151
|
};
|
|
147
152
|
const result = await context.endpoint.implementation(requestData);
|
|
@@ -149,19 +154,39 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
149
154
|
return result;
|
|
150
155
|
}
|
|
151
156
|
const response = new server_1.HttpServerResponse({
|
|
152
|
-
body: (0, type_guards_1.
|
|
153
|
-
: (0, type_guards_1.
|
|
154
|
-
: {
|
|
157
|
+
body: (0, type_guards_1.isUint8Array)(result) ? { buffer: result }
|
|
158
|
+
: (0, type_guards_1.isBlob)(result) ? { stream: result.stream() }
|
|
159
|
+
: (0, type_guards_1.isReadableStream)(result) ? { stream: result }
|
|
160
|
+
: (context.endpoint.definition.result == String) ? { text: result }
|
|
161
|
+
: { json: result }
|
|
155
162
|
});
|
|
156
163
|
return response;
|
|
157
164
|
}
|
|
158
|
-
async getBody(request, schema) {
|
|
159
|
-
|
|
160
|
-
if (
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
+
async getBody(request, options, schema) {
|
|
166
|
+
let body;
|
|
167
|
+
if (request.hasBody) {
|
|
168
|
+
if (schema == ReadableStream) {
|
|
169
|
+
body = request.body.readAsBinaryStream(options);
|
|
170
|
+
}
|
|
171
|
+
else if (schema == Uint8Array) {
|
|
172
|
+
body = await request.body.readAsBuffer(options);
|
|
173
|
+
}
|
|
174
|
+
else if (schema == Blob) {
|
|
175
|
+
const buffer = await request.body.readAsBuffer(options);
|
|
176
|
+
body = new Blob([buffer], { type: request.headers.contentType });
|
|
177
|
+
}
|
|
178
|
+
else if (schema == String) {
|
|
179
|
+
body = await request.body.readAsText(options);
|
|
180
|
+
}
|
|
181
|
+
else if (request.headers.contentType?.startsWith('text') == true) {
|
|
182
|
+
body = await request.body.readAsText(options);
|
|
183
|
+
}
|
|
184
|
+
else if (request.headers.contentType?.includes('json') == true) {
|
|
185
|
+
body = await request.body.readAsJson(options);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
body = await request.body.readAsBuffer(options);
|
|
189
|
+
}
|
|
165
190
|
}
|
|
166
191
|
return schema_1.Schema.parse(schema, body);
|
|
167
192
|
}
|
|
@@ -175,13 +200,4 @@ ApiGateway = ApiGateway_1 = __decorate([
|
|
|
175
200
|
__metadata("design:paramtypes", [logger_1.Logger, Object])
|
|
176
201
|
], ApiGateway);
|
|
177
202
|
exports.ApiGateway = ApiGateway;
|
|
178
|
-
async function getRequestBody(request) {
|
|
179
|
-
if (request.headers.contentType?.startsWith('text') == true) {
|
|
180
|
-
return request.bodyAsText();
|
|
181
|
-
}
|
|
182
|
-
if (request.headers.contentType?.includes('json') == true) {
|
|
183
|
-
return request.bodyAsJson();
|
|
184
|
-
}
|
|
185
|
-
return request.bodyAsBytes();
|
|
186
|
-
}
|
|
187
203
|
//# sourceMappingURL=gateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../source/api/server/gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,+CAA+F;AAC/F,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../source/api/server/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ const type_guards_1 = require("../../../utils/type-guards");
|
|
|
7
7
|
async function allowedMethodsMiddleware(request, next, context) {
|
|
8
8
|
if (request.method != 'OPTIONS') {
|
|
9
9
|
if ((0, type_guards_1.isUndefined)(context.endpoint)) {
|
|
10
|
-
throw new method_not_allowed_error_1.MethodNotAllowedError(`
|
|
10
|
+
throw new method_not_allowed_error_1.MethodNotAllowedError(`Method ${request.method} for resource ${context.api.resource} not available.`);
|
|
11
11
|
}
|
|
12
12
|
return next(request);
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowed-methods.middleware.js","sourceRoot":"","sources":["../../../../source/api/server/middlewares/allowed-methods.middleware.ts"],"names":[],"mappings":";;;AAAA,sFAAyE;AAEzE,iDAAmD;AAEnD,4DAAkD;AAG3C,KAAK,UAAU,wBAAwB,CAAC,OAA0B,EAAE,IAAgE,EAAE,OAAoC;IAC/K,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE;QAC/B,IAAI,IAAA,yBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjC,MAAM,IAAI,gDAAqB,CAAC,UAAU,OAAO,CAAC,MAAM,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"allowed-methods.middleware.js","sourceRoot":"","sources":["../../../../source/api/server/middlewares/allowed-methods.middleware.ts"],"names":[],"mappings":";;;AAAA,sFAAyE;AAEzE,iDAAmD;AAEnD,4DAAkD;AAG3C,KAAK,UAAU,wBAAwB,CAAC,OAA0B,EAAE,IAAgE,EAAE,OAAoC;IAC/K,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE;QAC/B,IAAI,IAAA,yBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjC,MAAM,IAAI,gDAAqB,CAAC,UAAU,OAAO,CAAC,MAAM,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,CAAC;SACjH;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;KACtB;IAED,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElE,OAAO,2BAAkB,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,YAAY;QAC3B,OAAO,EAAE;YACP,KAAK,EAAE,YAAY;SACpB;KACF,CAAC,CAAC;AACL,CAAC;AAlBD,4DAkBC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { ApiEndpointDefinitionCors } from "../../types";
|
|
2
|
+
import type { ApiGatewayMiddleware } from '../gateway';
|
|
3
|
+
export declare type CorsMiddlewareOptions = {
|
|
4
|
+
default?: ApiEndpointDefinitionCors;
|
|
5
|
+
};
|
|
6
|
+
export declare function corsMiddleware(options?: CorsMiddlewareOptions): ApiGatewayMiddleware;
|
|
@@ -3,39 +3,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.corsMiddleware = void 0;
|
|
4
4
|
const types_1 = require("../../types");
|
|
5
5
|
const type_guards_1 = require("../../../utils/type-guards");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
6
|
+
function corsMiddleware(options = {}) {
|
|
7
|
+
// eslint-disable-next-line max-statements, @typescript-eslint/no-shadow
|
|
8
|
+
async function corsMiddleware(request, next, context) {
|
|
9
|
+
const response = await next(request);
|
|
10
|
+
const requestMethod = request.headers.tryGetSingle('Access-Control-Request-Method') ?? request.method;
|
|
11
|
+
const cors = { ...options.default, ...context.api.endpoints.get(requestMethod)?.definition.cors };
|
|
12
|
+
if (request.method == 'OPTIONS') {
|
|
13
|
+
const allowMethods = (await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowMethods)) ?? [...context.api.endpoints.keys()].join(', ');
|
|
14
|
+
const allowCredentials = (0, type_guards_1.isDefined)(cors.accessControlAllowCredentials) && (await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowCredentials));
|
|
15
|
+
response.headers.setIfMissing('Access-Control-Allow-Methods', allowMethods);
|
|
16
|
+
if (allowCredentials) {
|
|
17
|
+
response.headers.setIfMissing('Access-Control-Allow-Credentials', 'true');
|
|
18
|
+
}
|
|
19
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlAllowHeaders)) {
|
|
20
|
+
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowHeaders);
|
|
21
|
+
response.headers.setIfMissing('Access-Control-Allow-Headers', value);
|
|
22
|
+
}
|
|
23
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlExposeHeaders)) {
|
|
24
|
+
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlExposeHeaders);
|
|
25
|
+
response.headers.setIfMissing('Access-Control-Expose-Headers', value);
|
|
26
|
+
}
|
|
27
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlMaxAge)) {
|
|
28
|
+
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlMaxAge);
|
|
29
|
+
response.headers.setIfMissing('Access-Control-Max-Age', value);
|
|
30
|
+
}
|
|
24
31
|
}
|
|
25
|
-
if ((0, type_guards_1.isDefined)(cors.
|
|
26
|
-
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.
|
|
27
|
-
response.headers.setIfMissing('Access-Control-
|
|
32
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlAllowOrigin)) {
|
|
33
|
+
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowOrigin);
|
|
34
|
+
response.headers.setIfMissing('Access-Control-Allow-Origin', value);
|
|
28
35
|
}
|
|
29
|
-
|
|
30
|
-
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlMaxAge);
|
|
31
|
-
response.headers.setIfMissing('Access-Control-Max-Age', value);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if ((0, type_guards_1.isDefined)(cors.accessControlAllowOrigin)) {
|
|
35
|
-
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowOrigin);
|
|
36
|
-
response.headers.setIfMissing('Access-Control-Allow-Origin', value);
|
|
36
|
+
return response;
|
|
37
37
|
}
|
|
38
|
-
return
|
|
38
|
+
return corsMiddleware;
|
|
39
39
|
}
|
|
40
40
|
exports.corsMiddleware = corsMiddleware;
|
|
41
41
|
//# sourceMappingURL=cors.middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.middleware.js","sourceRoot":"","sources":["../../../../source/api/server/middlewares/cors.middleware.ts"],"names":[],"mappings":";;;AACA,uCAA6D;AAG7D,
|
|
1
|
+
{"version":3,"file":"cors.middleware.js","sourceRoot":"","sources":["../../../../source/api/server/middlewares/cors.middleware.ts"],"names":[],"mappings":";;;AACA,uCAA6D;AAG7D,4DAAgD;AAOhD,SAAgB,cAAc,CAAC,UAAiC,EAAE;IAChE,wEAAwE;IACxE,KAAK,UAAU,cAAc,CAAC,OAA0B,EAAE,IAAgE,EAAE,OAAoC;QAC9J,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,+BAA+B,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;QACtG,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAkC,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QAEvH,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE;YAC/B,MAAM,YAAY,GAAG,CAAC,MAAM,IAAA,sCAA8B,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9J,MAAM,gBAAgB,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,IAAA,sCAA8B,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAEvK,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;YAE5E,IAAI,gBAAgB,EAAE;gBACpB,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;aAC3E;YAED,IAAI,IAAA,uBAAS,EAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE;gBAC7C,MAAM,KAAK,GAAG,MAAM,IAAA,sCAA8B,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACrG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;aACtE;YAED,IAAI,IAAA,uBAAS,EAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;gBAC9C,MAAM,KAAK,GAAG,MAAM,IAAA,sCAA8B,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACtG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;aACvE;YAED,IAAI,IAAA,uBAAS,EAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;gBACvC,MAAM,KAAK,GAAG,MAAM,IAAA,sCAA8B,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC/F,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;aAChE;SACF;QAED,IAAI,IAAA,uBAAS,EAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,IAAA,sCAA8B,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACpG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;SACrE;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AA3CD,wCA2CC"}
|