From fa6d45da749c2e1a1cb249eb1d55e17e7f4db744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20My=C5=9Bliwiec?= Date: Mon, 9 Feb 2026 14:10:04 +0100 Subject: [PATCH] build: migrate from cjs to esm --- .circleci/config.yml | 82 +- CONTRIBUTING.md | 5 +- gulpfile.js | 16 - gulpfile.mjs | 13 + hooks/ts-node-register.mjs | 12 + integration/auto-mock/src/bar.service.ts | 2 +- .../auto-mock/test/bar.service.spec.ts | 8 +- integration/auto-mock/tsconfig.json | 3 +- integration/cors/e2e/express.spec.ts | 4 +- integration/cors/e2e/fastify.spec.ts | 4 +- integration/cors/src/app.module.ts | 2 +- integration/cors/tsconfig.json | 3 +- .../discovery/e2e/discover-by-meta.spec.ts | 6 +- integration/discovery/src/app.module.ts | 4 +- .../src/my-webhook/cleanup.webhook.ts | 2 +- .../discovery/src/my-webhook/flush.webhook.ts | 2 +- .../src/my-webhook/my-webhook.module.ts | 4 +- .../discovery/src/webhooks.explorer.ts | 2 +- integration/discovery/tsconfig.json | 3 +- .../graphql-code-first/e2e/code-first.spec.ts | 4 +- .../e2e/guards-filters.spec.ts | 4 +- .../graphql-code-first/e2e/pipes.spec.ts | 4 +- .../graphql-code-first/src/app.module.ts | 2 +- integration/graphql-code-first/src/main.ts | 2 +- .../src/recipes/recipes.module.ts | 8 +- .../src/recipes/recipes.resolver.ts | 12 +- .../src/recipes/recipes.service.ts | 6 +- integration/graphql-code-first/tsconfig.json | 3 +- .../e2e/graphql-async-class.spec.ts | 4 +- .../e2e/graphql-async-existing.spec.ts | 4 +- .../e2e/graphql-async.spec.ts | 4 +- .../e2e/graphql-request-scoped.spec.ts | 10 +- .../graphql-schema-first/e2e/graphql.spec.ts | 4 +- .../graphql-schema-first/src/app.module.ts | 4 +- .../src/async-options-class.module.ts | 4 +- .../src/async-options-existing.module.ts | 6 +- .../src/async-options.module.ts | 4 +- .../src/cats/cats-request-scoped.service.ts | 2 +- .../src/cats/cats.module.ts | 6 +- .../src/cats/cats.resolvers.ts | 6 +- .../src/cats/cats.service.ts | 2 +- .../graphql-schema-first/src/config.module.ts | 2 +- .../src/config.service.ts | 2 +- integration/graphql-schema-first/src/main.ts | 2 +- .../graphql-schema-first/tsconfig.json | 3 +- .../hello-world/e2e/exceptions.spec.ts | 4 +- .../e2e/exclude-middleware-fastify.spec.ts | 4 +- .../e2e/exclude-middleware.spec.ts | 4 +- .../hello-world/e2e/express-instance.spec.ts | 6 +- .../hello-world/e2e/express-multiple.spec.ts | 6 +- .../hello-world/e2e/fastify-adapter.spec.ts | 2 +- .../hello-world/e2e/fastify-multiple.spec.ts | 2 +- .../hello-world/e2e/force-console.spec.ts | 4 +- integration/hello-world/e2e/guards.spec.ts | 4 +- .../hello-world/e2e/hello-world.spec.ts | 4 +- .../hello-world/e2e/interceptors.spec.ts | 4 +- .../hello-world/e2e/local-pipes.spec.ts | 4 +- .../hello-world/e2e/middleware-class.spec.ts | 4 +- .../e2e/middleware-execute-order.spec.ts | 2 +- .../e2e/middleware-fastify.spec.ts | 4 +- .../e2e/middleware-run-match-route.ts | 4 +- .../e2e/middleware-with-versioning.spec.ts | 8 +- .../hello-world/e2e/middleware.spec.ts | 4 +- .../e2e/router-module-middleware.spec.ts | 4 +- .../hello-world/e2e/router-module.spec.ts | 2 +- integration/hello-world/src/app.module.ts | 6 +- .../hello-world/src/hello/hello.controller.ts | 4 +- .../hello-world/src/hello/hello.module.ts | 6 +- .../src/hello/users/user-by-id.pipe.ts | 2 +- .../src/host-array/host-array.controller.ts | 4 +- .../src/host-array/host-array.module.ts | 6 +- .../src/host-array/users/user-by-id.pipe.ts | 2 +- .../hello-world/src/host/host.controller.ts | 4 +- .../hello-world/src/host/host.module.ts | 6 +- .../src/host/users/user-by-id.pipe.ts | 2 +- integration/hello-world/tsconfig.json | 3 +- .../hooks/e2e/enable-shutdown-hook.spec.ts | 41 +- integration/hooks/tsconfig.json | 3 +- .../injector/e2e/circular-modules.spec.ts | 8 +- .../e2e/circular-property-injection.spec.ts | 8 +- ...circular-structure-dynamic-modules.spec.ts | 4 +- integration/injector/e2e/circular.spec.ts | 6 +- .../injector/e2e/core-injectables.spec.ts | 2 +- .../injector/e2e/default-values.spec.ts | 4 +- integration/injector/e2e/injector.spec.ts | 25 +- .../injector/e2e/introspection.spec.ts | 6 +- .../injector/e2e/multiple-providers.spec.ts | 2 +- .../e2e/optional-factory-provider-dep.spec.ts | 2 +- .../injector/e2e/property-injection.spec.ts | 8 +- .../injector/e2e/scoped-instances.spec.ts | 12 +- integration/injector/src/app.module.ts | 2 +- .../src/circular-modules/circular.module.ts | 4 +- .../src/circular-modules/circular.service.ts | 12 +- .../src/circular-modules/input.module.ts | 4 +- .../src/circular-modules/input.service.ts | 15 +- .../circular-properties.module.ts | 4 +- .../circular-properties/circular.service.ts | 10 +- .../input-properties.module.ts | 4 +- .../src/circular-properties/input.service.ts | 12 +- .../circular.module.ts | 2 +- .../injector/src/circular/circular.module.ts | 4 +- .../injector/src/circular/circular.service.ts | 12 +- .../injector/src/circular/input.service.ts | 14 +- .../injector/src/defaults/defaults.module.ts | 2 +- .../injector/src/defaults/defaults.service.ts | 2 +- .../injector/src/exports/exports.module.ts | 2 +- .../injector/src/inject/inject.module.ts | 2 +- .../injector/src/inject/inject.service.ts | 2 +- .../multiple-providers.module.ts | 6 +- .../src/properties/properties.module.ts | 4 +- .../src/properties/properties.service.ts | 2 +- .../injector/src/scoped/scoped.module.ts | 10 +- .../injector/src/scoped/transient.service.ts | 2 +- .../injector/src/scoped/transient3.service.ts | 2 +- integration/injector/tsconfig.json | 3 +- .../inspector/e2e/graph-inspector.spec.ts | 18 +- integration/inspector/src/app.module.ts | 30 +- .../inspector/src/cats/cats.controller.ts | 10 +- integration/inspector/src/cats/cats.module.ts | 4 +- .../inspector/src/cats/cats.service.ts | 2 +- .../inspector/src/chat/chat.gateway.ts | 6 +- integration/inspector/src/chat/chat.module.ts | 4 +- .../inspector/src/chat/chat.service.ts | 4 +- .../inspector/src/chat/dto/update-chat.dto.ts | 2 +- .../src/circular-hello/hello.controller.ts | 10 +- .../src/circular-hello/hello.module.ts | 6 +- .../circular-hello/users/user-by-id.pipe.ts | 2 +- .../src/circular-modules/circular.module.ts | 4 +- .../src/circular-modules/circular.service.ts | 2 +- .../src/circular-modules/input.module.ts | 4 +- .../src/circular-modules/input.service.ts | 2 +- integration/inspector/src/core/core.module.ts | 8 +- .../src/database/database.controller.ts | 6 +- .../inspector/src/database/database.module.ts | 4 +- .../src/database/database.service.ts | 4 +- .../src/database/dto/update-database.dto.ts | 2 +- .../inspector/src/defaults/defaults.module.ts | 2 +- .../src/defaults/defaults.service.ts | 2 +- .../inspector/src/dogs/dogs.controller.ts | 6 +- integration/inspector/src/dogs/dogs.module.ts | 4 +- .../inspector/src/dogs/dogs.service.ts | 4 +- .../inspector/src/dogs/dto/update-dog.dto.ts | 2 +- .../src/durable/durable.controller.ts | 2 +- .../inspector/src/durable/durable.module.ts | 4 +- .../dto/update-external-svc.dto.ts | 2 +- .../external-svc/external-svc.controller.ts | 6 +- .../src/external-svc/external-svc.module.ts | 4 +- .../src/external-svc/external-svc.service.ts | 4 +- .../src/properties/properties.module.ts | 4 +- .../src/properties/properties.service.ts | 2 +- .../src/request-chain/helper/helper.module.ts | 2 +- .../interceptors/logging.interceptor.ts | 2 +- .../request-chain/request-chain.controller.ts | 4 +- .../src/request-chain/request-chain.module.ts | 6 +- .../request-chain/request-chain.service.ts | 2 +- .../src/users/dto/update-user.dto.ts | 2 +- .../inspector/src/users/users.controller.ts | 6 +- .../inspector/src/users/users.module.ts | 4 +- .../inspector/src/users/users.service.ts | 4 +- integration/inspector/tsconfig.json | 3 +- .../e2e/lazy-import-global-modules.spec.ts | 7 +- .../e2e/lazy-import-request-providers.spec.ts | 4 +- .../lazy-import-transient-providers.spec.ts | 8 +- integration/lazy-modules/src/app.module.ts | 6 +- integration/lazy-modules/src/eager.module.ts | 2 +- .../lazy-modules/src/lazy.controller.ts | 8 +- integration/lazy-modules/src/lazy.module.ts | 2 +- integration/lazy-modules/src/main.ts | 2 +- .../lazy-modules/src/request.module.ts | 6 +- .../lazy-modules/src/request.service.ts | 2 +- .../lazy-modules/src/transient.module.ts | 6 +- .../lazy-modules/src/transient.service.ts | 2 +- integration/lazy-modules/tsconfig.json | 3 +- .../microservices/e2e/broadcast-mqtt.spec.ts | 4 +- .../microservices/e2e/broadcast-nats.spec.ts | 4 +- .../microservices/e2e/broadcast-redis.spec.ts | 4 +- .../e2e/concurrent-kafka.spec.ts | 6 +- .../e2e/disconnected-client.spec.ts | 4 +- .../e2e/fanout-exchange-rmq.spec.ts | 6 +- .../microservices/e2e/math-grpc.spec.ts | 12 +- .../e2e/mqtt-record-builder.spec.ts | 4 +- .../microservices/e2e/orders-grpc.spec.ts | 12 +- .../microservices/e2e/sum-kafka.spec.ts | 12 +- .../microservices/e2e/sum-mqtt.spec.ts | 4 +- .../microservices/e2e/sum-nats.spec.ts | 6 +- .../microservices/e2e/sum-redis.spec.ts | 4 +- integration/microservices/e2e/sum-rmq.spec.ts | 4 +- .../microservices/e2e/sum-rpc-tls.spec.ts | 16 +- integration/microservices/e2e/sum-rpc.spec.ts | 6 +- .../e2e/topic-exchange-rmq.spec.ts | 4 +- integration/microservices/src/app.module.ts | 2 +- .../grpc-advanced/advanced.grpc.controller.ts | 2 +- .../microservices/src/grpc/grpc.controller.ts | 8 +- .../kafka-concurrent.controller.ts | 2 +- .../src/kafka/dtos/business.dto.ts | 2 +- .../src/kafka/entities/business.entity.ts | 4 +- .../src/kafka/entities/user.entity.ts | 2 +- .../src/kafka/kafka.controller.ts | 4 +- .../src/kafka/kafka.messages.controller.ts | 10 +- integration/microservices/src/main.ts | 2 +- .../microservices/src/nats/nats.controller.ts | 2 +- .../src/tcp-tls/app.controller.ts | 5 +- .../microservices/src/tcp-tls/app.module.ts | 6 +- integration/microservices/tsconfig.json | 3 +- .../src/integration.module-definition.ts | 2 +- .../module-utils/src/integration.module.ts | 4 +- .../test/integration-module.spec.ts | 2 +- integration/module-utils/tsconfig.json | 3 +- .../mongoose/e2e/async-class-options.spec.ts | 4 +- .../e2e/async-existing-options.spec.ts | 4 +- .../mongoose/e2e/async-options.spec.ts | 4 +- integration/mongoose/e2e/mongoose.spec.ts | 4 +- integration/mongoose/src/app.module.ts | 2 +- .../src/async-class-options.module.ts | 2 +- .../src/async-existing-options.module.ts | 2 +- .../mongoose/src/async-options.module.ts | 2 +- .../mongoose/src/cats/cats.controller.ts | 6 +- integration/mongoose/src/cats/cats.module.ts | 6 +- integration/mongoose/src/cats/cats.service.ts | 4 +- .../mongoose/src/cats/schemas/cat.schema.ts | 2 +- integration/mongoose/src/main.ts | 2 +- integration/mongoose/tsconfig.json | 3 +- .../app-locals/e2e/express.spec.ts | 4 +- .../app-locals/src/app.module.ts | 2 +- .../nest-application/app-locals/tsconfig.json | 3 +- .../get-url/e2e/express.spec.ts | 6 +- .../get-url/e2e/fastify.spec.ts | 4 +- .../get-url/src/app.controller.ts | 2 +- .../get-url/src/app.module.ts | 4 +- .../nest-application/get-url/tsconfig.json | 3 +- .../global-prefix/e2e/global-prefix.spec.ts | 4 +- .../global-prefix/src/app.module.ts | 2 +- .../global-prefix/tsconfig.json | 3 +- .../listen/e2e/express.spec.ts | 4 +- .../listen/e2e/fastify.spec.ts | 2 +- .../listen/src/app.controller.ts | 2 +- .../nest-application/listen/src/app.module.ts | 4 +- .../nest-application/listen/tsconfig.json | 3 +- .../raw-body/e2e/express.spec.ts | 4 +- .../raw-body/e2e/fastify.spec.ts | 2 +- .../raw-body/src/express.module.ts | 2 +- .../raw-body/src/fastify.module.ts | 2 +- .../nest-application/raw-body/tsconfig.json | 3 +- .../nest-application/sse/e2e/express.spec.ts | 2 +- .../nest-application/sse/e2e/fastify.spec.ts | 2 +- .../nest-application/sse/src/app.module.ts | 2 +- .../nest-application/sse/tsconfig.json | 3 +- .../use-body-parser/e2e/express.spec.ts | 4 +- .../use-body-parser/e2e/fastify.spec.ts | 2 +- .../use-body-parser/src/app.module.ts | 2 +- .../use-body-parser/tsconfig.json | 3 +- integration/repl/e2e/repl-process.spec.ts | 4 +- integration/repl/e2e/repl.spec.ts | 8 +- integration/repl/src/app.module.ts | 2 +- .../repl/src/database/database.module.ts | 2 +- .../repl/src/long-living-app.module.ts | 2 +- integration/repl/src/repl.ts | 2 +- .../repl/src/users/dto/update-user.dto.ts | 2 +- .../repl/src/users/users.controller.ts | 6 +- integration/repl/src/users/users.module.ts | 6 +- integration/repl/src/users/users.service.ts | 6 +- integration/repl/tsconfig.json | 3 +- .../scopes/e2e/circular-request-scope.spec.ts | 10 +- .../e2e/circular-transient-scope.spec.ts | 10 +- .../scopes/e2e/durable-providers.spec.ts | 6 +- .../scopes/e2e/inject-inquirer.spec.ts | 4 +- .../scopes/e2e/msvc-request-scope.spec.ts | 12 +- .../scopes/e2e/request-modules-scope.spec.ts | 6 +- integration/scopes/e2e/request-scope.spec.ts | 14 +- integration/scopes/e2e/resolve-scoped.spec.ts | 6 +- .../scopes/e2e/transient-scope.spec.ts | 16 +- integration/scopes/src/app.module.ts | 2 +- .../src/circular-hello/hello.controller.ts | 10 +- .../scopes/src/circular-hello/hello.module.ts | 6 +- .../circular-hello/users/user-by-id.pipe.ts | 2 +- .../circular-transient/hello.controller.ts | 10 +- .../src/circular-transient/hello.module.ts | 8 +- .../src/circular-transient/test.controller.ts | 6 +- .../scopes/src/durable/durable.controller.ts | 4 +- .../scopes/src/durable/durable.guard.ts | 2 +- .../scopes/src/durable/durable.module.ts | 8 +- .../scopes/src/durable/durable.service.ts | 2 +- .../scopes/src/durable/non-durable.service.ts | 2 +- .../scopes/src/hello/hello.controller.ts | 10 +- integration/scopes/src/hello/hello.module.ts | 6 +- .../scopes/src/hello/users/user-by-id.pipe.ts | 2 +- .../hello-request/hello-request.service.ts | 2 +- .../hello-transient.service.ts | 2 +- .../src/inject-inquirer/hello.controller.ts | 4 +- .../src/inject-inquirer/hello.module.ts | 10 +- integration/scopes/src/main.ts | 2 +- .../scopes/src/msvc/hello.controller.ts | 8 +- integration/scopes/src/msvc/hello.module.ts | 8 +- .../nested-transient/first-request.service.ts | 2 +- .../nested-transient.controller.ts | 4 +- .../nested-transient.module.ts | 10 +- .../second-request.service.ts | 2 +- .../transient-logger.service.ts | 2 +- .../src/request-chain/helper/helper.module.ts | 2 +- .../interceptors/logging.interceptor.ts | 2 +- .../request-chain/request-chain.controller.ts | 4 +- .../src/request-chain/request-chain.module.ts | 6 +- .../request-chain/request-chain.service.ts | 2 +- .../src/resolve-scoped/logger.service.ts | 2 +- .../resolve-scoped/request-logger.service.ts | 2 +- .../scopes/src/transient/hello.controller.ts | 10 +- .../scopes/src/transient/hello.module.ts | 8 +- .../scopes/src/transient/test.controller.ts | 6 +- integration/scopes/tsconfig.json | 3 +- integration/send-files/e2e/express.spec.ts | 6 +- integration/send-files/e2e/fastify.spec.ts | 2 +- integration/send-files/src/app.controller.ts | 4 +- integration/send-files/src/app.module.ts | 4 +- integration/send-files/src/app.service.ts | 2 +- integration/send-files/tsconfig.json | 3 +- .../circular-dependency/a.module.ts | 2 +- .../circular-dependency/b.module.ts | 2 +- .../e2e/modules-override.spec.ts | 4 +- .../testing-module-override/tsconfig.json | 3 +- .../typeorm/e2e/typeorm-async-class.spec.ts | 4 +- .../e2e/typeorm-async-existing.spec.ts | 4 +- .../typeorm/e2e/typeorm-async-options.spec.ts | 4 +- integration/typeorm/e2e/typeorm-async.spec.ts | 4 +- integration/typeorm/e2e/typeorm.spec.ts | 4 +- integration/typeorm/src/app-async.module.ts | 4 +- integration/typeorm/src/app.module.ts | 4 +- .../typeorm/src/async-class-options.module.ts | 4 +- .../src/async-existing-options.module.ts | 4 +- .../typeorm/src/async-options.module.ts | 4 +- integration/typeorm/src/database.module.ts | 2 +- integration/typeorm/src/main.ts | 2 +- .../typeorm/src/photo/photo.controller.ts | 4 +- integration/typeorm/src/photo/photo.module.ts | 6 +- .../typeorm/src/photo/photo.service.ts | 2 +- integration/typeorm/tsconfig.json | 3 +- .../e2e/custom-versioning-fastify.spec.ts | 4 +- .../versioning/e2e/custom-versioning.spec.ts | 4 +- .../versioning/e2e/default-versioning.spec.ts | 4 +- .../e2e/header-versioning-fastify.spec.ts | 4 +- .../versioning/e2e/header-versioning.spec.ts | 4 +- .../e2e/media-type-versioning-fastify.spec.ts | 4 +- .../e2e/media-type-versioning.spec.ts | 4 +- .../e2e/uri-versioning-fastify.spec.ts | 4 +- .../versioning/e2e/uri-versioning.spec.ts | 4 +- integration/versioning/src/app.module.ts | 20 +- integration/versioning/src/main.ts | 2 +- integration/versioning/tsconfig.json | 3 +- .../websockets/e2e/error-gateway.spec.ts | 2 +- .../websockets/e2e/gateway-ack.spec.ts | 2 +- integration/websockets/e2e/gateway.spec.ts | 8 +- integration/websockets/e2e/ws-gateway.spec.ts | 14 +- integration/websockets/src/app.gateway.ts | 4 +- integration/websockets/src/app.module.ts | 2 +- integration/websockets/src/server.gateway.ts | 2 +- integration/websockets/tsconfig.json | 3 +- package-lock.json | 986 +++++++++++++++--- package.json | 14 +- .../common/decorators/core/catch.decorator.ts | 4 +- .../decorators/core/controller.decorator.ts | 6 +- .../decorators/core/dependencies.decorator.ts | 2 +- .../core/exception-filters.decorator.ts | 10 +- packages/common/decorators/core/index.ts | 28 +- .../decorators/core/inject.decorator.ts | 6 +- .../decorators/core/injectable.decorator.ts | 9 +- .../decorators/core/optional.decorator.ts | 4 +- .../decorators/core/use-guards.decorator.ts | 10 +- .../core/use-interceptors.decorator.ts | 10 +- .../decorators/core/use-pipes.decorator.ts | 10 +- .../decorators/core/version.decorator.ts | 4 +- .../create-route-param-metadata.decorator.ts | 12 +- .../decorators/http/header.decorator.ts | 4 +- .../decorators/http/http-code.decorator.ts | 2 +- packages/common/decorators/http/index.ts | 16 +- .../decorators/http/redirect.decorator.ts | 2 +- .../decorators/http/render.decorator.ts | 2 +- .../http/request-mapping.decorator.ts | 4 +- .../decorators/http/route-params.decorator.ts | 10 +- .../common/decorators/http/sse.decorator.ts | 8 +- packages/common/decorators/index.ts | 6 +- .../decorators/modules/global.decorator.ts | 2 +- packages/common/decorators/modules/index.ts | 4 +- .../decorators/modules/module.decorator.ts | 4 +- packages/common/enums/index.ts | 8 +- .../exceptions/bad-gateway.exception.ts | 4 +- .../exceptions/bad-request.exception.ts | 4 +- .../common/exceptions/conflict.exception.ts | 4 +- .../common/exceptions/forbidden.exception.ts | 4 +- .../exceptions/gateway-timeout.exception.ts | 4 +- packages/common/exceptions/gone.exception.ts | 4 +- .../http-version-not-supported.exception.ts | 4 +- packages/common/exceptions/http.exception.ts | 6 +- .../exceptions/im-a-teapot.exception.ts | 4 +- packages/common/exceptions/index.ts | 46 +- .../internal-server-error.exception.ts | 4 +- .../method-not-allowed.exception.ts | 4 +- .../exceptions/misdirected.exception.ts | 4 +- .../exceptions/not-acceptable.exception.ts | 4 +- .../common/exceptions/not-found.exception.ts | 4 +- .../exceptions/not-implemented.exception.ts | 4 +- .../exceptions/payload-too-large.exception.ts | 4 +- .../precondition-failed.exception.ts | 4 +- .../exceptions/request-timeout.exception.ts | 4 +- .../service-unavailable.exception.ts | 4 +- .../exceptions/unauthorized.exception.ts | 4 +- .../unprocessable-entity.exception.ts | 4 +- .../unsupported-media-type.exception.ts | 4 +- packages/common/file-stream/index.ts | 2 +- .../common/file-stream/interfaces/index.ts | 4 +- .../common/file-stream/streamable-file.ts | 11 +- packages/common/index.ts | 20 +- .../common/interfaces/controllers/index.ts | 4 +- .../exception-filter-metadata.interface.ts | 4 +- .../exceptions/exception-filter.interface.ts | 2 +- .../common/interfaces/exceptions/index.ts | 10 +- ...rpc-exception-filter-metadata.interface.ts | 4 +- .../rpc-exception-filter.interface.ts | 2 +- .../ws-exception-filter.interface.ts | 2 +- .../external/transformer-package.interface.ts | 4 +- .../external/validator-package.interface.ts | 4 +- .../features/can-activate.interface.ts | 2 +- .../custom-route-param-factory.interface.ts | 2 +- .../features/execution-context.interface.ts | 4 +- .../features/nest-interceptor.interface.ts | 2 +- .../features/pipe-transform.interface.ts | 4 +- .../global-prefix-options.interface.ts | 2 +- packages/common/interfaces/hooks/index.ts | 10 +- .../http/http-redirect-response.interface.ts | 2 +- .../interfaces/http/http-server.interface.ts | 9 +- packages/common/interfaces/http/index.ts | 10 +- packages/common/interfaces/index.ts | 60 +- .../nest-microservice-options.interface.ts | 2 +- .../common/interfaces/middleware/index.ts | 8 +- .../middleware-config-proxy.interface.ts | 6 +- .../middleware-configuration.interface.ts | 6 +- .../middleware-consumer.interface.ts | 4 +- .../modules/dynamic-module.interface.ts | 4 +- packages/common/interfaces/modules/index.ts | 16 +- .../modules/injection-token.interface.ts | 4 +- .../modules/introspection-result.interface.ts | 2 +- .../modules/module-metadata.interface.ts | 10 +- .../modules/nest-module.interface.ts | 2 +- .../optional-factory-dependency.interface.ts | 2 +- .../interfaces/modules/provider.interface.ts | 8 +- ...t-application-context-options.interface.ts | 2 +- .../nest-application-context.interface.ts | 12 +- .../nest-application-options.interface.ts | 6 +- .../interfaces/nest-application.interface.ts | 16 +- .../interfaces/nest-microservice.interface.ts | 12 +- .../interfaces/version-options.interface.ts | 2 +- .../configurable-module.builder.ts | 15 +- packages/common/module-utils/index.ts | 4 +- ...igurable-module-async-options.interface.ts | 4 +- .../configurable-module-cls.interface.ts | 6 +- .../configurable-module-host.interface.ts | 4 +- .../common/module-utils/interfaces/index.ts | 6 +- .../generate-options-injection-token.util.ts | 2 +- .../utils/get-injection-providers.util.ts | 4 +- packages/common/module-utils/utils/index.ts | 4 +- packages/common/package.json | 6 + packages/common/pipes/default-value.pipe.ts | 6 +- .../common/pipes/file/file-type.validator.ts | 20 +- .../file/file-validator-context.interface.ts | 2 +- .../pipes/file/file-validator.interface.ts | 2 +- packages/common/pipes/file/index.ts | 12 +- .../common/pipes/file/interfaces/index.ts | 2 +- .../pipes/file/max-file-size.validator.ts | 6 +- .../file/parse-file-options.interface.ts | 4 +- .../pipes/file/parse-file-pipe.builder.ts | 10 +- packages/common/pipes/file/parse-file.pipe.ts | 14 +- packages/common/pipes/index.ts | 20 +- packages/common/pipes/parse-array.pipe.ts | 16 +- packages/common/pipes/parse-bool.pipe.ts | 12 +- packages/common/pipes/parse-date.pipe.ts | 10 +- packages/common/pipes/parse-enum.pipe.ts | 10 +- packages/common/pipes/parse-float.pipe.ts | 10 +- packages/common/pipes/parse-int.pipe.ts | 12 +- packages/common/pipes/parse-uuid.pipe.ts | 12 +- packages/common/pipes/validation.pipe.ts | 50 +- .../class-serializer.interceptor.ts | 41 +- .../serializer/class-serializer.interfaces.ts | 4 +- .../common/serializer/decorators/index.ts | 2 +- .../decorators/serialize-options.decorator.ts | 6 +- packages/common/serializer/index.ts | 6 +- .../common/services/console-logger.service.ts | 10 +- packages/common/services/index.ts | 6 +- packages/common/services/logger.service.ts | 8 +- .../services/utils/filter-log-levels.util.ts | 4 +- packages/common/services/utils/index.ts | 6 +- .../utils/is-log-level-enabled.util.ts | 2 +- .../services/utils/is-log-level.util.ts | 2 +- .../test/decorators/apply-decorators.spec.ts | 6 +- .../test/decorators/bind.decorator.spec.ts | 6 +- .../test/decorators/catch.decorator.spec.ts | 4 +- .../decorators/controller.decorator.spec.ts | 4 +- .../decorators/create-param-decorator.spec.ts | 6 +- .../decorators/dependencies.decorator.spec.ts | 4 +- .../exception-filters.decorator.spec.ts | 6 +- .../test/decorators/global.decorator.spec.ts | 4 +- .../test/decorators/header.decorator.spec.ts | 4 +- .../decorators/http-code.decorator.spec.ts | 4 +- .../test/decorators/inject.decorator.spec.ts | 4 +- .../decorators/injectable.decorator.spec.ts | 7 +- .../test/decorators/module.decorator.spec.ts | 2 +- .../decorators/redirect.decorator.spec.ts | 6 +- .../test/decorators/render.decorator.spec.ts | 4 +- .../request-mapping.decorator.spec.ts | 4 +- .../decorators/route-params.decorator.spec.ts | 16 +- .../decorators/set-metadata.decorator.spec.ts | 2 +- .../test/decorators/sse.decorator.spec.ts | 10 +- .../decorators/use-guards.decorator.spec.ts | 6 +- .../use-interceptors.decorator.spec.ts | 6 +- .../decorators/use-pipes.decorator.spec.ts | 6 +- .../test/decorators/version.decorator.spec.ts | 4 +- .../test/exceptions/http.exception.spec.ts | 4 +- .../test/file-stream/streamable-file.spec.ts | 4 +- .../configurable-module.builder.spec.ts | 4 +- .../get-injection-providers.util.spec.ts | 4 +- .../test/pipes/default-value.pipe.spec.ts | 2 +- .../pipes/file/file-type.validator.spec.ts | 4 +- .../file/max-file-size.validator.spec.ts | 4 +- .../file/parse-file-pipe.builder.spec.ts | 2 +- .../test/pipes/file/parse-file.pipe.spec.ts | 9 +- .../test/pipes/parse-array.pipe.spec.ts | 8 +- .../common/test/pipes/parse-bool.pipe.spec.ts | 4 +- .../common/test/pipes/parse-date.pipe.spec.ts | 4 +- .../common/test/pipes/parse-enum.pipe.spec.ts | 6 +- .../test/pipes/parse-float.pipe.spec.ts | 6 +- .../common/test/pipes/parse-int.pipe.spec.ts | 6 +- .../common/test/pipes/parse-uuid.pipe.spec.ts | 8 +- .../common/test/pipes/validation.pipe.spec.ts | 10 +- .../class-serializer.interceptor.spec.ts | 64 +- .../test/services/logger.service.spec.ts | 7 +- .../utils/filter-log-levels.util.spec.ts | 2 +- .../utils/is-log-level-enabled.util.spec.ts | 4 +- .../test/utils/forward-ref.util.spec.ts | 2 +- .../test/utils/load-package.util.spec.ts | 10 +- .../test/utils/merge-with-values.util.spec.ts | 2 +- .../random-string-generator.util.spec.ts | 2 +- ...ect-exception-filter-metadata.util.spec.ts | 2 +- .../common/test/utils/shared.utils.spec.ts | 2 +- .../test/utils/validate-each.util.spec.ts | 4 +- packages/common/tsconfig.build.json | 3 +- .../utils/assign-custom-metadata.util.ts | 8 +- packages/common/utils/forward-ref.util.ts | 2 +- .../common/utils/http-error-by-code.util.ts | 6 +- packages/common/utils/index.ts | 2 +- packages/common/utils/load-package.util.ts | 66 +- .../select-exception-filter-metadata.util.ts | 2 +- .../common/utils/validate-module-keys.util.ts | 2 +- packages/core/adapters/http-adapter.ts | 7 +- packages/core/adapters/index.ts | 2 +- packages/core/application-config.ts | 6 +- packages/core/constants.ts | 2 +- .../discoverable-meta-host-collection.ts | 4 +- packages/core/discovery/discovery-module.ts | 4 +- packages/core/discovery/discovery-service.ts | 8 +- packages/core/discovery/index.ts | 4 +- packages/core/errors/exception-handler.ts | 2 +- packages/core/errors/exceptions-zone.ts | 2 +- .../circular-dependency.exception.ts | 2 +- packages/core/errors/exceptions/index.ts | 16 +- .../invalid-class-module.exception.ts | 4 +- .../invalid-class-scope.exception.ts | 8 +- .../exceptions/invalid-class.exception.ts | 4 +- .../invalid-exception-filter.exception.ts | 4 +- ...alid-middleware-configuration.exception.ts | 4 +- .../invalid-middleware.exception.ts | 4 +- .../exceptions/invalid-module.exception.ts | 4 +- .../undefined-dependency.exception.ts | 8 +- .../undefined-forwardref.exception.ts | 4 +- .../exceptions/undefined-module.exception.ts | 4 +- .../unknown-dependencies.exception.ts | 8 +- .../exceptions/unknown-element.exception.ts | 2 +- .../exceptions/unknown-export.exception.ts | 4 +- .../exceptions/unknown-module.exception.ts | 2 +- .../unknown-request-mapping.exception.ts | 4 +- packages/core/errors/messages.ts | 6 +- .../base-exception-filter-context.ts | 16 +- .../core/exceptions/base-exception-filter.ts | 8 +- .../core/exceptions/exceptions-handler.ts | 12 +- .../external-exception-filter-context.ts | 22 +- .../exceptions/external-exceptions-handler.ts | 12 +- packages/core/exceptions/index.ts | 2 +- packages/core/guards/guards-consumer.ts | 6 +- .../core/guards/guards-context-creator.ts | 16 +- packages/core/guards/index.ts | 6 +- packages/core/helpers/context-creator.ts | 6 +- packages/core/helpers/context-id-factory.ts | 6 +- packages/core/helpers/context-utils.ts | 8 +- .../core/helpers/execution-context-host.ts | 4 +- .../core/helpers/external-context-creator.ts | 34 +- packages/core/helpers/external-proxy.ts | 6 +- packages/core/helpers/get-class-scope.ts | 4 +- .../core/helpers/handler-metadata-storage.ts | 10 +- packages/core/helpers/http-adapter-host.ts | 2 +- packages/core/helpers/index.ts | 6 +- .../external-handler-metadata.interface.ts | 4 +- packages/core/helpers/interfaces/index.ts | 4 +- packages/core/helpers/is-durable.ts | 4 +- packages/core/helpers/load-adapter.ts | 4 +- packages/core/helpers/messages.ts | 4 +- packages/core/helpers/optional-require.ts | 7 +- .../core/helpers/router-method-factory.ts | 2 +- .../core/hooks/before-app-shutdown.hook.ts | 8 +- packages/core/hooks/index.ts | 10 +- packages/core/hooks/on-app-bootstrap.hook.ts | 8 +- packages/core/hooks/on-app-shutdown.hook.ts | 8 +- packages/core/hooks/on-module-destroy.hook.ts | 8 +- packages/core/hooks/on-module-init.hook.ts | 8 +- packages/core/index.ts | 37 +- .../injector/abstract-instance-resolver.ts | 12 +- packages/core/injector/compiler.ts | 4 +- packages/core/injector/constants.ts | 2 +- packages/core/injector/container.ts | 36 +- .../injector/helpers/provider-classifier.ts | 2 +- .../injector/helpers/transient-instances.ts | 2 +- packages/core/injector/index.ts | 12 +- packages/core/injector/injector.ts | 28 +- packages/core/injector/inquirer/index.ts | 2 +- .../injector/inquirer/inquirer-providers.ts | 2 +- packages/core/injector/instance-links-host.ts | 10 +- packages/core/injector/instance-loader.ts | 16 +- packages/core/injector/instance-wrapper.ts | 23 +- .../injector/internal-core-module/index.ts | 2 +- .../internal-core-module-factory.ts | 28 +- .../internal-core-module.ts | 8 +- .../injector/internal-providers-storage.ts | 4 +- .../lazy-module-loader/lazy-module-loader.ts | 18 +- packages/core/injector/module-ref.ts | 16 +- packages/core/injector/module.ts | 28 +- packages/core/injector/modules-container.ts | 2 +- .../by-reference-module-opaque-key-factory.ts | 10 +- .../deep-hashed-module-opaque-key-factory.ts | 20 +- .../module-opaque-key-factory.interface.ts | 6 +- .../injector/topology-tree/topology-tree.ts | 4 +- packages/core/inspector/graph-inspector.ts | 22 +- packages/core/inspector/index.ts | 8 +- ...enhancer-metadata-cache-entry.interface.ts | 4 +- .../interfaces/entrypoint.interface.ts | 2 +- .../inspector/interfaces/extras.interface.ts | 2 +- .../inspector/interfaces/node.interface.ts | 2 +- .../serialized-graph-json.interface.ts | 12 +- .../serialized-graph-metadata.interface.ts | 2 +- .../core/inspector/noop-graph-inspector.ts | 2 +- packages/core/inspector/partial-graph.host.ts | 2 +- packages/core/inspector/serialized-graph.ts | 32 +- packages/core/inspector/uuid-factory.ts | 4 +- packages/core/interceptors/index.ts | 4 +- .../interceptors/interceptors-consumer.ts | 6 +- .../interceptors-context-creator.ts | 20 +- .../interfaces/module-definition.interface.ts | 2 +- .../interfaces/module-override.interface.ts | 2 +- packages/core/metadata-scanner.ts | 4 +- packages/core/middleware/builder.ts | 12 +- packages/core/middleware/container.ts | 10 +- packages/core/middleware/index.ts | 2 +- packages/core/middleware/middleware-module.ts | 50 +- packages/core/middleware/resolver.ts | 8 +- .../middleware/route-info-path-extractor.ts | 12 +- packages/core/middleware/routes-mapper.ts | 18 +- packages/core/middleware/utils.ts | 14 +- packages/core/nest-application-context.ts | 28 +- packages/core/nest-application.ts | 93 +- packages/core/nest-factory.ts | 60 +- packages/core/package.json | 6 + packages/core/pipes/index.ts | 6 +- packages/core/pipes/params-token-factory.ts | 2 +- packages/core/pipes/pipes-consumer.ts | 9 +- packages/core/pipes/pipes-context-creator.ts | 20 +- packages/core/repl/index.ts | 2 +- .../repl/native-functions/debug-repl-fn.ts | 8 +- .../core/repl/native-functions/get-repl-fn.ts | 4 +- .../repl/native-functions/help-repl-fn.ts | 6 +- packages/core/repl/native-functions/index.ts | 12 +- .../repl/native-functions/methods-repl-fn.ts | 8 +- .../repl/native-functions/resolve-repl-fn.ts | 4 +- .../repl/native-functions/select-relp-fn.ts | 4 +- packages/core/repl/repl-context.ts | 14 +- packages/core/repl/repl-function.ts | 6 +- packages/core/repl/repl-logger.ts | 6 +- packages/core/repl/repl.interfaces.ts | 4 +- packages/core/repl/repl.ts | 14 +- packages/core/router/index.ts | 6 +- .../interfaces/exceptions-filter.interface.ts | 6 +- packages/core/router/interfaces/index.ts | 2 +- .../route-params-factory.interface.ts | 2 +- .../route-path-metadata.interface.ts | 2 +- packages/core/router/paths-explorer.ts | 14 +- packages/core/router/request/index.ts | 2 +- .../core/router/request/request-providers.ts | 2 +- packages/core/router/route-params-factory.ts | 4 +- packages/core/router/route-path-factory.ts | 10 +- .../core/router/router-exception-filters.ts | 20 +- .../core/router/router-execution-context.ts | 34 +- packages/core/router/router-explorer.ts | 66 +- packages/core/router/router-module.ts | 12 +- packages/core/router/router-proxy.ts | 4 +- .../core/router/router-response-controller.ts | 4 +- packages/core/router/routes-resolver.ts | 32 +- packages/core/router/sse-stream.ts | 4 +- .../core/router/utils/exclude-route.util.ts | 4 +- .../router/utils/flatten-route-paths.util.ts | 4 +- packages/core/router/utils/index.ts | 4 +- packages/core/scanner.ts | 40 +- packages/core/services/index.ts | 2 +- packages/core/services/reflector.service.ts | 2 +- packages/core/test/application-config.spec.ts | 6 +- .../discoverable-meta-host-collection.spec.ts | 6 +- .../test/discovery/discovery-service.spec.ts | 10 +- .../errors/test/exception-handler.spec.ts | 4 +- .../test/errors/test/exceptions-zone.spec.ts | 2 +- .../core/test/errors/test/messages.spec.ts | 8 +- .../exceptions/base-exception-filter.spec.ts | 4 +- .../exceptions/exceptions-handler.spec.ts | 14 +- .../external-exception-filter-context.spec.ts | 12 +- .../external-exceptions-handler.spec.ts | 4 +- .../core/test/guards/guards-consumer.spec.ts | 2 +- .../guards/guards-context-creator.spec.ts | 6 +- .../test/helpers/application-ref-host.spec.ts | 2 +- packages/core/test/helpers/barrier.spec.ts | 8 +- .../test/helpers/context-id-factory.spec.ts | 2 +- .../core/test/helpers/context-utils.spec.ts | 16 +- .../helpers/execution-context-host.spec.ts | 2 +- .../helpers/external-context-creator.spec.ts | 28 +- .../core/test/helpers/external-proxy.spec.ts | 6 +- .../helpers/router-method-factory.spec.ts | 4 +- .../hooks/before-app-shutdown.hook.spec.ts | 6 +- .../test/hooks/on-app-bootstrap.hook.spec.ts | 6 +- .../test/hooks/on-app-shutdown.hook.spec.ts | 6 +- .../test/hooks/on-module-destroy.hook.spec.ts | 6 +- .../test/hooks/on-module-init.hook.spec.ts | 6 +- packages/core/test/injector/compiler.spec.ts | 4 +- packages/core/test/injector/container.spec.ts | 12 +- .../helpers/provider-classifier.spec.ts | 2 +- .../injector/helpers/silent-logger.spec.ts | 2 +- packages/core/test/injector/injector.spec.ts | 20 +- .../test/injector/instance-loader.spec.ts | 14 +- .../test/injector/instance-wrapper.spec.ts | 6 +- .../internal-core-module-factory.spec.ts | 14 +- .../lazy-module-loader.spec.ts | 12 +- packages/core/test/injector/module.spec.ts | 16 +- .../nested-transient-isolation.spec.ts | 10 +- ...eference-module-opaque-key-factory.spec.ts | 2 +- ...p-hashed-module-opaque-key-factory.spec.ts | 2 +- .../injector/topology-tree/tree-node.spec.ts | 2 +- .../test/inspector/graph-inspector.spec.ts | 12 +- .../test/inspector/serialized-graph.spec.ts | 8 +- .../interceptors-consumer.spec.ts | 2 +- .../interceptors-context-creator.spec.ts | 6 +- packages/core/test/metadata-scanner.spec.ts | 2 +- packages/core/test/middleware/builder.spec.ts | 16 +- .../core/test/middleware/container.spec.ts | 20 +- .../test/middleware/middleware-module.spec.ts | 36 +- .../core/test/middleware/resolver.spec.ts | 12 +- .../route-info-path-extractor.spec.ts | 4 +- .../test/middleware/routes-mapper.spec.ts | 16 +- packages/core/test/middleware/utils.spec.ts | 6 +- .../test/nest-application-context.spec.ts | 24 +- packages/core/test/nest-application.spec.ts | 33 +- .../test/pipes/params-token-factory.spec.ts | 4 +- .../core/test/pipes/pipes-consumer.spec.ts | 4 +- .../test/pipes/pipes-context-creator.spec.ts | 8 +- .../test/repl/assign-to-object.util.spec.ts | 2 +- .../native-functions/debug-repl-fn.spec.ts | 8 +- .../repl/native-functions/get-repl-fn.spec.ts | 6 +- .../native-functions/help-repl-fn.spec.ts | 8 +- .../native-functions/methods-repl-fn.spec.ts | 8 +- .../native-functions/resolve-repl-fn.spec.ts | 6 +- .../native-functions/select-repl-fn.spec.ts | 6 +- packages/core/test/repl/repl-context.spec.ts | 4 +- .../core/test/router/paths-explorer.spec.ts | 10 +- .../test/router/route-params-factory.spec.ts | 4 +- .../test/router/route-path-factory.spec.ts | 4 +- .../router/router-exception-filters.spec.ts | 14 +- .../router/router-execution-context.spec.ts | 42 +- .../core/test/router/router-explorer.spec.ts | 34 +- .../core/test/router/router-module.spec.ts | 8 +- .../core/test/router/router-proxy.spec.ts | 10 +- .../router/router-response-controller.spec.ts | 10 +- .../core/test/router/routes-resolver.spec.ts | 22 +- packages/core/test/router/sse-stream.spec.ts | 2 +- .../test/router/utils/flat-routes.spec.ts | 2 +- packages/core/test/scanner.spec.ts | 40 +- .../test/services/reflector.service.spec.ts | 2 +- packages/core/test/utils/noop-adapter.spec.ts | 4 +- packages/core/tsconfig.build.json | 10 +- packages/microservices/client/client-grpc.ts | 36 +- packages/microservices/client/client-kafka.ts | 39 +- packages/microservices/client/client-mqtt.ts | 26 +- packages/microservices/client/client-nats.ts | 62 +- .../client/client-proxy-factory.ts | 24 +- packages/microservices/client/client-proxy.ts | 18 +- packages/microservices/client/client-redis.ts | 19 +- packages/microservices/client/client-rmq.ts | 28 +- packages/microservices/client/client-tcp.ts | 16 +- packages/microservices/client/index.ts | 18 +- packages/microservices/constants.ts | 2 +- packages/microservices/container.ts | 2 +- .../context/exception-filters-context.ts | 18 +- .../context/request-context-host.ts | 4 +- .../context/rpc-context-creator.ts | 42 +- .../context/rpc-metadata-constants.ts | 2 +- packages/microservices/context/rpc-proxy.ts | 4 +- packages/microservices/ctx-host/index.ts | 14 +- .../microservices/ctx-host/kafka.context.ts | 8 +- .../microservices/ctx-host/mqtt.context.ts | 2 +- .../microservices/ctx-host/nats.context.ts | 2 +- .../microservices/ctx-host/redis.context.ts | 2 +- .../microservices/ctx-host/rmq.context.ts | 2 +- .../microservices/ctx-host/tcp.context.ts | 4 +- .../decorators/client.decorator.ts | 7 +- .../microservices/decorators/ctx.decorator.ts | 4 +- .../decorators/event-pattern.decorator.ts | 8 +- packages/microservices/decorators/index.ts | 12 +- .../decorators/message-pattern.decorator.ts | 12 +- .../decorators/payload.decorator.ts | 4 +- .../deserializers/identity.deserializer.ts | 2 +- .../incoming-request.deserializer.ts | 9 +- .../incoming-response.deserializer.ts | 9 +- packages/microservices/deserializers/index.ts | 14 +- .../kafka-request.deserializer.ts | 6 +- .../kafka-response.deserializer.ts | 6 +- .../nats-request-json.deserializer.ts | 32 +- .../nats-response-json.deserializer.ts | 30 +- packages/microservices/enums/index.ts | 4 +- .../microservices/enums/rpc-paramtype.enum.ts | 2 +- ...nvalid-grpc-message-decorator.exception.ts | 2 +- ...on-missing-package-definition.exception.ts | 2 +- ...grpc-package-definition-mutex.exception.ts | 2 +- .../errors/invalid-grpc-package.exception.ts | 2 +- .../errors/invalid-grpc-service.exception.ts | 2 +- .../invalid-kafka-client-topic.exception.ts | 2 +- .../errors/invalid-message.exception.ts | 2 +- .../invalid-proto-definition.exception.ts | 2 +- .../invalid-tcp-data-reception.exception.ts | 2 +- packages/microservices/events/index.ts | 12 +- .../exceptions/base-rpc-exception-filter.ts | 6 +- packages/microservices/exceptions/index.ts | 6 +- .../exceptions/kafka-retriable-exception.ts | 2 +- .../microservices/exceptions/rpc-exception.ts | 2 +- .../exceptions/rpc-exceptions-handler.ts | 14 +- .../factories/rpc-params-factory.ts | 2 +- .../microservices/helpers/grpc-helpers.ts | 6 +- packages/microservices/helpers/index.ts | 12 +- packages/microservices/helpers/json-socket.ts | 6 +- .../microservices/helpers/kafka-logger.ts | 2 +- .../microservices/helpers/kafka-parser.ts | 4 +- .../helpers/kafka-reply-partition-assigner.ts | 17 +- packages/microservices/helpers/tcp-socket.ts | 6 +- packages/microservices/index.ts | 26 +- .../client-kafka-proxy.interface.ts | 6 +- .../interfaces/client-metadata.interface.ts | 12 +- .../custom-transport-strategy.interface.ts | 2 +- .../interfaces/deserializer.interface.ts | 2 +- packages/microservices/interfaces/index.ts | 24 +- .../microservice-configuration.interface.ts | 20 +- ...roservice-entrypoint-metadata.interface.ts | 4 +- .../interfaces/request-context.interface.ts | 2 +- .../interfaces/serializer.interface.ts | 7 +- .../listener-metadata-explorer.ts | 14 +- .../microservices/listeners-controller.ts | 54 +- .../microservices/microservices-module.ts | 42 +- .../microservices/module/clients.module.ts | 4 +- packages/microservices/module/index.ts | 4 +- .../interfaces/clients-module.interface.ts | 8 +- .../microservices/module/interfaces/index.ts | 2 +- packages/microservices/nest-microservice.ts | 51 +- packages/microservices/package.json | 6 + .../microservices/record-builders/index.ts | 6 +- .../serializers/identity.serializer.ts | 2 +- packages/microservices/serializers/index.ts | 10 +- .../serializers/kafka-request.serializer.ts | 4 +- .../serializers/mqtt-record.serializer.ts | 6 +- .../serializers/nats-record.serializer.ts | 31 +- .../serializers/rmq-record.serializer.ts | 8 +- packages/microservices/server/index.ts | 16 +- .../microservices/server/server-factory.ts | 18 +- packages/microservices/server/server-grpc.ts | 33 +- packages/microservices/server/server-kafka.ts | 37 +- packages/microservices/server/server-mqtt.ts | 35 +- packages/microservices/server/server-nats.ts | 50 +- packages/microservices/server/server-redis.ts | 36 +- packages/microservices/server/server-rmq.ts | 33 +- packages/microservices/server/server-tcp.ts | 20 +- packages/microservices/server/server.ts | 38 +- .../test/client/client-grpc.spec.ts | 81 +- .../test/client/client-kafka.spec.ts | 15 +- .../test/client/client-mqtt.spec.ts | 8 +- .../test/client/client-nats.spec.ts | 22 +- .../test/client/client-proxy-factory.spec.ts | 20 +- .../test/client/client-proxy.spec.ts | 4 +- .../test/client/client-redis.spec.ts | 4 +- .../test/client/client-rmq.spec.ts | 6 +- .../test/client/client-tcp.spec.ts | 6 +- packages/microservices/test/container.spec.ts | 2 +- .../context/exception-filters-context.spec.ts | 12 +- .../test/context/request-context-host.spec.ts | 4 +- .../test/context/rpc-context-creator.spec.ts | 34 +- .../test/context/rpc-proxy.spec.ts | 6 +- .../test/ctx-host/base-rpc-context.spec.ts | 2 +- .../test/ctx-host/kafka.context.spec.ts | 4 +- .../test/ctx-host/mqtt.context.spec.ts | 2 +- .../test/ctx-host/nats.context.spec.ts | 2 +- .../test/ctx-host/redis.context.spec.ts | 2 +- .../test/ctx-host/rmq.context.spec.ts | 2 +- .../test/ctx-host/tcp.context.spec.ts | 2 +- .../test/decorators/client.decorator.spec.ts | 4 +- .../test/decorators/ctx.decorator.spec.ts | 6 +- .../event-pattern.decorator.spec.ts | 6 +- .../message-pattern.decorator.spec.ts | 6 +- .../test/decorators/payload.decorator.spec.ts | 6 +- .../identity.deserializer.spec.ts | 2 +- .../incoming-request.deserializer.spec.ts | 4 +- .../incoming-response.deserializer.spec.ts | 4 +- .../kafka-response.deserializer.spec.ts | 4 +- .../test/exceptions/rpc-exception.spec.ts | 2 +- .../exceptions/rpc-exceptions-handler.spec.ts | 4 +- .../test/factories/rpc-params-factory.spec.ts | 4 +- .../test/helpers/grpc-helpers.spec.ts | 6 +- .../test/helpers/kafka-logger.spec.ts | 4 +- .../test/helpers/kafka-parser.spec.ts | 4 +- .../kafka-reply-partition-assigner.spec.ts | 13 +- .../test/json-socket/connection.spec.ts | 10 +- .../microservices/test/json-socket/helpers.ts | 4 +- .../json-socket/listener-chaining.spec.ts | 6 +- .../test/json-socket/max-buffer-size.spec.ts | 6 +- .../test/json-socket/message-parsing.spec.ts | 4 +- .../test/listeners-controller.spec.ts | 26 +- .../test/listeners-metadata-explorer.spec.ts | 12 +- .../test/module/clients.module.spec.ts | 11 +- .../test/nest-microservice.spec.ts | 12 +- .../serializers/identity.serializer.spec.ts | 2 +- .../kafka-request.serializer.spec.ts | 4 +- .../mqtt-record.serializer.spec.ts | 4 +- .../nats-record.serializer.spec.ts | 41 +- .../serializers/rmq-record.serializer.spec.ts | 4 +- .../test/server/server-factory.spec.ts | 18 +- .../test/server/server-grpc.spec.ts | 27 +- .../test/server/server-kafka.spec.ts | 19 +- .../test/server/server-mqtt.spec.ts | 10 +- .../test/server/server-nats.spec.ts | 20 +- .../test/server/server-redis.spec.ts | 26 +- .../test/server/server-rmq.spec.ts | 8 +- .../test/server/server-tcp.spec.ts | 10 +- .../microservices/test/server/server.spec.ts | 2 +- .../utils/transform-pattern.utils.spec.ts | 4 +- packages/microservices/tsconfig.build.json | 10 +- packages/microservices/utils/index.ts | 2 +- packages/microservices/utils/param.utils.ts | 8 +- .../utils/transform-pattern.utils.ts | 4 +- .../adapters/express-adapter.ts | 26 +- packages/platform-express/adapters/index.ts | 2 +- .../utils/get-body-parser-options.util.ts | 2 +- packages/platform-express/index.ts | 6 +- packages/platform-express/interfaces/index.ts | 6 +- .../nest-express-application.interface.ts | 8 +- packages/platform-express/multer/index.ts | 6 +- .../interceptors/any-files.interceptor.ts | 10 +- .../interceptors/file-fields.interceptor.ts | 10 +- .../multer/interceptors/file.interceptor.ts | 10 +- .../multer/interceptors/files.interceptor.ts | 10 +- .../multer/interceptors/index.ts | 10 +- .../interceptors/no-files.interceptor.ts | 10 +- .../files-upload-module.interface.ts | 4 +- .../multer/interfaces/index.ts | 2 +- .../platform-express/multer/multer.module.ts | 8 +- .../multer/multer/multer.utils.ts | 2 +- packages/platform-express/package.json | 6 + .../test/adapters/express-adapter.spec.ts | 2 +- .../get-body-parser-options.util.spec.ts | 2 +- .../any-files.interceptor.spec.ts | 4 +- .../file-fields.interceptor.spec.ts | 4 +- .../interceptors/file.interceptor.spec.ts | 4 +- .../interceptors/files.interceptor.spec.ts | 4 +- .../interceptors/no-files.inteceptor.spec.ts | 4 +- .../test/multer/multer/multer.module.spec.ts | 4 +- .../test/multer/multer/multer.utils.spec.ts | 4 +- packages/platform-express/tsconfig.build.json | 8 +- .../adapters/fastify-adapter.ts | 44 +- packages/platform-fastify/adapters/index.ts | 2 +- .../adapters/middie/fastify-middie.ts | 5 +- packages/platform-fastify/decorators/index.ts | 6 +- .../decorators/route-config.decorator.ts | 2 +- .../decorators/route-constraints.decorator.ts | 2 +- .../decorators/route-schema.decorator.ts | 2 +- packages/platform-fastify/index.ts | 6 +- .../interfaces/external/index.ts | 4 +- packages/platform-fastify/interfaces/index.ts | 4 +- .../nest-fastify-application.interface.ts | 4 +- packages/platform-fastify/package.json | 6 + .../router-config.decorator.spec.ts | 4 +- .../router-constraints.decorator.spec.ts | 4 +- .../router-schema.decorator.spec.ts | 4 +- packages/platform-fastify/tsconfig.build.json | 8 +- packages/platform-socket.io/adapters/index.ts | 2 +- .../platform-socket.io/adapters/io-adapter.ts | 4 +- packages/platform-socket.io/index.ts | 2 +- packages/platform-socket.io/package.json | 6 + .../platform-socket.io/tsconfig.build.json | 8 +- packages/platform-ws/adapters/index.ts | 2 +- packages/platform-ws/adapters/ws-adapter.ts | 21 +- packages/platform-ws/index.ts | 2 +- packages/platform-ws/package.json | 6 + packages/platform-ws/tsconfig.build.json | 8 +- packages/testing/index.ts | 8 +- packages/testing/interfaces/index.ts | 6 +- .../interfaces/override-by.interface.ts | 4 +- .../interfaces/override-module.interface.ts | 4 +- packages/testing/package.json | 6 + packages/testing/test.ts | 6 +- packages/testing/testing-injector.ts | 10 +- packages/testing/testing-instance-loader.ts | 8 +- packages/testing/testing-module.builder.ts | 36 +- packages/testing/testing-module.ts | 50 +- packages/testing/tsconfig.build.json | 12 +- packages/tsconfig.build.json | 6 +- packages/websockets/adapters/index.ts | 2 +- packages/websockets/adapters/ws-adapter.ts | 6 +- packages/websockets/constants.ts | 2 +- .../context/exception-filters-context.ts | 10 +- .../websockets/context/ws-context-creator.ts | 39 +- .../context/ws-metadata-constants.ts | 2 +- packages/websockets/context/ws-proxy.ts | 4 +- .../websockets/decorators/ack.decorator.ts | 4 +- .../decorators/connected-socket.decorator.ts | 4 +- .../decorators/gateway-server.decorator.ts | 2 +- packages/websockets/decorators/index.ts | 12 +- .../decorators/message-body.decorator.ts | 4 +- .../decorators/socket-gateway.decorator.ts | 8 +- .../decorators/subscribe-message.decorator.ts | 2 +- .../websockets/enums/ws-paramtype.enum.ts | 2 +- packages/websockets/errors/index.ts | 2 +- .../errors/invalid-socket-port.exception.ts | 2 +- packages/websockets/errors/ws-exception.ts | 2 +- .../exceptions/base-ws-exception-filter.ts | 6 +- packages/websockets/exceptions/index.ts | 2 +- .../exceptions/ws-exceptions-handler.ts | 12 +- .../server-and-event-streams-factory.ts | 2 +- .../websockets/factories/ws-params-factory.ts | 4 +- .../websockets/gateway-metadata-explorer.ts | 14 +- packages/websockets/index.ts | 12 +- .../interfaces/gateway-metadata.interface.ts | 2 +- packages/websockets/interfaces/hooks/index.ts | 6 +- packages/websockets/interfaces/index.ts | 10 +- packages/websockets/package.json | 6 + packages/websockets/socket-module.ts | 56 +- packages/websockets/socket-server-provider.ts | 15 +- packages/websockets/sockets-container.ts | 7 +- packages/websockets/test/container.spec.ts | 4 +- .../context/exception-filters.context.spec.ts | 8 +- .../test/context/ws-context-creator.spec.ts | 32 +- .../websockets/test/context/ws-proxy.spec.ts | 6 +- .../test/decorators/ack.decorator.spec.ts | 6 +- .../connected-socket.decorator.spec.ts | 6 +- .../decorators/message-body.decorator.spec.ts | 6 +- .../test/exceptions/ws-exception.spec.ts | 2 +- .../exceptions/ws-exceptions-handler.spec.ts | 6 +- .../server-and-event-streams-factory.spec.ts | 2 +- .../test/factories/ws-params-factory.spec.ts | 4 +- .../test/gateway-metadata-explorer.spec.ts | 12 +- .../test/socket-server-provider.spec.ts | 8 +- .../test/utils/compare-element.util.spec.ts | 2 +- .../utils/gateway-server.decorator.spec.ts | 4 +- .../utils/socket-gateway.decorator.spec.ts | 4 +- .../utils/subscribe-message.decorator.spec.ts | 4 +- .../test/web-sockets-controller.spec.ts | 22 +- packages/websockets/tsconfig.build.json | 8 +- packages/websockets/utils/index.ts | 2 +- packages/websockets/utils/param.utils.ts | 8 +- packages/websockets/web-sockets-controller.ts | 32 +- sample/01-cats-app/tsconfig.json | 2 +- sample/02-gateways/tsconfig.json | 2 +- sample/03-microservices/tsconfig.json | 2 +- sample/04-grpc/tsconfig.json | 2 +- sample/05-sql-typeorm/tsconfig.json | 2 +- sample/06-mongoose/tsconfig.json | 2 +- sample/07-sequelize/tsconfig.json | 2 +- sample/08-webpack/tsconfig.json | 2 +- sample/10-fastify/tsconfig.json | 2 +- sample/11-swagger/tsconfig.json | 2 +- sample/12-graphql-schema-first/tsconfig.json | 2 +- sample/13-mongo-typeorm/tsconfig.json | 2 +- sample/14-mongoose-base/tsconfig.json | 2 +- sample/15-mvc/tsconfig.json | 2 +- sample/16-gateways-ws/tsconfig.json | 2 +- sample/17-mvc-fastify/tsconfig.json | 2 +- sample/18-context/tsconfig.json | 2 +- sample/19-auth-jwt/tsconfig.json | 2 +- sample/20-cache/tsconfig.json | 2 +- sample/21-serializer/tsconfig.json | 2 +- sample/22-graphql-prisma/tsconfig.json | 2 +- sample/23-graphql-code-first/tsconfig.json | 2 +- sample/24-serve-static/tsconfig.json | 2 +- sample/25-dynamic-modules/tsconfig.json | 2 +- sample/26-queues/tsconfig.json | 2 +- sample/27-scheduling/tsconfig.json | 2 +- sample/28-sse/tsconfig.json | 2 +- sample/29-file-upload/tsconfig.json | 2 +- sample/30-event-emitter/tsconfig.json | 2 +- .../gateway/tsconfig.json | 2 +- .../posts-application/tsconfig.json | 2 +- .../users-application/tsconfig.json | 2 +- .../gateway/tsconfig.json | 2 +- .../posts-application/tsconfig.json | 2 +- .../users-application/tsconfig.json | 2 +- sample/33-graphql-mercurius/tsconfig.json | 2 +- sample/34-using-esm-packages/package.json | 2 +- sample/34-using-esm-packages/tsconfig.json | 2 +- .../tsconfig.json | 2 +- sample/36-hmr-esm/tsconfig.json | 2 +- tools/benchmarks/tsconfig.json | 2 +- tools/gulp/config.ts | 2 +- tools/gulp/gulpfile.ts | 8 +- tools/gulp/tasks/clean.ts | 8 +- tools/gulp/tasks/copy-misc.ts | 4 +- tools/gulp/tasks/move.ts | 6 +- tools/gulp/tasks/samples.ts | 18 +- tools/gulp/tsconfig.json | 16 +- tools/gulp/util/task-helpers.ts | 4 +- tsconfig.json | 9 +- 1120 files changed, 5398 insertions(+), 4232 deletions(-) delete mode 100644 gulpfile.js create mode 100644 gulpfile.mjs create mode 100644 hooks/ts-node-register.mjs diff --git a/.circleci/config.yml b/.circleci/config.yml index 524adc87d6..a9685105e7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,6 @@ version: 2.1 parameters: - check-legacy-node-version: - type: boolean - default: false - legacy-node-version: - type: string - default: '18.20' maintenance-node-version: type: string default: '20.18' @@ -15,7 +9,7 @@ parameters: default: '22.11' current-node-version: type: string - default: '23.3' + default: '24.1' aliases: - &restore-cache @@ -62,61 +56,36 @@ jobs: docker: - image: cimg/node:<< parameters.node-version >> steps: + - checkout + - *restore-cache + - *install-deps + - *build-packages - when: condition: - and: - - equal: - [ - '<< parameters.node-version >>', - '<< pipeline.parameters.legacy-node-version >>', - ] - - not: << pipeline.parameters.check-legacy-node-version >> + equal: + [ + '<< parameters.node-version >>', + '<< pipeline.parameters.maintenance-node-version >>', + ] steps: - run: - name: Skip - command: | - echo Skipping + name: Test (coverage) + command: npm run test:cov + - run: + name: Collect coverage + command: npm run coverage + - store_artifacts: + path: coverage - when: condition: - or: - - not: - equal: - [ - '<< parameters.node-version >>', - '<< pipeline.parameters.legacy-node-version >>', - ] - - << pipeline.parameters.check-legacy-node-version >> + not: + equal: + [ + '<< parameters.node-version >>', + '<< pipeline.parameters.maintenance-node-version >>', + ] steps: - - checkout - - *restore-cache - - *install-deps - - *build-packages - - when: - condition: - equal: - [ - '<< parameters.node-version >>', - '<< pipeline.parameters.maintenance-node-version >>', - ] - steps: - - run: - name: Test (coverage) - command: npm run test:cov - - run: - name: Collect coverage - command: npm run coverage - - store_artifacts: - path: coverage - - when: - condition: - not: - equal: - [ - '<< parameters.node-version >>', - '<< pipeline.parameters.maintenance-node-version >>', - ] - steps: - - *run-unit-tests + - *run-unit-tests lint: working_directory: ~/nest @@ -183,7 +152,6 @@ jobs: name: Build all samples command: npm run build:samples - workflows: build-and-test: jobs: @@ -195,7 +163,6 @@ workflows: parameters: node-version: [ - '<< pipeline.parameters.legacy-node-version >>', '<< pipeline.parameters.maintenance-node-version >>', '<< pipeline.parameters.active-node-version >>', '<< pipeline.parameters.current-node-version >>', @@ -209,4 +176,3 @@ workflows: - samples: requires: - build - diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 465ba82777..528740cec5 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -116,7 +116,6 @@ We cannot accept code without this. 1. In GitHub, send a pull request to `nestjs:master`. - If we suggest changes then: - - Make the required updates. - Re-run the Nest test suites to ensure tests are still passing. - Rebase your branch and force push to your GitHub repository (this will update your Pull Request): @@ -159,7 +158,7 @@ from the main (upstream) repository: ## Development Setup -You will need [Node.js](https://nodejs.org) version >= 10.13.0 (except for v13). +You will need [Node.js](https://nodejs.org) version >= 20. 1. After cloning the repo, run: @@ -322,8 +321,10 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise [commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit# + + [dev-doc]: https://github.com/nestjs/nest/blob/master/docs/DEVELOPER.md [github]: https://github.com/nestjs/nest [stackoverflow]: https://stackoverflow.com/questions/tagged/nestjs diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index a0962e1a38..0000000000 --- a/gulpfile.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; -/** - * Load the TypeScript compiler, then load the TypeScript gulpfile which simply loads all - * the tasks. The tasks are really inside tools/gulp/tasks. - */ - -const path = require('path'); - -const projectDir = __dirname; -const tsconfigPath = path.join(projectDir, 'tools/gulp/tsconfig.json'); - -require('ts-node').register({ - project: tsconfigPath -}); - -require('./tools/gulp/gulpfile'); \ No newline at end of file diff --git a/gulpfile.mjs b/gulpfile.mjs new file mode 100644 index 0000000000..45cc068b5f --- /dev/null +++ b/gulpfile.mjs @@ -0,0 +1,13 @@ +/** + * Load the TypeScript compiler, then load the TypeScript gulpfile which simply loads all + * the tasks. The tasks are really inside tools/gulp/tasks. + */ + +import { register } from 'node:module'; +import { pathToFileURL } from 'node:url'; + +register('ts-node/esm', pathToFileURL('./'), { + data: { project: './tools/gulp/tsconfig.json' }, +}); + +await import('./tools/gulp/gulpfile.ts'); diff --git a/hooks/ts-node-register.mjs b/hooks/ts-node-register.mjs new file mode 100644 index 0000000000..21b2f0b4f3 --- /dev/null +++ b/hooks/ts-node-register.mjs @@ -0,0 +1,12 @@ +/** + * Registers ts-node's ESM loader hooks via the modern node:module register() API. + * Used with --import flag (e.g., node --import ./hooks/ts-node-register.mjs) + * to replace the deprecated --loader flag. + */ +import { register } from 'node:module'; +import { pathToFileURL } from 'node:url'; + +register('ts-node/esm', pathToFileURL('./')); + +// Load reflect-metadata before any test files so decorators work correctly +import 'reflect-metadata'; diff --git a/integration/auto-mock/src/bar.service.ts b/integration/auto-mock/src/bar.service.ts index 5b75933f90..24b0124ec4 100644 --- a/integration/auto-mock/src/bar.service.ts +++ b/integration/auto-mock/src/bar.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { FooService } from './foo.service'; +import { FooService } from './foo.service.js'; @Injectable() export class BarService { diff --git a/integration/auto-mock/test/bar.service.spec.ts b/integration/auto-mock/test/bar.service.spec.ts index c004bbf67f..512d642fa7 100644 --- a/integration/auto-mock/test/bar.service.spec.ts +++ b/integration/auto-mock/test/bar.service.spec.ts @@ -1,9 +1,9 @@ import { Test } from '@nestjs/testing'; -import * as chai from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; -import { BarService } from '../src/bar.service'; -import { FooService } from '../src/foo.service'; +import { BarService } from '../src/bar.service.js'; +import { FooService } from '../src/foo.service.js'; chai.use(chaiAsPromised); const { expect } = chai; diff --git a/integration/auto-mock/tsconfig.json b/integration/auto-mock/tsconfig.json index 2d3b89de29..b8280d0c05 100644 --- a/integration/auto-mock/tsconfig.json +++ b/integration/auto-mock/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/cors/e2e/express.spec.ts b/integration/cors/e2e/express.spec.ts index 8e268c3166..e81fc12d1c 100644 --- a/integration/cors/e2e/express.spec.ts +++ b/integration/cors/e2e/express.spec.ts @@ -1,7 +1,7 @@ import { NestExpressApplication } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Express Cors', () => { let app: NestExpressApplication; diff --git a/integration/cors/e2e/fastify.spec.ts b/integration/cors/e2e/fastify.spec.ts index c24bfc6ff3..e6c9bc838e 100644 --- a/integration/cors/e2e/fastify.spec.ts +++ b/integration/cors/e2e/fastify.spec.ts @@ -3,8 +3,8 @@ import { NestFastifyApplication, } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe.skip('Fastify Cors', () => { let app: NestFastifyApplication; diff --git a/integration/cors/src/app.module.ts b/integration/cors/src/app.module.ts index 848d4aaa7f..52bb569b5d 100644 --- a/integration/cors/src/app.module.ts +++ b/integration/cors/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; @Module({ controllers: [AppController], diff --git a/integration/cors/tsconfig.json b/integration/cors/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/cors/tsconfig.json +++ b/integration/cors/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/discovery/e2e/discover-by-meta.spec.ts b/integration/discovery/e2e/discover-by-meta.spec.ts index 679c775843..8c34696503 100644 --- a/integration/discovery/e2e/discover-by-meta.spec.ts +++ b/integration/discovery/e2e/discover-by-meta.spec.ts @@ -1,9 +1,9 @@ import { Test, TestingModule } from '@nestjs/testing'; import { DiscoveryService } from '@nestjs/core'; import { expect } from 'chai'; -import { AppModule } from '../src/app.module'; -import { WebhooksExplorer } from '../src/webhooks.explorer'; -import { NonAppliedDecorator } from '../src/decorators/non-applied.decorator'; +import { AppModule } from '../src/app.module.js'; +import { WebhooksExplorer } from '../src/webhooks.explorer.js'; +import { NonAppliedDecorator } from '../src/decorators/non-applied.decorator.js'; describe('DiscoveryModule', () => { let moduleRef: TestingModule; diff --git a/integration/discovery/src/app.module.ts b/integration/discovery/src/app.module.ts index c0d93e30c3..ee503ab5d9 100644 --- a/integration/discovery/src/app.module.ts +++ b/integration/discovery/src/app.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { DiscoveryModule } from '@nestjs/core'; -import { MyWebhookModule } from './my-webhook/my-webhook.module'; -import { WebhooksExplorer } from './webhooks.explorer'; +import { MyWebhookModule } from './my-webhook/my-webhook.module.js'; +import { WebhooksExplorer } from './webhooks.explorer.js'; @Module({ imports: [MyWebhookModule, DiscoveryModule], diff --git a/integration/discovery/src/my-webhook/cleanup.webhook.ts b/integration/discovery/src/my-webhook/cleanup.webhook.ts index 11364d87c2..a16bc452a1 100644 --- a/integration/discovery/src/my-webhook/cleanup.webhook.ts +++ b/integration/discovery/src/my-webhook/cleanup.webhook.ts @@ -1,4 +1,4 @@ -import { Webhook, WebhookHandler } from '../decorators/webhook.decorators'; +import { Webhook, WebhookHandler } from '../decorators/webhook.decorators.js'; @Webhook({ name: 'cleanup' }) export class CleanupWebhook { diff --git a/integration/discovery/src/my-webhook/flush.webhook.ts b/integration/discovery/src/my-webhook/flush.webhook.ts index e1db930878..ba43ae2b44 100644 --- a/integration/discovery/src/my-webhook/flush.webhook.ts +++ b/integration/discovery/src/my-webhook/flush.webhook.ts @@ -1,4 +1,4 @@ -import { Webhook, WebhookHandler } from '../decorators/webhook.decorators'; +import { Webhook, WebhookHandler } from '../decorators/webhook.decorators.js'; @Webhook({ name: 'flush' }) export class FlushWebhook { diff --git a/integration/discovery/src/my-webhook/my-webhook.module.ts b/integration/discovery/src/my-webhook/my-webhook.module.ts index d868b95d99..af9acd6dd3 100644 --- a/integration/discovery/src/my-webhook/my-webhook.module.ts +++ b/integration/discovery/src/my-webhook/my-webhook.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { CleanupWebhook } from './cleanup.webhook'; -import { FlushWebhook } from './flush.webhook'; +import { CleanupWebhook } from './cleanup.webhook.js'; +import { FlushWebhook } from './flush.webhook.js'; @Module({ providers: [CleanupWebhook, FlushWebhook] }) export class MyWebhookModule {} diff --git a/integration/discovery/src/webhooks.explorer.ts b/integration/discovery/src/webhooks.explorer.ts index d449950a54..a827c7ff20 100644 --- a/integration/discovery/src/webhooks.explorer.ts +++ b/integration/discovery/src/webhooks.explorer.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { DiscoveryService, MetadataScanner } from '@nestjs/core'; -import { Webhook, WebhookHandler } from './decorators/webhook.decorators'; +import { Webhook, WebhookHandler } from './decorators/webhook.decorators.js'; @Injectable() export class WebhooksExplorer { diff --git a/integration/discovery/tsconfig.json b/integration/discovery/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/discovery/tsconfig.json +++ b/integration/discovery/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/graphql-code-first/e2e/code-first.spec.ts b/integration/graphql-code-first/e2e/code-first.spec.ts index 258edd8a90..18ad0112dd 100644 --- a/integration/graphql-code-first/e2e/code-first.spec.ts +++ b/integration/graphql-code-first/e2e/code-first.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('GraphQL - Code-first', () => { let app: INestApplication; diff --git a/integration/graphql-code-first/e2e/guards-filters.spec.ts b/integration/graphql-code-first/e2e/guards-filters.spec.ts index 4953d771ca..c4481bab12 100644 --- a/integration/graphql-code-first/e2e/guards-filters.spec.ts +++ b/integration/graphql-code-first/e2e/guards-filters.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('GraphQL - Guards', () => { let app: INestApplication; diff --git a/integration/graphql-code-first/e2e/pipes.spec.ts b/integration/graphql-code-first/e2e/pipes.spec.ts index e14e31df18..ad51fd71ae 100644 --- a/integration/graphql-code-first/e2e/pipes.spec.ts +++ b/integration/graphql-code-first/e2e/pipes.spec.ts @@ -1,7 +1,7 @@ import { INestApplication, ValidationPipe } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('GraphQL Pipes', () => { let app: INestApplication; diff --git a/integration/graphql-code-first/src/app.module.ts b/integration/graphql-code-first/src/app.module.ts index 5da27fa35a..eddfa249bb 100644 --- a/integration/graphql-code-first/src/app.module.ts +++ b/integration/graphql-code-first/src/app.module.ts @@ -2,7 +2,7 @@ import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { join } from 'path'; -import { RecipesModule } from './recipes/recipes.module'; +import { RecipesModule } from './recipes/recipes.module.js'; @Module({ imports: [ diff --git a/integration/graphql-code-first/src/main.ts b/integration/graphql-code-first/src/main.ts index 4561536fa3..a812539be9 100644 --- a/integration/graphql-code-first/src/main.ts +++ b/integration/graphql-code-first/src/main.ts @@ -1,6 +1,6 @@ import { ValidationPipe } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; +import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(AppModule); diff --git a/integration/graphql-code-first/src/recipes/recipes.module.ts b/integration/graphql-code-first/src/recipes/recipes.module.ts index efb8dfa837..77b8eb5af2 100644 --- a/integration/graphql-code-first/src/recipes/recipes.module.ts +++ b/integration/graphql-code-first/src/recipes/recipes.module.ts @@ -1,9 +1,9 @@ import { Module } from '@nestjs/common'; import { APP_FILTER } from '@nestjs/core'; -import { UnauthorizedFilter } from '../common/filters/unauthorized.filter'; -import { DateScalar } from '../common/scalars/date.scalar'; -import { RecipesResolver } from './recipes.resolver'; -import { RecipesService } from './recipes.service'; +import { UnauthorizedFilter } from '../common/filters/unauthorized.filter.js'; +import { DateScalar } from '../common/scalars/date.scalar.js'; +import { RecipesResolver } from './recipes.resolver.js'; +import { RecipesService } from './recipes.service.js'; @Module({ providers: [ diff --git a/integration/graphql-code-first/src/recipes/recipes.resolver.ts b/integration/graphql-code-first/src/recipes/recipes.resolver.ts index a91459c5d7..cf39f92369 100644 --- a/integration/graphql-code-first/src/recipes/recipes.resolver.ts +++ b/integration/graphql-code-first/src/recipes/recipes.resolver.ts @@ -1,12 +1,12 @@ import { NotFoundException, UseGuards, UseInterceptors } from '@nestjs/common'; import { Args, Mutation, Query, Resolver, Subscription } from '@nestjs/graphql'; import { PubSub } from 'graphql-subscriptions'; -import { AuthGuard } from '../common/guards/auth.guard'; -import { DataInterceptor } from '../common/interceptors/data.interceptor'; -import { NewRecipeInput } from './dto/new-recipe.input'; -import { RecipesArgs } from './dto/recipes.args'; -import { Recipe } from './models/recipe'; -import { RecipesService } from './recipes.service'; +import { AuthGuard } from '../common/guards/auth.guard.js'; +import { DataInterceptor } from '../common/interceptors/data.interceptor.js'; +import { NewRecipeInput } from './dto/new-recipe.input.js'; +import { RecipesArgs } from './dto/recipes.args.js'; +import { Recipe } from './models/recipe.js'; +import { RecipesService } from './recipes.service.js'; const pubSub = new PubSub(); diff --git a/integration/graphql-code-first/src/recipes/recipes.service.ts b/integration/graphql-code-first/src/recipes/recipes.service.ts index ba2ab57919..ae4eabed38 100644 --- a/integration/graphql-code-first/src/recipes/recipes.service.ts +++ b/integration/graphql-code-first/src/recipes/recipes.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; -import { NewRecipeInput } from './dto/new-recipe.input'; -import { RecipesArgs } from './dto/recipes.args'; -import { Recipe } from './models/recipe'; +import { NewRecipeInput } from './dto/new-recipe.input.js'; +import { RecipesArgs } from './dto/recipes.args.js'; +import { Recipe } from './models/recipe.js'; @Injectable() export class RecipesService { diff --git a/integration/graphql-code-first/tsconfig.json b/integration/graphql-code-first/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/graphql-code-first/tsconfig.json +++ b/integration/graphql-code-first/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/graphql-schema-first/e2e/graphql-async-class.spec.ts b/integration/graphql-schema-first/e2e/graphql-async-class.spec.ts index 6ed8d94682..741ea679ef 100644 --- a/integration/graphql-schema-first/e2e/graphql-async-class.spec.ts +++ b/integration/graphql-schema-first/e2e/graphql-async-class.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; -import * as request from 'supertest'; -import { AsyncClassApplicationModule } from '../src/async-options-class.module'; +import request from 'supertest'; +import { AsyncClassApplicationModule } from '../src/async-options-class.module.js'; describe('GraphQL (async class)', () => { let app: INestApplication; diff --git a/integration/graphql-schema-first/e2e/graphql-async-existing.spec.ts b/integration/graphql-schema-first/e2e/graphql-async-existing.spec.ts index 2310298487..8b379f1bff 100644 --- a/integration/graphql-schema-first/e2e/graphql-async-existing.spec.ts +++ b/integration/graphql-schema-first/e2e/graphql-async-existing.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; -import * as request from 'supertest'; -import { AsyncExistingApplicationModule } from '../src/async-options-existing.module'; +import request from 'supertest'; +import { AsyncExistingApplicationModule } from '../src/async-options-existing.module.js'; describe('GraphQL (async existing)', () => { let app: INestApplication; diff --git a/integration/graphql-schema-first/e2e/graphql-async.spec.ts b/integration/graphql-schema-first/e2e/graphql-async.spec.ts index cf2cd47b4c..cc15515084 100644 --- a/integration/graphql-schema-first/e2e/graphql-async.spec.ts +++ b/integration/graphql-schema-first/e2e/graphql-async.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; -import * as request from 'supertest'; -import { AsyncApplicationModule } from '../src/async-options.module'; +import request from 'supertest'; +import { AsyncApplicationModule } from '../src/async-options.module.js'; describe('GraphQL (async configuration)', () => { let app: INestApplication; diff --git a/integration/graphql-schema-first/e2e/graphql-request-scoped.spec.ts b/integration/graphql-schema-first/e2e/graphql-request-scoped.spec.ts index 125a55c815..5f5ee97160 100644 --- a/integration/graphql-schema-first/e2e/graphql-request-scoped.spec.ts +++ b/integration/graphql-schema-first/e2e/graphql-request-scoped.spec.ts @@ -4,9 +4,9 @@ import { GraphQLModule } from '@nestjs/graphql'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { join } from 'path'; -import * as request from 'supertest'; -import { CatsRequestScopedService } from '../src/cats/cats-request-scoped.service'; -import { CatsModule } from '../src/cats/cats.module'; +import request from 'supertest'; +import { CatsRequestScopedService } from '../src/cats/cats-request-scoped.service.js'; +import { CatsModule } from '../src/cats/cats.module.js'; describe('GraphQL request scoped', () => { let app: INestApplication; @@ -17,7 +17,9 @@ describe('GraphQL request scoped', () => { CatsModule.enableRequestScope(), GraphQLModule.forRoot({ driver: ApolloDriver, - typePaths: [join(__dirname, '..', 'src', '**', '*.graphql')], + typePaths: [ + join(import.meta.dirname, '..', 'src', '**', '*.graphql'), + ], }), ], }).compile(); diff --git a/integration/graphql-schema-first/e2e/graphql.spec.ts b/integration/graphql-schema-first/e2e/graphql.spec.ts index e8ced186f3..a3f07f1186 100644 --- a/integration/graphql-schema-first/e2e/graphql.spec.ts +++ b/integration/graphql-schema-first/e2e/graphql.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('GraphQL', () => { let app: INestApplication; diff --git a/integration/graphql-schema-first/src/app.module.ts b/integration/graphql-schema-first/src/app.module.ts index 2879cfc9f3..0f9be0cc42 100644 --- a/integration/graphql-schema-first/src/app.module.ts +++ b/integration/graphql-schema-first/src/app.module.ts @@ -2,7 +2,7 @@ import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { join } from 'path'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; @Module({ imports: [ @@ -10,7 +10,7 @@ import { CatsModule } from './cats/cats.module'; GraphQLModule.forRoot({ driver: ApolloDriver, includeStacktraceInErrorResponses: true, - typePaths: [join(__dirname, '**', '*.graphql')], + typePaths: [join(import.meta.dirname, '**', '*.graphql')], }), ], }) diff --git a/integration/graphql-schema-first/src/async-options-class.module.ts b/integration/graphql-schema-first/src/async-options-class.module.ts index 5e702348dd..164abdfceb 100644 --- a/integration/graphql-schema-first/src/async-options-class.module.ts +++ b/integration/graphql-schema-first/src/async-options-class.module.ts @@ -2,12 +2,12 @@ import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GqlOptionsFactory, GraphQLModule } from '@nestjs/graphql'; import { join } from 'path'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; class ConfigService implements GqlOptionsFactory { createGqlOptions(): ApolloDriverConfig { return { - typePaths: [join(__dirname, '**', '*.graphql')], + typePaths: [join(import.meta.dirname, '**', '*.graphql')], }; } } diff --git a/integration/graphql-schema-first/src/async-options-existing.module.ts b/integration/graphql-schema-first/src/async-options-existing.module.ts index e68b65ada6..9c6b5363bf 100644 --- a/integration/graphql-schema-first/src/async-options-existing.module.ts +++ b/integration/graphql-schema-first/src/async-options-existing.module.ts @@ -1,9 +1,9 @@ import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; -import { CatsModule } from './cats/cats.module'; -import { ConfigModule } from './config.module'; -import { ConfigService } from './config.service'; +import { CatsModule } from './cats/cats.module.js'; +import { ConfigModule } from './config.module.js'; +import { ConfigService } from './config.service.js'; @Module({ imports: [ diff --git a/integration/graphql-schema-first/src/async-options.module.ts b/integration/graphql-schema-first/src/async-options.module.ts index c123cbc97a..1068c78c68 100644 --- a/integration/graphql-schema-first/src/async-options.module.ts +++ b/integration/graphql-schema-first/src/async-options.module.ts @@ -2,7 +2,7 @@ import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { join } from 'path'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; @Module({ imports: [ @@ -10,7 +10,7 @@ import { CatsModule } from './cats/cats.module'; GraphQLModule.forRootAsync({ driver: ApolloDriver, useFactory: async () => ({ - typePaths: [join(__dirname, '**', '*.graphql')], + typePaths: [join(import.meta.dirname, '**', '*.graphql')], }), }), ], diff --git a/integration/graphql-schema-first/src/cats/cats-request-scoped.service.ts b/integration/graphql-schema-first/src/cats/cats-request-scoped.service.ts index ebb88880d4..1338a78a86 100644 --- a/integration/graphql-schema-first/src/cats/cats-request-scoped.service.ts +++ b/integration/graphql-schema-first/src/cats/cats-request-scoped.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { Cat } from './interfaces/cat.interface'; +import { Cat } from './interfaces/cat.interface.js'; @Injectable({ scope: Scope.REQUEST }) export class CatsRequestScopedService { diff --git a/integration/graphql-schema-first/src/cats/cats.module.ts b/integration/graphql-schema-first/src/cats/cats.module.ts index b2fa3f9a97..572fa38c22 100644 --- a/integration/graphql-schema-first/src/cats/cats.module.ts +++ b/integration/graphql-schema-first/src/cats/cats.module.ts @@ -1,7 +1,7 @@ import { DynamicModule, Module, Scope } from '@nestjs/common'; -import { CatsRequestScopedService } from './cats-request-scoped.service'; -import { CatsResolvers } from './cats.resolvers'; -import { CatsService } from './cats.service'; +import { CatsRequestScopedService } from './cats-request-scoped.service.js'; +import { CatsResolvers } from './cats.resolvers.js'; +import { CatsService } from './cats.service.js'; @Module({ providers: [CatsService, CatsResolvers], diff --git a/integration/graphql-schema-first/src/cats/cats.resolvers.ts b/integration/graphql-schema-first/src/cats/cats.resolvers.ts index fcc08097aa..d537f4f482 100644 --- a/integration/graphql-schema-first/src/cats/cats.resolvers.ts +++ b/integration/graphql-schema-first/src/cats/cats.resolvers.ts @@ -1,9 +1,9 @@ import { ParseIntPipe, UseGuards } from '@nestjs/common'; import { Args, Mutation, Query, Resolver, Subscription } from '@nestjs/graphql'; import { PubSub } from 'graphql-subscriptions'; -import { CatsGuard } from './cats.guard'; -import { CatsService } from './cats.service'; -import { Cat } from './interfaces/cat.interface'; +import { CatsGuard } from './cats.guard.js'; +import { CatsService } from './cats.service.js'; +import { Cat } from './interfaces/cat.interface.js'; const pubSub = new PubSub(); diff --git a/integration/graphql-schema-first/src/cats/cats.service.ts b/integration/graphql-schema-first/src/cats/cats.service.ts index a529301e6b..397fd1fbc7 100644 --- a/integration/graphql-schema-first/src/cats/cats.service.ts +++ b/integration/graphql-schema-first/src/cats/cats.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { Cat } from './interfaces/cat.interface'; +import { Cat } from './interfaces/cat.interface.js'; @Injectable() export class CatsService { diff --git a/integration/graphql-schema-first/src/config.module.ts b/integration/graphql-schema-first/src/config.module.ts index eaa505c846..bf41826bbf 100644 --- a/integration/graphql-schema-first/src/config.module.ts +++ b/integration/graphql-schema-first/src/config.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { ConfigService } from './config.service'; +import { ConfigService } from './config.service.js'; @Module({ providers: [ConfigService], diff --git a/integration/graphql-schema-first/src/config.service.ts b/integration/graphql-schema-first/src/config.service.ts index 66ed7ee022..bbdabd115f 100644 --- a/integration/graphql-schema-first/src/config.service.ts +++ b/integration/graphql-schema-first/src/config.service.ts @@ -6,7 +6,7 @@ import { join } from 'path'; export class ConfigService implements GqlOptionsFactory { createGqlOptions(): GqlModuleOptions { return { - typePaths: [join(__dirname, '**', '*.graphql')], + typePaths: [join(import.meta.dirname, '**', '*.graphql')], }; } } diff --git a/integration/graphql-schema-first/src/main.ts b/integration/graphql-schema-first/src/main.ts index 23f3240c27..2061a1ced0 100644 --- a/integration/graphql-schema-first/src/main.ts +++ b/integration/graphql-schema-first/src/main.ts @@ -1,5 +1,5 @@ import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; +import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(AppModule); diff --git a/integration/graphql-schema-first/tsconfig.json b/integration/graphql-schema-first/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/graphql-schema-first/tsconfig.json +++ b/integration/graphql-schema-first/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/hello-world/e2e/exceptions.spec.ts b/integration/hello-world/e2e/exceptions.spec.ts index 581964807d..2a72eb7878 100644 --- a/integration/hello-world/e2e/exceptions.spec.ts +++ b/integration/hello-world/e2e/exceptions.spec.ts @@ -6,8 +6,8 @@ import { import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { RawServerDefault } from 'fastify'; -import * as request from 'supertest'; -import { ErrorsController } from '../src/errors/errors.controller'; +import request from 'supertest'; +import { ErrorsController } from '../src/errors/errors.controller.js'; describe('Error messages', () => { let server: RawServerDefault; diff --git a/integration/hello-world/e2e/exclude-middleware-fastify.spec.ts b/integration/hello-world/e2e/exclude-middleware-fastify.spec.ts index ab36bdb74c..27fb5c46cb 100644 --- a/integration/hello-world/e2e/exclude-middleware-fastify.spec.ts +++ b/integration/hello-world/e2e/exclude-middleware-fastify.spec.ts @@ -12,8 +12,8 @@ import { NestFastifyApplication, } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const RETURN_VALUE = 'test'; const MIDDLEWARE_VALUE = 'middleware'; diff --git a/integration/hello-world/e2e/exclude-middleware.spec.ts b/integration/hello-world/e2e/exclude-middleware.spec.ts index e5f4befc62..9cc466b35e 100644 --- a/integration/hello-world/e2e/exclude-middleware.spec.ts +++ b/integration/hello-world/e2e/exclude-middleware.spec.ts @@ -8,8 +8,8 @@ import { RequestMethod, } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const RETURN_VALUE = 'test'; const MIDDLEWARE_VALUE = 'middleware'; diff --git a/integration/hello-world/e2e/express-instance.spec.ts b/integration/hello-world/e2e/express-instance.spec.ts index f035a42704..f2504de350 100644 --- a/integration/hello-world/e2e/express-instance.spec.ts +++ b/integration/hello-world/e2e/express-instance.spec.ts @@ -1,10 +1,10 @@ import { INestApplication } from '@nestjs/common'; import { ExpressAdapter } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; -import * as express from 'express'; -import * as request from 'supertest'; +import express from 'express'; +import request from 'supertest'; import { App } from 'supertest/types'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Hello world (express instance)', () => { let server: App; diff --git a/integration/hello-world/e2e/express-multiple.spec.ts b/integration/hello-world/e2e/express-multiple.spec.ts index 1f799d4793..329450c93b 100644 --- a/integration/hello-world/e2e/express-multiple.spec.ts +++ b/integration/hello-world/e2e/express-multiple.spec.ts @@ -1,9 +1,9 @@ import { INestApplication } from '@nestjs/common'; import { ExpressAdapter } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; -import * as express from 'express'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import express from 'express'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Hello world (express instance with multiple applications)', () => { let server; diff --git a/integration/hello-world/e2e/fastify-adapter.spec.ts b/integration/hello-world/e2e/fastify-adapter.spec.ts index 73852ba234..befb6cec4a 100644 --- a/integration/hello-world/e2e/fastify-adapter.spec.ts +++ b/integration/hello-world/e2e/fastify-adapter.spec.ts @@ -4,7 +4,7 @@ import { } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Hello world (fastify adapter)', () => { let app: NestFastifyApplication; diff --git a/integration/hello-world/e2e/fastify-multiple.spec.ts b/integration/hello-world/e2e/fastify-multiple.spec.ts index d8dc60b104..ec201c279e 100644 --- a/integration/hello-world/e2e/fastify-multiple.spec.ts +++ b/integration/hello-world/e2e/fastify-multiple.spec.ts @@ -3,7 +3,7 @@ import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { ApplicationModule } from '../src/app.module'; +import { ApplicationModule } from '../src/app.module.js'; describe('Hello world (fastify adapter with multiple applications)', () => { let adapter: FastifyAdapter; diff --git a/integration/hello-world/e2e/force-console.spec.ts b/integration/hello-world/e2e/force-console.spec.ts index cb6aa733ba..90338ce5ae 100644 --- a/integration/hello-world/e2e/force-console.spec.ts +++ b/integration/hello-world/e2e/force-console.spec.ts @@ -1,7 +1,7 @@ import { ConsoleLogger, INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; import * as sinon from 'sinon'; import { expect } from 'chai'; diff --git a/integration/hello-world/e2e/guards.spec.ts b/integration/hello-world/e2e/guards.spec.ts index 9708261238..c7db07d3fb 100644 --- a/integration/hello-world/e2e/guards.spec.ts +++ b/integration/hello-world/e2e/guards.spec.ts @@ -5,8 +5,8 @@ import { } from '@nestjs/common'; import { APP_GUARD } from '@nestjs/core'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; @Injectable() export class AuthGuard { diff --git a/integration/hello-world/e2e/hello-world.spec.ts b/integration/hello-world/e2e/hello-world.spec.ts index e2f3a895f5..c828a49d85 100644 --- a/integration/hello-world/e2e/hello-world.spec.ts +++ b/integration/hello-world/e2e/hello-world.spec.ts @@ -1,7 +1,7 @@ -import * as request from 'supertest'; +import request from 'supertest'; import { Test } from '@nestjs/testing'; import { INestApplication } from '@nestjs/common'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Hello world (default adapter)', () => { let server; diff --git a/integration/hello-world/e2e/interceptors.spec.ts b/integration/hello-world/e2e/interceptors.spec.ts index 249eb9312a..5da20a73ff 100644 --- a/integration/hello-world/e2e/interceptors.spec.ts +++ b/integration/hello-world/e2e/interceptors.spec.ts @@ -9,8 +9,8 @@ import { APP_INTERCEPTOR } from '@nestjs/core'; import { Test } from '@nestjs/testing'; import { of } from 'rxjs'; import { map } from 'rxjs/operators'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const RETURN_VALUE = 'test'; diff --git a/integration/hello-world/e2e/local-pipes.spec.ts b/integration/hello-world/e2e/local-pipes.spec.ts index e982bc4aec..63cfeed5a0 100644 --- a/integration/hello-world/e2e/local-pipes.spec.ts +++ b/integration/hello-world/e2e/local-pipes.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Hello world (default adapter)', () => { let server; diff --git a/integration/hello-world/e2e/middleware-class.spec.ts b/integration/hello-world/e2e/middleware-class.spec.ts index 4989642360..2905e60d28 100644 --- a/integration/hello-world/e2e/middleware-class.spec.ts +++ b/integration/hello-world/e2e/middleware-class.spec.ts @@ -9,8 +9,8 @@ import { } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { Response } from 'express'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const INCLUDED_VALUE = 'test_included'; const RETURN_VALUE = 'test'; diff --git a/integration/hello-world/e2e/middleware-execute-order.spec.ts b/integration/hello-world/e2e/middleware-execute-order.spec.ts index 21de024524..7e660be19b 100644 --- a/integration/hello-world/e2e/middleware-execute-order.spec.ts +++ b/integration/hello-world/e2e/middleware-execute-order.spec.ts @@ -5,7 +5,7 @@ import { Module, } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; +import request from 'supertest'; const RETURN_VALUE_A = 'test_A'; const RETURN_VALUE_B = 'test_B'; diff --git a/integration/hello-world/e2e/middleware-fastify.spec.ts b/integration/hello-world/e2e/middleware-fastify.spec.ts index 98ee467607..56b455164d 100644 --- a/integration/hello-world/e2e/middleware-fastify.spec.ts +++ b/integration/hello-world/e2e/middleware-fastify.spec.ts @@ -17,8 +17,8 @@ import { import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { FastifyRequest } from 'fastify'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Middleware (FastifyAdapter)', () => { let app: NestFastifyApplication; diff --git a/integration/hello-world/e2e/middleware-run-match-route.ts b/integration/hello-world/e2e/middleware-run-match-route.ts index c3c8ed3cfa..feb32428cd 100644 --- a/integration/hello-world/e2e/middleware-run-match-route.ts +++ b/integration/hello-world/e2e/middleware-run-match-route.ts @@ -7,8 +7,8 @@ import { NestMiddleware, Module, } from '@nestjs/common'; -import { Test } from '../../../packages/testing'; -import * as request from 'supertest'; +import { Test } from '../../../packages/testing.js'; +import request from 'supertest'; import { expect } from 'chai'; /** diff --git a/integration/hello-world/e2e/middleware-with-versioning.spec.ts b/integration/hello-world/e2e/middleware-with-versioning.spec.ts index a16645b685..f5f7761699 100644 --- a/integration/hello-world/e2e/middleware-with-versioning.spec.ts +++ b/integration/hello-world/e2e/middleware-with-versioning.spec.ts @@ -6,14 +6,14 @@ import { Module, RequestMethod, Version, + VERSION_NEUTRAL, VersioningOptions, VersioningType, - VERSION_NEUTRAL, } from '@nestjs/common'; -import { CustomVersioningOptions } from '@nestjs/common/interfaces'; +import { CustomVersioningOptions } from '@nestjs/common/interfaces/index.js'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const RETURN_VALUE = 'test'; const VERSIONED_VALUE = 'test_versioned'; diff --git a/integration/hello-world/e2e/middleware.spec.ts b/integration/hello-world/e2e/middleware.spec.ts index 6d349d8316..7412de91f2 100644 --- a/integration/hello-world/e2e/middleware.spec.ts +++ b/integration/hello-world/e2e/middleware.spec.ts @@ -6,8 +6,8 @@ import { Module, } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const RETURN_VALUE = 'test'; const SCOPED_VALUE = 'test_scoped'; diff --git a/integration/hello-world/e2e/router-module-middleware.spec.ts b/integration/hello-world/e2e/router-module-middleware.spec.ts index 52fe55ced5..ab52b4e5cd 100644 --- a/integration/hello-world/e2e/router-module-middleware.spec.ts +++ b/integration/hello-world/e2e/router-module-middleware.spec.ts @@ -7,8 +7,8 @@ import { } from '@nestjs/common'; import { RouterModule } from '@nestjs/core'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; const RETURN_VALUE = 'test'; const SCOPED_VALUE = 'test_scoped'; diff --git a/integration/hello-world/e2e/router-module.spec.ts b/integration/hello-world/e2e/router-module.spec.ts index cc576e261e..1ad100be0f 100644 --- a/integration/hello-world/e2e/router-module.spec.ts +++ b/integration/hello-world/e2e/router-module.spec.ts @@ -1,7 +1,7 @@ import { Controller, Get, INestApplication, Module } from '@nestjs/common'; import { RouterModule, Routes } from '@nestjs/core'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; +import request from 'supertest'; describe('RouterModule', () => { let app: INestApplication; diff --git a/integration/hello-world/src/app.module.ts b/integration/hello-world/src/app.module.ts index b34bf1cfe8..023aa35fb9 100644 --- a/integration/hello-world/src/app.module.ts +++ b/integration/hello-world/src/app.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { HelloModule } from './hello/hello.module'; -import { HostArrayModule } from './host-array/host-array.module'; -import { HostModule } from './host/host.module'; +import { HelloModule } from './hello/hello.module.js'; +import { HostArrayModule } from './host-array/host-array.module.js'; +import { HostModule } from './host/host.module.js'; @Module({ imports: [HelloModule, HostModule, HostArrayModule], diff --git a/integration/hello-world/src/hello/hello.controller.ts b/integration/hello-world/src/hello/hello.controller.ts index be715e1471..5db2d29d46 100644 --- a/integration/hello-world/src/hello/hello.controller.ts +++ b/integration/hello-world/src/hello/hello.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Header, Param } from '@nestjs/common'; import { Observable, of } from 'rxjs'; -import { HelloService } from './hello.service'; -import { UserByIdPipe } from './users/user-by-id.pipe'; +import { HelloService } from './hello.service.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; @Controller('hello') export class HelloController { diff --git a/integration/hello-world/src/hello/hello.module.ts b/integration/hello-world/src/hello/hello.module.ts index b831a93157..fe28640f84 100644 --- a/integration/hello-world/src/hello/hello.module.ts +++ b/integration/hello-world/src/hello/hello.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController], diff --git a/integration/hello-world/src/hello/users/user-by-id.pipe.ts b/integration/hello-world/src/hello/users/user-by-id.pipe.ts index f4405205ff..31f7e27e89 100644 --- a/integration/hello-world/src/hello/users/user-by-id.pipe.ts +++ b/integration/hello-world/src/hello/users/user-by-id.pipe.ts @@ -1,5 +1,5 @@ import { PipeTransform, Injectable, ArgumentMetadata } from '@nestjs/common'; -import { UsersService } from './users.service'; +import { UsersService } from './users.service.js'; @Injectable() export class UserByIdPipe implements PipeTransform { diff --git a/integration/hello-world/src/host-array/host-array.controller.ts b/integration/hello-world/src/host-array/host-array.controller.ts index 8f6456bef1..6c8a24e384 100644 --- a/integration/hello-world/src/host-array/host-array.controller.ts +++ b/integration/hello-world/src/host-array/host-array.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Header, HostParam, Param } from '@nestjs/common'; import { Observable, of } from 'rxjs'; -import { HostArrayService } from './host-array.service'; -import { UserByIdPipe } from './users/user-by-id.pipe'; +import { HostArrayService } from './host-array.service.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; @Controller({ path: 'host-array', diff --git a/integration/hello-world/src/host-array/host-array.module.ts b/integration/hello-world/src/host-array/host-array.module.ts index b5f7f77d43..d13bb3a233 100644 --- a/integration/hello-world/src/host-array/host-array.module.ts +++ b/integration/hello-world/src/host-array/host-array.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { HostArrayController } from './host-array.controller'; -import { HostArrayService } from './host-array.service'; -import { UsersService } from './users/users.service'; +import { HostArrayController } from './host-array.controller.js'; +import { HostArrayService } from './host-array.service.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HostArrayController], diff --git a/integration/hello-world/src/host-array/users/user-by-id.pipe.ts b/integration/hello-world/src/host-array/users/user-by-id.pipe.ts index f4405205ff..31f7e27e89 100644 --- a/integration/hello-world/src/host-array/users/user-by-id.pipe.ts +++ b/integration/hello-world/src/host-array/users/user-by-id.pipe.ts @@ -1,5 +1,5 @@ import { PipeTransform, Injectable, ArgumentMetadata } from '@nestjs/common'; -import { UsersService } from './users.service'; +import { UsersService } from './users.service.js'; @Injectable() export class UserByIdPipe implements PipeTransform { diff --git a/integration/hello-world/src/host/host.controller.ts b/integration/hello-world/src/host/host.controller.ts index 8501d59eb8..61f72c474b 100644 --- a/integration/hello-world/src/host/host.controller.ts +++ b/integration/hello-world/src/host/host.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Header, HostParam, Param } from '@nestjs/common'; import { Observable, of } from 'rxjs'; -import { HostService } from './host.service'; -import { UserByIdPipe } from './users/user-by-id.pipe'; +import { HostService } from './host.service.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; @Controller({ path: 'host', diff --git a/integration/hello-world/src/host/host.module.ts b/integration/hello-world/src/host/host.module.ts index 6d7a733033..e5c2e49c47 100644 --- a/integration/hello-world/src/host/host.module.ts +++ b/integration/hello-world/src/host/host.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { HostController } from './host.controller'; -import { HostService } from './host.service'; -import { UsersService } from './users/users.service'; +import { HostController } from './host.controller.js'; +import { HostService } from './host.service.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HostController], diff --git a/integration/hello-world/src/host/users/user-by-id.pipe.ts b/integration/hello-world/src/host/users/user-by-id.pipe.ts index f4405205ff..31f7e27e89 100644 --- a/integration/hello-world/src/host/users/user-by-id.pipe.ts +++ b/integration/hello-world/src/host/users/user-by-id.pipe.ts @@ -1,5 +1,5 @@ import { PipeTransform, Injectable, ArgumentMetadata } from '@nestjs/common'; -import { UsersService } from './users.service'; +import { UsersService } from './users.service.js'; @Injectable() export class UserByIdPipe implements PipeTransform { diff --git a/integration/hello-world/tsconfig.json b/integration/hello-world/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/hello-world/tsconfig.json +++ b/integration/hello-world/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/hooks/e2e/enable-shutdown-hook.spec.ts b/integration/hooks/e2e/enable-shutdown-hook.spec.ts index 9e35bb1d01..89e9fa6008 100644 --- a/integration/hooks/e2e/enable-shutdown-hook.spec.ts +++ b/integration/hooks/e2e/enable-shutdown-hook.spec.ts @@ -2,12 +2,23 @@ import { expect } from 'chai'; import { spawnSync } from 'child_process'; import { join } from 'path'; +// Use node with the ts-node ESM loader (same as mocha's --import) +const nodeCmd = process.execPath; +const loaderArgs = [ + '--import', + join(import.meta.dirname, '../../../hooks/ts-node-register.mjs'), +]; + +function spawnTsNode(...args: string[]) { + return spawnSync(nodeCmd, [...loaderArgs, ...args]); +} + describe('enableShutdownHooks', () => { it('should call the correct hooks if any shutdown signal gets invoked', done => { - const result = spawnSync('ts-node', [ - join(__dirname, '../src/enable-shutdown-hooks-main.ts'), + const result = spawnTsNode( + join(import.meta.dirname, '../src/enable-shutdown-hooks-main.ts'), 'SIGHUP', - ]); + ); const calls = result.stdout .toString() .split('\n') @@ -18,11 +29,11 @@ describe('enableShutdownHooks', () => { }).timeout(10000); it('should call the correct hooks if a specific shutdown signal gets invoked', done => { - const result = spawnSync('ts-node', [ - join(__dirname, '../src/enable-shutdown-hooks-main.ts'), + const result = spawnTsNode( + join(import.meta.dirname, '../src/enable-shutdown-hooks-main.ts'), 'SIGINT', 'SIGINT', - ]); + ); const calls = result.stdout .toString() .split('\n') @@ -33,32 +44,32 @@ describe('enableShutdownHooks', () => { }).timeout(10000); it('should ignore system signals which are not specified', done => { - const result = spawnSync('ts-node', [ - join(__dirname, '../src/enable-shutdown-hooks-main.ts'), + const result = spawnTsNode( + join(import.meta.dirname, '../src/enable-shutdown-hooks-main.ts'), 'SIGINT', 'SIGHUP', - ]); + ); expect(result.stdout.toString().trim()).to.be.eq(''); done(); }).timeout(10000); it('should ignore system signals if "enableShutdownHooks" was not called', done => { - const result = spawnSync('ts-node', [ - join(__dirname, '../src/enable-shutdown-hooks-main.ts'), + const result = spawnTsNode( + join(import.meta.dirname, '../src/enable-shutdown-hooks-main.ts'), 'SIGINT', 'NONE', - ]); + ); expect(result.stdout.toString().trim()).to.be.eq(''); done(); }).timeout(10000); it('should call the correct hooks with useProcessExit option', done => { - const result = spawnSync('ts-node', [ - join(__dirname, '../src/enable-shutdown-hooks-main.ts'), + const result = spawnTsNode( + join(import.meta.dirname, '../src/enable-shutdown-hooks-main.ts'), 'SIGHUP', 'SIGHUP', 'graceful', - ]); + ); const calls = result.stdout .toString() .split('\n') diff --git a/integration/hooks/tsconfig.json b/integration/hooks/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/hooks/tsconfig.json +++ b/integration/hooks/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/injector/e2e/circular-modules.spec.ts b/integration/injector/e2e/circular-modules.spec.ts index 653a0b98a9..1bdf4c9d9d 100644 --- a/integration/injector/e2e/circular-modules.spec.ts +++ b/integration/injector/e2e/circular-modules.spec.ts @@ -1,9 +1,9 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { CircularModule } from '../src/circular-modules/circular.module'; -import { CircularService } from '../src/circular-modules/circular.service'; -import { InputModule } from '../src/circular-modules/input.module'; -import { InputService } from '../src/circular-modules/input.service'; +import { CircularModule } from '../src/circular-modules/circular.module.js'; +import { CircularService } from '../src/circular-modules/circular.service.js'; +import { InputModule } from '../src/circular-modules/input.module.js'; +import { InputService } from '../src/circular-modules/input.service.js'; describe('Circular dependency (modules)', () => { it('should resolve circular dependency between providers', async () => { diff --git a/integration/injector/e2e/circular-property-injection.spec.ts b/integration/injector/e2e/circular-property-injection.spec.ts index 23997c941d..9e8c86c87d 100644 --- a/integration/injector/e2e/circular-property-injection.spec.ts +++ b/integration/injector/e2e/circular-property-injection.spec.ts @@ -1,9 +1,9 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { CircularPropertiesModule } from '../src/circular-properties/circular-properties.module'; -import { CircularService } from '../src/circular-properties/circular.service'; -import { InputPropertiesModule } from '../src/circular-properties/input-properties.module'; -import { InputService } from '../src/circular-properties/input.service'; +import { CircularPropertiesModule } from '../src/circular-properties/circular-properties.module.js'; +import { CircularService } from '../src/circular-properties/circular.service.js'; +import { InputPropertiesModule } from '../src/circular-properties/input-properties.module.js'; +import { InputService } from '../src/circular-properties/input.service.js'; describe('Circular properties dependency (modules)', () => { it('should resolve circular dependency between providers', async () => { diff --git a/integration/injector/e2e/circular-structure-dynamic-modules.spec.ts b/integration/injector/e2e/circular-structure-dynamic-modules.spec.ts index 5042fed2c2..aaa24c2f48 100644 --- a/integration/injector/e2e/circular-structure-dynamic-modules.spec.ts +++ b/integration/injector/e2e/circular-structure-dynamic-modules.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import { Test } from '@nestjs/testing'; -import { CircularModule } from '../src/circular-structure-dynamic-module/circular.module'; -import { InputService } from '../src/circular-structure-dynamic-module/input.service'; +import { CircularModule } from '../src/circular-structure-dynamic-module/circular.module.js'; +import { InputService } from '../src/circular-structure-dynamic-module/input.service.js'; describe('Circular structure for dynamic modules', () => { it('should resolve circular structure with dynamic modules', async () => { diff --git a/integration/injector/e2e/circular.spec.ts b/integration/injector/e2e/circular.spec.ts index 2ca646cc89..d62de43ef1 100644 --- a/integration/injector/e2e/circular.spec.ts +++ b/integration/injector/e2e/circular.spec.ts @@ -1,8 +1,8 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { CircularModule } from '../src/circular/circular.module'; -import { CircularService } from '../src/circular/circular.service'; -import { InputService } from '../src/circular/input.service'; +import { CircularModule } from '../src/circular/circular.module.js'; +import { CircularService } from '../src/circular/circular.service.js'; +import { InputService } from '../src/circular/input.service.js'; describe('Circular dependency', () => { it('should resolve circular dependency between providers', async () => { diff --git a/integration/injector/e2e/core-injectables.spec.ts b/integration/injector/e2e/core-injectables.spec.ts index ab0b10e59e..b66474fdcb 100644 --- a/integration/injector/e2e/core-injectables.spec.ts +++ b/integration/injector/e2e/core-injectables.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import { CoreInjectablesModule } from '../src/core-injectables/core-injectables.module'; +import { CoreInjectablesModule } from '../src/core-injectables/core-injectables.module.js'; import { ApplicationConfig, ModuleRef } from '@nestjs/core'; describe('Core Injectables', () => { diff --git a/integration/injector/e2e/default-values.spec.ts b/integration/injector/e2e/default-values.spec.ts index fc8da7db35..89354ebc7a 100644 --- a/integration/injector/e2e/default-values.spec.ts +++ b/integration/injector/e2e/default-values.spec.ts @@ -1,7 +1,7 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { DefaultsModule } from '../src/defaults/defaults.module'; -import { DefaultsService } from '../src/defaults/defaults.service'; +import { DefaultsModule } from '../src/defaults/defaults.module.js'; +import { DefaultsService } from '../src/defaults/defaults.service.js'; describe('Injector', () => { describe('when optional', () => { diff --git a/integration/injector/e2e/injector.spec.ts b/integration/injector/e2e/injector.spec.ts index 5fd489676f..00cc11539e 100644 --- a/integration/injector/e2e/injector.spec.ts +++ b/integration/injector/e2e/injector.spec.ts @@ -1,23 +1,22 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; -import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception'; -import { UnknownExportException } from '@nestjs/core/errors/exceptions/unknown-export.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; +import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception.js'; +import { UnknownExportException } from '@nestjs/core/errors/exceptions/unknown-export.exception.js'; import { Test } from '@nestjs/testing'; -import { expect } from 'chai'; -import * as chai from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chai, { expect } from 'chai'; +import chaiAsPromised from 'chai-as-promised'; import { DYNAMIC_TOKEN, DYNAMIC_VALUE, NestDynamicModule, -} from '../src/dynamic/dynamic.module'; -import { ExportsModule } from '../src/exports/exports.module'; -import { InjectModule } from '../src/inject/inject.module'; -import { InjectSameNameModule } from '../src/inject/inject-same-name.module'; +} from '../src/dynamic/dynamic.module.js'; +import { ExportsModule } from '../src/exports/exports.module.js'; +import { InjectSameNameModule } from '../src/inject/inject-same-name.module.js'; +import { InjectModule } from '../src/inject/inject.module.js'; import { - SelfInjectionProviderModule, - SelfInjectionProviderCustomTokenModule, SelfInjectionForwardProviderModule, -} from '../src/self-injection/self-injection-provider.module'; + SelfInjectionProviderCustomTokenModule, + SelfInjectionProviderModule, +} from '../src/self-injection/self-injection-provider.module.js'; chai.use(chaiAsPromised); describe('Injector', () => { diff --git a/integration/injector/e2e/introspection.spec.ts b/integration/injector/e2e/introspection.spec.ts index 6a24c6ddc7..430cbd2ef6 100644 --- a/integration/injector/e2e/introspection.spec.ts +++ b/integration/injector/e2e/introspection.spec.ts @@ -2,9 +2,9 @@ import { Scope } from '@nestjs/common'; import { ModuleRef } from '@nestjs/core'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import { ScopedModule, STATIC_FACTORY } from '../src/scoped/scoped.module'; -import { ScopedService } from '../src/scoped/scoped.service'; -import { TransientService } from '../src/scoped/transient.service'; +import { ScopedModule, STATIC_FACTORY } from '../src/scoped/scoped.module.js'; +import { ScopedService } from '../src/scoped/scoped.service.js'; +import { TransientService } from '../src/scoped/transient.service.js'; describe('Providers introspection', () => { let testingModule: TestingModule; diff --git a/integration/injector/e2e/multiple-providers.spec.ts b/integration/injector/e2e/multiple-providers.spec.ts index 0f5c906fdc..63cf08b06c 100644 --- a/integration/injector/e2e/multiple-providers.spec.ts +++ b/integration/injector/e2e/multiple-providers.spec.ts @@ -1,6 +1,6 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { MultipleProvidersModule } from '../src/multiple-providers/multiple-providers.module'; +import { MultipleProvidersModule } from '../src/multiple-providers/multiple-providers.module.js'; describe('Multiple providers under the same token ("each" feature)', () => { describe('get()', () => { diff --git a/integration/injector/e2e/optional-factory-provider-dep.spec.ts b/integration/injector/e2e/optional-factory-provider-dep.spec.ts index 22a4113cd4..c67ff34ff3 100644 --- a/integration/injector/e2e/optional-factory-provider-dep.spec.ts +++ b/integration/injector/e2e/optional-factory-provider-dep.spec.ts @@ -1,5 +1,5 @@ import { Scope } from '@nestjs/common'; -import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception'; +import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception.js'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; diff --git a/integration/injector/e2e/property-injection.spec.ts b/integration/injector/e2e/property-injection.spec.ts index 7d4582f4ce..57ca4cb763 100644 --- a/integration/injector/e2e/property-injection.spec.ts +++ b/integration/injector/e2e/property-injection.spec.ts @@ -1,9 +1,9 @@ +import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception.js'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { DependencyService } from '../src/properties/dependency.service'; -import { PropertiesModule } from '../src/properties/properties.module'; -import { PropertiesService } from '../src/properties/properties.service'; -import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception'; +import { DependencyService } from '../src/properties/dependency.service.js'; +import { PropertiesModule } from '../src/properties/properties.module.js'; +import { PropertiesService } from '../src/properties/properties.service.js'; describe('Injector', () => { it('should resolve property-based dependencies', async () => { diff --git a/integration/injector/e2e/scoped-instances.spec.ts b/integration/injector/e2e/scoped-instances.spec.ts index 04cab4e5ff..78dc89a2db 100644 --- a/integration/injector/e2e/scoped-instances.spec.ts +++ b/integration/injector/e2e/scoped-instances.spec.ts @@ -1,17 +1,17 @@ import { createContextId } from '@nestjs/core'; -import { InvalidClassScopeException } from '@nestjs/core/errors/exceptions/invalid-class-scope.exception'; +import { InvalidClassScopeException } from '@nestjs/core/errors/exceptions/invalid-class-scope.exception.js'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import { ScopedController } from '../src/scoped/scoped.controller'; +import { ScopedController } from '../src/scoped/scoped.controller.js'; import { REQUEST_SCOPED_FACTORY, ScopedModule, STATIC_FACTORY, TRANSIENT_SCOPED_FACTORY, -} from '../src/scoped/scoped.module'; -import { ScopedService } from '../src/scoped/scoped.service'; -import { TransientService } from '../src/scoped/transient.service'; -import { Transient3Service } from '../src/scoped/transient3.service'; +} from '../src/scoped/scoped.module.js'; +import { ScopedService } from '../src/scoped/scoped.service.js'; +import { TransientService } from '../src/scoped/transient.service.js'; +import { Transient3Service } from '../src/scoped/transient3.service.js'; describe('Scoped Instances', () => { let testingModule: TestingModule; diff --git a/integration/injector/src/app.module.ts b/integration/injector/src/app.module.ts index 881a3758f5..81687ddc84 100644 --- a/integration/injector/src/app.module.ts +++ b/integration/injector/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { ExportsModule } from './exports/exports.module'; +import { ExportsModule } from './exports/exports.module.js'; @Module({ imports: [ExportsModule], diff --git a/integration/injector/src/circular-modules/circular.module.ts b/integration/injector/src/circular-modules/circular.module.ts index bb6afb42a3..6eac28bfd3 100644 --- a/integration/injector/src/circular-modules/circular.module.ts +++ b/integration/injector/src/circular-modules/circular.module.ts @@ -1,6 +1,6 @@ import { Module, forwardRef } from '@nestjs/common'; -import { CircularService } from './circular.service'; -import { InputModule } from './input.module'; +import { CircularService } from './circular.service.js'; +import { InputModule } from './input.module.js'; @Module({ imports: [forwardRef(() => InputModule)], diff --git a/integration/injector/src/circular-modules/circular.service.ts b/integration/injector/src/circular-modules/circular.service.ts index 546d63e6ea..611d79405a 100644 --- a/integration/injector/src/circular-modules/circular.service.ts +++ b/integration/injector/src/circular-modules/circular.service.ts @@ -1,10 +1,14 @@ -import { Injectable, forwardRef, Inject } from '@nestjs/common'; -import { InputService } from './input.service'; +import { forwardRef, Inject, Injectable } from '@nestjs/common'; + +// Use a lazy reference to avoid ESM circular-import TDZ issues +// with emitDecoratorMetadata. +let InputServiceRef: any; +import('./input.service.js').then(m => (InputServiceRef = m.InputService)); @Injectable() export class CircularService { constructor( - @Inject(forwardRef(() => InputService)) - public readonly service: InputService, + @Inject(forwardRef(() => InputServiceRef)) + public readonly service: any, ) {} } diff --git a/integration/injector/src/circular-modules/input.module.ts b/integration/injector/src/circular-modules/input.module.ts index c76dcaa85e..3766b29876 100644 --- a/integration/injector/src/circular-modules/input.module.ts +++ b/integration/injector/src/circular-modules/input.module.ts @@ -1,6 +1,6 @@ import { Module, forwardRef } from '@nestjs/common'; -import { CircularModule } from './circular.module'; -import { InputService } from './input.service'; +import { CircularModule } from './circular.module.js'; +import { InputService } from './input.service.js'; @Module({ imports: [forwardRef(() => CircularModule)], diff --git a/integration/injector/src/circular-modules/input.service.ts b/integration/injector/src/circular-modules/input.service.ts index 342e8bf0d0..e360c6d7c0 100644 --- a/integration/injector/src/circular-modules/input.service.ts +++ b/integration/injector/src/circular-modules/input.service.ts @@ -1,10 +1,17 @@ -import { Injectable, Inject, forwardRef } from '@nestjs/common'; -import { CircularService } from './circular.service'; +import { Inject, Injectable, forwardRef } from '@nestjs/common'; + +// Use a lazy reference to avoid ESM circular-import TDZ issues +// with emitDecoratorMetadata. The class is imported asynchronously +// and cached for forwardRef resolution. +let CircularServiceRef: any; +import('./circular.service.js').then( + m => (CircularServiceRef = m.CircularService), +); @Injectable() export class InputService { constructor( - @Inject(forwardRef(() => CircularService)) - public readonly service: CircularService, + @Inject(forwardRef(() => CircularServiceRef)) + public readonly service: any, ) {} } diff --git a/integration/injector/src/circular-properties/circular-properties.module.ts b/integration/injector/src/circular-properties/circular-properties.module.ts index 6af6be61a9..84b58362a2 100644 --- a/integration/injector/src/circular-properties/circular-properties.module.ts +++ b/integration/injector/src/circular-properties/circular-properties.module.ts @@ -1,6 +1,6 @@ import { forwardRef, Module } from '@nestjs/common'; -import { CircularService } from './circular.service'; -import { InputPropertiesModule } from './input-properties.module'; +import { CircularService } from './circular.service.js'; +import { InputPropertiesModule } from './input-properties.module.js'; @Module({ imports: [forwardRef(() => InputPropertiesModule)], diff --git a/integration/injector/src/circular-properties/circular.service.ts b/integration/injector/src/circular-properties/circular.service.ts index 6baa26e786..028bbcc4c6 100644 --- a/integration/injector/src/circular-properties/circular.service.ts +++ b/integration/injector/src/circular-properties/circular.service.ts @@ -1,8 +1,12 @@ import { forwardRef, Inject, Injectable } from '@nestjs/common'; -import { InputService } from './input.service'; + +// Lazy reference to avoid ESM circular-import TDZ issues +// with emitDecoratorMetadata. +let InputServiceRef: any; +import('./input.service.js').then(m => (InputServiceRef = m.InputService)); @Injectable() export class CircularService { - @Inject(forwardRef(() => InputService)) - public readonly service: InputService; + @Inject(forwardRef(() => InputServiceRef)) + public readonly service: any; } diff --git a/integration/injector/src/circular-properties/input-properties.module.ts b/integration/injector/src/circular-properties/input-properties.module.ts index e2662ed0df..821d1935d4 100644 --- a/integration/injector/src/circular-properties/input-properties.module.ts +++ b/integration/injector/src/circular-properties/input-properties.module.ts @@ -1,6 +1,6 @@ import { forwardRef, Module } from '@nestjs/common'; -import { CircularPropertiesModule } from './circular-properties.module'; -import { InputService } from './input.service'; +import { CircularPropertiesModule } from './circular-properties.module.js'; +import { InputService } from './input.service.js'; @Module({ imports: [forwardRef(() => CircularPropertiesModule)], diff --git a/integration/injector/src/circular-properties/input.service.ts b/integration/injector/src/circular-properties/input.service.ts index 225b7e7ddc..fc4959dbac 100644 --- a/integration/injector/src/circular-properties/input.service.ts +++ b/integration/injector/src/circular-properties/input.service.ts @@ -1,8 +1,14 @@ import { forwardRef, Inject, Injectable } from '@nestjs/common'; -import { CircularService } from './circular.service'; + +// Lazy reference to avoid ESM circular-import TDZ issues +// with emitDecoratorMetadata. +let CircularServiceRef: any; +import('./circular.service.js').then( + m => (CircularServiceRef = m.CircularService), +); @Injectable() export class InputService { - @Inject(forwardRef(() => CircularService)) - public readonly service: CircularService; + @Inject(forwardRef(() => CircularServiceRef)) + public readonly service: any; } diff --git a/integration/injector/src/circular-structure-dynamic-module/circular.module.ts b/integration/injector/src/circular-structure-dynamic-module/circular.module.ts index 6172fb2c5b..0dc6de4c58 100644 --- a/integration/injector/src/circular-structure-dynamic-module/circular.module.ts +++ b/integration/injector/src/circular-structure-dynamic-module/circular.module.ts @@ -1,5 +1,5 @@ import { DynamicModule } from '@nestjs/common'; -import { InputService } from './input.service'; +import { InputService } from './input.service.js'; export class CircularModule { static forRoot(): DynamicModule { diff --git a/integration/injector/src/circular/circular.module.ts b/integration/injector/src/circular/circular.module.ts index b0f1cf4510..460887479a 100644 --- a/integration/injector/src/circular/circular.module.ts +++ b/integration/injector/src/circular/circular.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { CircularService } from './circular.service'; -import { InputService } from './input.service'; +import { CircularService } from './circular.service.js'; +import { InputService } from './input.service.js'; @Module({ providers: [CircularService, InputService], diff --git a/integration/injector/src/circular/circular.service.ts b/integration/injector/src/circular/circular.service.ts index 546d63e6ea..e430bf8dff 100644 --- a/integration/injector/src/circular/circular.service.ts +++ b/integration/injector/src/circular/circular.service.ts @@ -1,10 +1,14 @@ -import { Injectable, forwardRef, Inject } from '@nestjs/common'; -import { InputService } from './input.service'; +import { forwardRef, Inject, Injectable } from '@nestjs/common'; + +// Lazy reference to avoid ESM circular-import TDZ issues +// with emitDecoratorMetadata. +let InputServiceRef: any; +import('./input.service.js').then(m => (InputServiceRef = m.InputService)); @Injectable() export class CircularService { constructor( - @Inject(forwardRef(() => InputService)) - public readonly service: InputService, + @Inject(forwardRef(() => InputServiceRef)) + public readonly service: any, ) {} } diff --git a/integration/injector/src/circular/input.service.ts b/integration/injector/src/circular/input.service.ts index 342e8bf0d0..0fab064a58 100644 --- a/integration/injector/src/circular/input.service.ts +++ b/integration/injector/src/circular/input.service.ts @@ -1,10 +1,16 @@ -import { Injectable, Inject, forwardRef } from '@nestjs/common'; -import { CircularService } from './circular.service'; +import { Inject, Injectable, forwardRef } from '@nestjs/common'; + +// Lazy reference to avoid ESM circular-import TDZ issues +// with emitDecoratorMetadata. +let CircularServiceRef: any; +import('./circular.service.js').then( + m => (CircularServiceRef = m.CircularService), +); @Injectable() export class InputService { constructor( - @Inject(forwardRef(() => CircularService)) - public readonly service: CircularService, + @Inject(forwardRef(() => CircularServiceRef)) + public readonly service: any, ) {} } diff --git a/integration/injector/src/defaults/defaults.module.ts b/integration/injector/src/defaults/defaults.module.ts index f8a7ddb9f5..504561615a 100644 --- a/integration/injector/src/defaults/defaults.module.ts +++ b/integration/injector/src/defaults/defaults.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { DefaultsService } from './defaults.service'; +import { DefaultsService } from './defaults.service.js'; @Module({ providers: [DefaultsService], diff --git a/integration/injector/src/defaults/defaults.service.ts b/integration/injector/src/defaults/defaults.service.ts index edc4790f1b..6a9a51fd58 100644 --- a/integration/injector/src/defaults/defaults.service.ts +++ b/integration/injector/src/defaults/defaults.service.ts @@ -1,5 +1,5 @@ import { Inject, Injectable, Optional } from '@nestjs/common'; -import { CoreService } from './core.service'; +import { CoreService } from './core.service.js'; @Injectable() export class DefaultsService { diff --git a/integration/injector/src/exports/exports.module.ts b/integration/injector/src/exports/exports.module.ts index 00190030b4..7757fee7ec 100644 --- a/integration/injector/src/exports/exports.module.ts +++ b/integration/injector/src/exports/exports.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { ExportsService } from './exports.service'; +import { ExportsService } from './exports.service.js'; @Module({ exports: [ExportsService], diff --git a/integration/injector/src/inject/inject.module.ts b/integration/injector/src/inject/inject.module.ts index aee4f6c11c..07578c82b1 100644 --- a/integration/injector/src/inject/inject.module.ts +++ b/integration/injector/src/inject/inject.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { InjectService } from './inject.service'; +import { InjectService } from './inject.service.js'; @Module({ providers: [InjectService], diff --git a/integration/injector/src/inject/inject.service.ts b/integration/injector/src/inject/inject.service.ts index 36dc8b4ed4..b2d37d5a39 100644 --- a/integration/injector/src/inject/inject.service.ts +++ b/integration/injector/src/inject/inject.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { CoreService } from './core.service'; +import { CoreService } from './core.service.js'; @Injectable() export class InjectService { diff --git a/integration/injector/src/multiple-providers/multiple-providers.module.ts b/integration/injector/src/multiple-providers/multiple-providers.module.ts index 1bb2345eee..73a9f113d3 100644 --- a/integration/injector/src/multiple-providers/multiple-providers.module.ts +++ b/integration/injector/src/multiple-providers/multiple-providers.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { AModule } from './a.module'; -import { BModule } from './b.module'; -import { CModule } from './c.module'; +import { AModule } from './a.module.js'; +import { BModule } from './b.module.js'; +import { CModule } from './c.module.js'; @Module({ imports: [AModule, BModule, CModule], diff --git a/integration/injector/src/properties/properties.module.ts b/integration/injector/src/properties/properties.module.ts index b2ad36ff3b..a9ab6d2410 100644 --- a/integration/injector/src/properties/properties.module.ts +++ b/integration/injector/src/properties/properties.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DependencyService } from './dependency.service'; -import { PropertiesService, SYMBOL_TOKEN } from './properties.service'; +import { DependencyService } from './dependency.service.js'; +import { PropertiesService, SYMBOL_TOKEN } from './properties.service.js'; @Module({ providers: [ diff --git a/integration/injector/src/properties/properties.service.ts b/integration/injector/src/properties/properties.service.ts index cd45075244..4211b82864 100644 --- a/integration/injector/src/properties/properties.service.ts +++ b/integration/injector/src/properties/properties.service.ts @@ -1,5 +1,5 @@ import { Inject, Injectable } from '@nestjs/common'; -import { DependencyService } from './dependency.service'; +import { DependencyService } from './dependency.service.js'; export const SYMBOL_TOKEN = Symbol('token'); diff --git a/integration/injector/src/scoped/scoped.module.ts b/integration/injector/src/scoped/scoped.module.ts index 0b2e0bb927..9e2dc7e663 100644 --- a/integration/injector/src/scoped/scoped.module.ts +++ b/integration/injector/src/scoped/scoped.module.ts @@ -1,9 +1,9 @@ import { Module, Scope } from '@nestjs/common'; -import { ScopedController } from './scoped.controller'; -import { ScopedService } from './scoped.service'; -import { TransientService } from './transient.service'; -import { Transient2Service } from './transient2.service'; -import { Transient3Service } from './transient3.service'; +import { ScopedController } from './scoped.controller.js'; +import { ScopedService } from './scoped.service.js'; +import { TransientService } from './transient.service.js'; +import { Transient2Service } from './transient2.service.js'; +import { Transient3Service } from './transient3.service.js'; export const STATIC_FACTORY = 'STATIC_FACTORY'; export const REQUEST_SCOPED_FACTORY = 'REQUEST_SCOPED_FACTORY'; diff --git a/integration/injector/src/scoped/transient.service.ts b/integration/injector/src/scoped/transient.service.ts index db496f8c42..e61ab3a03c 100644 --- a/integration/injector/src/scoped/transient.service.ts +++ b/integration/injector/src/scoped/transient.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { Transient2Service } from './transient2.service'; +import { Transient2Service } from './transient2.service.js'; @Injectable({ scope: Scope.TRANSIENT }) export class TransientService { diff --git a/integration/injector/src/scoped/transient3.service.ts b/integration/injector/src/scoped/transient3.service.ts index fa11ba9c2a..2b51ae604f 100644 --- a/integration/injector/src/scoped/transient3.service.ts +++ b/integration/injector/src/scoped/transient3.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { TransientService } from './transient.service'; +import { TransientService } from './transient.service.js'; @Injectable({ scope: Scope.TRANSIENT }) export class Transient3Service { diff --git a/integration/injector/tsconfig.json b/integration/injector/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/injector/tsconfig.json +++ b/integration/injector/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/inspector/e2e/graph-inspector.spec.ts b/integration/inspector/e2e/graph-inspector.spec.ts index 9c02de6902..213ecf59a0 100644 --- a/integration/inspector/e2e/graph-inspector.spec.ts +++ b/integration/inspector/e2e/graph-inspector.spec.ts @@ -1,15 +1,15 @@ import { ValidationPipe } from '@nestjs/common'; -import { Injector } from '@nestjs/core/injector/injector'; -import { SerializedGraph } from '@nestjs/core/inspector/serialized-graph'; +import { Injector } from '@nestjs/core/injector/injector.js'; +import { SerializedGraph } from '@nestjs/core/inspector/serialized-graph.js'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; import { readFileSync } from 'fs'; import { join } from 'path'; import * as sinon from 'sinon'; -import { AppModule } from '../src/app.module'; -import { HttpExceptionFilter } from '../src/common/filters/http-exception.filter'; -import { TimeoutInterceptor } from '../src/common/interceptors/timeout.interceptor'; +import { AppModule } from '../src/app.module.js'; +import { HttpExceptionFilter } from '../src/common/filters/http-exception.filter.js'; +import { TimeoutInterceptor } from '../src/common/interceptors/timeout.interceptor.js'; describe('Graph inspector', () => { let testingModule: TestingModule; @@ -27,12 +27,12 @@ describe('Graph inspector', () => { // Update snapshot: // writeFileSync( - // join(__dirname, 'fixtures', 'pre-init-graph.json'), + // join(import.meta.dirname, 'fixtures', 'pre-init-graph.json'), // graph.toString(), // ); const snapshot = readFileSync( - join(__dirname, 'fixtures', 'pre-init-graph.json'), + join(import.meta.dirname, 'fixtures', 'pre-init-graph.json'), 'utf-8', ); @@ -55,12 +55,12 @@ describe('Graph inspector', () => { // Update snapshot: // writeFileSync( - // join(__dirname, 'fixtures', 'post-init-graph.json'), + // join(import.meta.dirname, 'fixtures', 'post-init-graph.json'), // graph.toString(), // ); const snapshot = readFileSync( - join(__dirname, 'fixtures', 'post-init-graph.json'), + join(import.meta.dirname, 'fixtures', 'post-init-graph.json'), 'utf-8', ); diff --git a/integration/inspector/src/app.module.ts b/integration/inspector/src/app.module.ts index 1d395b9bf4..8d07f9f713 100644 --- a/integration/inspector/src/app.module.ts +++ b/integration/inspector/src/app.module.ts @@ -1,19 +1,19 @@ import { Module, Scope } from '@nestjs/common'; -import { AppV1Controller } from './app-v1.controller'; -import { AppV2Controller } from './app-v2.controller'; -import { CatsModule } from './cats/cats.module'; -import { ChatModule } from './chat/chat.module'; -import { HelloModule as CircularHelloModule } from './circular-hello/hello.module'; -import { HelloService } from './circular-hello/hello.service'; -import { InputModule } from './circular-modules/input.module'; -import { CoreModule } from './core/core.module'; -import { DatabaseModule } from './database/database.module'; -import { DogsModule } from './dogs/dogs.module'; -import { DurableModule } from './durable/durable.module'; -import { ExternalSvcModule } from './external-svc/external-svc.module'; -import { PropertiesModule } from './properties/properties.module'; -import { RequestChainModule } from './request-chain/request-chain.module'; -import { UsersModule } from './users/users.module'; +import { AppV1Controller } from './app-v1.controller.js'; +import { AppV2Controller } from './app-v2.controller.js'; +import { CatsModule } from './cats/cats.module.js'; +import { ChatModule } from './chat/chat.module.js'; +import { HelloModule as CircularHelloModule } from './circular-hello/hello.module.js'; +import { HelloService } from './circular-hello/hello.service.js'; +import { InputModule } from './circular-modules/input.module.js'; +import { CoreModule } from './core/core.module.js'; +import { DatabaseModule } from './database/database.module.js'; +import { DogsModule } from './dogs/dogs.module.js'; +import { DurableModule } from './durable/durable.module.js'; +import { ExternalSvcModule } from './external-svc/external-svc.module.js'; +import { PropertiesModule } from './properties/properties.module.js'; +import { RequestChainModule } from './request-chain/request-chain.module.js'; +import { UsersModule } from './users/users.module.js'; class Meta { static COUNTER = 0; diff --git a/integration/inspector/src/cats/cats.controller.ts b/integration/inspector/src/cats/cats.controller.ts index b9f929a21e..2e1b27c097 100644 --- a/integration/inspector/src/cats/cats.controller.ts +++ b/integration/inspector/src/cats/cats.controller.ts @@ -1,9 +1,9 @@ import { Body, Controller, Get, Param, Post, UseGuards } from '@nestjs/common'; -import { RolesGuard } from '../common/guards/roles.guard'; -import { ParseIntPipe } from '../common/pipes/parse-int.pipe'; -import { CatsService } from './cats.service'; -import { CreateCatDto } from './dto/create-cat.dto'; -import { Cat } from './interfaces/cat.interface'; +import { RolesGuard } from '../common/guards/roles.guard.js'; +import { ParseIntPipe } from '../common/pipes/parse-int.pipe.js'; +import { CatsService } from './cats.service.js'; +import { CreateCatDto } from './dto/create-cat.dto.js'; +import { Cat } from './interfaces/cat.interface.js'; @UseGuards(RolesGuard) @Controller('cats') diff --git a/integration/inspector/src/cats/cats.module.ts b/integration/inspector/src/cats/cats.module.ts index f3291c7d11..14b21cd9f1 100644 --- a/integration/inspector/src/cats/cats.module.ts +++ b/integration/inspector/src/cats/cats.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { CatsController } from './cats.controller'; -import { CatsService } from './cats.service'; +import { CatsController } from './cats.controller.js'; +import { CatsService } from './cats.service.js'; @Module({ controllers: [CatsController], diff --git a/integration/inspector/src/cats/cats.service.ts b/integration/inspector/src/cats/cats.service.ts index 2619cd7176..dc5f51e15e 100644 --- a/integration/inspector/src/cats/cats.service.ts +++ b/integration/inspector/src/cats/cats.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { Cat } from './interfaces/cat.interface'; +import { Cat } from './interfaces/cat.interface.js'; @Injectable() export class CatsService { diff --git a/integration/inspector/src/chat/chat.gateway.ts b/integration/inspector/src/chat/chat.gateway.ts index 75e6c7c28d..cdbd531557 100644 --- a/integration/inspector/src/chat/chat.gateway.ts +++ b/integration/inspector/src/chat/chat.gateway.ts @@ -3,9 +3,9 @@ import { SubscribeMessage, MessageBody, } from '@nestjs/websockets'; -import { ChatService } from './chat.service'; -import { CreateChatDto } from './dto/create-chat.dto'; -import { UpdateChatDto } from './dto/update-chat.dto'; +import { ChatService } from './chat.service.js'; +import { CreateChatDto } from './dto/create-chat.dto.js'; +import { UpdateChatDto } from './dto/update-chat.dto.js'; @WebSocketGateway() export class ChatGateway { diff --git a/integration/inspector/src/chat/chat.module.ts b/integration/inspector/src/chat/chat.module.ts index d3ad301f58..4a267e1923 100644 --- a/integration/inspector/src/chat/chat.module.ts +++ b/integration/inspector/src/chat/chat.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { ChatService } from './chat.service'; -import { ChatGateway } from './chat.gateway'; +import { ChatService } from './chat.service.js'; +import { ChatGateway } from './chat.gateway.js'; @Module({ providers: [ChatGateway, ChatService], diff --git a/integration/inspector/src/chat/chat.service.ts b/integration/inspector/src/chat/chat.service.ts index 1fa0676de0..711f6f7ce3 100644 --- a/integration/inspector/src/chat/chat.service.ts +++ b/integration/inspector/src/chat/chat.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { CreateChatDto } from './dto/create-chat.dto'; -import { UpdateChatDto } from './dto/update-chat.dto'; +import { CreateChatDto } from './dto/create-chat.dto.js'; +import { UpdateChatDto } from './dto/update-chat.dto.js'; @Injectable() export class ChatService { diff --git a/integration/inspector/src/chat/dto/update-chat.dto.ts b/integration/inspector/src/chat/dto/update-chat.dto.ts index 0a372f6661..6fd98b4c59 100644 --- a/integration/inspector/src/chat/dto/update-chat.dto.ts +++ b/integration/inspector/src/chat/dto/update-chat.dto.ts @@ -1,5 +1,5 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateChatDto } from './create-chat.dto'; +import { CreateChatDto } from './create-chat.dto.js'; export class UpdateChatDto extends PartialType(CreateChatDto) { id: number; diff --git a/integration/inspector/src/circular-hello/hello.controller.ts b/integration/inspector/src/circular-hello/hello.controller.ts index 5b4af7bf21..94d20f26cf 100644 --- a/integration/inspector/src/circular-hello/hello.controller.ts +++ b/integration/inspector/src/circular-hello/hello.controller.ts @@ -5,11 +5,11 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { HelloService } from './hello.service'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; -import { UsersService } from './users/users.service'; +import { Guard } from './guards/request-scoped.guard.js'; +import { HelloService } from './hello.service.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; +import { UsersService } from './users/users.service.js'; @Controller('hello') export class HelloController { diff --git a/integration/inspector/src/circular-hello/hello.module.ts b/integration/inspector/src/circular-hello/hello.module.ts index 1a0d0bbfd7..c0dc1995c6 100644 --- a/integration/inspector/src/circular-hello/hello.module.ts +++ b/integration/inspector/src/circular-hello/hello.module.ts @@ -1,7 +1,7 @@ import { DynamicModule, Inject, Module, Provider } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController], diff --git a/integration/inspector/src/circular-hello/users/user-by-id.pipe.ts b/integration/inspector/src/circular-hello/users/user-by-id.pipe.ts index 2b81cb6fbb..b63f924559 100644 --- a/integration/inspector/src/circular-hello/users/user-by-id.pipe.ts +++ b/integration/inspector/src/circular-hello/users/user-by-id.pipe.ts @@ -1,5 +1,5 @@ import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common'; -import { UsersService } from './users.service'; +import { UsersService } from './users.service.js'; @Injectable() export class UserByIdPipe implements PipeTransform { diff --git a/integration/inspector/src/circular-modules/circular.module.ts b/integration/inspector/src/circular-modules/circular.module.ts index bb6afb42a3..6eac28bfd3 100644 --- a/integration/inspector/src/circular-modules/circular.module.ts +++ b/integration/inspector/src/circular-modules/circular.module.ts @@ -1,6 +1,6 @@ import { Module, forwardRef } from '@nestjs/common'; -import { CircularService } from './circular.service'; -import { InputModule } from './input.module'; +import { CircularService } from './circular.service.js'; +import { InputModule } from './input.module.js'; @Module({ imports: [forwardRef(() => InputModule)], diff --git a/integration/inspector/src/circular-modules/circular.service.ts b/integration/inspector/src/circular-modules/circular.service.ts index 546d63e6ea..4aee1a2bf4 100644 --- a/integration/inspector/src/circular-modules/circular.service.ts +++ b/integration/inspector/src/circular-modules/circular.service.ts @@ -1,5 +1,5 @@ import { Injectable, forwardRef, Inject } from '@nestjs/common'; -import { InputService } from './input.service'; +import { InputService } from './input.service.js'; @Injectable() export class CircularService { diff --git a/integration/inspector/src/circular-modules/input.module.ts b/integration/inspector/src/circular-modules/input.module.ts index c76dcaa85e..3766b29876 100644 --- a/integration/inspector/src/circular-modules/input.module.ts +++ b/integration/inspector/src/circular-modules/input.module.ts @@ -1,6 +1,6 @@ import { Module, forwardRef } from '@nestjs/common'; -import { CircularModule } from './circular.module'; -import { InputService } from './input.service'; +import { CircularModule } from './circular.module.js'; +import { InputService } from './input.service.js'; @Module({ imports: [forwardRef(() => CircularModule)], diff --git a/integration/inspector/src/circular-modules/input.service.ts b/integration/inspector/src/circular-modules/input.service.ts index 342e8bf0d0..56dc82c99d 100644 --- a/integration/inspector/src/circular-modules/input.service.ts +++ b/integration/inspector/src/circular-modules/input.service.ts @@ -1,5 +1,5 @@ import { Injectable, Inject, forwardRef } from '@nestjs/common'; -import { CircularService } from './circular.service'; +import { CircularService } from './circular.service.js'; @Injectable() export class InputService { diff --git a/integration/inspector/src/core/core.module.ts b/integration/inspector/src/core/core.module.ts index 5bc1990b1c..c489ebacf4 100644 --- a/integration/inspector/src/core/core.module.ts +++ b/integration/inspector/src/core/core.module.ts @@ -1,9 +1,9 @@ import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { APP_INTERCEPTOR } from '@nestjs/core'; -import { CatsController } from '../cats/cats.controller'; -import { LoggerMiddleware } from '../common/middleware/logger.middleware'; -import { LoggingInterceptor } from './interceptors/logging.interceptor'; -import { TransformInterceptor } from './interceptors/transform.interceptor'; +import { CatsController } from '../cats/cats.controller.js'; +import { LoggerMiddleware } from '../common/middleware/logger.middleware.js'; +import { LoggingInterceptor } from './interceptors/logging.interceptor.js'; +import { TransformInterceptor } from './interceptors/transform.interceptor.js'; @Module({ providers: [ diff --git a/integration/inspector/src/database/database.controller.ts b/integration/inspector/src/database/database.controller.ts index 629762ae0b..c474a78396 100644 --- a/integration/inspector/src/database/database.controller.ts +++ b/integration/inspector/src/database/database.controller.ts @@ -7,9 +7,9 @@ import { Param, Delete, } from '@nestjs/common'; -import { DatabaseService } from './database.service'; -import { CreateDatabaseDto } from './dto/create-database.dto'; -import { UpdateDatabaseDto } from './dto/update-database.dto'; +import { DatabaseService } from './database.service.js'; +import { CreateDatabaseDto } from './dto/create-database.dto.js'; +import { UpdateDatabaseDto } from './dto/update-database.dto.js'; @Controller('database') export class DatabaseController { diff --git a/integration/inspector/src/database/database.module.ts b/integration/inspector/src/database/database.module.ts index 2f37f674b7..6d45e0900d 100644 --- a/integration/inspector/src/database/database.module.ts +++ b/integration/inspector/src/database/database.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DatabaseService } from './database.service'; -import { DatabaseController } from './database.controller'; +import { DatabaseService } from './database.service.js'; +import { DatabaseController } from './database.controller.js'; @Module({ controllers: [DatabaseController], diff --git a/integration/inspector/src/database/database.service.ts b/integration/inspector/src/database/database.service.ts index 8456678951..e55638f181 100644 --- a/integration/inspector/src/database/database.service.ts +++ b/integration/inspector/src/database/database.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { CreateDatabaseDto } from './dto/create-database.dto'; -import { UpdateDatabaseDto } from './dto/update-database.dto'; +import { CreateDatabaseDto } from './dto/create-database.dto.js'; +import { UpdateDatabaseDto } from './dto/update-database.dto.js'; @Injectable() export class DatabaseService { diff --git a/integration/inspector/src/database/dto/update-database.dto.ts b/integration/inspector/src/database/dto/update-database.dto.ts index 5cc6666651..01350102d5 100644 --- a/integration/inspector/src/database/dto/update-database.dto.ts +++ b/integration/inspector/src/database/dto/update-database.dto.ts @@ -1,4 +1,4 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateDatabaseDto } from './create-database.dto'; +import { CreateDatabaseDto } from './create-database.dto.js'; export class UpdateDatabaseDto extends PartialType(CreateDatabaseDto) {} diff --git a/integration/inspector/src/defaults/defaults.module.ts b/integration/inspector/src/defaults/defaults.module.ts index f8a7ddb9f5..504561615a 100644 --- a/integration/inspector/src/defaults/defaults.module.ts +++ b/integration/inspector/src/defaults/defaults.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { DefaultsService } from './defaults.service'; +import { DefaultsService } from './defaults.service.js'; @Module({ providers: [DefaultsService], diff --git a/integration/inspector/src/defaults/defaults.service.ts b/integration/inspector/src/defaults/defaults.service.ts index edc4790f1b..6a9a51fd58 100644 --- a/integration/inspector/src/defaults/defaults.service.ts +++ b/integration/inspector/src/defaults/defaults.service.ts @@ -1,5 +1,5 @@ import { Inject, Injectable, Optional } from '@nestjs/common'; -import { CoreService } from './core.service'; +import { CoreService } from './core.service.js'; @Injectable() export class DefaultsService { diff --git a/integration/inspector/src/dogs/dogs.controller.ts b/integration/inspector/src/dogs/dogs.controller.ts index 8d5ab7d8ab..79f2244469 100644 --- a/integration/inspector/src/dogs/dogs.controller.ts +++ b/integration/inspector/src/dogs/dogs.controller.ts @@ -7,9 +7,9 @@ import { Param, Delete, } from '@nestjs/common'; -import { DogsService } from './dogs.service'; -import { CreateDogDto } from './dto/create-dog.dto'; -import { UpdateDogDto } from './dto/update-dog.dto'; +import { DogsService } from './dogs.service.js'; +import { CreateDogDto } from './dto/create-dog.dto.js'; +import { UpdateDogDto } from './dto/update-dog.dto.js'; @Controller('dogs') export class DogsController { diff --git a/integration/inspector/src/dogs/dogs.module.ts b/integration/inspector/src/dogs/dogs.module.ts index 3385a39e30..c1da22cc2b 100644 --- a/integration/inspector/src/dogs/dogs.module.ts +++ b/integration/inspector/src/dogs/dogs.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DogsService } from './dogs.service'; -import { DogsController } from './dogs.controller'; +import { DogsService } from './dogs.service.js'; +import { DogsController } from './dogs.controller.js'; @Module({ controllers: [DogsController], diff --git a/integration/inspector/src/dogs/dogs.service.ts b/integration/inspector/src/dogs/dogs.service.ts index f1f2d93474..3993bc49f5 100644 --- a/integration/inspector/src/dogs/dogs.service.ts +++ b/integration/inspector/src/dogs/dogs.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { CreateDogDto } from './dto/create-dog.dto'; -import { UpdateDogDto } from './dto/update-dog.dto'; +import { CreateDogDto } from './dto/create-dog.dto.js'; +import { UpdateDogDto } from './dto/update-dog.dto.js'; @Injectable() export class DogsService { diff --git a/integration/inspector/src/dogs/dto/update-dog.dto.ts b/integration/inspector/src/dogs/dto/update-dog.dto.ts index 15d4939c8c..fbd24ed0ab 100644 --- a/integration/inspector/src/dogs/dto/update-dog.dto.ts +++ b/integration/inspector/src/dogs/dto/update-dog.dto.ts @@ -1,4 +1,4 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateDogDto } from './create-dog.dto'; +import { CreateDogDto } from './create-dog.dto.js'; export class UpdateDogDto extends PartialType(CreateDogDto) {} diff --git a/integration/inspector/src/durable/durable.controller.ts b/integration/inspector/src/durable/durable.controller.ts index be51ad2dfe..7a59f6905e 100644 --- a/integration/inspector/src/durable/durable.controller.ts +++ b/integration/inspector/src/durable/durable.controller.ts @@ -1,5 +1,5 @@ import { Controller, Get } from '@nestjs/common'; -import { DurableService } from './durable.service'; +import { DurableService } from './durable.service.js'; @Controller('durable') export class DurableController { diff --git a/integration/inspector/src/durable/durable.module.ts b/integration/inspector/src/durable/durable.module.ts index ed312900f2..a7939600c5 100644 --- a/integration/inspector/src/durable/durable.module.ts +++ b/integration/inspector/src/durable/durable.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DurableController } from './durable.controller'; -import { DurableService } from './durable.service'; +import { DurableController } from './durable.controller.js'; +import { DurableService } from './durable.service.js'; @Module({ controllers: [DurableController], diff --git a/integration/inspector/src/external-svc/dto/update-external-svc.dto.ts b/integration/inspector/src/external-svc/dto/update-external-svc.dto.ts index 95be362d9e..de5938cc5a 100644 --- a/integration/inspector/src/external-svc/dto/update-external-svc.dto.ts +++ b/integration/inspector/src/external-svc/dto/update-external-svc.dto.ts @@ -1,5 +1,5 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateExternalSvcDto } from './create-external-svc.dto'; +import { CreateExternalSvcDto } from './create-external-svc.dto.js'; export class UpdateExternalSvcDto extends PartialType(CreateExternalSvcDto) { id: number; diff --git a/integration/inspector/src/external-svc/external-svc.controller.ts b/integration/inspector/src/external-svc/external-svc.controller.ts index e1e9e22474..58fda87a69 100644 --- a/integration/inspector/src/external-svc/external-svc.controller.ts +++ b/integration/inspector/src/external-svc/external-svc.controller.ts @@ -1,8 +1,8 @@ import { Controller } from '@nestjs/common'; import { MessagePattern, Payload } from '@nestjs/microservices'; -import { CreateExternalSvcDto } from './dto/create-external-svc.dto'; -import { UpdateExternalSvcDto } from './dto/update-external-svc.dto'; -import { ExternalSvcService } from './external-svc.service'; +import { CreateExternalSvcDto } from './dto/create-external-svc.dto.js'; +import { UpdateExternalSvcDto } from './dto/update-external-svc.dto.js'; +import { ExternalSvcService } from './external-svc.service.js'; @Controller() export class ExternalSvcController { diff --git a/integration/inspector/src/external-svc/external-svc.module.ts b/integration/inspector/src/external-svc/external-svc.module.ts index f4b57fc02c..4ea43e85c7 100644 --- a/integration/inspector/src/external-svc/external-svc.module.ts +++ b/integration/inspector/src/external-svc/external-svc.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { ExternalSvcService } from './external-svc.service'; -import { ExternalSvcController } from './external-svc.controller'; +import { ExternalSvcService } from './external-svc.service.js'; +import { ExternalSvcController } from './external-svc.controller.js'; @Module({ controllers: [ExternalSvcController], diff --git a/integration/inspector/src/external-svc/external-svc.service.ts b/integration/inspector/src/external-svc/external-svc.service.ts index 9620630c2f..b8b48567d8 100644 --- a/integration/inspector/src/external-svc/external-svc.service.ts +++ b/integration/inspector/src/external-svc/external-svc.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { CreateExternalSvcDto } from './dto/create-external-svc.dto'; -import { UpdateExternalSvcDto } from './dto/update-external-svc.dto'; +import { CreateExternalSvcDto } from './dto/create-external-svc.dto.js'; +import { UpdateExternalSvcDto } from './dto/update-external-svc.dto.js'; @Injectable() export class ExternalSvcService { diff --git a/integration/inspector/src/properties/properties.module.ts b/integration/inspector/src/properties/properties.module.ts index b2ad36ff3b..a9ab6d2410 100644 --- a/integration/inspector/src/properties/properties.module.ts +++ b/integration/inspector/src/properties/properties.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DependencyService } from './dependency.service'; -import { PropertiesService, SYMBOL_TOKEN } from './properties.service'; +import { DependencyService } from './dependency.service.js'; +import { PropertiesService, SYMBOL_TOKEN } from './properties.service.js'; @Module({ providers: [ diff --git a/integration/inspector/src/properties/properties.service.ts b/integration/inspector/src/properties/properties.service.ts index cd45075244..4211b82864 100644 --- a/integration/inspector/src/properties/properties.service.ts +++ b/integration/inspector/src/properties/properties.service.ts @@ -1,5 +1,5 @@ import { Inject, Injectable } from '@nestjs/common'; -import { DependencyService } from './dependency.service'; +import { DependencyService } from './dependency.service.js'; export const SYMBOL_TOKEN = Symbol('token'); diff --git a/integration/inspector/src/request-chain/helper/helper.module.ts b/integration/inspector/src/request-chain/helper/helper.module.ts index 1c154ea44c..fa31021e32 100644 --- a/integration/inspector/src/request-chain/helper/helper.module.ts +++ b/integration/inspector/src/request-chain/helper/helper.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { HelperService } from './helper.service'; +import { HelperService } from './helper.service.js'; @Module({ providers: [HelperService], diff --git a/integration/inspector/src/request-chain/interceptors/logging.interceptor.ts b/integration/inspector/src/request-chain/interceptors/logging.interceptor.ts index 008a699937..17c83c7e82 100644 --- a/integration/inspector/src/request-chain/interceptors/logging.interceptor.ts +++ b/integration/inspector/src/request-chain/interceptors/logging.interceptor.ts @@ -5,7 +5,7 @@ import { NestInterceptor, } from '@nestjs/common'; import { Observable } from 'rxjs'; -import { HelperService } from '../helper/helper.service'; +import { HelperService } from '../helper/helper.service.js'; @Injectable() export class LoggingInterceptor implements NestInterceptor { diff --git a/integration/inspector/src/request-chain/request-chain.controller.ts b/integration/inspector/src/request-chain/request-chain.controller.ts index 03813352dd..f6b22f1cae 100644 --- a/integration/inspector/src/request-chain/request-chain.controller.ts +++ b/integration/inspector/src/request-chain/request-chain.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, UseInterceptors } from '@nestjs/common'; -import { LoggingInterceptor } from './interceptors/logging.interceptor'; -import { RequestChainService } from './request-chain.service'; +import { LoggingInterceptor } from './interceptors/logging.interceptor.js'; +import { RequestChainService } from './request-chain.service.js'; @Controller('hello') export class RequestChainController { diff --git a/integration/inspector/src/request-chain/request-chain.module.ts b/integration/inspector/src/request-chain/request-chain.module.ts index eba8f451d9..e5478eef78 100644 --- a/integration/inspector/src/request-chain/request-chain.module.ts +++ b/integration/inspector/src/request-chain/request-chain.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { HelperModule } from './helper/helper.module'; -import { RequestChainController } from './request-chain.controller'; -import { RequestChainService } from './request-chain.service'; +import { HelperModule } from './helper/helper.module.js'; +import { RequestChainController } from './request-chain.controller.js'; +import { RequestChainService } from './request-chain.service.js'; @Module({ imports: [HelperModule], diff --git a/integration/inspector/src/request-chain/request-chain.service.ts b/integration/inspector/src/request-chain/request-chain.service.ts index c8c00068d3..bf526aa498 100644 --- a/integration/inspector/src/request-chain/request-chain.service.ts +++ b/integration/inspector/src/request-chain/request-chain.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { HelperService } from './helper/helper.service'; +import { HelperService } from './helper/helper.service.js'; @Injectable() export class RequestChainService { diff --git a/integration/inspector/src/users/dto/update-user.dto.ts b/integration/inspector/src/users/dto/update-user.dto.ts index dfd37fb1ed..912cdc528b 100644 --- a/integration/inspector/src/users/dto/update-user.dto.ts +++ b/integration/inspector/src/users/dto/update-user.dto.ts @@ -1,4 +1,4 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateUserDto } from './create-user.dto'; +import { CreateUserDto } from './create-user.dto.js'; export class UpdateUserDto extends PartialType(CreateUserDto) {} diff --git a/integration/inspector/src/users/users.controller.ts b/integration/inspector/src/users/users.controller.ts index d5db3a65e5..435e5438ee 100644 --- a/integration/inspector/src/users/users.controller.ts +++ b/integration/inspector/src/users/users.controller.ts @@ -7,9 +7,9 @@ import { Param, Delete, } from '@nestjs/common'; -import { UsersService } from './users.service'; -import { CreateUserDto } from './dto/create-user.dto'; -import { UpdateUserDto } from './dto/update-user.dto'; +import { UsersService } from './users.service.js'; +import { CreateUserDto } from './dto/create-user.dto.js'; +import { UpdateUserDto } from './dto/update-user.dto.js'; @Controller('users') export class UsersController { diff --git a/integration/inspector/src/users/users.module.ts b/integration/inspector/src/users/users.module.ts index ecca17ad64..f7b0c0f955 100644 --- a/integration/inspector/src/users/users.module.ts +++ b/integration/inspector/src/users/users.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { UsersService } from './users.service'; -import { UsersController } from './users.controller'; +import { UsersService } from './users.service.js'; +import { UsersController } from './users.controller.js'; @Module({ controllers: [UsersController], diff --git a/integration/inspector/src/users/users.service.ts b/integration/inspector/src/users/users.service.ts index 0a55903da1..a27a61a12e 100644 --- a/integration/inspector/src/users/users.service.ts +++ b/integration/inspector/src/users/users.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { CreateUserDto } from './dto/create-user.dto'; -import { UpdateUserDto } from './dto/update-user.dto'; +import { CreateUserDto } from './dto/create-user.dto.js'; +import { UpdateUserDto } from './dto/update-user.dto.js'; @Injectable() export class UsersService { diff --git a/integration/inspector/tsconfig.json b/integration/inspector/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/inspector/tsconfig.json +++ b/integration/inspector/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/lazy-modules/e2e/lazy-import-global-modules.spec.ts b/integration/lazy-modules/e2e/lazy-import-global-modules.spec.ts index 7bb41fb4e5..2bb434b6e7 100644 --- a/integration/lazy-modules/e2e/lazy-import-global-modules.spec.ts +++ b/integration/lazy-modules/e2e/lazy-import-global-modules.spec.ts @@ -1,9 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as chai from 'chai'; -import { expect } from 'chai'; -import { AppModule } from '../src/app.module'; -import chaiAsPromised = require('chai-as-promised'); +import chai, { expect } from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import { AppModule } from '../src/app.module.js'; chai.use(chaiAsPromised); describe('Lazy imports', () => { diff --git a/integration/lazy-modules/e2e/lazy-import-request-providers.spec.ts b/integration/lazy-modules/e2e/lazy-import-request-providers.spec.ts index a437cf7413..0a33601b3b 100644 --- a/integration/lazy-modules/e2e/lazy-import-request-providers.spec.ts +++ b/integration/lazy-modules/e2e/lazy-import-request-providers.spec.ts @@ -1,8 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { LazyController } from '../src/lazy.controller'; +import request from 'supertest'; +import { LazyController } from '../src/lazy.controller.js'; describe('Lazy Requested Scoped providers', () => { let app: INestApplication; diff --git a/integration/lazy-modules/e2e/lazy-import-transient-providers.spec.ts b/integration/lazy-modules/e2e/lazy-import-transient-providers.spec.ts index ce34a3347a..270bd85290 100644 --- a/integration/lazy-modules/e2e/lazy-import-transient-providers.spec.ts +++ b/integration/lazy-modules/e2e/lazy-import-transient-providers.spec.ts @@ -1,10 +1,10 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import { TransientLazyModule } from '../src/transient.module'; -import { LazyController } from '../src/lazy.controller'; -import * as chai from 'chai'; +import { TransientLazyModule } from '../src/transient.module.js'; +import { LazyController } from '../src/lazy.controller.js'; +import chai from 'chai'; import { expect } from 'chai'; -import * as request from 'supertest'; +import request from 'supertest'; describe('Lazy Transient providers', () => { let app: INestApplication; diff --git a/integration/lazy-modules/src/app.module.ts b/integration/lazy-modules/src/app.module.ts index 65d38dadcc..53def0bb2e 100644 --- a/integration/lazy-modules/src/app.module.ts +++ b/integration/lazy-modules/src/app.module.ts @@ -1,8 +1,8 @@ import { Module } from '@nestjs/common'; import { LazyModuleLoader } from '@nestjs/core'; -import { EagerModule } from './eager.module'; -import { GlobalModule } from './global.module'; -import { LazyModule } from './lazy.module'; +import { EagerModule } from './eager.module.js'; +import { GlobalModule } from './global.module.js'; +import { LazyModule } from './lazy.module.js'; @Module({ imports: [GlobalModule, EagerModule], diff --git a/integration/lazy-modules/src/eager.module.ts b/integration/lazy-modules/src/eager.module.ts index f50669ee92..98892ca627 100644 --- a/integration/lazy-modules/src/eager.module.ts +++ b/integration/lazy-modules/src/eager.module.ts @@ -1,5 +1,5 @@ import { Module, Injectable } from '@nestjs/common'; -import { GlobalService } from './global.module'; +import { GlobalService } from './global.module.js'; @Injectable() export class EagerService { diff --git a/integration/lazy-modules/src/lazy.controller.ts b/integration/lazy-modules/src/lazy.controller.ts index 45ab41bcf4..d70fb2a9c8 100644 --- a/integration/lazy-modules/src/lazy.controller.ts +++ b/integration/lazy-modules/src/lazy.controller.ts @@ -7,20 +7,20 @@ export class LazyController { @Get('transient') async exec() { - const { TransientLazyModule } = await import('./transient.module'); + const { TransientLazyModule } = await import('./transient.module.js'); const moduleRef = await this.lazyLoadModule.load(() => TransientLazyModule); - const { TransientService } = await import('./transient.service'); + const { TransientService } = await import('./transient.service.js'); const _service = await moduleRef.resolve(TransientService); return _service.eager(); } @Get('request') async execRequestScope() { - const { RequestLazyModule } = await import('./request.module'); + const { RequestLazyModule } = await import('./request.module.js'); const moduleRef = await this.lazyLoadModule.load(() => RequestLazyModule); - const { RequestService } = await import('./request.service'); + const { RequestService } = await import('./request.service.js'); const _service = await moduleRef.resolve(RequestService); return _service.eager(); diff --git a/integration/lazy-modules/src/lazy.module.ts b/integration/lazy-modules/src/lazy.module.ts index 69c056435e..631b926a12 100644 --- a/integration/lazy-modules/src/lazy.module.ts +++ b/integration/lazy-modules/src/lazy.module.ts @@ -1,5 +1,5 @@ import { Module, Injectable } from '@nestjs/common'; -import { GlobalService } from './global.module'; +import { GlobalService } from './global.module.js'; @Injectable() export class LazyService { diff --git a/integration/lazy-modules/src/main.ts b/integration/lazy-modules/src/main.ts index 23f3240c27..2061a1ced0 100644 --- a/integration/lazy-modules/src/main.ts +++ b/integration/lazy-modules/src/main.ts @@ -1,5 +1,5 @@ import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; +import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(AppModule); diff --git a/integration/lazy-modules/src/request.module.ts b/integration/lazy-modules/src/request.module.ts index 8cd549fced..fae44cb8af 100644 --- a/integration/lazy-modules/src/request.module.ts +++ b/integration/lazy-modules/src/request.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { EagerService } from './eager.module'; -import { GlobalService } from './global.module'; -import { RequestService } from './request.service'; +import { EagerService } from './eager.module.js'; +import { GlobalService } from './global.module.js'; +import { RequestService } from './request.service.js'; @Module({ imports: [], diff --git a/integration/lazy-modules/src/request.service.ts b/integration/lazy-modules/src/request.service.ts index 846b542c8c..61bd018575 100644 --- a/integration/lazy-modules/src/request.service.ts +++ b/integration/lazy-modules/src/request.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { EagerService } from './eager.module'; +import { EagerService } from './eager.module.js'; @Injectable({ scope: Scope.REQUEST }) export class RequestService { diff --git a/integration/lazy-modules/src/transient.module.ts b/integration/lazy-modules/src/transient.module.ts index b76a686fec..c0d509ce00 100644 --- a/integration/lazy-modules/src/transient.module.ts +++ b/integration/lazy-modules/src/transient.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { GlobalService } from './global.module'; -import { EagerService } from './eager.module'; -import { TransientService } from './transient.service'; +import { GlobalService } from './global.module.js'; +import { EagerService } from './eager.module.js'; +import { TransientService } from './transient.service.js'; @Module({ imports: [], diff --git a/integration/lazy-modules/src/transient.service.ts b/integration/lazy-modules/src/transient.service.ts index fca7632286..e8585006ba 100644 --- a/integration/lazy-modules/src/transient.service.ts +++ b/integration/lazy-modules/src/transient.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { EagerService } from './eager.module'; +import { EagerService } from './eager.module.js'; @Injectable({ scope: Scope.TRANSIENT }) export class TransientService { diff --git a/integration/lazy-modules/tsconfig.json b/integration/lazy-modules/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/lazy-modules/tsconfig.json +++ b/integration/lazy-modules/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/microservices/e2e/broadcast-mqtt.spec.ts b/integration/microservices/e2e/broadcast-mqtt.spec.ts index 641bf442ae..08e7f5a0b8 100644 --- a/integration/microservices/e2e/broadcast-mqtt.spec.ts +++ b/integration/microservices/e2e/broadcast-mqtt.spec.ts @@ -1,8 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { MqttBroadcastController } from '../src/mqtt/mqtt-broadcast.controller'; +import request from 'supertest'; +import { MqttBroadcastController } from '../src/mqtt/mqtt-broadcast.controller.js'; describe('MQTT transport', () => { let server; diff --git a/integration/microservices/e2e/broadcast-nats.spec.ts b/integration/microservices/e2e/broadcast-nats.spec.ts index b8cf69b50e..24c7c25dec 100644 --- a/integration/microservices/e2e/broadcast-nats.spec.ts +++ b/integration/microservices/e2e/broadcast-nats.spec.ts @@ -1,8 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { NatsBroadcastController } from '../src/nats/nats-broadcast.controller'; +import request from 'supertest'; +import { NatsBroadcastController } from '../src/nats/nats-broadcast.controller.js'; describe('NATS transport', () => { let server; diff --git a/integration/microservices/e2e/broadcast-redis.spec.ts b/integration/microservices/e2e/broadcast-redis.spec.ts index 1cf8690ef4..dab143ad71 100644 --- a/integration/microservices/e2e/broadcast-redis.spec.ts +++ b/integration/microservices/e2e/broadcast-redis.spec.ts @@ -1,8 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { RedisBroadcastController } from '../src/redis/redis-broadcast.controller'; +import request from 'supertest'; +import { RedisBroadcastController } from '../src/redis/redis-broadcast.controller.js'; describe('REDIS transport', () => { let server; diff --git a/integration/microservices/e2e/concurrent-kafka.spec.ts b/integration/microservices/e2e/concurrent-kafka.spec.ts index 11dd0dbb73..3af2a1038c 100644 --- a/integration/microservices/e2e/concurrent-kafka.spec.ts +++ b/integration/microservices/e2e/concurrent-kafka.spec.ts @@ -2,10 +2,10 @@ import { INestApplication, Logger } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { Admin, ITopicMetadata, Kafka } from 'kafkajs'; -import * as request from 'supertest'; +import request from 'supertest'; import * as util from 'util'; -import { KafkaConcurrentController } from '../src/kafka-concurrent/kafka-concurrent.controller'; -import { KafkaConcurrentMessagesController } from '../src/kafka-concurrent/kafka-concurrent.messages.controller'; +import { KafkaConcurrentController } from '../src/kafka-concurrent/kafka-concurrent.controller.js'; +import { KafkaConcurrentMessagesController } from '../src/kafka-concurrent/kafka-concurrent.messages.controller.js'; describe.skip('Kafka concurrent', function () { const numbersOfServers = 3; diff --git a/integration/microservices/e2e/disconnected-client.spec.ts b/integration/microservices/e2e/disconnected-client.spec.ts index 706c2e0591..e61d34389a 100644 --- a/integration/microservices/e2e/disconnected-client.spec.ts +++ b/integration/microservices/e2e/disconnected-client.spec.ts @@ -1,9 +1,9 @@ import { INestApplication } from '@nestjs/common'; import { Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; +import request from 'supertest'; import { App } from 'supertest/types'; -import { DisconnectedClientController } from '../src/disconnected.controller'; +import { DisconnectedClientController } from '../src/disconnected.controller.js'; describe('Disconnected client', () => { let server: App; diff --git a/integration/microservices/e2e/fanout-exchange-rmq.spec.ts b/integration/microservices/e2e/fanout-exchange-rmq.spec.ts index c271f88bda..4561ed8e32 100644 --- a/integration/microservices/e2e/fanout-exchange-rmq.spec.ts +++ b/integration/microservices/e2e/fanout-exchange-rmq.spec.ts @@ -1,9 +1,9 @@ import { INestApplication, INestMicroservice } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { RMQFanoutExchangeProducerController } from '../src/rmq/fanout-exchange-producer-rmq.controller'; -import { RMQFanoutExchangeConsumerController } from '../src/rmq/fanout-exchange-consumer-rmq.controller'; +import request from 'supertest'; +import { RMQFanoutExchangeProducerController } from '../src/rmq/fanout-exchange-producer-rmq.controller.js'; +import { RMQFanoutExchangeConsumerController } from '../src/rmq/fanout-exchange-consumer-rmq.controller.js'; describe('RabbitMQ transport (Fanout Exchange)', () => { let server: any; diff --git a/integration/microservices/e2e/math-grpc.spec.ts b/integration/microservices/e2e/math-grpc.spec.ts index 8a80ced27d..5d965b2553 100644 --- a/integration/microservices/e2e/math-grpc.spec.ts +++ b/integration/microservices/e2e/math-grpc.spec.ts @@ -5,11 +5,11 @@ import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { fail } from 'assert'; import { expect, use } from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chaiAsPromised from 'chai-as-promised'; import { join } from 'path'; import * as sinon from 'sinon'; -import * as request from 'supertest'; -import { GrpcController } from '../src/grpc/grpc.controller'; +import request from 'supertest'; +import { GrpcController } from '../src/grpc/grpc.controller.js'; use(chaiAsPromised); @@ -31,8 +31,8 @@ describe('GRPC transport', () => { options: { package: ['math', 'math2'], protoPath: [ - join(__dirname, '../src/grpc/math.proto'), - join(__dirname, '../src/grpc/math2.proto'), + join(import.meta.dirname, '../src/grpc/math.proto'), + join(import.meta.dirname, '../src/grpc/math2.proto'), ], }, }); @@ -42,7 +42,7 @@ describe('GRPC transport', () => { await app.init(); // Load proto-buffers for test gRPC dispatch const proto = ProtoLoader.loadSync( - join(__dirname, '../src/grpc/math.proto'), + join(import.meta.dirname, '../src/grpc/math.proto'), ) as any; // Create Raw gRPC client object const protoGRPC = GRPC.loadPackageDefinition(proto) as any; diff --git a/integration/microservices/e2e/mqtt-record-builder.spec.ts b/integration/microservices/e2e/mqtt-record-builder.spec.ts index 94d57d5bef..3ebd93f4db 100644 --- a/integration/microservices/e2e/mqtt-record-builder.spec.ts +++ b/integration/microservices/e2e/mqtt-record-builder.spec.ts @@ -1,8 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { MqttController } from '../src/mqtt/mqtt.controller'; +import request from 'supertest'; +import { MqttController } from '../src/mqtt/mqtt.controller.js'; describe('MQTT transport', () => { let server; diff --git a/integration/microservices/e2e/orders-grpc.spec.ts b/integration/microservices/e2e/orders-grpc.spec.ts index e34864f91e..42858e991a 100644 --- a/integration/microservices/e2e/orders-grpc.spec.ts +++ b/integration/microservices/e2e/orders-grpc.spec.ts @@ -6,10 +6,10 @@ import { ExpressAdapter } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; import { fail } from 'assert'; import { expect } from 'chai'; -import * as express from 'express'; +import express from 'express'; import { join } from 'path'; -import * as request from 'supertest'; -import { AdvancedGrpcController } from '../src/grpc-advanced/advanced.grpc.controller'; +import request from 'supertest'; +import { AdvancedGrpcController } from '../src/grpc-advanced/advanced.grpc.controller.js'; describe('Advanced GRPC transport', () => { let server; @@ -33,7 +33,9 @@ describe('Advanced GRPC transport', () => { package: 'proto_example', protoPath: 'root.proto', loader: { - includeDirs: [join(__dirname, '../src/grpc-advanced/proto')], + includeDirs: [ + join(import.meta.dirname, '../src/grpc-advanced/proto'), + ], keepCase: true, }, }, @@ -43,7 +45,7 @@ describe('Advanced GRPC transport', () => { await app.init(); // Load proto-buffers for test gRPC dispatch const proto = ProtoLoader.loadSync('root.proto', { - includeDirs: [join(__dirname, '../src/grpc-advanced/proto')], + includeDirs: [join(import.meta.dirname, '../src/grpc-advanced/proto')], }) as any; // Create Raw gRPC client object const protoGRPC = GRPC.loadPackageDefinition(proto) as any; diff --git a/integration/microservices/e2e/sum-kafka.spec.ts b/integration/microservices/e2e/sum-kafka.spec.ts index 945210f87e..771ff894f1 100644 --- a/integration/microservices/e2e/sum-kafka.spec.ts +++ b/integration/microservices/e2e/sum-kafka.spec.ts @@ -2,12 +2,12 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { BusinessDto } from '../src/kafka/dtos/business.dto'; -import { UserDto } from '../src/kafka/dtos/user.dto'; -import { UserEntity } from '../src/kafka/entities/user.entity'; -import { KafkaController } from '../src/kafka/kafka.controller'; -import { KafkaMessagesController } from '../src/kafka/kafka.messages.controller'; +import request from 'supertest'; +import { BusinessDto } from '../src/kafka/dtos/business.dto.js'; +import { UserDto } from '../src/kafka/dtos/user.dto.js'; +import { UserEntity } from '../src/kafka/entities/user.entity.js'; +import { KafkaController } from '../src/kafka/kafka.controller.js'; +import { KafkaMessagesController } from '../src/kafka/kafka.messages.controller.js'; /** * Skip this flaky test in CI/CD pipeline as it frequently diff --git a/integration/microservices/e2e/sum-mqtt.spec.ts b/integration/microservices/e2e/sum-mqtt.spec.ts index d1a457bcd4..9fe107f242 100644 --- a/integration/microservices/e2e/sum-mqtt.spec.ts +++ b/integration/microservices/e2e/sum-mqtt.spec.ts @@ -2,8 +2,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { MqttController } from '../src/mqtt/mqtt.controller'; +import request from 'supertest'; +import { MqttController } from '../src/mqtt/mqtt.controller.js'; describe('MQTT transport', () => { let server; diff --git a/integration/microservices/e2e/sum-nats.spec.ts b/integration/microservices/e2e/sum-nats.spec.ts index 99c8548edf..8225da45cc 100644 --- a/integration/microservices/e2e/sum-nats.spec.ts +++ b/integration/microservices/e2e/sum-nats.spec.ts @@ -2,9 +2,9 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { NatsController } from '../src/nats/nats.controller'; -import { NatsService } from '../src/nats/nats.service'; +import request from 'supertest'; +import { NatsController } from '../src/nats/nats.controller.js'; +import { NatsService } from '../src/nats/nats.service.js'; describe('NATS transport', () => { let server; diff --git a/integration/microservices/e2e/sum-redis.spec.ts b/integration/microservices/e2e/sum-redis.spec.ts index 246c2e2709..d2eae4a09b 100644 --- a/integration/microservices/e2e/sum-redis.spec.ts +++ b/integration/microservices/e2e/sum-redis.spec.ts @@ -2,8 +2,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { RedisController } from '../src/redis/redis.controller'; +import request from 'supertest'; +import { RedisController } from '../src/redis/redis.controller.js'; describe('REDIS transport', () => { let server; diff --git a/integration/microservices/e2e/sum-rmq.spec.ts b/integration/microservices/e2e/sum-rmq.spec.ts index 02ffa1db83..632408f6f6 100644 --- a/integration/microservices/e2e/sum-rmq.spec.ts +++ b/integration/microservices/e2e/sum-rmq.spec.ts @@ -2,8 +2,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { RMQController } from '../src/rmq/rmq.controller'; +import request from 'supertest'; +import { RMQController } from '../src/rmq/rmq.controller.js'; describe('RabbitMQ transport', () => { let server; diff --git a/integration/microservices/e2e/sum-rpc-tls.spec.ts b/integration/microservices/e2e/sum-rpc-tls.spec.ts index 91c31626d0..bc98a35ea5 100644 --- a/integration/microservices/e2e/sum-rpc-tls.spec.ts +++ b/integration/microservices/e2e/sum-rpc-tls.spec.ts @@ -4,9 +4,9 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import * as fs from 'fs'; import * as path from 'path'; -import * as request from 'supertest'; -import { AppController } from '../src/tcp-tls/app.controller'; -import { ApplicationModule } from '../src/tcp-tls/app.module'; +import request from 'supertest'; +import { AppController } from '../src/tcp-tls/app.controller.js'; +import { ApplicationModule } from '../src/tcp-tls/app.module.js'; describe('RPC TLS transport', () => { let server; @@ -17,10 +17,16 @@ describe('RPC TLS transport', () => { before(() => { // Generate a self-signed key pair key = fs - .readFileSync(path.join(__dirname, '../src/tcp-tls/privkey.pem'), 'utf8') + .readFileSync( + path.join(import.meta.dirname, '../src/tcp-tls/privkey.pem'), + 'utf8', + ) .toString(); cert = fs - .readFileSync(path.join(__dirname, '../src/tcp-tls/ca.cert.pem'), 'utf8') + .readFileSync( + path.join(import.meta.dirname, '../src/tcp-tls/ca.cert.pem'), + 'utf8', + ) .toString(); }); diff --git a/integration/microservices/e2e/sum-rpc.spec.ts b/integration/microservices/e2e/sum-rpc.spec.ts index 8e98fdceb4..982224d1d1 100644 --- a/integration/microservices/e2e/sum-rpc.spec.ts +++ b/integration/microservices/e2e/sum-rpc.spec.ts @@ -2,9 +2,9 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { AppController } from '../src/app.controller'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppController } from '../src/app.controller.js'; +import { AppModule } from '../src/app.module.js'; describe('RPC transport', () => { let server; diff --git a/integration/microservices/e2e/topic-exchange-rmq.spec.ts b/integration/microservices/e2e/topic-exchange-rmq.spec.ts index 2a2bd1ff68..d7b9ae3458 100644 --- a/integration/microservices/e2e/topic-exchange-rmq.spec.ts +++ b/integration/microservices/e2e/topic-exchange-rmq.spec.ts @@ -1,8 +1,8 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { RMQTopicExchangeController } from '../src/rmq/topic-exchange-rmq.controller'; +import request from 'supertest'; +import { RMQTopicExchangeController } from '../src/rmq/topic-exchange-rmq.controller.js'; describe('RabbitMQ transport (Topic Exchange - wildcards)', () => { let server: any; diff --git a/integration/microservices/src/app.module.ts b/integration/microservices/src/app.module.ts index dacf646e45..3100e7f28f 100644 --- a/integration/microservices/src/app.module.ts +++ b/integration/microservices/src/app.module.ts @@ -1,5 +1,5 @@ import { Module, Injectable } from '@nestjs/common'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; import { ClientsModule, Transport, diff --git a/integration/microservices/src/grpc-advanced/advanced.grpc.controller.ts b/integration/microservices/src/grpc-advanced/advanced.grpc.controller.ts index e4aa0234b3..98e760e678 100644 --- a/integration/microservices/src/grpc-advanced/advanced.grpc.controller.ts +++ b/integration/microservices/src/grpc-advanced/advanced.grpc.controller.ts @@ -23,7 +23,7 @@ export class AdvancedGrpcController { package: 'proto_example.orders', protoPath: 'root.proto', loader: { - includeDirs: [join(__dirname, './proto')], + includeDirs: [join(import.meta.dirname, './proto')], keepCase: true, }, }, diff --git a/integration/microservices/src/grpc/grpc.controller.ts b/integration/microservices/src/grpc/grpc.controller.ts index 8d435f18b3..757206f287 100644 --- a/integration/microservices/src/grpc/grpc.controller.ts +++ b/integration/microservices/src/grpc/grpc.controller.ts @@ -24,7 +24,7 @@ export class GrpcController { constructor() { this.customClient = new ErrorHandlingProxy({ package: 'math', - protoPath: join(__dirname, 'math.proto'), + protoPath: join(import.meta.dirname, 'math.proto'), }); } @@ -32,7 +32,7 @@ export class GrpcController { transport: Transport.GRPC, options: { package: 'math', - protoPath: join(__dirname, 'math.proto'), + protoPath: join(import.meta.dirname, 'math.proto'), }, }) client: ClientGrpc; @@ -42,8 +42,8 @@ export class GrpcController { options: { package: ['math', 'math2'], protoPath: [ - join(__dirname, 'math.proto'), - join(__dirname, 'math2.proto'), + join(import.meta.dirname, 'math.proto'), + join(import.meta.dirname, 'math2.proto'), ], }, }) diff --git a/integration/microservices/src/kafka-concurrent/kafka-concurrent.controller.ts b/integration/microservices/src/kafka-concurrent/kafka-concurrent.controller.ts index 4816b4f13b..dd2476b644 100644 --- a/integration/microservices/src/kafka-concurrent/kafka-concurrent.controller.ts +++ b/integration/microservices/src/kafka-concurrent/kafka-concurrent.controller.ts @@ -10,7 +10,7 @@ import { import { Client, ClientKafka, Transport } from '@nestjs/microservices'; import { PartitionerArgs } from 'kafkajs'; import { Observable } from 'rxjs'; -import { SumDto } from './dto/sum.dto'; +import { SumDto } from './dto/sum.dto.js'; /** * The following function explicitly sends messages to the key representing the partition. diff --git a/integration/microservices/src/kafka/dtos/business.dto.ts b/integration/microservices/src/kafka/dtos/business.dto.ts index 15f82a8378..55130dfb1e 100644 --- a/integration/microservices/src/kafka/dtos/business.dto.ts +++ b/integration/microservices/src/kafka/dtos/business.dto.ts @@ -1,4 +1,4 @@ -import { UserEntity } from '../entities/user.entity'; +import { UserEntity } from '../entities/user.entity.js'; export class BusinessDto { name: string; diff --git a/integration/microservices/src/kafka/entities/business.entity.ts b/integration/microservices/src/kafka/entities/business.entity.ts index 5e8feaea11..f96f71787c 100644 --- a/integration/microservices/src/kafka/entities/business.entity.ts +++ b/integration/microservices/src/kafka/entities/business.entity.ts @@ -1,5 +1,5 @@ -import { UserEntity } from './user.entity'; -import { BusinessDto } from '../dtos/business.dto'; +import { UserEntity } from './user.entity.js'; +import { BusinessDto } from '../dtos/business.dto.js'; export class BusinessEntity { constructor(business: BusinessDto) { diff --git a/integration/microservices/src/kafka/entities/user.entity.ts b/integration/microservices/src/kafka/entities/user.entity.ts index 6ad630980f..16277050d4 100644 --- a/integration/microservices/src/kafka/entities/user.entity.ts +++ b/integration/microservices/src/kafka/entities/user.entity.ts @@ -1,4 +1,4 @@ -import { UserDto } from '../dtos/user.dto'; +import { UserDto } from '../dtos/user.dto.js'; export class UserEntity { constructor(user: UserDto) { diff --git a/integration/microservices/src/kafka/kafka.controller.ts b/integration/microservices/src/kafka/kafka.controller.ts index 0db49ebcd6..3595cdbe18 100644 --- a/integration/microservices/src/kafka/kafka.controller.ts +++ b/integration/microservices/src/kafka/kafka.controller.ts @@ -9,8 +9,8 @@ import { } from '@nestjs/common'; import { Client, ClientKafka, Transport } from '@nestjs/microservices'; import { lastValueFrom, Observable } from 'rxjs'; -import { BusinessDto } from './dtos/business.dto'; -import { UserDto } from './dtos/user.dto'; +import { BusinessDto } from './dtos/business.dto.js'; +import { UserDto } from './dtos/user.dto.js'; @Controller() export class KafkaController implements OnModuleInit, OnModuleDestroy { diff --git a/integration/microservices/src/kafka/kafka.messages.controller.ts b/integration/microservices/src/kafka/kafka.messages.controller.ts index 29acae07f7..42e6424cd2 100644 --- a/integration/microservices/src/kafka/kafka.messages.controller.ts +++ b/integration/microservices/src/kafka/kafka.messages.controller.ts @@ -1,10 +1,10 @@ import { Controller, Logger } from '@nestjs/common'; import { EventPattern, MessagePattern } from '@nestjs/microservices'; -import { BusinessDto } from './dtos/business.dto'; -import { UserDto } from './dtos/user.dto'; -import { BusinessEntity } from './entities/business.entity'; -import { UserEntity } from './entities/user.entity'; -import { KafkaController } from './kafka.controller'; +import { BusinessDto } from './dtos/business.dto.js'; +import { UserDto } from './dtos/user.dto.js'; +import { BusinessEntity } from './entities/business.entity.js'; +import { UserEntity } from './entities/user.entity.js'; +import { KafkaController } from './kafka.controller.js'; @Controller() export class KafkaMessagesController { diff --git a/integration/microservices/src/main.ts b/integration/microservices/src/main.ts index cdecc1bb68..dbca439014 100644 --- a/integration/microservices/src/main.ts +++ b/integration/microservices/src/main.ts @@ -1,5 +1,5 @@ import { NestFactory } from '@nestjs/core'; -import { ApplicationModule } from './app.module'; +import { ApplicationModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(ApplicationModule); diff --git a/integration/microservices/src/nats/nats.controller.ts b/integration/microservices/src/nats/nats.controller.ts index ffcfb18687..3b237633b7 100644 --- a/integration/microservices/src/nats/nats.controller.ts +++ b/integration/microservices/src/nats/nats.controller.ts @@ -14,7 +14,7 @@ import { import * as nats from 'nats'; import { from, lastValueFrom, Observable, of, throwError } from 'rxjs'; import { catchError, scan } from 'rxjs/operators'; -import { NatsService } from './nats.service'; +import { NatsService } from './nats.service.js'; @Controller() export class NatsController { diff --git a/integration/microservices/src/tcp-tls/app.controller.ts b/integration/microservices/src/tcp-tls/app.controller.ts index 81101741fc..516de7e101 100644 --- a/integration/microservices/src/tcp-tls/app.controller.ts +++ b/integration/microservices/src/tcp-tls/app.controller.ts @@ -34,7 +34,10 @@ export class AppController { tlsOptions: { ca: [ fs - .readFileSync(path.join(__dirname, 'ca.cert.pem'), 'utf-8') + .readFileSync( + path.join(import.meta.dirname, 'ca.cert.pem'), + 'utf-8', + ) .toString(), ], }, diff --git a/integration/microservices/src/tcp-tls/app.module.ts b/integration/microservices/src/tcp-tls/app.module.ts index b3720d2a96..919442c6c3 100644 --- a/integration/microservices/src/tcp-tls/app.module.ts +++ b/integration/microservices/src/tcp-tls/app.module.ts @@ -7,12 +7,14 @@ import { RpcException, Transport, } from '@nestjs/microservices'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; import * as fs from 'fs'; import * as path from 'path'; -const caCert = fs.readFileSync(path.join(__dirname, 'ca.cert.pem')).toString(); +const caCert = fs + .readFileSync(path.join(import.meta.dirname, 'ca.cert.pem')) + .toString(); class ErrorHandlingProxy extends ClientTCP { constructor() { diff --git a/integration/microservices/tsconfig.json b/integration/microservices/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/microservices/tsconfig.json +++ b/integration/microservices/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/module-utils/src/integration.module-definition.ts b/integration/module-utils/src/integration.module-definition.ts index 89d7a98424..3814942c83 100644 --- a/integration/module-utils/src/integration.module-definition.ts +++ b/integration/module-utils/src/integration.module-definition.ts @@ -1,5 +1,5 @@ import { ConfigurableModuleBuilder } from '@nestjs/common'; -import { IntegrationModuleOptions } from './interfaces/integration-module-options.interface'; +import { IntegrationModuleOptions } from './interfaces/integration-module-options.interface.js'; export const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder() diff --git a/integration/module-utils/src/integration.module.ts b/integration/module-utils/src/integration.module.ts index 3b994f4bd4..44e08637c2 100644 --- a/integration/module-utils/src/integration.module.ts +++ b/integration/module-utils/src/integration.module.ts @@ -2,8 +2,8 @@ import { Inject, Module } from '@nestjs/common'; import { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN, -} from './integration.module-definition'; -import { IntegrationModuleOptions } from './interfaces/integration-module-options.interface'; +} from './integration.module-definition.js'; +import { IntegrationModuleOptions } from './interfaces/integration-module-options.interface.js'; @Module({}) export class IntegrationModule extends ConfigurableModuleClass { diff --git a/integration/module-utils/test/integration-module.spec.ts b/integration/module-utils/test/integration-module.spec.ts index ea22a71c57..28457abde5 100644 --- a/integration/module-utils/test/integration-module.spec.ts +++ b/integration/module-utils/test/integration-module.spec.ts @@ -1,6 +1,6 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { IntegrationModule } from '../src/integration.module'; +import { IntegrationModule } from '../src/integration.module.js'; describe('Module utils (ConfigurableModuleBuilder)', () => { it('should auto-generate "forRoot" method', async () => { diff --git a/integration/module-utils/tsconfig.json b/integration/module-utils/tsconfig.json index 2d3b89de29..b8280d0c05 100644 --- a/integration/module-utils/tsconfig.json +++ b/integration/module-utils/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/mongoose/e2e/async-class-options.spec.ts b/integration/mongoose/e2e/async-class-options.spec.ts index 4a74027951..c97e57a759 100644 --- a/integration/mongoose/e2e/async-class-options.spec.ts +++ b/integration/mongoose/e2e/async-class-options.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncOptionsClassModule } from '../src/async-class-options.module'; +import request from 'supertest'; +import { AsyncOptionsClassModule } from '../src/async-class-options.module.js'; describe('Mongoose', () => { let server; diff --git a/integration/mongoose/e2e/async-existing-options.spec.ts b/integration/mongoose/e2e/async-existing-options.spec.ts index e507cb90aa..1e2fd7c624 100644 --- a/integration/mongoose/e2e/async-existing-options.spec.ts +++ b/integration/mongoose/e2e/async-existing-options.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncOptionsExistingModule } from '../src/async-existing-options.module'; +import request from 'supertest'; +import { AsyncOptionsExistingModule } from '../src/async-existing-options.module.js'; describe('Mongoose', () => { let server; diff --git a/integration/mongoose/e2e/async-options.spec.ts b/integration/mongoose/e2e/async-options.spec.ts index 738d5683fc..b6bb019117 100644 --- a/integration/mongoose/e2e/async-options.spec.ts +++ b/integration/mongoose/e2e/async-options.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncOptionsFactoryModule } from '../src/async-options.module'; +import request from 'supertest'; +import { AsyncOptionsFactoryModule } from '../src/async-options.module.js'; describe('Mongoose', () => { let server; diff --git a/integration/mongoose/e2e/mongoose.spec.ts b/integration/mongoose/e2e/mongoose.spec.ts index 11fa260a9a..607f09846a 100644 --- a/integration/mongoose/e2e/mongoose.spec.ts +++ b/integration/mongoose/e2e/mongoose.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { ApplicationModule } from '../src/app.module'; +import request from 'supertest'; +import { ApplicationModule } from '../src/app.module.js'; describe('Mongoose', () => { let server; diff --git a/integration/mongoose/src/app.module.ts b/integration/mongoose/src/app.module.ts index 0368daa98a..4d3fa0de32 100644 --- a/integration/mongoose/src/app.module.ts +++ b/integration/mongoose/src/app.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; @Module({ imports: [ diff --git a/integration/mongoose/src/async-class-options.module.ts b/integration/mongoose/src/async-class-options.module.ts index 6e8a20e3f5..1b391de345 100644 --- a/integration/mongoose/src/async-class-options.module.ts +++ b/integration/mongoose/src/async-class-options.module.ts @@ -4,7 +4,7 @@ import { MongooseModuleOptions, MongooseOptionsFactory, } from '@nestjs/mongoose'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; class ConfigService implements MongooseOptionsFactory { createMongooseOptions(): MongooseModuleOptions { diff --git a/integration/mongoose/src/async-existing-options.module.ts b/integration/mongoose/src/async-existing-options.module.ts index 61209d28ab..bf8c609e5b 100644 --- a/integration/mongoose/src/async-existing-options.module.ts +++ b/integration/mongoose/src/async-existing-options.module.ts @@ -4,7 +4,7 @@ import { MongooseModuleOptions, MongooseOptionsFactory, } from '@nestjs/mongoose'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; class ConfigService implements MongooseOptionsFactory { createMongooseOptions(): MongooseModuleOptions { diff --git a/integration/mongoose/src/async-options.module.ts b/integration/mongoose/src/async-options.module.ts index d5f0f45d5f..da9a808b5f 100644 --- a/integration/mongoose/src/async-options.module.ts +++ b/integration/mongoose/src/async-options.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; -import { CatsModule } from './cats/cats.module'; +import { CatsModule } from './cats/cats.module.js'; @Module({ imports: [ diff --git a/integration/mongoose/src/cats/cats.controller.ts b/integration/mongoose/src/cats/cats.controller.ts index 28c92f1853..1dec9a5abc 100644 --- a/integration/mongoose/src/cats/cats.controller.ts +++ b/integration/mongoose/src/cats/cats.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Post } from '@nestjs/common'; -import { CatsService } from './cats.service'; -import { CreateCatDto } from './dto/create-cat.dto'; -import { Cat } from './interfaces/cat.interface'; +import { CatsService } from './cats.service.js'; +import { CreateCatDto } from './dto/create-cat.dto.js'; +import { Cat } from './interfaces/cat.interface.js'; @Controller('cats') export class CatsController { diff --git a/integration/mongoose/src/cats/cats.module.ts b/integration/mongoose/src/cats/cats.module.ts index dce6ab960c..31b71de7f4 100644 --- a/integration/mongoose/src/cats/cats.module.ts +++ b/integration/mongoose/src/cats/cats.module.ts @@ -1,8 +1,8 @@ import { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; -import { CatsController } from './cats.controller'; -import { CatsService } from './cats.service'; -import { CatSchema } from './schemas/cat.schema'; +import { CatsController } from './cats.controller.js'; +import { CatsService } from './cats.service.js'; +import { CatSchema } from './schemas/cat.schema.js'; @Module({ imports: [MongooseModule.forFeature([{ name: 'Cat', schema: CatSchema }])], diff --git a/integration/mongoose/src/cats/cats.service.ts b/integration/mongoose/src/cats/cats.service.ts index 51d6e313a8..5731c1a958 100644 --- a/integration/mongoose/src/cats/cats.service.ts +++ b/integration/mongoose/src/cats/cats.service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; -import { CreateCatDto } from './dto/create-cat.dto'; -import { Cat } from './interfaces/cat.interface'; +import { CreateCatDto } from './dto/create-cat.dto.js'; +import { Cat } from './interfaces/cat.interface.js'; @Injectable() export class CatsService { diff --git a/integration/mongoose/src/cats/schemas/cat.schema.ts b/integration/mongoose/src/cats/schemas/cat.schema.ts index 56aaecae80..2645f3ce46 100644 --- a/integration/mongoose/src/cats/schemas/cat.schema.ts +++ b/integration/mongoose/src/cats/schemas/cat.schema.ts @@ -1,4 +1,4 @@ -import * as mongoose from 'mongoose'; +import mongoose from 'mongoose'; export const CatSchema = new mongoose.Schema({ name: String, diff --git a/integration/mongoose/src/main.ts b/integration/mongoose/src/main.ts index 2699ee9d7a..855c45380c 100644 --- a/integration/mongoose/src/main.ts +++ b/integration/mongoose/src/main.ts @@ -1,5 +1,5 @@ import { NestFactory } from '@nestjs/core'; -import { ApplicationModule } from './app.module'; +import { ApplicationModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(ApplicationModule); diff --git a/integration/mongoose/tsconfig.json b/integration/mongoose/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/mongoose/tsconfig.json +++ b/integration/mongoose/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/nest-application/app-locals/e2e/express.spec.ts b/integration/nest-application/app-locals/e2e/express.spec.ts index 1e8597851d..a2365710cf 100644 --- a/integration/nest-application/app-locals/e2e/express.spec.ts +++ b/integration/nest-application/app-locals/e2e/express.spec.ts @@ -1,8 +1,8 @@ import { NestExpressApplication } from '@nestjs/platform-express'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('App-level globals (Express Application)', () => { let moduleFixture: TestingModule; diff --git a/integration/nest-application/app-locals/src/app.module.ts b/integration/nest-application/app-locals/src/app.module.ts index 848d4aaa7f..52bb569b5d 100644 --- a/integration/nest-application/app-locals/src/app.module.ts +++ b/integration/nest-application/app-locals/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; @Module({ controllers: [AppController], diff --git a/integration/nest-application/app-locals/tsconfig.json b/integration/nest-application/app-locals/tsconfig.json index 259f2b525f..70ddc5bc78 100644 --- a/integration/nest-application/app-locals/tsconfig.json +++ b/integration/nest-application/app-locals/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "outDir": "./dist", diff --git a/integration/nest-application/get-url/e2e/express.spec.ts b/integration/nest-application/get-url/e2e/express.spec.ts index fc0cfad2b6..8511acd364 100644 --- a/integration/nest-application/get-url/e2e/express.spec.ts +++ b/integration/nest-application/get-url/e2e/express.spec.ts @@ -1,9 +1,9 @@ import { ExpressAdapter } from '@nestjs/platform-express'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import * as express from 'express'; -import { AppModule } from '../src/app.module'; -import { randomPort } from './utils'; +import express from 'express'; +import { AppModule } from '../src/app.module.js'; +import { randomPort } from './utils.js'; describe('Get URL (Express Application)', () => { let testModule: TestingModule; diff --git a/integration/nest-application/get-url/e2e/fastify.spec.ts b/integration/nest-application/get-url/e2e/fastify.spec.ts index d1c8cfcaff..ade043f071 100644 --- a/integration/nest-application/get-url/e2e/fastify.spec.ts +++ b/integration/nest-application/get-url/e2e/fastify.spec.ts @@ -1,8 +1,8 @@ import { FastifyAdapter } from '@nestjs/platform-fastify'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import { AppModule } from '../src/app.module'; -import { randomPort } from './utils'; +import { AppModule } from '../src/app.module.js'; +import { randomPort } from './utils.js'; describe('Get URL (Fastify Application)', () => { let testModule: TestingModule; diff --git a/integration/nest-application/get-url/src/app.controller.ts b/integration/nest-application/get-url/src/app.controller.ts index 8d4f6eb02c..e1f9543ab9 100644 --- a/integration/nest-application/get-url/src/app.controller.ts +++ b/integration/nest-application/get-url/src/app.controller.ts @@ -1,5 +1,5 @@ import { Controller, Get } from '@nestjs/common'; -import { AppService } from './app.service'; +import { AppService } from './app.service.js'; @Controller() export class AppController { diff --git a/integration/nest-application/get-url/src/app.module.ts b/integration/nest-application/get-url/src/app.module.ts index 7845d045f8..7abec95862 100644 --- a/integration/nest-application/get-url/src/app.module.ts +++ b/integration/nest-application/get-url/src/app.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; +import { AppController } from './app.controller.js'; +import { AppService } from './app.service.js'; @Module({ controllers: [AppController], diff --git a/integration/nest-application/get-url/tsconfig.json b/integration/nest-application/get-url/tsconfig.json index 259f2b525f..70ddc5bc78 100644 --- a/integration/nest-application/get-url/tsconfig.json +++ b/integration/nest-application/get-url/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "outDir": "./dist", diff --git a/integration/nest-application/global-prefix/e2e/global-prefix.spec.ts b/integration/nest-application/global-prefix/e2e/global-prefix.spec.ts index 3364e29efa..fc709c9721 100644 --- a/integration/nest-application/global-prefix/e2e/global-prefix.spec.ts +++ b/integration/nest-application/global-prefix/e2e/global-prefix.spec.ts @@ -1,11 +1,11 @@ import { INestApplication, RequestMethod } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; +import request from 'supertest'; import { AppModule, MIDDLEWARE_PARAM_VALUE, MIDDLEWARE_VALUE, -} from '../src/app.module'; +} from '../src/app.module.js'; describe('Global prefix', () => { let server; diff --git a/integration/nest-application/global-prefix/src/app.module.ts b/integration/nest-application/global-prefix/src/app.module.ts index 61a1b0407f..d8156b42ad 100644 --- a/integration/nest-application/global-prefix/src/app.module.ts +++ b/integration/nest-application/global-prefix/src/app.module.ts @@ -1,5 +1,5 @@ import { MiddlewareConsumer, Module, RequestMethod } from '@nestjs/common'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; export const MIDDLEWARE_VALUE = 'middleware'; export const MIDDLEWARE_PARAM_VALUE = 'middleware_param'; diff --git a/integration/nest-application/global-prefix/tsconfig.json b/integration/nest-application/global-prefix/tsconfig.json index 259f2b525f..70ddc5bc78 100644 --- a/integration/nest-application/global-prefix/tsconfig.json +++ b/integration/nest-application/global-prefix/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "outDir": "./dist", diff --git a/integration/nest-application/listen/e2e/express.spec.ts b/integration/nest-application/listen/e2e/express.spec.ts index b209fa0c3f..bff4727f59 100644 --- a/integration/nest-application/listen/e2e/express.spec.ts +++ b/integration/nest-application/listen/e2e/express.spec.ts @@ -2,8 +2,8 @@ import { INestApplication } from '@nestjs/common'; import { ExpressAdapter } from '@nestjs/platform-express'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import * as express from 'express'; -import { AppModule } from '../src/app.module'; +import express from 'express'; +import { AppModule } from '../src/app.module.js'; describe('Listen (Express Application)', () => { let testModule: TestingModule; diff --git a/integration/nest-application/listen/e2e/fastify.spec.ts b/integration/nest-application/listen/e2e/fastify.spec.ts index ba267c8ddb..617cccb3dd 100644 --- a/integration/nest-application/listen/e2e/fastify.spec.ts +++ b/integration/nest-application/listen/e2e/fastify.spec.ts @@ -2,7 +2,7 @@ import { INestApplication } from '@nestjs/common'; import { FastifyAdapter } from '@nestjs/platform-fastify'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Listen (Fastify Application)', () => { let testModule: TestingModule; diff --git a/integration/nest-application/listen/src/app.controller.ts b/integration/nest-application/listen/src/app.controller.ts index 8d4f6eb02c..e1f9543ab9 100644 --- a/integration/nest-application/listen/src/app.controller.ts +++ b/integration/nest-application/listen/src/app.controller.ts @@ -1,5 +1,5 @@ import { Controller, Get } from '@nestjs/common'; -import { AppService } from './app.service'; +import { AppService } from './app.service.js'; @Controller() export class AppController { diff --git a/integration/nest-application/listen/src/app.module.ts b/integration/nest-application/listen/src/app.module.ts index 7845d045f8..7abec95862 100644 --- a/integration/nest-application/listen/src/app.module.ts +++ b/integration/nest-application/listen/src/app.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; +import { AppController } from './app.controller.js'; +import { AppService } from './app.service.js'; @Module({ controllers: [AppController], diff --git a/integration/nest-application/listen/tsconfig.json b/integration/nest-application/listen/tsconfig.json index 259f2b525f..70ddc5bc78 100644 --- a/integration/nest-application/listen/tsconfig.json +++ b/integration/nest-application/listen/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "outDir": "./dist", diff --git a/integration/nest-application/raw-body/e2e/express.spec.ts b/integration/nest-application/raw-body/e2e/express.spec.ts index 762ecd92c6..e37605f611 100644 --- a/integration/nest-application/raw-body/e2e/express.spec.ts +++ b/integration/nest-application/raw-body/e2e/express.spec.ts @@ -1,8 +1,8 @@ import { NestExpressApplication } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { ExpressModule } from '../src/express.module'; +import request from 'supertest'; +import { ExpressModule } from '../src/express.module.js'; describe('Raw body (Express Application)', () => { let app: NestExpressApplication; diff --git a/integration/nest-application/raw-body/e2e/fastify.spec.ts b/integration/nest-application/raw-body/e2e/fastify.spec.ts index 03db3f137d..d496fb7418 100644 --- a/integration/nest-application/raw-body/e2e/fastify.spec.ts +++ b/integration/nest-application/raw-body/e2e/fastify.spec.ts @@ -4,7 +4,7 @@ import { } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { FastifyModule } from '../src/fastify.module'; +import { FastifyModule } from '../src/fastify.module.js'; describe('Raw body (Fastify Application)', () => { let app: NestFastifyApplication; diff --git a/integration/nest-application/raw-body/src/express.module.ts b/integration/nest-application/raw-body/src/express.module.ts index 5ddb714263..4c08bd9aad 100644 --- a/integration/nest-application/raw-body/src/express.module.ts +++ b/integration/nest-application/raw-body/src/express.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { ExpressController } from './express.controller'; +import { ExpressController } from './express.controller.js'; @Module({ controllers: [ExpressController], diff --git a/integration/nest-application/raw-body/src/fastify.module.ts b/integration/nest-application/raw-body/src/fastify.module.ts index 462f427ba4..e803b8fb4a 100644 --- a/integration/nest-application/raw-body/src/fastify.module.ts +++ b/integration/nest-application/raw-body/src/fastify.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { FastifyController } from './fastify.controller'; +import { FastifyController } from './fastify.controller.js'; @Module({ controllers: [FastifyController], diff --git a/integration/nest-application/raw-body/tsconfig.json b/integration/nest-application/raw-body/tsconfig.json index 259f2b525f..70ddc5bc78 100644 --- a/integration/nest-application/raw-body/tsconfig.json +++ b/integration/nest-application/raw-body/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "outDir": "./dist", diff --git a/integration/nest-application/sse/e2e/express.spec.ts b/integration/nest-application/sse/e2e/express.spec.ts index 483e1a75a6..686207be45 100644 --- a/integration/nest-application/sse/e2e/express.spec.ts +++ b/integration/nest-application/sse/e2e/express.spec.ts @@ -2,7 +2,7 @@ import { NestExpressApplication } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { EventSource } from 'eventsource'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Sse (Express Application)', () => { let app: NestExpressApplication; diff --git a/integration/nest-application/sse/e2e/fastify.spec.ts b/integration/nest-application/sse/e2e/fastify.spec.ts index 98823c5f06..547d47de7e 100644 --- a/integration/nest-application/sse/e2e/fastify.spec.ts +++ b/integration/nest-application/sse/e2e/fastify.spec.ts @@ -5,7 +5,7 @@ import { import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { EventSource } from 'eventsource'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Sse (Fastify Application)', () => { let app: NestFastifyApplication; diff --git a/integration/nest-application/sse/src/app.module.ts b/integration/nest-application/sse/src/app.module.ts index 848d4aaa7f..52bb569b5d 100644 --- a/integration/nest-application/sse/src/app.module.ts +++ b/integration/nest-application/sse/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; @Module({ controllers: [AppController], diff --git a/integration/nest-application/sse/tsconfig.json b/integration/nest-application/sse/tsconfig.json index 23ca656104..bc22f1d523 100644 --- a/integration/nest-application/sse/tsconfig.json +++ b/integration/nest-application/sse/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "lib": ["dom"], diff --git a/integration/nest-application/use-body-parser/e2e/express.spec.ts b/integration/nest-application/use-body-parser/e2e/express.spec.ts index 06e77086d7..7e76c2dfc0 100644 --- a/integration/nest-application/use-body-parser/e2e/express.spec.ts +++ b/integration/nest-application/use-body-parser/e2e/express.spec.ts @@ -2,8 +2,8 @@ import { NestExpressApplication } from '@nestjs/platform-express'; import { Test } from '@nestjs/testing'; import { OptionsUrlencoded } from 'body-parser'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Body Parser (Express Application)', () => { const moduleFixture = Test.createTestingModule({ diff --git a/integration/nest-application/use-body-parser/e2e/fastify.spec.ts b/integration/nest-application/use-body-parser/e2e/fastify.spec.ts index 26a9240d2f..aa22519383 100644 --- a/integration/nest-application/use-body-parser/e2e/fastify.spec.ts +++ b/integration/nest-application/use-body-parser/e2e/fastify.spec.ts @@ -4,7 +4,7 @@ import { } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; describe('Body Parser (Fastify Application)', () => { const moduleFixture = Test.createTestingModule({ diff --git a/integration/nest-application/use-body-parser/src/app.module.ts b/integration/nest-application/use-body-parser/src/app.module.ts index 848d4aaa7f..52bb569b5d 100644 --- a/integration/nest-application/use-body-parser/src/app.module.ts +++ b/integration/nest-application/use-body-parser/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; +import { AppController } from './app.controller.js'; @Module({ controllers: [AppController], diff --git a/integration/nest-application/use-body-parser/tsconfig.json b/integration/nest-application/use-body-parser/tsconfig.json index 999ab15b77..f1ce595d79 100644 --- a/integration/nest-application/use-body-parser/tsconfig.json +++ b/integration/nest-application/use-body-parser/tsconfig.json @@ -6,9 +6,10 @@ "removeComments": true, "lib": ["dom"], "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "outDir": "./dist" diff --git a/integration/repl/e2e/repl-process.spec.ts b/integration/repl/e2e/repl-process.spec.ts index 020439ef90..4a65da2c61 100644 --- a/integration/repl/e2e/repl-process.spec.ts +++ b/integration/repl/e2e/repl-process.spec.ts @@ -37,7 +37,9 @@ describe('REPL process', function () { beforeEach(async function () { this.timeout(15000); - replProcess = spawn('ts-node', ['../src/repl.ts'], { cwd: __dirname }); + replProcess = spawn('ts-node', ['../src/repl.ts'], { + cwd: import.meta.dirname, + }); await waitForReplToStart(replProcess, PROMPT); }); diff --git a/integration/repl/e2e/repl.spec.ts b/integration/repl/e2e/repl.spec.ts index 8ddcc673d4..b2ad521b12 100644 --- a/integration/repl/e2e/repl.spec.ts +++ b/integration/repl/e2e/repl.spec.ts @@ -1,4 +1,4 @@ -import { clc } from '@nestjs/common/utils/cli-colors.util'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; import { repl } from '@nestjs/core'; import { DebugReplFn, @@ -7,11 +7,11 @@ import { MethodsReplFn, ResolveReplFn, SelectReplFn, -} from '@nestjs/core/repl/native-functions'; -import { ReplContext } from '@nestjs/core/repl/repl-context'; +} from '@nestjs/core/repl/native-functions.js'; +import { ReplContext } from '@nestjs/core/repl/repl-context.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; const PROMPT = '\u001b[1G\u001b[0J> \u001b[3G'; diff --git a/integration/repl/src/app.module.ts b/integration/repl/src/app.module.ts index 867c4b1b3c..7980cc54c1 100644 --- a/integration/repl/src/app.module.ts +++ b/integration/repl/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { UsersModule } from './users/users.module'; +import { UsersModule } from './users/users.module.js'; @Module({ imports: [UsersModule], diff --git a/integration/repl/src/database/database.module.ts b/integration/repl/src/database/database.module.ts index 33d392d6a7..c0b6e23ac3 100644 --- a/integration/repl/src/database/database.module.ts +++ b/integration/repl/src/database/database.module.ts @@ -1,5 +1,5 @@ import { DynamicModule, Module } from '@nestjs/common'; -import { DatabaseConnection } from './database.connection'; +import { DatabaseConnection } from './database.connection.js'; @Module({}) export class DatabaseModule { diff --git a/integration/repl/src/long-living-app.module.ts b/integration/repl/src/long-living-app.module.ts index dd574a5062..05cef9d527 100644 --- a/integration/repl/src/long-living-app.module.ts +++ b/integration/repl/src/long-living-app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { DatabaseModule } from './database/database.module'; +import { DatabaseModule } from './database/database.module.js'; @Module({ imports: [DatabaseModule.forRoot()], diff --git a/integration/repl/src/repl.ts b/integration/repl/src/repl.ts index b9b339517e..5359a38c1a 100644 --- a/integration/repl/src/repl.ts +++ b/integration/repl/src/repl.ts @@ -1,5 +1,5 @@ import { repl } from '@nestjs/core'; -import { LongLivingAppModule } from './long-living-app.module'; +import { LongLivingAppModule } from './long-living-app.module.js'; async function bootstrap() { await repl(LongLivingAppModule); diff --git a/integration/repl/src/users/dto/update-user.dto.ts b/integration/repl/src/users/dto/update-user.dto.ts index dfd37fb1ed..912cdc528b 100644 --- a/integration/repl/src/users/dto/update-user.dto.ts +++ b/integration/repl/src/users/dto/update-user.dto.ts @@ -1,4 +1,4 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateUserDto } from './create-user.dto'; +import { CreateUserDto } from './create-user.dto.js'; export class UpdateUserDto extends PartialType(CreateUserDto) {} diff --git a/integration/repl/src/users/users.controller.ts b/integration/repl/src/users/users.controller.ts index d5db3a65e5..435e5438ee 100644 --- a/integration/repl/src/users/users.controller.ts +++ b/integration/repl/src/users/users.controller.ts @@ -7,9 +7,9 @@ import { Param, Delete, } from '@nestjs/common'; -import { UsersService } from './users.service'; -import { CreateUserDto } from './dto/create-user.dto'; -import { UpdateUserDto } from './dto/update-user.dto'; +import { UsersService } from './users.service.js'; +import { CreateUserDto } from './dto/create-user.dto.js'; +import { UpdateUserDto } from './dto/update-user.dto.js'; @Controller('users') export class UsersController { diff --git a/integration/repl/src/users/users.module.ts b/integration/repl/src/users/users.module.ts index 86d73a3f0e..57d0aeb82e 100644 --- a/integration/repl/src/users/users.module.ts +++ b/integration/repl/src/users/users.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { UsersController } from './users.controller'; -import { UsersRepository } from './users.repository'; -import { UsersService } from './users.service'; +import { UsersController } from './users.controller.js'; +import { UsersRepository } from './users.repository.js'; +import { UsersService } from './users.service.js'; @Module({ controllers: [UsersController], diff --git a/integration/repl/src/users/users.service.ts b/integration/repl/src/users/users.service.ts index ab3191152d..d2bfc6a7dd 100644 --- a/integration/repl/src/users/users.service.ts +++ b/integration/repl/src/users/users.service.ts @@ -1,7 +1,7 @@ import { Inject, Injectable } from '@nestjs/common'; -import { CreateUserDto } from './dto/create-user.dto'; -import { UpdateUserDto } from './dto/update-user.dto'; -import { UsersRepository } from './users.repository'; +import { CreateUserDto } from './dto/create-user.dto.js'; +import { UpdateUserDto } from './dto/update-user.dto.js'; +import { UsersRepository } from './users.repository.js'; @Injectable() export class UsersService { diff --git a/integration/repl/tsconfig.json b/integration/repl/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/repl/tsconfig.json +++ b/integration/repl/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/scopes/e2e/circular-request-scope.spec.ts b/integration/scopes/e2e/circular-request-scope.spec.ts index 72489dc60e..3ec819a811 100644 --- a/integration/scopes/e2e/circular-request-scope.spec.ts +++ b/integration/scopes/e2e/circular-request-scope.spec.ts @@ -1,11 +1,11 @@ import { INestApplication, Scope } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { HelloController } from '../src/circular-hello/hello.controller'; -import { HelloModule } from '../src/circular-hello/hello.module'; -import { HelloService } from '../src/circular-hello/hello.service'; -import { UsersService } from '../src/circular-hello/users/users.service'; +import request from 'supertest'; +import { HelloController } from '../src/circular-hello/hello.controller.js'; +import { HelloModule } from '../src/circular-hello/hello.module.js'; +import { HelloService } from '../src/circular-hello/hello.service.js'; +import { UsersService } from '../src/circular-hello/users/users.service.js'; class Meta { static COUNTER = 0; diff --git a/integration/scopes/e2e/circular-transient-scope.spec.ts b/integration/scopes/e2e/circular-transient-scope.spec.ts index acfaecbe4f..95644f65f2 100644 --- a/integration/scopes/e2e/circular-transient-scope.spec.ts +++ b/integration/scopes/e2e/circular-transient-scope.spec.ts @@ -1,11 +1,11 @@ import { INestApplication, Scope } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { HelloController } from '../src/circular-transient/hello.controller'; -import { HelloModule } from '../src/circular-transient/hello.module'; -import { HelloService } from '../src/circular-transient/hello.service'; -import { UsersService } from '../src/circular-transient/users/users.service'; +import request from 'supertest'; +import { HelloController } from '../src/circular-transient/hello.controller.js'; +import { HelloModule } from '../src/circular-transient/hello.module.js'; +import { HelloService } from '../src/circular-transient/hello.service.js'; +import { UsersService } from '../src/circular-transient/users/users.service.js'; class Meta { static COUNTER = 0; diff --git a/integration/scopes/e2e/durable-providers.spec.ts b/integration/scopes/e2e/durable-providers.spec.ts index 39573b4e13..e673414311 100644 --- a/integration/scopes/e2e/durable-providers.spec.ts +++ b/integration/scopes/e2e/durable-providers.spec.ts @@ -2,9 +2,9 @@ import { INestApplication } from '@nestjs/common'; import { ContextIdFactory } from '@nestjs/core'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { DurableContextIdStrategy } from '../src/durable/durable-context-id.strategy'; -import { DurableModule } from '../src/durable/durable.module'; +import request from 'supertest'; +import { DurableContextIdStrategy } from '../src/durable/durable-context-id.strategy.js'; +import { DurableModule } from '../src/durable/durable.module.js'; describe('Durable providers', () => { let server: any; diff --git a/integration/scopes/e2e/inject-inquirer.spec.ts b/integration/scopes/e2e/inject-inquirer.spec.ts index f95d5ee078..f503ad64ff 100644 --- a/integration/scopes/e2e/inject-inquirer.spec.ts +++ b/integration/scopes/e2e/inject-inquirer.spec.ts @@ -2,8 +2,8 @@ import { INestApplication, Logger } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import * as request from 'supertest'; -import { HelloModule } from '../src/inject-inquirer/hello.module'; +import request from 'supertest'; +import { HelloModule } from '../src/inject-inquirer/hello.module.js'; describe('Inject Inquirer', () => { let logger: Record; diff --git a/integration/scopes/e2e/msvc-request-scope.spec.ts b/integration/scopes/e2e/msvc-request-scope.spec.ts index 6ce1a6a5ac..9618b74197 100644 --- a/integration/scopes/e2e/msvc-request-scope.spec.ts +++ b/integration/scopes/e2e/msvc-request-scope.spec.ts @@ -2,12 +2,12 @@ import { INestApplication } from '@nestjs/common'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { Guard } from '../src/msvc/guards/request-scoped.guard'; -import { HelloController } from '../src/msvc/hello.controller'; -import { HelloModule } from '../src/msvc/hello.module'; -import { Interceptor } from '../src/msvc/interceptors/logging.interceptor'; -import { UsersService } from '../src/msvc/users/users.service'; +import request from 'supertest'; +import { Guard } from '../src/msvc/guards/request-scoped.guard.js'; +import { HelloController } from '../src/msvc/hello.controller.js'; +import { HelloModule } from '../src/msvc/hello.module.js'; +import { Interceptor } from '../src/msvc/interceptors/logging.interceptor.js'; +import { UsersService } from '../src/msvc/users/users.service.js'; class Meta { static COUNTER = 0; diff --git a/integration/scopes/e2e/request-modules-scope.spec.ts b/integration/scopes/e2e/request-modules-scope.spec.ts index 0a7d54ada9..d7ccff96f2 100644 --- a/integration/scopes/e2e/request-modules-scope.spec.ts +++ b/integration/scopes/e2e/request-modules-scope.spec.ts @@ -1,9 +1,9 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { RequestChainModule } from '../src/request-chain/request-chain.module'; -import { RequestChainService } from '../src/request-chain/request-chain.service'; +import request from 'supertest'; +import { RequestChainModule } from '../src/request-chain/request-chain.module.js'; +import { RequestChainService } from '../src/request-chain/request-chain.service.js'; describe('Request scope (modules propagation)', () => { let server; diff --git a/integration/scopes/e2e/request-scope.spec.ts b/integration/scopes/e2e/request-scope.spec.ts index 7b146972b4..615fbcdfc6 100644 --- a/integration/scopes/e2e/request-scope.spec.ts +++ b/integration/scopes/e2e/request-scope.spec.ts @@ -1,13 +1,13 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { Guard } from '../src/hello/guards/request-scoped.guard'; -import { HelloController } from '../src/hello/hello.controller'; -import { HelloModule } from '../src/hello/hello.module'; -import { Interceptor } from '../src/hello/interceptors/logging.interceptor'; -import { UserByIdPipe } from '../src/hello/users/user-by-id.pipe'; -import { UsersService } from '../src/hello/users/users.service'; +import request from 'supertest'; +import { Guard } from '../src/hello/guards/request-scoped.guard.js'; +import { HelloController } from '../src/hello/hello.controller.js'; +import { HelloModule } from '../src/hello/hello.module.js'; +import { Interceptor } from '../src/hello/interceptors/logging.interceptor.js'; +import { UserByIdPipe } from '../src/hello/users/user-by-id.pipe.js'; +import { UsersService } from '../src/hello/users/users.service.js'; class Meta { static COUNTER = 0; diff --git a/integration/scopes/e2e/resolve-scoped.spec.ts b/integration/scopes/e2e/resolve-scoped.spec.ts index 138c8fe853..c02b8f5410 100644 --- a/integration/scopes/e2e/resolve-scoped.spec.ts +++ b/integration/scopes/e2e/resolve-scoped.spec.ts @@ -1,9 +1,9 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import { loggerProvider } from '../src/resolve-scoped/logger.provider'; -import { LoggerService } from '../src/resolve-scoped/logger.service'; -import { RequestLoggerService } from '../src/resolve-scoped/request-logger.service'; +import { loggerProvider } from '../src/resolve-scoped/logger.provider.js'; +import { LoggerService } from '../src/resolve-scoped/logger.service.js'; +import { RequestLoggerService } from '../src/resolve-scoped/request-logger.service.js'; describe('Resolve method', () => { let app: INestApplication; diff --git a/integration/scopes/e2e/transient-scope.spec.ts b/integration/scopes/e2e/transient-scope.spec.ts index ce6a403cb5..dfefe5eb04 100644 --- a/integration/scopes/e2e/transient-scope.spec.ts +++ b/integration/scopes/e2e/transient-scope.spec.ts @@ -1,14 +1,14 @@ import { INestApplication, Injectable, Scope } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as request from 'supertest'; -import { NestedTransientModule } from '../src/nested-transient/nested-transient.module'; -import { Guard } from '../src/transient/guards/request-scoped.guard'; -import { HelloController } from '../src/transient/hello.controller'; -import { HelloModule } from '../src/transient/hello.module'; -import { Interceptor } from '../src/transient/interceptors/logging.interceptor'; -import { UserByIdPipe } from '../src/transient/users/user-by-id.pipe'; -import { UsersService } from '../src/transient/users/users.service'; +import request from 'supertest'; +import { NestedTransientModule } from '../src/nested-transient/nested-transient.module.js'; +import { Guard } from '../src/transient/guards/request-scoped.guard.js'; +import { HelloController } from '../src/transient/hello.controller.js'; +import { HelloModule } from '../src/transient/hello.module.js'; +import { Interceptor } from '../src/transient/interceptors/logging.interceptor.js'; +import { UserByIdPipe } from '../src/transient/users/user-by-id.pipe.js'; +import { UsersService } from '../src/transient/users/users.service.js'; class Meta { static COUNTER = 0; diff --git a/integration/scopes/src/app.module.ts b/integration/scopes/src/app.module.ts index 02a11788bd..48bdbf4a6d 100644 --- a/integration/scopes/src/app.module.ts +++ b/integration/scopes/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { HelloModule } from './hello/hello.module'; +import { HelloModule } from './hello/hello.module.js'; @Module({ imports: [HelloModule.forRoot({ provide: 'META', useValue: true })], diff --git a/integration/scopes/src/circular-hello/hello.controller.ts b/integration/scopes/src/circular-hello/hello.controller.ts index 5b4af7bf21..94d20f26cf 100644 --- a/integration/scopes/src/circular-hello/hello.controller.ts +++ b/integration/scopes/src/circular-hello/hello.controller.ts @@ -5,11 +5,11 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { HelloService } from './hello.service'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; -import { UsersService } from './users/users.service'; +import { Guard } from './guards/request-scoped.guard.js'; +import { HelloService } from './hello.service.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; +import { UsersService } from './users/users.service.js'; @Controller('hello') export class HelloController { diff --git a/integration/scopes/src/circular-hello/hello.module.ts b/integration/scopes/src/circular-hello/hello.module.ts index 1a0d0bbfd7..c0dc1995c6 100644 --- a/integration/scopes/src/circular-hello/hello.module.ts +++ b/integration/scopes/src/circular-hello/hello.module.ts @@ -1,7 +1,7 @@ import { DynamicModule, Inject, Module, Provider } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController], diff --git a/integration/scopes/src/circular-hello/users/user-by-id.pipe.ts b/integration/scopes/src/circular-hello/users/user-by-id.pipe.ts index 2b81cb6fbb..b63f924559 100644 --- a/integration/scopes/src/circular-hello/users/user-by-id.pipe.ts +++ b/integration/scopes/src/circular-hello/users/user-by-id.pipe.ts @@ -1,5 +1,5 @@ import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common'; -import { UsersService } from './users.service'; +import { UsersService } from './users.service.js'; @Injectable() export class UserByIdPipe implements PipeTransform { diff --git a/integration/scopes/src/circular-transient/hello.controller.ts b/integration/scopes/src/circular-transient/hello.controller.ts index 5b4af7bf21..94d20f26cf 100644 --- a/integration/scopes/src/circular-transient/hello.controller.ts +++ b/integration/scopes/src/circular-transient/hello.controller.ts @@ -5,11 +5,11 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { HelloService } from './hello.service'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; -import { UsersService } from './users/users.service'; +import { Guard } from './guards/request-scoped.guard.js'; +import { HelloService } from './hello.service.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; +import { UsersService } from './users/users.service.js'; @Controller('hello') export class HelloController { diff --git a/integration/scopes/src/circular-transient/hello.module.ts b/integration/scopes/src/circular-transient/hello.module.ts index 6cdc92c5f2..db10f01059 100644 --- a/integration/scopes/src/circular-transient/hello.module.ts +++ b/integration/scopes/src/circular-transient/hello.module.ts @@ -1,8 +1,8 @@ import { DynamicModule, Inject, Module, Provider } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { TestController } from './test.controller'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { TestController } from './test.controller.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController, TestController], diff --git a/integration/scopes/src/circular-transient/test.controller.ts b/integration/scopes/src/circular-transient/test.controller.ts index 572ea13a90..ac1002a789 100644 --- a/integration/scopes/src/circular-transient/test.controller.ts +++ b/integration/scopes/src/circular-transient/test.controller.ts @@ -5,9 +5,9 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; +import { Guard } from './guards/request-scoped.guard.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; @Controller('test') export class TestController { diff --git a/integration/scopes/src/durable/durable.controller.ts b/integration/scopes/src/durable/durable.controller.ts index fbc33c12c9..47e88f19ef 100644 --- a/integration/scopes/src/durable/durable.controller.ts +++ b/integration/scopes/src/durable/durable.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get } from '@nestjs/common'; -import { DurableService } from './durable.service'; -import { NonDurableService } from './non-durable.service'; +import { DurableService } from './durable.service.js'; +import { NonDurableService } from './non-durable.service.js'; @Controller('durable') export class DurableController { diff --git a/integration/scopes/src/durable/durable.guard.ts b/integration/scopes/src/durable/durable.guard.ts index 8868af8096..9d0923f386 100644 --- a/integration/scopes/src/durable/durable.guard.ts +++ b/integration/scopes/src/durable/durable.guard.ts @@ -4,7 +4,7 @@ import { Injectable, Scope, } from '@nestjs/common'; -import { DurableService } from './durable.service'; +import { DurableService } from './durable.service.js'; @Injectable({ scope: Scope.REQUEST, durable: true }) export class DurableGuard implements CanActivate { diff --git a/integration/scopes/src/durable/durable.module.ts b/integration/scopes/src/durable/durable.module.ts index dc91cded63..6eb7d1831b 100644 --- a/integration/scopes/src/durable/durable.module.ts +++ b/integration/scopes/src/durable/durable.module.ts @@ -1,9 +1,9 @@ import { Module } from '@nestjs/common'; import { APP_GUARD } from '@nestjs/core'; -import { DurableController } from './durable.controller'; -import { DurableGuard } from './durable.guard'; -import { DurableService } from './durable.service'; -import { NonDurableService } from './non-durable.service'; +import { DurableController } from './durable.controller.js'; +import { DurableGuard } from './durable.guard.js'; +import { DurableService } from './durable.service.js'; +import { NonDurableService } from './non-durable.service.js'; @Module({ controllers: [DurableController], diff --git a/integration/scopes/src/durable/durable.service.ts b/integration/scopes/src/durable/durable.service.ts index 15fcafe966..102078df5f 100644 --- a/integration/scopes/src/durable/durable.service.ts +++ b/integration/scopes/src/durable/durable.service.ts @@ -5,7 +5,7 @@ import { Scope, } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; -import { TenantContext } from './durable-context-id.strategy'; +import { TenantContext } from './durable-context-id.strategy.js'; @Injectable({ scope: Scope.REQUEST, durable: true }) export class DurableService { diff --git a/integration/scopes/src/durable/non-durable.service.ts b/integration/scopes/src/durable/non-durable.service.ts index add0629411..203bc76b94 100644 --- a/integration/scopes/src/durable/non-durable.service.ts +++ b/integration/scopes/src/durable/non-durable.service.ts @@ -1,6 +1,6 @@ import { Inject, Injectable, Scope } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; -import { TenantContext } from './durable-context-id.strategy'; +import { TenantContext } from './durable-context-id.strategy.js'; @Injectable() export class NonDurableService { diff --git a/integration/scopes/src/hello/hello.controller.ts b/integration/scopes/src/hello/hello.controller.ts index 5b4af7bf21..94d20f26cf 100644 --- a/integration/scopes/src/hello/hello.controller.ts +++ b/integration/scopes/src/hello/hello.controller.ts @@ -5,11 +5,11 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { HelloService } from './hello.service'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; -import { UsersService } from './users/users.service'; +import { Guard } from './guards/request-scoped.guard.js'; +import { HelloService } from './hello.service.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; +import { UsersService } from './users/users.service.js'; @Controller('hello') export class HelloController { diff --git a/integration/scopes/src/hello/hello.module.ts b/integration/scopes/src/hello/hello.module.ts index 8bc5b72bcd..cfdfbe1bec 100644 --- a/integration/scopes/src/hello/hello.module.ts +++ b/integration/scopes/src/hello/hello.module.ts @@ -1,7 +1,7 @@ import { DynamicModule, Inject, Module, Provider, Scope } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController], diff --git a/integration/scopes/src/hello/users/user-by-id.pipe.ts b/integration/scopes/src/hello/users/user-by-id.pipe.ts index 73d859bfaf..d4960af8d1 100644 --- a/integration/scopes/src/hello/users/user-by-id.pipe.ts +++ b/integration/scopes/src/hello/users/user-by-id.pipe.ts @@ -4,7 +4,7 @@ import { Injectable, PipeTransform, } from '@nestjs/common'; -import { UsersService } from './users.service'; +import { UsersService } from './users.service.js'; @Injectable() export class UserByIdPipe implements PipeTransform { diff --git a/integration/scopes/src/inject-inquirer/hello-request/hello-request.service.ts b/integration/scopes/src/inject-inquirer/hello-request/hello-request.service.ts index 4d63696b21..55a296162b 100644 --- a/integration/scopes/src/inject-inquirer/hello-request/hello-request.service.ts +++ b/integration/scopes/src/inject-inquirer/hello-request/hello-request.service.ts @@ -1,6 +1,6 @@ import { Inject, Injectable, Scope } from '@nestjs/common'; import { INQUIRER } from '@nestjs/core'; -import { RequestLogger } from './request-logger.service'; +import { RequestLogger } from './request-logger.service.js'; @Injectable({ scope: Scope.REQUEST }) export class HelloRequestService { diff --git a/integration/scopes/src/inject-inquirer/hello-transient/hello-transient.service.ts b/integration/scopes/src/inject-inquirer/hello-transient/hello-transient.service.ts index 257544361f..704cfcc6d8 100644 --- a/integration/scopes/src/inject-inquirer/hello-transient/hello-transient.service.ts +++ b/integration/scopes/src/inject-inquirer/hello-transient/hello-transient.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { TransientLogger } from './transient-logger.service'; +import { TransientLogger } from './transient-logger.service.js'; @Injectable() export class HelloTransientService { diff --git a/integration/scopes/src/inject-inquirer/hello.controller.ts b/integration/scopes/src/inject-inquirer/hello.controller.ts index b74a950851..ce6216b1dc 100644 --- a/integration/scopes/src/inject-inquirer/hello.controller.ts +++ b/integration/scopes/src/inject-inquirer/hello.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Scope } from '@nestjs/common'; -import { HelloRequestService } from './hello-request/hello-request.service'; -import { HelloTransientService } from './hello-transient/hello-transient.service'; +import { HelloRequestService } from './hello-request/hello-request.service.js'; +import { HelloTransientService } from './hello-transient/hello-transient.service.js'; @Controller({ path: 'hello', diff --git a/integration/scopes/src/inject-inquirer/hello.module.ts b/integration/scopes/src/inject-inquirer/hello.module.ts index fc7b640e2b..ecd4f3a572 100644 --- a/integration/scopes/src/inject-inquirer/hello.module.ts +++ b/integration/scopes/src/inject-inquirer/hello.module.ts @@ -1,9 +1,9 @@ import { Module, Logger } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloRequestService } from './hello-request/hello-request.service'; -import { HelloTransientService } from './hello-transient/hello-transient.service'; -import { RequestLogger } from './hello-request/request-logger.service'; -import { TransientLogger } from './hello-transient/transient-logger.service'; +import { HelloController } from './hello.controller.js'; +import { HelloRequestService } from './hello-request/hello-request.service.js'; +import { HelloTransientService } from './hello-transient/hello-transient.service.js'; +import { RequestLogger } from './hello-request/request-logger.service.js'; +import { TransientLogger } from './hello-transient/transient-logger.service.js'; @Module({ controllers: [HelloController], diff --git a/integration/scopes/src/main.ts b/integration/scopes/src/main.ts index cdecc1bb68..dbca439014 100644 --- a/integration/scopes/src/main.ts +++ b/integration/scopes/src/main.ts @@ -1,5 +1,5 @@ import { NestFactory } from '@nestjs/core'; -import { ApplicationModule } from './app.module'; +import { ApplicationModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(ApplicationModule); diff --git a/integration/scopes/src/msvc/hello.controller.ts b/integration/scopes/src/msvc/hello.controller.ts index 0db4d6f6ca..3926661849 100644 --- a/integration/scopes/src/msvc/hello.controller.ts +++ b/integration/scopes/src/msvc/hello.controller.ts @@ -1,9 +1,9 @@ import { Controller, UseGuards, UseInterceptors } from '@nestjs/common'; import { MessagePattern } from '@nestjs/microservices'; -import { Guard } from './guards/request-scoped.guard'; -import { HelloService } from './hello.service'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UsersService } from './users/users.service'; +import { Guard } from './guards/request-scoped.guard.js'; +import { HelloService } from './hello.service.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UsersService } from './users/users.service.js'; @Controller() export class HelloController { diff --git a/integration/scopes/src/msvc/hello.module.ts b/integration/scopes/src/msvc/hello.module.ts index 41d80066ab..3ee48e7ca9 100644 --- a/integration/scopes/src/msvc/hello.module.ts +++ b/integration/scopes/src/msvc/hello.module.ts @@ -1,8 +1,8 @@ import { DynamicModule, Inject, Module, Provider, Scope } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { HttpController } from './http.controller'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { HttpController } from './http.controller.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController, HttpController], diff --git a/integration/scopes/src/nested-transient/first-request.service.ts b/integration/scopes/src/nested-transient/first-request.service.ts index 9b1a349bac..9c0ac5f5cb 100644 --- a/integration/scopes/src/nested-transient/first-request.service.ts +++ b/integration/scopes/src/nested-transient/first-request.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { TransientLoggerService } from './transient-logger.service'; +import { TransientLoggerService } from './transient-logger.service.js'; @Injectable({ scope: Scope.REQUEST }) export class FirstRequestService { diff --git a/integration/scopes/src/nested-transient/nested-transient.controller.ts b/integration/scopes/src/nested-transient/nested-transient.controller.ts index 6ae21d297c..95dbc5d39c 100644 --- a/integration/scopes/src/nested-transient/nested-transient.controller.ts +++ b/integration/scopes/src/nested-transient/nested-transient.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Scope } from '@nestjs/common'; -import { FirstRequestService } from './first-request.service'; -import { SecondRequestService } from './second-request.service'; +import { FirstRequestService } from './first-request.service.js'; +import { SecondRequestService } from './second-request.service.js'; @Controller({ path: 'nested-transient', scope: Scope.REQUEST }) export class NestedTransientController { diff --git a/integration/scopes/src/nested-transient/nested-transient.module.ts b/integration/scopes/src/nested-transient/nested-transient.module.ts index 6502400586..8363a70657 100644 --- a/integration/scopes/src/nested-transient/nested-transient.module.ts +++ b/integration/scopes/src/nested-transient/nested-transient.module.ts @@ -1,9 +1,9 @@ import { Module } from '@nestjs/common'; -import { NestedTransientController } from './nested-transient.controller'; -import { FirstRequestService } from './first-request.service'; -import { SecondRequestService } from './second-request.service'; -import { TransientLoggerService } from './transient-logger.service'; -import { NestedTransientService } from './nested-transient.service'; +import { NestedTransientController } from './nested-transient.controller.js'; +import { FirstRequestService } from './first-request.service.js'; +import { SecondRequestService } from './second-request.service.js'; +import { TransientLoggerService } from './transient-logger.service.js'; +import { NestedTransientService } from './nested-transient.service.js'; @Module({ controllers: [NestedTransientController], diff --git a/integration/scopes/src/nested-transient/second-request.service.ts b/integration/scopes/src/nested-transient/second-request.service.ts index 0406877c7a..dcae4c8ac0 100644 --- a/integration/scopes/src/nested-transient/second-request.service.ts +++ b/integration/scopes/src/nested-transient/second-request.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { TransientLoggerService } from './transient-logger.service'; +import { TransientLoggerService } from './transient-logger.service.js'; @Injectable({ scope: Scope.REQUEST }) export class SecondRequestService { diff --git a/integration/scopes/src/nested-transient/transient-logger.service.ts b/integration/scopes/src/nested-transient/transient-logger.service.ts index cb25159fd5..716b1856db 100644 --- a/integration/scopes/src/nested-transient/transient-logger.service.ts +++ b/integration/scopes/src/nested-transient/transient-logger.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { NestedTransientService } from './nested-transient.service'; +import { NestedTransientService } from './nested-transient.service.js'; @Injectable({ scope: Scope.TRANSIENT }) export class TransientLoggerService { diff --git a/integration/scopes/src/request-chain/helper/helper.module.ts b/integration/scopes/src/request-chain/helper/helper.module.ts index 1c154ea44c..fa31021e32 100644 --- a/integration/scopes/src/request-chain/helper/helper.module.ts +++ b/integration/scopes/src/request-chain/helper/helper.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { HelperService } from './helper.service'; +import { HelperService } from './helper.service.js'; @Module({ providers: [HelperService], diff --git a/integration/scopes/src/request-chain/interceptors/logging.interceptor.ts b/integration/scopes/src/request-chain/interceptors/logging.interceptor.ts index 008a699937..17c83c7e82 100644 --- a/integration/scopes/src/request-chain/interceptors/logging.interceptor.ts +++ b/integration/scopes/src/request-chain/interceptors/logging.interceptor.ts @@ -5,7 +5,7 @@ import { NestInterceptor, } from '@nestjs/common'; import { Observable } from 'rxjs'; -import { HelperService } from '../helper/helper.service'; +import { HelperService } from '../helper/helper.service.js'; @Injectable() export class LoggingInterceptor implements NestInterceptor { diff --git a/integration/scopes/src/request-chain/request-chain.controller.ts b/integration/scopes/src/request-chain/request-chain.controller.ts index 03813352dd..f6b22f1cae 100644 --- a/integration/scopes/src/request-chain/request-chain.controller.ts +++ b/integration/scopes/src/request-chain/request-chain.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, UseInterceptors } from '@nestjs/common'; -import { LoggingInterceptor } from './interceptors/logging.interceptor'; -import { RequestChainService } from './request-chain.service'; +import { LoggingInterceptor } from './interceptors/logging.interceptor.js'; +import { RequestChainService } from './request-chain.service.js'; @Controller('hello') export class RequestChainController { diff --git a/integration/scopes/src/request-chain/request-chain.module.ts b/integration/scopes/src/request-chain/request-chain.module.ts index eba8f451d9..e5478eef78 100644 --- a/integration/scopes/src/request-chain/request-chain.module.ts +++ b/integration/scopes/src/request-chain/request-chain.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { HelperModule } from './helper/helper.module'; -import { RequestChainController } from './request-chain.controller'; -import { RequestChainService } from './request-chain.service'; +import { HelperModule } from './helper/helper.module.js'; +import { RequestChainController } from './request-chain.controller.js'; +import { RequestChainService } from './request-chain.service.js'; @Module({ imports: [HelperModule], diff --git a/integration/scopes/src/request-chain/request-chain.service.ts b/integration/scopes/src/request-chain/request-chain.service.ts index c8c00068d3..bf526aa498 100644 --- a/integration/scopes/src/request-chain/request-chain.service.ts +++ b/integration/scopes/src/request-chain/request-chain.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { HelperService } from './helper/helper.service'; +import { HelperService } from './helper/helper.service.js'; @Injectable() export class RequestChainService { diff --git a/integration/scopes/src/resolve-scoped/logger.service.ts b/integration/scopes/src/resolve-scoped/logger.service.ts index 36f8b034bd..e53dab371d 100644 --- a/integration/scopes/src/resolve-scoped/logger.service.ts +++ b/integration/scopes/src/resolve-scoped/logger.service.ts @@ -1,5 +1,5 @@ import { Inject, Injectable, Scope } from '@nestjs/common'; -import { LOGGER_PROVIDER } from './logger.provider'; +import { LOGGER_PROVIDER } from './logger.provider.js'; @Injectable({ scope: Scope.TRANSIENT }) export class LoggerService { diff --git a/integration/scopes/src/resolve-scoped/request-logger.service.ts b/integration/scopes/src/resolve-scoped/request-logger.service.ts index 84b59563b4..f226be06ed 100644 --- a/integration/scopes/src/resolve-scoped/request-logger.service.ts +++ b/integration/scopes/src/resolve-scoped/request-logger.service.ts @@ -1,5 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; -import { LoggerService } from './logger.service'; +import { LoggerService } from './logger.service.js'; @Injectable({ scope: Scope.REQUEST }) export class RequestLoggerService { diff --git a/integration/scopes/src/transient/hello.controller.ts b/integration/scopes/src/transient/hello.controller.ts index 5b4af7bf21..94d20f26cf 100644 --- a/integration/scopes/src/transient/hello.controller.ts +++ b/integration/scopes/src/transient/hello.controller.ts @@ -5,11 +5,11 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { HelloService } from './hello.service'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; -import { UsersService } from './users/users.service'; +import { Guard } from './guards/request-scoped.guard.js'; +import { HelloService } from './hello.service.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; +import { UsersService } from './users/users.service.js'; @Controller('hello') export class HelloController { diff --git a/integration/scopes/src/transient/hello.module.ts b/integration/scopes/src/transient/hello.module.ts index 6cdc92c5f2..db10f01059 100644 --- a/integration/scopes/src/transient/hello.module.ts +++ b/integration/scopes/src/transient/hello.module.ts @@ -1,8 +1,8 @@ import { DynamicModule, Inject, Module, Provider } from '@nestjs/common'; -import { HelloController } from './hello.controller'; -import { HelloService } from './hello.service'; -import { TestController } from './test.controller'; -import { UsersService } from './users/users.service'; +import { HelloController } from './hello.controller.js'; +import { HelloService } from './hello.service.js'; +import { TestController } from './test.controller.js'; +import { UsersService } from './users/users.service.js'; @Module({ controllers: [HelloController, TestController], diff --git a/integration/scopes/src/transient/test.controller.ts b/integration/scopes/src/transient/test.controller.ts index 572ea13a90..ac1002a789 100644 --- a/integration/scopes/src/transient/test.controller.ts +++ b/integration/scopes/src/transient/test.controller.ts @@ -5,9 +5,9 @@ import { UseGuards, UseInterceptors, } from '@nestjs/common'; -import { Guard } from './guards/request-scoped.guard'; -import { Interceptor } from './interceptors/logging.interceptor'; -import { UserByIdPipe } from './users/user-by-id.pipe'; +import { Guard } from './guards/request-scoped.guard.js'; +import { Interceptor } from './interceptors/logging.interceptor.js'; +import { UserByIdPipe } from './users/user-by-id.pipe.js'; @Controller('test') export class TestController { diff --git a/integration/scopes/tsconfig.json b/integration/scopes/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/scopes/tsconfig.json +++ b/integration/scopes/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/send-files/e2e/express.spec.ts b/integration/send-files/e2e/express.spec.ts index c0b8e56619..936bd94324 100644 --- a/integration/send-files/e2e/express.spec.ts +++ b/integration/send-files/e2e/express.spec.ts @@ -6,13 +6,13 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { readFileSync } from 'fs'; import { join } from 'path'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; import { getHttpBaseOptions, sendCanceledHttpRequest, sendHttpRequest, -} from './utils'; +} from './utils.js'; const readme = readFileSync(join(process.cwd(), 'Readme.md')); const readmeString = readme.toString(); diff --git a/integration/send-files/e2e/fastify.spec.ts b/integration/send-files/e2e/fastify.spec.ts index cec8736346..0f81c4e66b 100644 --- a/integration/send-files/e2e/fastify.spec.ts +++ b/integration/send-files/e2e/fastify.spec.ts @@ -6,7 +6,7 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { readFileSync } from 'fs'; import { join } from 'path'; -import { AppModule } from '../src/app.module'; +import { AppModule } from '../src/app.module.js'; const readme = readFileSync(join(process.cwd(), 'Readme.md')); const readmeString = readme.toString(); diff --git a/integration/send-files/src/app.controller.ts b/integration/send-files/src/app.controller.ts index 69fa20ec06..0c3cd078c7 100644 --- a/integration/send-files/src/app.controller.ts +++ b/integration/send-files/src/app.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, StreamableFile } from '@nestjs/common'; import { Observable } from 'rxjs'; -import { AppService } from './app.service'; -import { NonFile } from './non-file'; +import { AppService } from './app.service.js'; +import { NonFile } from './non-file.js'; @Controller() export class AppController { diff --git a/integration/send-files/src/app.module.ts b/integration/send-files/src/app.module.ts index 7845d045f8..7abec95862 100644 --- a/integration/send-files/src/app.module.ts +++ b/integration/send-files/src/app.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; +import { AppController } from './app.controller.js'; +import { AppService } from './app.service.js'; @Module({ controllers: [AppController], diff --git a/integration/send-files/src/app.service.ts b/integration/send-files/src/app.service.ts index e5f920c48b..6d24d80106 100644 --- a/integration/send-files/src/app.service.ts +++ b/integration/send-files/src/app.service.ts @@ -4,7 +4,7 @@ import { createReadStream, readFileSync } from 'fs'; import { join } from 'path'; import { Observable, of } from 'rxjs'; import { Readable } from 'stream'; -import { NonFile } from './non-file'; +import { NonFile } from './non-file.js'; @Injectable() export class AppService { diff --git a/integration/send-files/tsconfig.json b/integration/send-files/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/send-files/tsconfig.json +++ b/integration/send-files/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/testing-module-override/circular-dependency/a.module.ts b/integration/testing-module-override/circular-dependency/a.module.ts index 6540ded32d..4060b4d1a4 100644 --- a/integration/testing-module-override/circular-dependency/a.module.ts +++ b/integration/testing-module-override/circular-dependency/a.module.ts @@ -1,5 +1,5 @@ import { Injectable, Module, forwardRef } from '@nestjs/common'; -import { BModule } from './b.module'; +import { BModule } from './b.module.js'; @Injectable() export class AProvider {} diff --git a/integration/testing-module-override/circular-dependency/b.module.ts b/integration/testing-module-override/circular-dependency/b.module.ts index 2f4d5baf6c..ce8252f346 100644 --- a/integration/testing-module-override/circular-dependency/b.module.ts +++ b/integration/testing-module-override/circular-dependency/b.module.ts @@ -1,5 +1,5 @@ import { Injectable, Module, forwardRef } from '@nestjs/common'; -import { AModule } from './a.module'; +import { AModule } from './a.module.js'; @Injectable() export class BProvider {} diff --git a/integration/testing-module-override/e2e/modules-override.spec.ts b/integration/testing-module-override/e2e/modules-override.spec.ts index 234767e182..95582690fb 100644 --- a/integration/testing-module-override/e2e/modules-override.spec.ts +++ b/integration/testing-module-override/e2e/modules-override.spec.ts @@ -9,8 +9,8 @@ import { import { LazyModuleLoader } from '@nestjs/core'; import { Test, TestingModule } from '@nestjs/testing'; import { expect } from 'chai'; -import { AModule, AProvider } from '../circular-dependency/a.module'; -import { BModule, BProvider } from '../circular-dependency/b.module'; +import { AModule, AProvider } from '../circular-dependency/a.module.js'; +import { BModule, BProvider } from '../circular-dependency/b.module.js'; describe('Modules overriding', () => { describe('Top-level module', () => { diff --git a/integration/testing-module-override/tsconfig.json b/integration/testing-module-override/tsconfig.json index c43c3d1b1b..9f02b6a38d 100644 --- a/integration/testing-module-override/tsconfig.json +++ b/integration/testing-module-override/tsconfig.json @@ -3,10 +3,11 @@ "module": "commonjs", "declaration": true, "removeComments": true, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/integration/typeorm/e2e/typeorm-async-class.spec.ts b/integration/typeorm/e2e/typeorm-async-class.spec.ts index d3ac3275dd..976831b4c1 100644 --- a/integration/typeorm/e2e/typeorm-async-class.spec.ts +++ b/integration/typeorm/e2e/typeorm-async-class.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncOptionsClassModule } from '../src/async-class-options.module'; +import request from 'supertest'; +import { AsyncOptionsClassModule } from '../src/async-class-options.module.js'; describe('TypeOrm (async configuration)', () => { let server; diff --git a/integration/typeorm/e2e/typeorm-async-existing.spec.ts b/integration/typeorm/e2e/typeorm-async-existing.spec.ts index bb1f9cc46a..78eb87d7b5 100644 --- a/integration/typeorm/e2e/typeorm-async-existing.spec.ts +++ b/integration/typeorm/e2e/typeorm-async-existing.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncOptionsExistingModule } from '../src/async-existing-options.module'; +import request from 'supertest'; +import { AsyncOptionsExistingModule } from '../src/async-existing-options.module.js'; describe('TypeOrm (async configuration)', () => { let server; diff --git a/integration/typeorm/e2e/typeorm-async-options.spec.ts b/integration/typeorm/e2e/typeorm-async-options.spec.ts index b506139797..ee6d8a0f9d 100644 --- a/integration/typeorm/e2e/typeorm-async-options.spec.ts +++ b/integration/typeorm/e2e/typeorm-async-options.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncOptionsFactoryModule } from '../src/async-options.module'; +import request from 'supertest'; +import { AsyncOptionsFactoryModule } from '../src/async-options.module.js'; describe('TypeOrm (async configuration)', () => { let server; diff --git a/integration/typeorm/e2e/typeorm-async.spec.ts b/integration/typeorm/e2e/typeorm-async.spec.ts index 13410d7988..ccb5ad3db9 100644 --- a/integration/typeorm/e2e/typeorm-async.spec.ts +++ b/integration/typeorm/e2e/typeorm-async.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AsyncApplicationModule } from '../src/app-async.module'; +import request from 'supertest'; +import { AsyncApplicationModule } from '../src/app-async.module.js'; describe('TypeOrm (async configuration)', () => { let server; diff --git a/integration/typeorm/e2e/typeorm.spec.ts b/integration/typeorm/e2e/typeorm.spec.ts index 9587139036..1e2fa712a1 100644 --- a/integration/typeorm/e2e/typeorm.spec.ts +++ b/integration/typeorm/e2e/typeorm.spec.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('TypeOrm', () => { let server; diff --git a/integration/typeorm/src/app-async.module.ts b/integration/typeorm/src/app-async.module.ts index 891d7a4562..b14174a7c6 100644 --- a/integration/typeorm/src/app-async.module.ts +++ b/integration/typeorm/src/app-async.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DatabaseModule } from './database.module'; -import { PhotoModule } from './photo/photo.module'; +import { DatabaseModule } from './database.module.js'; +import { PhotoModule } from './photo/photo.module.js'; @Module({ imports: [DatabaseModule.forRoot(), PhotoModule], diff --git a/integration/typeorm/src/app.module.ts b/integration/typeorm/src/app.module.ts index 36fc5b8356..342f44204d 100644 --- a/integration/typeorm/src/app.module.ts +++ b/integration/typeorm/src/app.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Photo } from './photo/photo.entity'; -import { PhotoModule } from './photo/photo.module'; +import { Photo } from './photo/photo.entity.js'; +import { PhotoModule } from './photo/photo.module.js'; @Module({ imports: [ diff --git a/integration/typeorm/src/async-class-options.module.ts b/integration/typeorm/src/async-class-options.module.ts index 37ed368653..334eca5323 100644 --- a/integration/typeorm/src/async-class-options.module.ts +++ b/integration/typeorm/src/async-class-options.module.ts @@ -4,8 +4,8 @@ import { TypeOrmModuleOptions, TypeOrmOptionsFactory, } from '@nestjs/typeorm'; -import { Photo } from './photo/photo.entity'; -import { PhotoModule } from './photo/photo.module'; +import { Photo } from './photo/photo.entity.js'; +import { PhotoModule } from './photo/photo.module.js'; class ConfigService implements TypeOrmOptionsFactory { createTypeOrmOptions(): TypeOrmModuleOptions { diff --git a/integration/typeorm/src/async-existing-options.module.ts b/integration/typeorm/src/async-existing-options.module.ts index 016c35406b..54e482710f 100644 --- a/integration/typeorm/src/async-existing-options.module.ts +++ b/integration/typeorm/src/async-existing-options.module.ts @@ -4,8 +4,8 @@ import { TypeOrmModuleOptions, TypeOrmOptionsFactory, } from '@nestjs/typeorm'; -import { Photo } from './photo/photo.entity'; -import { PhotoModule } from './photo/photo.module'; +import { Photo } from './photo/photo.entity.js'; +import { PhotoModule } from './photo/photo.module.js'; class ConfigService implements TypeOrmOptionsFactory { createTypeOrmOptions(): TypeOrmModuleOptions { diff --git a/integration/typeorm/src/async-options.module.ts b/integration/typeorm/src/async-options.module.ts index cda3a84d6c..ba10b8937a 100644 --- a/integration/typeorm/src/async-options.module.ts +++ b/integration/typeorm/src/async-options.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Photo } from './photo/photo.entity'; -import { PhotoModule } from './photo/photo.module'; +import { Photo } from './photo/photo.entity.js'; +import { PhotoModule } from './photo/photo.module.js'; @Module({ imports: [ diff --git a/integration/typeorm/src/database.module.ts b/integration/typeorm/src/database.module.ts index 74110f3f12..b0ac233f1f 100644 --- a/integration/typeorm/src/database.module.ts +++ b/integration/typeorm/src/database.module.ts @@ -1,6 +1,6 @@ import { DynamicModule, Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Photo } from './photo/photo.entity'; +import { Photo } from './photo/photo.entity.js'; @Module({}) export class DatabaseModule { diff --git a/integration/typeorm/src/main.ts b/integration/typeorm/src/main.ts index c7f4a18713..b96604fb84 100644 --- a/integration/typeorm/src/main.ts +++ b/integration/typeorm/src/main.ts @@ -1,5 +1,5 @@ import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; +import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(AppModule); diff --git a/integration/typeorm/src/photo/photo.controller.ts b/integration/typeorm/src/photo/photo.controller.ts index b693de7bb7..d137ed5792 100644 --- a/integration/typeorm/src/photo/photo.controller.ts +++ b/integration/typeorm/src/photo/photo.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Post } from '@nestjs/common'; -import { Photo } from './photo.entity'; -import { PhotoService } from './photo.service'; +import { Photo } from './photo.entity.js'; +import { PhotoService } from './photo.service.js'; @Controller('photo') export class PhotoController { diff --git a/integration/typeorm/src/photo/photo.module.ts b/integration/typeorm/src/photo/photo.module.ts index b82ece49c0..d122a7e5ef 100644 --- a/integration/typeorm/src/photo/photo.module.ts +++ b/integration/typeorm/src/photo/photo.module.ts @@ -1,8 +1,8 @@ import { Module } from '@nestjs/common'; -import { PhotoService } from './photo.service'; -import { PhotoController } from './photo.controller'; +import { PhotoService } from './photo.service.js'; +import { PhotoController } from './photo.controller.js'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Photo } from './photo.entity'; +import { Photo } from './photo.entity.js'; @Module({ imports: [TypeOrmModule.forFeature([Photo])], diff --git a/integration/typeorm/src/photo/photo.service.ts b/integration/typeorm/src/photo/photo.service.ts index bbe7b892a4..977706e679 100644 --- a/integration/typeorm/src/photo/photo.service.ts +++ b/integration/typeorm/src/photo/photo.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { Photo } from './photo.entity'; +import { Photo } from './photo.entity.js'; @Injectable() export class PhotoService { diff --git a/integration/typeorm/tsconfig.json b/integration/typeorm/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/typeorm/tsconfig.json +++ b/integration/typeorm/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/versioning/e2e/custom-versioning-fastify.spec.ts b/integration/versioning/e2e/custom-versioning-fastify.spec.ts index a428136a67..a0e2893cf7 100644 --- a/integration/versioning/e2e/custom-versioning-fastify.spec.ts +++ b/integration/versioning/e2e/custom-versioning-fastify.spec.ts @@ -5,8 +5,8 @@ import { } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; import { FastifyRequest } from 'fastify'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Custom Versioning (fastify)', () => { const extractor = (request: FastifyRequest): string | string[] => { diff --git a/integration/versioning/e2e/custom-versioning.spec.ts b/integration/versioning/e2e/custom-versioning.spec.ts index 73e56c41c2..91a1cd77e5 100644 --- a/integration/versioning/e2e/custom-versioning.spec.ts +++ b/integration/versioning/e2e/custom-versioning.spec.ts @@ -1,8 +1,8 @@ import { INestApplication, VersioningType } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { Request } from 'express'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Custom Versioning', () => { const extractor = (request: Request): string | string[] => { diff --git a/integration/versioning/e2e/default-versioning.spec.ts b/integration/versioning/e2e/default-versioning.spec.ts index d1b62e0ec3..43ae0a15ec 100644 --- a/integration/versioning/e2e/default-versioning.spec.ts +++ b/integration/versioning/e2e/default-versioning.spec.ts @@ -4,8 +4,8 @@ import { NestFastifyApplication, } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; /** * `.enableVersioning()` uses `VersioningType.URI` type by default diff --git a/integration/versioning/e2e/header-versioning-fastify.spec.ts b/integration/versioning/e2e/header-versioning-fastify.spec.ts index a79c203eee..2a8da94134 100644 --- a/integration/versioning/e2e/header-versioning-fastify.spec.ts +++ b/integration/versioning/e2e/header-versioning-fastify.spec.ts @@ -4,8 +4,8 @@ import { NestFastifyApplication, } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Header Versioning (fastify)', () => { let app: INestApplication; diff --git a/integration/versioning/e2e/header-versioning.spec.ts b/integration/versioning/e2e/header-versioning.spec.ts index 3be9341c96..9da5b7f43a 100644 --- a/integration/versioning/e2e/header-versioning.spec.ts +++ b/integration/versioning/e2e/header-versioning.spec.ts @@ -1,7 +1,7 @@ import { INestApplication, VersioningType } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Header Versioning', () => { let app: INestApplication; diff --git a/integration/versioning/e2e/media-type-versioning-fastify.spec.ts b/integration/versioning/e2e/media-type-versioning-fastify.spec.ts index 15cb16dfbe..e538e8c61c 100644 --- a/integration/versioning/e2e/media-type-versioning-fastify.spec.ts +++ b/integration/versioning/e2e/media-type-versioning-fastify.spec.ts @@ -4,8 +4,8 @@ import { NestFastifyApplication, } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Media Type Versioning (fastify)', () => { let app: INestApplication; diff --git a/integration/versioning/e2e/media-type-versioning.spec.ts b/integration/versioning/e2e/media-type-versioning.spec.ts index fd2b39f5d5..6565fa5b1f 100644 --- a/integration/versioning/e2e/media-type-versioning.spec.ts +++ b/integration/versioning/e2e/media-type-versioning.spec.ts @@ -1,7 +1,7 @@ import { INestApplication, VersioningType } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('Media Type Versioning', () => { let app: INestApplication; diff --git a/integration/versioning/e2e/uri-versioning-fastify.spec.ts b/integration/versioning/e2e/uri-versioning-fastify.spec.ts index 98b94dade5..ddef08c488 100644 --- a/integration/versioning/e2e/uri-versioning-fastify.spec.ts +++ b/integration/versioning/e2e/uri-versioning-fastify.spec.ts @@ -4,8 +4,8 @@ import { NestFastifyApplication, } from '@nestjs/platform-fastify'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('URI Versioning (fastify)', () => { let app: INestApplication; diff --git a/integration/versioning/e2e/uri-versioning.spec.ts b/integration/versioning/e2e/uri-versioning.spec.ts index 1bb178eafe..d25d922e58 100644 --- a/integration/versioning/e2e/uri-versioning.spec.ts +++ b/integration/versioning/e2e/uri-versioning.spec.ts @@ -1,7 +1,7 @@ import { INestApplication, VersioningType } from '@nestjs/common'; import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; +import request from 'supertest'; +import { AppModule } from '../src/app.module.js'; describe('URI Versioning', () => { let app: INestApplication; diff --git a/integration/versioning/src/app.module.ts b/integration/versioning/src/app.module.ts index d1483685af..109df94f8a 100644 --- a/integration/versioning/src/app.module.ts +++ b/integration/versioning/src/app.module.ts @@ -1,14 +1,14 @@ import { MiddlewareConsumer, Module } from '@nestjs/common'; -import { AppV1Controller } from './app-v1.controller'; -import { AppV2Controller } from './app-v2.controller'; -import { MiddlewareController } from './middleware.controller'; -import { MultipleMiddlewareVersionController } from './multiple-middleware.controller'; -import { MultipleVersionController } from './multiple.controller'; -import { VersionNeutralMiddlewareController } from './neutral-middleware.controller'; -import { VersionNeutralController } from './neutral.controller'; -import { NoVersioningController } from './no-versioning.controller'; -import { OverridePartialController } from './override-partial.controller'; -import { OverrideController } from './override.controller'; +import { AppV1Controller } from './app-v1.controller.js'; +import { AppV2Controller } from './app-v2.controller.js'; +import { MiddlewareController } from './middleware.controller.js'; +import { MultipleMiddlewareVersionController } from './multiple-middleware.controller.js'; +import { MultipleVersionController } from './multiple.controller.js'; +import { VersionNeutralMiddlewareController } from './neutral-middleware.controller.js'; +import { VersionNeutralController } from './neutral.controller.js'; +import { NoVersioningController } from './no-versioning.controller.js'; +import { OverridePartialController } from './override-partial.controller.js'; +import { OverrideController } from './override.controller.js'; @Module({ imports: [], diff --git a/integration/versioning/src/main.ts b/integration/versioning/src/main.ts index 1d316cac8f..91cba3b57a 100644 --- a/integration/versioning/src/main.ts +++ b/integration/versioning/src/main.ts @@ -1,6 +1,6 @@ import { VersioningType } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; +import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.create(AppModule); diff --git a/integration/versioning/tsconfig.json b/integration/versioning/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/versioning/tsconfig.json +++ b/integration/versioning/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/integration/websockets/e2e/error-gateway.spec.ts b/integration/websockets/e2e/error-gateway.spec.ts index 5e5335a00b..8668fbd01e 100644 --- a/integration/websockets/e2e/error-gateway.spec.ts +++ b/integration/websockets/e2e/error-gateway.spec.ts @@ -2,7 +2,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { io } from 'socket.io-client'; -import { ErrorGateway } from '../src/error.gateway'; +import { ErrorGateway } from '../src/error.gateway.js'; describe('ErrorGateway', () => { let app: INestApplication; diff --git a/integration/websockets/e2e/gateway-ack.spec.ts b/integration/websockets/e2e/gateway-ack.spec.ts index 6ae5658b59..9833af0102 100644 --- a/integration/websockets/e2e/gateway-ack.spec.ts +++ b/integration/websockets/e2e/gateway-ack.spec.ts @@ -2,7 +2,7 @@ import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { io } from 'socket.io-client'; -import { AckGateway } from '../src/ack.gateway'; +import { AckGateway } from '../src/ack.gateway.js'; async function createNestApp(...gateways): Promise { const testingModule = await Test.createTestingModule({ diff --git a/integration/websockets/e2e/gateway.spec.ts b/integration/websockets/e2e/gateway.spec.ts index 14aff034ab..493784bff7 100644 --- a/integration/websockets/e2e/gateway.spec.ts +++ b/integration/websockets/e2e/gateway.spec.ts @@ -3,10 +3,10 @@ import { Test } from '@nestjs/testing'; import { expect } from 'chai'; import { EventSource } from 'eventsource'; import { io } from 'socket.io-client'; -import { AppController as LongConnectionController } from '../../nest-application/sse/src/app.controller'; -import { ApplicationGateway } from '../src/app.gateway'; -import { NamespaceGateway } from '../src/namespace.gateway'; -import { ServerGateway } from '../src/server.gateway'; +import { AppController as LongConnectionController } from '../../nest-application/sse/src/app.controller.js'; +import { ApplicationGateway } from '../src/app.gateway.js'; +import { NamespaceGateway } from '../src/namespace.gateway.js'; +import { ServerGateway } from '../src/server.gateway.js'; async function createNestApp(...gateways): Promise { const testingModule = await Test.createTestingModule({ diff --git a/integration/websockets/e2e/ws-gateway.spec.ts b/integration/websockets/e2e/ws-gateway.spec.ts index 5a498ea915..654ae2547a 100644 --- a/integration/websockets/e2e/ws-gateway.spec.ts +++ b/integration/websockets/e2e/ws-gateway.spec.ts @@ -2,13 +2,13 @@ import { INestApplication } from '@nestjs/common'; import { WsAdapter } from '@nestjs/platform-ws'; import { Test } from '@nestjs/testing'; import { expect } from 'chai'; -import * as WebSocket from 'ws'; -import { ApplicationGateway } from '../src/app.gateway'; -import { CoreGateway } from '../src/core.gateway'; -import { ExamplePathGateway } from '../src/example-path.gateway'; -import { ServerGateway } from '../src/server.gateway'; -import { WsPathGateway } from '../src/ws-path.gateway'; -import { WsPathGateway2 } from '../src/ws-path2.gateway'; +import WebSocket from 'ws'; +import { ApplicationGateway } from '../src/app.gateway.js'; +import { CoreGateway } from '../src/core.gateway.js'; +import { ExamplePathGateway } from '../src/example-path.gateway.js'; +import { ServerGateway } from '../src/server.gateway.js'; +import { WsPathGateway } from '../src/ws-path.gateway.js'; +import { WsPathGateway2 } from '../src/ws-path2.gateway.js'; async function createNestApp(...gateways: any[]): Promise { const testingModule = await Test.createTestingModule({ diff --git a/integration/websockets/src/app.gateway.ts b/integration/websockets/src/app.gateway.ts index 30ea2ee22e..c456da1b88 100644 --- a/integration/websockets/src/app.gateway.ts +++ b/integration/websockets/src/app.gateway.ts @@ -5,9 +5,9 @@ import { WebSocketGateway, WsException, } from '@nestjs/websockets'; -import { RequestInterceptor } from './request.interceptor'; +import { RequestInterceptor } from './request.interceptor.js'; import { throwError } from 'rxjs'; -import { RequestFilter } from './request.filter'; +import { RequestFilter } from './request.filter.js'; @WebSocketGateway(8080) export class ApplicationGateway { diff --git a/integration/websockets/src/app.module.ts b/integration/websockets/src/app.module.ts index 5858472b66..4982d663d1 100644 --- a/integration/websockets/src/app.module.ts +++ b/integration/websockets/src/app.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { ApplicationGateway } from './app.gateway'; +import { ApplicationGateway } from './app.gateway.js'; @Module({ providers: [ApplicationGateway], diff --git a/integration/websockets/src/server.gateway.ts b/integration/websockets/src/server.gateway.ts index 6955657cac..6839c2aa64 100644 --- a/integration/websockets/src/server.gateway.ts +++ b/integration/websockets/src/server.gateway.ts @@ -1,7 +1,7 @@ import { OnApplicationShutdown, UseInterceptors } from '@nestjs/common'; import { SubscribeMessage, WebSocketGateway } from '@nestjs/websockets'; import * as Sinon from 'sinon'; -import { RequestInterceptor } from './request.interceptor'; +import { RequestInterceptor } from './request.interceptor.js'; @WebSocketGateway() export class ServerGateway implements OnApplicationShutdown { diff --git a/integration/websockets/tsconfig.json b/integration/websockets/tsconfig.json index 4a0f01e0ec..d662537ae2 100644 --- a/integration/websockets/tsconfig.json +++ b/integration/websockets/tsconfig.json @@ -5,9 +5,10 @@ "noImplicitAny": false, "removeComments": true, "noLib": false, + "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": true, "strictNullChecks": true, diff --git a/package-lock.json b/package-lock.json index a84d5b643d..d002d360c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,9 @@ "version": "11.1.10", "hasInstallScript": true, "license": "MIT", + "workspaces": [ + "packages/*" + ], "dependencies": { "@nuxt/opencollective": "0.4.1", "ansis": "4.2.0", @@ -117,6 +120,7 @@ "supertest": "7.2.2", "ts-morph": "27.0.2", "ts-node": "10.9.2", + "tsx": "4.19.2", "typeorm": "0.3.28", "typescript": "5.9.3", "typescript-eslint": "8.54.0", @@ -170,7 +174,6 @@ "integrity": "sha512-E0/2C5Rqp7bWCjaDh4NzYuEPDZ+dltTf2c0FI6GCKJA6GBetVferX3h1//1rS4+NxD36wrJsGGJK+xyT/M3ysg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@apollo/cache-control-types": "^1.0.3", "@apollo/server-gateway-interface": "^2.0.0", @@ -1024,6 +1027,414 @@ "tslib": "^2.4.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -1307,7 +1718,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", - "dev": true, "funding": [ { "type": "github", @@ -1335,7 +1745,6 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.2.0.tgz", "integrity": "sha512-LbLHBuSAdGdSFZYTLVA3+Ch2t+sA6nq3Ejc6XLAKiQ6ViS2qFnvicpj0htsx03FyYeLs04HfRNBsz/a8SvbcUw==", - "dev": true, "funding": [ { "type": "github", @@ -1372,14 +1781,12 @@ "node_modules/@fastify/error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.0.0.tgz", - "integrity": "sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==", - "dev": true + "integrity": "sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==" }, "node_modules/@fastify/fast-json-stringify-compiler": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.2.tgz", "integrity": "sha512-YdR7gqlLg1xZAQa+SX4sMNzQHY5pC54fu9oC5aYSUqBhyn6fkLkrdtKlpVdCNPlwuUuXA1PjFTEmvMF6ZVXVGw==", - "dev": true, "funding": [ { "type": "github", @@ -1398,7 +1805,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.2.tgz", "integrity": "sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==", - "dev": true, "funding": [ { "type": "github", @@ -1418,8 +1824,7 @@ "node_modules/@fastify/forwarded": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.0.tgz", - "integrity": "sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==", - "dev": true + "integrity": "sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==" }, "node_modules/@fastify/merge-json-schemas": { "version": "0.2.1", @@ -1506,7 +1911,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz", "integrity": "sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==", - "dev": true, "dependencies": { "@fastify/forwarded": "^3.0.0", "ipaddr.js": "^2.1.0" @@ -1516,7 +1920,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true, "engines": { "node": ">= 10" } @@ -3294,80 +3697,12 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", - "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "file-type": "21.3.0", - "iterare": "1.2.1", - "load-esm": "1.0.3", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } + "resolved": "packages/common", + "link": true }, "node_modules/@nestjs/core": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", - "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } + "resolved": "packages/core", + "link": true }, "node_modules/@nestjs/graphql": { "version": "13.2.4", @@ -3375,7 +3710,6 @@ "integrity": "sha512-UXtsY4o1gsSG8tlY2HI3NuWyW15eOSG7IX1nG92T5/VtsEsafhtYOnc0H9Z7zFzUn0tPBCcRte1NgVNEIgAAdw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@graphql-tools/merge": "9.1.7", "@graphql-tools/schema": "10.0.31", @@ -3437,6 +3771,10 @@ } } }, + "node_modules/@nestjs/microservices": { + "resolved": "packages/microservices", + "link": true + }, "node_modules/@nestjs/mongoose": { "version": "11.0.4", "resolved": "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-11.0.4.tgz", @@ -3450,6 +3788,26 @@ "rxjs": "^7.0.0" } }, + "node_modules/@nestjs/platform-express": { + "resolved": "packages/platform-express", + "link": true + }, + "node_modules/@nestjs/platform-fastify": { + "resolved": "packages/platform-fastify", + "link": true + }, + "node_modules/@nestjs/platform-socket.io": { + "resolved": "packages/platform-socket.io", + "link": true + }, + "node_modules/@nestjs/platform-ws": { + "resolved": "packages/platform-ws", + "link": true + }, + "node_modules/@nestjs/testing": { + "resolved": "packages/testing", + "link": true + }, "node_modules/@nestjs/typeorm": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", @@ -3464,6 +3822,10 @@ "typeorm": "^0.3.0" } }, + "node_modules/@nestjs/websockets": { + "resolved": "packages/websockets", + "link": true + }, "node_modules/@noble/hashes": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", @@ -4627,7 +4989,6 @@ "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -4800,7 +5161,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", - "dev": true, "license": "MIT" }, "node_modules/@pkgjs/parseargs": { @@ -4909,7 +5269,6 @@ "integrity": "sha512-JXmM4XCoso6C75Mr3lhKA3eNxSzkYi3nCzxDIKY+YOszYsJjuKbFgVtguVPbLMOttN4iu2fXoc2BGhdnYhIOxA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cluster-key-slot": "1.1.2" }, @@ -5649,7 +6008,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -5864,7 +6222,6 @@ "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", @@ -6268,8 +6625,7 @@ "node_modules/abstract-logging": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", - "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", - "dev": true + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" }, "node_modules/accepts": { "version": "1.3.8", @@ -6289,7 +6645,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6449,7 +6804,6 @@ "integrity": "sha512-jwSftI4QjS3mizvnSnOrPGYiUnm1vI2OP1iXeOUz5pb74Ua0nbf6nPyyTzuiCLEE3fMpaJORXh2K/TQ08H5xGA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "buffer-more-ints": "~1.0.0", "url-parse": "~1.5.10" @@ -6601,8 +6955,7 @@ "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", - "dev": true + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, "node_modules/append-transform": { "version": "1.0.0", @@ -6871,7 +7224,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -6896,7 +7248,6 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", - "dev": true, "dependencies": { "@fastify/error": "^4.0.0", "fastq": "^1.17.1" @@ -7388,8 +7739,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-more-ints": { "version": "1.0.0", @@ -7402,7 +7752,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, "dependencies": { "streamsearch": "^1.1.0" }, @@ -7739,7 +8088,6 @@ "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -7865,8 +8213,7 @@ "node_modules/class-transformer": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", - "peer": true + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" }, "node_modules/class-utils": { "version": "0.3.6", @@ -7900,7 +8247,6 @@ "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.3.tgz", "integrity": "sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA==", "license": "MIT", - "peer": true, "dependencies": { "@types/validator": "^13.15.3", "libphonenumber-js": "^1.11.1", @@ -8337,7 +8683,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, "engines": [ "node >= 6.0" ], @@ -8353,7 +8698,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -8368,7 +8712,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -9027,7 +9370,6 @@ "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -9476,7 +9818,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "dev": true, "engines": { "node": ">=18" } @@ -9540,7 +9881,6 @@ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -10590,6 +10930,46 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -10619,7 +10999,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -10680,7 +11059,6 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -11472,8 +11850,7 @@ "node_modules/fast-decode-uri-component": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", - "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", - "dev": true + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -11553,7 +11930,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", - "dev": true, "dependencies": { "fast-decode-uri-component": "^1.0.1" } @@ -11605,7 +11981,6 @@ "version": "5.7.4", "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", - "dev": true, "funding": [ { "type": "github", @@ -11639,7 +12014,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", - "dev": true, "funding": [ { "type": "github", @@ -11656,7 +12030,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "dev": true, "funding": [ { "type": "github", @@ -11673,7 +12046,6 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -11686,7 +12058,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -11906,7 +12277,6 @@ "version": "9.4.0", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -12570,6 +12940,19 @@ "node": ">= 0.4" } }, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -13219,7 +13602,6 @@ "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -17917,7 +18299,6 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", - "dev": true, "funding": [ { "type": "github", @@ -18681,7 +19062,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -18862,7 +19242,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19069,7 +19448,6 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, "dependencies": { "minimist": "^1.2.6" }, @@ -19379,7 +19757,6 @@ "integrity": "sha512-ZrtgRsJKtW3od36TVXtAnrNHOO3rqhsqfVut6IzyWyJeLLeLTqW66qej/0qB37GZd5jL06nHfAceTikkfnSqbA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "kareem": "3.0.0", "mongodb": "~7.0", @@ -19726,7 +20103,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", - "dev": true, "license": "MIT", "dependencies": { "append-field": "^1.0.0", @@ -20602,7 +20978,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@napi-rs/wasm-runtime": "0.2.4", "@yarnpkg/lockfile": "^1.1.0", @@ -21464,7 +21839,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", - "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" @@ -22307,7 +22681,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz", "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", - "dev": true, "license": "MIT", "dependencies": { "@pinojs/redact": "^0.4.0", @@ -22330,7 +22703,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", - "dev": true, "license": "MIT", "dependencies": { "split2": "^4.0.0" @@ -22340,14 +22712,12 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", - "dev": true, "license": "MIT" }, "node_modules/pino/node_modules/process-warning": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "dev": true, "funding": [ { "type": "github", @@ -22516,7 +22886,6 @@ "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -22596,8 +22965,7 @@ "node_modules/process-warning": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", - "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", - "dev": true + "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==" }, "node_modules/proggy": { "version": "3.0.0", @@ -22832,7 +23200,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "dev": true, "license": "MIT" }, "node_modules/randomatic": { @@ -23060,7 +23427,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -23099,7 +23465,6 @@ "integrity": "sha512-0/Y+7IEiTgVGPrLFKy8oAEArSyEJkU0zvgV5xyi9NzNQ+SLZmyFbUsWIbgPcd4UdUh00opXGKlXJwMmsis5Byw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@redis/bloom": "5.10.0", "@redis/client": "5.10.0", @@ -23135,8 +23500,7 @@ "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "peer": true + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" }, "node_modules/regex-cache": { "version": "0.4.4", @@ -23405,6 +23769,16 @@ "node": ">= 10.13.0" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -23472,7 +23846,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -23491,7 +23864,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -23613,7 +23985,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -23651,7 +24022,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", - "dev": true, "funding": [ { "type": "github", @@ -23671,7 +24041,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -23686,7 +24055,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", - "dev": true, "funding": [ { "type": "github", @@ -23824,8 +24192,7 @@ "node_modules/set-cookie-parser": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "dev": true + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" }, "node_modules/set-function-length": { "version": "1.2.2", @@ -24510,7 +24877,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", - "dev": true, "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" @@ -24686,7 +25052,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, "engines": { "node": ">= 10.x" } @@ -24892,7 +25257,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, "engines": { "node": ">=10.0.0" } @@ -25384,7 +25748,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", - "dev": true, "license": "MIT", "dependencies": { "real-require": "^0.2.0" @@ -25614,7 +25977,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", - "dev": true, "engines": { "node": ">=12" } @@ -25719,7 +26081,6 @@ "integrity": "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@ts-morph/common": "~0.28.1", "code-block-writer": "^13.0.3" @@ -25800,6 +26161,26 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, + "node_modules/tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/tuf-js": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", @@ -25889,7 +26270,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -25916,8 +26296,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typeorm": { "version": "0.3.28", @@ -25925,7 +26304,6 @@ "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@sqltools/formatter": "^1.2.5", "ansis": "^4.2.0", @@ -26155,7 +26533,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -26450,8 +26827,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "13.0.0", @@ -27040,9 +27416,7 @@ "version": "8.19.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -27089,7 +27463,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "engines": { "node": ">=0.4" } @@ -27218,6 +27591,287 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "packages/common": { + "name": "@nestjs/common", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "file-type": "21.3.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "packages/core": { + "name": "@nestjs/core", + "version": "11.1.13", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "devDependencies": { + "@nestjs/common": "11.1.13" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "packages/microservices": { + "name": "@nestjs/microservices", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.8.1" + }, + "devDependencies": { + "@nestjs/common": "11.1.13", + "@nestjs/core": "11.1.13" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@grpc/grpc-js": "*", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "amqp-connection-manager": "*", + "amqplib": "*", + "cache-manager": "*", + "ioredis": "*", + "kafkajs": "*", + "mqtt": "*", + "nats": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@grpc/grpc-js": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + }, + "amqp-connection-manager": { + "optional": true + }, + "amqplib": { + "optional": true + }, + "cache-manager": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "kafkajs": { + "optional": true + }, + "mqtt": { + "optional": true + }, + "nats": { + "optional": true + } + } + }, + "packages/platform-express": { + "name": "@nestjs/platform-express", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "cors": "2.8.6", + "express": "5.2.1", + "multer": "2.0.2", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "devDependencies": { + "@nestjs/common": "11.1.13", + "@nestjs/core": "11.1.13" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "packages/platform-fastify": { + "name": "@nestjs/platform-fastify", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "@fastify/cors": "11.2.0", + "@fastify/formbody": "8.0.2", + "fast-querystring": "1.1.2", + "fastify": "5.7.4", + "fastify-plugin": "5.1.0", + "find-my-way": "9.4.0", + "light-my-request": "6.6.0", + "path-to-regexp": "8.3.0", + "reusify": "1.1.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@fastify/static": "^8.0.0 || ^9.0.0", + "@fastify/view": "^10.0.0 || ^11.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "@fastify/view": { + "optional": true + } + } + }, + "packages/platform-socket.io": { + "name": "@nestjs/platform-socket.io", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "socket.io": "4.8.3", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "rxjs": "^7.1.0" + } + }, + "packages/platform-ws": { + "name": "@nestjs/platform-ws", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1", + "ws": "8.19.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "rxjs": "^7.1.0" + } + }, + "packages/testing": { + "name": "@nestjs/testing", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "packages/websockets": { + "name": "@nestjs/websockets", + "version": "11.1.13", + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "object-hash": "3.0.0", + "tslib": "2.8.1" + }, + "devDependencies": { + "@nestjs/common": "11.1.13", + "@nestjs/core": "11.1.13" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/platform-socket.io": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/platform-socket.io": { + "optional": true + } + } } } } diff --git a/package.json b/package.json index 975e7a9292..2396af1b05 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,10 @@ "url": "https://opencollective.com/nest" }, "license": "MIT", + "type": "module", + "workspaces": [ + "packages/*" + ], "author": "Kamil Mysliwiec", "scripts": { "build": "tsc -b -v packages", @@ -32,7 +36,7 @@ "test:dev": "mocha -w --watch-files \"packages\" packages/**/*.spec.ts", "pretest:cov": "npm run clean", "test:cov": "nyc mocha packages/**/*.spec.ts --reporter spec", - "test:integration": "mocha --reporter-option maxDiffSize=0 \"integration/*/{,!(node_modules)/**/}/*.spec.ts\"", + "test:integration": "mocha --reporter-option maxDiffSize=0 --ignore 'integration/graphql-*/**' --ignore 'integration/mongoose/**' --ignore 'integration/typeorm/**' --ignore 'integration/inspector/**' --ignore 'integration/repl/**' \"integration/*/{,!(node_modules)/**/}/*.spec.ts\"", "test:docker:up": "docker-compose -f integration/docker-compose.yml up -d", "test:docker:down": "docker-compose -f integration/docker-compose.yml down", "lint": "concurrently 'npm run lint:packages' 'npm run lint:integration' 'npm run lint:spec'", @@ -166,6 +170,7 @@ "supertest": "7.2.2", "ts-morph": "27.0.2", "ts-node": "10.9.2", + "tsx": "4.19.2", "typeorm": "0.3.28", "typescript": "5.9.3", "typescript-eslint": "8.54.0", @@ -221,7 +226,7 @@ ".ts" ], "require": [ - "ts-node/register" + "tsx" ], "reporter": [ "text-summary", @@ -232,11 +237,12 @@ }, "mocha": { "require": [ - "ts-node/register", - "tsconfig-paths/register", "node_modules/reflect-metadata/Reflect.js", "hooks/mocha-init-hook.ts" ], + "node-option": [ + "import=./hooks/ts-node-register.mjs" + ], "exit": true } } diff --git a/packages/common/decorators/core/catch.decorator.ts b/packages/common/decorators/core/catch.decorator.ts index cd3cdb161f..cd306e916d 100644 --- a/packages/common/decorators/core/catch.decorator.ts +++ b/packages/common/decorators/core/catch.decorator.ts @@ -1,5 +1,5 @@ -import { CATCH_WATERMARK, FILTER_CATCH_EXCEPTIONS } from '../../constants'; -import { Type, Abstract } from '../../interfaces'; +import { CATCH_WATERMARK, FILTER_CATCH_EXCEPTIONS } from '../../constants.js'; +import { Type, Abstract } from '../../interfaces/index.js'; /** * Decorator that marks a class as a Nest exception filter. An exception filter diff --git a/packages/common/decorators/core/controller.decorator.ts b/packages/common/decorators/core/controller.decorator.ts index b89dd6454f..222924460a 100644 --- a/packages/common/decorators/core/controller.decorator.ts +++ b/packages/common/decorators/core/controller.decorator.ts @@ -4,9 +4,9 @@ import { PATH_METADATA, SCOPE_OPTIONS_METADATA, VERSION_METADATA, -} from '../../constants'; -import { ScopeOptions, VersionOptions } from '../../interfaces'; -import { isString, isUndefined } from '../../utils/shared.utils'; +} from '../../constants.js'; +import { ScopeOptions, VersionOptions } from '../../interfaces/index.js'; +import { isString, isUndefined } from '../../utils/shared.utils.js'; /** * Interface defining options that can be passed to `@Controller()` decorator diff --git a/packages/common/decorators/core/dependencies.decorator.ts b/packages/common/decorators/core/dependencies.decorator.ts index c08a33a283..b86ede5967 100644 --- a/packages/common/decorators/core/dependencies.decorator.ts +++ b/packages/common/decorators/core/dependencies.decorator.ts @@ -1,4 +1,4 @@ -import { PARAMTYPES_METADATA } from '../../constants'; +import { PARAMTYPES_METADATA } from '../../constants.js'; export function flatten = any>( arr: T, diff --git a/packages/common/decorators/core/exception-filters.decorator.ts b/packages/common/decorators/core/exception-filters.decorator.ts index 27bc387b9b..5faca3886b 100644 --- a/packages/common/decorators/core/exception-filters.decorator.ts +++ b/packages/common/decorators/core/exception-filters.decorator.ts @@ -1,8 +1,8 @@ -import { EXCEPTION_FILTERS_METADATA } from '../../constants'; -import { ExceptionFilter } from '../../index'; -import { extendArrayMetadata } from '../../utils/extend-metadata.util'; -import { isFunction } from '../../utils/shared.utils'; -import { validateEach } from '../../utils/validate-each.util'; +import { EXCEPTION_FILTERS_METADATA } from '../../constants.js'; +import { ExceptionFilter } from '../../index.js'; +import { extendArrayMetadata } from '../../utils/extend-metadata.util.js'; +import { isFunction } from '../../utils/shared.utils.js'; +import { validateEach } from '../../utils/validate-each.util.js'; /** * Decorator that binds exception filters to the scope of the controller or diff --git a/packages/common/decorators/core/index.ts b/packages/common/decorators/core/index.ts index c68c7744ff..df92e2d080 100644 --- a/packages/common/decorators/core/index.ts +++ b/packages/common/decorators/core/index.ts @@ -1,14 +1,14 @@ -export * from './bind.decorator'; -export * from './catch.decorator'; -export * from './controller.decorator'; -export * from './dependencies.decorator'; -export * from './exception-filters.decorator'; -export * from './inject.decorator'; -export * from './injectable.decorator'; -export * from './optional.decorator'; -export * from './set-metadata.decorator'; -export * from './use-guards.decorator'; -export * from './use-interceptors.decorator'; -export * from './use-pipes.decorator'; -export * from './apply-decorators'; -export * from './version.decorator'; +export * from './bind.decorator.js'; +export * from './catch.decorator.js'; +export * from './controller.decorator.js'; +export * from './dependencies.decorator.js'; +export * from './exception-filters.decorator.js'; +export * from './inject.decorator.js'; +export * from './injectable.decorator.js'; +export * from './optional.decorator.js'; +export * from './set-metadata.decorator.js'; +export * from './use-guards.decorator.js'; +export * from './use-interceptors.decorator.js'; +export * from './use-pipes.decorator.js'; +export * from './apply-decorators.js'; +export * from './version.decorator.js'; diff --git a/packages/common/decorators/core/inject.decorator.ts b/packages/common/decorators/core/inject.decorator.ts index f8bedbd63f..77ea8328ad 100644 --- a/packages/common/decorators/core/inject.decorator.ts +++ b/packages/common/decorators/core/inject.decorator.ts @@ -2,9 +2,9 @@ import { PARAMTYPES_METADATA, PROPERTY_DEPS_METADATA, SELF_DECLARED_DEPS_METADATA, -} from '../../constants'; -import { ForwardReference, InjectionToken } from '../../interfaces'; -import { isUndefined } from '../../utils/shared.utils'; +} from '../../constants.js'; +import { ForwardReference, InjectionToken } from '../../interfaces/index.js'; +import { isUndefined } from '../../utils/shared.utils.js'; /** * Decorator that marks a constructor parameter as a target for diff --git a/packages/common/decorators/core/injectable.decorator.ts b/packages/common/decorators/core/injectable.decorator.ts index ff7ae143c5..5c852fad61 100644 --- a/packages/common/decorators/core/injectable.decorator.ts +++ b/packages/common/decorators/core/injectable.decorator.ts @@ -1,7 +1,10 @@ import { uid } from 'uid'; -import { INJECTABLE_WATERMARK, SCOPE_OPTIONS_METADATA } from '../../constants'; -import { ScopeOptions } from '../../interfaces/scope-options.interface'; -import { Type } from '../../interfaces/type.interface'; +import { + INJECTABLE_WATERMARK, + SCOPE_OPTIONS_METADATA, +} from '../../constants.js'; +import { ScopeOptions } from '../../interfaces/scope-options.interface.js'; +import { Type } from '../../interfaces/type.interface.js'; /** * Defines the injection scope. diff --git a/packages/common/decorators/core/optional.decorator.ts b/packages/common/decorators/core/optional.decorator.ts index 0d94c20f00..5ef8cbbfd1 100644 --- a/packages/common/decorators/core/optional.decorator.ts +++ b/packages/common/decorators/core/optional.decorator.ts @@ -1,8 +1,8 @@ import { OPTIONAL_DEPS_METADATA, OPTIONAL_PROPERTY_DEPS_METADATA, -} from '../../constants'; -import { isUndefined } from '../../utils/shared.utils'; +} from '../../constants.js'; +import { isUndefined } from '../../utils/shared.utils.js'; /** * Parameter decorator for an injected dependency marking the diff --git a/packages/common/decorators/core/use-guards.decorator.ts b/packages/common/decorators/core/use-guards.decorator.ts index c3fb7cd2fd..52fdc6c367 100644 --- a/packages/common/decorators/core/use-guards.decorator.ts +++ b/packages/common/decorators/core/use-guards.decorator.ts @@ -1,8 +1,8 @@ -import { GUARDS_METADATA } from '../../constants'; -import { CanActivate } from '../../interfaces'; -import { extendArrayMetadata } from '../../utils/extend-metadata.util'; -import { isFunction } from '../../utils/shared.utils'; -import { validateEach } from '../../utils/validate-each.util'; +import { GUARDS_METADATA } from '../../constants.js'; +import { CanActivate } from '../../interfaces/index.js'; +import { extendArrayMetadata } from '../../utils/extend-metadata.util.js'; +import { isFunction } from '../../utils/shared.utils.js'; +import { validateEach } from '../../utils/validate-each.util.js'; /** * Decorator that binds guards to the scope of the controller or method, diff --git a/packages/common/decorators/core/use-interceptors.decorator.ts b/packages/common/decorators/core/use-interceptors.decorator.ts index 474c47a6d1..b4e0e14626 100644 --- a/packages/common/decorators/core/use-interceptors.decorator.ts +++ b/packages/common/decorators/core/use-interceptors.decorator.ts @@ -1,8 +1,8 @@ -import { INTERCEPTORS_METADATA } from '../../constants'; -import { NestInterceptor } from '../../interfaces'; -import { extendArrayMetadata } from '../../utils/extend-metadata.util'; -import { isFunction } from '../../utils/shared.utils'; -import { validateEach } from '../../utils/validate-each.util'; +import { INTERCEPTORS_METADATA } from '../../constants.js'; +import { NestInterceptor } from '../../interfaces/index.js'; +import { extendArrayMetadata } from '../../utils/extend-metadata.util.js'; +import { isFunction } from '../../utils/shared.utils.js'; +import { validateEach } from '../../utils/validate-each.util.js'; /** * Decorator that binds interceptors to the scope of the controller or method, diff --git a/packages/common/decorators/core/use-pipes.decorator.ts b/packages/common/decorators/core/use-pipes.decorator.ts index b9ead653f9..72c66d8242 100644 --- a/packages/common/decorators/core/use-pipes.decorator.ts +++ b/packages/common/decorators/core/use-pipes.decorator.ts @@ -1,8 +1,8 @@ -import { PIPES_METADATA } from '../../constants'; -import { PipeTransform } from '../../interfaces/index'; -import { extendArrayMetadata } from '../../utils/extend-metadata.util'; -import { isFunction } from '../../utils/shared.utils'; -import { validateEach } from '../../utils/validate-each.util'; +import { PIPES_METADATA } from '../../constants.js'; +import { PipeTransform } from '../../interfaces/index.js'; +import { extendArrayMetadata } from '../../utils/extend-metadata.util.js'; +import { isFunction } from '../../utils/shared.utils.js'; +import { validateEach } from '../../utils/validate-each.util.js'; /** * Decorator that binds pipes to the scope of the controller or method, diff --git a/packages/common/decorators/core/version.decorator.ts b/packages/common/decorators/core/version.decorator.ts index 9ab8fc8878..97f179cbde 100644 --- a/packages/common/decorators/core/version.decorator.ts +++ b/packages/common/decorators/core/version.decorator.ts @@ -1,5 +1,5 @@ -import { VERSION_METADATA } from '../../constants'; -import { VersionValue } from '../../interfaces/version-options.interface'; +import { VERSION_METADATA } from '../../constants.js'; +import { VersionValue } from '../../interfaces/version-options.interface.js'; /** * Sets the version of the endpoint to the passed version diff --git a/packages/common/decorators/http/create-route-param-metadata.decorator.ts b/packages/common/decorators/http/create-route-param-metadata.decorator.ts index 62f90b7f62..37d43616e7 100644 --- a/packages/common/decorators/http/create-route-param-metadata.decorator.ts +++ b/packages/common/decorators/http/create-route-param-metadata.decorator.ts @@ -1,10 +1,10 @@ import { uid } from 'uid'; -import { ROUTE_ARGS_METADATA } from '../../constants'; -import { PipeTransform } from '../../index'; -import { Type } from '../../interfaces'; -import { CustomParamFactory } from '../../interfaces/features/custom-route-param-factory.interface'; -import { assignCustomParameterMetadata } from '../../utils/assign-custom-metadata.util'; -import { isFunction, isNil } from '../../utils/shared.utils'; +import { ROUTE_ARGS_METADATA } from '../../constants.js'; +import { PipeTransform } from '../../index.js'; +import { Type } from '../../interfaces/index.js'; +import { CustomParamFactory } from '../../interfaces/features/custom-route-param-factory.interface.js'; +import { assignCustomParameterMetadata } from '../../utils/assign-custom-metadata.util.js'; +import { isFunction, isNil } from '../../utils/shared.utils.js'; export type ParamDecoratorEnhancer = ParameterDecorator; diff --git a/packages/common/decorators/http/header.decorator.ts b/packages/common/decorators/http/header.decorator.ts index 875ce84728..8b491c157b 100644 --- a/packages/common/decorators/http/header.decorator.ts +++ b/packages/common/decorators/http/header.decorator.ts @@ -1,5 +1,5 @@ -import { HEADERS_METADATA } from '../../constants'; -import { extendArrayMetadata } from '../../utils/extend-metadata.util'; +import { HEADERS_METADATA } from '../../constants.js'; +import { extendArrayMetadata } from '../../utils/extend-metadata.util.js'; /** * Request method Decorator. Sets a response header. diff --git a/packages/common/decorators/http/http-code.decorator.ts b/packages/common/decorators/http/http-code.decorator.ts index fc3971be0a..a1dddee74f 100644 --- a/packages/common/decorators/http/http-code.decorator.ts +++ b/packages/common/decorators/http/http-code.decorator.ts @@ -1,4 +1,4 @@ -import { HTTP_CODE_METADATA } from '../../constants'; +import { HTTP_CODE_METADATA } from '../../constants.js'; /** * Request method Decorator. Defines the HTTP response status code. Overrides diff --git a/packages/common/decorators/http/index.ts b/packages/common/decorators/http/index.ts index 39b61bf003..7a03af73c0 100644 --- a/packages/common/decorators/http/index.ts +++ b/packages/common/decorators/http/index.ts @@ -1,8 +1,8 @@ -export * from './request-mapping.decorator'; -export * from './route-params.decorator'; -export * from './http-code.decorator'; -export * from './create-route-param-metadata.decorator'; -export * from './render.decorator'; -export * from './header.decorator'; -export * from './redirect.decorator'; -export * from './sse.decorator'; +export * from './request-mapping.decorator.js'; +export * from './route-params.decorator.js'; +export * from './http-code.decorator.js'; +export * from './create-route-param-metadata.decorator.js'; +export * from './render.decorator.js'; +export * from './header.decorator.js'; +export * from './redirect.decorator.js'; +export * from './sse.decorator.js'; diff --git a/packages/common/decorators/http/redirect.decorator.ts b/packages/common/decorators/http/redirect.decorator.ts index e03af9dfd0..ddd433ed82 100644 --- a/packages/common/decorators/http/redirect.decorator.ts +++ b/packages/common/decorators/http/redirect.decorator.ts @@ -1,4 +1,4 @@ -import { REDIRECT_METADATA } from '../../constants'; +import { REDIRECT_METADATA } from '../../constants.js'; /** * Redirects request to the specified URL. diff --git a/packages/common/decorators/http/render.decorator.ts b/packages/common/decorators/http/render.decorator.ts index 92d2f8d204..810f3c14b3 100644 --- a/packages/common/decorators/http/render.decorator.ts +++ b/packages/common/decorators/http/render.decorator.ts @@ -1,4 +1,4 @@ -import { RENDER_METADATA } from '../../constants'; +import { RENDER_METADATA } from '../../constants.js'; /** * Route handler method Decorator. Defines a template to be rendered by the controller. diff --git a/packages/common/decorators/http/request-mapping.decorator.ts b/packages/common/decorators/http/request-mapping.decorator.ts index e707883cf4..45ad1b87d7 100644 --- a/packages/common/decorators/http/request-mapping.decorator.ts +++ b/packages/common/decorators/http/request-mapping.decorator.ts @@ -1,5 +1,5 @@ -import { METHOD_METADATA, PATH_METADATA } from '../../constants'; -import { RequestMethod } from '../../enums/request-method.enum'; +import { METHOD_METADATA, PATH_METADATA } from '../../constants.js'; +import { RequestMethod } from '../../enums/request-method.enum.js'; export interface RequestMappingMetadata { path?: string | string[]; diff --git a/packages/common/decorators/http/route-params.decorator.ts b/packages/common/decorators/http/route-params.decorator.ts index ddc3f9160a..e1f307e3a6 100644 --- a/packages/common/decorators/http/route-params.decorator.ts +++ b/packages/common/decorators/http/route-params.decorator.ts @@ -1,11 +1,11 @@ import { RESPONSE_PASSTHROUGH_METADATA, ROUTE_ARGS_METADATA, -} from '../../constants'; -import { RouteParamtypes } from '../../enums/route-paramtypes.enum'; -import { PipeTransform } from '../../index'; -import { Type } from '../../interfaces'; -import { isNil, isString } from '../../utils/shared.utils'; +} from '../../constants.js'; +import { RouteParamtypes } from '../../enums/route-paramtypes.enum.js'; +import { PipeTransform } from '../../index.js'; +import { Type } from '../../interfaces/index.js'; +import { isNil, isString } from '../../utils/shared.utils.js'; /** * The `@Response()`/`@Res` parameter decorator options. diff --git a/packages/common/decorators/http/sse.decorator.ts b/packages/common/decorators/http/sse.decorator.ts index 5dae6aef7a..302b790529 100644 --- a/packages/common/decorators/http/sse.decorator.ts +++ b/packages/common/decorators/http/sse.decorator.ts @@ -1,5 +1,9 @@ -import { METHOD_METADATA, PATH_METADATA, SSE_METADATA } from '../../constants'; -import { RequestMethod } from '../../enums/request-method.enum'; +import { + METHOD_METADATA, + PATH_METADATA, + SSE_METADATA, +} from '../../constants.js'; +import { RequestMethod } from '../../enums/request-method.enum.js'; /** * Declares this route as a Server-Sent-Events endpoint diff --git a/packages/common/decorators/index.ts b/packages/common/decorators/index.ts index 20ab3a19c4..44fa86f967 100644 --- a/packages/common/decorators/index.ts +++ b/packages/common/decorators/index.ts @@ -1,3 +1,3 @@ -export * from './core'; -export * from './modules'; -export * from './http'; +export * from './core/index.js'; +export * from './modules/index.js'; +export * from './http/index.js'; diff --git a/packages/common/decorators/modules/global.decorator.ts b/packages/common/decorators/modules/global.decorator.ts index 7b9c5ef2c9..c954905610 100644 --- a/packages/common/decorators/modules/global.decorator.ts +++ b/packages/common/decorators/modules/global.decorator.ts @@ -1,4 +1,4 @@ -import { GLOBAL_MODULE_METADATA } from '../../constants'; +import { GLOBAL_MODULE_METADATA } from '../../constants.js'; /** * Decorator that makes a module global-scoped. diff --git a/packages/common/decorators/modules/index.ts b/packages/common/decorators/modules/index.ts index e1994f74e7..1997b8fe96 100644 --- a/packages/common/decorators/modules/index.ts +++ b/packages/common/decorators/modules/index.ts @@ -1,2 +1,2 @@ -export * from './global.decorator'; -export * from './module.decorator'; +export * from './global.decorator.js'; +export * from './module.decorator.js'; diff --git a/packages/common/decorators/modules/module.decorator.ts b/packages/common/decorators/modules/module.decorator.ts index 9ab617a643..5bef01365f 100644 --- a/packages/common/decorators/modules/module.decorator.ts +++ b/packages/common/decorators/modules/module.decorator.ts @@ -1,5 +1,5 @@ -import { ModuleMetadata } from '../../interfaces/modules/module-metadata.interface'; -import { validateModuleKeys } from '../../utils/validate-module-keys.util'; +import { ModuleMetadata } from '../../interfaces/modules/module-metadata.interface.js'; +import { validateModuleKeys } from '../../utils/validate-module-keys.util.js'; /** * Decorator that marks a class as a [module](https://docs.nestjs.com/modules). diff --git a/packages/common/enums/index.ts b/packages/common/enums/index.ts index 13ee987c22..01bac419e7 100644 --- a/packages/common/enums/index.ts +++ b/packages/common/enums/index.ts @@ -1,4 +1,4 @@ -export * from './request-method.enum'; -export * from './http-status.enum'; -export * from './shutdown-signal.enum'; -export * from './version-type.enum'; +export * from './request-method.enum.js'; +export * from './http-status.enum.js'; +export * from './shutdown-signal.enum.js'; +export * from './version-type.enum.js'; diff --git a/packages/common/exceptions/bad-gateway.exception.ts b/packages/common/exceptions/bad-gateway.exception.ts index 5bb9cd156a..ba5fa8013b 100644 --- a/packages/common/exceptions/bad-gateway.exception.ts +++ b/packages/common/exceptions/bad-gateway.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Bad Gateway* type errors. diff --git a/packages/common/exceptions/bad-request.exception.ts b/packages/common/exceptions/bad-request.exception.ts index 33ad6652b6..8ff0b745a1 100644 --- a/packages/common/exceptions/bad-request.exception.ts +++ b/packages/common/exceptions/bad-request.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Bad Request* type errors. diff --git a/packages/common/exceptions/conflict.exception.ts b/packages/common/exceptions/conflict.exception.ts index 27bdda8aa0..367dbd58b8 100644 --- a/packages/common/exceptions/conflict.exception.ts +++ b/packages/common/exceptions/conflict.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Conflict* type errors. diff --git a/packages/common/exceptions/forbidden.exception.ts b/packages/common/exceptions/forbidden.exception.ts index f04b86bcaa..8709edcd79 100644 --- a/packages/common/exceptions/forbidden.exception.ts +++ b/packages/common/exceptions/forbidden.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Forbidden* type errors. diff --git a/packages/common/exceptions/gateway-timeout.exception.ts b/packages/common/exceptions/gateway-timeout.exception.ts index 49dee49381..f80ae79d3b 100644 --- a/packages/common/exceptions/gateway-timeout.exception.ts +++ b/packages/common/exceptions/gateway-timeout.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Gateway Timeout* type errors. diff --git a/packages/common/exceptions/gone.exception.ts b/packages/common/exceptions/gone.exception.ts index b1fc0f65b5..c2848c1398 100644 --- a/packages/common/exceptions/gone.exception.ts +++ b/packages/common/exceptions/gone.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Gone* type errors. diff --git a/packages/common/exceptions/http-version-not-supported.exception.ts b/packages/common/exceptions/http-version-not-supported.exception.ts index 23283d343e..7348b582c9 100644 --- a/packages/common/exceptions/http-version-not-supported.exception.ts +++ b/packages/common/exceptions/http-version-not-supported.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Http Version Not Supported* type errors. diff --git a/packages/common/exceptions/http.exception.ts b/packages/common/exceptions/http.exception.ts index 8b21b9a392..c32b6e34f8 100644 --- a/packages/common/exceptions/http.exception.ts +++ b/packages/common/exceptions/http.exception.ts @@ -1,9 +1,9 @@ import { HttpExceptionBody, HttpExceptionBodyMessage, -} from '../interfaces/http/http-exception-body.interface'; -import { isNumber, isObject, isString } from '../utils/shared.utils'; -import { IntrinsicException } from './intrinsic.exception'; +} from '../interfaces/http/http-exception-body.interface.js'; +import { isNumber, isObject, isString } from '../utils/shared.utils.js'; +import { IntrinsicException } from './intrinsic.exception.js'; export interface HttpExceptionOptions { /** original cause of the error */ diff --git a/packages/common/exceptions/im-a-teapot.exception.ts b/packages/common/exceptions/im-a-teapot.exception.ts index 209e32c438..a59f6e8cad 100644 --- a/packages/common/exceptions/im-a-teapot.exception.ts +++ b/packages/common/exceptions/im-a-teapot.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *ImATeapotException* type errors. diff --git a/packages/common/exceptions/index.ts b/packages/common/exceptions/index.ts index 554218336d..b46622e7a8 100644 --- a/packages/common/exceptions/index.ts +++ b/packages/common/exceptions/index.ts @@ -1,23 +1,23 @@ -export * from './bad-gateway.exception'; -export * from './bad-request.exception'; -export * from './conflict.exception'; -export * from './forbidden.exception'; -export * from './gateway-timeout.exception'; -export * from './gone.exception'; -export * from './http-version-not-supported.exception'; -export * from './http.exception'; -export * from './im-a-teapot.exception'; -export * from './internal-server-error.exception'; -export * from './intrinsic.exception'; -export * from './method-not-allowed.exception'; -export * from './misdirected.exception'; -export * from './not-acceptable.exception'; -export * from './not-found.exception'; -export * from './not-implemented.exception'; -export * from './payload-too-large.exception'; -export * from './precondition-failed.exception'; -export * from './request-timeout.exception'; -export * from './service-unavailable.exception'; -export * from './unauthorized.exception'; -export * from './unprocessable-entity.exception'; -export * from './unsupported-media-type.exception'; +export * from './bad-gateway.exception.js'; +export * from './bad-request.exception.js'; +export * from './conflict.exception.js'; +export * from './forbidden.exception.js'; +export * from './gateway-timeout.exception.js'; +export * from './gone.exception.js'; +export * from './http-version-not-supported.exception.js'; +export * from './http.exception.js'; +export * from './im-a-teapot.exception.js'; +export * from './internal-server-error.exception.js'; +export * from './intrinsic.exception.js'; +export * from './method-not-allowed.exception.js'; +export * from './misdirected.exception.js'; +export * from './not-acceptable.exception.js'; +export * from './not-found.exception.js'; +export * from './not-implemented.exception.js'; +export * from './payload-too-large.exception.js'; +export * from './precondition-failed.exception.js'; +export * from './request-timeout.exception.js'; +export * from './service-unavailable.exception.js'; +export * from './unauthorized.exception.js'; +export * from './unprocessable-entity.exception.js'; +export * from './unsupported-media-type.exception.js'; diff --git a/packages/common/exceptions/internal-server-error.exception.ts b/packages/common/exceptions/internal-server-error.exception.ts index f8955b86af..3dc40a4b84 100644 --- a/packages/common/exceptions/internal-server-error.exception.ts +++ b/packages/common/exceptions/internal-server-error.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Internal Server Error* type errors. diff --git a/packages/common/exceptions/method-not-allowed.exception.ts b/packages/common/exceptions/method-not-allowed.exception.ts index e6db6198cf..607f3f2c1a 100644 --- a/packages/common/exceptions/method-not-allowed.exception.ts +++ b/packages/common/exceptions/method-not-allowed.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Method Not Allowed* type errors. diff --git a/packages/common/exceptions/misdirected.exception.ts b/packages/common/exceptions/misdirected.exception.ts index 4ff86459f6..cbf4a0a0e6 100644 --- a/packages/common/exceptions/misdirected.exception.ts +++ b/packages/common/exceptions/misdirected.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Misdirected* type errors. diff --git a/packages/common/exceptions/not-acceptable.exception.ts b/packages/common/exceptions/not-acceptable.exception.ts index 8b3cf66a02..a015ab2ea3 100644 --- a/packages/common/exceptions/not-acceptable.exception.ts +++ b/packages/common/exceptions/not-acceptable.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Not Acceptable* type errors. diff --git a/packages/common/exceptions/not-found.exception.ts b/packages/common/exceptions/not-found.exception.ts index 1213e8dca8..f2a3214ee0 100644 --- a/packages/common/exceptions/not-found.exception.ts +++ b/packages/common/exceptions/not-found.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Not Found* type errors. diff --git a/packages/common/exceptions/not-implemented.exception.ts b/packages/common/exceptions/not-implemented.exception.ts index 206a87333a..9291a3a675 100644 --- a/packages/common/exceptions/not-implemented.exception.ts +++ b/packages/common/exceptions/not-implemented.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Not Implemented* type errors. diff --git a/packages/common/exceptions/payload-too-large.exception.ts b/packages/common/exceptions/payload-too-large.exception.ts index 4e841a3591..bec2a5b10a 100644 --- a/packages/common/exceptions/payload-too-large.exception.ts +++ b/packages/common/exceptions/payload-too-large.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Payload Too Large* type errors. diff --git a/packages/common/exceptions/precondition-failed.exception.ts b/packages/common/exceptions/precondition-failed.exception.ts index 68c3433c7f..c2ca7d8687 100644 --- a/packages/common/exceptions/precondition-failed.exception.ts +++ b/packages/common/exceptions/precondition-failed.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Precondition Failed* type errors. diff --git a/packages/common/exceptions/request-timeout.exception.ts b/packages/common/exceptions/request-timeout.exception.ts index f4f6d79556..298310552f 100644 --- a/packages/common/exceptions/request-timeout.exception.ts +++ b/packages/common/exceptions/request-timeout.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Request Timeout* type errors. diff --git a/packages/common/exceptions/service-unavailable.exception.ts b/packages/common/exceptions/service-unavailable.exception.ts index 0afca4bdd5..500946ca2b 100644 --- a/packages/common/exceptions/service-unavailable.exception.ts +++ b/packages/common/exceptions/service-unavailable.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Service Unavailable* type errors. diff --git a/packages/common/exceptions/unauthorized.exception.ts b/packages/common/exceptions/unauthorized.exception.ts index c5be32253f..961c39dbf5 100644 --- a/packages/common/exceptions/unauthorized.exception.ts +++ b/packages/common/exceptions/unauthorized.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Unauthorized* type errors. diff --git a/packages/common/exceptions/unprocessable-entity.exception.ts b/packages/common/exceptions/unprocessable-entity.exception.ts index d6f99aa253..deb86f0573 100644 --- a/packages/common/exceptions/unprocessable-entity.exception.ts +++ b/packages/common/exceptions/unprocessable-entity.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Unprocessable Entity* type errors. diff --git a/packages/common/exceptions/unsupported-media-type.exception.ts b/packages/common/exceptions/unsupported-media-type.exception.ts index 9d8af94af2..db0796819d 100644 --- a/packages/common/exceptions/unsupported-media-type.exception.ts +++ b/packages/common/exceptions/unsupported-media-type.exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../enums/http-status.enum'; -import { HttpException, HttpExceptionOptions } from './http.exception'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { HttpException, HttpExceptionOptions } from './http.exception.js'; /** * Defines an HTTP exception for *Unsupported Media Type* type errors. diff --git a/packages/common/file-stream/index.ts b/packages/common/file-stream/index.ts index 75a39abefa..7074127b3e 100644 --- a/packages/common/file-stream/index.ts +++ b/packages/common/file-stream/index.ts @@ -1 +1 @@ -export * from './streamable-file'; +export * from './streamable-file.js'; diff --git a/packages/common/file-stream/interfaces/index.ts b/packages/common/file-stream/interfaces/index.ts index 9be413e21b..e5e47d99c3 100644 --- a/packages/common/file-stream/interfaces/index.ts +++ b/packages/common/file-stream/interfaces/index.ts @@ -1,2 +1,2 @@ -export * from './streamable-options.interface'; -export * from './streamable-handler-response.interface'; +export * from './streamable-options.interface.js'; +export * from './streamable-handler-response.interface.js'; diff --git a/packages/common/file-stream/streamable-file.ts b/packages/common/file-stream/streamable-file.ts index 6323ca0656..f77e84514a 100644 --- a/packages/common/file-stream/streamable-file.ts +++ b/packages/common/file-stream/streamable-file.ts @@ -1,9 +1,12 @@ import { Readable } from 'stream'; import { types } from 'util'; -import { HttpStatus } from '../enums'; -import { Logger } from '../services'; -import { isFunction } from '../utils/shared.utils'; -import { StreamableFileOptions, StreamableHandlerResponse } from './interfaces'; +import { HttpStatus } from '../enums/index.js'; +import { Logger } from '../services/index.js'; +import { isFunction } from '../utils/shared.utils.js'; +import { + StreamableFileOptions, + StreamableHandlerResponse, +} from './interfaces/index.js'; /** * @see [Streaming files](https://docs.nestjs.com/techniques/streaming-files) diff --git a/packages/common/index.ts b/packages/common/index.ts index 1ccee53e75..404f1dc57b 100644 --- a/packages/common/index.ts +++ b/packages/common/index.ts @@ -6,10 +6,10 @@ */ import 'reflect-metadata'; -export * from './decorators'; -export * from './enums'; -export * from './exceptions'; -export * from './file-stream'; +export * from './decorators/index.js'; +export * from './enums/index.js'; +export * from './exceptions/index.js'; +export * from './file-stream/index.js'; export { Abstract, ArgumentMetadata, @@ -62,9 +62,9 @@ export { WebSocketAdapter, WsExceptionFilter, WsMessageHandler, -} from './interfaces'; -export * from './module-utils'; -export * from './pipes'; -export * from './serializer'; -export * from './services'; -export * from './utils'; +} from './interfaces/index.js'; +export * from './module-utils/index.js'; +export * from './pipes/index.js'; +export * from './serializer/index.js'; +export * from './services/index.js'; +export * from './utils/index.js'; diff --git a/packages/common/interfaces/controllers/index.ts b/packages/common/interfaces/controllers/index.ts index 4bd60924b0..a51741c4b2 100644 --- a/packages/common/interfaces/controllers/index.ts +++ b/packages/common/interfaces/controllers/index.ts @@ -1,2 +1,2 @@ -export * from './controller-metadata.interface'; -export * from './controller.interface'; +export * from './controller-metadata.interface.js'; +export * from './controller.interface.js'; diff --git a/packages/common/interfaces/exceptions/exception-filter-metadata.interface.ts b/packages/common/interfaces/exceptions/exception-filter-metadata.interface.ts index 364ef37897..c873d707ce 100644 --- a/packages/common/interfaces/exceptions/exception-filter-metadata.interface.ts +++ b/packages/common/interfaces/exceptions/exception-filter-metadata.interface.ts @@ -1,5 +1,5 @@ -import { ExceptionFilter } from './exception-filter.interface'; -import { Type } from '../type.interface'; +import { ExceptionFilter } from './exception-filter.interface.js'; +import { Type } from '../type.interface.js'; export interface ExceptionFilterMetadata { func: ExceptionFilter['catch']; diff --git a/packages/common/interfaces/exceptions/exception-filter.interface.ts b/packages/common/interfaces/exceptions/exception-filter.interface.ts index 96638a7598..08d0172785 100644 --- a/packages/common/interfaces/exceptions/exception-filter.interface.ts +++ b/packages/common/interfaces/exceptions/exception-filter.interface.ts @@ -1,4 +1,4 @@ -import { ArgumentsHost } from '../features/arguments-host.interface'; +import { ArgumentsHost } from '../features/arguments-host.interface.js'; /** * Interface describing implementation of an exception filter. diff --git a/packages/common/interfaces/exceptions/index.ts b/packages/common/interfaces/exceptions/index.ts index f35002c2e2..9d0fedd3df 100644 --- a/packages/common/interfaces/exceptions/index.ts +++ b/packages/common/interfaces/exceptions/index.ts @@ -1,5 +1,5 @@ -export * from './exception-filter-metadata.interface'; -export * from './exception-filter.interface'; -export * from './rpc-exception-filter-metadata.interface'; -export * from './rpc-exception-filter.interface'; -export * from './ws-exception-filter.interface'; +export * from './exception-filter-metadata.interface.js'; +export * from './exception-filter.interface.js'; +export * from './rpc-exception-filter-metadata.interface.js'; +export * from './rpc-exception-filter.interface.js'; +export * from './ws-exception-filter.interface.js'; diff --git a/packages/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.ts b/packages/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.ts index 9639705fda..19073ef12d 100644 --- a/packages/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.ts +++ b/packages/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.ts @@ -1,5 +1,5 @@ -import { RpcExceptionFilter } from './rpc-exception-filter.interface'; -import { Type } from '../type.interface'; +import { RpcExceptionFilter } from './rpc-exception-filter.interface.js'; +import { Type } from '../type.interface.js'; export interface RpcExceptionFilterMetadata { func: RpcExceptionFilter['catch']; diff --git a/packages/common/interfaces/exceptions/rpc-exception-filter.interface.ts b/packages/common/interfaces/exceptions/rpc-exception-filter.interface.ts index 75e09caf89..0982091aae 100644 --- a/packages/common/interfaces/exceptions/rpc-exception-filter.interface.ts +++ b/packages/common/interfaces/exceptions/rpc-exception-filter.interface.ts @@ -1,5 +1,5 @@ import { Observable } from 'rxjs'; -import { ArgumentsHost } from '../features/arguments-host.interface'; +import { ArgumentsHost } from '../features/arguments-host.interface.js'; /** * Interface describing implementation of an RPC exception filter. diff --git a/packages/common/interfaces/exceptions/ws-exception-filter.interface.ts b/packages/common/interfaces/exceptions/ws-exception-filter.interface.ts index 179f60a2f8..ee5fdfd851 100644 --- a/packages/common/interfaces/exceptions/ws-exception-filter.interface.ts +++ b/packages/common/interfaces/exceptions/ws-exception-filter.interface.ts @@ -1,4 +1,4 @@ -import { ArgumentsHost } from '../features/arguments-host.interface'; +import { ArgumentsHost } from '../features/arguments-host.interface.js'; /** * Interface describing implementation of a Web Sockets exception filter. diff --git a/packages/common/interfaces/external/transformer-package.interface.ts b/packages/common/interfaces/external/transformer-package.interface.ts index f13c5fa2e1..1d2a01a5ee 100644 --- a/packages/common/interfaces/external/transformer-package.interface.ts +++ b/packages/common/interfaces/external/transformer-package.interface.ts @@ -1,5 +1,5 @@ -import { Type } from '../type.interface'; -import { ClassTransformOptions } from './class-transform-options.interface'; +import { Type } from '../type.interface.js'; +import { ClassTransformOptions } from './class-transform-options.interface.js'; export interface TransformerPackage { plainToInstance( diff --git a/packages/common/interfaces/external/validator-package.interface.ts b/packages/common/interfaces/external/validator-package.interface.ts index 5b5e259cfb..a1923fd505 100644 --- a/packages/common/interfaces/external/validator-package.interface.ts +++ b/packages/common/interfaces/external/validator-package.interface.ts @@ -1,5 +1,5 @@ -import { ValidationError } from './validation-error.interface'; -import { ValidatorOptions } from './validator-options.interface'; +import { ValidationError } from './validation-error.interface.js'; +import { ValidatorOptions } from './validator-options.interface.js'; export interface ValidatorPackage { validate( diff --git a/packages/common/interfaces/features/can-activate.interface.ts b/packages/common/interfaces/features/can-activate.interface.ts index 29eb5e2ed0..1256483fb6 100644 --- a/packages/common/interfaces/features/can-activate.interface.ts +++ b/packages/common/interfaces/features/can-activate.interface.ts @@ -1,5 +1,5 @@ import { Observable } from 'rxjs'; -import { ExecutionContext } from './execution-context.interface'; +import { ExecutionContext } from './execution-context.interface.js'; /** * Interface defining the `canActivate()` function that must be implemented diff --git a/packages/common/interfaces/features/custom-route-param-factory.interface.ts b/packages/common/interfaces/features/custom-route-param-factory.interface.ts index c63b4b8573..7ba4be1484 100644 --- a/packages/common/interfaces/features/custom-route-param-factory.interface.ts +++ b/packages/common/interfaces/features/custom-route-param-factory.interface.ts @@ -1,4 +1,4 @@ -import { ExecutionContext } from './execution-context.interface'; +import { ExecutionContext } from './execution-context.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/features/execution-context.interface.ts b/packages/common/interfaces/features/execution-context.interface.ts index 68e95accbb..30dfeb22af 100644 --- a/packages/common/interfaces/features/execution-context.interface.ts +++ b/packages/common/interfaces/features/execution-context.interface.ts @@ -1,5 +1,5 @@ -import { Type } from '../index'; -import { ArgumentsHost } from './arguments-host.interface'; +import { Type } from '../index.js'; +import { ArgumentsHost } from './arguments-host.interface.js'; /** * Interface describing details about the current request pipeline. diff --git a/packages/common/interfaces/features/nest-interceptor.interface.ts b/packages/common/interfaces/features/nest-interceptor.interface.ts index ec4ad80891..7ebaf576ca 100644 --- a/packages/common/interfaces/features/nest-interceptor.interface.ts +++ b/packages/common/interfaces/features/nest-interceptor.interface.ts @@ -1,5 +1,5 @@ import { Observable } from 'rxjs'; -import { ExecutionContext } from './execution-context.interface'; +import { ExecutionContext } from './execution-context.interface.js'; /** * Interface providing access to the response stream. diff --git a/packages/common/interfaces/features/pipe-transform.interface.ts b/packages/common/interfaces/features/pipe-transform.interface.ts index 60ce3b6634..5a8a0e0dd9 100644 --- a/packages/common/interfaces/features/pipe-transform.interface.ts +++ b/packages/common/interfaces/features/pipe-transform.interface.ts @@ -1,5 +1,5 @@ -import { Type } from '../type.interface'; -import { Paramtype } from './paramtype.interface'; +import { Type } from '../type.interface.js'; +import { Paramtype } from './paramtype.interface.js'; export type Transform = (value: T, metadata: ArgumentMetadata) => any; diff --git a/packages/common/interfaces/global-prefix-options.interface.ts b/packages/common/interfaces/global-prefix-options.interface.ts index e8f657683d..0da785c587 100644 --- a/packages/common/interfaces/global-prefix-options.interface.ts +++ b/packages/common/interfaces/global-prefix-options.interface.ts @@ -1,4 +1,4 @@ -import { RouteInfo } from './middleware'; +import { RouteInfo } from './middleware/index.js'; /** * @publicApi diff --git a/packages/common/interfaces/hooks/index.ts b/packages/common/interfaces/hooks/index.ts index 01aad24975..14c5bb9692 100644 --- a/packages/common/interfaces/hooks/index.ts +++ b/packages/common/interfaces/hooks/index.ts @@ -1,5 +1,5 @@ -export * from './before-application-shutdown.interface'; -export * from './on-application-bootstrap.interface'; -export * from './on-application-shutdown.interface'; -export * from './on-destroy.interface'; -export * from './on-init.interface'; +export * from './before-application-shutdown.interface.js'; +export * from './on-application-bootstrap.interface.js'; +export * from './on-application-shutdown.interface.js'; +export * from './on-destroy.interface.js'; +export * from './on-init.interface.js'; diff --git a/packages/common/interfaces/http/http-redirect-response.interface.ts b/packages/common/interfaces/http/http-redirect-response.interface.ts index da3261eba3..c775e9f2ad 100644 --- a/packages/common/interfaces/http/http-redirect-response.interface.ts +++ b/packages/common/interfaces/http/http-redirect-response.interface.ts @@ -1,4 +1,4 @@ -import { HttpStatus } from '../../enums'; +import { HttpStatus } from '../../enums/index.js'; export interface HttpRedirectResponse { url: string; diff --git a/packages/common/interfaces/http/http-server.interface.ts b/packages/common/interfaces/http/http-server.interface.ts index 8ed861c85b..a41d811a9e 100644 --- a/packages/common/interfaces/http/http-server.interface.ts +++ b/packages/common/interfaces/http/http-server.interface.ts @@ -1,6 +1,9 @@ -import { RequestMethod } from '../../enums'; -import { NestApplicationOptions } from '../../interfaces/nest-application-options.interface'; -import { VersionValue, VersioningOptions } from '../version-options.interface'; +import { RequestMethod } from '../../enums/index.js'; +import { NestApplicationOptions } from '../../interfaces/nest-application-options.interface.js'; +import { + VersionValue, + VersioningOptions, +} from '../version-options.interface.js'; export type ErrorHandler = ( error: any, diff --git a/packages/common/interfaces/http/index.ts b/packages/common/interfaces/http/index.ts index ad8ebfc83f..711b0ca840 100644 --- a/packages/common/interfaces/http/index.ts +++ b/packages/common/interfaces/http/index.ts @@ -1,5 +1,5 @@ -export * from './http-exception-body.interface'; -export * from './http-redirect-response.interface'; -export * from './http-server.interface'; -export * from './message-event.interface'; -export * from './raw-body-request.interface'; +export * from './http-exception-body.interface.js'; +export * from './http-redirect-response.interface.js'; +export * from './http-server.interface.js'; +export * from './message-event.interface.js'; +export * from './raw-body-request.interface.js'; diff --git a/packages/common/interfaces/index.ts b/packages/common/interfaces/index.ts index 94ceff93ce..66b225445e 100644 --- a/packages/common/interfaces/index.ts +++ b/packages/common/interfaces/index.ts @@ -1,30 +1,30 @@ -export * from './abstract.interface'; -export * from './controllers/controller-metadata.interface'; -export * from './controllers/controller.interface'; -export * from './exceptions/exception-filter.interface'; -export * from './exceptions/rpc-exception-filter.interface'; -export * from './exceptions/ws-exception-filter.interface'; -export * from './external/validation-error.interface'; -export * from './features/arguments-host.interface'; -export * from './features/can-activate.interface'; -export * from './features/custom-route-param-factory.interface'; -export * from './features/execution-context.interface'; -export * from './features/nest-interceptor.interface'; -export * from './features/paramtype.interface'; -export * from './features/pipe-transform.interface'; -export * from './global-prefix-options.interface'; -export * from './hooks'; -export * from './http'; -export * from './injectable.interface'; -export * from './microservices/nest-hybrid-application-options.interface'; -export * from './middleware'; -export * from './modules'; -export * from './nest-application-context.interface'; -export * from './nest-application-options.interface'; -export * from './nest-application.interface'; -export * from './nest-microservice.interface'; -export * from './scope-options.interface'; -export * from './shutdown-hooks-options.interface'; -export * from './type.interface'; -export * from './version-options.interface'; -export * from './websockets/web-socket-adapter.interface'; +export * from './abstract.interface.js'; +export * from './controllers/controller-metadata.interface.js'; +export * from './controllers/controller.interface.js'; +export * from './exceptions/exception-filter.interface.js'; +export * from './exceptions/rpc-exception-filter.interface.js'; +export * from './exceptions/ws-exception-filter.interface.js'; +export * from './external/validation-error.interface.js'; +export * from './features/arguments-host.interface.js'; +export * from './features/can-activate.interface.js'; +export * from './features/custom-route-param-factory.interface.js'; +export * from './features/execution-context.interface.js'; +export * from './features/nest-interceptor.interface.js'; +export * from './features/paramtype.interface.js'; +export * from './features/pipe-transform.interface.js'; +export * from './global-prefix-options.interface.js'; +export * from './hooks/index.js'; +export * from './http/index.js'; +export * from './injectable.interface.js'; +export * from './microservices/nest-hybrid-application-options.interface.js'; +export * from './middleware/index.js'; +export * from './modules/index.js'; +export * from './nest-application-context.interface.js'; +export * from './nest-application-options.interface.js'; +export * from './nest-application.interface.js'; +export * from './nest-microservice.interface.js'; +export * from './scope-options.interface.js'; +export * from './shutdown-hooks-options.interface.js'; +export * from './type.interface.js'; +export * from './version-options.interface.js'; +export * from './websockets/web-socket-adapter.interface.js'; diff --git a/packages/common/interfaces/microservices/nest-microservice-options.interface.ts b/packages/common/interfaces/microservices/nest-microservice-options.interface.ts index 34f32c9f51..684bcdf796 100644 --- a/packages/common/interfaces/microservices/nest-microservice-options.interface.ts +++ b/packages/common/interfaces/microservices/nest-microservice-options.interface.ts @@ -1,4 +1,4 @@ -import { NestApplicationContextOptions } from '../nest-application-context-options.interface'; +import { NestApplicationContextOptions } from '../nest-application-context-options.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/middleware/index.ts b/packages/common/interfaces/middleware/index.ts index b23e220972..a05a818cc5 100644 --- a/packages/common/interfaces/middleware/index.ts +++ b/packages/common/interfaces/middleware/index.ts @@ -1,4 +1,4 @@ -export * from './middleware-config-proxy.interface'; -export * from './middleware-configuration.interface'; -export * from './middleware-consumer.interface'; -export * from './nest-middleware.interface'; +export * from './middleware-config-proxy.interface.js'; +export * from './middleware-configuration.interface.js'; +export * from './middleware-consumer.interface.js'; +export * from './nest-middleware.interface.js'; diff --git a/packages/common/interfaces/middleware/middleware-config-proxy.interface.ts b/packages/common/interfaces/middleware/middleware-config-proxy.interface.ts index ca439207bc..749b55dccc 100644 --- a/packages/common/interfaces/middleware/middleware-config-proxy.interface.ts +++ b/packages/common/interfaces/middleware/middleware-config-proxy.interface.ts @@ -1,6 +1,6 @@ -import { Type } from '../type.interface'; -import { RouteInfo } from './middleware-configuration.interface'; -import { MiddlewareConsumer } from './middleware-consumer.interface'; +import { Type } from '../type.interface.js'; +import { RouteInfo } from './middleware-configuration.interface.js'; +import { MiddlewareConsumer } from './middleware-consumer.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/middleware/middleware-configuration.interface.ts b/packages/common/interfaces/middleware/middleware-configuration.interface.ts index 15414b6cb0..a2ffa3f070 100644 --- a/packages/common/interfaces/middleware/middleware-configuration.interface.ts +++ b/packages/common/interfaces/middleware/middleware-configuration.interface.ts @@ -1,6 +1,6 @@ -import { RequestMethod } from '../../enums'; -import { Type } from '../type.interface'; -import { VersionValue } from '../version-options.interface'; +import { RequestMethod } from '../../enums/index.js'; +import { Type } from '../type.interface.js'; +import { VersionValue } from '../version-options.interface.js'; export interface RouteInfo { path: string; diff --git a/packages/common/interfaces/middleware/middleware-consumer.interface.ts b/packages/common/interfaces/middleware/middleware-consumer.interface.ts index 21bcbc5e9b..7ef6b4fff5 100644 --- a/packages/common/interfaces/middleware/middleware-consumer.interface.ts +++ b/packages/common/interfaces/middleware/middleware-consumer.interface.ts @@ -1,5 +1,5 @@ -import { Type } from '../type.interface'; -import { MiddlewareConfigProxy } from './middleware-config-proxy.interface'; +import { Type } from '../type.interface.js'; +import { MiddlewareConfigProxy } from './middleware-config-proxy.interface.js'; /** * Interface defining method for applying user defined middleware to routes. diff --git a/packages/common/interfaces/modules/dynamic-module.interface.ts b/packages/common/interfaces/modules/dynamic-module.interface.ts index 65addedb5a..2e1d189611 100644 --- a/packages/common/interfaces/modules/dynamic-module.interface.ts +++ b/packages/common/interfaces/modules/dynamic-module.interface.ts @@ -1,5 +1,5 @@ -import { Type } from '../type.interface'; -import { ModuleMetadata } from './module-metadata.interface'; +import { Type } from '../type.interface.js'; +import { ModuleMetadata } from './module-metadata.interface.js'; /** * Interface defining a Dynamic Module. diff --git a/packages/common/interfaces/modules/index.ts b/packages/common/interfaces/modules/index.ts index 458f952a39..dabf666196 100644 --- a/packages/common/interfaces/modules/index.ts +++ b/packages/common/interfaces/modules/index.ts @@ -1,8 +1,8 @@ -export * from './dynamic-module.interface'; -export * from './forward-reference.interface'; -export * from './injection-token.interface'; -export * from './introspection-result.interface'; -export * from './module-metadata.interface'; -export * from './nest-module.interface'; -export * from './optional-factory-dependency.interface'; -export * from './provider.interface'; +export * from './dynamic-module.interface.js'; +export * from './forward-reference.interface.js'; +export * from './injection-token.interface.js'; +export * from './introspection-result.interface.js'; +export * from './module-metadata.interface.js'; +export * from './nest-module.interface.js'; +export * from './optional-factory-dependency.interface.js'; +export * from './provider.interface.js'; diff --git a/packages/common/interfaces/modules/injection-token.interface.ts b/packages/common/interfaces/modules/injection-token.interface.ts index ba5c2ce2b1..e0ecd95cbb 100644 --- a/packages/common/interfaces/modules/injection-token.interface.ts +++ b/packages/common/interfaces/modules/injection-token.interface.ts @@ -1,5 +1,5 @@ -import { Abstract } from '../abstract.interface'; -import { Type } from '../type.interface'; +import { Abstract } from '../abstract.interface.js'; +import { Type } from '../type.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/modules/introspection-result.interface.ts b/packages/common/interfaces/modules/introspection-result.interface.ts index 629aa01950..83f154a5e0 100644 --- a/packages/common/interfaces/modules/introspection-result.interface.ts +++ b/packages/common/interfaces/modules/introspection-result.interface.ts @@ -1,4 +1,4 @@ -import { Scope } from '../scope-options.interface'; +import { Scope } from '../scope-options.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/modules/module-metadata.interface.ts b/packages/common/interfaces/modules/module-metadata.interface.ts index 2baa7d84fa..2f110f76c6 100644 --- a/packages/common/interfaces/modules/module-metadata.interface.ts +++ b/packages/common/interfaces/modules/module-metadata.interface.ts @@ -1,8 +1,8 @@ -import { Abstract } from '../abstract.interface'; -import { Type } from '../type.interface'; -import { DynamicModule } from './dynamic-module.interface'; -import { ForwardReference } from './forward-reference.interface'; -import { Provider } from './provider.interface'; +import { Abstract } from '../abstract.interface.js'; +import { Type } from '../type.interface.js'; +import { DynamicModule } from './dynamic-module.interface.js'; +import { ForwardReference } from './forward-reference.interface.js'; +import { Provider } from './provider.interface.js'; /** * Interface defining the property object that describes the module. diff --git a/packages/common/interfaces/modules/nest-module.interface.ts b/packages/common/interfaces/modules/nest-module.interface.ts index 236658017a..186b5c4618 100644 --- a/packages/common/interfaces/modules/nest-module.interface.ts +++ b/packages/common/interfaces/modules/nest-module.interface.ts @@ -1,4 +1,4 @@ -import { MiddlewareConsumer } from '../middleware/middleware-consumer.interface'; +import { MiddlewareConsumer } from '../middleware/middleware-consumer.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/modules/optional-factory-dependency.interface.ts b/packages/common/interfaces/modules/optional-factory-dependency.interface.ts index 6c8db900ee..72d97cb25a 100644 --- a/packages/common/interfaces/modules/optional-factory-dependency.interface.ts +++ b/packages/common/interfaces/modules/optional-factory-dependency.interface.ts @@ -1,4 +1,4 @@ -import { InjectionToken } from './injection-token.interface'; +import { InjectionToken } from './injection-token.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/modules/provider.interface.ts b/packages/common/interfaces/modules/provider.interface.ts index 2fd7f85b66..7263d24ba1 100644 --- a/packages/common/interfaces/modules/provider.interface.ts +++ b/packages/common/interfaces/modules/provider.interface.ts @@ -1,7 +1,7 @@ -import { Scope } from '../scope-options.interface'; -import { Type } from '../type.interface'; -import { InjectionToken } from './injection-token.interface'; -import { OptionalFactoryDependency } from './optional-factory-dependency.interface'; +import { Scope } from '../scope-options.interface.js'; +import { Type } from '../type.interface.js'; +import { InjectionToken } from './injection-token.interface.js'; +import { OptionalFactoryDependency } from './optional-factory-dependency.interface.js'; /** * diff --git a/packages/common/interfaces/nest-application-context-options.interface.ts b/packages/common/interfaces/nest-application-context-options.interface.ts index 98aad7391a..99b3c14639 100644 --- a/packages/common/interfaces/nest-application-context-options.interface.ts +++ b/packages/common/interfaces/nest-application-context-options.interface.ts @@ -1,4 +1,4 @@ -import { LoggerService, LogLevel } from '../services/logger.service'; +import { LoggerService, LogLevel } from '../services/logger.service.js'; /** * @publicApi diff --git a/packages/common/interfaces/nest-application-context.interface.ts b/packages/common/interfaces/nest-application-context.interface.ts index 3c2d5c4a32..0253ecb5c3 100644 --- a/packages/common/interfaces/nest-application-context.interface.ts +++ b/packages/common/interfaces/nest-application-context.interface.ts @@ -1,9 +1,9 @@ -import { ShutdownSignal } from '../enums/shutdown-signal.enum'; -import { LoggerService, LogLevel } from '../services/logger.service'; -import { DynamicModule } from './modules'; -import { NestApplicationContextOptions } from './nest-application-context-options.interface'; -import { ShutdownHooksOptions } from './shutdown-hooks-options.interface'; -import { Type } from './type.interface'; +import { ShutdownSignal } from '../enums/shutdown-signal.enum.js'; +import { LoggerService, LogLevel } from '../services/logger.service.js'; +import { DynamicModule } from './modules/index.js'; +import { NestApplicationContextOptions } from './nest-application-context-options.interface.js'; +import { ShutdownHooksOptions } from './shutdown-hooks-options.interface.js'; +import { Type } from './type.interface.js'; export type SelectOptions = Pick; diff --git a/packages/common/interfaces/nest-application-options.interface.ts b/packages/common/interfaces/nest-application-options.interface.ts index 5d4c89cbc3..a5860cde98 100644 --- a/packages/common/interfaces/nest-application-options.interface.ts +++ b/packages/common/interfaces/nest-application-options.interface.ts @@ -1,9 +1,9 @@ import { CorsOptions, CorsOptionsDelegate, -} from './external/cors-options.interface'; -import { HttpsOptions } from './external/https-options.interface'; -import { NestApplicationContextOptions } from './nest-application-context-options.interface'; +} from './external/cors-options.interface.js'; +import { HttpsOptions } from './external/https-options.interface.js'; +import { NestApplicationContextOptions } from './nest-application-context-options.interface.js'; /** * @publicApi diff --git a/packages/common/interfaces/nest-application.interface.ts b/packages/common/interfaces/nest-application.interface.ts index 94bf44a925..9c3e7cae4d 100644 --- a/packages/common/interfaces/nest-application.interface.ts +++ b/packages/common/interfaces/nest-application.interface.ts @@ -1,16 +1,16 @@ -import { CanActivate } from './features/can-activate.interface'; -import { NestInterceptor } from './features/nest-interceptor.interface'; -import { GlobalPrefixOptions } from './global-prefix-options.interface'; -import { HttpServer } from './http/http-server.interface'; +import { CanActivate } from './features/can-activate.interface.js'; +import { NestInterceptor } from './features/nest-interceptor.interface.js'; +import { GlobalPrefixOptions } from './global-prefix-options.interface.js'; +import { HttpServer } from './http/http-server.interface.js'; import { ExceptionFilter, INestMicroservice, NestHybridApplicationOptions, PipeTransform, -} from './index'; -import { INestApplicationContext } from './nest-application-context.interface'; -import { VersioningOptions } from './version-options.interface'; -import { WebSocketAdapter } from './websockets/web-socket-adapter.interface'; +} from './index.js'; +import { INestApplicationContext } from './nest-application-context.interface.js'; +import { VersioningOptions } from './version-options.interface.js'; +import { WebSocketAdapter } from './websockets/web-socket-adapter.interface.js'; /** * Interface defining the core NestApplication object. diff --git a/packages/common/interfaces/nest-microservice.interface.ts b/packages/common/interfaces/nest-microservice.interface.ts index efcaa0761f..1ddc1c0416 100644 --- a/packages/common/interfaces/nest-microservice.interface.ts +++ b/packages/common/interfaces/nest-microservice.interface.ts @@ -1,10 +1,10 @@ import { Observable } from 'rxjs'; -import { ExceptionFilter } from './exceptions/exception-filter.interface'; -import { CanActivate } from './features/can-activate.interface'; -import { NestInterceptor } from './features/nest-interceptor.interface'; -import { PipeTransform } from './features/pipe-transform.interface'; -import { INestApplicationContext } from './nest-application-context.interface'; -import { WebSocketAdapter } from './websockets/web-socket-adapter.interface'; +import { ExceptionFilter } from './exceptions/exception-filter.interface.js'; +import { CanActivate } from './features/can-activate.interface.js'; +import { NestInterceptor } from './features/nest-interceptor.interface.js'; +import { PipeTransform } from './features/pipe-transform.interface.js'; +import { INestApplicationContext } from './nest-application-context.interface.js'; +import { WebSocketAdapter } from './websockets/web-socket-adapter.interface.js'; /** * Interface describing Microservice Context. diff --git a/packages/common/interfaces/version-options.interface.ts b/packages/common/interfaces/version-options.interface.ts index fc5a53b6e1..cc9385e8bd 100644 --- a/packages/common/interfaces/version-options.interface.ts +++ b/packages/common/interfaces/version-options.interface.ts @@ -1,4 +1,4 @@ -import { VersioningType } from '../enums/version-type.enum'; +import { VersioningType } from '../enums/version-type.enum.js'; /** * Indicates that this will work for any version passed in the request, or no version. diff --git a/packages/common/module-utils/configurable-module.builder.ts b/packages/common/module-utils/configurable-module.builder.ts index d7900d3914..84c4735c07 100644 --- a/packages/common/module-utils/configurable-module.builder.ts +++ b/packages/common/module-utils/configurable-module.builder.ts @@ -1,21 +1,24 @@ /* eslint-disable @typescript-eslint/no-empty-object-type */ -import { DynamicModule, Provider } from '../interfaces'; -import { Logger } from '../services/logger.service'; -import { randomStringGenerator } from '../utils/random-string-generator.util'; +import { DynamicModule, Provider } from '../interfaces/index.js'; +import { Logger } from '../services/logger.service.js'; +import { randomStringGenerator } from '../utils/random-string-generator.util.js'; import { ASYNC_METHOD_SUFFIX, ASYNC_OPTIONS_METADATA_KEYS, CONFIGURABLE_MODULE_ID, DEFAULT_FACTORY_CLASS_METHOD_KEY, DEFAULT_METHOD_KEY, -} from './constants'; +} from './constants.js'; import { ConfigurableModuleAsyncOptions, ConfigurableModuleCls, ConfigurableModuleHost, ConfigurableModuleOptionsFactory, -} from './interfaces'; -import { generateOptionsInjectionToken, getInjectionProviders } from './utils'; +} from './interfaces/index.js'; +import { + generateOptionsInjectionToken, + getInjectionProviders, +} from './utils/index.js'; /** * @publicApi diff --git a/packages/common/module-utils/index.ts b/packages/common/module-utils/index.ts index 4393992bd1..53342dbf97 100644 --- a/packages/common/module-utils/index.ts +++ b/packages/common/module-utils/index.ts @@ -1,2 +1,2 @@ -export * from './configurable-module.builder'; -export * from './interfaces'; +export * from './configurable-module.builder.js'; +export * from './interfaces/index.js'; diff --git a/packages/common/module-utils/interfaces/configurable-module-async-options.interface.ts b/packages/common/module-utils/interfaces/configurable-module-async-options.interface.ts index 8adf58a17d..c92b9a35e1 100644 --- a/packages/common/module-utils/interfaces/configurable-module-async-options.interface.ts +++ b/packages/common/module-utils/interfaces/configurable-module-async-options.interface.ts @@ -3,8 +3,8 @@ import { ModuleMetadata, Provider, Type, -} from '../../interfaces'; -import { DEFAULT_FACTORY_CLASS_METHOD_KEY } from '../constants'; +} from '../../interfaces/index.js'; +import { DEFAULT_FACTORY_CLASS_METHOD_KEY } from '../constants.js'; /** * Interface that must be implemented by the module options factory class. diff --git a/packages/common/module-utils/interfaces/configurable-module-cls.interface.ts b/packages/common/module-utils/interfaces/configurable-module-cls.interface.ts index 00ac031453..895a44e71f 100644 --- a/packages/common/module-utils/interfaces/configurable-module-cls.interface.ts +++ b/packages/common/module-utils/interfaces/configurable-module-cls.interface.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-empty-object-type */ -import { DynamicModule } from '../../interfaces'; +import { DynamicModule } from '../../interfaces/index.js'; import { DEFAULT_FACTORY_CLASS_METHOD_KEY, DEFAULT_METHOD_KEY, -} from '../constants'; -import { ConfigurableModuleAsyncOptions } from './configurable-module-async-options.interface'; +} from '../constants.js'; +import { ConfigurableModuleAsyncOptions } from './configurable-module-async-options.interface.js'; /** * Class that represents a blueprint/prototype for a configurable Nest module. diff --git a/packages/common/module-utils/interfaces/configurable-module-host.interface.ts b/packages/common/module-utils/interfaces/configurable-module-host.interface.ts index fb23d2d2a9..d2476f725c 100644 --- a/packages/common/module-utils/interfaces/configurable-module-host.interface.ts +++ b/packages/common/module-utils/interfaces/configurable-module-host.interface.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-empty-object-type */ -import { ConfigurableModuleAsyncOptions } from './configurable-module-async-options.interface'; -import { ConfigurableModuleCls } from './configurable-module-cls.interface'; +import { ConfigurableModuleAsyncOptions } from './configurable-module-async-options.interface.js'; +import { ConfigurableModuleCls } from './configurable-module-cls.interface.js'; /** * Configurable module host. See properties for more details diff --git a/packages/common/module-utils/interfaces/index.ts b/packages/common/module-utils/interfaces/index.ts index 35c5230763..ad104aa6aa 100644 --- a/packages/common/module-utils/interfaces/index.ts +++ b/packages/common/module-utils/interfaces/index.ts @@ -1,3 +1,3 @@ -export * from './configurable-module-async-options.interface'; -export * from './configurable-module-cls.interface'; -export * from './configurable-module-host.interface'; +export * from './configurable-module-async-options.interface.js'; +export * from './configurable-module-cls.interface.js'; +export * from './configurable-module-host.interface.js'; diff --git a/packages/common/module-utils/utils/generate-options-injection-token.util.ts b/packages/common/module-utils/utils/generate-options-injection-token.util.ts index 259a6afa33..ae47a1b88c 100644 --- a/packages/common/module-utils/utils/generate-options-injection-token.util.ts +++ b/packages/common/module-utils/utils/generate-options-injection-token.util.ts @@ -1,4 +1,4 @@ -import { randomStringGenerator } from '../../utils/random-string-generator.util'; +import { randomStringGenerator } from '../../utils/random-string-generator.util.js'; export function generateOptionsInjectionToken() { const hash = randomStringGenerator(); diff --git a/packages/common/module-utils/utils/get-injection-providers.util.ts b/packages/common/module-utils/utils/get-injection-providers.util.ts index f4057d2034..60ca0f34b6 100644 --- a/packages/common/module-utils/utils/get-injection-providers.util.ts +++ b/packages/common/module-utils/utils/get-injection-providers.util.ts @@ -1,10 +1,10 @@ -import { isUndefined } from '../../utils/shared.utils'; +import { isUndefined } from '../../utils/shared.utils.js'; import { FactoryProvider, InjectionToken, OptionalFactoryDependency, Provider, -} from '../../interfaces'; +} from '../../interfaces/index.js'; /** * @param value diff --git a/packages/common/module-utils/utils/index.ts b/packages/common/module-utils/utils/index.ts index 7125be0f74..0a229ec55d 100644 --- a/packages/common/module-utils/utils/index.ts +++ b/packages/common/module-utils/utils/index.ts @@ -1,2 +1,2 @@ -export * from './generate-options-injection-token.util'; -export * from './get-injection-providers.util'; +export * from './generate-options-injection-token.util.js'; +export * from './get-injection-providers.util.js'; diff --git a/packages/common/package.json b/packages/common/package.json index e1779a8ed8..23819380c1 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -17,6 +17,12 @@ "access": "public" }, "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "dependencies": { "file-type": "21.3.0", "iterare": "1.2.1", diff --git a/packages/common/pipes/default-value.pipe.ts b/packages/common/pipes/default-value.pipe.ts index 6afadf5e04..f8babe2620 100644 --- a/packages/common/pipes/default-value.pipe.ts +++ b/packages/common/pipes/default-value.pipe.ts @@ -1,9 +1,9 @@ -import { Injectable } from '../decorators/core/injectable.decorator'; +import { Injectable } from '../decorators/core/injectable.decorator.js'; import { ArgumentMetadata, PipeTransform, -} from '../interfaces/features/pipe-transform.interface'; -import { isNil, isNumber } from '../utils/shared.utils'; +} from '../interfaces/features/pipe-transform.interface.js'; +import { isNil, isNumber } from '../utils/shared.utils.js'; /** * Defines the built-in DefaultValue Pipe diff --git a/packages/common/pipes/file/file-type.validator.ts b/packages/common/pipes/file/file-type.validator.ts index fcd100d2e3..a03cb73e3e 100644 --- a/packages/common/pipes/file/file-type.validator.ts +++ b/packages/common/pipes/file/file-type.validator.ts @@ -1,9 +1,7 @@ -import { pathToFileURL } from 'url'; -import { Logger } from '../../services/logger.service'; -import { FileValidatorContext } from './file-validator-context.interface'; -import { FileValidator } from './file-validator.interface'; -import { IFile } from './interfaces'; -import { loadEsm } from 'load-esm'; +import { Logger } from '../../services/logger.service.js'; +import { FileValidatorContext } from './file-validator-context.interface.js'; +import { FileValidator } from './file-validator.interface.js'; +import { IFile } from './interfaces/index.js'; const logger = new Logger('FileTypeValidator'); type FileTypeValidatorContext = FileValidatorContext< @@ -124,15 +122,7 @@ export class FileTypeValidator extends FileValidator< } try { - let fileTypeModule: string; - try { - const resolvedPath = require.resolve('file-type'); - fileTypeModule = pathToFileURL(resolvedPath).href; - } catch { - fileTypeModule = 'file-type'; - } - const { fileTypeFromBuffer } = - await loadEsm(fileTypeModule); + const { fileTypeFromBuffer } = await import('file-type'); const fileType = await fileTypeFromBuffer(file.buffer); if (fileType) { diff --git a/packages/common/pipes/file/file-validator-context.interface.ts b/packages/common/pipes/file/file-validator-context.interface.ts index cecec24e96..67211bb2ce 100644 --- a/packages/common/pipes/file/file-validator-context.interface.ts +++ b/packages/common/pipes/file/file-validator-context.interface.ts @@ -1,4 +1,4 @@ -import { IFile } from './interfaces'; +import { IFile } from './interfaces/index.js'; export type FileValidatorContext = { file?: IFile; diff --git a/packages/common/pipes/file/file-validator.interface.ts b/packages/common/pipes/file/file-validator.interface.ts index 326a55f72c..c7729a3004 100644 --- a/packages/common/pipes/file/file-validator.interface.ts +++ b/packages/common/pipes/file/file-validator.interface.ts @@ -1,4 +1,4 @@ -import { IFile } from './interfaces'; +import { IFile } from './interfaces/index.js'; /** * Interface describing FileValidators, which can be added to a ParseFilePipe diff --git a/packages/common/pipes/file/index.ts b/packages/common/pipes/file/index.ts index 11d19e3188..b0da6849bd 100644 --- a/packages/common/pipes/file/index.ts +++ b/packages/common/pipes/file/index.ts @@ -1,6 +1,6 @@ -export * from './file-type.validator'; -export * from './file-validator.interface'; -export * from './max-file-size.validator'; -export * from './parse-file-options.interface'; -export * from './parse-file.pipe'; -export * from './parse-file-pipe.builder'; +export * from './file-type.validator.js'; +export * from './file-validator.interface.js'; +export * from './max-file-size.validator.js'; +export * from './parse-file-options.interface.js'; +export * from './parse-file.pipe.js'; +export * from './parse-file-pipe.builder.js'; diff --git a/packages/common/pipes/file/interfaces/index.ts b/packages/common/pipes/file/interfaces/index.ts index 09d8f3ca8f..4b8a513919 100644 --- a/packages/common/pipes/file/interfaces/index.ts +++ b/packages/common/pipes/file/interfaces/index.ts @@ -1 +1 @@ -export * from './file.interface'; +export * from './file.interface.js'; diff --git a/packages/common/pipes/file/max-file-size.validator.ts b/packages/common/pipes/file/max-file-size.validator.ts index 44baeddefa..54c8d5d0b7 100644 --- a/packages/common/pipes/file/max-file-size.validator.ts +++ b/packages/common/pipes/file/max-file-size.validator.ts @@ -1,6 +1,6 @@ -import { FileValidatorContext } from './file-validator-context.interface'; -import { FileValidator } from './file-validator.interface'; -import { IFile } from './interfaces'; +import { FileValidatorContext } from './file-validator-context.interface.js'; +import { FileValidator } from './file-validator.interface.js'; +import { IFile } from './interfaces/index.js'; type MaxFileSizeValidatorContext = FileValidatorContext< Omit diff --git a/packages/common/pipes/file/parse-file-options.interface.ts b/packages/common/pipes/file/parse-file-options.interface.ts index f9c67daa87..c7775953a7 100644 --- a/packages/common/pipes/file/parse-file-options.interface.ts +++ b/packages/common/pipes/file/parse-file-options.interface.ts @@ -1,5 +1,5 @@ -import { ErrorHttpStatusCode } from '../../utils/http-error-by-code.util'; -import { FileValidator } from './file-validator.interface'; +import { ErrorHttpStatusCode } from '../../utils/http-error-by-code.util.js'; +import { FileValidator } from './file-validator.interface.js'; /** * @publicApi diff --git a/packages/common/pipes/file/parse-file-pipe.builder.ts b/packages/common/pipes/file/parse-file-pipe.builder.ts index 9199fec3d9..d5d4810adb 100644 --- a/packages/common/pipes/file/parse-file-pipe.builder.ts +++ b/packages/common/pipes/file/parse-file-pipe.builder.ts @@ -1,14 +1,14 @@ import { FileTypeValidator, FileTypeValidatorOptions, -} from './file-type.validator'; -import { FileValidator } from './file-validator.interface'; +} from './file-type.validator.js'; +import { FileValidator } from './file-validator.interface.js'; import { MaxFileSizeValidator, MaxFileSizeValidatorOptions, -} from './max-file-size.validator'; -import { ParseFileOptions } from './parse-file-options.interface'; -import { ParseFilePipe } from './parse-file.pipe'; +} from './max-file-size.validator.js'; +import { ParseFileOptions } from './parse-file-options.interface.js'; +import { ParseFilePipe } from './parse-file.pipe.js'; /** * @publicApi diff --git a/packages/common/pipes/file/parse-file.pipe.ts b/packages/common/pipes/file/parse-file.pipe.ts index d2ea60e505..9d1cae5026 100644 --- a/packages/common/pipes/file/parse-file.pipe.ts +++ b/packages/common/pipes/file/parse-file.pipe.ts @@ -1,10 +1,10 @@ -import { Injectable, Optional } from '../../decorators/core'; -import { HttpStatus } from '../../enums'; -import { PipeTransform } from '../../interfaces/features/pipe-transform.interface'; -import { HttpErrorByCode } from '../../utils/http-error-by-code.util'; -import { isEmpty, isObject, isUndefined } from '../../utils/shared.utils'; -import { FileValidator } from './file-validator.interface'; -import { ParseFileOptions } from './parse-file-options.interface'; +import { Injectable, Optional } from '../../decorators/core/index.js'; +import { HttpStatus } from '../../enums/index.js'; +import { PipeTransform } from '../../interfaces/features/pipe-transform.interface.js'; +import { HttpErrorByCode } from '../../utils/http-error-by-code.util.js'; +import { isEmpty, isObject, isUndefined } from '../../utils/shared.utils.js'; +import { FileValidator } from './file-validator.interface.js'; +import { ParseFileOptions } from './parse-file-options.interface.js'; /** * Defines the built-in ParseFile Pipe. This pipe can be used to validate incoming files diff --git a/packages/common/pipes/index.ts b/packages/common/pipes/index.ts index f416b9467a..77da75d602 100644 --- a/packages/common/pipes/index.ts +++ b/packages/common/pipes/index.ts @@ -1,10 +1,10 @@ -export * from './default-value.pipe'; -export * from './file'; -export * from './parse-array.pipe'; -export * from './parse-bool.pipe'; -export * from './parse-date.pipe'; -export * from './parse-enum.pipe'; -export * from './parse-float.pipe'; -export * from './parse-int.pipe'; -export * from './parse-uuid.pipe'; -export * from './validation.pipe'; +export * from './default-value.pipe.js'; +export * from './file/index.js'; +export * from './parse-array.pipe.js'; +export * from './parse-bool.pipe.js'; +export * from './parse-date.pipe.js'; +export * from './parse-enum.pipe.js'; +export * from './parse-float.pipe.js'; +export * from './parse-int.pipe.js'; +export * from './parse-uuid.pipe.js'; +export * from './validation.pipe.js'; diff --git a/packages/common/pipes/parse-array.pipe.ts b/packages/common/pipes/parse-array.pipe.ts index 5bc5bd029a..105342b883 100644 --- a/packages/common/pipes/parse-array.pipe.ts +++ b/packages/common/pipes/parse-array.pipe.ts @@ -1,14 +1,14 @@ -import { Injectable } from '../decorators/core/injectable.decorator'; -import { Optional } from '../decorators/core/optional.decorator'; -import { HttpStatus } from '../enums/http-status.enum'; -import { Type } from '../interfaces'; +import { Injectable } from '../decorators/core/injectable.decorator.js'; +import { Optional } from '../decorators/core/optional.decorator.js'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { Type } from '../interfaces/index.js'; import { ArgumentMetadata, PipeTransform, -} from '../interfaces/features/pipe-transform.interface'; -import { HttpErrorByCode } from '../utils/http-error-by-code.util'; -import { isNil, isString, isUndefined } from '../utils/shared.utils'; -import { ValidationPipe, ValidationPipeOptions } from './validation.pipe'; +} from '../interfaces/features/pipe-transform.interface.js'; +import { HttpErrorByCode } from '../utils/http-error-by-code.util.js'; +import { isNil, isString, isUndefined } from '../utils/shared.utils.js'; +import { ValidationPipe, ValidationPipeOptions } from './validation.pipe.js'; const VALIDATION_ERROR_MESSAGE = 'Validation failed (parsable array expected)'; const DEFAULT_ARRAY_SEPARATOR = ','; diff --git a/packages/common/pipes/parse-bool.pipe.ts b/packages/common/pipes/parse-bool.pipe.ts index 177ee7cbee..b22a3dd0fa 100644 --- a/packages/common/pipes/parse-bool.pipe.ts +++ b/packages/common/pipes/parse-bool.pipe.ts @@ -1,15 +1,15 @@ -import { Injectable } from '../decorators/core/injectable.decorator'; -import { Optional } from '../decorators/core/optional.decorator'; -import { HttpStatus } from '../enums/http-status.enum'; +import { Injectable } from '../decorators/core/injectable.decorator.js'; +import { Optional } from '../decorators/core/optional.decorator.js'; +import { HttpStatus } from '../enums/http-status.enum.js'; import { ArgumentMetadata, PipeTransform, -} from '../interfaces/features/pipe-transform.interface'; +} from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { isNil } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { isNil } from '../utils/shared.utils.js'; /** * @publicApi diff --git a/packages/common/pipes/parse-date.pipe.ts b/packages/common/pipes/parse-date.pipe.ts index 22f3bf25c5..d7b29a0285 100644 --- a/packages/common/pipes/parse-date.pipe.ts +++ b/packages/common/pipes/parse-date.pipe.ts @@ -1,11 +1,11 @@ -import { Injectable } from '../decorators/core/injectable.decorator'; -import { HttpStatus } from '../enums/http-status.enum'; -import { PipeTransform } from '../interfaces/features/pipe-transform.interface'; +import { Injectable } from '../decorators/core/injectable.decorator.js'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { PipeTransform } from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { isNil } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { isNil } from '../utils/shared.utils.js'; export interface ParseDatePipeOptions { /** diff --git a/packages/common/pipes/parse-enum.pipe.ts b/packages/common/pipes/parse-enum.pipe.ts index 47f3c263ab..10492624eb 100644 --- a/packages/common/pipes/parse-enum.pipe.ts +++ b/packages/common/pipes/parse-enum.pipe.ts @@ -1,11 +1,11 @@ -import { Injectable, Optional } from '../decorators/core'; -import { ArgumentMetadata, HttpStatus } from '../index'; -import { PipeTransform } from '../interfaces/features/pipe-transform.interface'; +import { Injectable, Optional } from '../decorators/core/index.js'; +import { ArgumentMetadata, HttpStatus } from '../index.js'; +import { PipeTransform } from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { isNil } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { isNil } from '../utils/shared.utils.js'; /** * @publicApi diff --git a/packages/common/pipes/parse-float.pipe.ts b/packages/common/pipes/parse-float.pipe.ts index 04f5e97e27..858c82475a 100644 --- a/packages/common/pipes/parse-float.pipe.ts +++ b/packages/common/pipes/parse-float.pipe.ts @@ -1,11 +1,11 @@ -import { Injectable, Optional } from '../decorators/core'; -import { ArgumentMetadata, HttpStatus } from '../index'; -import { PipeTransform } from '../interfaces/features/pipe-transform.interface'; +import { Injectable, Optional } from '../decorators/core/index.js'; +import { ArgumentMetadata, HttpStatus } from '../index.js'; +import { PipeTransform } from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { isNil } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { isNil } from '../utils/shared.utils.js'; /** * @publicApi diff --git a/packages/common/pipes/parse-int.pipe.ts b/packages/common/pipes/parse-int.pipe.ts index d74aa0205a..f783010c92 100644 --- a/packages/common/pipes/parse-int.pipe.ts +++ b/packages/common/pipes/parse-int.pipe.ts @@ -1,15 +1,15 @@ -import { Injectable } from '../decorators/core/injectable.decorator'; -import { Optional } from '../decorators/core/optional.decorator'; -import { HttpStatus } from '../enums/http-status.enum'; +import { Injectable } from '../decorators/core/injectable.decorator.js'; +import { Optional } from '../decorators/core/optional.decorator.js'; +import { HttpStatus } from '../enums/http-status.enum.js'; import { ArgumentMetadata, PipeTransform, -} from '../interfaces/features/pipe-transform.interface'; +} from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { isNil } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { isNil } from '../utils/shared.utils.js'; /** * @publicApi diff --git a/packages/common/pipes/parse-uuid.pipe.ts b/packages/common/pipes/parse-uuid.pipe.ts index 1c67860b9c..2cd8d5fe46 100644 --- a/packages/common/pipes/parse-uuid.pipe.ts +++ b/packages/common/pipes/parse-uuid.pipe.ts @@ -1,15 +1,15 @@ -import { Injectable } from '../decorators/core/injectable.decorator'; -import { Optional } from '../decorators/core/optional.decorator'; -import { HttpStatus } from '../enums/http-status.enum'; +import { Injectable } from '../decorators/core/injectable.decorator.js'; +import { Optional } from '../decorators/core/optional.decorator.js'; +import { HttpStatus } from '../enums/http-status.enum.js'; import { ArgumentMetadata, PipeTransform, -} from '../interfaces/features/pipe-transform.interface'; +} from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { isNil, isString } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { isNil, isString } from '../utils/shared.utils.js'; /** * @publicApi diff --git a/packages/common/pipes/validation.pipe.ts b/packages/common/pipes/validation.pipe.ts index 3cd3676988..ef373052f0 100644 --- a/packages/common/pipes/validation.pipe.ts +++ b/packages/common/pipes/validation.pipe.ts @@ -1,24 +1,24 @@ import { iterate } from 'iterare'; import { types } from 'util'; -import { Optional } from '../decorators'; -import { Injectable } from '../decorators/core'; -import { HttpStatus } from '../enums/http-status.enum'; -import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface'; -import { TransformerPackage } from '../interfaces/external/transformer-package.interface'; -import { ValidationError } from '../interfaces/external/validation-error.interface'; -import { ValidatorOptions } from '../interfaces/external/validator-options.interface'; -import { ValidatorPackage } from '../interfaces/external/validator-package.interface'; +import { Injectable } from '../decorators/core/index.js'; +import { Optional } from '../decorators/index.js'; +import { HttpStatus } from '../enums/http-status.enum.js'; +import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface.js'; +import { TransformerPackage } from '../interfaces/external/transformer-package.interface.js'; +import { ValidationError } from '../interfaces/external/validation-error.interface.js'; +import { ValidatorOptions } from '../interfaces/external/validator-options.interface.js'; +import { ValidatorPackage } from '../interfaces/external/validator-package.interface.js'; import { ArgumentMetadata, PipeTransform, -} from '../interfaces/features/pipe-transform.interface'; -import { Type } from '../interfaces/type.interface'; +} from '../interfaces/features/pipe-transform.interface.js'; +import { Type } from '../interfaces/type.interface.js'; import { ErrorHttpStatusCode, HttpErrorByCode, -} from '../utils/http-error-by-code.util'; -import { loadPackage } from '../utils/load-package.util'; -import { isNil, isUndefined } from '../utils/shared.utils'; +} from '../utils/http-error-by-code.util.js'; +import { loadPackage } from '../utils/load-package.util.js'; +import { isNil, isUndefined } from '../utils/shared.utils.js'; /** * @publicApi @@ -35,8 +35,8 @@ export interface ValidationPipeOptions extends ValidatorOptions { transformerPackage?: TransformerPackage; } -let classValidator: ValidatorPackage = {} as any; -let classTransformer: TransformerPackage = {} as any; +let classValidator: any = {} as any; +let classTransformer: any = {} as any; /** * Built-in JavaScript types that should be excluded from prototype stripping @@ -90,22 +90,26 @@ export class ValidationPipe implements PipeTransform { protected loadValidator( validatorPackage?: ValidatorPackage, - ): ValidatorPackage { + ): ValidatorPackage | Promise { return ( validatorPackage ?? - loadPackage('class-validator', 'ValidationPipe', () => - require('class-validator'), + loadPackage( + 'class-validator', + 'ValidationPipe', + () => import('class-validator'), ) ); } protected loadTransformer( transformerPackage?: TransformerPackage, - ): TransformerPackage { + ): TransformerPackage | Promise { return ( transformerPackage ?? - loadPackage('class-transformer', 'ValidationPipe', () => - require('class-transformer'), + loadPackage( + 'class-transformer', + 'ValidationPipe', + () => import('class-transformer'), ) ); } @@ -121,6 +125,10 @@ export class ValidationPipe implements PipeTransform { ? this.transformPrimitive(value, metadata) : value; } + + classValidator = (await classValidator) as ValidatorPackage; + classTransformer = (await classTransformer) as TransformerPackage; + const originalValue = value; value = this.toEmptyIfNil(value, metatype); diff --git a/packages/common/serializer/class-serializer.interceptor.ts b/packages/common/serializer/class-serializer.interceptor.ts index 875bb1a308..96802f365a 100644 --- a/packages/common/serializer/class-serializer.interceptor.ts +++ b/packages/common/serializer/class-serializer.interceptor.ts @@ -1,16 +1,20 @@ -import { ClassSerializerContextOptions } from './class-serializer.interfaces'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { Inject, Injectable, Optional } from '../decorators/core'; -import { StreamableFile } from '../file-stream'; -import { CallHandler, ExecutionContext, NestInterceptor } from '../interfaces'; -import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface'; -import { TransformerPackage } from '../interfaces/external/transformer-package.interface'; -import { loadPackage } from '../utils/load-package.util'; -import { isObject } from '../utils/shared.utils'; -import { CLASS_SERIALIZER_OPTIONS } from './class-serializer.constants'; +import { Inject, Injectable, Optional } from '../decorators/core/index.js'; +import { StreamableFile } from '../file-stream/index.js'; +import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface.js'; +import { TransformerPackage } from '../interfaces/external/transformer-package.interface.js'; +import { + CallHandler, + ExecutionContext, + NestInterceptor, +} from '../interfaces/index.js'; +import { loadPackage } from '../utils/load-package.util.js'; +import { isObject } from '../utils/shared.utils.js'; +import { CLASS_SERIALIZER_OPTIONS } from './class-serializer.constants.js'; +import { ClassSerializerContextOptions } from './class-serializer.interfaces.js'; -let classTransformer: TransformerPackage = {} as any; +let classTransformer: any = {} as any; export interface PlainLiteralObject { [key: string]: any; @@ -40,16 +44,19 @@ export class ClassSerializerInterceptor implements NestInterceptor { ) { classTransformer = defaultOptions?.transformerPackage ?? - loadPackage('class-transformer', 'ClassSerializerInterceptor', () => - require('class-transformer'), + loadPackage( + 'class-transformer', + 'ClassSerializerInterceptor', + () => import('class-transformer'), ); - - if (!defaultOptions?.transformerPackage) { - require('class-transformer'); - } } - intercept(context: ExecutionContext, next: CallHandler): Observable { + async intercept( + context: ExecutionContext, + next: CallHandler, + ): Promise> { + classTransformer = (await classTransformer) as TransformerPackage; + const contextOptions = this.getContextOptions(context); const options = { ...this.defaultOptions, diff --git a/packages/common/serializer/class-serializer.interfaces.ts b/packages/common/serializer/class-serializer.interfaces.ts index c5404177cf..725c58b7f2 100644 --- a/packages/common/serializer/class-serializer.interfaces.ts +++ b/packages/common/serializer/class-serializer.interfaces.ts @@ -1,5 +1,5 @@ -import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface'; -import { Type } from '../interfaces'; +import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface.js'; +import { Type } from '../interfaces/index.js'; /** * @publicApi diff --git a/packages/common/serializer/decorators/index.ts b/packages/common/serializer/decorators/index.ts index eff9f6fe4a..3a87339d43 100644 --- a/packages/common/serializer/decorators/index.ts +++ b/packages/common/serializer/decorators/index.ts @@ -1 +1 @@ -export * from './serialize-options.decorator'; +export * from './serialize-options.decorator.js'; diff --git a/packages/common/serializer/decorators/serialize-options.decorator.ts b/packages/common/serializer/decorators/serialize-options.decorator.ts index bd92695fd9..036b8a47b5 100644 --- a/packages/common/serializer/decorators/serialize-options.decorator.ts +++ b/packages/common/serializer/decorators/serialize-options.decorator.ts @@ -1,6 +1,6 @@ -import { SetMetadata } from '../../decorators'; -import { ClassSerializerContextOptions } from '../class-serializer.interfaces'; -import { CLASS_SERIALIZER_OPTIONS } from '../class-serializer.constants'; +import { SetMetadata } from '../../decorators/index.js'; +import { ClassSerializerContextOptions } from '../class-serializer.interfaces.js'; +import { CLASS_SERIALIZER_OPTIONS } from '../class-serializer.constants.js'; /** * @publicApi diff --git a/packages/common/serializer/index.ts b/packages/common/serializer/index.ts index 828c4aec44..67bb741bc7 100644 --- a/packages/common/serializer/index.ts +++ b/packages/common/serializer/index.ts @@ -1,3 +1,3 @@ -export * from './class-serializer.interceptor'; -export * from './decorators'; -export * from './class-serializer.interfaces'; +export * from './class-serializer.interceptor.js'; +export * from './decorators/index.js'; +export * from './class-serializer.interfaces.js'; diff --git a/packages/common/services/console-logger.service.ts b/packages/common/services/console-logger.service.ts index 119e23a802..44f252f358 100644 --- a/packages/common/services/console-logger.service.ts +++ b/packages/common/services/console-logger.service.ts @@ -1,14 +1,14 @@ import { inspect, InspectOptions } from 'util'; -import { Injectable, Optional } from '../decorators/core'; -import { clc, yellow, isColorAllowed } from '../utils/cli-colors.util'; +import { Injectable, Optional } from '../decorators/core/index.js'; +import { clc, yellow, isColorAllowed } from '../utils/cli-colors.util.js'; import { isFunction, isPlainObject, isString, isUndefined, -} from '../utils/shared.utils'; -import { LoggerService, LogLevel } from './logger.service'; -import { isLogLevelEnabled } from './utils/is-log-level-enabled.util'; +} from '../utils/shared.utils.js'; +import { LoggerService, LogLevel } from './logger.service.js'; +import { isLogLevelEnabled } from './utils/is-log-level-enabled.util.js'; const DEFAULT_DEPTH = 5; diff --git a/packages/common/services/index.ts b/packages/common/services/index.ts index c1cad965b6..34ba8f13b4 100644 --- a/packages/common/services/index.ts +++ b/packages/common/services/index.ts @@ -1,3 +1,3 @@ -export * from './console-logger.service'; -export * from './logger.service'; -export * from './utils/filter-log-levels.util'; +export * from './console-logger.service.js'; +export * from './logger.service.js'; +export * from './utils/filter-log-levels.util.js'; diff --git a/packages/common/services/logger.service.ts b/packages/common/services/logger.service.ts index a49f651ffa..63f5d491e3 100644 --- a/packages/common/services/logger.service.ts +++ b/packages/common/services/logger.service.ts @@ -1,7 +1,7 @@ -import { Injectable, Optional } from '../decorators/core'; -import { isObject } from '../utils/shared.utils'; -import { ConsoleLogger } from './console-logger.service'; -import { isLogLevelEnabled } from './utils'; +import { Injectable, Optional } from '../decorators/core/index.js'; +import { isObject } from '../utils/shared.utils.js'; +import { ConsoleLogger } from './console-logger.service.js'; +import { isLogLevelEnabled } from './utils/index.js'; export const LOG_LEVELS = [ 'verbose', diff --git a/packages/common/services/utils/filter-log-levels.util.ts b/packages/common/services/utils/filter-log-levels.util.ts index 6c0bd0ff7f..38c3b2abbc 100644 --- a/packages/common/services/utils/filter-log-levels.util.ts +++ b/packages/common/services/utils/filter-log-levels.util.ts @@ -1,5 +1,5 @@ -import { LOG_LEVELS, LogLevel } from '../logger.service'; -import { isLogLevel } from './is-log-level.util'; +import { LOG_LEVELS, LogLevel } from '../logger.service.js'; +import { isLogLevel } from './is-log-level.util.js'; /** * @publicApi diff --git a/packages/common/services/utils/index.ts b/packages/common/services/utils/index.ts index e6ad943016..ff3175fce3 100644 --- a/packages/common/services/utils/index.ts +++ b/packages/common/services/utils/index.ts @@ -1,3 +1,3 @@ -export * from './filter-log-levels.util'; -export * from './is-log-level-enabled.util'; -export * from './is-log-level.util'; +export * from './filter-log-levels.util.js'; +export * from './is-log-level-enabled.util.js'; +export * from './is-log-level.util.js'; diff --git a/packages/common/services/utils/is-log-level-enabled.util.ts b/packages/common/services/utils/is-log-level-enabled.util.ts index b902a1b2e5..283748a010 100644 --- a/packages/common/services/utils/is-log-level-enabled.util.ts +++ b/packages/common/services/utils/is-log-level-enabled.util.ts @@ -1,4 +1,4 @@ -import { LogLevel } from '../logger.service'; +import { LogLevel } from '../logger.service.js'; const LOG_LEVEL_VALUES: Record = { verbose: 0, diff --git a/packages/common/services/utils/is-log-level.util.ts b/packages/common/services/utils/is-log-level.util.ts index 623e2f274a..da363f9dda 100644 --- a/packages/common/services/utils/is-log-level.util.ts +++ b/packages/common/services/utils/is-log-level.util.ts @@ -1,4 +1,4 @@ -import { LOG_LEVELS, LogLevel } from '../logger.service'; +import { LOG_LEVELS, LogLevel } from '../logger.service.js'; /** * @publicApi diff --git a/packages/common/test/decorators/apply-decorators.spec.ts b/packages/common/test/decorators/apply-decorators.spec.ts index d804206cc0..6bcfe80f48 100644 --- a/packages/common/test/decorators/apply-decorators.spec.ts +++ b/packages/common/test/decorators/apply-decorators.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { GUARDS_METADATA } from '../../constants'; -import { applyDecorators, UseGuards } from '../../decorators'; -import { CanActivate } from '../../interfaces'; +import { GUARDS_METADATA } from '../../constants.js'; +import { applyDecorators, UseGuards } from '../../decorators/index.js'; +import { CanActivate } from '../../interfaces/index.js'; describe('applyDecorators', () => { function testDecorator1(param: number) { diff --git a/packages/common/test/decorators/bind.decorator.spec.ts b/packages/common/test/decorators/bind.decorator.spec.ts index 9aa2decfac..dce2834569 100644 --- a/packages/common/test/decorators/bind.decorator.spec.ts +++ b/packages/common/test/decorators/bind.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { ROUTE_ARGS_METADATA } from '../../constants'; -import { Bind } from '../../decorators/core/bind.decorator'; -import { Req } from '../../decorators/http/route-params.decorator'; +import { ROUTE_ARGS_METADATA } from '../../constants.js'; +import { Bind } from '../../decorators/core/bind.decorator.js'; +import { Req } from '../../decorators/http/route-params.decorator.js'; describe('@Bind', () => { class TestWithMethod { diff --git a/packages/common/test/decorators/catch.decorator.spec.ts b/packages/common/test/decorators/catch.decorator.spec.ts index 5fff8ebf1e..1ff53f3152 100644 --- a/packages/common/test/decorators/catch.decorator.spec.ts +++ b/packages/common/test/decorators/catch.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { CATCH_WATERMARK, FILTER_CATCH_EXCEPTIONS } from '../../constants'; -import { Catch } from '../../decorators/core/catch.decorator'; +import { CATCH_WATERMARK, FILTER_CATCH_EXCEPTIONS } from '../../constants.js'; +import { Catch } from '../../decorators/core/catch.decorator.js'; describe('@Catch', () => { const exceptions: any = ['exception', 'exception2']; diff --git a/packages/common/test/decorators/controller.decorator.spec.ts b/packages/common/test/decorators/controller.decorator.spec.ts index 100a4ecbba..774dbc06ce 100644 --- a/packages/common/test/decorators/controller.decorator.spec.ts +++ b/packages/common/test/decorators/controller.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { VERSION_METADATA, CONTROLLER_WATERMARK } from '../../constants'; -import { Controller } from '../../decorators/core/controller.decorator'; +import { VERSION_METADATA, CONTROLLER_WATERMARK } from '../../constants.js'; +import { Controller } from '../../decorators/core/controller.decorator.js'; describe('@Controller', () => { const reflectedPath = 'test'; diff --git a/packages/common/test/decorators/create-param-decorator.spec.ts b/packages/common/test/decorators/create-param-decorator.spec.ts index 744d655c16..039ab80446 100644 --- a/packages/common/test/decorators/create-param-decorator.spec.ts +++ b/packages/common/test/decorators/create-param-decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { ROUTE_ARGS_METADATA } from '../../constants'; -import { createParamDecorator } from '../../decorators/http/create-route-param-metadata.decorator'; -import { ParseIntPipe } from '../../index'; +import { ROUTE_ARGS_METADATA } from '../../constants.js'; +import { createParamDecorator } from '../../decorators/http/create-route-param-metadata.decorator.js'; +import { ParseIntPipe } from '../../index.js'; describe('createParamDecorator', () => { let result; diff --git a/packages/common/test/decorators/dependencies.decorator.spec.ts b/packages/common/test/decorators/dependencies.decorator.spec.ts index 94a8b08a0d..3a5da186a8 100644 --- a/packages/common/test/decorators/dependencies.decorator.spec.ts +++ b/packages/common/test/decorators/dependencies.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { Dependencies } from '../../decorators/core/dependencies.decorator'; -import { PARAMTYPES_METADATA } from '../../constants'; +import { Dependencies } from '../../decorators/core/dependencies.decorator.js'; +import { PARAMTYPES_METADATA } from '../../constants.js'; describe('@Dependencies', () => { const dep = 'test', diff --git a/packages/common/test/decorators/exception-filters.decorator.spec.ts b/packages/common/test/decorators/exception-filters.decorator.spec.ts index 36d0b7c95c..d6d251d8f0 100644 --- a/packages/common/test/decorators/exception-filters.decorator.spec.ts +++ b/packages/common/test/decorators/exception-filters.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { EXCEPTION_FILTERS_METADATA } from '../../constants'; -import { UseFilters } from '../../decorators/core/exception-filters.decorator'; -import { InvalidDecoratorItemException } from '../../utils/validate-each.util'; +import { EXCEPTION_FILTERS_METADATA } from '../../constants.js'; +import { UseFilters } from '../../decorators/core/exception-filters.decorator.js'; +import { InvalidDecoratorItemException } from '../../utils/validate-each.util.js'; class Filter { catch() {} diff --git a/packages/common/test/decorators/global.decorator.spec.ts b/packages/common/test/decorators/global.decorator.spec.ts index 8eac6bb061..ea3f696e0a 100644 --- a/packages/common/test/decorators/global.decorator.spec.ts +++ b/packages/common/test/decorators/global.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { GLOBAL_MODULE_METADATA } from '../../constants'; -import { Global } from '../../index'; +import { GLOBAL_MODULE_METADATA } from '../../constants.js'; +import { Global } from '../../index.js'; describe('@Global', () => { @Global() diff --git a/packages/common/test/decorators/header.decorator.spec.ts b/packages/common/test/decorators/header.decorator.spec.ts index 9da461d051..c38dbb0a9c 100644 --- a/packages/common/test/decorators/header.decorator.spec.ts +++ b/packages/common/test/decorators/header.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { Header } from '../../decorators/http'; -import { HEADERS_METADATA } from '../../constants'; +import { Header } from '../../decorators/http/index.js'; +import { HEADERS_METADATA } from '../../constants.js'; describe('@Header', () => { class Test { diff --git a/packages/common/test/decorators/http-code.decorator.spec.ts b/packages/common/test/decorators/http-code.decorator.spec.ts index 498fd5afe9..c994701e67 100644 --- a/packages/common/test/decorators/http-code.decorator.spec.ts +++ b/packages/common/test/decorators/http-code.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { HttpCode } from '../../decorators/http/http-code.decorator'; -import { HTTP_CODE_METADATA } from '../../constants'; +import { HttpCode } from '../../decorators/http/http-code.decorator.js'; +import { HTTP_CODE_METADATA } from '../../constants.js'; describe('@HttpCode', () => { const httpCode = 200; diff --git a/packages/common/test/decorators/inject.decorator.spec.ts b/packages/common/test/decorators/inject.decorator.spec.ts index 5c40c25352..f44de14c03 100644 --- a/packages/common/test/decorators/inject.decorator.spec.ts +++ b/packages/common/test/decorators/inject.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { SELF_DECLARED_DEPS_METADATA } from '../../constants'; -import { Inject } from '../../index'; +import { SELF_DECLARED_DEPS_METADATA } from '../../constants.js'; +import { Inject } from '../../index.js'; describe('@Inject', () => { const opaqueToken = () => ({}); diff --git a/packages/common/test/decorators/injectable.decorator.spec.ts b/packages/common/test/decorators/injectable.decorator.spec.ts index 388ecd7101..617986ad43 100644 --- a/packages/common/test/decorators/injectable.decorator.spec.ts +++ b/packages/common/test/decorators/injectable.decorator.spec.ts @@ -1,6 +1,9 @@ import { expect } from 'chai'; -import { SCOPE_OPTIONS_METADATA, INJECTABLE_WATERMARK } from '../../constants'; -import { Injectable, mixin } from '../../index'; +import { + SCOPE_OPTIONS_METADATA, + INJECTABLE_WATERMARK, +} from '../../constants.js'; +import { Injectable, mixin } from '../../index.js'; describe('@Injectable', () => { const options = {}; diff --git a/packages/common/test/decorators/module.decorator.spec.ts b/packages/common/test/decorators/module.decorator.spec.ts index dafebe5cd4..78c065d957 100644 --- a/packages/common/test/decorators/module.decorator.spec.ts +++ b/packages/common/test/decorators/module.decorator.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { Module } from '../../decorators/modules/module.decorator'; +import { Module } from '../../decorators/modules/module.decorator.js'; describe('@Module', () => { const moduleProps = { diff --git a/packages/common/test/decorators/redirect.decorator.spec.ts b/packages/common/test/decorators/redirect.decorator.spec.ts index 358cef45e5..73548bb315 100644 --- a/packages/common/test/decorators/redirect.decorator.spec.ts +++ b/packages/common/test/decorators/redirect.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { REDIRECT_METADATA } from '../../constants'; -import { Redirect } from '../../decorators/http/redirect.decorator'; -import { HttpStatus } from '../../index'; +import { REDIRECT_METADATA } from '../../constants.js'; +import { Redirect } from '../../decorators/http/redirect.decorator.js'; +import { HttpStatus } from '../../index.js'; describe('@Redirect', () => { const url = 'http://test.com'; diff --git a/packages/common/test/decorators/render.decorator.spec.ts b/packages/common/test/decorators/render.decorator.spec.ts index 5ea573568e..27e0bfb00a 100644 --- a/packages/common/test/decorators/render.decorator.spec.ts +++ b/packages/common/test/decorators/render.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { Render } from '../../decorators/http/render.decorator'; -import { RENDER_METADATA } from '../../constants'; +import { Render } from '../../decorators/http/render.decorator.js'; +import { RENDER_METADATA } from '../../constants.js'; describe('@Render', () => { const template = 'template'; diff --git a/packages/common/test/decorators/request-mapping.decorator.spec.ts b/packages/common/test/decorators/request-mapping.decorator.spec.ts index 867c24995d..d9ff3b7be8 100644 --- a/packages/common/test/decorators/request-mapping.decorator.spec.ts +++ b/packages/common/test/decorators/request-mapping.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RequestMapping } from '../../decorators/http/request-mapping.decorator'; -import { RequestMethod } from '../../enums/request-method.enum'; +import { RequestMapping } from '../../decorators/http/request-mapping.decorator.js'; +import { RequestMethod } from '../../enums/request-method.enum.js'; describe('@RequestMapping', () => { const requestProps = { diff --git a/packages/common/test/decorators/route-params.decorator.spec.ts b/packages/common/test/decorators/route-params.decorator.spec.ts index da3a85a9ad..781e40b9fe 100644 --- a/packages/common/test/decorators/route-params.decorator.spec.ts +++ b/packages/common/test/decorators/route-params.decorator.spec.ts @@ -1,6 +1,12 @@ import { expect } from 'chai'; -import { Body, HostParam, Param, Query, Search } from '../../decorators'; -import { RequestMethod } from '../../enums/request-method.enum'; +import { + Body, + HostParam, + Param, + Query, + Search, +} from '../../decorators/index.js'; +import { RequestMethod } from '../../enums/request-method.enum.js'; import { All, Delete, @@ -16,9 +22,9 @@ import { Copy, Lock, Unlock, -} from '../../index'; -import { ROUTE_ARGS_METADATA } from '../../constants'; -import { RouteParamtypes } from '../../enums/route-paramtypes.enum'; +} from '../../index.js'; +import { ROUTE_ARGS_METADATA } from '../../constants.js'; +import { RouteParamtypes } from '../../enums/route-paramtypes.enum.js'; describe('@Get', () => { const requestPath = 'test'; diff --git a/packages/common/test/decorators/set-metadata.decorator.spec.ts b/packages/common/test/decorators/set-metadata.decorator.spec.ts index 8fe1cd9819..fa83032c75 100644 --- a/packages/common/test/decorators/set-metadata.decorator.spec.ts +++ b/packages/common/test/decorators/set-metadata.decorator.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { SetMetadata } from '../../decorators/core/set-metadata.decorator'; +import { SetMetadata } from '../../decorators/core/set-metadata.decorator.js'; describe('@SetMetadata', () => { const key = 'key', diff --git a/packages/common/test/decorators/sse.decorator.spec.ts b/packages/common/test/decorators/sse.decorator.spec.ts index 0d40e225db..de7b55913d 100644 --- a/packages/common/test/decorators/sse.decorator.spec.ts +++ b/packages/common/test/decorators/sse.decorator.spec.ts @@ -1,7 +1,11 @@ import { expect } from 'chai'; -import { METHOD_METADATA, PATH_METADATA, SSE_METADATA } from '../../constants'; -import { Sse } from '../../decorators/http/sse.decorator'; -import { RequestMethod } from '../../enums/request-method.enum'; +import { + METHOD_METADATA, + PATH_METADATA, + SSE_METADATA, +} from '../../constants.js'; +import { Sse } from '../../decorators/http/sse.decorator.js'; +import { RequestMethod } from '../../enums/request-method.enum.js'; describe('@Sse', () => { const prefix = '/prefix'; diff --git a/packages/common/test/decorators/use-guards.decorator.spec.ts b/packages/common/test/decorators/use-guards.decorator.spec.ts index dd822cec69..337e76e471 100644 --- a/packages/common/test/decorators/use-guards.decorator.spec.ts +++ b/packages/common/test/decorators/use-guards.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { GUARDS_METADATA } from '../../constants'; -import { UseGuards } from '../../decorators/core/use-guards.decorator'; -import { InvalidDecoratorItemException } from '../../utils/validate-each.util'; +import { GUARDS_METADATA } from '../../constants.js'; +import { UseGuards } from '../../decorators/core/use-guards.decorator.js'; +import { InvalidDecoratorItemException } from '../../utils/validate-each.util.js'; class Guard {} diff --git a/packages/common/test/decorators/use-interceptors.decorator.spec.ts b/packages/common/test/decorators/use-interceptors.decorator.spec.ts index 48449e05bc..e2bbb17107 100644 --- a/packages/common/test/decorators/use-interceptors.decorator.spec.ts +++ b/packages/common/test/decorators/use-interceptors.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { INTERCEPTORS_METADATA } from '../../constants'; -import { UseInterceptors } from '../../decorators/core/use-interceptors.decorator'; -import { InvalidDecoratorItemException } from '../../utils/validate-each.util'; +import { INTERCEPTORS_METADATA } from '../../constants.js'; +import { UseInterceptors } from '../../decorators/core/use-interceptors.decorator.js'; +import { InvalidDecoratorItemException } from '../../utils/validate-each.util.js'; class Interceptor {} diff --git a/packages/common/test/decorators/use-pipes.decorator.spec.ts b/packages/common/test/decorators/use-pipes.decorator.spec.ts index 63db0345dd..e7de893350 100644 --- a/packages/common/test/decorators/use-pipes.decorator.spec.ts +++ b/packages/common/test/decorators/use-pipes.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { PIPES_METADATA } from '../../constants'; -import { UsePipes } from '../../decorators/core/use-pipes.decorator'; -import { InvalidDecoratorItemException } from '../../utils/validate-each.util'; +import { PIPES_METADATA } from '../../constants.js'; +import { UsePipes } from '../../decorators/core/use-pipes.decorator.js'; +import { InvalidDecoratorItemException } from '../../utils/validate-each.util.js'; class Pipe { transform() {} diff --git a/packages/common/test/decorators/version.decorator.spec.ts b/packages/common/test/decorators/version.decorator.spec.ts index d33ea668da..de4838d3b2 100644 --- a/packages/common/test/decorators/version.decorator.spec.ts +++ b/packages/common/test/decorators/version.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { VERSION_METADATA } from '../../constants'; -import { Version } from '../../decorators/core/version.decorator'; +import { VERSION_METADATA } from '../../constants.js'; +import { Version } from '../../decorators/core/version.decorator.js'; describe('@Version', () => { const version = '1'; diff --git a/packages/common/test/exceptions/http.exception.spec.ts b/packages/common/test/exceptions/http.exception.spec.ts index b9aa2aa3bd..803ab05d7c 100644 --- a/packages/common/test/exceptions/http.exception.spec.ts +++ b/packages/common/test/exceptions/http.exception.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { Type } from '../../../common'; +import { Type } from '../../../common/index.js'; import { BadGatewayException, BadRequestException, @@ -23,7 +23,7 @@ import { UnauthorizedException, UnprocessableEntityException, UnsupportedMediaTypeException, -} from '../../exceptions'; +} from '../../exceptions/index.js'; describe('HttpException', () => { describe('getResponse', () => { diff --git a/packages/common/test/file-stream/streamable-file.spec.ts b/packages/common/test/file-stream/streamable-file.spec.ts index b2d8d33f4b..949b73db53 100644 --- a/packages/common/test/file-stream/streamable-file.spec.ts +++ b/packages/common/test/file-stream/streamable-file.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; import { Readable } from 'stream'; -import { StreamableFile } from '../../file-stream'; -import { HttpStatus } from '../../enums'; +import { StreamableFile } from '../../file-stream/index.js'; +import { HttpStatus } from '../../enums/index.js'; describe('StreamableFile', () => { describe('when input is a readable stream', () => { diff --git a/packages/common/test/module-utils/configurable-module.builder.spec.ts b/packages/common/test/module-utils/configurable-module.builder.spec.ts index 26f9c19ed3..1b79896de2 100644 --- a/packages/common/test/module-utils/configurable-module.builder.spec.ts +++ b/packages/common/test/module-utils/configurable-module.builder.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { Provider } from '../../interfaces'; -import { ConfigurableModuleBuilder } from '../../module-utils'; +import { Provider } from '../../interfaces/index.js'; +import { ConfigurableModuleBuilder } from '../../module-utils/index.js'; describe('ConfigurableModuleBuilder', () => { describe('setExtras', () => { diff --git a/packages/common/test/module-utils/utils/get-injection-providers.util.spec.ts b/packages/common/test/module-utils/utils/get-injection-providers.util.spec.ts index dfa6364cca..ab578a2b64 100644 --- a/packages/common/test/module-utils/utils/get-injection-providers.util.spec.ts +++ b/packages/common/test/module-utils/utils/get-injection-providers.util.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { Provider } from '../../../interfaces'; -import { getInjectionProviders } from '../../../module-utils/utils/get-injection-providers.util'; +import { Provider } from '../../../interfaces/index.js'; +import { getInjectionProviders } from '../../../module-utils/utils/get-injection-providers.util.js'; describe('getInjectionProviders', () => { it('should take only required providers', () => { diff --git a/packages/common/test/pipes/default-value.pipe.spec.ts b/packages/common/test/pipes/default-value.pipe.spec.ts index 6ddad49ac1..11315d939e 100644 --- a/packages/common/test/pipes/default-value.pipe.spec.ts +++ b/packages/common/test/pipes/default-value.pipe.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { DefaultValuePipe } from '../../pipes/default-value.pipe'; +import { DefaultValuePipe } from '../../pipes/default-value.pipe.js'; describe('DefaultValuePipe', () => { const defaultValue = 'default'; diff --git a/packages/common/test/pipes/file/file-type.validator.spec.ts b/packages/common/test/pipes/file/file-type.validator.spec.ts index 28331d3ade..4d111dde0e 100644 --- a/packages/common/test/pipes/file/file-type.validator.spec.ts +++ b/packages/common/test/pipes/file/file-type.validator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { IFile } from '../../../../common/pipes/file/interfaces'; -import { FileTypeValidator } from '../../../pipes'; +import { IFile } from '../../../../common/pipes/file/interfaces/index.js'; +import { FileTypeValidator } from '../../../pipes/index.js'; const pngBuffer = Buffer.from([ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, diff --git a/packages/common/test/pipes/file/max-file-size.validator.spec.ts b/packages/common/test/pipes/file/max-file-size.validator.spec.ts index 8237bbe4aa..99f2b79660 100644 --- a/packages/common/test/pipes/file/max-file-size.validator.spec.ts +++ b/packages/common/test/pipes/file/max-file-size.validator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { MaxFileSizeValidator } from '../../../pipes'; -import { IFile } from '@nestjs/common/pipes/file/interfaces'; +import { MaxFileSizeValidator } from '../../../pipes/index.js'; +import { IFile } from '@nestjs/common/pipes/file/interfaces/index.js'; describe('MaxFileSizeValidator', () => { const oneKb = 1024; diff --git a/packages/common/test/pipes/file/parse-file-pipe.builder.spec.ts b/packages/common/test/pipes/file/parse-file-pipe.builder.spec.ts index 84c2752a46..8642a702ef 100644 --- a/packages/common/test/pipes/file/parse-file-pipe.builder.spec.ts +++ b/packages/common/test/pipes/file/parse-file-pipe.builder.spec.ts @@ -4,7 +4,7 @@ import { MaxFileSizeValidator, ParseFilePipeBuilder, FileTypeValidator, -} from '../../../pipes'; +} from '../../../pipes/index.js'; describe('ParseFilePipeBuilder', () => { let parseFilePipeBuilder: ParseFilePipeBuilder; diff --git a/packages/common/test/pipes/file/parse-file.pipe.spec.ts b/packages/common/test/pipes/file/parse-file.pipe.spec.ts index 0eecaf9896..5d4744b49e 100644 --- a/packages/common/test/pipes/file/parse-file.pipe.spec.ts +++ b/packages/common/test/pipes/file/parse-file.pipe.spec.ts @@ -1,6 +1,9 @@ -import { HttpStatus } from '../../../enums'; -import { BadRequestException, ConflictException } from '../../../exceptions'; -import { FileValidator, ParseFilePipe } from '../../../pipes'; +import { HttpStatus } from '../../../enums/index.js'; +import { + BadRequestException, + ConflictException, +} from '../../../exceptions/index.js'; +import { FileValidator, ParseFilePipe } from '../../../pipes/index.js'; import { expect } from 'chai'; class AlwaysValidValidator extends FileValidator { diff --git a/packages/common/test/pipes/parse-array.pipe.spec.ts b/packages/common/test/pipes/parse-array.pipe.spec.ts index 096ab3f9bc..9244134f71 100644 --- a/packages/common/test/pipes/parse-array.pipe.spec.ts +++ b/packages/common/test/pipes/parse-array.pipe.spec.ts @@ -1,6 +1,6 @@ import * as chai from 'chai'; import { expect } from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chaiAsPromised from 'chai-as-promised'; import { Type } from 'class-transformer'; import { IsBoolean, @@ -10,9 +10,9 @@ import { IsString, ValidateNested, } from 'class-validator'; -import { BadRequestException } from '../../exceptions'; -import { ArgumentMetadata } from '../../interfaces/features/pipe-transform.interface'; -import { ParseArrayPipe } from '../../pipes/parse-array.pipe'; +import { BadRequestException } from '../../exceptions/index.js'; +import { ArgumentMetadata } from '../../interfaces/features/pipe-transform.interface.js'; +import { ParseArrayPipe } from '../../pipes/parse-array.pipe.js'; chai.use(chaiAsPromised); describe('ParseArrayPipe', () => { diff --git a/packages/common/test/pipes/parse-bool.pipe.spec.ts b/packages/common/test/pipes/parse-bool.pipe.spec.ts index 25dc5959bf..95578a0a49 100644 --- a/packages/common/test/pipes/parse-bool.pipe.spec.ts +++ b/packages/common/test/pipes/parse-bool.pipe.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { ArgumentMetadata } from '../../interfaces'; -import { ParseBoolPipe } from '../../pipes/parse-bool.pipe'; +import { ArgumentMetadata } from '../../interfaces/index.js'; +import { ParseBoolPipe } from '../../pipes/parse-bool.pipe.js'; describe('ParseBoolPipe', () => { let target: ParseBoolPipe; diff --git a/packages/common/test/pipes/parse-date.pipe.spec.ts b/packages/common/test/pipes/parse-date.pipe.spec.ts index e7f2b78706..0f1fb2e0fb 100644 --- a/packages/common/test/pipes/parse-date.pipe.spec.ts +++ b/packages/common/test/pipes/parse-date.pipe.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { BadRequestException } from '../../exceptions'; -import { ParseDatePipe } from '../../pipes/parse-date.pipe'; +import { BadRequestException } from '../../exceptions/index.js'; +import { ParseDatePipe } from '../../pipes/parse-date.pipe.js'; describe('ParseDatePipe', () => { let target: ParseDatePipe; diff --git a/packages/common/test/pipes/parse-enum.pipe.spec.ts b/packages/common/test/pipes/parse-enum.pipe.spec.ts index 5182781dcb..e03857840a 100644 --- a/packages/common/test/pipes/parse-enum.pipe.spec.ts +++ b/packages/common/test/pipes/parse-enum.pipe.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { HttpException } from '../../exceptions'; -import { ArgumentMetadata } from '../../interfaces'; -import { ParseEnumPipe } from '../../pipes/parse-enum.pipe'; +import { HttpException } from '../../exceptions/index.js'; +import { ArgumentMetadata } from '../../interfaces/index.js'; +import { ParseEnumPipe } from '../../pipes/parse-enum.pipe.js'; class CustomTestError extends HttpException { constructor() { diff --git a/packages/common/test/pipes/parse-float.pipe.spec.ts b/packages/common/test/pipes/parse-float.pipe.spec.ts index 5343c23a61..ab47722051 100644 --- a/packages/common/test/pipes/parse-float.pipe.spec.ts +++ b/packages/common/test/pipes/parse-float.pipe.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { HttpException } from '../../exceptions'; -import { ArgumentMetadata } from '../../interfaces'; -import { ParseFloatPipe } from '../../pipes/parse-float.pipe'; +import { HttpException } from '../../exceptions/index.js'; +import { ArgumentMetadata } from '../../interfaces/index.js'; +import { ParseFloatPipe } from '../../pipes/parse-float.pipe.js'; class CustomTestError extends HttpException { constructor() { diff --git a/packages/common/test/pipes/parse-int.pipe.spec.ts b/packages/common/test/pipes/parse-int.pipe.spec.ts index 5c2370a742..d63e1a609e 100644 --- a/packages/common/test/pipes/parse-int.pipe.spec.ts +++ b/packages/common/test/pipes/parse-int.pipe.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { HttpException } from '../../exceptions'; -import { ArgumentMetadata } from '../../interfaces'; -import { ParseIntPipe } from '../../pipes/parse-int.pipe'; +import { HttpException } from '../../exceptions/index.js'; +import { ArgumentMetadata } from '../../interfaces/index.js'; +import { ParseIntPipe } from '../../pipes/parse-int.pipe.js'; class CustomTestError extends HttpException { constructor() { diff --git a/packages/common/test/pipes/parse-uuid.pipe.spec.ts b/packages/common/test/pipes/parse-uuid.pipe.spec.ts index a28d1c0b74..750cff61a9 100644 --- a/packages/common/test/pipes/parse-uuid.pipe.spec.ts +++ b/packages/common/test/pipes/parse-uuid.pipe.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; -import { HttpStatus } from '../../enums'; -import { HttpException } from '../../exceptions'; -import { ArgumentMetadata } from '../../interfaces'; -import { ParseUUIDPipe } from '../../pipes/parse-uuid.pipe'; +import { HttpStatus } from '../../enums/index.js'; +import { HttpException } from '../../exceptions/index.js'; +import { ArgumentMetadata } from '../../interfaces/index.js'; +import { ParseUUIDPipe } from '../../pipes/parse-uuid.pipe.js'; class TestException extends HttpException { constructor() { diff --git a/packages/common/test/pipes/validation.pipe.spec.ts b/packages/common/test/pipes/validation.pipe.spec.ts index 3d54bf282d..ce04dd700a 100644 --- a/packages/common/test/pipes/validation.pipe.spec.ts +++ b/packages/common/test/pipes/validation.pipe.spec.ts @@ -1,6 +1,6 @@ import * as chai from 'chai'; import { expect } from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chaiAsPromised from 'chai-as-promised'; import { Exclude, Expose, Type } from 'class-transformer'; import { IsArray, @@ -10,10 +10,10 @@ import { IsString, ValidateNested, } from 'class-validator'; -import { HttpStatus } from '../../enums'; -import { UnprocessableEntityException } from '../../exceptions'; -import { ArgumentMetadata } from '../../interfaces'; -import { ValidationPipe } from '../../pipes/validation.pipe'; +import { HttpStatus } from '../../enums/index.js'; +import { UnprocessableEntityException } from '../../exceptions/index.js'; +import { ArgumentMetadata } from '../../interfaces/index.js'; +import { ValidationPipe } from '../../pipes/validation.pipe.js'; chai.use(chaiAsPromised); @Exclude() diff --git a/packages/common/test/serializer/class-serializer.interceptor.spec.ts b/packages/common/test/serializer/class-serializer.interceptor.spec.ts index 5ebc74fbce..48310e8e10 100644 --- a/packages/common/test/serializer/class-serializer.interceptor.spec.ts +++ b/packages/common/test/serializer/class-serializer.interceptor.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; +import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { of, throwError } from 'rxjs'; -import { ClassSerializerInterceptor } from '../../serializer/class-serializer.interceptor'; -import { ExecutionContext, CallHandler } from '../../interfaces'; -import { StreamableFile } from '../../file-stream'; +import { StreamableFile } from '../../file-stream/index.js'; +import { CallHandler, ExecutionContext } from '../../interfaces/index.js'; +import { ClassSerializerInterceptor } from '../../serializer/class-serializer.interceptor.js'; describe('ClassSerializerInterceptor', () => { let interceptor: ClassSerializerInterceptor; @@ -74,7 +74,7 @@ describe('ClassSerializerInterceptor', () => { } as any; }); - it('should transform plain object response', done => { + it('should transform plain object response', async () => { const response = { id: 1, name: 'Test' }; const transformedResponse = { id: 1, name: 'Test' }; @@ -82,15 +82,19 @@ describe('ClassSerializerInterceptor', () => { mockTransformerPackage.classToPlain.returns(transformedResponse); (mockCallHandler.handle as sinon.SinonStub).returns(of(response)); - interceptor - .intercept(mockExecutionContext, mockCallHandler) - .subscribe(result => { + const result$ = await interceptor.intercept( + mockExecutionContext, + mockCallHandler, + ); + await new Promise(resolve => { + result$.subscribe(result => { expect(result).to.equal(transformedResponse); - done(); + resolve(); }); + }); }); - it('should transform array of objects', done => { + it('should transform array of objects', async () => { const response = [ { id: 1, name: 'Test1' }, { id: 2, name: 'Test2' }, @@ -107,17 +111,21 @@ describe('ClassSerializerInterceptor', () => { .returns(transformedItem2); (mockCallHandler.handle as sinon.SinonStub).returns(of(response)); - interceptor - .intercept(mockExecutionContext, mockCallHandler) - .subscribe(result => { + const result$ = await interceptor.intercept( + mockExecutionContext, + mockCallHandler, + ); + await new Promise(resolve => { + result$.subscribe(result => { expect(result).to.be.an('array').with.lengthOf(2); expect(result[0]).to.equal(transformedItem1); expect(result[1]).to.equal(transformedItem2); - done(); + resolve(); }); + }); }); - it('should merge context options with default options', done => { + it('should merge context options with default options', async () => { const response = { id: 1, name: 'Test' }; const defaultOptions = { excludeExtraneousValues: true }; const contextOptions = { groups: ['user'] }; @@ -132,17 +140,21 @@ describe('ClassSerializerInterceptor', () => { mockTransformerPackage.classToPlain.returns(transformedResponse); (mockCallHandler.handle as sinon.SinonStub).returns(of(response)); - interceptor - .intercept(mockExecutionContext, mockCallHandler) - .subscribe(result => { + const result$ = await interceptor.intercept( + mockExecutionContext, + mockCallHandler, + ); + await new Promise(resolve => { + result$.subscribe(result => { const callArgs = mockTransformerPackage.classToPlain.getCall(0).args; expect(callArgs[1]).to.deep.include(defaultOptions); expect(callArgs[1]).to.deep.include(contextOptions); - done(); + resolve(); }); + }); }); - it('should call reflector with handler and class', done => { + it('should call reflector with handler and class', async () => { const response = { id: 1 }; const mockHandler = {}; const mockClass = {}; @@ -153,14 +165,18 @@ describe('ClassSerializerInterceptor', () => { mockTransformerPackage.classToPlain.returns(response); (mockCallHandler.handle as sinon.SinonStub).returns(of(response)); - interceptor - .intercept(mockExecutionContext, mockCallHandler) - .subscribe(() => { + const result$ = await interceptor.intercept( + mockExecutionContext, + mockCallHandler, + ); + await new Promise(resolve => { + result$.subscribe(() => { expect(mockReflector.getAllAndOverride.calledOnce).to.be.true; const args = mockReflector.getAllAndOverride.getCall(0).args; expect(args[1]).to.deep.equal([mockHandler, mockClass]); - done(); + resolve(); }); + }); }); }); diff --git a/packages/common/test/services/logger.service.spec.ts b/packages/common/test/services/logger.service.spec.ts index 718957f428..58c395a925 100644 --- a/packages/common/test/services/logger.service.spec.ts +++ b/packages/common/test/services/logger.service.spec.ts @@ -1,6 +1,11 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ConsoleLogger, Logger, LoggerService, LogLevel } from '../../services'; +import { + ConsoleLogger, + Logger, + LoggerService, + LogLevel, +} from '../../services/index.js'; describe('Logger', () => { describe('[static methods]', () => { diff --git a/packages/common/test/services/utils/filter-log-levels.util.spec.ts b/packages/common/test/services/utils/filter-log-levels.util.spec.ts index d959a99a28..6714cf82ed 100644 --- a/packages/common/test/services/utils/filter-log-levels.util.spec.ts +++ b/packages/common/test/services/utils/filter-log-levels.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { filterLogLevels } from '../../../services/utils/filter-log-levels.util'; +import { filterLogLevels } from '../../../services/utils/filter-log-levels.util.js'; describe('filterLogLevels', () => { it('should correctly parse an exclusive range', () => { diff --git a/packages/common/test/services/utils/is-log-level-enabled.util.spec.ts b/packages/common/test/services/utils/is-log-level-enabled.util.spec.ts index 27d18ea13a..9edfff97ca 100644 --- a/packages/common/test/services/utils/is-log-level-enabled.util.spec.ts +++ b/packages/common/test/services/utils/is-log-level-enabled.util.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { LogLevel } from '../../../services/logger.service'; -import { isLogLevelEnabled } from '../../../services/utils'; +import { LogLevel } from '../../../services/logger.service.js'; +import { isLogLevelEnabled } from '../../../services/utils/index.js'; describe('isLogLevelEnabled', () => { const tests = [ diff --git a/packages/common/test/utils/forward-ref.util.spec.ts b/packages/common/test/utils/forward-ref.util.spec.ts index 829b3b820b..af8a41bfae 100644 --- a/packages/common/test/utils/forward-ref.util.spec.ts +++ b/packages/common/test/utils/forward-ref.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { forwardRef } from '../../utils/forward-ref.util'; +import { forwardRef } from '../../utils/forward-ref.util.js'; describe('forwardRef', () => { it('should return object with forwardRef property', () => { diff --git a/packages/common/test/utils/load-package.util.spec.ts b/packages/common/test/utils/load-package.util.spec.ts index 3126cb3b64..1eeb6d8823 100644 --- a/packages/common/test/utils/load-package.util.spec.ts +++ b/packages/common/test/utils/load-package.util.spec.ts @@ -1,12 +1,12 @@ import { expect } from 'chai'; -import { loadPackage } from '../../utils/load-package.util'; +import { loadPackage } from '../../utils/load-package.util.js'; describe('loadPackage', () => { describe('when package is available', () => { - it('should return package', () => { - expect(loadPackage('reflect-metadata', 'ctx')).to.be.eql( - require('reflect-metadata'), - ); + it('should return package', async () => { + const result = await loadPackage('reflect-metadata', 'ctx'); + const expected = await import('reflect-metadata'); + expect(result).to.be.eql(expected); }); }); }); diff --git a/packages/common/test/utils/merge-with-values.util.spec.ts b/packages/common/test/utils/merge-with-values.util.spec.ts index 1ecf8be1f8..6d1820eb4d 100644 --- a/packages/common/test/utils/merge-with-values.util.spec.ts +++ b/packages/common/test/utils/merge-with-values.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { MergeWithValues } from '../../utils/merge-with-values.util'; +import { MergeWithValues } from '../../utils/merge-with-values.util.js'; describe('MergeWithValues', () => { let type; diff --git a/packages/common/test/utils/random-string-generator.util.spec.ts b/packages/common/test/utils/random-string-generator.util.spec.ts index f3aeee3dcf..2a47ff8862 100644 --- a/packages/common/test/utils/random-string-generator.util.spec.ts +++ b/packages/common/test/utils/random-string-generator.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { randomStringGenerator } from '../../utils/random-string-generator.util'; +import { randomStringGenerator } from '../../utils/random-string-generator.util.js'; describe('randomStringGenerator', () => { it('should generate random string', () => { diff --git a/packages/common/test/utils/select-exception-filter-metadata.util.spec.ts b/packages/common/test/utils/select-exception-filter-metadata.util.spec.ts index f2fb5b92fa..a2207443dc 100644 --- a/packages/common/test/utils/select-exception-filter-metadata.util.spec.ts +++ b/packages/common/test/utils/select-exception-filter-metadata.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { selectExceptionFilterMetadata } from '../../utils/select-exception-filter-metadata.util'; +import { selectExceptionFilterMetadata } from '../../utils/select-exception-filter-metadata.util.js'; class FirstError {} diff --git a/packages/common/test/utils/shared.utils.spec.ts b/packages/common/test/utils/shared.utils.spec.ts index d7c0de0eac..e91a3df088 100644 --- a/packages/common/test/utils/shared.utils.spec.ts +++ b/packages/common/test/utils/shared.utils.spec.ts @@ -13,7 +13,7 @@ import { isUndefined, normalizePath, stripEndSlash, -} from '../../utils/shared.utils'; +} from '../../utils/shared.utils.js'; function Foo(a) { this.a = 1; diff --git a/packages/common/test/utils/validate-each.util.spec.ts b/packages/common/test/utils/validate-each.util.spec.ts index 58d8cb499d..ee8e7035bb 100644 --- a/packages/common/test/utils/validate-each.util.spec.ts +++ b/packages/common/test/utils/validate-each.util.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; -import { isFunction } from '../../utils/shared.utils'; +import { isFunction } from '../../utils/shared.utils.js'; import { validateEach, InvalidDecoratorItemException, -} from '../../utils/validate-each.util'; +} from '../../utils/validate-each.util.js'; describe('validateEach', () => { describe('when any item will not pass predicate', () => { diff --git a/packages/common/tsconfig.build.json b/packages/common/tsconfig.build.json index 2d16c3a204..bd377880ea 100644 --- a/packages/common/tsconfig.build.json +++ b/packages/common/tsconfig.build.json @@ -2,8 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": {} + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [] diff --git a/packages/common/utils/assign-custom-metadata.util.ts b/packages/common/utils/assign-custom-metadata.util.ts index 38bd926dbc..f1d06b3e44 100644 --- a/packages/common/utils/assign-custom-metadata.util.ts +++ b/packages/common/utils/assign-custom-metadata.util.ts @@ -1,10 +1,10 @@ -import { CUSTOM_ROUTE_ARGS_METADATA } from '../constants'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '../constants.js'; import { ParamData, RouteParamMetadata, -} from '../decorators/http/route-params.decorator'; -import { PipeTransform, Type } from '../interfaces'; -import { CustomParamFactory } from '../interfaces/features/custom-route-param-factory.interface'; +} from '../decorators/http/route-params.decorator.js'; +import { PipeTransform, Type } from '../interfaces/index.js'; +import { CustomParamFactory } from '../interfaces/features/custom-route-param-factory.interface.js'; export function assignCustomParameterMetadata( args: Record, diff --git a/packages/common/utils/forward-ref.util.ts b/packages/common/utils/forward-ref.util.ts index 1b380c022c..91f9500544 100644 --- a/packages/common/utils/forward-ref.util.ts +++ b/packages/common/utils/forward-ref.util.ts @@ -1,4 +1,4 @@ -import { ForwardReference } from '../interfaces/modules/forward-reference.interface'; +import { ForwardReference } from '../interfaces/modules/forward-reference.interface.js'; /** * @publicApi diff --git a/packages/common/utils/http-error-by-code.util.ts b/packages/common/utils/http-error-by-code.util.ts index 1fc953be9e..fc686c4034 100644 --- a/packages/common/utils/http-error-by-code.util.ts +++ b/packages/common/utils/http-error-by-code.util.ts @@ -1,4 +1,4 @@ -import { HttpStatus } from '../enums'; +import { HttpStatus } from '../enums/index.js'; import { BadGatewayException, BadRequestException, @@ -19,8 +19,8 @@ import { UnauthorizedException, UnprocessableEntityException, UnsupportedMediaTypeException, -} from '../exceptions'; -import { Type } from '../interfaces'; +} from '../exceptions/index.js'; +import { Type } from '../interfaces/index.js'; export type ErrorHttpStatusCode = | HttpStatus.BAD_GATEWAY diff --git a/packages/common/utils/index.ts b/packages/common/utils/index.ts index c8719691cd..3d7c02be90 100644 --- a/packages/common/utils/index.ts +++ b/packages/common/utils/index.ts @@ -1 +1 @@ -export * from './forward-ref.util'; +export * from './forward-ref.util.js'; diff --git a/packages/common/utils/load-package.util.ts b/packages/common/utils/load-package.util.ts index 1e0bafbdb4..f7d71a5a60 100644 --- a/packages/common/utils/load-package.util.ts +++ b/packages/common/utils/load-package.util.ts @@ -1,20 +1,80 @@ -import { Logger } from '../services/logger.service'; +import { createRequire } from 'module'; +import { Logger } from '../services/logger.service.js'; const MISSING_REQUIRED_DEPENDENCY = (name: string, reason: string) => `The "${name}" package is missing. Please, make sure to install it to take advantage of ${reason}.`; const logger = new Logger('PackageLoader'); -export function loadPackage( +/** + * Cache of already-loaded packages keyed by package name. + * Allows subsequent calls (including synchronous ones) to + * return the module without another async import(). + */ +const packageCache = new Map(); + +export async function loadPackage( packageName: string, context: string, loaderFn?: Function, ) { + const cached = packageCache.get(packageName); + if (cached) { + return cached; + } try { - return loaderFn ? loaderFn() : require(packageName); + const pkg = loaderFn ? await loaderFn() : await import(packageName); + packageCache.set(packageName, pkg); + return pkg; } catch (e) { logger.error(MISSING_REQUIRED_DEPENDENCY(packageName, context)); Logger.flush(); process.exit(1); } } + +/** + * Synchronously loads a CJS package using `createRequire` and caches it. + * This is meant for optional dependencies that are CJS-only and must + * be loaded in synchronous contexts (e.g. constructors). + */ +export function loadPackageSync( + packageName: string, + context: string, + loaderFn?: () => any, +): any { + const cached = packageCache.get(packageName); + if (cached) { + return cached; + } + try { + const pkg = loaderFn + ? loaderFn() + : createRequire(import.meta.url)(packageName); + packageCache.set(packageName, pkg); + return pkg; + } catch (e) { + logger.error(MISSING_REQUIRED_DEPENDENCY(packageName, context)); + Logger.flush(); + process.exit(1); + } +} + +/** + * Synchronously returns a package that was previously loaded and cached + * via {@link loadPackage}. Throws if the package has not been loaded yet. + * + * Use this in methods that must remain synchronous (e.g. `connectMicroservice`). + * Ensure that `loadPackage()` has been `await`ed for the same package name + * before calling this function (typically during `init()` or `compile()`). + */ +export function loadPackageCached(packageName: string): any { + const cached = packageCache.get(packageName); + if (!cached) { + throw new Error( + `Package "${packageName}" has not been loaded yet. ` + + `Ensure loadPackage("${packageName}", ...) has been awaited before calling loadPackageCached.`, + ); + } + return cached; +} diff --git a/packages/common/utils/select-exception-filter-metadata.util.ts b/packages/common/utils/select-exception-filter-metadata.util.ts index e1e1661f50..3a6b4294e0 100644 --- a/packages/common/utils/select-exception-filter-metadata.util.ts +++ b/packages/common/utils/select-exception-filter-metadata.util.ts @@ -1,4 +1,4 @@ -import { ExceptionFilterMetadata } from '../interfaces/exceptions'; +import { ExceptionFilterMetadata } from '../interfaces/exceptions/index.js'; export const selectExceptionFilterMetadata = ( filters: ExceptionFilterMetadata[], diff --git a/packages/common/utils/validate-module-keys.util.ts b/packages/common/utils/validate-module-keys.util.ts index ade58abd05..e6996f4283 100644 --- a/packages/common/utils/validate-module-keys.util.ts +++ b/packages/common/utils/validate-module-keys.util.ts @@ -1,4 +1,4 @@ -import { MODULE_METADATA as metadataConstants } from '../constants'; +import { MODULE_METADATA as metadataConstants } from '../constants.js'; export const INVALID_MODULE_CONFIG_MESSAGE = ( text: TemplateStringsArray, diff --git a/packages/core/adapters/http-adapter.ts b/packages/core/adapters/http-adapter.ts index 5c4119218b..db3739e98c 100644 --- a/packages/core/adapters/http-adapter.ts +++ b/packages/core/adapters/http-adapter.ts @@ -1,6 +1,9 @@ import { HttpServer, RequestMethod, VersioningOptions } from '@nestjs/common'; -import { RequestHandler, VersionValue } from '@nestjs/common/interfaces'; -import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface'; +import { + RequestHandler, + VersionValue, +} from '@nestjs/common/interfaces/index.js'; +import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface.js'; /** * @publicApi diff --git a/packages/core/adapters/index.ts b/packages/core/adapters/index.ts index 8063987a06..d51859f7a9 100644 --- a/packages/core/adapters/index.ts +++ b/packages/core/adapters/index.ts @@ -1 +1 @@ -export * from './http-adapter'; +export * from './http-adapter.js'; diff --git a/packages/core/application-config.ts b/packages/core/application-config.ts index e023e08060..e9fdafd3f3 100644 --- a/packages/core/application-config.ts +++ b/packages/core/application-config.ts @@ -6,9 +6,9 @@ import { VersioningOptions, WebSocketAdapter, } from '@nestjs/common'; -import { GlobalPrefixOptions } from '@nestjs/common/interfaces'; -import { InstanceWrapper } from './injector/instance-wrapper'; -import { ExcludeRouteMetadata } from './router/interfaces/exclude-route-metadata.interface'; +import { GlobalPrefixOptions } from '@nestjs/common/interfaces/index.js'; +import { InstanceWrapper } from './injector/instance-wrapper.js'; +import { ExcludeRouteMetadata } from './router/interfaces/exclude-route-metadata.interface.js'; export class ApplicationConfig { private globalPrefix = ''; diff --git a/packages/core/constants.ts b/packages/core/constants.ts index 6b0f56267c..02350b58f7 100644 --- a/packages/core/constants.ts +++ b/packages/core/constants.ts @@ -1,4 +1,4 @@ -import { EnhancerSubtype } from '@nestjs/common/constants'; +import { EnhancerSubtype } from '@nestjs/common/constants.js'; export const MESSAGES = { APPLICATION_START: `Starting Nest application...`, diff --git a/packages/core/discovery/discoverable-meta-host-collection.ts b/packages/core/discovery/discoverable-meta-host-collection.ts index d59a7ad231..85b1c8d10a 100644 --- a/packages/core/discovery/discoverable-meta-host-collection.ts +++ b/packages/core/discovery/discoverable-meta-host-collection.ts @@ -1,6 +1,6 @@ import { Type } from '@nestjs/common'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { ModulesContainer } from '../injector/modules-container'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { ModulesContainer } from '../injector/modules-container.js'; export class DiscoverableMetaHostCollection { /** diff --git a/packages/core/discovery/discovery-module.ts b/packages/core/discovery/discovery-module.ts index 46df107fc2..fb23855e8b 100644 --- a/packages/core/discovery/discovery-module.ts +++ b/packages/core/discovery/discovery-module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { MetadataScanner } from '../metadata-scanner'; -import { DiscoveryService } from './discovery-service'; +import { MetadataScanner } from '../metadata-scanner.js'; +import { DiscoveryService } from './discovery-service.js'; /** * @publicApi diff --git a/packages/core/discovery/discovery-service.ts b/packages/core/discovery/discovery-service.ts index 25c6aacb24..93ca98e6aa 100644 --- a/packages/core/discovery/discovery-service.ts +++ b/packages/core/discovery/discovery-service.ts @@ -5,10 +5,10 @@ import { SetMetadata, } from '@nestjs/common'; import { uid } from 'uid'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; -import { ModulesContainer } from '../injector/modules-container'; -import { DiscoverableMetaHostCollection } from './discoverable-meta-host-collection'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; +import { ModulesContainer } from '../injector/modules-container.js'; +import { DiscoverableMetaHostCollection } from './discoverable-meta-host-collection.js'; /** * @publicApi diff --git a/packages/core/discovery/index.ts b/packages/core/discovery/index.ts index 0e4a750525..67c7d3a5a6 100644 --- a/packages/core/discovery/index.ts +++ b/packages/core/discovery/index.ts @@ -1,2 +1,2 @@ -export * from './discovery-module'; -export * from './discovery-service'; +export * from './discovery-module.js'; +export * from './discovery-service.js'; diff --git a/packages/core/errors/exception-handler.ts b/packages/core/errors/exception-handler.ts index e34358bf2d..3b54e5d841 100644 --- a/packages/core/errors/exception-handler.ts +++ b/packages/core/errors/exception-handler.ts @@ -1,4 +1,4 @@ -import { Logger } from '@nestjs/common/services/logger.service'; +import { Logger } from '@nestjs/common/services/logger.service.js'; export class ExceptionHandler { private static readonly logger = new Logger(ExceptionHandler.name); diff --git a/packages/core/errors/exceptions-zone.ts b/packages/core/errors/exceptions-zone.ts index 375e62e366..1c1d7c4768 100644 --- a/packages/core/errors/exceptions-zone.ts +++ b/packages/core/errors/exceptions-zone.ts @@ -1,5 +1,5 @@ import { Logger } from '@nestjs/common'; -import { ExceptionHandler } from './exception-handler'; +import { ExceptionHandler } from './exception-handler.js'; const DEFAULT_TEARDOWN = () => process.exit(1); diff --git a/packages/core/errors/exceptions/circular-dependency.exception.ts b/packages/core/errors/exceptions/circular-dependency.exception.ts index 2ca8726ab9..447e62f74b 100644 --- a/packages/core/errors/exceptions/circular-dependency.exception.ts +++ b/packages/core/errors/exceptions/circular-dependency.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from './runtime.exception'; +import { RuntimeException } from './runtime.exception.js'; export class CircularDependencyException extends RuntimeException { constructor(context?: string) { diff --git a/packages/core/errors/exceptions/index.ts b/packages/core/errors/exceptions/index.ts index 530968b2f5..6d270cf88d 100644 --- a/packages/core/errors/exceptions/index.ts +++ b/packages/core/errors/exceptions/index.ts @@ -1,8 +1,8 @@ -export * from './circular-dependency.exception'; -export * from './runtime.exception'; -export * from './unknown-element.exception'; -export * from './invalid-class-scope.exception'; -export * from './invalid-class.exception'; -export * from './unknown-export.exception'; -export * from './unknown-module.exception'; -export * from './undefined-forwardref.exception'; +export * from './circular-dependency.exception.js'; +export * from './runtime.exception.js'; +export * from './unknown-element.exception.js'; +export * from './invalid-class-scope.exception.js'; +export * from './invalid-class.exception.js'; +export * from './unknown-export.exception.js'; +export * from './unknown-module.exception.js'; +export * from './undefined-forwardref.exception.js'; diff --git a/packages/core/errors/exceptions/invalid-class-module.exception.ts b/packages/core/errors/exceptions/invalid-class-module.exception.ts index 0761ea5cec..1a39f01173 100644 --- a/packages/core/errors/exceptions/invalid-class-module.exception.ts +++ b/packages/core/errors/exceptions/invalid-class-module.exception.ts @@ -1,5 +1,5 @@ -import { USING_INVALID_CLASS_AS_A_MODULE_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { USING_INVALID_CLASS_AS_A_MODULE_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class InvalidClassModuleException extends RuntimeException { constructor(metatypeUsedAsAModule: any, scope: any[]) { diff --git a/packages/core/errors/exceptions/invalid-class-scope.exception.ts b/packages/core/errors/exceptions/invalid-class-scope.exception.ts index 252477052f..78db4abd7e 100644 --- a/packages/core/errors/exceptions/invalid-class-scope.exception.ts +++ b/packages/core/errors/exceptions/invalid-class-scope.exception.ts @@ -1,7 +1,7 @@ -import { Abstract, Type } from '@nestjs/common/interfaces'; -import { isFunction } from '@nestjs/common/utils/shared.utils'; -import { INVALID_CLASS_SCOPE_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { Abstract, Type } from '@nestjs/common/interfaces/index.js'; +import { isFunction } from '@nestjs/common/utils/shared.utils.js'; +import { INVALID_CLASS_SCOPE_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class InvalidClassScopeException extends RuntimeException { constructor(metatypeOrToken: Type | Abstract | string | symbol) { diff --git a/packages/core/errors/exceptions/invalid-class.exception.ts b/packages/core/errors/exceptions/invalid-class.exception.ts index 48a601ba45..c872043ec8 100644 --- a/packages/core/errors/exceptions/invalid-class.exception.ts +++ b/packages/core/errors/exceptions/invalid-class.exception.ts @@ -1,5 +1,5 @@ -import { INVALID_CLASS_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { INVALID_CLASS_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class InvalidClassException extends RuntimeException { constructor(value: any) { diff --git a/packages/core/errors/exceptions/invalid-exception-filter.exception.ts b/packages/core/errors/exceptions/invalid-exception-filter.exception.ts index 5ea36ff63f..73f8a3c94e 100644 --- a/packages/core/errors/exceptions/invalid-exception-filter.exception.ts +++ b/packages/core/errors/exceptions/invalid-exception-filter.exception.ts @@ -1,5 +1,5 @@ -import { RuntimeException } from './runtime.exception'; -import { INVALID_EXCEPTION_FILTER } from '../messages'; +import { RuntimeException } from './runtime.exception.js'; +import { INVALID_EXCEPTION_FILTER } from '../messages.js'; export class InvalidExceptionFilterException extends RuntimeException { constructor() { diff --git a/packages/core/errors/exceptions/invalid-middleware-configuration.exception.ts b/packages/core/errors/exceptions/invalid-middleware-configuration.exception.ts index 91309b2acc..ad589ebdb0 100644 --- a/packages/core/errors/exceptions/invalid-middleware-configuration.exception.ts +++ b/packages/core/errors/exceptions/invalid-middleware-configuration.exception.ts @@ -1,5 +1,5 @@ -import { RuntimeException } from './runtime.exception'; -import { INVALID_MIDDLEWARE_CONFIGURATION } from '../messages'; +import { RuntimeException } from './runtime.exception.js'; +import { INVALID_MIDDLEWARE_CONFIGURATION } from '../messages.js'; export class InvalidMiddlewareConfigurationException extends RuntimeException { constructor() { diff --git a/packages/core/errors/exceptions/invalid-middleware.exception.ts b/packages/core/errors/exceptions/invalid-middleware.exception.ts index 8656c9a838..5032962e02 100644 --- a/packages/core/errors/exceptions/invalid-middleware.exception.ts +++ b/packages/core/errors/exceptions/invalid-middleware.exception.ts @@ -1,5 +1,5 @@ -import { INVALID_MIDDLEWARE_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { INVALID_MIDDLEWARE_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class InvalidMiddlewareException extends RuntimeException { constructor(name: string) { diff --git a/packages/core/errors/exceptions/invalid-module.exception.ts b/packages/core/errors/exceptions/invalid-module.exception.ts index fb58000a67..221e8948e9 100644 --- a/packages/core/errors/exceptions/invalid-module.exception.ts +++ b/packages/core/errors/exceptions/invalid-module.exception.ts @@ -1,5 +1,5 @@ -import { INVALID_MODULE_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { INVALID_MODULE_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class InvalidModuleException extends RuntimeException { constructor(parentModule: any, index: number, scope: any[]) { diff --git a/packages/core/errors/exceptions/undefined-dependency.exception.ts b/packages/core/errors/exceptions/undefined-dependency.exception.ts index 62d7f61d75..8761d09f3e 100644 --- a/packages/core/errors/exceptions/undefined-dependency.exception.ts +++ b/packages/core/errors/exceptions/undefined-dependency.exception.ts @@ -1,7 +1,7 @@ -import { InjectorDependencyContext } from '../../injector/injector'; -import { Module } from '../../injector/module'; -import { UNKNOWN_DEPENDENCIES_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { InjectorDependencyContext } from '../../injector/injector.js'; +import { Module } from '../../injector/module.js'; +import { UNKNOWN_DEPENDENCIES_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class UndefinedDependencyException extends RuntimeException { constructor( diff --git a/packages/core/errors/exceptions/undefined-forwardref.exception.ts b/packages/core/errors/exceptions/undefined-forwardref.exception.ts index 5985dcfe0e..85f2f86da1 100644 --- a/packages/core/errors/exceptions/undefined-forwardref.exception.ts +++ b/packages/core/errors/exceptions/undefined-forwardref.exception.ts @@ -1,5 +1,5 @@ -import { UNDEFINED_FORWARDREF_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { UNDEFINED_FORWARDREF_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; import { Type } from '@nestjs/common'; export class UndefinedForwardRefException extends RuntimeException { diff --git a/packages/core/errors/exceptions/undefined-module.exception.ts b/packages/core/errors/exceptions/undefined-module.exception.ts index c7780ff731..c1ef490b83 100644 --- a/packages/core/errors/exceptions/undefined-module.exception.ts +++ b/packages/core/errors/exceptions/undefined-module.exception.ts @@ -1,5 +1,5 @@ -import { RuntimeException } from './runtime.exception'; -import { UNDEFINED_MODULE_MESSAGE } from '../messages'; +import { RuntimeException } from './runtime.exception.js'; +import { UNDEFINED_MODULE_MESSAGE } from '../messages.js'; export class UndefinedModuleException extends RuntimeException { constructor(parentModule: any, index: number, scope: any[]) { diff --git a/packages/core/errors/exceptions/unknown-dependencies.exception.ts b/packages/core/errors/exceptions/unknown-dependencies.exception.ts index 57c7207c83..46b2bcfe60 100644 --- a/packages/core/errors/exceptions/unknown-dependencies.exception.ts +++ b/packages/core/errors/exceptions/unknown-dependencies.exception.ts @@ -1,7 +1,7 @@ -import { InjectorDependencyContext } from '../../injector/injector'; -import { Module } from '../../injector/module'; -import { UNKNOWN_DEPENDENCIES_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { InjectorDependencyContext } from '../../injector/injector.js'; +import { Module } from '../../injector/module.js'; +import { UNKNOWN_DEPENDENCIES_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class UnknownDependenciesException extends RuntimeException { public readonly moduleRef: { id: string } | undefined; diff --git a/packages/core/errors/exceptions/unknown-element.exception.ts b/packages/core/errors/exceptions/unknown-element.exception.ts index ae154308fc..a15a6656d6 100644 --- a/packages/core/errors/exceptions/unknown-element.exception.ts +++ b/packages/core/errors/exceptions/unknown-element.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from './runtime.exception'; +import { RuntimeException } from './runtime.exception.js'; export class UnknownElementException extends RuntimeException { constructor(name?: string | symbol) { diff --git a/packages/core/errors/exceptions/unknown-export.exception.ts b/packages/core/errors/exceptions/unknown-export.exception.ts index fcc6a71d3a..ceda1789d1 100644 --- a/packages/core/errors/exceptions/unknown-export.exception.ts +++ b/packages/core/errors/exceptions/unknown-export.exception.ts @@ -1,5 +1,5 @@ -import { UNKNOWN_EXPORT_MESSAGE } from '../messages'; -import { RuntimeException } from './runtime.exception'; +import { UNKNOWN_EXPORT_MESSAGE } from '../messages.js'; +import { RuntimeException } from './runtime.exception.js'; export class UnknownExportException extends RuntimeException { constructor(token: string | symbol, moduleName: string) { diff --git a/packages/core/errors/exceptions/unknown-module.exception.ts b/packages/core/errors/exceptions/unknown-module.exception.ts index 998c484dcf..a805841ade 100644 --- a/packages/core/errors/exceptions/unknown-module.exception.ts +++ b/packages/core/errors/exceptions/unknown-module.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from './runtime.exception'; +import { RuntimeException } from './runtime.exception.js'; export class UnknownModuleException extends RuntimeException { constructor(moduleName?: string) { diff --git a/packages/core/errors/exceptions/unknown-request-mapping.exception.ts b/packages/core/errors/exceptions/unknown-request-mapping.exception.ts index 561390bd94..218ca77371 100644 --- a/packages/core/errors/exceptions/unknown-request-mapping.exception.ts +++ b/packages/core/errors/exceptions/unknown-request-mapping.exception.ts @@ -1,6 +1,6 @@ import type { Type } from '@nestjs/common'; -import { RuntimeException } from './runtime.exception'; -import { UNKNOWN_REQUEST_MAPPING } from '../messages'; +import { RuntimeException } from './runtime.exception.js'; +import { UNKNOWN_REQUEST_MAPPING } from '../messages.js'; export class UnknownRequestMappingException extends RuntimeException { constructor(metatype: Type) { diff --git a/packages/core/errors/messages.ts b/packages/core/errors/messages.ts index 7838adbb71..2fdb087df0 100644 --- a/packages/core/errors/messages.ts +++ b/packages/core/errors/messages.ts @@ -1,10 +1,10 @@ import type { DynamicModule, ForwardReference, Type } from '@nestjs/common'; -import { isNil, isSymbol } from '@nestjs/common/utils/shared.utils'; +import { isNil, isSymbol } from '@nestjs/common/utils/shared.utils.js'; import { InjectorDependency, InjectorDependencyContext, -} from '../injector/injector'; -import { Module } from '../injector/module'; +} from '../injector/injector.js'; +import { Module } from '../injector/module.js'; /** * Returns the name of an instance or `undefined` diff --git a/packages/core/exceptions/base-exception-filter-context.ts b/packages/core/exceptions/base-exception-filter-context.ts index 332cbb736d..24818fa55b 100644 --- a/packages/core/exceptions/base-exception-filter-context.ts +++ b/packages/core/exceptions/base-exception-filter-context.ts @@ -1,12 +1,12 @@ -import { FILTER_CATCH_EXCEPTIONS } from '@nestjs/common/constants'; -import { Type } from '@nestjs/common/interfaces'; -import { ExceptionFilter } from '@nestjs/common/interfaces/exceptions/exception-filter.interface'; -import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils'; +import { FILTER_CATCH_EXCEPTIONS } from '@nestjs/common/constants.js'; +import { Type } from '@nestjs/common/interfaces/index.js'; +import { ExceptionFilter } from '@nestjs/common/interfaces/exceptions/exception-filter.interface.js'; +import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ContextCreator } from '../helpers/context-creator'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; +import { ContextCreator } from '../helpers/context-creator.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; export class BaseExceptionFilterContext extends ContextCreator { protected moduleContext: string; diff --git a/packages/core/exceptions/base-exception-filter.ts b/packages/core/exceptions/base-exception-filter.ts index 1966614101..1ae5cda8c7 100644 --- a/packages/core/exceptions/base-exception-filter.ts +++ b/packages/core/exceptions/base-exception-filter.ts @@ -9,10 +9,10 @@ import { Logger, Optional, } from '@nestjs/common'; -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { AbstractHttpAdapter } from '../adapters'; -import { MESSAGES } from '../constants'; -import { HttpAdapterHost } from '../helpers/http-adapter-host'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { AbstractHttpAdapter } from '../adapters/index.js'; +import { MESSAGES } from '../constants.js'; +import { HttpAdapterHost } from '../helpers/http-adapter-host.js'; export class BaseExceptionFilter implements ExceptionFilter { private static readonly logger = new Logger('ExceptionsHandler'); diff --git a/packages/core/exceptions/exceptions-handler.ts b/packages/core/exceptions/exceptions-handler.ts index 36d1b7f22d..6905efe4a2 100644 --- a/packages/core/exceptions/exceptions-handler.ts +++ b/packages/core/exceptions/exceptions-handler.ts @@ -1,10 +1,10 @@ import { HttpException } from '@nestjs/common'; -import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface'; -import { ArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface'; -import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { InvalidExceptionFilterException } from '../errors/exceptions/invalid-exception-filter.exception'; -import { BaseExceptionFilter } from './base-exception-filter'; +import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.js'; +import { ArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface.js'; +import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { InvalidExceptionFilterException } from '../errors/exceptions/invalid-exception-filter.exception.js'; +import { BaseExceptionFilter } from './base-exception-filter.js'; export class ExceptionsHandler extends BaseExceptionFilter { private filters: ExceptionFilterMetadata[] = []; diff --git a/packages/core/exceptions/external-exception-filter-context.ts b/packages/core/exceptions/external-exception-filter-context.ts index d763dfe734..a032ac38a7 100644 --- a/packages/core/exceptions/external-exception-filter-context.ts +++ b/packages/core/exceptions/external-exception-filter-context.ts @@ -1,15 +1,15 @@ -import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants'; -import { Controller } from '@nestjs/common/interfaces'; -import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; +import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants.js'; +import { Controller } from '@nestjs/common/interfaces/index.js'; +import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/index.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from '../application-config'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { RouterProxyCallback } from '../router/router-proxy'; -import { BaseExceptionFilterContext } from './base-exception-filter-context'; -import { ExternalExceptionsHandler } from './external-exceptions-handler'; +import { ApplicationConfig } from '../application-config.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { RouterProxyCallback } from '../router/router-proxy.js'; +import { BaseExceptionFilterContext } from './base-exception-filter-context.js'; +import { ExternalExceptionsHandler } from './external-exceptions-handler.js'; export class ExternalExceptionFilterContext extends BaseExceptionFilterContext { constructor( diff --git a/packages/core/exceptions/external-exceptions-handler.ts b/packages/core/exceptions/external-exceptions-handler.ts index 80cb9dd48a..0b6c5f8479 100644 --- a/packages/core/exceptions/external-exceptions-handler.ts +++ b/packages/core/exceptions/external-exceptions-handler.ts @@ -1,9 +1,9 @@ -import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions'; -import { ArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface'; -import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { InvalidExceptionFilterException } from '../errors/exceptions/invalid-exception-filter.exception'; -import { ExternalExceptionFilter } from './external-exception-filter'; +import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/index.js'; +import { ArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface.js'; +import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { InvalidExceptionFilterException } from '../errors/exceptions/invalid-exception-filter.exception.js'; +import { ExternalExceptionFilter } from './external-exception-filter.js'; export class ExternalExceptionsHandler extends ExternalExceptionFilter { private filters: ExceptionFilterMetadata[] = []; diff --git a/packages/core/exceptions/index.ts b/packages/core/exceptions/index.ts index cc19dee05a..bc143058bb 100644 --- a/packages/core/exceptions/index.ts +++ b/packages/core/exceptions/index.ts @@ -1 +1 @@ -export * from './base-exception-filter'; +export * from './base-exception-filter.js'; diff --git a/packages/core/guards/guards-consumer.ts b/packages/core/guards/guards-consumer.ts index c1960bb9f3..751ef816e6 100644 --- a/packages/core/guards/guards-consumer.ts +++ b/packages/core/guards/guards-consumer.ts @@ -1,8 +1,8 @@ import { CanActivate } from '@nestjs/common'; -import { ContextType, Controller } from '@nestjs/common/interfaces'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; +import { ContextType, Controller } from '@nestjs/common/interfaces/index.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; import { lastValueFrom, Observable } from 'rxjs'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; export class GuardsConsumer { public async tryActivate( diff --git a/packages/core/guards/guards-context-creator.ts b/packages/core/guards/guards-context-creator.ts index 536a4cc0ea..052435e962 100644 --- a/packages/core/guards/guards-context-creator.ts +++ b/packages/core/guards/guards-context-creator.ts @@ -1,13 +1,13 @@ import { CanActivate } from '@nestjs/common'; -import { GUARDS_METADATA } from '@nestjs/common/constants'; -import { Controller, Type } from '@nestjs/common/interfaces'; -import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils'; +import { GUARDS_METADATA } from '@nestjs/common/constants.js'; +import { Controller, Type } from '@nestjs/common/interfaces/index.js'; +import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from '../application-config'; -import { ContextCreator } from '../helpers/context-creator'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; +import { ApplicationConfig } from '../application-config.js'; +import { ContextCreator } from '../helpers/context-creator.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; export class GuardsContextCreator extends ContextCreator { private moduleContext: string; diff --git a/packages/core/guards/index.ts b/packages/core/guards/index.ts index 61a8b775a3..ed9baa08ee 100644 --- a/packages/core/guards/index.ts +++ b/packages/core/guards/index.ts @@ -1,3 +1,3 @@ -export * from './constants'; -export * from './guards-consumer'; -export * from './guards-context-creator'; +export * from './constants.js'; +export * from './guards-consumer.js'; +export * from './guards-context-creator.js'; diff --git a/packages/core/helpers/context-creator.ts b/packages/core/helpers/context-creator.ts index 17f455c2b3..63efbd774f 100644 --- a/packages/core/helpers/context-creator.ts +++ b/packages/core/helpers/context-creator.ts @@ -1,6 +1,6 @@ -import { Controller } from '@nestjs/common/interfaces'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { ContextId, InstanceWrapper } from '../injector/instance-wrapper'; +import { Controller } from '@nestjs/common/interfaces/index.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { ContextId, InstanceWrapper } from '../injector/instance-wrapper.js'; export abstract class ContextCreator { public abstract createConcreteContext( diff --git a/packages/core/helpers/context-id-factory.ts b/packages/core/helpers/context-id-factory.ts index fde7f24106..abb87232dd 100644 --- a/packages/core/helpers/context-id-factory.ts +++ b/packages/core/helpers/context-id-factory.ts @@ -1,6 +1,6 @@ -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { ContextId, HostComponentInfo } from '../injector/instance-wrapper'; -import { REQUEST_CONTEXT_ID } from '../router/request/request-constants'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { ContextId, HostComponentInfo } from '../injector/instance-wrapper.js'; +import { REQUEST_CONTEXT_ID } from '../router/request/request-constants.js'; export function createContextId(): ContextId { /** diff --git a/packages/core/helpers/context-utils.ts b/packages/core/helpers/context-utils.ts index 7ff661a568..1a656cc663 100644 --- a/packages/core/helpers/context-utils.ts +++ b/packages/core/helpers/context-utils.ts @@ -2,15 +2,15 @@ import { ParamData } from '@nestjs/common'; import { PARAMTYPES_METADATA, RESPONSE_PASSTHROUGH_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { ContextType, Controller, PipeTransform, Type, -} from '@nestjs/common/interfaces'; -import { isFunction } from '@nestjs/common/utils/shared.utils'; -import { ExecutionContextHost } from './execution-context-host'; +} from '@nestjs/common/interfaces/index.js'; +import { isFunction } from '@nestjs/common/utils/shared.utils.js'; +import { ExecutionContextHost } from './execution-context-host.js'; export interface ParamProperties { index: number; diff --git a/packages/core/helpers/execution-context-host.ts b/packages/core/helpers/execution-context-host.ts index f8ac796b67..f1282e139a 100644 --- a/packages/core/helpers/execution-context-host.ts +++ b/packages/core/helpers/execution-context-host.ts @@ -1,11 +1,11 @@ import { ExecutionContext } from '@nestjs/common'; -import { Type } from '@nestjs/common/interfaces'; +import { Type } from '@nestjs/common/interfaces/index.js'; import { ContextType, HttpArgumentsHost, RpcArgumentsHost, WsArgumentsHost, -} from '@nestjs/common/interfaces/features/arguments-host.interface'; +} from '@nestjs/common/interfaces/features/arguments-host.interface.js'; export class ExecutionContextHost implements ExecutionContext { private contextType = 'http'; diff --git a/packages/core/helpers/external-context-creator.ts b/packages/core/helpers/external-context-creator.ts index bacc125ba6..6dc44e9062 100644 --- a/packages/core/helpers/external-context-creator.ts +++ b/packages/core/helpers/external-context-creator.ts @@ -1,29 +1,29 @@ import { ForbiddenException, ParamData } from '@nestjs/common'; -import { CUSTOM_ROUTE_ARGS_METADATA } from '@nestjs/common/constants'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '@nestjs/common/constants.js'; import { ContextType, Controller, PipeTransform, -} from '@nestjs/common/interfaces'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/interfaces/index.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; import { isObservable, lastValueFrom } from 'rxjs'; -import { ExternalExceptionFilterContext } from '../exceptions/external-exception-filter-context'; -import { GuardsConsumer, GuardsContextCreator } from '../guards'; -import { FORBIDDEN_MESSAGE } from '../guards/constants'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { ContextId } from '../injector/instance-wrapper'; -import { ModulesContainer } from '../injector/modules-container'; +import { ExternalExceptionFilterContext } from '../exceptions/external-exception-filter-context.js'; +import { GuardsConsumer, GuardsContextCreator } from '../guards/index.js'; +import { FORBIDDEN_MESSAGE } from '../guards/constants.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { ContextId } from '../injector/instance-wrapper.js'; +import { ModulesContainer } from '../injector/modules-container.js'; import { InterceptorsConsumer, InterceptorsContextCreator, -} from '../interceptors'; -import { PipesConsumer, PipesContextCreator } from '../pipes'; -import { ContextUtils, ParamProperties } from './context-utils'; -import { ExternalErrorProxy } from './external-proxy'; -import { HandlerMetadataStorage } from './handler-metadata-storage'; -import { ExternalHandlerMetadata } from './interfaces/external-handler-metadata.interface'; -import { ParamsMetadata } from './interfaces/params-metadata.interface'; +} from '../interceptors/index.js'; +import { PipesConsumer, PipesContextCreator } from '../pipes/index.js'; +import { ContextUtils, ParamProperties } from './context-utils.js'; +import { ExternalErrorProxy } from './external-proxy.js'; +import { HandlerMetadataStorage } from './handler-metadata-storage.js'; +import { ExternalHandlerMetadata } from './interfaces/external-handler-metadata.interface.js'; +import { ParamsMetadata } from './interfaces/params-metadata.interface.js'; export interface ParamsFactory { exchangeKeyForValue(type: number, data: ParamData, args: any): any; diff --git a/packages/core/helpers/external-proxy.ts b/packages/core/helpers/external-proxy.ts index 98f1cb7776..c74d18d313 100644 --- a/packages/core/helpers/external-proxy.ts +++ b/packages/core/helpers/external-proxy.ts @@ -1,6 +1,6 @@ -import { ContextType } from '@nestjs/common/interfaces'; -import { ExternalExceptionsHandler } from '../exceptions/external-exceptions-handler'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; +import { ContextType } from '@nestjs/common/interfaces/index.js'; +import { ExternalExceptionsHandler } from '../exceptions/external-exceptions-handler.js'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; export class ExternalErrorProxy { public createProxy( diff --git a/packages/core/helpers/get-class-scope.ts b/packages/core/helpers/get-class-scope.ts index 58378254a9..910d1f0522 100644 --- a/packages/core/helpers/get-class-scope.ts +++ b/packages/core/helpers/get-class-scope.ts @@ -1,6 +1,6 @@ import { Scope } from '@nestjs/common'; -import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants'; -import { Type } from '@nestjs/common/interfaces/type.interface'; +import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; export function getClassScope(provider: Type): Scope { const metadata = Reflect.getMetadata(SCOPE_OPTIONS_METADATA, provider); diff --git a/packages/core/helpers/handler-metadata-storage.ts b/packages/core/helpers/handler-metadata-storage.ts index 36e280f2ee..2ceb4e0d50 100644 --- a/packages/core/helpers/handler-metadata-storage.ts +++ b/packages/core/helpers/handler-metadata-storage.ts @@ -1,10 +1,10 @@ -import { Controller, Type } from '@nestjs/common/interfaces'; +import { Controller, Type } from '@nestjs/common/interfaces/index.js'; import { IncomingMessage } from 'http'; import { Observable } from 'rxjs'; -import { CONTROLLER_ID_KEY } from '../injector/constants'; -import { ContextId } from '../injector/instance-wrapper'; -import { HeaderStream } from '../router/sse-stream'; -import { ParamProperties } from './context-utils'; +import { CONTROLLER_ID_KEY } from '../injector/constants.js'; +import { ContextId } from '../injector/instance-wrapper.js'; +import { HeaderStream } from '../router/sse-stream.js'; +import { ParamProperties } from './context-utils.js'; export const HANDLER_METADATA_SYMBOL = Symbol.for('handler_metadata:cache'); diff --git a/packages/core/helpers/http-adapter-host.ts b/packages/core/helpers/http-adapter-host.ts index 4a17b463b7..d6a3c3b6d8 100644 --- a/packages/core/helpers/http-adapter-host.ts +++ b/packages/core/helpers/http-adapter-host.ts @@ -1,5 +1,5 @@ import { Observable, ReplaySubject, Subject } from 'rxjs'; -import { AbstractHttpAdapter } from '../adapters/http-adapter'; +import { AbstractHttpAdapter } from '../adapters/http-adapter.js'; /** * Defines the `HttpAdapterHost` object. diff --git a/packages/core/helpers/index.ts b/packages/core/helpers/index.ts index 76f8546060..7069833f81 100644 --- a/packages/core/helpers/index.ts +++ b/packages/core/helpers/index.ts @@ -1,3 +1,3 @@ -export * from './context-id-factory'; -export * from './external-context-creator'; -export * from './http-adapter-host'; +export * from './context-id-factory.js'; +export * from './external-context-creator.js'; +export * from './http-adapter-host.js'; diff --git a/packages/core/helpers/interfaces/external-handler-metadata.interface.ts b/packages/core/helpers/interfaces/external-handler-metadata.interface.ts index ecf99f8f59..ebed6eb29c 100644 --- a/packages/core/helpers/interfaces/external-handler-metadata.interface.ts +++ b/packages/core/helpers/interfaces/external-handler-metadata.interface.ts @@ -1,5 +1,5 @@ -import { ContextId } from '../../injector'; -import { ParamProperties } from '../context-utils'; +import { ContextId } from '../../injector/index.js'; +import { ParamProperties } from '../context-utils.js'; type ParamPropertiesWithMetatype = ParamProperties & { metatype?: T }; export interface ExternalHandlerMetadata { diff --git a/packages/core/helpers/interfaces/index.ts b/packages/core/helpers/interfaces/index.ts index 85e6252268..f8c92bd168 100644 --- a/packages/core/helpers/interfaces/index.ts +++ b/packages/core/helpers/interfaces/index.ts @@ -1,2 +1,2 @@ -export * from './external-handler-metadata.interface'; -export * from './params-metadata.interface'; +export * from './external-handler-metadata.interface.js'; +export * from './params-metadata.interface.js'; diff --git a/packages/core/helpers/is-durable.ts b/packages/core/helpers/is-durable.ts index 377c84f180..7821f25c8a 100644 --- a/packages/core/helpers/is-durable.ts +++ b/packages/core/helpers/is-durable.ts @@ -1,5 +1,5 @@ -import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants'; -import { Type } from '@nestjs/common/interfaces/type.interface'; +import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; export function isDurable(provider: Type): boolean | undefined { const metadata = Reflect.getMetadata(SCOPE_OPTIONS_METADATA, provider); diff --git a/packages/core/helpers/load-adapter.ts b/packages/core/helpers/load-adapter.ts index 0f5b192277..13617a8cd2 100644 --- a/packages/core/helpers/load-adapter.ts +++ b/packages/core/helpers/load-adapter.ts @@ -8,13 +8,13 @@ const MISSING_REQUIRED_DEPENDENCY = ( const logger = new Logger('PackageLoader'); -export function loadAdapter( +export async function loadAdapter( defaultPlatform: string, transport: string, loaderFn?: Function, ) { try { - return loaderFn ? loaderFn() : require(defaultPlatform); + return loaderFn ? await loaderFn() : await import(defaultPlatform); } catch (e) { logger.error(MISSING_REQUIRED_DEPENDENCY(defaultPlatform, transport)); process.exit(1); diff --git a/packages/core/helpers/messages.ts b/packages/core/helpers/messages.ts index 3c2fffd7c9..12354958fa 100644 --- a/packages/core/helpers/messages.ts +++ b/packages/core/helpers/messages.ts @@ -1,8 +1,8 @@ -import { RequestMethod } from '@nestjs/common/enums/request-method.enum'; +import { RequestMethod } from '@nestjs/common/enums/request-method.enum.js'; import { VersionValue, VERSION_NEUTRAL, -} from '@nestjs/common/interfaces/version-options.interface'; +} from '@nestjs/common/interfaces/version-options.interface.js'; export const MODULE_INIT_MESSAGE = ( text: TemplateStringsArray, diff --git a/packages/core/helpers/optional-require.ts b/packages/core/helpers/optional-require.ts index bbe9a24b8d..0061431835 100644 --- a/packages/core/helpers/optional-require.ts +++ b/packages/core/helpers/optional-require.ts @@ -1,6 +1,9 @@ -export function optionalRequire(packageName: string, loaderFn?: Function) { +export async function optionalRequire( + packageName: string, + loaderFn?: Function, +) { try { - return loaderFn ? loaderFn() : require(packageName); + return loaderFn ? await loaderFn() : await import(packageName); } catch (e) { return {}; } diff --git a/packages/core/helpers/router-method-factory.ts b/packages/core/helpers/router-method-factory.ts index 944240c8ee..ce820d6c22 100644 --- a/packages/core/helpers/router-method-factory.ts +++ b/packages/core/helpers/router-method-factory.ts @@ -1,5 +1,5 @@ import { HttpServer } from '@nestjs/common'; -import { RequestMethod } from '@nestjs/common/enums/request-method.enum'; +import { RequestMethod } from '@nestjs/common/enums/request-method.enum.js'; export const REQUEST_METHOD_MAP = { [RequestMethod.GET]: 'get', diff --git a/packages/core/hooks/before-app-shutdown.hook.ts b/packages/core/hooks/before-app-shutdown.hook.ts index 42fbed515a..bc999dcf5c 100644 --- a/packages/core/hooks/before-app-shutdown.hook.ts +++ b/packages/core/hooks/before-app-shutdown.hook.ts @@ -1,12 +1,12 @@ import { BeforeApplicationShutdown } from '@nestjs/common'; -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { getNonTransientInstances, getTransientInstances, -} from '../injector/helpers/transient-instances'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; +} from '../injector/helpers/transient-instances.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; /** * Checks if the given instance has the `beforeApplicationShutdown` function diff --git a/packages/core/hooks/index.ts b/packages/core/hooks/index.ts index 0e7a3ac083..bf5f01a561 100644 --- a/packages/core/hooks/index.ts +++ b/packages/core/hooks/index.ts @@ -1,5 +1,5 @@ -export * from './on-app-bootstrap.hook'; -export * from './on-app-shutdown.hook'; -export * from './on-module-destroy.hook'; -export * from './on-module-init.hook'; -export * from './before-app-shutdown.hook'; +export * from './on-app-bootstrap.hook.js'; +export * from './on-app-shutdown.hook.js'; +export * from './on-module-destroy.hook.js'; +export * from './on-module-init.hook.js'; +export * from './before-app-shutdown.hook.js'; diff --git a/packages/core/hooks/on-app-bootstrap.hook.ts b/packages/core/hooks/on-app-bootstrap.hook.ts index 9ec8ca6ebd..20743c7285 100644 --- a/packages/core/hooks/on-app-bootstrap.hook.ts +++ b/packages/core/hooks/on-app-bootstrap.hook.ts @@ -1,12 +1,12 @@ import { OnApplicationBootstrap } from '@nestjs/common'; -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { getNonTransientInstances, getTransientInstances, -} from '../injector/helpers/transient-instances'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; +} from '../injector/helpers/transient-instances.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; /** * Checks if the given instance has the `onApplicationBootstrap` function diff --git a/packages/core/hooks/on-app-shutdown.hook.ts b/packages/core/hooks/on-app-shutdown.hook.ts index 3c9b2b900e..5a2f70cd18 100644 --- a/packages/core/hooks/on-app-shutdown.hook.ts +++ b/packages/core/hooks/on-app-shutdown.hook.ts @@ -1,12 +1,12 @@ import { OnApplicationShutdown } from '@nestjs/common'; -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { getNonTransientInstances, getTransientInstances, -} from '../injector/helpers/transient-instances'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; +} from '../injector/helpers/transient-instances.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; /** * Checks if the given instance has the `onApplicationShutdown` function diff --git a/packages/core/hooks/on-module-destroy.hook.ts b/packages/core/hooks/on-module-destroy.hook.ts index 8c2692372a..d7a381a0ee 100644 --- a/packages/core/hooks/on-module-destroy.hook.ts +++ b/packages/core/hooks/on-module-destroy.hook.ts @@ -1,12 +1,12 @@ import { OnModuleDestroy } from '@nestjs/common'; -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { getNonTransientInstances, getTransientInstances, -} from '../injector/helpers/transient-instances'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; +} from '../injector/helpers/transient-instances.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; /** * Returns true or false if the given instance has a `onModuleDestroy` function diff --git a/packages/core/hooks/on-module-init.hook.ts b/packages/core/hooks/on-module-init.hook.ts index 029eaecadf..15ddd4a9fc 100644 --- a/packages/core/hooks/on-module-init.hook.ts +++ b/packages/core/hooks/on-module-init.hook.ts @@ -1,12 +1,12 @@ import { OnModuleInit } from '@nestjs/common'; -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { getNonTransientInstances, getTransientInstances, -} from '../injector/helpers/transient-instances'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; +} from '../injector/helpers/transient-instances.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; /** * Returns true or false if the given instance has a `onModuleInit` function diff --git a/packages/core/index.ts b/packages/core/index.ts index dd16d083d6..4048b5ff58 100644 --- a/packages/core/index.ts +++ b/packages/core/index.ts @@ -6,19 +6,24 @@ */ import 'reflect-metadata'; -export * from './adapters'; -export * from './application-config'; -export { APP_FILTER, APP_GUARD, APP_INTERCEPTOR, APP_PIPE } from './constants'; -export * from './discovery'; -export * from './exceptions'; -export * from './helpers'; -export * from './injector'; -export * from './inspector'; -export * from './metadata-scanner'; -export * from './middleware'; -export * from './nest-application'; -export * from './nest-application-context'; -export { NestFactory } from './nest-factory'; -export * from './repl'; -export * from './router'; -export * from './services'; +export * from './adapters/index.js'; +export * from './application-config.js'; +export { + APP_FILTER, + APP_GUARD, + APP_INTERCEPTOR, + APP_PIPE, +} from './constants.js'; +export * from './discovery/index.js'; +export * from './exceptions/index.js'; +export * from './helpers/index.js'; +export * from './injector/index.js'; +export * from './inspector/index.js'; +export * from './metadata-scanner.js'; +export * from './middleware/index.js'; +export * from './nest-application.js'; +export * from './nest-application-context.js'; +export { NestFactory } from './nest-factory.js'; +export * from './repl/index.js'; +export * from './router/index.js'; +export * from './services/index.js'; diff --git a/packages/core/injector/abstract-instance-resolver.ts b/packages/core/injector/abstract-instance-resolver.ts index 7ea66a4a94..330572314d 100644 --- a/packages/core/injector/abstract-instance-resolver.ts +++ b/packages/core/injector/abstract-instance-resolver.ts @@ -1,13 +1,13 @@ import { Abstract, Scope, Type } from '@nestjs/common'; -import { GetOrResolveOptions } from '@nestjs/common/interfaces'; +import { GetOrResolveOptions } from '@nestjs/common/interfaces/index.js'; import { InvalidClassScopeException, UnknownElementException, -} from '../errors/exceptions'; -import { Injector } from './injector'; -import { InstanceLink, InstanceLinksHost } from './instance-links-host'; -import { ContextId } from './instance-wrapper'; -import { Module } from './module'; +} from '../errors/exceptions/index.js'; +import { Injector } from './injector.js'; +import { InstanceLink, InstanceLinksHost } from './instance-links-host.js'; +import { ContextId } from './instance-wrapper.js'; +import { Module } from './module.js'; export abstract class AbstractInstanceResolver { protected abstract instanceLinksHost: InstanceLinksHost; diff --git a/packages/core/injector/compiler.ts b/packages/core/injector/compiler.ts index 075d97bc3a..abf898e7ab 100644 --- a/packages/core/injector/compiler.ts +++ b/packages/core/injector/compiler.ts @@ -2,8 +2,8 @@ import { DynamicModule, ForwardReference, Type, -} from '@nestjs/common/interfaces'; -import { ModuleOpaqueKeyFactory } from './opaque-key-factory/interfaces/module-opaque-key-factory.interface'; +} from '@nestjs/common/interfaces/index.js'; +import { ModuleOpaqueKeyFactory } from './opaque-key-factory/interfaces/module-opaque-key-factory.interface.js'; export interface ModuleFactory { type: Type; diff --git a/packages/core/injector/constants.ts b/packages/core/injector/constants.ts index 3bbcb2687a..dfe4e52792 100644 --- a/packages/core/injector/constants.ts +++ b/packages/core/injector/constants.ts @@ -1,4 +1,4 @@ -import { ContextId } from './instance-wrapper'; +import { ContextId } from './instance-wrapper.js'; export const CONTROLLER_ID_KEY = 'CONTROLLER_ID'; diff --git a/packages/core/injector/container.ts b/packages/core/injector/container.ts index 555e90a5ef..2c093655a2 100644 --- a/packages/core/injector/container.ts +++ b/packages/core/injector/container.ts @@ -2,28 +2,28 @@ import { DynamicModule, Provider } from '@nestjs/common'; import { EnhancerSubtype, GLOBAL_MODULE_METADATA, -} from '@nestjs/common/constants'; -import { Injectable, Type } from '@nestjs/common/interfaces'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { ApplicationConfig } from '../application-config'; -import { DiscoverableMetaHostCollection } from '../discovery/discoverable-meta-host-collection'; +} from '@nestjs/common/constants.js'; +import { Injectable, Type } from '@nestjs/common/interfaces/index.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { ApplicationConfig } from '../application-config.js'; +import { DiscoverableMetaHostCollection } from '../discovery/discoverable-meta-host-collection.js'; import { CircularDependencyException, UndefinedForwardRefException, UnknownModuleException, -} from '../errors/exceptions'; -import { InitializeOnPreviewAllowlist } from '../inspector/initialize-on-preview.allowlist'; -import { SerializedGraph } from '../inspector/serialized-graph'; -import { REQUEST } from '../router/request/request-constants'; -import { ModuleCompiler, ModuleFactory } from './compiler'; -import { ContextId } from './instance-wrapper'; -import { InternalCoreModule } from './internal-core-module/internal-core-module'; -import { InternalProvidersStorage } from './internal-providers-storage'; -import { Module } from './module'; -import { ModulesContainer } from './modules-container'; -import { ByReferenceModuleOpaqueKeyFactory } from './opaque-key-factory/by-reference-module-opaque-key-factory'; -import { DeepHashedModuleOpaqueKeyFactory } from './opaque-key-factory/deep-hashed-module-opaque-key-factory'; -import { ModuleOpaqueKeyFactory } from './opaque-key-factory/interfaces/module-opaque-key-factory.interface'; +} from '../errors/exceptions/index.js'; +import { InitializeOnPreviewAllowlist } from '../inspector/initialize-on-preview.allowlist.js'; +import { SerializedGraph } from '../inspector/serialized-graph.js'; +import { REQUEST } from '../router/request/request-constants.js'; +import { ModuleCompiler, ModuleFactory } from './compiler.js'; +import { ContextId } from './instance-wrapper.js'; +import { InternalCoreModule } from './internal-core-module/internal-core-module.js'; +import { InternalProvidersStorage } from './internal-providers-storage.js'; +import { Module } from './module.js'; +import { ModulesContainer } from './modules-container.js'; +import { ByReferenceModuleOpaqueKeyFactory } from './opaque-key-factory/by-reference-module-opaque-key-factory.js'; +import { DeepHashedModuleOpaqueKeyFactory } from './opaque-key-factory/deep-hashed-module-opaque-key-factory.js'; +import { ModuleOpaqueKeyFactory } from './opaque-key-factory/interfaces/module-opaque-key-factory.interface.js'; type ModuleMetatype = Type | DynamicModule | Promise; type ModuleScope = Type[]; diff --git a/packages/core/injector/helpers/provider-classifier.ts b/packages/core/injector/helpers/provider-classifier.ts index b883a4ea83..26e5bdf8f9 100644 --- a/packages/core/injector/helpers/provider-classifier.ts +++ b/packages/core/injector/helpers/provider-classifier.ts @@ -4,7 +4,7 @@ import { Provider, ValueProvider, } from '@nestjs/common'; -import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; export function isClassProvider( provider: Provider, diff --git a/packages/core/injector/helpers/transient-instances.ts b/packages/core/injector/helpers/transient-instances.ts index 4e7f4afd6c..adf34d3d5c 100644 --- a/packages/core/injector/helpers/transient-instances.ts +++ b/packages/core/injector/helpers/transient-instances.ts @@ -1,6 +1,6 @@ import { InjectionToken } from '@nestjs/common'; import { iterate } from 'iterare'; -import { InstanceWrapper } from '../instance-wrapper'; +import { InstanceWrapper } from '../instance-wrapper.js'; /** * Returns the instances which are transient diff --git a/packages/core/injector/index.ts b/packages/core/injector/index.ts index 21e406d066..494235ce12 100644 --- a/packages/core/injector/index.ts +++ b/packages/core/injector/index.ts @@ -1,6 +1,6 @@ -export * from './container'; -export * from './inquirer'; -export { ContextId, HostComponentInfo } from './instance-wrapper'; -export * from './lazy-module-loader/lazy-module-loader'; -export * from './module-ref'; -export * from './modules-container'; +export * from './container.js'; +export * from './inquirer/index.js'; +export { ContextId, HostComponentInfo } from './instance-wrapper.js'; +export * from './lazy-module-loader/lazy-module-loader.js'; +export * from './module-ref.js'; +export * from './modules-container.js'; diff --git a/packages/core/injector/injector.ts b/packages/core/injector/injector.ts index 85f5d0204a..0f457eb156 100644 --- a/packages/core/injector/injector.ts +++ b/packages/core/injector/injector.ts @@ -10,14 +10,14 @@ import { PARAMTYPES_METADATA, PROPERTY_DEPS_METADATA, SELF_DECLARED_DEPS_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { Controller, ForwardReference, Injectable, Type, -} from '@nestjs/common/interfaces'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; +} from '@nestjs/common/interfaces/index.js'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; import { isFunction, isNil, @@ -25,24 +25,24 @@ import { isString, isSymbol, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { performance } from 'perf_hooks'; -import { CircularDependencyException } from '../errors/exceptions'; -import { RuntimeException } from '../errors/exceptions/runtime.exception'; -import { UndefinedDependencyException } from '../errors/exceptions/undefined-dependency.exception'; -import { UnknownDependenciesException } from '../errors/exceptions/unknown-dependencies.exception'; -import { Barrier } from '../helpers/barrier'; -import { STATIC_CONTEXT } from './constants'; -import { INQUIRER } from './inquirer'; +import { CircularDependencyException } from '../errors/exceptions/index.js'; +import { RuntimeException } from '../errors/exceptions/runtime.exception.js'; +import { UndefinedDependencyException } from '../errors/exceptions/undefined-dependency.exception.js'; +import { UnknownDependenciesException } from '../errors/exceptions/unknown-dependencies.exception.js'; +import { Barrier } from '../helpers/barrier.js'; +import { STATIC_CONTEXT } from './constants.js'; +import { INQUIRER } from './inquirer/index.js'; import { ContextId, InstancePerContext, InstanceWrapper, PropertyMetadata, -} from './instance-wrapper'; -import { Module } from './module'; -import { SettlementSignal } from './settlement-signal'; +} from './instance-wrapper.js'; +import { Module } from './module.js'; +import { SettlementSignal } from './settlement-signal.js'; /** * The type of an injectable dependency diff --git a/packages/core/injector/inquirer/index.ts b/packages/core/injector/inquirer/index.ts index cec511a330..66995589fe 100644 --- a/packages/core/injector/inquirer/index.ts +++ b/packages/core/injector/inquirer/index.ts @@ -1 +1 @@ -export * from './inquirer-constants'; +export * from './inquirer-constants.js'; diff --git a/packages/core/injector/inquirer/inquirer-providers.ts b/packages/core/injector/inquirer/inquirer-providers.ts index 20a49d2178..6550ef24b6 100644 --- a/packages/core/injector/inquirer/inquirer-providers.ts +++ b/packages/core/injector/inquirer/inquirer-providers.ts @@ -1,5 +1,5 @@ import { Provider, Scope } from '@nestjs/common'; -import { INQUIRER } from './inquirer-constants'; +import { INQUIRER } from './inquirer-constants.js'; const noop = () => {}; export const inquirerProvider: Provider = { diff --git a/packages/core/injector/instance-links-host.ts b/packages/core/injector/instance-links-host.ts index bd6839e30e..b78ebc0430 100644 --- a/packages/core/injector/instance-links-host.ts +++ b/packages/core/injector/instance-links-host.ts @@ -1,9 +1,9 @@ import { InjectionToken } from '@nestjs/common'; -import { isFunction } from '@nestjs/common/utils/shared.utils'; -import { UnknownElementException } from '../errors/exceptions/unknown-element.exception'; -import { NestContainer } from './container'; -import { InstanceWrapper } from './instance-wrapper'; -import { Module } from './module'; +import { isFunction } from '@nestjs/common/utils/shared.utils.js'; +import { UnknownElementException } from '../errors/exceptions/unknown-element.exception.js'; +import { NestContainer } from './container.js'; +import { InstanceWrapper } from './instance-wrapper.js'; +import { Module } from './module.js'; type HostCollection = 'providers' | 'controllers' | 'injectables'; diff --git a/packages/core/injector/instance-loader.ts b/packages/core/injector/instance-loader.ts index 489ffdef44..69a64990ca 100644 --- a/packages/core/injector/instance-loader.ts +++ b/packages/core/injector/instance-loader.ts @@ -1,12 +1,12 @@ import { Logger, LoggerService } from '@nestjs/common'; -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { Injectable } from '@nestjs/common/interfaces/injectable.interface'; -import { MODULE_INIT_MESSAGE } from '../helpers/messages'; -import { GraphInspector } from '../inspector/graph-inspector'; -import { NestContainer } from './container'; -import { Injector } from './injector'; -import { InternalCoreModule } from './internal-core-module/internal-core-module'; -import { Module } from './module'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { Injectable } from '@nestjs/common/interfaces/injectable.interface.js'; +import { MODULE_INIT_MESSAGE } from '../helpers/messages.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; +import { NestContainer } from './container.js'; +import { Injector } from './injector.js'; +import { InternalCoreModule } from './internal-core-module/internal-core-module.js'; +import { Module } from './module.js'; export class InstanceLoader { constructor( diff --git a/packages/core/injector/instance-wrapper.ts b/packages/core/injector/instance-wrapper.ts index 962e9259b9..0c60b94557 100644 --- a/packages/core/injector/instance-wrapper.ts +++ b/packages/core/injector/instance-wrapper.ts @@ -1,23 +1,26 @@ import { Logger, LoggerService, Provider, Scope, Type } from '@nestjs/common'; -import { EnhancerSubtype } from '@nestjs/common/constants'; -import { FactoryProvider, InjectionToken } from '@nestjs/common/interfaces'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; +import { EnhancerSubtype } from '@nestjs/common/constants.js'; +import { + FactoryProvider, + InjectionToken, +} from '@nestjs/common/interfaces/index.js'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; import { isNil, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { UuidFactory } from '../inspector/uuid-factory'; -import { STATIC_CONTEXT } from './constants'; +import { UuidFactory } from '../inspector/uuid-factory.js'; +import { STATIC_CONTEXT } from './constants.js'; import { isClassProvider, isFactoryProvider, isValueProvider, -} from './helpers/provider-classifier'; -import { Module } from './module'; -import { SettlementSignal } from './settlement-signal'; +} from './helpers/provider-classifier.js'; +import { Module } from './module.js'; +import { SettlementSignal } from './settlement-signal.js'; export const INSTANCE_METADATA_SYMBOL = Symbol.for('instance_metadata:cache'); export const INSTANCE_ID_SYMBOL = Symbol.for('instance_metadata:id'); diff --git a/packages/core/injector/internal-core-module/index.ts b/packages/core/injector/internal-core-module/index.ts index a863c2132a..a2a906f69f 100644 --- a/packages/core/injector/internal-core-module/index.ts +++ b/packages/core/injector/internal-core-module/index.ts @@ -1 +1 @@ -export * from './internal-core-module'; +export * from './internal-core-module.js'; diff --git a/packages/core/injector/internal-core-module/internal-core-module-factory.ts b/packages/core/injector/internal-core-module/internal-core-module-factory.ts index 9c3533049c..ecbba528b1 100644 --- a/packages/core/injector/internal-core-module/internal-core-module-factory.ts +++ b/packages/core/injector/internal-core-module/internal-core-module-factory.ts @@ -1,18 +1,18 @@ import { Logger } from '@nestjs/common'; -import { ExternalContextCreator } from '../../helpers/external-context-creator'; -import { HttpAdapterHost } from '../../helpers/http-adapter-host'; -import { GraphInspector } from '../../inspector/graph-inspector'; -import { InitializeOnPreviewAllowlist } from '../../inspector/initialize-on-preview.allowlist'; -import { SerializedGraph } from '../../inspector/serialized-graph'; -import { ModuleOverride } from '../../interfaces/module-override.interface'; -import { DependenciesScanner } from '../../scanner'; -import { ModuleCompiler } from '../compiler'; -import { NestContainer } from '../container'; -import { Injector } from '../injector'; -import { InstanceLoader } from '../instance-loader'; -import { LazyModuleLoader } from '../lazy-module-loader/lazy-module-loader'; -import { ModulesContainer } from '../modules-container'; -import { InternalCoreModule } from './internal-core-module'; +import { ExternalContextCreator } from '../../helpers/external-context-creator.js'; +import { HttpAdapterHost } from '../../helpers/http-adapter-host.js'; +import { GraphInspector } from '../../inspector/graph-inspector.js'; +import { InitializeOnPreviewAllowlist } from '../../inspector/initialize-on-preview.allowlist.js'; +import { SerializedGraph } from '../../inspector/serialized-graph.js'; +import { ModuleOverride } from '../../interfaces/module-override.interface.js'; +import { DependenciesScanner } from '../../scanner.js'; +import { ModuleCompiler } from '../compiler.js'; +import { NestContainer } from '../container.js'; +import { Injector } from '../injector.js'; +import { InstanceLoader } from '../instance-loader.js'; +import { LazyModuleLoader } from '../lazy-module-loader/lazy-module-loader.js'; +import { ModulesContainer } from '../modules-container.js'; +import { InternalCoreModule } from './internal-core-module.js'; export class InternalCoreModuleFactory { static create( diff --git a/packages/core/injector/internal-core-module/internal-core-module.ts b/packages/core/injector/internal-core-module/internal-core-module.ts index 1788183377..bcfb7580de 100644 --- a/packages/core/injector/internal-core-module/internal-core-module.ts +++ b/packages/core/injector/internal-core-module/internal-core-module.ts @@ -3,10 +3,10 @@ import { ExistingProvider, FactoryProvider, ValueProvider, -} from '@nestjs/common/interfaces'; -import { requestProvider } from '../../router/request/request-providers'; -import { Reflector } from '../../services'; -import { inquirerProvider } from '../inquirer/inquirer-providers'; +} from '@nestjs/common/interfaces/index.js'; +import { requestProvider } from '../../router/request/request-providers.js'; +import { Reflector } from '../../services/index.js'; +import { inquirerProvider } from '../inquirer/inquirer-providers.js'; const ReflectorAliasProvider = { provide: Reflector.name, diff --git a/packages/core/injector/internal-providers-storage.ts b/packages/core/injector/internal-providers-storage.ts index 952e369778..61f6bbd6db 100644 --- a/packages/core/injector/internal-providers-storage.ts +++ b/packages/core/injector/internal-providers-storage.ts @@ -1,5 +1,5 @@ -import { AbstractHttpAdapter } from '../adapters'; -import { HttpAdapterHost } from '../helpers/http-adapter-host'; +import { AbstractHttpAdapter } from '../adapters/index.js'; +import { HttpAdapterHost } from '../helpers/http-adapter-host.js'; export class InternalProvidersStorage { private readonly _httpAdapterHost = new HttpAdapterHost(); diff --git a/packages/core/injector/lazy-module-loader/lazy-module-loader.ts b/packages/core/injector/lazy-module-loader/lazy-module-loader.ts index b949a1b74c..b9062cedef 100644 --- a/packages/core/injector/lazy-module-loader/lazy-module-loader.ts +++ b/packages/core/injector/lazy-module-loader/lazy-module-loader.ts @@ -1,13 +1,13 @@ import { DynamicModule, Type } from '@nestjs/common'; -import { ModuleOverride } from '../../interfaces/module-override.interface'; -import { DependenciesScanner } from '../../scanner'; -import { ModuleCompiler } from '../compiler'; -import { SilentLogger } from '../helpers/silent-logger'; -import { InstanceLoader } from '../instance-loader'; -import { Module } from '../module'; -import { ModuleRef } from '../module-ref'; -import { ModulesContainer } from '../modules-container'; -import { LazyModuleLoaderLoadOptions } from './lazy-module-loader-options.interface'; +import { ModuleOverride } from '../../interfaces/module-override.interface.js'; +import { DependenciesScanner } from '../../scanner.js'; +import { ModuleCompiler } from '../compiler.js'; +import { SilentLogger } from '../helpers/silent-logger.js'; +import { InstanceLoader } from '../instance-loader.js'; +import { Module } from '../module.js'; +import { ModuleRef } from '../module-ref.js'; +import { ModulesContainer } from '../modules-container.js'; +import { LazyModuleLoaderLoadOptions } from './lazy-module-loader-options.interface.js'; export class LazyModuleLoader { constructor( diff --git a/packages/core/injector/module-ref.ts b/packages/core/injector/module-ref.ts index 6dd3544181..37bcd804fc 100644 --- a/packages/core/injector/module-ref.ts +++ b/packages/core/injector/module-ref.ts @@ -1,12 +1,12 @@ import { IntrospectionResult, Scope, Type } from '@nestjs/common'; -import { getClassScope } from '../helpers/get-class-scope'; -import { isDurable } from '../helpers/is-durable'; -import { AbstractInstanceResolver } from './abstract-instance-resolver'; -import { NestContainer } from './container'; -import { Injector } from './injector'; -import { InstanceLinksHost } from './instance-links-host'; -import { ContextId, InstanceWrapper } from './instance-wrapper'; -import { Module } from './module'; +import { getClassScope } from '../helpers/get-class-scope.js'; +import { isDurable } from '../helpers/is-durable.js'; +import { AbstractInstanceResolver } from './abstract-instance-resolver.js'; +import { NestContainer } from './container.js'; +import { Injector } from './injector.js'; +import { InstanceLinksHost } from './instance-links-host.js'; +import { ContextId, InstanceWrapper } from './instance-wrapper.js'; +import { Module } from './module.js'; export interface ModuleRefGetOrResolveOpts { /** diff --git a/packages/core/injector/module.ts b/packages/core/injector/module.ts index c9dd10a937..a297c314e0 100644 --- a/packages/core/injector/module.ts +++ b/packages/core/injector/module.ts @@ -1,7 +1,7 @@ import { EnhancerSubtype, ENTRY_PROVIDER_WATERMARK, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { ClassProvider, Controller, @@ -15,8 +15,8 @@ import { Scope, Type, ValueProvider, -} from '@nestjs/common/interfaces'; -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; +} from '@nestjs/common/interfaces/index.js'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; import { isFunction, isNil, @@ -24,22 +24,22 @@ import { isString, isSymbol, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from '../application-config'; +import { ApplicationConfig } from '../application-config.js'; import { InvalidClassException, RuntimeException, UnknownExportException, -} from '../errors/exceptions'; -import { createContextId } from '../helpers/context-id-factory'; -import { getClassScope } from '../helpers/get-class-scope'; -import { isDurable } from '../helpers/is-durable'; -import { UuidFactory } from '../inspector/uuid-factory'; -import { CONTROLLER_ID_KEY } from './constants'; -import { NestContainer } from './container'; -import { ContextId, InstanceWrapper } from './instance-wrapper'; -import { ModuleRef, ModuleRefGetOrResolveOpts } from './module-ref'; +} from '../errors/exceptions/index.js'; +import { createContextId } from '../helpers/context-id-factory.js'; +import { getClassScope } from '../helpers/get-class-scope.js'; +import { isDurable } from '../helpers/is-durable.js'; +import { UuidFactory } from '../inspector/uuid-factory.js'; +import { CONTROLLER_ID_KEY } from './constants.js'; +import { NestContainer } from './container.js'; +import { ContextId, InstanceWrapper } from './instance-wrapper.js'; +import { ModuleRef, ModuleRefGetOrResolveOpts } from './module-ref.js'; export class Module { private readonly _id: string; diff --git a/packages/core/injector/modules-container.ts b/packages/core/injector/modules-container.ts index c2316f5cb9..3343f72b05 100644 --- a/packages/core/injector/modules-container.ts +++ b/packages/core/injector/modules-container.ts @@ -1,6 +1,6 @@ import { Observable, ReplaySubject } from 'rxjs'; import { uid } from 'uid'; -import { Module } from './module'; +import { Module } from './module.js'; export class ModulesContainer extends Map { private readonly _applicationId = uid(21); diff --git a/packages/core/injector/opaque-key-factory/by-reference-module-opaque-key-factory.ts b/packages/core/injector/opaque-key-factory/by-reference-module-opaque-key-factory.ts index e0a6971e15..49465e2980 100644 --- a/packages/core/injector/opaque-key-factory/by-reference-module-opaque-key-factory.ts +++ b/packages/core/injector/opaque-key-factory/by-reference-module-opaque-key-factory.ts @@ -1,9 +1,9 @@ -import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface'; -import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface'; -import { Type } from '@nestjs/common/interfaces/type.interface'; -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; +import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface.js'; +import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; import { createHash } from 'crypto'; -import { ModuleOpaqueKeyFactory } from './interfaces/module-opaque-key-factory.interface'; +import { ModuleOpaqueKeyFactory } from './interfaces/module-opaque-key-factory.interface.js'; const K_MODULE_ID = Symbol('K_MODULE_ID'); diff --git a/packages/core/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.ts b/packages/core/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.ts index 010938732f..79a28d8dda 100644 --- a/packages/core/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.ts +++ b/packages/core/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.ts @@ -1,11 +1,17 @@ -import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface'; -import { Type } from '@nestjs/common/interfaces/type.interface'; -import { Logger } from '@nestjs/common/services/logger.service'; -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; -import { isFunction, isSymbol } from '@nestjs/common/utils/shared.utils'; +import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; +import { isFunction, isSymbol } from '@nestjs/common/utils/shared.utils.js'; import { createHash } from 'crypto'; -import stringify from 'fast-safe-stringify'; -import { ModuleOpaqueKeyFactory } from './interfaces/module-opaque-key-factory.interface'; +import _stringify from 'fast-safe-stringify'; +import { ModuleOpaqueKeyFactory } from './interfaces/module-opaque-key-factory.interface.js'; +// CJS interop: fast-safe-stringify sets module.exports.default = module.exports +const stringify = ((_stringify as any).default ?? _stringify) as unknown as ( + value: any, + replacer?: (key: string, value: any) => any, + space?: string | number, +) => string; const CLASS_STR = 'class '; const CLASS_STR_LEN = CLASS_STR.length; diff --git a/packages/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.ts b/packages/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.ts index 1b58a5fffd..b89cb0ad84 100644 --- a/packages/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.ts +++ b/packages/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.ts @@ -1,6 +1,6 @@ -import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface'; -import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface'; -import { Type } from '@nestjs/common/interfaces/type.interface'; +import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface.js'; +import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; export interface ModuleOpaqueKeyFactory { /** diff --git a/packages/core/injector/topology-tree/topology-tree.ts b/packages/core/injector/topology-tree/topology-tree.ts index 940cd4aa39..6f06d1fe1f 100644 --- a/packages/core/injector/topology-tree/topology-tree.ts +++ b/packages/core/injector/topology-tree/topology-tree.ts @@ -1,5 +1,5 @@ -import { Module } from '../module'; -import { TreeNode } from './tree-node'; +import { Module } from '../module.js'; +import { TreeNode } from './tree-node.js'; export class TopologyTree { private root: TreeNode; diff --git a/packages/core/inspector/graph-inspector.ts b/packages/core/inspector/graph-inspector.ts index bf79028a6d..c353bd8b5b 100644 --- a/packages/core/inspector/graph-inspector.ts +++ b/packages/core/inspector/graph-inspector.ts @@ -1,14 +1,14 @@ -import { UnknownDependenciesException } from '../errors/exceptions/unknown-dependencies.exception'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; -import { DeterministicUuidRegistry } from './deterministic-uuid-registry'; -import { EnhancerMetadataCacheEntry } from './interfaces/enhancer-metadata-cache-entry.interface'; -import { Entrypoint } from './interfaces/entrypoint.interface'; -import { OrphanedEnhancerDefinition } from './interfaces/extras.interface'; -import { ClassNode, Node } from './interfaces/node.interface'; -import { PartialGraphHost } from './partial-graph.host'; -import { SerializedGraph } from './serialized-graph'; +import { UnknownDependenciesException } from '../errors/exceptions/unknown-dependencies.exception.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; +import { DeterministicUuidRegistry } from './deterministic-uuid-registry.js'; +import { EnhancerMetadataCacheEntry } from './interfaces/enhancer-metadata-cache-entry.interface.js'; +import { Entrypoint } from './interfaces/entrypoint.interface.js'; +import { OrphanedEnhancerDefinition } from './interfaces/extras.interface.js'; +import { ClassNode, Node } from './interfaces/node.interface.js'; +import { PartialGraphHost } from './partial-graph.host.js'; +import { SerializedGraph } from './serialized-graph.js'; export class GraphInspector { private readonly graph: SerializedGraph; diff --git a/packages/core/inspector/index.ts b/packages/core/inspector/index.ts index db830f6e71..dc01ab9b4b 100644 --- a/packages/core/inspector/index.ts +++ b/packages/core/inspector/index.ts @@ -1,4 +1,4 @@ -export * from './graph-inspector'; -export * from './initialize-on-preview.allowlist'; -export * from './partial-graph.host'; -export * from './serialized-graph'; +export * from './graph-inspector.js'; +export * from './initialize-on-preview.allowlist.js'; +export * from './partial-graph.host.js'; +export * from './serialized-graph.js'; diff --git a/packages/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.ts b/packages/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.ts index 7f4574d94e..7d7fd71d22 100644 --- a/packages/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.ts +++ b/packages/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.ts @@ -1,6 +1,6 @@ import { Type } from '@nestjs/common'; -import { EnhancerSubtype } from '@nestjs/common/constants'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; +import { EnhancerSubtype } from '@nestjs/common/constants.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; export interface EnhancerMetadataCacheEntry { targetNodeId?: string; diff --git a/packages/core/inspector/interfaces/entrypoint.interface.ts b/packages/core/inspector/interfaces/entrypoint.interface.ts index 057c040c36..67ed3d14bc 100644 --- a/packages/core/inspector/interfaces/entrypoint.interface.ts +++ b/packages/core/inspector/interfaces/entrypoint.interface.ts @@ -1,5 +1,5 @@ import { RequestMethod } from '@nestjs/common'; -import { VersionValue } from '@nestjs/common/interfaces'; +import { VersionValue } from '@nestjs/common/interfaces/index.js'; export type HttpEntrypointMetadata = { path: string; diff --git a/packages/core/inspector/interfaces/extras.interface.ts b/packages/core/inspector/interfaces/extras.interface.ts index 37abd639f9..b426a83f05 100644 --- a/packages/core/inspector/interfaces/extras.interface.ts +++ b/packages/core/inspector/interfaces/extras.interface.ts @@ -1,4 +1,4 @@ -import { EnhancerSubtype } from '@nestjs/common/constants'; +import { EnhancerSubtype } from '@nestjs/common/constants.js'; /** * Enhancers attached through APP_PIPE, APP_GUARD, APP_INTERCEPTOR, and APP_FILTER tokens. diff --git a/packages/core/inspector/interfaces/node.interface.ts b/packages/core/inspector/interfaces/node.interface.ts index 1d85893990..f9be21605c 100644 --- a/packages/core/inspector/interfaces/node.interface.ts +++ b/packages/core/inspector/interfaces/node.interface.ts @@ -1,5 +1,5 @@ import { InjectionToken, Scope } from '@nestjs/common'; -import { EnhancerSubtype } from '@nestjs/common/constants'; +import { EnhancerSubtype } from '@nestjs/common/constants.js'; export type ModuleNode = { metadata: { diff --git a/packages/core/inspector/interfaces/serialized-graph-json.interface.ts b/packages/core/inspector/interfaces/serialized-graph-json.interface.ts index 9cd9d76cf4..e55a585014 100644 --- a/packages/core/inspector/interfaces/serialized-graph-json.interface.ts +++ b/packages/core/inspector/interfaces/serialized-graph-json.interface.ts @@ -1,9 +1,9 @@ -import { SerializedGraphStatus } from '../serialized-graph'; -import { Edge } from './edge.interface'; -import { Entrypoint } from './entrypoint.interface'; -import { Extras } from './extras.interface'; -import { Node } from './node.interface'; -import { SerializedGraphMetadata } from './serialized-graph-metadata.interface'; +import { SerializedGraphStatus } from '../serialized-graph.js'; +import { Edge } from './edge.interface.js'; +import { Entrypoint } from './entrypoint.interface.js'; +import { Extras } from './extras.interface.js'; +import { Node } from './node.interface.js'; +import { SerializedGraphMetadata } from './serialized-graph-metadata.interface.js'; export interface SerializedGraphJson { nodes: Record; diff --git a/packages/core/inspector/interfaces/serialized-graph-metadata.interface.ts b/packages/core/inspector/interfaces/serialized-graph-metadata.interface.ts index c88749d019..dedf0fe565 100644 --- a/packages/core/inspector/interfaces/serialized-graph-metadata.interface.ts +++ b/packages/core/inspector/interfaces/serialized-graph-metadata.interface.ts @@ -1,4 +1,4 @@ -import { InjectorDependencyContext } from '../../injector/injector'; +import { InjectorDependencyContext } from '../../injector/injector.js'; export interface SerializedGraphMetadata { cause: { diff --git a/packages/core/inspector/noop-graph-inspector.ts b/packages/core/inspector/noop-graph-inspector.ts index ba48ce5d83..260d122c2b 100644 --- a/packages/core/inspector/noop-graph-inspector.ts +++ b/packages/core/inspector/noop-graph-inspector.ts @@ -1,4 +1,4 @@ -import { GraphInspector } from './graph-inspector'; +import { GraphInspector } from './graph-inspector.js'; const noop = () => {}; export const NoopGraphInspector: GraphInspector = new Proxy( diff --git a/packages/core/inspector/partial-graph.host.ts b/packages/core/inspector/partial-graph.host.ts index 84ae71f514..72ff816384 100644 --- a/packages/core/inspector/partial-graph.host.ts +++ b/packages/core/inspector/partial-graph.host.ts @@ -1,4 +1,4 @@ -import { SerializedGraph } from './serialized-graph'; +import { SerializedGraph } from './serialized-graph.js'; export class PartialGraphHost { private static partialGraph: SerializedGraph; diff --git a/packages/core/inspector/serialized-graph.ts b/packages/core/inspector/serialized-graph.ts index a427162086..e2c0a386c8 100644 --- a/packages/core/inspector/serialized-graph.ts +++ b/packages/core/inspector/serialized-graph.ts @@ -1,23 +1,23 @@ import { InjectionToken } from '@nestjs/common'; -import { ApplicationConfig } from '../application-config'; -import { ExternalContextCreator } from '../helpers/external-context-creator'; -import { HttpAdapterHost } from '../helpers/http-adapter-host'; -import { INQUIRER } from '../injector/inquirer/inquirer-constants'; -import { LazyModuleLoader } from '../injector/lazy-module-loader/lazy-module-loader'; -import { ModuleRef } from '../injector/module-ref'; -import { ModulesContainer } from '../injector/modules-container'; -import { REQUEST } from '../router/request/request-constants'; -import { Reflector } from '../services/reflector.service'; -import { DeterministicUuidRegistry } from './deterministic-uuid-registry'; -import { Edge } from './interfaces/edge.interface'; -import { Entrypoint } from './interfaces/entrypoint.interface'; +import { ApplicationConfig } from '../application-config.js'; +import { ExternalContextCreator } from '../helpers/external-context-creator.js'; +import { HttpAdapterHost } from '../helpers/http-adapter-host.js'; +import { INQUIRER } from '../injector/inquirer/inquirer-constants.js'; +import { LazyModuleLoader } from '../injector/lazy-module-loader/lazy-module-loader.js'; +import { ModuleRef } from '../injector/module-ref.js'; +import { ModulesContainer } from '../injector/modules-container.js'; +import { REQUEST } from '../router/request/request-constants.js'; +import { Reflector } from '../services/reflector.service.js'; +import { DeterministicUuidRegistry } from './deterministic-uuid-registry.js'; +import { Edge } from './interfaces/edge.interface.js'; +import { Entrypoint } from './interfaces/entrypoint.interface.js'; import { Extras, OrphanedEnhancerDefinition, -} from './interfaces/extras.interface'; -import { Node } from './interfaces/node.interface'; -import { SerializedGraphJson } from './interfaces/serialized-graph-json.interface'; -import { SerializedGraphMetadata } from './interfaces/serialized-graph-metadata.interface'; +} from './interfaces/extras.interface.js'; +import { Node } from './interfaces/node.interface.js'; +import { SerializedGraphJson } from './interfaces/serialized-graph-json.interface.js'; +import { SerializedGraphMetadata } from './interfaces/serialized-graph-metadata.interface.js'; export type SerializedGraphStatus = 'partial' | 'complete'; type WithOptionalId> = Omit & diff --git a/packages/core/inspector/uuid-factory.ts b/packages/core/inspector/uuid-factory.ts index 1f89ad13d4..85cd9867c6 100644 --- a/packages/core/inspector/uuid-factory.ts +++ b/packages/core/inspector/uuid-factory.ts @@ -1,5 +1,5 @@ -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; -import { DeterministicUuidRegistry } from './deterministic-uuid-registry'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; +import { DeterministicUuidRegistry } from './deterministic-uuid-registry.js'; export enum UuidFactoryMode { Random = 'random', diff --git a/packages/core/interceptors/index.ts b/packages/core/interceptors/index.ts index 7835bb29b4..cdb8e52fc3 100644 --- a/packages/core/interceptors/index.ts +++ b/packages/core/interceptors/index.ts @@ -1,2 +1,2 @@ -export * from './interceptors-consumer'; -export * from './interceptors-context-creator'; +export * from './interceptors-consumer.js'; +export * from './interceptors-context-creator.js'; diff --git a/packages/core/interceptors/interceptors-consumer.ts b/packages/core/interceptors/interceptors-consumer.ts index 5032e93235..ff72c95c60 100644 --- a/packages/core/interceptors/interceptors-consumer.ts +++ b/packages/core/interceptors/interceptors-consumer.ts @@ -3,12 +3,12 @@ import { CallHandler, ContextType, Controller, -} from '@nestjs/common/interfaces'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/interfaces/index.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; import { AsyncResource } from 'async_hooks'; import { Observable, defer, from as fromPromise } from 'rxjs'; import { mergeAll, switchMap } from 'rxjs/operators'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; export class InterceptorsConsumer { public async intercept( diff --git a/packages/core/interceptors/interceptors-context-creator.ts b/packages/core/interceptors/interceptors-context-creator.ts index a7bebc0449..161ae6b002 100644 --- a/packages/core/interceptors/interceptors-context-creator.ts +++ b/packages/core/interceptors/interceptors-context-creator.ts @@ -1,12 +1,16 @@ -import { INTERCEPTORS_METADATA } from '@nestjs/common/constants'; -import { Controller, NestInterceptor, Type } from '@nestjs/common/interfaces'; -import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils'; +import { INTERCEPTORS_METADATA } from '@nestjs/common/constants.js'; +import { + Controller, + NestInterceptor, + Type, +} from '@nestjs/common/interfaces/index.js'; +import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from '../application-config'; -import { ContextCreator } from '../helpers/context-creator'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; +import { ApplicationConfig } from '../application-config.js'; +import { ContextCreator } from '../helpers/context-creator.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; export class InterceptorsContextCreator extends ContextCreator { private moduleContext: string; diff --git a/packages/core/interfaces/module-definition.interface.ts b/packages/core/interfaces/module-definition.interface.ts index edeb8d60e8..a0cf3f211e 100644 --- a/packages/core/interfaces/module-definition.interface.ts +++ b/packages/core/interfaces/module-definition.interface.ts @@ -1,5 +1,5 @@ import { DynamicModule, ForwardReference } from '@nestjs/common'; -import { Type } from '@nestjs/common/interfaces'; +import { Type } from '@nestjs/common/interfaces/index.js'; export type ModuleDefinition = | ForwardReference diff --git a/packages/core/interfaces/module-override.interface.ts b/packages/core/interfaces/module-override.interface.ts index c92dffb2d3..cee2602ae7 100644 --- a/packages/core/interfaces/module-override.interface.ts +++ b/packages/core/interfaces/module-override.interface.ts @@ -1,4 +1,4 @@ -import { ModuleDefinition } from './module-definition.interface'; +import { ModuleDefinition } from './module-definition.interface.js'; export interface ModuleOverride { moduleToReplace: ModuleDefinition; diff --git a/packages/core/metadata-scanner.ts b/packages/core/metadata-scanner.ts index 7c6a232666..ae1f740714 100644 --- a/packages/core/metadata-scanner.ts +++ b/packages/core/metadata-scanner.ts @@ -1,9 +1,9 @@ -import { Injectable } from '@nestjs/common/interfaces/injectable.interface'; +import { Injectable } from '@nestjs/common/interfaces/injectable.interface.js'; import { isConstructor, isFunction, isNil, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; export class MetadataScanner { private readonly cachedScannedPrototypes: Map = new Map(); diff --git a/packages/core/middleware/builder.ts b/packages/core/middleware/builder.ts index 3d423e1601..8b4f5d61c9 100644 --- a/packages/core/middleware/builder.ts +++ b/packages/core/middleware/builder.ts @@ -2,17 +2,17 @@ import { HttpServer, MiddlewareConsumer, Type, -} from '@nestjs/common/interfaces'; +} from '@nestjs/common/interfaces/index.js'; import { MiddlewareConfigProxy, MiddlewareConfiguration, RouteInfo, -} from '@nestjs/common/interfaces/middleware'; -import { stripEndSlash } from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/interfaces/middleware/index.js'; +import { stripEndSlash } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { RouteInfoPathExtractor } from './route-info-path-extractor'; -import { RoutesMapper } from './routes-mapper'; -import { filterMiddleware } from './utils'; +import { RouteInfoPathExtractor } from './route-info-path-extractor.js'; +import { RoutesMapper } from './routes-mapper.js'; +import { filterMiddleware } from './utils.js'; export class MiddlewareBuilder implements MiddlewareConsumer { private readonly middlewareCollection = new Set(); diff --git a/packages/core/middleware/container.ts b/packages/core/middleware/container.ts index a30a3fa2d8..b4c32c5c50 100644 --- a/packages/core/middleware/container.ts +++ b/packages/core/middleware/container.ts @@ -1,9 +1,9 @@ import { InjectionToken, Type } from '@nestjs/common'; -import { MiddlewareConfiguration } from '@nestjs/common/interfaces/middleware/middleware-configuration.interface'; -import { getClassScope } from '../helpers/get-class-scope'; -import { isDurable } from '../helpers/is-durable'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; +import { MiddlewareConfiguration } from '@nestjs/common/interfaces/middleware/middleware-configuration.interface.js'; +import { getClassScope } from '../helpers/get-class-scope.js'; +import { isDurable } from '../helpers/is-durable.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; export class MiddlewareContainer { private readonly middleware = new Map< diff --git a/packages/core/middleware/index.ts b/packages/core/middleware/index.ts index ecea700bcd..2d7a031ef7 100644 --- a/packages/core/middleware/index.ts +++ b/packages/core/middleware/index.ts @@ -1 +1 @@ -export * from './builder'; +export * from './builder.js'; diff --git a/packages/core/middleware/middleware-module.ts b/packages/core/middleware/middleware-module.ts index 3e4e8c3ba2..d13d1933c3 100644 --- a/packages/core/middleware/middleware-module.ts +++ b/packages/core/middleware/middleware-module.ts @@ -1,36 +1,36 @@ import { HttpServer, InjectionToken, Logger } from '@nestjs/common'; -import { RequestMethod } from '@nestjs/common/enums/request-method.enum'; +import { RequestMethod } from '@nestjs/common/enums/request-method.enum.js'; import { MiddlewareConfiguration, NestMiddleware, RouteInfo, -} from '@nestjs/common/interfaces/middleware'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { isUndefined } from '@nestjs/common/utils/shared.utils'; -import { ApplicationConfig } from '../application-config'; -import { InvalidMiddlewareException } from '../errors/exceptions/invalid-middleware.exception'; -import { RuntimeException } from '../errors/exceptions/runtime.exception'; -import { ContextIdFactory } from '../helpers/context-id-factory'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { Injector } from '../injector/injector'; -import { ContextId, InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; -import { GraphInspector } from '../inspector/graph-inspector'; +} from '@nestjs/common/interfaces/middleware/index.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { ApplicationConfig } from '../application-config.js'; +import { InvalidMiddlewareException } from '../errors/exceptions/invalid-middleware.exception.js'; +import { RuntimeException } from '../errors/exceptions/runtime.exception.js'; +import { ContextIdFactory } from '../helpers/context-id-factory.js'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { Injector } from '../injector/injector.js'; +import { ContextId, InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; import { Entrypoint, MiddlewareEntrypointMetadata, -} from '../inspector/interfaces/entrypoint.interface'; -import { REQUEST_CONTEXT_ID } from '../router/request/request-constants'; -import { RouterExceptionFilters } from '../router/router-exception-filters'; -import { RouterProxy } from '../router/router-proxy'; -import { isRequestMethodAll } from '../router/utils'; -import { MiddlewareBuilder } from './builder'; -import { MiddlewareContainer } from './container'; -import { MiddlewareResolver } from './resolver'; -import { RouteInfoPathExtractor } from './route-info-path-extractor'; -import { RoutesMapper } from './routes-mapper'; +} from '../inspector/interfaces/entrypoint.interface.js'; +import { REQUEST_CONTEXT_ID } from '../router/request/request-constants.js'; +import { RouterExceptionFilters } from '../router/router-exception-filters.js'; +import { RouterProxy } from '../router/router-proxy.js'; +import { isRequestMethodAll } from '../router/utils/index.js'; +import { MiddlewareBuilder } from './builder.js'; +import { MiddlewareContainer } from './container.js'; +import { MiddlewareResolver } from './resolver.js'; +import { RouteInfoPathExtractor } from './route-info-path-extractor.js'; +import { RoutesMapper } from './routes-mapper.js'; export class MiddlewareModule< TAppOptions extends NestApplicationContextOptions = diff --git a/packages/core/middleware/resolver.ts b/packages/core/middleware/resolver.ts index 99d02f418b..d1ffafd63c 100644 --- a/packages/core/middleware/resolver.ts +++ b/packages/core/middleware/resolver.ts @@ -1,8 +1,8 @@ import { InjectionToken } from '@nestjs/common'; -import { Injector } from '../injector/injector'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; -import { MiddlewareContainer } from './container'; +import { Injector } from '../injector/injector.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; +import { MiddlewareContainer } from './container.js'; export class MiddlewareResolver { constructor( diff --git a/packages/core/middleware/route-info-path-extractor.ts b/packages/core/middleware/route-info-path-extractor.ts index 048d48a540..9fb01b86fd 100644 --- a/packages/core/middleware/route-info-path-extractor.ts +++ b/packages/core/middleware/route-info-path-extractor.ts @@ -3,15 +3,15 @@ import { RouteInfo, VersioningOptions, VersionValue, -} from '@nestjs/common/interfaces'; +} from '@nestjs/common/interfaces/index.js'; import { addLeadingSlash, stripEndSlash, -} from '@nestjs/common/utils/shared.utils'; -import { ApplicationConfig } from '../application-config'; -import { ExcludeRouteMetadata } from '../router/interfaces/exclude-route-metadata.interface'; -import { isRouteExcluded } from '../router/utils'; -import { RoutePathFactory } from './../router/route-path-factory'; +} from '@nestjs/common/utils/shared.utils.js'; +import { ApplicationConfig } from '../application-config.js'; +import { ExcludeRouteMetadata } from '../router/interfaces/exclude-route-metadata.interface.js'; +import { isRouteExcluded } from '../router/utils/index.js'; +import { RoutePathFactory } from './../router/route-path-factory.js'; export class RouteInfoPathExtractor { private readonly routePathFactory: RoutePathFactory; diff --git a/packages/core/middleware/routes-mapper.ts b/packages/core/middleware/routes-mapper.ts index d5155aace6..998011c3e8 100644 --- a/packages/core/middleware/routes-mapper.ts +++ b/packages/core/middleware/routes-mapper.ts @@ -2,24 +2,24 @@ import { MODULE_PATH, PATH_METADATA, VERSION_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { RouteInfo, Type, VERSION_NEUTRAL, VersionValue, -} from '@nestjs/common/interfaces'; +} from '@nestjs/common/interfaces/index.js'; import { addLeadingSlash, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; -import { ApplicationConfig } from '../application-config'; -import { NestContainer } from '../injector/container'; -import { Module } from '../injector/module'; -import { MetadataScanner } from '../metadata-scanner'; -import { PathsExplorer, RouteDefinition } from '../router/paths-explorer'; -import { targetModulesByContainer } from '../router/router-module'; +} from '@nestjs/common/utils/shared.utils.js'; +import { ApplicationConfig } from '../application-config.js'; +import { NestContainer } from '../injector/container.js'; +import { Module } from '../injector/module.js'; +import { MetadataScanner } from '../metadata-scanner.js'; +import { PathsExplorer, RouteDefinition } from '../router/paths-explorer.js'; +import { targetModulesByContainer } from '../router/router-module.js'; export class RoutesMapper { private readonly pathsExplorer: PathsExplorer; diff --git a/packages/core/middleware/utils.ts b/packages/core/middleware/utils.ts index ec71b77920..726906839d 100644 --- a/packages/core/middleware/utils.ts +++ b/packages/core/middleware/utils.ts @@ -1,16 +1,20 @@ import { RequestMethod } from '@nestjs/common'; -import { HttpServer, RouteInfo, Type } from '@nestjs/common/interfaces'; +import { + HttpServer, + RouteInfo, + Type, +} from '@nestjs/common/interfaces/index.js'; import { addLeadingSlash, isFunction, isString, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { pathToRegexp } from 'path-to-regexp'; import { uid } from 'uid'; -import { ExcludeRouteMetadata } from '../router/interfaces/exclude-route-metadata.interface'; -import { LegacyRouteConverter } from '../router/legacy-route-converter'; -import { isRouteExcluded } from '../router/utils'; +import { ExcludeRouteMetadata } from '../router/interfaces/exclude-route-metadata.interface.js'; +import { LegacyRouteConverter } from '../router/legacy-route-converter.js'; +import { isRouteExcluded } from '../router/utils/index.js'; export const mapToExcludeRoute = ( routes: (string | RouteInfo)[], diff --git a/packages/core/nest-application-context.ts b/packages/core/nest-application-context.ts index 2708c1dbcb..932cde0634 100644 --- a/packages/core/nest-application-context.ts +++ b/packages/core/nest-application-context.ts @@ -12,27 +12,27 @@ import { SelectOptions, ShutdownHooksOptions, Type, -} from '@nestjs/common/interfaces'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/interfaces/index.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { MESSAGES } from './constants'; -import { UnknownModuleException } from './errors/exceptions'; -import { createContextId } from './helpers/context-id-factory'; +import { MESSAGES } from './constants.js'; +import { UnknownModuleException } from './errors/exceptions/index.js'; +import { createContextId } from './helpers/context-id-factory.js'; import { callAppShutdownHook, callBeforeAppShutdownHook, callModuleBootstrapHook, callModuleDestroyHook, callModuleInitHook, -} from './hooks'; -import { AbstractInstanceResolver } from './injector/abstract-instance-resolver'; -import { ModuleCompiler } from './injector/compiler'; -import { NestContainer } from './injector/container'; -import { Injector } from './injector/injector'; -import { InstanceLinksHost } from './injector/instance-links-host'; -import { ContextId } from './injector/instance-wrapper'; -import { Module } from './injector/module'; +} from './hooks/index.js'; +import { AbstractInstanceResolver } from './injector/abstract-instance-resolver.js'; +import { ModuleCompiler } from './injector/compiler.js'; +import { NestContainer } from './injector/container.js'; +import { Injector } from './injector/injector.js'; +import { InstanceLinksHost } from './injector/instance-links-host.js'; +import { ContextId } from './injector/instance-wrapper.js'; +import { Module } from './injector/module.js'; /** * @publicApi diff --git a/packages/core/nest-application.ts b/packages/core/nest-application.ts index f01823a798..4358ecdcb8 100644 --- a/packages/core/nest-application.ts +++ b/packages/core/nest-application.ts @@ -14,39 +14,55 @@ import { import { GlobalPrefixOptions, NestApplicationOptions, -} from '@nestjs/common/interfaces'; -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; +} from '@nestjs/common/interfaces/index.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { + loadPackage, + loadPackageCached, +} from '@nestjs/common/utils/load-package.util.js'; import { addLeadingSlash, isFunction, isObject, isString, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; import { platform } from 'os'; -import { AbstractHttpAdapter } from './adapters'; -import { ApplicationConfig } from './application-config'; -import { MESSAGES } from './constants'; -import { optionalRequire } from './helpers/optional-require'; -import { NestContainer } from './injector/container'; -import { Injector } from './injector/injector'; -import { GraphInspector } from './inspector/graph-inspector'; -import { MiddlewareContainer } from './middleware/container'; -import { MiddlewareModule } from './middleware/middleware-module'; -import { mapToExcludeRoute } from './middleware/utils'; -import { NestApplicationContext } from './nest-application-context'; -import { Resolver } from './router/interfaces/resolver.interface'; -import { RoutesResolver } from './router/routes-resolver'; +import { AbstractHttpAdapter } from './adapters/index.js'; +import { ApplicationConfig } from './application-config.js'; +import { MESSAGES } from './constants.js'; +import { optionalRequire } from './helpers/optional-require.js'; +import { NestContainer } from './injector/container.js'; +import { Injector } from './injector/injector.js'; +import { GraphInspector } from './inspector/graph-inspector.js'; +import { MiddlewareContainer } from './middleware/container.js'; +import { MiddlewareModule } from './middleware/middleware-module.js'; +import { mapToExcludeRoute } from './middleware/utils.js'; +import { NestApplicationContext } from './nest-application-context.js'; +import { Resolver } from './router/interfaces/resolver.interface.js'; +import { RoutesResolver } from './router/routes-resolver.js'; -const { SocketModule } = optionalRequire( - '@nestjs/websockets/socket-module', - () => require('@nestjs/websockets/socket-module'), -); -const { MicroservicesModule } = optionalRequire( - '@nestjs/microservices/microservices-module', - () => require('@nestjs/microservices/microservices-module'), -); +let _socketModule: any; +async function getSocketModule() { + if (!_socketModule) { + _socketModule = await optionalRequire( + '@nestjs/websockets/socket-module', + () => import('@nestjs/websockets/socket-module.js'), + ); + } + return _socketModule; +} + +let _microservicesModule: any; +async function getMicroservicesModule() { + if (!_microservicesModule) { + _microservicesModule = await optionalRequire( + '@nestjs/microservices/microservices-module', + () => import('@nestjs/microservices/microservices-module.js'), + ); + } + return _microservicesModule; +} /** * @publicApi @@ -62,9 +78,8 @@ export class NestApplication private readonly middlewareContainer = new MiddlewareContainer( this.container, ); - private readonly microservicesModule = - MicroservicesModule && new MicroservicesModule(); - private readonly socketModule = SocketModule && new SocketModule(); + private microservicesModule: any = null; + private socketModule: any = null; private readonly routesResolver: Resolver; private readonly microservices: any[] = []; private httpServer: any; @@ -178,6 +193,22 @@ export class NestApplication return this; } + // Lazy-load optional modules (ESM-compatible) + const socketMod = await getSocketModule(); + if (socketMod?.SocketModule) { + this.socketModule = new socketMod.SocketModule(); + } + const msMod = await getMicroservicesModule(); + if (msMod?.MicroservicesModule) { + this.microservicesModule = new msMod.MicroservicesModule(); + // Pre-cache the main barrel so connectMicroservice() can stay synchronous + await loadPackage( + '@nestjs/microservices', + 'NestFactory', + () => import('@nestjs/microservices'), + ); + } + this.applyOptions(); await this.httpAdapter?.init?.(); @@ -219,11 +250,7 @@ export class NestApplication microserviceOptions: T, hybridAppOptions: NestHybridApplicationOptions = {}, ): INestMicroservice { - const { NestMicroservice } = loadPackage( - '@nestjs/microservices', - 'NestFactory', - () => require('@nestjs/microservices'), - ); + const { NestMicroservice } = loadPackageCached('@nestjs/microservices'); const { inheritAppConfig } = hybridAppOptions; const applicationConfig = inheritAppConfig ? this.config diff --git a/packages/core/nest-factory.ts b/packages/core/nest-factory.ts index ab62ea0f81..9038253dfa 100644 --- a/packages/core/nest-factory.ts +++ b/packages/core/nest-factory.ts @@ -7,29 +7,29 @@ import { INestMicroservice, Type, } from '@nestjs/common'; -import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface'; -import { ConsoleLogger } from '@nestjs/common/services/console-logger.service'; -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; -import { AbstractHttpAdapter } from './adapters/http-adapter'; -import { ApplicationConfig } from './application-config'; -import { MESSAGES } from './constants'; -import { ExceptionsZone } from './errors/exceptions-zone'; -import { loadAdapter } from './helpers/load-adapter'; -import { rethrow } from './helpers/rethrow'; -import { NestContainer } from './injector/container'; -import { Injector } from './injector/injector'; -import { InstanceLoader } from './injector/instance-loader'; -import { GraphInspector } from './inspector/graph-inspector'; -import { NoopGraphInspector } from './inspector/noop-graph-inspector'; -import { UuidFactory, UuidFactoryMode } from './inspector/uuid-factory'; -import { MetadataScanner } from './metadata-scanner'; -import { NestApplication } from './nest-application'; -import { NestApplicationContext } from './nest-application-context'; -import { DependenciesScanner } from './scanner'; +import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface.js'; +import { ConsoleLogger } from '@nestjs/common/services/console-logger.service.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; +import { AbstractHttpAdapter } from './adapters/http-adapter.js'; +import { ApplicationConfig } from './application-config.js'; +import { MESSAGES } from './constants.js'; +import { ExceptionsZone } from './errors/exceptions-zone.js'; +import { loadAdapter } from './helpers/load-adapter.js'; +import { rethrow } from './helpers/rethrow.js'; +import { NestContainer } from './injector/container.js'; +import { Injector } from './injector/injector.js'; +import { InstanceLoader } from './injector/instance-loader.js'; +import { GraphInspector } from './inspector/graph-inspector.js'; +import { NoopGraphInspector } from './inspector/noop-graph-inspector.js'; +import { UuidFactory, UuidFactoryMode } from './inspector/uuid-factory.js'; +import { MetadataScanner } from './metadata-scanner.js'; +import { NestApplicationContext } from './nest-application-context.js'; +import { NestApplication } from './nest-application.js'; +import { DependenciesScanner } from './scanner.js'; type IEntryNestModule = | Type @@ -83,7 +83,7 @@ export class NestFactoryStatic { ): Promise { const [httpServer, appOptions] = this.isHttpServer(serverOrOptions!) ? [serverOrOptions, options] - : [this.createHttpAdapter(), serverOrOptions]; + : [await this.createHttpAdapter(), serverOrOptions]; const applicationConfig = new ApplicationConfig(); const container = new NestContainer(applicationConfig, appOptions); @@ -125,10 +125,10 @@ export class NestFactoryStatic { moduleCls: IEntryNestModule, options?: NestMicroserviceOptions & T, ): Promise { - const { NestMicroservice } = loadPackage( + const { NestMicroservice } = await loadPackage( '@nestjs/microservices', 'NestFactory', - () => require('@nestjs/microservices'), + () => import('@nestjs/microservices'), ); const applicationConfig = new ApplicationConfig(); const container = new NestContainer(applicationConfig, options); @@ -315,11 +315,13 @@ export class NestFactoryStatic { this.autoFlushLogs = autoFlushLogs ?? true; } - private createHttpAdapter(httpServer?: T): AbstractHttpAdapter { - const { ExpressAdapter } = loadAdapter( + private async createHttpAdapter( + httpServer?: T, + ): Promise { + const { ExpressAdapter } = await loadAdapter( '@nestjs/platform-express', 'HTTP', - () => require('@nestjs/platform-express'), + () => import('@nestjs/platform-express'), ); return new ExpressAdapter(httpServer); } diff --git a/packages/core/package.json b/packages/core/package.json index 917543b08c..8c69242f02 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@core)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/core/pipes/index.ts b/packages/core/pipes/index.ts index ce7301a1d1..863c11f250 100644 --- a/packages/core/pipes/index.ts +++ b/packages/core/pipes/index.ts @@ -1,3 +1,3 @@ -export * from './params-token-factory'; -export * from './pipes-consumer'; -export * from './pipes-context-creator'; +export * from './params-token-factory.js'; +export * from './pipes-consumer.js'; +export * from './pipes-context-creator.js'; diff --git a/packages/core/pipes/params-token-factory.ts b/packages/core/pipes/params-token-factory.ts index a7400f91fe..f09efac17d 100644 --- a/packages/core/pipes/params-token-factory.ts +++ b/packages/core/pipes/params-token-factory.ts @@ -1,5 +1,5 @@ import { Paramtype } from '@nestjs/common'; -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; export class ParamsTokenFactory { public exchangeEnumForString(type: RouteParamtypes): Paramtype { diff --git a/packages/core/pipes/pipes-consumer.ts b/packages/core/pipes/pipes-consumer.ts index e7ff75de47..cb7ce474af 100644 --- a/packages/core/pipes/pipes-consumer.ts +++ b/packages/core/pipes/pipes-consumer.ts @@ -1,6 +1,9 @@ -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; -import { ArgumentMetadata, PipeTransform } from '@nestjs/common/interfaces'; -import { ParamsTokenFactory } from './params-token-factory'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; +import { + ArgumentMetadata, + PipeTransform, +} from '@nestjs/common/interfaces/index.js'; +import { ParamsTokenFactory } from './params-token-factory.js'; export class PipesConsumer { private readonly paramsTokenFactory = new ParamsTokenFactory(); diff --git a/packages/core/pipes/pipes-context-creator.ts b/packages/core/pipes/pipes-context-creator.ts index 0ea6568cd8..87b38dc793 100644 --- a/packages/core/pipes/pipes-context-creator.ts +++ b/packages/core/pipes/pipes-context-creator.ts @@ -1,12 +1,16 @@ -import { PIPES_METADATA } from '@nestjs/common/constants'; -import { Controller, PipeTransform, Type } from '@nestjs/common/interfaces'; -import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils'; +import { PIPES_METADATA } from '@nestjs/common/constants.js'; +import { + Controller, + PipeTransform, + Type, +} from '@nestjs/common/interfaces/index.js'; +import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from '../application-config'; -import { ContextCreator } from '../helpers/context-creator'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; +import { ApplicationConfig } from '../application-config.js'; +import { ContextCreator } from '../helpers/context-creator.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; export class PipesContextCreator extends ContextCreator { private moduleContext: string; diff --git a/packages/core/repl/index.ts b/packages/core/repl/index.ts index 8a399bd09a..ba5d2fa62a 100644 --- a/packages/core/repl/index.ts +++ b/packages/core/repl/index.ts @@ -1 +1 @@ -export * from './repl'; +export * from './repl.js'; diff --git a/packages/core/repl/native-functions/debug-repl-fn.ts b/packages/core/repl/native-functions/debug-repl-fn.ts index 2f1d4a97d1..e3ca291f4c 100644 --- a/packages/core/repl/native-functions/debug-repl-fn.ts +++ b/packages/core/repl/native-functions/debug-repl-fn.ts @@ -1,8 +1,8 @@ import type { Type, InjectionToken } from '@nestjs/common'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { ReplFunction } from '../repl-function'; -import type { ModuleDebugEntry } from '../repl-context'; -import type { ReplFnDefinition } from '../repl.interfaces'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { ReplFunction } from '../repl-function.js'; +import type { ModuleDebugEntry } from '../repl-context.js'; +import type { ReplFnDefinition } from '../repl.interfaces.js'; export class DebugReplFn extends ReplFunction { public fnDefinition: ReplFnDefinition = { diff --git a/packages/core/repl/native-functions/get-repl-fn.ts b/packages/core/repl/native-functions/get-repl-fn.ts index 6de2769189..d9d40898c5 100644 --- a/packages/core/repl/native-functions/get-repl-fn.ts +++ b/packages/core/repl/native-functions/get-repl-fn.ts @@ -1,6 +1,6 @@ import type { Type } from '@nestjs/common'; -import { ReplFunction } from '../repl-function'; -import type { ReplFnDefinition } from '../repl.interfaces'; +import { ReplFunction } from '../repl-function.js'; +import type { ReplFnDefinition } from '../repl.interfaces.js'; export class GetReplFn extends ReplFunction { public fnDefinition: ReplFnDefinition = { diff --git a/packages/core/repl/native-functions/help-repl-fn.ts b/packages/core/repl/native-functions/help-repl-fn.ts index 913ced7ee9..f92b30374d 100644 --- a/packages/core/repl/native-functions/help-repl-fn.ts +++ b/packages/core/repl/native-functions/help-repl-fn.ts @@ -1,7 +1,7 @@ import { iterate } from 'iterare'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { ReplFunction } from '../repl-function'; -import type { ReplFnDefinition } from '../repl.interfaces'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { ReplFunction } from '../repl-function.js'; +import type { ReplFnDefinition } from '../repl.interfaces.js'; export class HelpReplFn extends ReplFunction { public fnDefinition: ReplFnDefinition = { diff --git a/packages/core/repl/native-functions/index.ts b/packages/core/repl/native-functions/index.ts index b552bc502f..4ebfcfcb1e 100644 --- a/packages/core/repl/native-functions/index.ts +++ b/packages/core/repl/native-functions/index.ts @@ -1,6 +1,6 @@ -export * from './help-repl-fn'; -export * from './get-repl-fn'; -export * from './resolve-repl-fn'; -export * from './select-relp-fn'; -export * from './debug-repl-fn'; -export * from './methods-repl-fn'; +export * from './help-repl-fn.js'; +export * from './get-repl-fn.js'; +export * from './resolve-repl-fn.js'; +export * from './select-relp-fn.js'; +export * from './debug-repl-fn.js'; +export * from './methods-repl-fn.js'; diff --git a/packages/core/repl/native-functions/methods-repl-fn.ts b/packages/core/repl/native-functions/methods-repl-fn.ts index f44e1916ed..0f7b5fa7fc 100644 --- a/packages/core/repl/native-functions/methods-repl-fn.ts +++ b/packages/core/repl/native-functions/methods-repl-fn.ts @@ -1,8 +1,8 @@ import type { Type } from '@nestjs/common'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { MetadataScanner } from '../../metadata-scanner'; -import { ReplFunction } from '../repl-function'; -import type { ReplFnDefinition } from '../repl.interfaces'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { MetadataScanner } from '../../metadata-scanner.js'; +import { ReplFunction } from '../repl-function.js'; +import type { ReplFnDefinition } from '../repl.interfaces.js'; export class MethodsReplFn extends ReplFunction { public fnDefinition: ReplFnDefinition = { diff --git a/packages/core/repl/native-functions/resolve-repl-fn.ts b/packages/core/repl/native-functions/resolve-repl-fn.ts index fe587682d1..5ca4ba943c 100644 --- a/packages/core/repl/native-functions/resolve-repl-fn.ts +++ b/packages/core/repl/native-functions/resolve-repl-fn.ts @@ -1,6 +1,6 @@ import type { Type } from '@nestjs/common'; -import { ReplFunction } from '../repl-function'; -import type { ReplFnDefinition } from '../repl.interfaces'; +import { ReplFunction } from '../repl-function.js'; +import type { ReplFnDefinition } from '../repl.interfaces.js'; export class ResolveReplFn extends ReplFunction { public fnDefinition: ReplFnDefinition = { diff --git a/packages/core/repl/native-functions/select-relp-fn.ts b/packages/core/repl/native-functions/select-relp-fn.ts index f35346cd10..d4679e026b 100644 --- a/packages/core/repl/native-functions/select-relp-fn.ts +++ b/packages/core/repl/native-functions/select-relp-fn.ts @@ -3,8 +3,8 @@ import type { INestApplicationContext, Type, } from '@nestjs/common'; -import { ReplFunction } from '../repl-function'; -import type { ReplFnDefinition } from '../repl.interfaces'; +import { ReplFunction } from '../repl-function.js'; +import type { ReplFnDefinition } from '../repl.interfaces.js'; export class SelectReplFn extends ReplFunction { public fnDefinition: ReplFnDefinition = { diff --git a/packages/core/repl/repl-context.ts b/packages/core/repl/repl-context.ts index f4a2fcd916..64e08637b5 100644 --- a/packages/core/repl/repl-context.ts +++ b/packages/core/repl/repl-context.ts @@ -3,10 +3,10 @@ import { InjectionToken, Logger, } from '@nestjs/common'; -import { ApplicationConfig } from '../application-config'; -import { ModuleRef, NestContainer } from '../injector'; -import { InternalCoreModule } from '../injector/internal-core-module/internal-core-module'; -import { Module } from '../injector/module'; +import { ApplicationConfig } from '../application-config.js'; +import { ModuleRef, NestContainer } from '../injector/index.js'; +import { InternalCoreModule } from '../injector/internal-core-module/internal-core-module.js'; +import { Module } from '../injector/module.js'; import { DebugReplFn, GetReplFn, @@ -14,9 +14,9 @@ import { MethodsReplFn, ResolveReplFn, SelectReplFn, -} from './native-functions'; -import { ReplFunction } from './repl-function'; -import type { ReplFunctionClass } from './repl.interfaces'; +} from './native-functions/index.js'; +import { ReplFunction } from './repl-function.js'; +import type { ReplFunctionClass } from './repl.interfaces.js'; type ModuleKey = string; export type ModuleDebugEntry = { diff --git a/packages/core/repl/repl-function.ts b/packages/core/repl/repl-function.ts index aa90972c85..45e27802ac 100644 --- a/packages/core/repl/repl-function.ts +++ b/packages/core/repl/repl-function.ts @@ -1,7 +1,7 @@ import { Logger } from '@nestjs/common'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { ReplContext } from './repl-context'; -import type { ReplFnDefinition } from './repl.interfaces'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { ReplContext } from './repl-context.js'; +import type { ReplFnDefinition } from './repl.interfaces.js'; export abstract class ReplFunction< ActionParams extends Array = Array, diff --git a/packages/core/repl/repl-logger.ts b/packages/core/repl/repl-logger.ts index c68744d29e..28ad23a307 100644 --- a/packages/core/repl/repl-logger.ts +++ b/packages/core/repl/repl-logger.ts @@ -1,7 +1,7 @@ import { ConsoleLogger } from '@nestjs/common'; -import { NestApplication } from '../nest-application'; -import { RouterExplorer } from '../router/router-explorer'; -import { RoutesResolver } from '../router/routes-resolver'; +import { NestApplication } from '../nest-application.js'; +import { RouterExplorer } from '../router/router-explorer.js'; +import { RoutesResolver } from '../router/routes-resolver.js'; export class ReplLogger extends ConsoleLogger { private static readonly ignoredContexts = [ diff --git a/packages/core/repl/repl.interfaces.ts b/packages/core/repl/repl.interfaces.ts index ad4b8fd646..dfd7a7e6d5 100644 --- a/packages/core/repl/repl.interfaces.ts +++ b/packages/core/repl/repl.interfaces.ts @@ -1,5 +1,5 @@ -import type { ReplContext } from './repl-context'; -import type { ReplFunction } from './repl-function'; +import type { ReplContext } from './repl-context.js'; +import type { ReplFunction } from './repl-function.js'; export type ReplFnDefinition = { /** Function's name. Note that this should be a valid JavaScript function name. */ diff --git a/packages/core/repl/repl.ts b/packages/core/repl/repl.ts index 3bbc1a93a1..75d3a0a587 100644 --- a/packages/core/repl/repl.ts +++ b/packages/core/repl/repl.ts @@ -1,11 +1,11 @@ import { DynamicModule, Logger, Type } from '@nestjs/common'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { NestFactory } from '../nest-factory'; -import { assignToObject } from './assign-to-object.util'; -import { REPL_INITIALIZED_MESSAGE } from './constants'; -import { ReplContext } from './repl-context'; -import { ReplLogger } from './repl-logger'; -import { defineDefaultCommandsOnRepl } from './repl-native-commands'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { NestFactory } from '../nest-factory.js'; +import { assignToObject } from './assign-to-object.util.js'; +import { REPL_INITIALIZED_MESSAGE } from './constants.js'; +import { ReplContext } from './repl-context.js'; +import { ReplLogger } from './repl-logger.js'; +import { defineDefaultCommandsOnRepl } from './repl-native-commands.js'; import type { ReplOptions } from 'repl'; diff --git a/packages/core/router/index.ts b/packages/core/router/index.ts index 5e2cc66bd7..d8e0b425b7 100644 --- a/packages/core/router/index.ts +++ b/packages/core/router/index.ts @@ -1,3 +1,3 @@ -export * from './interfaces'; -export * from './request'; -export { RouterModule } from './router-module'; +export * from './interfaces/index.js'; +export * from './request/index.js'; +export { RouterModule } from './router-module.js'; diff --git a/packages/core/router/interfaces/exceptions-filter.interface.ts b/packages/core/router/interfaces/exceptions-filter.interface.ts index 3063fc64df..1965f8bd0b 100644 --- a/packages/core/router/interfaces/exceptions-filter.interface.ts +++ b/packages/core/router/interfaces/exceptions-filter.interface.ts @@ -1,6 +1,6 @@ -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { ExceptionsHandler } from '../../exceptions/exceptions-handler'; -import { ContextId } from '../../injector/instance-wrapper'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { ExceptionsHandler } from '../../exceptions/exceptions-handler.js'; +import { ContextId } from '../../injector/instance-wrapper.js'; export interface ExceptionsFilter { create( diff --git a/packages/core/router/interfaces/index.ts b/packages/core/router/interfaces/index.ts index 65ccbce89d..441c9ebe69 100644 --- a/packages/core/router/interfaces/index.ts +++ b/packages/core/router/interfaces/index.ts @@ -1 +1 @@ -export * from './routes.interface'; +export * from './routes.interface.js'; diff --git a/packages/core/router/interfaces/route-params-factory.interface.ts b/packages/core/router/interfaces/route-params-factory.interface.ts index 5420269faf..d9df97be1d 100644 --- a/packages/core/router/interfaces/route-params-factory.interface.ts +++ b/packages/core/router/interfaces/route-params-factory.interface.ts @@ -1,4 +1,4 @@ -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; export interface IRouteParamsFactory { exchangeKeyForValue< diff --git a/packages/core/router/interfaces/route-path-metadata.interface.ts b/packages/core/router/interfaces/route-path-metadata.interface.ts index fb8a769a61..193ee0cd3f 100644 --- a/packages/core/router/interfaces/route-path-metadata.interface.ts +++ b/packages/core/router/interfaces/route-path-metadata.interface.ts @@ -1,5 +1,5 @@ import { VersioningOptions } from '@nestjs/common'; -import { VersionValue } from '@nestjs/common/interfaces'; +import { VersionValue } from '@nestjs/common/interfaces/index.js'; export interface RoutePathMetadata { /** diff --git a/packages/core/router/paths-explorer.ts b/packages/core/router/paths-explorer.ts index eec6a7471f..6c6cba1860 100644 --- a/packages/core/router/paths-explorer.ts +++ b/packages/core/router/paths-explorer.ts @@ -2,17 +2,17 @@ import { METHOD_METADATA, PATH_METADATA, VERSION_METADATA, -} from '@nestjs/common/constants'; -import { RequestMethod } from '@nestjs/common/enums'; -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { VersionValue } from '@nestjs/common/interfaces/version-options.interface'; +} from '@nestjs/common/constants.js'; +import { RequestMethod } from '@nestjs/common/enums/index.js'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { VersionValue } from '@nestjs/common/interfaces/version-options.interface.js'; import { addLeadingSlash, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; -import { MetadataScanner } from '../metadata-scanner'; -import { RouterProxyCallback } from './router-proxy'; +} from '@nestjs/common/utils/shared.utils.js'; +import { MetadataScanner } from '../metadata-scanner.js'; +import { RouterProxyCallback } from './router-proxy.js'; export interface RouteDefinition { path: string[]; diff --git a/packages/core/router/request/index.ts b/packages/core/router/request/index.ts index 9424999aaa..a795ed3109 100644 --- a/packages/core/router/request/index.ts +++ b/packages/core/router/request/index.ts @@ -1 +1 @@ -export { REQUEST } from './request-constants'; +export { REQUEST } from './request-constants.js'; diff --git a/packages/core/router/request/request-providers.ts b/packages/core/router/request/request-providers.ts index 308f79065e..56f8b7a228 100644 --- a/packages/core/router/request/request-providers.ts +++ b/packages/core/router/request/request-providers.ts @@ -1,5 +1,5 @@ import { Provider, Scope } from '@nestjs/common'; -import { REQUEST } from './request-constants'; +import { REQUEST } from './request-constants.js'; const noop = () => {}; export const requestProvider: Provider = { diff --git a/packages/core/router/route-params-factory.ts b/packages/core/router/route-params-factory.ts index 200cb780c0..573679e50e 100644 --- a/packages/core/router/route-params-factory.ts +++ b/packages/core/router/route-params-factory.ts @@ -1,5 +1,5 @@ -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; -import { IRouteParamsFactory } from './interfaces/route-params-factory.interface'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; +import { IRouteParamsFactory } from './interfaces/route-params-factory.interface.js'; export class RouteParamsFactory implements IRouteParamsFactory { public exchangeKeyForValue< diff --git a/packages/core/router/route-path-factory.ts b/packages/core/router/route-path-factory.ts index 159b2ee4eb..8b82cf5867 100644 --- a/packages/core/router/route-path-factory.ts +++ b/packages/core/router/route-path-factory.ts @@ -5,15 +5,15 @@ import { VersioningType, flatten, } from '@nestjs/common'; -import { VersionValue } from '@nestjs/common/interfaces'; +import { VersionValue } from '@nestjs/common/interfaces/index.js'; import { addLeadingSlash, isUndefined, stripEndSlash, -} from '@nestjs/common/utils/shared.utils'; -import { ApplicationConfig } from '../application-config'; -import { RoutePathMetadata } from './interfaces/route-path-metadata.interface'; -import { isRouteExcluded } from './utils'; +} from '@nestjs/common/utils/shared.utils.js'; +import { ApplicationConfig } from '../application-config.js'; +import { RoutePathMetadata } from './interfaces/route-path-metadata.interface.js'; +import { isRouteExcluded } from './utils/index.js'; export class RoutePathFactory { constructor(private readonly applicationConfig: ApplicationConfig) {} diff --git a/packages/core/router/router-exception-filters.ts b/packages/core/router/router-exception-filters.ts index 67769fa22d..cc9a5f8880 100644 --- a/packages/core/router/router-exception-filters.ts +++ b/packages/core/router/router-exception-filters.ts @@ -1,15 +1,15 @@ import { HttpServer } from '@nestjs/common'; -import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants'; -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; +import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants.js'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from '../application-config'; -import { BaseExceptionFilterContext } from '../exceptions/base-exception-filter-context'; -import { ExceptionsHandler } from '../exceptions/exceptions-handler'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { RouterProxyCallback } from './router-proxy'; +import { ApplicationConfig } from '../application-config.js'; +import { BaseExceptionFilterContext } from '../exceptions/base-exception-filter-context.js'; +import { ExceptionsHandler } from '../exceptions/exceptions-handler.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { RouterProxyCallback } from './router-proxy.js'; export class RouterExceptionFilters extends BaseExceptionFilterContext { constructor( diff --git a/packages/core/router/router-execution-context.ts b/packages/core/router/router-execution-context.ts index 9f783f06e7..2a770ef7d5 100644 --- a/packages/core/router/router-execution-context.ts +++ b/packages/core/router/router-execution-context.ts @@ -14,38 +14,38 @@ import { RENDER_METADATA, ROUTE_ARGS_METADATA, SSE_METADATA, -} from '@nestjs/common/constants'; -import { RouteParamMetadata } from '@nestjs/common/decorators'; -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; -import { ContextType, Controller } from '@nestjs/common/interfaces'; -import { isEmpty, isString } from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/constants.js'; +import { RouteParamMetadata } from '@nestjs/common/decorators/index.js'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; +import { ContextType, Controller } from '@nestjs/common/interfaces/index.js'; +import { isEmpty, isString } from '@nestjs/common/utils/shared.utils.js'; import { IncomingMessage } from 'http'; import { Observable } from 'rxjs'; import { FORBIDDEN_MESSAGE, GuardsConsumer, GuardsContextCreator, -} from '../guards'; -import { ContextUtils } from '../helpers/context-utils'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; +} from '../guards/index.js'; +import { ContextUtils } from '../helpers/context-utils.js'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; import { HandleResponseFn, HandlerMetadata, HandlerMetadataStorage, HandlerResponseBasicFn, -} from '../helpers/handler-metadata-storage'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { InterceptorsConsumer } from '../interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '../interceptors/interceptors-context-creator'; -import { PipesConsumer } from '../pipes/pipes-consumer'; -import { PipesContextCreator } from '../pipes/pipes-context-creator'; -import { IRouteParamsFactory } from './interfaces/route-params-factory.interface'; +} from '../helpers/handler-metadata-storage.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { InterceptorsConsumer } from '../interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '../interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '../pipes/pipes-consumer.js'; +import { PipesContextCreator } from '../pipes/pipes-context-creator.js'; +import { IRouteParamsFactory } from './interfaces/route-params-factory.interface.js'; import { CustomHeader, RedirectResponse, RouterResponseController, -} from './router-response-controller'; -import { HeaderStream } from './sse-stream'; +} from './router-response-controller.js'; +import { HeaderStream } from './sse-stream.js'; export interface ParamProperties { index: number; diff --git a/packages/core/router/router-explorer.ts b/packages/core/router/router-explorer.ts index c90ae5378c..61714025d0 100644 --- a/packages/core/router/router-explorer.ts +++ b/packages/core/router/router-explorer.ts @@ -1,50 +1,50 @@ import { HttpServer } from '@nestjs/common'; -import { PATH_METADATA } from '@nestjs/common/constants'; -import { RequestMethod, VersioningType } from '@nestjs/common/enums'; -import { InternalServerErrorException } from '@nestjs/common/exceptions'; -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { Type } from '@nestjs/common/interfaces/type.interface'; -import { VersionValue } from '@nestjs/common/interfaces/version-options.interface'; -import { Logger } from '@nestjs/common/services/logger.service'; +import { PATH_METADATA } from '@nestjs/common/constants.js'; +import { RequestMethod, VersioningType } from '@nestjs/common/enums/index.js'; +import { InternalServerErrorException } from '@nestjs/common/exceptions/index.js'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; +import { VersionValue } from '@nestjs/common/interfaces/version-options.interface.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; import { addLeadingSlash, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { pathToRegexp } from 'path-to-regexp'; -import { ApplicationConfig } from '../application-config'; -import { UnknownRequestMappingException } from '../errors/exceptions/unknown-request-mapping.exception'; -import { GuardsConsumer, GuardsContextCreator } from '../guards'; -import { ContextIdFactory } from '../helpers/context-id-factory'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; +import { ApplicationConfig } from '../application-config.js'; +import { UnknownRequestMappingException } from '../errors/exceptions/unknown-request-mapping.exception.js'; +import { GuardsConsumer, GuardsContextCreator } from '../guards/index.js'; +import { ContextIdFactory } from '../helpers/context-id-factory.js'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; import { ROUTE_MAPPED_MESSAGE, VERSIONED_ROUTE_MAPPED_MESSAGE, -} from '../helpers/messages'; -import { RouterMethodFactory } from '../helpers/router-method-factory'; -import { STATIC_CONTEXT } from '../injector/constants'; -import { NestContainer } from '../injector/container'; -import { Injector } from '../injector/injector'; -import { ContextId, InstanceWrapper } from '../injector/instance-wrapper'; -import { Module } from '../injector/module'; -import { GraphInspector } from '../inspector/graph-inspector'; +} from '../helpers/messages.js'; +import { RouterMethodFactory } from '../helpers/router-method-factory.js'; +import { STATIC_CONTEXT } from '../injector/constants.js'; +import { NestContainer } from '../injector/container.js'; +import { Injector } from '../injector/injector.js'; +import { ContextId, InstanceWrapper } from '../injector/instance-wrapper.js'; +import { Module } from '../injector/module.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; import { Entrypoint, HttpEntrypointMetadata, -} from '../inspector/interfaces/entrypoint.interface'; +} from '../inspector/interfaces/entrypoint.interface.js'; import { InterceptorsConsumer, InterceptorsContextCreator, -} from '../interceptors'; -import { MetadataScanner } from '../metadata-scanner'; -import { PipesConsumer, PipesContextCreator } from '../pipes'; -import { ExceptionsFilter } from './interfaces/exceptions-filter.interface'; -import { RoutePathMetadata } from './interfaces/route-path-metadata.interface'; -import { PathsExplorer } from './paths-explorer'; -import { REQUEST_CONTEXT_ID } from './request/request-constants'; -import { RouteParamsFactory } from './route-params-factory'; -import { RoutePathFactory } from './route-path-factory'; -import { RouterExecutionContext } from './router-execution-context'; -import { RouterProxy, RouterProxyCallback } from './router-proxy'; +} from '../interceptors/index.js'; +import { MetadataScanner } from '../metadata-scanner.js'; +import { PipesConsumer, PipesContextCreator } from '../pipes/index.js'; +import { ExceptionsFilter } from './interfaces/exceptions-filter.interface.js'; +import { RoutePathMetadata } from './interfaces/route-path-metadata.interface.js'; +import { PathsExplorer } from './paths-explorer.js'; +import { REQUEST_CONTEXT_ID } from './request/request-constants.js'; +import { RouteParamsFactory } from './route-params-factory.js'; +import { RoutePathFactory } from './route-path-factory.js'; +import { RouterExecutionContext } from './router-execution-context.js'; +import { RouterProxy, RouterProxyCallback } from './router-proxy.js'; export interface RouteDefinition { path: string[]; diff --git a/packages/core/router/router-module.ts b/packages/core/router/router-module.ts index 72162dcdbf..7b2e3ff95d 100644 --- a/packages/core/router/router-module.ts +++ b/packages/core/router/router-module.ts @@ -1,10 +1,10 @@ import { DynamicModule, Inject, Module, Type } from '@nestjs/common'; -import { MODULE_PATH } from '@nestjs/common/constants'; -import { normalizePath } from '@nestjs/common/utils/shared.utils'; -import { Module as ModuleClass } from '../injector/module'; -import { ModulesContainer } from '../injector/modules-container'; -import { Routes, RouteTree } from './interfaces'; -import { flattenRoutePaths } from './utils'; +import { MODULE_PATH } from '@nestjs/common/constants.js'; +import { normalizePath } from '@nestjs/common/utils/shared.utils.js'; +import { Module as ModuleClass } from '../injector/module.js'; +import { ModulesContainer } from '../injector/modules-container.js'; +import { Routes, RouteTree } from './interfaces/index.js'; +import { flattenRoutePaths } from './utils/index.js'; export const ROUTES = Symbol('ROUTES'); diff --git a/packages/core/router/router-proxy.ts b/packages/core/router/router-proxy.ts index bf60595cdf..2e87c5e9a0 100644 --- a/packages/core/router/router-proxy.ts +++ b/packages/core/router/router-proxy.ts @@ -1,5 +1,5 @@ -import { ExceptionsHandler } from '../exceptions/exceptions-handler'; -import { ExecutionContextHost } from '../helpers/execution-context-host'; +import { ExceptionsHandler } from '../exceptions/exceptions-handler.js'; +import { ExecutionContextHost } from '../helpers/execution-context-host.js'; export type RouterProxyCallback = ( req: TRequest, diff --git a/packages/core/router/router-response-controller.ts b/packages/core/router/router-response-controller.ts index 5c5e48ac6a..c94d2a5d9a 100644 --- a/packages/core/router/router-response-controller.ts +++ b/packages/core/router/router-response-controller.ts @@ -5,7 +5,7 @@ import { RequestMethod, MessageEvent, } from '@nestjs/common'; -import { isObject } from '@nestjs/common/utils/shared.utils'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; import { IncomingMessage } from 'http'; import { EMPTY, lastValueFrom, Observable, isObservable } from 'rxjs'; import { catchError, concatMap, map } from 'rxjs/operators'; @@ -13,7 +13,7 @@ import { AdditionalHeaders, WritableHeaderStream, SseStream, -} from './sse-stream'; +} from './sse-stream.js'; export interface CustomHeader { name: string; diff --git a/packages/core/router/routes-resolver.ts b/packages/core/router/routes-resolver.ts index 451b855df9..63a6d3469a 100644 --- a/packages/core/router/routes-resolver.ts +++ b/packages/core/router/routes-resolver.ts @@ -7,30 +7,30 @@ import { HOST_METADATA, MODULE_PATH, VERSION_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { Controller, HttpServer, Type, VersionValue, -} from '@nestjs/common/interfaces'; -import { Logger } from '@nestjs/common/services/logger.service'; -import { ApplicationConfig } from '../application-config'; +} from '@nestjs/common/interfaces/index.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { ApplicationConfig } from '../application-config.js'; import { CONTROLLER_MAPPING_MESSAGE, VERSIONED_CONTROLLER_MAPPING_MESSAGE, -} from '../helpers/messages'; -import { NestContainer } from '../injector/container'; -import { Injector } from '../injector/injector'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { GraphInspector } from '../inspector/graph-inspector'; -import { MetadataScanner } from '../metadata-scanner'; -import { Resolver } from './interfaces/resolver.interface'; -import { RoutePathMetadata } from './interfaces/route-path-metadata.interface'; -import { RoutePathFactory } from './route-path-factory'; -import { RouterExceptionFilters } from './router-exception-filters'; -import { RouterExplorer } from './router-explorer'; -import { RouterProxy } from './router-proxy'; +} from '../helpers/messages.js'; +import { NestContainer } from '../injector/container.js'; +import { Injector } from '../injector/injector.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; +import { MetadataScanner } from '../metadata-scanner.js'; +import { Resolver } from './interfaces/resolver.interface.js'; +import { RoutePathMetadata } from './interfaces/route-path-metadata.interface.js'; +import { RoutePathFactory } from './route-path-factory.js'; +import { RouterExceptionFilters } from './router-exception-filters.js'; +import { RouterExplorer } from './router-explorer.js'; +import { RouterProxy } from './router-proxy.js'; export class RoutesResolver implements Resolver { private readonly logger = new Logger(RoutesResolver.name, { diff --git a/packages/core/router/sse-stream.ts b/packages/core/router/sse-stream.ts index 26b5a25220..6759d56c57 100644 --- a/packages/core/router/sse-stream.ts +++ b/packages/core/router/sse-stream.ts @@ -1,5 +1,5 @@ -import { MessageEvent } from '@nestjs/common/interfaces'; -import { isObject } from '@nestjs/common/utils/shared.utils'; +import { MessageEvent } from '@nestjs/common/interfaces/index.js'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; import { IncomingMessage, OutgoingHttpHeaders } from 'http'; import { Transform } from 'stream'; diff --git a/packages/core/router/utils/exclude-route.util.ts b/packages/core/router/utils/exclude-route.util.ts index 8670f18f43..945879fc1b 100644 --- a/packages/core/router/utils/exclude-route.util.ts +++ b/packages/core/router/utils/exclude-route.util.ts @@ -1,6 +1,6 @@ import { RequestMethod } from '@nestjs/common'; -import { addLeadingSlash } from '@nestjs/common/utils/shared.utils'; -import { ExcludeRouteMetadata } from '../interfaces/exclude-route-metadata.interface'; +import { addLeadingSlash } from '@nestjs/common/utils/shared.utils.js'; +import { ExcludeRouteMetadata } from '../interfaces/exclude-route-metadata.interface.js'; export const isRequestMethodAll = (method: RequestMethod) => { return RequestMethod.ALL === method || (method as number) === -1; diff --git a/packages/core/router/utils/flatten-route-paths.util.ts b/packages/core/router/utils/flatten-route-paths.util.ts index 473e19b819..3a18b63f5a 100644 --- a/packages/core/router/utils/flatten-route-paths.util.ts +++ b/packages/core/router/utils/flatten-route-paths.util.ts @@ -1,6 +1,6 @@ import { Type } from '@nestjs/common'; -import { isString, normalizePath } from '@nestjs/common/utils/shared.utils'; -import { Routes } from '../interfaces/routes.interface'; +import { isString, normalizePath } from '@nestjs/common/utils/shared.utils.js'; +import { Routes } from '../interfaces/routes.interface.js'; export function flattenRoutePaths(routes: Routes) { const result: Array<{ diff --git a/packages/core/router/utils/index.ts b/packages/core/router/utils/index.ts index a3524ed906..cb8b40c19f 100644 --- a/packages/core/router/utils/index.ts +++ b/packages/core/router/utils/index.ts @@ -1,2 +1,2 @@ -export * from './exclude-route.util'; -export * from './flatten-route-paths.util'; +export * from './exclude-route.util.js'; +export * from './flatten-route-paths.util.js'; diff --git a/packages/core/scanner.ts b/packages/core/scanner.ts index e734509231..a7d98dcdd3 100644 --- a/packages/core/scanner.ts +++ b/packages/core/scanner.ts @@ -11,7 +11,7 @@ import { MODULE_METADATA, PIPES_METADATA, ROUTE_ARGS_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { CanActivate, ClassProvider, @@ -26,36 +26,36 @@ import { Scope, Type, ValueProvider, -} from '@nestjs/common/interfaces'; +} from '@nestjs/common/interfaces/index.js'; import { isFunction, isNil, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { iterate } from 'iterare'; -import { ApplicationConfig } from './application-config'; +import { ApplicationConfig } from './application-config.js'; import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR, APP_PIPE, ENHANCER_TOKEN_TO_SUBTYPE_MAP, -} from './constants'; -import { CircularDependencyException } from './errors/exceptions/circular-dependency.exception'; -import { InvalidClassModuleException } from './errors/exceptions/invalid-class-module.exception'; -import { InvalidModuleException } from './errors/exceptions/invalid-module.exception'; -import { UndefinedModuleException } from './errors/exceptions/undefined-module.exception'; -import { getClassScope } from './helpers/get-class-scope'; -import { NestContainer } from './injector/container'; -import { InstanceWrapper } from './injector/instance-wrapper'; -import { InternalCoreModuleFactory } from './injector/internal-core-module/internal-core-module-factory'; -import { Module } from './injector/module'; -import { TopologyTree } from './injector/topology-tree/topology-tree'; -import { GraphInspector } from './inspector/graph-inspector'; -import { UuidFactory } from './inspector/uuid-factory'; -import { ModuleDefinition } from './interfaces/module-definition.interface'; -import { ModuleOverride } from './interfaces/module-override.interface'; -import { MetadataScanner } from './metadata-scanner'; +} from './constants.js'; +import { CircularDependencyException } from './errors/exceptions/circular-dependency.exception.js'; +import { InvalidClassModuleException } from './errors/exceptions/invalid-class-module.exception.js'; +import { InvalidModuleException } from './errors/exceptions/invalid-module.exception.js'; +import { UndefinedModuleException } from './errors/exceptions/undefined-module.exception.js'; +import { getClassScope } from './helpers/get-class-scope.js'; +import { NestContainer } from './injector/container.js'; +import { InstanceWrapper } from './injector/instance-wrapper.js'; +import { InternalCoreModuleFactory } from './injector/internal-core-module/internal-core-module-factory.js'; +import { Module } from './injector/module.js'; +import { TopologyTree } from './injector/topology-tree/topology-tree.js'; +import { GraphInspector } from './inspector/graph-inspector.js'; +import { UuidFactory } from './inspector/uuid-factory.js'; +import { ModuleDefinition } from './interfaces/module-definition.interface.js'; +import { ModuleOverride } from './interfaces/module-override.interface.js'; +import { MetadataScanner } from './metadata-scanner.js'; interface ApplicationProviderWrapper { moduleKey: string; diff --git a/packages/core/services/index.ts b/packages/core/services/index.ts index b81014ca8e..5773ced2f5 100644 --- a/packages/core/services/index.ts +++ b/packages/core/services/index.ts @@ -1 +1 @@ -export * from './reflector.service'; +export * from './reflector.service.js'; diff --git a/packages/core/services/reflector.service.ts b/packages/core/services/reflector.service.ts index be666f9a58..9479670dfc 100644 --- a/packages/core/services/reflector.service.ts +++ b/packages/core/services/reflector.service.ts @@ -1,5 +1,5 @@ import { CustomDecorator, SetMetadata, Type } from '@nestjs/common'; -import { isEmpty, isObject } from '@nestjs/common/utils/shared.utils'; +import { isEmpty, isObject } from '@nestjs/common/utils/shared.utils.js'; import { uid } from 'uid'; /** diff --git a/packages/core/test/application-config.spec.ts b/packages/core/test/application-config.spec.ts index 73e23f7e37..5b093156d9 100644 --- a/packages/core/test/application-config.spec.ts +++ b/packages/core/test/application-config.spec.ts @@ -1,8 +1,8 @@ import { RequestMethod } from '@nestjs/common'; -import { GlobalPrefixOptions } from '@nestjs/common/interfaces'; +import { GlobalPrefixOptions } from '@nestjs/common/interfaces/index.js'; import { expect } from 'chai'; -import { ApplicationConfig } from '../application-config'; -import { ExcludeRouteMetadata } from '../router/interfaces/exclude-route-metadata.interface'; +import { ApplicationConfig } from '../application-config.js'; +import { ExcludeRouteMetadata } from '../router/interfaces/exclude-route-metadata.interface.js'; describe('ApplicationConfig', () => { let appConfig: ApplicationConfig; diff --git a/packages/core/test/discovery/discoverable-meta-host-collection.spec.ts b/packages/core/test/discovery/discoverable-meta-host-collection.spec.ts index 078716994b..0772978669 100644 --- a/packages/core/test/discovery/discoverable-meta-host-collection.spec.ts +++ b/packages/core/test/discovery/discoverable-meta-host-collection.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { ModulesContainer } from '../../injector/modules-container'; -import { DiscoverableMetaHostCollection } from '../../discovery/discoverable-meta-host-collection'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { ModulesContainer } from '../../injector/modules-container.js'; +import { DiscoverableMetaHostCollection } from '../../discovery/discoverable-meta-host-collection.js'; describe('DiscoverableMetaHostCollection', () => { beforeEach(() => { diff --git a/packages/core/test/discovery/discovery-service.spec.ts b/packages/core/test/discovery/discovery-service.spec.ts index acdf7ea08e..9958a2f179 100644 --- a/packages/core/test/discovery/discovery-service.spec.ts +++ b/packages/core/test/discovery/discovery-service.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { DiscoveryService } from '../../discovery/discovery-service'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; -import { ModulesContainer } from '../../injector/modules-container'; -import { DiscoverableMetaHostCollection } from '../../discovery/discoverable-meta-host-collection'; +import { DiscoveryService } from '../../discovery/discovery-service.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; +import { ModulesContainer } from '../../injector/modules-container.js'; +import { DiscoverableMetaHostCollection } from '../../discovery/discoverable-meta-host-collection.js'; describe('DiscoveryService', () => { let discoveryService: DiscoveryService; diff --git a/packages/core/test/errors/test/exception-handler.spec.ts b/packages/core/test/errors/test/exception-handler.spec.ts index 3fda223a9f..5b0fd8ffc6 100644 --- a/packages/core/test/errors/test/exception-handler.spec.ts +++ b/packages/core/test/errors/test/exception-handler.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ExceptionHandler } from '../../../errors/exception-handler'; -import { RuntimeException } from '../../../errors/exceptions/runtime.exception'; +import { ExceptionHandler } from '../../../errors/exception-handler.js'; +import { RuntimeException } from '../../../errors/exceptions/runtime.exception.js'; describe('ExceptionHandler', () => { let instance: ExceptionHandler; diff --git a/packages/core/test/errors/test/exceptions-zone.spec.ts b/packages/core/test/errors/test/exceptions-zone.spec.ts index e5d6c41404..3361cf843d 100644 --- a/packages/core/test/errors/test/exceptions-zone.spec.ts +++ b/packages/core/test/errors/test/exceptions-zone.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; import { Logger } from '@nestjs/common'; -import { ExceptionsZone } from '../../../errors/exceptions-zone'; +import { ExceptionsZone } from '../../../errors/exceptions-zone.js'; describe('ExceptionsZone', () => { const rethrow = err => { diff --git a/packages/core/test/errors/test/messages.spec.ts b/packages/core/test/errors/test/messages.spec.ts index 1ed76f4226..79d28b3ac0 100644 --- a/packages/core/test/errors/test/messages.spec.ts +++ b/packages/core/test/errors/test/messages.spec.ts @@ -1,12 +1,12 @@ import { expect } from 'chai'; -import { UnknownDependenciesException } from '../../../errors/exceptions/unknown-dependencies.exception'; +import { UnknownDependenciesException } from '../../../errors/exceptions/unknown-dependencies.exception.js'; import { INVALID_MODULE_MESSAGE, UNDEFINED_MODULE_MESSAGE, UNKNOWN_EXPORT_MESSAGE, -} from '../../../errors/messages'; -import { Module } from '../../../injector/module'; -import { stringCleaner } from '../../utils/string.cleaner'; +} from '../../../errors/messages.js'; +import { Module } from '../../../injector/module.js'; +import { stringCleaner } from '../../utils/string.cleaner.js'; describe('Error Messages', () => { const CatsModule = { name: 'CatsModule' }; diff --git a/packages/core/test/exceptions/base-exception-filter.spec.ts b/packages/core/test/exceptions/base-exception-filter.spec.ts index f348814c91..c1e5f33135 100644 --- a/packages/core/test/exceptions/base-exception-filter.spec.ts +++ b/packages/core/test/exceptions/base-exception-filter.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { BaseExceptionFilterContext } from '../../exceptions/base-exception-filter-context'; -import { NestContainer } from '../../injector/container'; +import { BaseExceptionFilterContext } from '../../exceptions/base-exception-filter-context.js'; +import { NestContainer } from '../../injector/container.js'; export class Filter {} diff --git a/packages/core/test/exceptions/exceptions-handler.spec.ts b/packages/core/test/exceptions/exceptions-handler.spec.ts index 4472a0b36f..98aeb48093 100644 --- a/packages/core/test/exceptions/exceptions-handler.spec.ts +++ b/packages/core/test/exceptions/exceptions-handler.spec.ts @@ -1,13 +1,13 @@ import { HttpException } from '@nestjs/common'; -import { isNil, isObject } from '@nestjs/common/utils/shared.utils'; +import { isNil, isObject } from '@nestjs/common/utils/shared.utils.js'; import { expect } from 'chai'; -import * as createHttpError from 'http-errors'; +import createHttpError from 'http-errors'; import * as sinon from 'sinon'; -import { AbstractHttpAdapter } from '../../adapters'; -import { InvalidExceptionFilterException } from '../../errors/exceptions/invalid-exception-filter.exception'; -import { ExceptionsHandler } from '../../exceptions/exceptions-handler'; -import { ExecutionContextHost } from '../../helpers/execution-context-host'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { AbstractHttpAdapter } from '../../adapters/index.js'; +import { InvalidExceptionFilterException } from '../../errors/exceptions/invalid-exception-filter.exception.js'; +import { ExceptionsHandler } from '../../exceptions/exceptions-handler.js'; +import { ExecutionContextHost } from '../../helpers/execution-context-host.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('ExceptionsHandler', () => { let adapter: AbstractHttpAdapter; diff --git a/packages/core/test/exceptions/external-exception-filter-context.spec.ts b/packages/core/test/exceptions/external-exception-filter-context.spec.ts index db05ca315e..421490d2a0 100644 --- a/packages/core/test/exceptions/external-exception-filter-context.spec.ts +++ b/packages/core/test/exceptions/external-exception-filter-context.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Catch } from '../../../common/decorators/core/catch.decorator'; -import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator'; -import { ApplicationConfig } from '../../application-config'; -import { ExternalExceptionFilterContext } from '../../exceptions/external-exception-filter-context'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; +import { Catch } from '../../../common/decorators/core/catch.decorator.js'; +import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { ExternalExceptionFilterContext } from '../../exceptions/external-exception-filter-context.js'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; describe('ExternalExceptionFilterContext', () => { let applicationConfig: ApplicationConfig; diff --git a/packages/core/test/exceptions/external-exceptions-handler.spec.ts b/packages/core/test/exceptions/external-exceptions-handler.spec.ts index cf8ca92a41..cce9bcd8b7 100644 --- a/packages/core/test/exceptions/external-exceptions-handler.spec.ts +++ b/packages/core/test/exceptions/external-exceptions-handler.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { ExternalExceptionFilter } from '../../exceptions/external-exception-filter'; -import { ExternalExceptionsHandler } from '../../exceptions/external-exceptions-handler'; +import { ExternalExceptionFilter } from '../../exceptions/external-exception-filter.js'; +import { ExternalExceptionsHandler } from '../../exceptions/external-exceptions-handler.js'; describe('ExternalExceptionsHandler', () => { let handler: ExternalExceptionsHandler; diff --git a/packages/core/test/guards/guards-consumer.spec.ts b/packages/core/test/guards/guards-consumer.spec.ts index 516ca0b00a..f9dad050a5 100644 --- a/packages/core/test/guards/guards-consumer.spec.ts +++ b/packages/core/test/guards/guards-consumer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { of } from 'rxjs'; -import { GuardsConsumer } from '../../guards/guards-consumer'; +import { GuardsConsumer } from '../../guards/guards-consumer.js'; import { AsyncLocalStorage } from 'async_hooks'; describe('GuardsConsumer', () => { diff --git a/packages/core/test/guards/guards-context-creator.spec.ts b/packages/core/test/guards/guards-context-creator.spec.ts index 0597f4fd45..696f489031 100644 --- a/packages/core/test/guards/guards-context-creator.spec.ts +++ b/packages/core/test/guards/guards-context-creator.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ApplicationConfig } from '../../application-config'; -import { GuardsContextCreator } from '../../guards/guards-context-creator'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; +import { ApplicationConfig } from '../../application-config.js'; +import { GuardsContextCreator } from '../../guards/guards-context-creator.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; class Guard {} diff --git a/packages/core/test/helpers/application-ref-host.spec.ts b/packages/core/test/helpers/application-ref-host.spec.ts index 78704327e4..aa36368664 100644 --- a/packages/core/test/helpers/application-ref-host.spec.ts +++ b/packages/core/test/helpers/application-ref-host.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { HttpAdapterHost } from '../../helpers/http-adapter-host'; +import { HttpAdapterHost } from '../../helpers/http-adapter-host.js'; describe('HttpAdapterHost', () => { let applicationRefHost: HttpAdapterHost; diff --git a/packages/core/test/helpers/barrier.spec.ts b/packages/core/test/helpers/barrier.spec.ts index e7eefe2a2b..5cbe439994 100644 --- a/packages/core/test/helpers/barrier.spec.ts +++ b/packages/core/test/helpers/barrier.spec.ts @@ -1,9 +1,9 @@ -import { expect } from 'chai'; -import { Barrier } from '../../../core/helpers/barrier'; -import * as sinon from 'sinon'; import * as chai from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import { expect } from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import * as sinon from 'sinon'; import { setTimeout } from 'timers/promises'; +import { Barrier } from '../../../core/helpers/barrier.js'; chai.use(chaiAsPromised); describe('Barrier', () => { diff --git a/packages/core/test/helpers/context-id-factory.spec.ts b/packages/core/test/helpers/context-id-factory.spec.ts index 65f0ed82cc..31976d81a5 100644 --- a/packages/core/test/helpers/context-id-factory.spec.ts +++ b/packages/core/test/helpers/context-id-factory.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { createContextId } from '../../helpers/context-id-factory'; +import { createContextId } from '../../helpers/context-id-factory.js'; describe('createContextId', () => { it('should return an object with random "id" property', () => { diff --git a/packages/core/test/helpers/context-utils.spec.ts b/packages/core/test/helpers/context-utils.spec.ts index 0c220f3f41..4dfa543d3c 100644 --- a/packages/core/test/helpers/context-utils.spec.ts +++ b/packages/core/test/helpers/context-utils.spec.ts @@ -1,10 +1,14 @@ -import { CUSTOM_ROUTE_ARGS_METADATA } from '@nestjs/common/constants'; -import { Body, createParamDecorator, Request } from '@nestjs/common/decorators'; -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '@nestjs/common/constants.js'; +import { + Body, + createParamDecorator, + Request, +} from '@nestjs/common/decorators/index.js'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; import { expect } from 'chai'; -import { ROUTE_ARGS_METADATA } from '../../../common/constants'; -import { ContextUtils } from '../../helpers/context-utils'; -import { ExecutionContextHost } from '../../helpers/execution-context-host'; +import { ROUTE_ARGS_METADATA } from '../../../common/constants.js'; +import { ContextUtils } from '../../helpers/context-utils.js'; +import { ExecutionContextHost } from '../../helpers/execution-context-host.js'; describe('ContextUtils', () => { let contextUtils: ContextUtils; diff --git a/packages/core/test/helpers/execution-context-host.spec.ts b/packages/core/test/helpers/execution-context-host.spec.ts index 82f7853bf8..b8927f0d0c 100644 --- a/packages/core/test/helpers/execution-context-host.spec.ts +++ b/packages/core/test/helpers/execution-context-host.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { ExecutionContextHost } from '../../helpers/execution-context-host'; +import { ExecutionContextHost } from '../../helpers/execution-context-host.js'; describe('ExecutionContextHost', () => { let contextHost: ExecutionContextHost; diff --git a/packages/core/test/helpers/external-context-creator.spec.ts b/packages/core/test/helpers/external-context-creator.spec.ts index 7a87aa4ced..1501cc9e9d 100644 --- a/packages/core/test/helpers/external-context-creator.spec.ts +++ b/packages/core/test/helpers/external-context-creator.spec.ts @@ -1,21 +1,21 @@ import { ForbiddenException } from '@nestjs/common'; -import { CUSTOM_ROUTE_ARGS_METADATA } from '@nestjs/common/constants'; -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '@nestjs/common/constants.js'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { ExternalExceptionFilterContext } from '../../exceptions/external-exception-filter-context'; -import { GuardsConsumer } from '../../guards/guards-consumer'; -import { GuardsContextCreator } from '../../guards/guards-context-creator'; -import { ExternalContextCreator } from '../../helpers/external-context-creator'; -import { NestContainer } from '../../injector/container'; -import { Module } from '../../injector/module'; -import { ModulesContainer } from '../../injector/modules-container'; -import { InterceptorsConsumer } from '../../interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator'; -import { PipesConsumer } from '../../pipes/pipes-consumer'; -import { PipesContextCreator } from '../../pipes/pipes-context-creator'; -import { RouteParamsFactory } from '../../router/route-params-factory'; +import { ExternalExceptionFilterContext } from '../../exceptions/external-exception-filter-context.js'; +import { GuardsConsumer } from '../../guards/guards-consumer.js'; +import { GuardsContextCreator } from '../../guards/guards-context-creator.js'; +import { ExternalContextCreator } from '../../helpers/external-context-creator.js'; +import { NestContainer } from '../../injector/container.js'; +import { Module } from '../../injector/module.js'; +import { ModulesContainer } from '../../injector/modules-container.js'; +import { InterceptorsConsumer } from '../../interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '../../pipes/pipes-consumer.js'; +import { PipesContextCreator } from '../../pipes/pipes-context-creator.js'; +import { RouteParamsFactory } from '../../router/route-params-factory.js'; describe('ExternalContextCreator', () => { let contextCreator: ExternalContextCreator; diff --git a/packages/core/test/helpers/external-proxy.spec.ts b/packages/core/test/helpers/external-proxy.spec.ts index 200ee23229..47d3503b9e 100644 --- a/packages/core/test/helpers/external-proxy.spec.ts +++ b/packages/core/test/helpers/external-proxy.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { HttpException } from '../../../common/exceptions/http.exception'; -import { ExternalExceptionsHandler } from '../../exceptions/external-exceptions-handler'; -import { ExternalErrorProxy } from '../../helpers/external-proxy'; +import { HttpException } from '../../../common/exceptions/http.exception.js'; +import { ExternalExceptionsHandler } from '../../exceptions/external-exceptions-handler.js'; +import { ExternalErrorProxy } from '../../helpers/external-proxy.js'; describe('ExternalErrorProxy', () => { let externalErrorProxy: ExternalErrorProxy; diff --git a/packages/core/test/helpers/router-method-factory.spec.ts b/packages/core/test/helpers/router-method-factory.spec.ts index 6b3edfad54..4f4e74a1ce 100644 --- a/packages/core/test/helpers/router-method-factory.spec.ts +++ b/packages/core/test/helpers/router-method-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RequestMethod } from '../../../common/enums/request-method.enum'; -import { RouterMethodFactory } from '../../helpers/router-method-factory'; +import { RequestMethod } from '../../../common/enums/request-method.enum.js'; +import { RouterMethodFactory } from '../../helpers/router-method-factory.js'; describe('RouterMethodFactory', () => { let factory: RouterMethodFactory; diff --git a/packages/core/test/hooks/before-app-shutdown.hook.spec.ts b/packages/core/test/hooks/before-app-shutdown.hook.spec.ts index 4d16581b1b..88d92033ca 100644 --- a/packages/core/test/hooks/before-app-shutdown.hook.spec.ts +++ b/packages/core/test/hooks/before-app-shutdown.hook.spec.ts @@ -1,9 +1,9 @@ import { BeforeApplicationShutdown } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { callBeforeAppShutdownHook } from '../../hooks/before-app-shutdown.hook'; -import { NestContainer } from '../../injector/container'; -import { Module } from '../../injector/module'; +import { callBeforeAppShutdownHook } from '../../hooks/before-app-shutdown.hook.js'; +import { NestContainer } from '../../injector/container.js'; +import { Module } from '../../injector/module.js'; class SampleProvider implements BeforeApplicationShutdown { beforeApplicationShutdown(signal?: string) {} diff --git a/packages/core/test/hooks/on-app-bootstrap.hook.spec.ts b/packages/core/test/hooks/on-app-bootstrap.hook.spec.ts index 578fd2d30c..86e326125f 100644 --- a/packages/core/test/hooks/on-app-bootstrap.hook.spec.ts +++ b/packages/core/test/hooks/on-app-bootstrap.hook.spec.ts @@ -1,9 +1,9 @@ import { OnApplicationBootstrap } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { callModuleBootstrapHook } from '../../hooks/on-app-bootstrap.hook'; -import { NestContainer } from '../../injector/container'; -import { Module } from '../../injector/module'; +import { callModuleBootstrapHook } from '../../hooks/on-app-bootstrap.hook.js'; +import { NestContainer } from '../../injector/container.js'; +import { Module } from '../../injector/module.js'; class SampleProvider implements OnApplicationBootstrap { onApplicationBootstrap() {} diff --git a/packages/core/test/hooks/on-app-shutdown.hook.spec.ts b/packages/core/test/hooks/on-app-shutdown.hook.spec.ts index a680b9cf9c..fb0bb9d4c3 100644 --- a/packages/core/test/hooks/on-app-shutdown.hook.spec.ts +++ b/packages/core/test/hooks/on-app-shutdown.hook.spec.ts @@ -1,9 +1,9 @@ import { OnApplicationShutdown } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { callAppShutdownHook } from '../../hooks/on-app-shutdown.hook'; -import { NestContainer } from '../../injector/container'; -import { Module } from '../../injector/module'; +import { callAppShutdownHook } from '../../hooks/on-app-shutdown.hook.js'; +import { NestContainer } from '../../injector/container.js'; +import { Module } from '../../injector/module.js'; class SampleProvider implements OnApplicationShutdown { onApplicationShutdown() {} diff --git a/packages/core/test/hooks/on-module-destroy.hook.spec.ts b/packages/core/test/hooks/on-module-destroy.hook.spec.ts index 6d4ad844a0..f36e4782eb 100644 --- a/packages/core/test/hooks/on-module-destroy.hook.spec.ts +++ b/packages/core/test/hooks/on-module-destroy.hook.spec.ts @@ -1,9 +1,9 @@ import { OnModuleDestroy } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { callModuleDestroyHook } from '../../hooks/on-module-destroy.hook'; -import { NestContainer } from '../../injector/container'; -import { Module } from '../../injector/module'; +import { callModuleDestroyHook } from '../../hooks/on-module-destroy.hook.js'; +import { NestContainer } from '../../injector/container.js'; +import { Module } from '../../injector/module.js'; class SampleProvider implements OnModuleDestroy { onModuleDestroy() {} diff --git a/packages/core/test/hooks/on-module-init.hook.spec.ts b/packages/core/test/hooks/on-module-init.hook.spec.ts index 8480f1c60d..1a36647727 100644 --- a/packages/core/test/hooks/on-module-init.hook.spec.ts +++ b/packages/core/test/hooks/on-module-init.hook.spec.ts @@ -1,9 +1,9 @@ import { OnModuleInit } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { callModuleInitHook } from '../../hooks/on-module-init.hook'; -import { NestContainer } from '../../injector/container'; -import { Module } from '../../injector/module'; +import { callModuleInitHook } from '../../hooks/on-module-init.hook.js'; +import { NestContainer } from '../../injector/container.js'; +import { Module } from '../../injector/module.js'; class SampleProvider implements OnModuleInit { onModuleInit() {} diff --git a/packages/core/test/injector/compiler.spec.ts b/packages/core/test/injector/compiler.spec.ts index 2929c49e11..569c35e7d6 100644 --- a/packages/core/test/injector/compiler.spec.ts +++ b/packages/core/test/injector/compiler.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { ModuleCompiler } from '../../injector/compiler'; -import { ByReferenceModuleOpaqueKeyFactory } from '../../injector/opaque-key-factory/by-reference-module-opaque-key-factory'; +import { ModuleCompiler } from '../../injector/compiler.js'; +import { ByReferenceModuleOpaqueKeyFactory } from '../../injector/opaque-key-factory/by-reference-module-opaque-key-factory.js'; describe('ModuleCompiler', () => { let compiler: ModuleCompiler; diff --git a/packages/core/test/injector/container.spec.ts b/packages/core/test/injector/container.spec.ts index fe77d3ebb0..e00f8dae85 100644 --- a/packages/core/test/injector/container.spec.ts +++ b/packages/core/test/injector/container.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Module } from '../../../common/decorators/modules/module.decorator'; -import { Global } from '../../../common/index'; -import { CircularDependencyException } from '../../errors/exceptions/circular-dependency.exception'; -import { UnknownModuleException } from '../../errors/exceptions/unknown-module.exception'; -import { NestContainer } from '../../injector/container'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { Module } from '../../../common/decorators/modules/module.decorator.js'; +import { Global } from '../../../common/index.js'; +import { CircularDependencyException } from '../../errors/exceptions/circular-dependency.exception.js'; +import { UnknownModuleException } from '../../errors/exceptions/unknown-module.exception.js'; +import { NestContainer } from '../../injector/container.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('NestContainer', () => { let container: NestContainer; diff --git a/packages/core/test/injector/helpers/provider-classifier.spec.ts b/packages/core/test/injector/helpers/provider-classifier.spec.ts index cd7e9a6b10..89a2124647 100644 --- a/packages/core/test/injector/helpers/provider-classifier.spec.ts +++ b/packages/core/test/injector/helpers/provider-classifier.spec.ts @@ -4,7 +4,7 @@ import { isClassProvider, isFactoryProvider, isValueProvider, -} from '../../../injector/helpers/provider-classifier'; +} from '../../../injector/helpers/provider-classifier.js'; describe('provider classifier', () => { describe('isClassProvider', () => { diff --git a/packages/core/test/injector/helpers/silent-logger.spec.ts b/packages/core/test/injector/helpers/silent-logger.spec.ts index a5ff67a12e..46684b4fcf 100644 --- a/packages/core/test/injector/helpers/silent-logger.spec.ts +++ b/packages/core/test/injector/helpers/silent-logger.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { Logger } from '@nestjs/common'; -import { SilentLogger } from '../../../injector/helpers/silent-logger'; +import { SilentLogger } from '../../../injector/helpers/silent-logger.js'; describe('SilentLogger', () => { let silentLogger: SilentLogger; diff --git a/packages/core/test/injector/injector.spec.ts b/packages/core/test/injector/injector.spec.ts index 54b8509d94..c78b4bc56d 100644 --- a/packages/core/test/injector/injector.spec.ts +++ b/packages/core/test/injector/injector.spec.ts @@ -1,17 +1,17 @@ import { Optional } from '@nestjs/common'; -import { PARAMTYPES_METADATA } from '@nestjs/common/constants'; +import { PARAMTYPES_METADATA } from '@nestjs/common/constants.js'; import * as chai from 'chai'; import { expect } from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; -import { Inject } from '../../../common/decorators/core/inject.decorator'; -import { Injectable } from '../../../common/decorators/core/injectable.decorator'; -import { STATIC_CONTEXT } from '../../injector/constants'; -import { NestContainer } from '../../injector/container'; -import { Injector, PropertyDependency } from '../../injector/injector'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; -import { SettlementSignal } from '../../injector/settlement-signal'; +import { Inject } from '../../../common/decorators/core/inject.decorator.js'; +import { Injectable } from '../../../common/decorators/core/injectable.decorator.js'; +import { STATIC_CONTEXT } from '../../injector/constants.js'; +import { NestContainer } from '../../injector/container.js'; +import { Injector, PropertyDependency } from '../../injector/injector.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; +import { SettlementSignal } from '../../injector/settlement-signal.js'; chai.use(chaiAsPromised); diff --git a/packages/core/test/injector/instance-loader.spec.ts b/packages/core/test/injector/instance-loader.spec.ts index 5ee507cdf2..5d24105339 100644 --- a/packages/core/test/injector/instance-loader.spec.ts +++ b/packages/core/test/injector/instance-loader.spec.ts @@ -1,12 +1,12 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Injectable } from '../../../common'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; -import { NestContainer } from '../../injector/container'; -import { Injector } from '../../injector/injector'; -import { InstanceLoader } from '../../injector/instance-loader'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { GraphInspector } from '../../inspector/graph-inspector'; +import { Injectable } from '../../../common/index.js'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; +import { NestContainer } from '../../injector/container.js'; +import { Injector } from '../../injector/injector.js'; +import { InstanceLoader } from '../../injector/instance-loader.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { GraphInspector } from '../../inspector/graph-inspector.js'; describe('InstanceLoader', () => { @Controller('') diff --git a/packages/core/test/injector/instance-wrapper.spec.ts b/packages/core/test/injector/instance-wrapper.spec.ts index 1f986d1978..66e0318751 100644 --- a/packages/core/test/injector/instance-wrapper.spec.ts +++ b/packages/core/test/injector/instance-wrapper.spec.ts @@ -1,9 +1,9 @@ import { Scope } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { createContextId } from '../../helpers'; -import { STATIC_CONTEXT } from '../../injector/constants'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; +import { createContextId } from '../../helpers/index.js'; +import { STATIC_CONTEXT } from '../../injector/constants.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; class TestClass {} diff --git a/packages/core/test/injector/internal-core-module/internal-core-module-factory.spec.ts b/packages/core/test/injector/internal-core-module/internal-core-module-factory.spec.ts index b5bfcd32ee..08fd0d25a8 100644 --- a/packages/core/test/injector/internal-core-module/internal-core-module-factory.spec.ts +++ b/packages/core/test/injector/internal-core-module/internal-core-module-factory.spec.ts @@ -1,12 +1,12 @@ import { ClassProvider, FactoryProvider } from '@nestjs/common'; import { expect } from 'chai'; -import { ExternalContextCreator } from '../../../helpers/external-context-creator'; -import { HttpAdapterHost } from '../../../helpers/http-adapter-host'; -import { LazyModuleLoader, ModulesContainer } from '../../../injector'; -import { NestContainer } from '../../../injector/container'; -import { InternalCoreModule } from '../../../injector/internal-core-module/internal-core-module'; -import { InternalCoreModuleFactory } from '../../../injector/internal-core-module/internal-core-module-factory'; -import { SerializedGraph } from '../../../inspector/serialized-graph'; +import { ExternalContextCreator } from '../../../helpers/external-context-creator.js'; +import { HttpAdapterHost } from '../../../helpers/http-adapter-host.js'; +import { LazyModuleLoader, ModulesContainer } from '../../../injector/index.js'; +import { NestContainer } from '../../../injector/container.js'; +import { InternalCoreModule } from '../../../injector/internal-core-module/internal-core-module.js'; +import { InternalCoreModuleFactory } from '../../../injector/internal-core-module/internal-core-module-factory.js'; +import { SerializedGraph } from '../../../inspector/serialized-graph.js'; describe('InternalCoreModuleFactory', () => { it('should return the internal core module definition', () => { diff --git a/packages/core/test/injector/lazy-module-loader/lazy-module-loader.spec.ts b/packages/core/test/injector/lazy-module-loader/lazy-module-loader.spec.ts index 4f2645272c..9f57616869 100644 --- a/packages/core/test/injector/lazy-module-loader/lazy-module-loader.spec.ts +++ b/packages/core/test/injector/lazy-module-loader/lazy-module-loader.spec.ts @@ -5,12 +5,12 @@ import { ModuleRef, ModulesContainer, NestContainer, -} from '../../../injector'; -import { Injector } from '../../../injector/injector'; -import { InstanceLoader } from '../../../injector/instance-loader'; -import { GraphInspector } from '../../../inspector/graph-inspector'; -import { MetadataScanner } from '../../../metadata-scanner'; -import { DependenciesScanner } from '../../../scanner'; +} from '../../../injector/index.js'; +import { Injector } from '../../../injector/injector.js'; +import { InstanceLoader } from '../../../injector/instance-loader.js'; +import { GraphInspector } from '../../../inspector/graph-inspector.js'; +import { MetadataScanner } from '../../../metadata-scanner.js'; +import { DependenciesScanner } from '../../../scanner.js'; describe('LazyModuleLoader', () => { let lazyModuleLoader: LazyModuleLoader; diff --git a/packages/core/test/injector/module.spec.ts b/packages/core/test/injector/module.spec.ts index b2ef4090ce..38db5020fd 100644 --- a/packages/core/test/injector/module.spec.ts +++ b/packages/core/test/injector/module.spec.ts @@ -1,14 +1,14 @@ import { Controller, Scope } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Injectable } from '../../../common'; -import { Module as ModuleDecorator } from '../../../common/decorators/modules/module.decorator'; -import { RuntimeException } from '../../errors/exceptions/runtime.exception'; -import { UnknownElementException } from '../../errors/exceptions/unknown-element.exception'; -import { UnknownExportException } from '../../errors/exceptions/unknown-export.exception'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; +import { Injectable } from '../../../common/index.js'; +import { Module as ModuleDecorator } from '../../../common/decorators/modules/module.decorator.js'; +import { RuntimeException } from '../../errors/exceptions/runtime.exception.js'; +import { UnknownElementException } from '../../errors/exceptions/unknown-element.exception.js'; +import { UnknownExportException } from '../../errors/exceptions/unknown-export.exception.js'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; describe('Module', () => { let moduleRef: Module; diff --git a/packages/core/test/injector/nested-transient-isolation.spec.ts b/packages/core/test/injector/nested-transient-isolation.spec.ts index 6078f72eb5..6da73514cf 100644 --- a/packages/core/test/injector/nested-transient-isolation.spec.ts +++ b/packages/core/test/injector/nested-transient-isolation.spec.ts @@ -1,10 +1,10 @@ import { Scope } from '@nestjs/common'; import { expect } from 'chai'; -import { Injectable } from '../../../common/decorators/core/injectable.decorator'; -import { NestContainer } from '../../injector/container'; -import { Injector } from '../../injector/injector'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; +import { Injectable } from '../../../common/decorators/core/injectable.decorator.js'; +import { NestContainer } from '../../injector/container.js'; +import { Injector } from '../../injector/injector.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; describe('Nested Transient Isolation', () => { let injector: Injector; diff --git a/packages/core/test/injector/opaque-key-factory/by-reference-module-opaque-key-factory.spec.ts b/packages/core/test/injector/opaque-key-factory/by-reference-module-opaque-key-factory.spec.ts index 2d9db42eb5..18f0ef4695 100644 --- a/packages/core/test/injector/opaque-key-factory/by-reference-module-opaque-key-factory.spec.ts +++ b/packages/core/test/injector/opaque-key-factory/by-reference-module-opaque-key-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ByReferenceModuleOpaqueKeyFactory } from '../../../injector/opaque-key-factory/by-reference-module-opaque-key-factory'; +import { ByReferenceModuleOpaqueKeyFactory } from '../../../injector/opaque-key-factory/by-reference-module-opaque-key-factory.js'; describe('ByReferenceModuleOpaqueKeyFactory', () => { const moduleId = 'constId'; diff --git a/packages/core/test/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.spec.ts b/packages/core/test/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.spec.ts index 28d05a6cb1..f93f043d6b 100644 --- a/packages/core/test/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.spec.ts +++ b/packages/core/test/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { DeepHashedModuleOpaqueKeyFactory } from '../../../injector/opaque-key-factory/deep-hashed-module-opaque-key-factory'; +import { DeepHashedModuleOpaqueKeyFactory } from '../../../injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js'; describe('DeepHashedModuleOpaqueKeyFactory', () => { const moduleId = 'constId'; diff --git a/packages/core/test/injector/topology-tree/tree-node.spec.ts b/packages/core/test/injector/topology-tree/tree-node.spec.ts index 267ba44d93..1c45f4f55f 100644 --- a/packages/core/test/injector/topology-tree/tree-node.spec.ts +++ b/packages/core/test/injector/topology-tree/tree-node.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { TreeNode } from '../../../injector/topology-tree/tree-node'; +import { TreeNode } from '../../../injector/topology-tree/tree-node.js'; describe('TreeNode', () => { describe('constructor', () => { diff --git a/packages/core/test/inspector/graph-inspector.spec.ts b/packages/core/test/inspector/graph-inspector.spec.ts index d24780341c..81bfe79930 100644 --- a/packages/core/test/inspector/graph-inspector.spec.ts +++ b/packages/core/test/inspector/graph-inspector.spec.ts @@ -1,12 +1,12 @@ import { Scope } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; -import { GraphInspector } from '../../inspector/graph-inspector'; -import { EnhancerMetadataCacheEntry } from '../../inspector/interfaces/enhancer-metadata-cache-entry.interface'; -import { SerializedGraph } from '../../inspector/serialized-graph'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; +import { GraphInspector } from '../../inspector/graph-inspector.js'; +import { EnhancerMetadataCacheEntry } from '../../inspector/interfaces/enhancer-metadata-cache-entry.interface.js'; +import { SerializedGraph } from '../../inspector/serialized-graph.js'; describe('GraphInspector', () => { let graphInspector: GraphInspector; diff --git a/packages/core/test/inspector/serialized-graph.spec.ts b/packages/core/test/inspector/serialized-graph.spec.ts index 25c5bd15a6..59583d75f6 100644 --- a/packages/core/test/inspector/serialized-graph.spec.ts +++ b/packages/core/test/inspector/serialized-graph.spec.ts @@ -1,9 +1,9 @@ import { Scope } from '@nestjs/common'; import { expect } from 'chai'; -import { ApplicationConfig } from '../../application-config'; -import { Edge } from '../../inspector/interfaces/edge.interface'; -import { Node } from '../../inspector/interfaces/node.interface'; -import { SerializedGraph } from '../../inspector/serialized-graph'; +import { ApplicationConfig } from '../../application-config.js'; +import { Edge } from '../../inspector/interfaces/edge.interface.js'; +import { Node } from '../../inspector/interfaces/node.interface.js'; +import { SerializedGraph } from '../../inspector/serialized-graph.js'; describe('SerializedGraph', () => { let serializedGraph: SerializedGraph; diff --git a/packages/core/test/interceptors/interceptors-consumer.spec.ts b/packages/core/test/interceptors/interceptors-consumer.spec.ts index e560be19f7..57a1121625 100644 --- a/packages/core/test/interceptors/interceptors-consumer.spec.ts +++ b/packages/core/test/interceptors/interceptors-consumer.spec.ts @@ -3,7 +3,7 @@ import { AsyncLocalStorage } from 'async_hooks'; import { expect } from 'chai'; import { Observable, defer, lastValueFrom, merge, of, retry } from 'rxjs'; import * as sinon from 'sinon'; -import { InterceptorsConsumer } from '../../interceptors/interceptors-consumer'; +import { InterceptorsConsumer } from '../../interceptors/interceptors-consumer.js'; describe('InterceptorsConsumer', () => { let consumer: InterceptorsConsumer; diff --git a/packages/core/test/interceptors/interceptors-context-creator.spec.ts b/packages/core/test/interceptors/interceptors-context-creator.spec.ts index 8e9bd5ce9d..689f3b02e9 100644 --- a/packages/core/test/interceptors/interceptors-context-creator.spec.ts +++ b/packages/core/test/interceptors/interceptors-context-creator.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { ApplicationConfig } from '../../application-config'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator'; +import { ApplicationConfig } from '../../application-config.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator.js'; class Interceptor {} diff --git a/packages/core/test/metadata-scanner.spec.ts b/packages/core/test/metadata-scanner.spec.ts index dd2c78b3f2..ecf2847fcb 100644 --- a/packages/core/test/metadata-scanner.spec.ts +++ b/packages/core/test/metadata-scanner.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { MetadataScanner } from '../metadata-scanner'; +import { MetadataScanner } from '../metadata-scanner.js'; describe('MetadataScanner', () => { let scanner: MetadataScanner; diff --git a/packages/core/test/middleware/builder.spec.ts b/packages/core/test/middleware/builder.spec.ts index 0f625f7149..171c35f5ee 100644 --- a/packages/core/test/middleware/builder.spec.ts +++ b/packages/core/test/middleware/builder.spec.ts @@ -11,14 +11,14 @@ import { RequestMethod, Version, VersioningType, -} from '../../../common'; -import { MiddlewareConfigProxy } from '../../../common/interfaces'; -import { ApplicationConfig } from '../../application-config'; -import { NestContainer } from '../../injector/container'; -import { MiddlewareBuilder } from '../../middleware/builder'; -import { RouteInfoPathExtractor } from '../../middleware/route-info-path-extractor'; -import { RoutesMapper } from '../../middleware/routes-mapper'; -import { NoopHttpAdapter } from './../utils/noop-adapter.spec'; +} from '../../../common/index.js'; +import { MiddlewareConfigProxy } from '../../../common/interfaces/index.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { NestContainer } from '../../injector/container.js'; +import { MiddlewareBuilder } from '../../middleware/builder.js'; +import { RouteInfoPathExtractor } from '../../middleware/route-info-path-extractor.js'; +import { RoutesMapper } from '../../middleware/routes-mapper.js'; +import { NoopHttpAdapter } from './../utils/noop-adapter.spec.js'; describe('MiddlewareBuilder', () => { let builder: MiddlewareBuilder; diff --git a/packages/core/test/middleware/container.spec.ts b/packages/core/test/middleware/container.spec.ts index 1cf312ae06..8122339a4e 100644 --- a/packages/core/test/middleware/container.spec.ts +++ b/packages/core/test/middleware/container.spec.ts @@ -1,14 +1,14 @@ import { expect } from 'chai'; -import { Injectable } from '../../../common'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; -import { RequestMapping } from '../../../common/decorators/http/request-mapping.decorator'; -import { RequestMethod } from '../../../common/enums/request-method.enum'; -import { MiddlewareConfiguration } from '../../../common/interfaces/middleware/middleware-configuration.interface'; -import { NestMiddleware } from '../../../common/interfaces/middleware/nest-middleware.interface'; -import { NestContainer } from '../../injector'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; -import { MiddlewareContainer } from '../../middleware/container'; +import { Injectable } from '../../../common/index.js'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; +import { RequestMapping } from '../../../common/decorators/http/request-mapping.decorator.js'; +import { RequestMethod } from '../../../common/enums/request-method.enum.js'; +import { MiddlewareConfiguration } from '../../../common/interfaces/middleware/middleware-configuration.interface.js'; +import { NestMiddleware } from '../../../common/interfaces/middleware/nest-middleware.interface.js'; +import { NestContainer } from '../../injector/index.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; +import { MiddlewareContainer } from '../../middleware/container.js'; describe('MiddlewareContainer', () => { class ExampleModule {} diff --git a/packages/core/test/middleware/middleware-module.spec.ts b/packages/core/test/middleware/middleware-module.spec.ts index 0b0453a25c..2d74d0d728 100644 --- a/packages/core/test/middleware/middleware-module.spec.ts +++ b/packages/core/test/middleware/middleware-module.spec.ts @@ -1,25 +1,25 @@ import { Injectable } from '@nestjs/common'; -import { RouteInfoPathExtractor } from '@nestjs/core/middleware/route-info-path-extractor'; +import { RouteInfoPathExtractor } from '@nestjs/core/middleware/route-info-path-extractor.js'; import * as chai from 'chai'; import { expect } from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; +import chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; -import { RequestMapping } from '../../../common/decorators/http/request-mapping.decorator'; -import { RequestMethod } from '../../../common/enums/request-method.enum'; -import { NestMiddleware } from '../../../common/interfaces/middleware/nest-middleware.interface'; -import { ApplicationConfig } from '../../application-config'; -import { InvalidMiddlewareException } from '../../errors/exceptions/invalid-middleware.exception'; -import { RuntimeException } from '../../errors/exceptions/runtime.exception'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { Module } from '../../injector/module'; -import { GraphInspector } from '../../inspector/graph-inspector'; -import { MiddlewareBuilder } from '../../middleware/builder'; -import { MiddlewareContainer } from '../../middleware/container'; -import { MiddlewareModule } from '../../middleware/middleware-module'; -import { RouterExceptionFilters } from '../../router/router-exception-filters'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; +import { RequestMapping } from '../../../common/decorators/http/request-mapping.decorator.js'; +import { RequestMethod } from '../../../common/enums/request-method.enum.js'; +import { NestMiddleware } from '../../../common/interfaces/middleware/nest-middleware.interface.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { InvalidMiddlewareException } from '../../errors/exceptions/invalid-middleware.exception.js'; +import { RuntimeException } from '../../errors/exceptions/runtime.exception.js'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { Module } from '../../injector/module.js'; +import { GraphInspector } from '../../inspector/graph-inspector.js'; +import { MiddlewareBuilder } from '../../middleware/builder.js'; +import { MiddlewareContainer } from '../../middleware/container.js'; +import { MiddlewareModule } from '../../middleware/middleware-module.js'; +import { RouterExceptionFilters } from '../../router/router-exception-filters.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; chai.use(chaiAsPromised); diff --git a/packages/core/test/middleware/resolver.spec.ts b/packages/core/test/middleware/resolver.spec.ts index 3641da2d07..907e176e83 100644 --- a/packages/core/test/middleware/resolver.spec.ts +++ b/packages/core/test/middleware/resolver.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Injectable } from '../../../common'; -import { NestMiddleware } from '../../../common/interfaces/middleware/nest-middleware.interface'; -import { NestContainer } from '../../injector'; -import { Injector } from '../../injector/injector'; -import { MiddlewareContainer } from '../../middleware/container'; -import { MiddlewareResolver } from '../../middleware/resolver'; +import { Injectable } from '../../../common/index.js'; +import { NestMiddleware } from '../../../common/interfaces/middleware/nest-middleware.interface.js'; +import { NestContainer } from '../../injector/index.js'; +import { Injector } from '../../injector/injector.js'; +import { MiddlewareContainer } from '../../middleware/container.js'; +import { MiddlewareResolver } from '../../middleware/resolver.js'; describe('MiddlewareResolver', () => { @Injectable() diff --git a/packages/core/test/middleware/route-info-path-extractor.spec.ts b/packages/core/test/middleware/route-info-path-extractor.spec.ts index 62bfb5fc8d..53cd1a784d 100644 --- a/packages/core/test/middleware/route-info-path-extractor.spec.ts +++ b/packages/core/test/middleware/route-info-path-extractor.spec.ts @@ -1,8 +1,8 @@ import { RequestMethod, VersioningType } from '@nestjs/common'; import { ApplicationConfig } from '@nestjs/core'; -import { mapToExcludeRoute } from '@nestjs/core/middleware/utils'; +import { mapToExcludeRoute } from '@nestjs/core/middleware/utils.js'; import { expect } from 'chai'; -import { RouteInfoPathExtractor } from './../../middleware/route-info-path-extractor'; +import { RouteInfoPathExtractor } from './../../middleware/route-info-path-extractor.js'; describe('RouteInfoPathExtractor', () => { describe('extractPathsFrom', () => { diff --git a/packages/core/test/middleware/routes-mapper.spec.ts b/packages/core/test/middleware/routes-mapper.spec.ts index e64a17d473..473bffdde2 100644 --- a/packages/core/test/middleware/routes-mapper.spec.ts +++ b/packages/core/test/middleware/routes-mapper.spec.ts @@ -1,15 +1,15 @@ import { expect } from 'chai'; -import { Version, VersioningType } from '../../../common'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; +import { Version, VersioningType } from '../../../common/index.js'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; import { Get, RequestMapping, -} from '../../../common/decorators/http/request-mapping.decorator'; -import { RequestMethod } from '../../../common/enums/request-method.enum'; -import { MiddlewareConfiguration } from '../../../common/interfaces'; -import { ApplicationConfig } from '../../application-config'; -import { NestContainer } from '../../injector/container'; -import { RoutesMapper } from '../../middleware/routes-mapper'; +} from '../../../common/decorators/http/request-mapping.decorator.js'; +import { RequestMethod } from '../../../common/enums/request-method.enum.js'; +import { MiddlewareConfiguration } from '../../../common/interfaces/index.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { NestContainer } from '../../injector/container.js'; +import { RoutesMapper } from '../../middleware/routes-mapper.js'; describe('RoutesMapper', () => { @Controller('test') diff --git a/packages/core/test/middleware/utils.spec.ts b/packages/core/test/middleware/utils.spec.ts index df94e8a5b7..30471db88a 100644 --- a/packages/core/test/middleware/utils.spec.ts +++ b/packages/core/test/middleware/utils.spec.ts @@ -1,5 +1,5 @@ import { RequestMethod } from '@nestjs/common'; -import { addLeadingSlash } from '@nestjs/common/utils/shared.utils'; +import { addLeadingSlash } from '@nestjs/common/utils/shared.utils.js'; import { expect } from 'chai'; import { pathToRegexp } from 'path-to-regexp'; import * as sinon from 'sinon'; @@ -10,8 +10,8 @@ import { isMiddlewareRouteExcluded, mapToClass, mapToExcludeRoute, -} from '../../middleware/utils'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +} from '../../middleware/utils.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('middleware utils', () => { const noopAdapter = new NoopHttpAdapter({}); diff --git a/packages/core/test/nest-application-context.spec.ts b/packages/core/test/nest-application-context.spec.ts index e49d90d48e..6e4206662f 100644 --- a/packages/core/test/nest-application-context.spec.ts +++ b/packages/core/test/nest-application-context.spec.ts @@ -1,13 +1,12 @@ import { Injectable, InjectionToken, Provider, Scope } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { setTimeout } from 'timers/promises'; -import { ContextIdFactory } from '../helpers/context-id-factory'; -import { NestContainer } from '../injector/container'; -import { Injector } from '../injector/injector'; -import { InstanceLoader } from '../injector/instance-loader'; -import { GraphInspector } from '../inspector/graph-inspector'; -import { NestApplicationContext } from '../nest-application-context'; +import { ContextIdFactory } from '../helpers/context-id-factory.js'; +import { NestContainer } from '../injector/container.js'; +import { Injector } from '../injector/injector.js'; +import { InstanceLoader } from '../injector/instance-loader.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; +import { NestApplicationContext } from '../nest-application-context.js'; describe('NestApplicationContext', () => { class A {} @@ -112,14 +111,19 @@ describe('NestApplicationContext', () => { const onModuleInitStub = sinon.stub(); const onApplicationShutdownStub = sinon.stub(); + // Use global setTimeout wrapped in a Promise so sinon fake timers + // can intercept it (timers/promises.setTimeout is not fakeable in ESM). + const delay = (ms: number) => + new Promise(resolve => globalThis.setTimeout(resolve, ms)); + class B { async onModuleInit() { - await setTimeout(5000); + await delay(5000); onModuleInitStub(); } async onApplicationShutdown() { - await setTimeout(1000); + await delay(1000); onApplicationShutdownStub(); } } @@ -135,7 +139,7 @@ describe('NestApplicationContext', () => { process.on(signal, ignoreProcessSignal); const deferredShutdown = async () => { - await setTimeout(1); + await delay(1); process.kill(process.pid, signal); }; void Promise.all([applicationContext.init(), deferredShutdown()]); diff --git a/packages/core/test/nest-application.spec.ts b/packages/core/test/nest-application.spec.ts index f74b3052cf..9a73f04d11 100644 --- a/packages/core/test/nest-application.spec.ts +++ b/packages/core/test/nest-application.spec.ts @@ -1,22 +1,33 @@ import { RequestMethod } from '@nestjs/common'; -import { expect } from 'chai'; -import { ApplicationConfig } from '../application-config'; -import { NestContainer } from '../injector/container'; -import { GraphInspector } from '../inspector/graph-inspector'; -import { NestApplication } from '../nest-application'; -import { mapToExcludeRoute } from './../middleware/utils'; -import { NoopHttpAdapter } from './utils/noop-adapter.spec'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; import { MicroserviceOptions } from '@nestjs/microservices'; +import { expect } from 'chai'; import * as sinon from 'sinon'; +import { ApplicationConfig } from '../application-config.js'; +import { NestContainer } from '../injector/container.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; +import { NestApplication } from '../nest-application.js'; +import { mapToExcludeRoute } from './../middleware/utils.js'; +import { NoopHttpAdapter } from './utils/noop-adapter.spec.js'; describe('NestApplication', () => { + before(async () => { + // Pre-populate the package cache so that connectMicroservice() + // can synchronously retrieve @nestjs/microservices via loadPackageCached. + await loadPackage( + '@nestjs/microservices', + 'NestApplication tests', + () => import('@nestjs/microservices'), + ); + }); + describe('Hybrid Application', () => { class Interceptor { public intercept(context, next) { return next(); } } - it('default should use new ApplicationConfig', () => { + it('default should use new ApplicationConfig', async () => { const applicationConfig = new ApplicationConfig(); const container = new NestContainer(applicationConfig); const instance = new NestApplication( @@ -37,7 +48,7 @@ describe('NestApplication', () => { (microservice as any).applicationConfig.getGlobalInterceptors().length, ).to.equal(0); }); - it('should inherit existing ApplicationConfig', () => { + it('should inherit existing ApplicationConfig', async () => { const applicationConfig = new ApplicationConfig(); const container = new NestContainer(applicationConfig); const instance = new NestApplication( @@ -60,7 +71,7 @@ describe('NestApplication', () => { ).to.equal(1); }); - it('should immediately initialize microservice by default', () => { + it('should immediately initialize microservice by default', async () => { const applicationConfig = new ApplicationConfig(); const container = new NestContainer(applicationConfig); const instance = new NestApplication( @@ -80,7 +91,7 @@ describe('NestApplication', () => { expect((microservice as any).wasInitHookCalled).to.be.true; }); - it('should defer microservice initialization when deferInitialization is true', () => { + it('should defer microservice initialization when deferInitialization is true', async () => { const applicationConfig = new ApplicationConfig(); const container = new NestContainer(applicationConfig); const instance = new NestApplication( diff --git a/packages/core/test/pipes/params-token-factory.spec.ts b/packages/core/test/pipes/params-token-factory.spec.ts index 6bc83aadd0..b763e23496 100644 --- a/packages/core/test/pipes/params-token-factory.spec.ts +++ b/packages/core/test/pipes/params-token-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum'; -import { ParamsTokenFactory } from '../../pipes/params-token-factory'; +import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum.js'; +import { ParamsTokenFactory } from '../../pipes/params-token-factory.js'; describe('ParamsTokenFactory', () => { let factory: ParamsTokenFactory; diff --git a/packages/core/test/pipes/pipes-consumer.spec.ts b/packages/core/test/pipes/pipes-consumer.spec.ts index bae8d33899..8a31f9db3b 100644 --- a/packages/core/test/pipes/pipes-consumer.spec.ts +++ b/packages/core/test/pipes/pipes-consumer.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum'; -import { PipesConsumer } from '../../pipes/pipes-consumer'; +import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum.js'; +import { PipesConsumer } from '../../pipes/pipes-consumer.js'; const createPipe = (transform: Function) => ({ transform }); diff --git a/packages/core/test/pipes/pipes-context-creator.spec.ts b/packages/core/test/pipes/pipes-context-creator.spec.ts index 63b7cc0c46..7a3776e48a 100644 --- a/packages/core/test/pipes/pipes-context-creator.spec.ts +++ b/packages/core/test/pipes/pipes-context-creator.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ApplicationConfig } from '../../application-config'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { PipesContextCreator } from '../../pipes/pipes-context-creator'; +import { ApplicationConfig } from '../../application-config.js'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { PipesContextCreator } from '../../pipes/pipes-context-creator.js'; class Pipe {} diff --git a/packages/core/test/repl/assign-to-object.util.spec.ts b/packages/core/test/repl/assign-to-object.util.spec.ts index 0a7a58bf5d..1ee503cecc 100644 --- a/packages/core/test/repl/assign-to-object.util.spec.ts +++ b/packages/core/test/repl/assign-to-object.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { assignToObject } from '../../repl/assign-to-object.util'; +import { assignToObject } from '../../repl/assign-to-object.util.js'; describe('assignToObject', () => { it('should copy all enumerable properties and their descriptors', () => { diff --git a/packages/core/test/repl/native-functions/debug-repl-fn.spec.ts b/packages/core/test/repl/native-functions/debug-repl-fn.spec.ts index cfda9b51a2..e7842c36d6 100644 --- a/packages/core/test/repl/native-functions/debug-repl-fn.spec.ts +++ b/packages/core/test/repl/native-functions/debug-repl-fn.spec.ts @@ -1,9 +1,9 @@ -import { clc } from '@nestjs/common/utils/cli-colors.util'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { NestContainer } from '../../../injector/container'; -import { DebugReplFn } from '../../../repl/native-functions'; -import { ReplContext } from '../../../repl/repl-context'; +import { NestContainer } from '../../../injector/container.js'; +import { DebugReplFn } from '../../../repl/native-functions/index.js'; +import { ReplContext } from '../../../repl/repl-context.js'; describe('DebugReplFn', () => { let debugReplFn: DebugReplFn; diff --git a/packages/core/test/repl/native-functions/get-repl-fn.spec.ts b/packages/core/test/repl/native-functions/get-repl-fn.spec.ts index aec8f335fa..f9af688774 100644 --- a/packages/core/test/repl/native-functions/get-repl-fn.spec.ts +++ b/packages/core/test/repl/native-functions/get-repl-fn.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { GetReplFn } from '../../../repl/native-functions'; -import { ReplContext } from '../../../repl/repl-context'; -import { NestContainer } from '../../../injector/container'; +import { GetReplFn } from '../../../repl/native-functions/index.js'; +import { ReplContext } from '../../../repl/repl-context.js'; +import { NestContainer } from '../../../injector/container.js'; describe('GetReplFn', () => { let getReplFn: GetReplFn; diff --git a/packages/core/test/repl/native-functions/help-repl-fn.spec.ts b/packages/core/test/repl/native-functions/help-repl-fn.spec.ts index 09f0411532..b20f59ac00 100644 --- a/packages/core/test/repl/native-functions/help-repl-fn.spec.ts +++ b/packages/core/test/repl/native-functions/help-repl-fn.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { clc } from '@nestjs/common/utils/cli-colors.util'; -import { HelpReplFn } from '../../../repl/native-functions'; -import { ReplContext } from '../../../repl/repl-context'; -import { NestContainer } from '../../../injector/container'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; +import { HelpReplFn } from '../../../repl/native-functions/index.js'; +import { ReplContext } from '../../../repl/repl-context.js'; +import { NestContainer } from '../../../injector/container.js'; describe('HelpReplFn', () => { let helpReplFn: HelpReplFn; diff --git a/packages/core/test/repl/native-functions/methods-repl-fn.spec.ts b/packages/core/test/repl/native-functions/methods-repl-fn.spec.ts index 6cf7c60e31..afce7c7dd5 100644 --- a/packages/core/test/repl/native-functions/methods-repl-fn.spec.ts +++ b/packages/core/test/repl/native-functions/methods-repl-fn.spec.ts @@ -1,9 +1,9 @@ -import { clc } from '@nestjs/common/utils/cli-colors.util'; +import { clc } from '@nestjs/common/utils/cli-colors.util.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { NestContainer } from '../../../injector/container'; -import { MethodsReplFn } from '../../../repl/native-functions'; -import { ReplContext } from '../../../repl/repl-context'; +import { NestContainer } from '../../../injector/container.js'; +import { MethodsReplFn } from '../../../repl/native-functions/index.js'; +import { ReplContext } from '../../../repl/repl-context.js'; describe('MethodsReplFn', () => { let methodsReplFn: MethodsReplFn; diff --git a/packages/core/test/repl/native-functions/resolve-repl-fn.spec.ts b/packages/core/test/repl/native-functions/resolve-repl-fn.spec.ts index cf78bbd40e..3c6483e680 100644 --- a/packages/core/test/repl/native-functions/resolve-repl-fn.spec.ts +++ b/packages/core/test/repl/native-functions/resolve-repl-fn.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ResolveReplFn } from '../../../repl/native-functions'; -import { ReplContext } from '../../../repl/repl-context'; -import { NestContainer } from '../../../injector/container'; +import { ResolveReplFn } from '../../../repl/native-functions/index.js'; +import { ReplContext } from '../../../repl/repl-context.js'; +import { NestContainer } from '../../../injector/container.js'; describe('ResolveReplFn', () => { let resolveReplFn: ResolveReplFn; diff --git a/packages/core/test/repl/native-functions/select-repl-fn.spec.ts b/packages/core/test/repl/native-functions/select-repl-fn.spec.ts index 22a033e542..c54b541da5 100644 --- a/packages/core/test/repl/native-functions/select-repl-fn.spec.ts +++ b/packages/core/test/repl/native-functions/select-repl-fn.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { SelectReplFn } from '../../../repl/native-functions'; -import { ReplContext } from '../../../repl/repl-context'; -import { NestContainer } from '../../../injector/container'; +import { SelectReplFn } from '../../../repl/native-functions/index.js'; +import { ReplContext } from '../../../repl/repl-context.js'; +import { NestContainer } from '../../../injector/container.js'; describe('SelectReplFn', () => { let selectReplFn: SelectReplFn; diff --git a/packages/core/test/repl/repl-context.spec.ts b/packages/core/test/repl/repl-context.spec.ts index 9654dfce5e..6f33dddf77 100644 --- a/packages/core/test/repl/repl-context.spec.ts +++ b/packages/core/test/repl/repl-context.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { NestContainer } from '../../injector/container'; -import { ReplContext } from '../../repl/repl-context'; +import { NestContainer } from '../../injector/container.js'; +import { ReplContext } from '../../repl/repl-context.js'; describe('ReplContext', () => { let replContext: ReplContext; diff --git a/packages/core/test/router/paths-explorer.spec.ts b/packages/core/test/router/paths-explorer.spec.ts index 053a566a66..a0ad5ceddc 100644 --- a/packages/core/test/router/paths-explorer.spec.ts +++ b/packages/core/test/router/paths-explorer.spec.ts @@ -1,13 +1,13 @@ import { expect } from 'chai'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; import { All, Get, Post, -} from '../../../common/decorators/http/request-mapping.decorator'; -import { RequestMethod } from '../../../common/enums/request-method.enum'; -import { MetadataScanner } from '../../metadata-scanner'; -import { PathsExplorer } from '../../router/paths-explorer'; +} from '../../../common/decorators/http/request-mapping.decorator.js'; +import { RequestMethod } from '../../../common/enums/request-method.enum.js'; +import { MetadataScanner } from '../../metadata-scanner.js'; +import { PathsExplorer } from '../../router/paths-explorer.js'; describe('PathsExplorer', () => { @Controller('global') diff --git a/packages/core/test/router/route-params-factory.spec.ts b/packages/core/test/router/route-params-factory.spec.ts index 3768dc9abb..32954acc4f 100644 --- a/packages/core/test/router/route-params-factory.spec.ts +++ b/packages/core/test/router/route-params-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum'; -import { RouteParamsFactory } from '../../router/route-params-factory'; +import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum.js'; +import { RouteParamsFactory } from '../../router/route-params-factory.js'; describe('RouteParamsFactory', () => { let factory: RouteParamsFactory; diff --git a/packages/core/test/router/route-path-factory.spec.ts b/packages/core/test/router/route-path-factory.spec.ts index acb3ca1f71..2d257f233f 100644 --- a/packages/core/test/router/route-path-factory.spec.ts +++ b/packages/core/test/router/route-path-factory.spec.ts @@ -2,8 +2,8 @@ import { RequestMethod, VERSION_NEUTRAL, VersioningType } from '@nestjs/common'; import { expect } from 'chai'; import { pathToRegexp } from 'path-to-regexp'; import * as sinon from 'sinon'; -import { ApplicationConfig } from '../../application-config'; -import { RoutePathFactory } from '../../router/route-path-factory'; +import { ApplicationConfig } from '../../application-config.js'; +import { RoutePathFactory } from '../../router/route-path-factory.js'; describe('RoutePathFactory', () => { let routePathFactory: RoutePathFactory; diff --git a/packages/core/test/router/router-exception-filters.spec.ts b/packages/core/test/router/router-exception-filters.spec.ts index f0e9afbd74..d459821cf7 100644 --- a/packages/core/test/router/router-exception-filters.spec.ts +++ b/packages/core/test/router/router-exception-filters.spec.ts @@ -1,12 +1,12 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Catch } from '../../../common/decorators/core/catch.decorator'; -import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator'; -import { ApplicationConfig } from '../../application-config'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { RouterExceptionFilters } from '../../router/router-exception-filters'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { Catch } from '../../../common/decorators/core/catch.decorator.js'; +import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { RouterExceptionFilters } from '../../router/router-exception-filters.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('RouterExceptionFilters', () => { let applicationConfig: ApplicationConfig; diff --git a/packages/core/test/router/router-execution-context.spec.ts b/packages/core/test/router/router-execution-context.spec.ts index ee7499dd5d..7ce0abf4f3 100644 --- a/packages/core/test/router/router-execution-context.spec.ts +++ b/packages/core/test/router/router-execution-context.spec.ts @@ -1,26 +1,30 @@ -import { ForbiddenException } from '@nestjs/common/exceptions/forbidden.exception'; +import { ForbiddenException } from '@nestjs/common/exceptions/forbidden.exception.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; import { PassThrough } from 'stream'; -import { HttpException, HttpStatus, RouteParamMetadata } from '../../../common'; -import { CUSTOM_ROUTE_ARGS_METADATA } from '../../../common/constants'; -import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum'; -import { AbstractHttpAdapter } from '../../adapters'; -import { ApplicationConfig } from '../../application-config'; -import { FORBIDDEN_MESSAGE } from '../../guards/constants'; -import { GuardsConsumer } from '../../guards/guards-consumer'; -import { GuardsContextCreator } from '../../guards/guards-context-creator'; -import { HandlerResponseBasicFn } from '../../helpers/handler-metadata-storage'; -import { NestContainer } from '../../injector/container'; -import { InterceptorsConsumer } from '../../interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator'; -import { PipesConsumer } from '../../pipes/pipes-consumer'; -import { PipesContextCreator } from '../../pipes/pipes-context-creator'; -import { RouteParamsFactory } from '../../router/route-params-factory'; -import { RouterExecutionContext } from '../../router/router-execution-context'; -import { HeaderStream } from '../../router/sse-stream'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { + HttpException, + HttpStatus, + RouteParamMetadata, +} from '../../../common/index.js'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '../../../common/constants.js'; +import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum.js'; +import { AbstractHttpAdapter } from '../../adapters/index.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { FORBIDDEN_MESSAGE } from '../../guards/constants.js'; +import { GuardsConsumer } from '../../guards/guards-consumer.js'; +import { GuardsContextCreator } from '../../guards/guards-context-creator.js'; +import { HandlerResponseBasicFn } from '../../helpers/handler-metadata-storage.js'; +import { NestContainer } from '../../injector/container.js'; +import { InterceptorsConsumer } from '../../interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '../../pipes/pipes-consumer.js'; +import { PipesContextCreator } from '../../pipes/pipes-context-creator.js'; +import { RouteParamsFactory } from '../../router/route-params-factory.js'; +import { RouterExecutionContext } from '../../router/router-execution-context.js'; +import { HeaderStream } from '../../router/sse-stream.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('RouterExecutionContext', () => { let contextCreator: RouterExecutionContext; diff --git a/packages/core/test/router/router-explorer.spec.ts b/packages/core/test/router/router-explorer.spec.ts index a5d32ad0a5..94ac66b745 100644 --- a/packages/core/test/router/router-explorer.spec.ts +++ b/packages/core/test/router/router-explorer.spec.ts @@ -1,26 +1,26 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; import { All, Get, Post, -} from '../../../common/decorators/http/request-mapping.decorator'; -import { RequestMethod } from '../../../common/enums/request-method.enum'; -import { VersioningType } from '../../../common/enums/version-type.enum'; -import { Injector } from '../../../core/injector/injector'; -import { ApplicationConfig } from '../../application-config'; -import { UnknownRequestMappingException } from '../../errors/exceptions/unknown-request-mapping.exception'; -import { ExecutionContextHost } from '../../helpers/execution-context-host'; -import { NestContainer } from '../../injector/container'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { GraphInspector } from '../../inspector/graph-inspector'; -import { MetadataScanner } from '../../metadata-scanner'; -import { RoutePathMetadata } from '../../router/interfaces/route-path-metadata.interface'; -import { RoutePathFactory } from '../../router/route-path-factory'; -import { RouterExceptionFilters } from '../../router/router-exception-filters'; -import { RouterExplorer } from '../../router/router-explorer'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +} from '../../../common/decorators/http/request-mapping.decorator.js'; +import { RequestMethod } from '../../../common/enums/request-method.enum.js'; +import { VersioningType } from '../../../common/enums/version-type.enum.js'; +import { Injector } from '../../../core/injector/injector.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { UnknownRequestMappingException } from '../../errors/exceptions/unknown-request-mapping.exception.js'; +import { ExecutionContextHost } from '../../helpers/execution-context-host.js'; +import { NestContainer } from '../../injector/container.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { GraphInspector } from '../../inspector/graph-inspector.js'; +import { MetadataScanner } from '../../metadata-scanner.js'; +import { RoutePathMetadata } from '../../router/interfaces/route-path-metadata.interface.js'; +import { RoutePathFactory } from '../../router/route-path-factory.js'; +import { RouterExceptionFilters } from '../../router/router-exception-filters.js'; +import { RouterExplorer } from '../../router/router-explorer.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('RouterExplorer', () => { @Controller('global') diff --git a/packages/core/test/router/router-module.spec.ts b/packages/core/test/router/router-module.spec.ts index 8049d8b965..36cb160e83 100644 --- a/packages/core/test/router/router-module.spec.ts +++ b/packages/core/test/router/router-module.spec.ts @@ -1,12 +1,12 @@ import { expect } from 'chai'; -import { ModulesContainer, NestContainer } from '../../injector'; -import { Module } from '../../injector/module'; -import { Routes } from '../../router/interfaces'; +import { ModulesContainer, NestContainer } from '../../injector/index.js'; +import { Module } from '../../injector/module.js'; +import { Routes } from '../../router/interfaces/index.js'; import { RouterModule, ROUTES, targetModulesByContainer, -} from '../../router/router-module'; +} from '../../router/router-module.js'; class TestModuleClass {} diff --git a/packages/core/test/router/router-proxy.spec.ts b/packages/core/test/router/router-proxy.spec.ts index 8b85bcd39f..978adf3435 100644 --- a/packages/core/test/router/router-proxy.spec.ts +++ b/packages/core/test/router/router-proxy.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { HttpException } from '../../../common/exceptions/http.exception'; -import { ExceptionsHandler } from '../../exceptions/exceptions-handler'; -import { ExecutionContextHost } from '../../helpers/execution-context-host'; -import { RouterProxy } from '../../router/router-proxy'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { HttpException } from '../../../common/exceptions/http.exception.js'; +import { ExceptionsHandler } from '../../exceptions/exceptions-handler.js'; +import { ExecutionContextHost } from '../../helpers/execution-context-host.js'; +import { RouterProxy } from '../../router/router-proxy.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('RouterProxy', () => { let routerProxy: RouterProxy; diff --git a/packages/core/test/router/router-response-controller.spec.ts b/packages/core/test/router/router-response-controller.spec.ts index 1898fe6aa9..84fc87ad04 100644 --- a/packages/core/test/router/router-response-controller.spec.ts +++ b/packages/core/test/router/router-response-controller.spec.ts @@ -1,13 +1,13 @@ -import { isNil, isObject } from '@nestjs/common/utils/shared.utils'; +import { isNil, isObject } from '@nestjs/common/utils/shared.utils.js'; import { expect } from 'chai'; import { IncomingMessage, ServerResponse } from 'http'; import { Observable, of, Subject } from 'rxjs'; import * as sinon from 'sinon'; import { PassThrough, Writable } from 'stream'; -import { HttpStatus, RequestMethod } from '../../../common'; -import { RouterResponseController } from '../../router/router-response-controller'; -import { SseStream } from '../../router/sse-stream'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { HttpStatus, RequestMethod } from '../../../common/index.js'; +import { RouterResponseController } from '../../router/router-response-controller.js'; +import { SseStream } from '../../router/sse-stream.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; describe('RouterResponseController', () => { let adapter: NoopHttpAdapter; diff --git a/packages/core/test/router/routes-resolver.spec.ts b/packages/core/test/router/routes-resolver.spec.ts index cbf035255f..791089aba9 100644 --- a/packages/core/test/router/routes-resolver.spec.ts +++ b/packages/core/test/router/routes-resolver.spec.ts @@ -5,19 +5,19 @@ import { Post, VersioningType, } from '@nestjs/common'; -import { MODULE_PATH } from '@nestjs/common/constants'; +import { MODULE_PATH } from '@nestjs/common/constants.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Controller } from '../../../common/decorators/core/controller.decorator'; -import { Get } from '../../../common/decorators/http/request-mapping.decorator'; -import { ApplicationConfig } from '../../application-config'; -import { NestContainer } from '../../injector'; -import { Injector } from '../../injector/injector'; -import { InstanceWrapper } from '../../injector/instance-wrapper'; -import { GraphInspector } from '../../inspector/graph-inspector'; -import { SerializedGraph } from '../../inspector/serialized-graph'; -import { RoutesResolver } from '../../router/routes-resolver'; -import { NoopHttpAdapter } from '../utils/noop-adapter.spec'; +import { Controller } from '../../../common/decorators/core/controller.decorator.js'; +import { Get } from '../../../common/decorators/http/request-mapping.decorator.js'; +import { ApplicationConfig } from '../../application-config.js'; +import { NestContainer } from '../../injector/index.js'; +import { Injector } from '../../injector/injector.js'; +import { InstanceWrapper } from '../../injector/instance-wrapper.js'; +import { GraphInspector } from '../../inspector/graph-inspector.js'; +import { SerializedGraph } from '../../inspector/serialized-graph.js'; +import { RoutesResolver } from '../../router/routes-resolver.js'; +import { NoopHttpAdapter } from '../utils/noop-adapter.spec.js'; import { createError as createFastifyError } from '@fastify/error'; describe('RoutesResolver', () => { diff --git a/packages/core/test/router/sse-stream.spec.ts b/packages/core/test/router/sse-stream.spec.ts index 52666806ef..edd3e9ce80 100644 --- a/packages/core/test/router/sse-stream.spec.ts +++ b/packages/core/test/router/sse-stream.spec.ts @@ -3,7 +3,7 @@ import { EventSource } from 'eventsource'; import { createServer, OutgoingHttpHeaders } from 'http'; import { AddressInfo } from 'net'; import { Writable } from 'stream'; -import { HeaderStream, SseStream } from '../../router/sse-stream'; +import { HeaderStream, SseStream } from '../../router/sse-stream.js'; const noop = () => {}; diff --git a/packages/core/test/router/utils/flat-routes.spec.ts b/packages/core/test/router/utils/flat-routes.spec.ts index 8900afe541..e6d32e18d9 100644 --- a/packages/core/test/router/utils/flat-routes.spec.ts +++ b/packages/core/test/router/utils/flat-routes.spec.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { expect } from 'chai'; -import { flattenRoutePaths } from '../../../router/utils'; +import { flattenRoutePaths } from '../../../router/utils/index.js'; describe('flattenRoutePaths', () => { it('should flatten all route paths', () => { diff --git a/packages/core/test/scanner.spec.ts b/packages/core/test/scanner.spec.ts index f2c2835190..9922fcaf21 100644 --- a/packages/core/test/scanner.spec.ts +++ b/packages/core/test/scanner.spec.ts @@ -1,23 +1,27 @@ import { Catch, Injectable } from '@nestjs/common'; import { expect } from 'chai'; -import * as sinon from 'sinon'; -import { GUARDS_METADATA } from '../../common/constants'; -import { Controller } from '../../common/decorators/core/controller.decorator'; -import { UseGuards } from '../../common/decorators/core/use-guards.decorator'; -import { Module } from '../../common/decorators/modules/module.decorator'; -import { Scope } from '../../common/interfaces'; -import { ApplicationConfig } from '../application-config'; -import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR, APP_PIPE } from '../constants'; -import { InvalidClassModuleException } from '../errors/exceptions/invalid-class-module.exception'; -import { InvalidModuleException } from '../errors/exceptions/invalid-module.exception'; -import { UndefinedModuleException } from '../errors/exceptions/undefined-module.exception'; -import { NestContainer } from '../injector/container'; -import { InstanceWrapper } from '../injector/instance-wrapper'; -import { GraphInspector } from '../inspector/graph-inspector'; -import { ModuleOverride } from '../interfaces/module-override.interface'; -import { MetadataScanner } from '../metadata-scanner'; -import { DependenciesScanner } from '../scanner'; -import Sinon = require('sinon'); +import Sinon, * as sinon from 'sinon'; +import { GUARDS_METADATA } from '../../common/constants.js'; +import { Controller } from '../../common/decorators/core/controller.decorator.js'; +import { UseGuards } from '../../common/decorators/core/use-guards.decorator.js'; +import { Module } from '../../common/decorators/modules/module.decorator.js'; +import { Scope } from '../../common/interfaces/index.js'; +import { ApplicationConfig } from '../application-config.js'; +import { + APP_FILTER, + APP_GUARD, + APP_INTERCEPTOR, + APP_PIPE, +} from '../constants.js'; +import { InvalidClassModuleException } from '../errors/exceptions/invalid-class-module.exception.js'; +import { InvalidModuleException } from '../errors/exceptions/invalid-module.exception.js'; +import { UndefinedModuleException } from '../errors/exceptions/undefined-module.exception.js'; +import { NestContainer } from '../injector/container.js'; +import { InstanceWrapper } from '../injector/instance-wrapper.js'; +import { GraphInspector } from '../inspector/graph-inspector.js'; +import { ModuleOverride } from '../interfaces/module-override.interface.js'; +import { MetadataScanner } from '../metadata-scanner.js'; +import { DependenciesScanner } from '../scanner.js'; describe('DependenciesScanner', () => { class Guard {} diff --git a/packages/core/test/services/reflector.service.spec.ts b/packages/core/test/services/reflector.service.spec.ts index 000c931adf..be228bf74b 100644 --- a/packages/core/test/services/reflector.service.spec.ts +++ b/packages/core/test/services/reflector.service.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { Reflector } from '../../services/reflector.service'; +import { Reflector } from '../../services/reflector.service.js'; const transformDecorator = Reflector.createDecorator({ transform: value => value.length, diff --git a/packages/core/test/utils/noop-adapter.spec.ts b/packages/core/test/utils/noop-adapter.spec.ts index 8cc46b042d..d9e305b3a6 100644 --- a/packages/core/test/utils/noop-adapter.spec.ts +++ b/packages/core/test/utils/noop-adapter.spec.ts @@ -1,6 +1,6 @@ import { RequestMethod, VersioningOptions } from '@nestjs/common'; -import { VersionValue } from '@nestjs/common/interfaces'; -import { AbstractHttpAdapter } from '../../adapters'; +import { VersionValue } from '@nestjs/common/interfaces/index.js'; +import { AbstractHttpAdapter } from '../../adapters/index.js'; export class NoopHttpAdapter extends AbstractHttpAdapter { constructor(instance: any) { diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json index 99c13372dc..928f71bc6d 100644 --- a/packages/core/tsconfig.build.json +++ b/packages/core/tsconfig.build.json @@ -2,15 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/microservices": ["../microservices"], - "@nestjs/microservices/*": ["../microservices/*"], - "@nestjs/websockets": ["../websockets"], - "@nestjs/websockets/*": ["../websockets/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/microservices/client/client-grpc.ts b/packages/microservices/client/client-grpc.ts index 7595a09a47..8c454a85ae 100644 --- a/packages/microservices/client/client-grpc.ts +++ b/packages/microservices/client/client-grpc.ts @@ -1,15 +1,15 @@ -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isFunction, isObject } from '@nestjs/common/utils/shared.utils'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackageSync } from '@nestjs/common/utils/load-package.util.js'; +import { isFunction, isObject } from '@nestjs/common/utils/shared.utils.js'; import { Observable, Subscription } from 'rxjs'; -import { GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants'; -import { InvalidGrpcPackageException } from '../errors/invalid-grpc-package.exception'; -import { InvalidGrpcServiceException } from '../errors/invalid-grpc-service.exception'; -import { InvalidProtoDefinitionException } from '../errors/invalid-proto-definition.exception'; -import { ChannelOptions } from '../external/grpc-options.interface'; -import { getGrpcPackageDefinition } from '../helpers'; -import { ClientGrpc, GrpcOptions } from '../interfaces'; -import { ClientProxy } from './client-proxy'; +import { GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants.js'; +import { InvalidGrpcPackageException } from '../errors/invalid-grpc-package.exception.js'; +import { InvalidGrpcServiceException } from '../errors/invalid-grpc-service.exception.js'; +import { InvalidProtoDefinitionException } from '../errors/invalid-proto-definition.exception.js'; +import { ChannelOptions } from '../external/grpc-options.interface.js'; +import { getGrpcPackageDefinition } from '../helpers/index.js'; +import { ClientGrpc, GrpcOptions } from '../interfaces/index.js'; +import { ClientProxy } from './client-proxy.js'; const GRPC_CANCELLED = 'Cancelled'; @@ -50,18 +50,10 @@ export class ClientGrpcProxy const protoLoader = this.getOptionsProp(options, 'protoLoader') || GRPC_DEFAULT_PROTO_LOADER; - grpcPackage = loadPackage('@grpc/grpc-js', ClientGrpcProxy.name, () => - require('@grpc/grpc-js'), - ); + grpcPackage = loadPackageSync('@grpc/grpc-js', ClientGrpcProxy.name); + + grpcProtoLoaderPackage = loadPackageSync(protoLoader, ClientGrpcProxy.name); - grpcProtoLoaderPackage = loadPackage( - protoLoader, - ClientGrpcProxy.name, - () => - protoLoader === GRPC_DEFAULT_PROTO_LOADER - ? require('@grpc/proto-loader') - : require(protoLoader), - ); this.grpcClients = this.createClients(); } diff --git a/packages/microservices/client/client-kafka.ts b/packages/microservices/client/client-kafka.ts index eaffbca552..027afc6605 100644 --- a/packages/microservices/client/client-kafka.ts +++ b/packages/microservices/client/client-kafka.ts @@ -1,6 +1,6 @@ -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isNil, isUndefined } from '@nestjs/common/utils/shared.utils'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { isNil, isUndefined } from '@nestjs/common/utils/shared.utils.js'; import { throwError as _throw, connectable, @@ -13,12 +13,12 @@ import { KAFKA_DEFAULT_BROKER, KAFKA_DEFAULT_CLIENT, KAFKA_DEFAULT_GROUP, -} from '../constants'; -import { KafkaResponseDeserializer } from '../deserializers/kafka-response.deserializer'; -import { KafkaHeaders } from '../enums'; -import { InvalidKafkaClientTopicException } from '../errors/invalid-kafka-client-topic.exception'; -import { InvalidMessageException } from '../errors/invalid-message.exception'; -import { KafkaStatus } from '../events'; +} from '../constants.js'; +import { KafkaResponseDeserializer } from '../deserializers/kafka-response.deserializer.js'; +import { KafkaHeaders } from '../enums/index.js'; +import { InvalidKafkaClientTopicException } from '../errors/invalid-kafka-client-topic.exception.js'; +import { InvalidMessageException } from '../errors/invalid-message.exception.js'; +import { KafkaStatus } from '../events/index.js'; import { BrokersFunction, Consumer, @@ -30,12 +30,12 @@ import { KafkaMessage, Producer, TopicPartitionOffsetAndMetadata, -} from '../external/kafka.interface'; +} from '../external/kafka.interface.js'; import { KafkaLogger, KafkaParser, KafkaReplyPartitionAssigner, -} from '../helpers'; +} from '../helpers/index.js'; import { ClientKafkaProxy, KafkaOptions, @@ -43,12 +43,12 @@ import { OutgoingEvent, ReadPacket, WritePacket, -} from '../interfaces'; +} from '../interfaces/index.js'; import { KafkaRequest, KafkaRequestSerializer, -} from '../serializers/kafka-request.serializer'; -import { ClientProxy } from './client-proxy'; +} from '../serializers/kafka-request.serializer.js'; +import { ClientProxy } from './client-proxy.js'; let kafkaPackage: any = {}; @@ -118,8 +118,10 @@ export class ClientKafka (clientOptions.clientId || KAFKA_DEFAULT_CLIENT) + postfixId; this.groupId = (consumerOptions.groupId || KAFKA_DEFAULT_GROUP) + postfixId; - kafkaPackage = loadPackage('kafkajs', ClientKafka.name, () => - require('kafkajs'), + kafkaPackage = loadPackage( + 'kafkajs', + ClientKafka.name, + () => import('kafkajs'), ); this.parser = new KafkaParser((options && options.parser) || undefined); @@ -149,7 +151,7 @@ export class ClientKafka /* eslint-disable-next-line no-async-promise-executor */ this.initialized = new Promise(async (resolve, reject) => { try { - this.client = this.createClient(); + this.client = await this.createClient(); if (!this.producerOnlyMode) { const partitionAssigners = [ ( @@ -214,7 +216,8 @@ export class ClientKafka ); } - public createClient(): T { + public async createClient(): Promise { + kafkaPackage = await kafkaPackage; const kafkaConfig: KafkaConfig = Object.assign( { logCreator: KafkaLogger.bind(null, this.logger) }, this.options.client, diff --git a/packages/microservices/client/client-mqtt.ts b/packages/microservices/client/client-mqtt.ts index a341544f01..d033af0ffd 100644 --- a/packages/microservices/client/client-mqtt.ts +++ b/packages/microservices/client/client-mqtt.ts @@ -1,17 +1,21 @@ -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isObject } from '@nestjs/common/utils/shared.utils'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackageSync } from '@nestjs/common/utils/load-package.util.js'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; import { EmptyError, fromEvent, lastValueFrom, merge, Observable } from 'rxjs'; import { first, map, share, tap } from 'rxjs/operators'; -import { ECONNREFUSED, ENOTFOUND, MQTT_DEFAULT_URL } from '../constants'; -import { MqttEvents, MqttEventsMap, MqttStatus } from '../events/mqtt.events'; -import { MqttOptions, ReadPacket, WritePacket } from '../interfaces'; +import { ECONNREFUSED, ENOTFOUND, MQTT_DEFAULT_URL } from '../constants.js'; +import { + MqttEvents, + MqttEventsMap, + MqttStatus, +} from '../events/mqtt.events.js'; +import { MqttOptions, ReadPacket, WritePacket } from '../interfaces/index.js'; import { MqttRecord, MqttRecordOptions, -} from '../record-builders/mqtt.record-builder'; -import { MqttRecordSerializer } from '../serializers/mqtt-record.serializer'; -import { ClientProxy } from './client-proxy'; +} from '../record-builders/mqtt.record-builder.js'; +import { MqttRecordSerializer } from '../serializers/mqtt-record.serializer.js'; +import { ClientProxy } from './client-proxy.js'; let mqttPackage: any = {}; @@ -43,7 +47,7 @@ export class ClientMqtt extends ClientProxy { super(); this.url = this.getOptionsProp(this.options, 'url') ?? MQTT_DEFAULT_URL; - mqttPackage = loadPackage('mqtt', ClientMqtt.name, () => require('mqtt')); + mqttPackage = loadPackageSync('mqtt', ClientMqtt.name); this.initializeSerializer(options); this.initializeDeserializer(options); @@ -66,7 +70,7 @@ export class ClientMqtt extends ClientProxy { this.pendingEventListeners = []; } - public connect(): Promise { + public async connect(): Promise { if (this.mqttClient) { return this.connectionPromise!; } diff --git a/packages/microservices/client/client-nats.ts b/packages/microservices/client/client-nats.ts index f64837d44b..6dc33d71df 100644 --- a/packages/microservices/client/client-nats.ts +++ b/packages/microservices/client/client-nats.ts @@ -1,15 +1,24 @@ -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { EventEmitter } from 'stream'; -import { NATS_DEFAULT_URL } from '../constants'; -import { NatsResponseJSONDeserializer } from '../deserializers/nats-response-json.deserializer'; -import { EmptyResponseException } from '../errors/empty-response.exception'; -import { NatsEvents, NatsEventsMap, NatsStatus } from '../events/nats.events'; -import { NatsOptions, PacketId, ReadPacket, WritePacket } from '../interfaces'; -import { NatsRecord } from '../record-builders'; -import { NatsRecordSerializer } from '../serializers/nats-record.serializer'; -import { ClientProxy } from './client-proxy'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { EventEmitter } from 'events'; +import { NATS_DEFAULT_URL } from '../constants.js'; +import { NatsResponseJSONDeserializer } from '../deserializers/nats-response-json.deserializer.js'; +import { EmptyResponseException } from '../errors/empty-response.exception.js'; +import { + NatsEvents, + NatsEventsMap, + NatsStatus, +} from '../events/nats.events.js'; +import { + NatsOptions, + PacketId, + ReadPacket, + WritePacket, +} from '../interfaces/index.js'; +import { NatsRecord } from '../record-builders/index.js'; +import { NatsRecordSerializer } from '../serializers/nats-record.serializer.js'; +import { ClientProxy } from './client-proxy.js'; let natsPackage = {} as any; @@ -37,7 +46,7 @@ export class ClientNats extends ClientProxy { constructor(protected readonly options: Required['options']) { super(); - natsPackage = loadPackage('nats', ClientNats.name, () => require('nats')); + natsPackage = loadPackage('nats', ClientNats.name, () => import('nats')); this.initializeSerializer(options); this.initializeDeserializer(options); @@ -66,7 +75,23 @@ export class ClientNats extends ClientProxy { return this.natsClient; } - public createClient(): Promise { + public async createClient(): Promise { + natsPackage = await natsPackage; + + // Eagerly initialize serializer/deserializer so they can be used synchronously + if ( + this.serializer && + typeof (this.serializer as any).init === 'function' + ) { + await (this.serializer as any).init(); + } + if ( + this.deserializer && + typeof (this.deserializer as any).init === 'function' + ) { + await (this.deserializer as any).init(); + } + const options = this.options || ({} as NatsOptions); return natsPackage.connect({ servers: NATS_DEFAULT_URL, @@ -208,7 +233,9 @@ export class ClientNats extends ClientProxy { try { const packet = this.assignPacketId(partialPacket); const channel = this.normalizePattern(partialPacket.pattern); - const serializedPacket: NatsRecord = this.serializer.serialize(packet); + const serializedPacket: NatsRecord = this.serializer.serialize( + packet, + ) as any; const inbox = natsPackage.createInbox(this.options.inboxPrefix); const subscriptionHandler = this.createSubscriptionHandler( @@ -233,9 +260,10 @@ export class ClientNats extends ClientProxy { } } - protected dispatchEvent(packet: ReadPacket): Promise { + protected async dispatchEvent(packet: ReadPacket): Promise { const pattern = this.normalizePattern(packet.pattern); - const serializedPacket: NatsRecord = this.serializer.serialize(packet); + const serializedPacket: NatsRecord = + await this.serializer.serialize(packet); const headers = this.mergeHeaders(serializedPacket.headers); return new Promise((resolve, reject) => { diff --git a/packages/microservices/client/client-proxy-factory.ts b/packages/microservices/client/client-proxy-factory.ts index ab7abccb03..6fca853135 100644 --- a/packages/microservices/client/client-proxy-factory.ts +++ b/packages/microservices/client/client-proxy-factory.ts @@ -1,10 +1,10 @@ -import { Transport } from '../enums/transport.enum'; -import { ClientKafkaProxy } from '../interfaces'; +import { Transport } from '../enums/transport.enum.js'; +import { ClientKafkaProxy } from '../interfaces/index.js'; import { ClientOptions, CustomClientOptions, TcpClientOptions, -} from '../interfaces/client-metadata.interface'; +} from '../interfaces/client-metadata.interface.js'; import { GrpcOptions, KafkaOptions, @@ -12,15 +12,15 @@ import { NatsOptions, RedisOptions, RmqOptions, -} from '../interfaces/microservice-configuration.interface'; -import { ClientGrpcProxy } from './client-grpc'; -import { ClientKafka } from './client-kafka'; -import { ClientMqtt } from './client-mqtt'; -import { ClientNats } from './client-nats'; -import { ClientProxy } from './client-proxy'; -import { ClientRedis } from './client-redis'; -import { ClientRMQ } from './client-rmq'; -import { ClientTCP } from './client-tcp'; +} from '../interfaces/microservice-configuration.interface.js'; +import { ClientGrpcProxy } from './client-grpc.js'; +import { ClientKafka } from './client-kafka.js'; +import { ClientMqtt } from './client-mqtt.js'; +import { ClientNats } from './client-nats.js'; +import { ClientProxy } from './client-proxy.js'; +import { ClientRedis } from './client-redis.js'; +import { ClientRMQ } from './client-rmq.js'; +import { ClientTCP } from './client-tcp.js'; export interface IClientProxyFactory { create(clientOptions: ClientOptions): ClientProxy; diff --git a/packages/microservices/client/client-proxy.ts b/packages/microservices/client/client-proxy.ts index e2d12463e5..070d7db215 100644 --- a/packages/microservices/client/client-proxy.ts +++ b/packages/microservices/client/client-proxy.ts @@ -1,5 +1,5 @@ -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; -import { isNil } from '@nestjs/common/utils/shared.utils'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; +import { isNil } from '@nestjs/common/utils/shared.utils.js'; import { throwError as _throw, connectable, @@ -12,8 +12,8 @@ import { Subject, } from 'rxjs'; import { distinctUntilChanged, map, mergeMap, take } from 'rxjs/operators'; -import { IncomingResponseDeserializer } from '../deserializers/incoming-response.deserializer'; -import { InvalidMessageException } from '../errors/invalid-message.exception'; +import { IncomingResponseDeserializer } from '../deserializers/incoming-response.deserializer.js'; +import { InvalidMessageException } from '../errors/invalid-message.exception.js'; import { ClientOptions, KafkaOptions, @@ -26,11 +26,11 @@ import { RmqOptions, TcpClientOptions, WritePacket, -} from '../interfaces'; -import { ProducerDeserializer } from '../interfaces/deserializer.interface'; -import { ProducerSerializer } from '../interfaces/serializer.interface'; -import { IdentitySerializer } from '../serializers/identity.serializer'; -import { transformPatternToRoute } from '../utils'; +} from '../interfaces/index.js'; +import { ProducerDeserializer } from '../interfaces/deserializer.interface.js'; +import { ProducerSerializer } from '../interfaces/serializer.interface.js'; +import { IdentitySerializer } from '../serializers/identity.serializer.js'; +import { transformPatternToRoute } from '../utils/index.js'; /** * @publicApi diff --git a/packages/microservices/client/client-redis.ts b/packages/microservices/client/client-redis.ts index 9c380400fa..2df23f5940 100644 --- a/packages/microservices/client/client-redis.ts +++ b/packages/microservices/client/client-redis.ts @@ -1,13 +1,13 @@ -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { REDIS_DEFAULT_HOST, REDIS_DEFAULT_PORT } from '../constants'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackageSync } from '@nestjs/common/utils/load-package.util.js'; +import { REDIS_DEFAULT_HOST, REDIS_DEFAULT_PORT } from '../constants.js'; import { RedisEvents, RedisEventsMap, RedisStatus, -} from '../events/redis.events'; -import { ReadPacket, RedisOptions, WritePacket } from '../interfaces'; -import { ClientProxy } from './client-proxy'; +} from '../events/redis.events.js'; +import { ReadPacket, RedisOptions, WritePacket } from '../interfaces/index.js'; +import { ClientProxy } from './client-proxy.js'; // To enable type safety for Redis. This cant be uncommented by default // because it would require the user to install the ioredis package even if they dont use Redis @@ -37,9 +37,7 @@ export class ClientRedis extends ClientProxy { constructor(protected readonly options: Required['options']) { super(); - redisPackage = loadPackage('ioredis', ClientRedis.name, () => - require('ioredis'), - ); + redisPackage = loadPackageSync('ioredis', ClientRedis.name); this.initializeSerializer(options); this.initializeDeserializer(options); @@ -89,7 +87,8 @@ export class ClientRedis extends ClientProxy { } public createClient(): Redis { - return new redisPackage({ + const RedisClient = redisPackage.default || redisPackage; + return new RedisClient({ host: REDIS_DEFAULT_HOST, port: REDIS_DEFAULT_PORT, ...this.getClientOptions(), diff --git a/packages/microservices/client/client-rmq.ts b/packages/microservices/client/client-rmq.ts index b62602802c..b1ce0cb525 100644 --- a/packages/microservices/client/client-rmq.ts +++ b/packages/microservices/client/client-rmq.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-redundant-type-constituents */ -import { Logger } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; -import { isFunction, isString } from '@nestjs/common/utils/shared.utils'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { loadPackageSync } from '@nestjs/common/utils/load-package.util.js'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; +import { isFunction, isString } from '@nestjs/common/utils/shared.utils.js'; import { EventEmitter } from 'events'; import { EmptyError, @@ -23,12 +23,12 @@ import { RQM_DEFAULT_QUEUE, RQM_DEFAULT_QUEUE_OPTIONS, RQM_DEFAULT_URL, -} from '../constants'; -import { RmqEvents, RmqEventsMap, RmqStatus } from '../events/rmq.events'; -import { ReadPacket, RmqOptions, WritePacket } from '../interfaces'; -import { RmqRecord } from '../record-builders'; -import { RmqRecordSerializer } from '../serializers/rmq-record.serializer'; -import { ClientProxy } from './client-proxy'; +} from '../constants.js'; +import { RmqEvents, RmqEventsMap, RmqStatus } from '../events/rmq.events.js'; +import { ReadPacket, RmqOptions, WritePacket } from '../interfaces/index.js'; +import { RmqRecord } from '../record-builders/index.js'; +import { RmqRecordSerializer } from '../serializers/rmq-record.serializer.js'; +import { ClientProxy } from './client-proxy.js'; // To enable type safety for RMQ. This cant be uncommented by default // because it would require the user to install the amqplib package even if they dont use RabbitMQ @@ -87,10 +87,8 @@ export class ClientRMQ extends ClientProxy { this.queueOptions.noAssert ?? RQM_DEFAULT_NO_ASSERT; - loadPackage('amqplib', ClientRMQ.name, () => require('amqplib')); - rmqPackage = loadPackage('amqp-connection-manager', ClientRMQ.name, () => - require('amqp-connection-manager'), - ); + loadPackageSync('amqplib', ClientRMQ.name); + rmqPackage = loadPackageSync('amqp-connection-manager', ClientRMQ.name); this.initializeSerializer(options); this.initializeDeserializer(options); @@ -104,7 +102,7 @@ export class ClientRMQ extends ClientProxy { this.pendingEventListeners = []; } - public connect(): Promise { + public async connect(): Promise { if (this.client) { return this.connectionPromise; } diff --git a/packages/microservices/client/client-tcp.ts b/packages/microservices/client/client-tcp.ts index 098bc0d6a9..0122f27757 100644 --- a/packages/microservices/client/client-tcp.ts +++ b/packages/microservices/client/client-tcp.ts @@ -3,12 +3,16 @@ import * as net from 'net'; import { EmptyError, lastValueFrom } from 'rxjs'; import { share, tap } from 'rxjs/operators'; import { ConnectionOptions, connect as tlsConnect, TLSSocket } from 'tls'; -import { ECONNREFUSED, TCP_DEFAULT_HOST, TCP_DEFAULT_PORT } from '../constants'; -import { TcpEvents, TcpEventsMap, TcpStatus } from '../events/tcp.events'; -import { JsonSocket, TcpSocket } from '../helpers'; -import { PacketId, ReadPacket, WritePacket } from '../interfaces'; -import { TcpClientOptions } from '../interfaces/client-metadata.interface'; -import { ClientProxy } from './client-proxy'; +import { + ECONNREFUSED, + TCP_DEFAULT_HOST, + TCP_DEFAULT_PORT, +} from '../constants.js'; +import { TcpEvents, TcpEventsMap, TcpStatus } from '../events/tcp.events.js'; +import { JsonSocket, TcpSocket } from '../helpers/index.js'; +import { PacketId, ReadPacket, WritePacket } from '../interfaces/index.js'; +import { TcpClientOptions } from '../interfaces/client-metadata.interface.js'; +import { ClientProxy } from './client-proxy.js'; /** * @publicApi diff --git a/packages/microservices/client/index.ts b/packages/microservices/client/index.ts index c75c4849d0..1c07e000ef 100644 --- a/packages/microservices/client/index.ts +++ b/packages/microservices/client/index.ts @@ -1,9 +1,9 @@ -export * from './client-grpc'; -export * from './client-kafka'; -export * from './client-mqtt'; -export * from './client-nats'; -export * from './client-proxy'; -export { ClientProxyFactory } from './client-proxy-factory'; -export * from './client-redis'; -export * from './client-rmq'; -export * from './client-tcp'; +export * from './client-grpc.js'; +export * from './client-kafka.js'; +export * from './client-mqtt.js'; +export * from './client-nats.js'; +export * from './client-proxy.js'; +export { ClientProxyFactory } from './client-proxy-factory.js'; +export * from './client-redis.js'; +export * from './client-rmq.js'; +export * from './client-tcp.js'; diff --git a/packages/microservices/constants.ts b/packages/microservices/constants.ts index dc4ec1cad4..7385113f3f 100644 --- a/packages/microservices/constants.ts +++ b/packages/microservices/constants.ts @@ -1,4 +1,4 @@ -import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants'; +import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants.js'; export const TCP_DEFAULT_PORT = 3000; export const TCP_DEFAULT_HOST = 'localhost'; diff --git a/packages/microservices/container.ts b/packages/microservices/container.ts index 87812833d9..f0b9e44214 100644 --- a/packages/microservices/container.ts +++ b/packages/microservices/container.ts @@ -1,4 +1,4 @@ -import { ClientProxy } from './client/client-proxy'; +import { ClientProxy } from './client/client-proxy.js'; export class ClientsContainer { private clients: ClientProxy[] = []; diff --git a/packages/microservices/context/exception-filters-context.ts b/packages/microservices/context/exception-filters-context.ts index 14d42da915..ab7f637cc2 100644 --- a/packages/microservices/context/exception-filters-context.ts +++ b/packages/microservices/context/exception-filters-context.ts @@ -1,14 +1,14 @@ -import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants'; -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { BaseExceptionFilterContext } from '@nestjs/core/exceptions/base-exception-filter-context'; -import { STATIC_CONTEXT } from '@nestjs/core/injector/constants'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; +import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants.js'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { BaseExceptionFilterContext } from '@nestjs/core/exceptions/base-exception-filter-context.js'; +import { STATIC_CONTEXT } from '@nestjs/core/injector/constants.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper.js'; import { iterate } from 'iterare'; import { Observable } from 'rxjs'; -import { RpcExceptionsHandler } from '../exceptions/rpc-exceptions-handler'; +import { RpcExceptionsHandler } from '../exceptions/rpc-exceptions-handler.js'; /** * @publicApi diff --git a/packages/microservices/context/request-context-host.ts b/packages/microservices/context/request-context-host.ts index 890106fd9b..26537f8f90 100644 --- a/packages/microservices/context/request-context-host.ts +++ b/packages/microservices/context/request-context-host.ts @@ -1,5 +1,5 @@ -import { BaseRpcContext } from '../ctx-host/base-rpc.context'; -import { RequestContext } from '../interfaces'; +import { BaseRpcContext } from '../ctx-host/base-rpc.context.js'; +import { RequestContext } from '../interfaces/index.js'; /** * @publicApi diff --git a/packages/microservices/context/rpc-context-creator.ts b/packages/microservices/context/rpc-context-creator.ts index a7ee74e025..a62a9b3ed0 100644 --- a/packages/microservices/context/rpc-context-creator.ts +++ b/packages/microservices/context/rpc-context-creator.ts @@ -1,35 +1,35 @@ import { CUSTOM_ROUTE_ARGS_METADATA, PARAMTYPES_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { ContextType, Controller, PipeTransform, -} from '@nestjs/common/interfaces'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { FORBIDDEN_MESSAGE } from '@nestjs/core/guards/constants'; -import { GuardsConsumer } from '@nestjs/core/guards/guards-consumer'; -import { GuardsContextCreator } from '@nestjs/core/guards/guards-context-creator'; +} from '@nestjs/common/interfaces/index.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { FORBIDDEN_MESSAGE } from '@nestjs/core/guards/constants.js'; +import { GuardsConsumer } from '@nestjs/core/guards/guards-consumer.js'; +import { GuardsContextCreator } from '@nestjs/core/guards/guards-context-creator.js'; import { ContextUtils, ParamProperties, -} from '@nestjs/core/helpers/context-utils'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; -import { HandlerMetadataStorage } from '@nestjs/core/helpers/handler-metadata-storage'; -import { ParamsMetadata } from '@nestjs/core/helpers/interfaces'; -import { STATIC_CONTEXT } from '@nestjs/core/injector/constants'; -import { InterceptorsConsumer } from '@nestjs/core/interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '@nestjs/core/interceptors/interceptors-context-creator'; -import { PipesConsumer } from '@nestjs/core/pipes/pipes-consumer'; -import { PipesContextCreator } from '@nestjs/core/pipes/pipes-context-creator'; +} from '@nestjs/core/helpers/context-utils.js'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; +import { HandlerMetadataStorage } from '@nestjs/core/helpers/handler-metadata-storage.js'; +import { ParamsMetadata } from '@nestjs/core/helpers/interfaces/index.js'; +import { STATIC_CONTEXT } from '@nestjs/core/injector/constants.js'; +import { InterceptorsConsumer } from '@nestjs/core/interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '@nestjs/core/interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '@nestjs/core/pipes/pipes-consumer.js'; +import { PipesContextCreator } from '@nestjs/core/pipes/pipes-context-creator.js'; import { Observable } from 'rxjs'; -import { PARAM_ARGS_METADATA } from '../constants'; -import { RpcException } from '../exceptions'; -import { RpcParamsFactory } from '../factories/rpc-params-factory'; -import { ExceptionFiltersContext } from './exception-filters-context'; -import { DEFAULT_CALLBACK_METADATA } from './rpc-metadata-constants'; -import { RpcProxy } from './rpc-proxy'; +import { PARAM_ARGS_METADATA } from '../constants.js'; +import { RpcException } from '../exceptions/index.js'; +import { RpcParamsFactory } from '../factories/rpc-params-factory.js'; +import { ExceptionFiltersContext } from './exception-filters-context.js'; +import { DEFAULT_CALLBACK_METADATA } from './rpc-metadata-constants.js'; +import { RpcProxy } from './rpc-proxy.js'; type RpcParamProperties = ParamProperties & { metatype?: any }; export interface RpcHandlerMetadata { diff --git a/packages/microservices/context/rpc-metadata-constants.ts b/packages/microservices/context/rpc-metadata-constants.ts index 9c6d0ef6e8..bcf423f64e 100644 --- a/packages/microservices/context/rpc-metadata-constants.ts +++ b/packages/microservices/context/rpc-metadata-constants.ts @@ -1,4 +1,4 @@ -import { RpcParamtype } from '../enums/rpc-paramtype.enum'; +import { RpcParamtype } from '../enums/rpc-paramtype.enum.js'; export const DEFAULT_CALLBACK_METADATA = { [`${RpcParamtype.PAYLOAD}:0`]: { index: 0, data: undefined, pipes: [] }, diff --git a/packages/microservices/context/rpc-proxy.ts b/packages/microservices/context/rpc-proxy.ts index 0e90b8e83f..d1c5f06091 100644 --- a/packages/microservices/context/rpc-proxy.ts +++ b/packages/microservices/context/rpc-proxy.ts @@ -1,7 +1,7 @@ -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { isObservable, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { RpcExceptionsHandler } from '../exceptions/rpc-exceptions-handler'; +import { RpcExceptionsHandler } from '../exceptions/rpc-exceptions-handler.js'; export class RpcProxy { public create( diff --git a/packages/microservices/ctx-host/index.ts b/packages/microservices/ctx-host/index.ts index 9d871dee24..262f993954 100644 --- a/packages/microservices/ctx-host/index.ts +++ b/packages/microservices/ctx-host/index.ts @@ -1,7 +1,7 @@ -export * from './kafka.context'; -export * from './mqtt.context'; -export * from './nats.context'; -export * from './redis.context'; -export * from './rmq.context'; -export * from './tcp.context'; -export * from './base-rpc.context'; +export * from './kafka.context.js'; +export * from './mqtt.context.js'; +export * from './nats.context.js'; +export * from './redis.context.js'; +export * from './rmq.context.js'; +export * from './tcp.context.js'; +export * from './base-rpc.context.js'; diff --git a/packages/microservices/ctx-host/kafka.context.ts b/packages/microservices/ctx-host/kafka.context.ts index 5361ae53de..0a00974763 100644 --- a/packages/microservices/ctx-host/kafka.context.ts +++ b/packages/microservices/ctx-host/kafka.context.ts @@ -1,5 +1,9 @@ -import { Consumer, KafkaMessage, Producer } from '../external/kafka.interface'; -import { BaseRpcContext } from './base-rpc.context'; +import { + Consumer, + KafkaMessage, + Producer, +} from '../external/kafka.interface.js'; +import { BaseRpcContext } from './base-rpc.context.js'; type KafkaContextArgs = [ message: KafkaMessage, diff --git a/packages/microservices/ctx-host/mqtt.context.ts b/packages/microservices/ctx-host/mqtt.context.ts index e9919b11ca..f091421114 100644 --- a/packages/microservices/ctx-host/mqtt.context.ts +++ b/packages/microservices/ctx-host/mqtt.context.ts @@ -1,4 +1,4 @@ -import { BaseRpcContext } from './base-rpc.context'; +import { BaseRpcContext } from './base-rpc.context.js'; type MqttContextArgs = [string, Record]; diff --git a/packages/microservices/ctx-host/nats.context.ts b/packages/microservices/ctx-host/nats.context.ts index dc3fe92d86..8ddaa0853f 100644 --- a/packages/microservices/ctx-host/nats.context.ts +++ b/packages/microservices/ctx-host/nats.context.ts @@ -1,4 +1,4 @@ -import { BaseRpcContext } from './base-rpc.context'; +import { BaseRpcContext } from './base-rpc.context.js'; type NatsContextArgs = [string, any]; diff --git a/packages/microservices/ctx-host/redis.context.ts b/packages/microservices/ctx-host/redis.context.ts index ad5fa7e3f5..266b7157bd 100644 --- a/packages/microservices/ctx-host/redis.context.ts +++ b/packages/microservices/ctx-host/redis.context.ts @@ -1,4 +1,4 @@ -import { BaseRpcContext } from './base-rpc.context'; +import { BaseRpcContext } from './base-rpc.context.js'; type RedisContextArgs = [string]; diff --git a/packages/microservices/ctx-host/rmq.context.ts b/packages/microservices/ctx-host/rmq.context.ts index da791a64fb..a5c00788a6 100644 --- a/packages/microservices/ctx-host/rmq.context.ts +++ b/packages/microservices/ctx-host/rmq.context.ts @@ -1,4 +1,4 @@ -import { BaseRpcContext } from './base-rpc.context'; +import { BaseRpcContext } from './base-rpc.context.js'; type RmqContextArgs = [Record, any, string]; diff --git a/packages/microservices/ctx-host/tcp.context.ts b/packages/microservices/ctx-host/tcp.context.ts index 2b74dc8991..771b69a879 100644 --- a/packages/microservices/ctx-host/tcp.context.ts +++ b/packages/microservices/ctx-host/tcp.context.ts @@ -1,5 +1,5 @@ -import { TcpSocket } from '../helpers'; -import { BaseRpcContext } from './base-rpc.context'; +import { TcpSocket } from '../helpers/index.js'; +import { BaseRpcContext } from './base-rpc.context.js'; type TcpContextArgs = [TcpSocket, string]; diff --git a/packages/microservices/decorators/client.decorator.ts b/packages/microservices/decorators/client.decorator.ts index 48848b6a4d..bd9a21d3dd 100644 --- a/packages/microservices/decorators/client.decorator.ts +++ b/packages/microservices/decorators/client.decorator.ts @@ -1,5 +1,8 @@ -import { CLIENT_CONFIGURATION_METADATA, CLIENT_METADATA } from '../constants'; -import { ClientOptions } from '../interfaces/client-metadata.interface'; +import { + CLIENT_CONFIGURATION_METADATA, + CLIENT_METADATA, +} from '../constants.js'; +import { ClientOptions } from '../interfaces/client-metadata.interface.js'; /** * Attaches the `ClientProxy` instance to the given property diff --git a/packages/microservices/decorators/ctx.decorator.ts b/packages/microservices/decorators/ctx.decorator.ts index 6e1619c618..0ef681c166 100644 --- a/packages/microservices/decorators/ctx.decorator.ts +++ b/packages/microservices/decorators/ctx.decorator.ts @@ -1,5 +1,5 @@ -import { RpcParamtype } from '../enums/rpc-paramtype.enum'; -import { createRpcParamDecorator } from '../utils/param.utils'; +import { RpcParamtype } from '../enums/rpc-paramtype.enum.js'; +import { createRpcParamDecorator } from '../utils/param.utils.js'; export const Ctx: () => ParameterDecorator = createRpcParamDecorator( RpcParamtype.CONTEXT, diff --git a/packages/microservices/decorators/event-pattern.decorator.ts b/packages/microservices/decorators/event-pattern.decorator.ts index f4973d741b..28245d840d 100644 --- a/packages/microservices/decorators/event-pattern.decorator.ts +++ b/packages/microservices/decorators/event-pattern.decorator.ts @@ -3,15 +3,15 @@ import { isNumber, isObject, isSymbol, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { PATTERN_EXTRAS_METADATA, PATTERN_HANDLER_METADATA, PATTERN_METADATA, TRANSPORT_METADATA, -} from '../constants'; -import { Transport } from '../enums'; -import { PatternHandler } from '../enums/pattern-handler.enum'; +} from '../constants.js'; +import { Transport } from '../enums/index.js'; +import { PatternHandler } from '../enums/pattern-handler.enum.js'; /** * Subscribes to incoming events which fulfils chosen pattern. diff --git a/packages/microservices/decorators/index.ts b/packages/microservices/decorators/index.ts index 0ef1133604..3624abc877 100644 --- a/packages/microservices/decorators/index.ts +++ b/packages/microservices/decorators/index.ts @@ -1,6 +1,6 @@ -export * from './client.decorator'; -export * from './ctx.decorator'; -export * from './event-pattern.decorator'; -export * from './grpc-service.decorator'; -export * from './message-pattern.decorator'; -export * from './payload.decorator'; +export * from './client.decorator.js'; +export * from './ctx.decorator.js'; +export * from './event-pattern.decorator.js'; +export * from './grpc-service.decorator.js'; +export * from './message-pattern.decorator.js'; +export * from './payload.decorator.js'; diff --git a/packages/microservices/decorators/message-pattern.decorator.ts b/packages/microservices/decorators/message-pattern.decorator.ts index 99c4f3c609..c6f6928e08 100644 --- a/packages/microservices/decorators/message-pattern.decorator.ts +++ b/packages/microservices/decorators/message-pattern.decorator.ts @@ -3,21 +3,21 @@ import { isNumber, isObject, isSymbol, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { PATTERN_EXTRAS_METADATA, PATTERN_HANDLER_METADATA, PATTERN_METADATA, TRANSPORT_METADATA, -} from '../constants'; -import { Transport } from '../enums'; -import { PatternHandler } from '../enums/pattern-handler.enum'; +} from '../constants.js'; +import { Transport } from '../enums/index.js'; +import { PatternHandler } from '../enums/pattern-handler.enum.js'; import { InvalidGrpcDecoratorException, RpcDecoratorMetadata, -} from '../errors/invalid-grpc-message-decorator.exception'; -import { PatternMetadata } from '../interfaces/pattern-metadata.interface'; +} from '../errors/invalid-grpc-message-decorator.exception.js'; +import { PatternMetadata } from '../interfaces/pattern-metadata.interface.js'; export enum GrpcMethodStreamingType { NO_STREAMING = 'no_stream', diff --git a/packages/microservices/decorators/payload.decorator.ts b/packages/microservices/decorators/payload.decorator.ts index 4eb2de3da8..9f320c27e7 100644 --- a/packages/microservices/decorators/payload.decorator.ts +++ b/packages/microservices/decorators/payload.decorator.ts @@ -1,6 +1,6 @@ import { PipeTransform, Type } from '@nestjs/common'; -import { RpcParamtype } from '../enums/rpc-paramtype.enum'; -import { createPipesRpcParamDecorator } from '../utils/param.utils'; +import { RpcParamtype } from '../enums/rpc-paramtype.enum.js'; +import { createPipesRpcParamDecorator } from '../utils/param.utils.js'; /** * Microservice message pattern payload parameter decorator. diff --git a/packages/microservices/deserializers/identity.deserializer.ts b/packages/microservices/deserializers/identity.deserializer.ts index 7a6d1e0d41..6743fdb2dc 100644 --- a/packages/microservices/deserializers/identity.deserializer.ts +++ b/packages/microservices/deserializers/identity.deserializer.ts @@ -1,4 +1,4 @@ -import { Deserializer } from '../interfaces/deserializer.interface'; +import { Deserializer } from '../interfaces/deserializer.interface.js'; /** * @publicApi diff --git a/packages/microservices/deserializers/incoming-request.deserializer.ts b/packages/microservices/deserializers/incoming-request.deserializer.ts index 537e9b7152..25c2fa8068 100644 --- a/packages/microservices/deserializers/incoming-request.deserializer.ts +++ b/packages/microservices/deserializers/incoming-request.deserializer.ts @@ -1,9 +1,9 @@ -import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; import { ConsumerDeserializer, IncomingEvent, IncomingRequest, -} from '../interfaces'; +} from '../interfaces/index.js'; /** * @publicApi @@ -12,7 +12,10 @@ export class IncomingRequestDeserializer implements ConsumerDeserializer { deserialize( value: any, options?: Record, - ): IncomingRequest | IncomingEvent { + ): + | IncomingRequest + | IncomingEvent + | Promise { return this.isExternal(value) ? this.mapToSchema(value, options) : value; } diff --git a/packages/microservices/deserializers/incoming-response.deserializer.ts b/packages/microservices/deserializers/incoming-response.deserializer.ts index 55ecc46846..d01d3d3aba 100644 --- a/packages/microservices/deserializers/incoming-response.deserializer.ts +++ b/packages/microservices/deserializers/incoming-response.deserializer.ts @@ -1,11 +1,14 @@ -import { isUndefined } from '@nestjs/common/utils/shared.utils'; -import { IncomingResponse, ProducerDeserializer } from '../interfaces'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { IncomingResponse, ProducerDeserializer } from '../interfaces/index.js'; /** * @publicApi */ export class IncomingResponseDeserializer implements ProducerDeserializer { - deserialize(value: any, options?: Record): IncomingResponse { + deserialize( + value: any, + options?: Record, + ): IncomingResponse | Promise { return this.isExternal(value) ? this.mapToSchema(value) : value; } diff --git a/packages/microservices/deserializers/index.ts b/packages/microservices/deserializers/index.ts index 21fdbeb264..2356b64f72 100644 --- a/packages/microservices/deserializers/index.ts +++ b/packages/microservices/deserializers/index.ts @@ -1,7 +1,7 @@ -export * from './identity.deserializer'; -export * from './incoming-request.deserializer'; -export * from './incoming-response.deserializer'; -export * from './kafka-request.deserializer'; -export * from './kafka-response.deserializer'; -export * from './nats-request-json.deserializer'; -export * from './nats-response-json.deserializer'; +export * from './identity.deserializer.js'; +export * from './incoming-request.deserializer.js'; +export * from './incoming-response.deserializer.js'; +export * from './kafka-request.deserializer.js'; +export * from './kafka-response.deserializer.js'; +export * from './nats-request-json.deserializer.js'; +export * from './nats-response-json.deserializer.js'; diff --git a/packages/microservices/deserializers/kafka-request.deserializer.ts b/packages/microservices/deserializers/kafka-request.deserializer.ts index 359321728f..e0065deab1 100644 --- a/packages/microservices/deserializers/kafka-request.deserializer.ts +++ b/packages/microservices/deserializers/kafka-request.deserializer.ts @@ -1,6 +1,6 @@ -import { IncomingEvent, IncomingRequest } from '../interfaces'; -import { KafkaRequest } from '../serializers/kafka-request.serializer'; -import { IncomingRequestDeserializer } from './incoming-request.deserializer'; +import { IncomingEvent, IncomingRequest } from '../interfaces/index.js'; +import { KafkaRequest } from '../serializers/kafka-request.serializer.js'; +import { IncomingRequestDeserializer } from './incoming-request.deserializer.js'; /** * @publicApi diff --git a/packages/microservices/deserializers/kafka-response.deserializer.ts b/packages/microservices/deserializers/kafka-response.deserializer.ts index 81a28e9afe..b1187a940d 100644 --- a/packages/microservices/deserializers/kafka-response.deserializer.ts +++ b/packages/microservices/deserializers/kafka-response.deserializer.ts @@ -1,6 +1,6 @@ -import { isUndefined } from '@nestjs/common/utils/shared.utils'; -import { KafkaHeaders } from '../enums/kafka-headers.enum'; -import { Deserializer, IncomingResponse } from '../interfaces'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { KafkaHeaders } from '../enums/kafka-headers.enum.js'; +import { Deserializer, IncomingResponse } from '../interfaces/index.js'; /** * @publicApi diff --git a/packages/microservices/deserializers/nats-request-json.deserializer.ts b/packages/microservices/deserializers/nats-request-json.deserializer.ts index e0311041ac..af7fa3aca1 100644 --- a/packages/microservices/deserializers/nats-request-json.deserializer.ts +++ b/packages/microservices/deserializers/nats-request-json.deserializer.ts @@ -1,7 +1,7 @@ -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { NatsCodec } from '../external/nats-codec.interface'; -import { IncomingEvent, IncomingRequest } from '../interfaces'; -import { IncomingRequestDeserializer } from './incoming-request.deserializer'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { NatsCodec } from '../external/nats-codec.interface.js'; +import { IncomingEvent, IncomingRequest } from '../interfaces/index.js'; +import { IncomingRequestDeserializer } from './incoming-request.deserializer.js'; let natsPackage = {} as any; @@ -9,21 +9,37 @@ let natsPackage = {} as any; * @publicApi */ export class NatsRequestJSONDeserializer extends IncomingRequestDeserializer { - private readonly jsonCodec: NatsCodec; + private jsonCodec: NatsCodec; constructor() { super(); - natsPackage = loadPackage('nats', NatsRequestJSONDeserializer.name, () => - require('nats'), + natsPackage = loadPackage( + 'nats', + NatsRequestJSONDeserializer.name, + () => import('nats'), ); + } + + async init() { + natsPackage = await natsPackage; this.jsonCodec = natsPackage.JSONCodec(); } + private ensureJsonCodec() { + if (!this.jsonCodec) { + this.jsonCodec = natsPackage.JSONCodec(); + } + } + deserialize( value: Uint8Array, options?: Record, - ): IncomingRequest | IncomingEvent { + ): + | IncomingRequest + | IncomingEvent + | Promise { + this.ensureJsonCodec(); const decodedRequest = this.jsonCodec.decode(value); return super.deserialize(decodedRequest, options); } diff --git a/packages/microservices/deserializers/nats-response-json.deserializer.ts b/packages/microservices/deserializers/nats-response-json.deserializer.ts index 5b81f7512e..338f4d013a 100644 --- a/packages/microservices/deserializers/nats-response-json.deserializer.ts +++ b/packages/microservices/deserializers/nats-response-json.deserializer.ts @@ -1,8 +1,7 @@ -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { NatsCodec } from '../external/nats-codec.interface'; -import { IncomingResponse } from '../interfaces'; -import { IncomingResponseDeserializer } from './incoming-response.deserializer'; -import { NatsRequestJSONDeserializer } from './nats-request-json.deserializer'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { NatsCodec } from '../external/nats-codec.interface.js'; +import { IncomingResponse } from '../interfaces/index.js'; +import { IncomingResponseDeserializer } from './incoming-response.deserializer.js'; let natsPackage = {} as any; @@ -10,21 +9,34 @@ let natsPackage = {} as any; * @publicApi */ export class NatsResponseJSONDeserializer extends IncomingResponseDeserializer { - private readonly jsonCodec: NatsCodec; + private jsonCodec: NatsCodec; constructor() { super(); - natsPackage = loadPackage('nats', NatsRequestJSONDeserializer.name, () => - require('nats'), + natsPackage = loadPackage( + 'nats', + NatsResponseJSONDeserializer.name, + () => import('nats'), ); + } + + async init() { + natsPackage = await natsPackage; this.jsonCodec = natsPackage.JSONCodec(); } + private ensureJsonCodec() { + if (!this.jsonCodec) { + this.jsonCodec = natsPackage.JSONCodec(); + } + } + deserialize( value: Uint8Array, options?: Record, - ): IncomingResponse { + ): IncomingResponse | Promise { + this.ensureJsonCodec(); const decodedRequest = this.jsonCodec.decode(value); return super.deserialize(decodedRequest, options); } diff --git a/packages/microservices/enums/index.ts b/packages/microservices/enums/index.ts index 1ce135f23c..f8bacab7e8 100644 --- a/packages/microservices/enums/index.ts +++ b/packages/microservices/enums/index.ts @@ -1,2 +1,2 @@ -export * from './transport.enum'; -export * from './kafka-headers.enum'; +export * from './transport.enum.js'; +export * from './kafka-headers.enum.js'; diff --git a/packages/microservices/enums/rpc-paramtype.enum.ts b/packages/microservices/enums/rpc-paramtype.enum.ts index c857e9b49f..eae798ea8e 100644 --- a/packages/microservices/enums/rpc-paramtype.enum.ts +++ b/packages/microservices/enums/rpc-paramtype.enum.ts @@ -1,4 +1,4 @@ -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; export enum RpcParamtype { PAYLOAD = RouteParamtypes.BODY, diff --git a/packages/microservices/errors/invalid-grpc-message-decorator.exception.ts b/packages/microservices/errors/invalid-grpc-message-decorator.exception.ts index ffb4c45342..a08d2d7604 100644 --- a/packages/microservices/errors/invalid-grpc-message-decorator.exception.ts +++ b/packages/microservices/errors/invalid-grpc-message-decorator.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; export interface RpcDecoratorMetadata { service: string; diff --git a/packages/microservices/errors/invalid-grpc-package-definition-missing-package-definition.exception.ts b/packages/microservices/errors/invalid-grpc-package-definition-missing-package-definition.exception.ts index c5483358ec..a73e2a01a5 100644 --- a/packages/microservices/errors/invalid-grpc-package-definition-missing-package-definition.exception.ts +++ b/packages/microservices/errors/invalid-grpc-package-definition-missing-package-definition.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; export class InvalidGrpcPackageDefinitionMissingPackageDefinitionException extends RuntimeException { constructor() { diff --git a/packages/microservices/errors/invalid-grpc-package-definition-mutex.exception.ts b/packages/microservices/errors/invalid-grpc-package-definition-mutex.exception.ts index baa4f8be71..dc4953fd4d 100644 --- a/packages/microservices/errors/invalid-grpc-package-definition-mutex.exception.ts +++ b/packages/microservices/errors/invalid-grpc-package-definition-mutex.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; export class InvalidGrpcPackageDefinitionMutexException extends RuntimeException { constructor() { diff --git a/packages/microservices/errors/invalid-grpc-package.exception.ts b/packages/microservices/errors/invalid-grpc-package.exception.ts index a0599e4573..c8ebc05560 100644 --- a/packages/microservices/errors/invalid-grpc-package.exception.ts +++ b/packages/microservices/errors/invalid-grpc-package.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; /** * @publicApi diff --git a/packages/microservices/errors/invalid-grpc-service.exception.ts b/packages/microservices/errors/invalid-grpc-service.exception.ts index 1da6a18c8c..dd6ad24f8f 100644 --- a/packages/microservices/errors/invalid-grpc-service.exception.ts +++ b/packages/microservices/errors/invalid-grpc-service.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; /** * @publicApi diff --git a/packages/microservices/errors/invalid-kafka-client-topic.exception.ts b/packages/microservices/errors/invalid-kafka-client-topic.exception.ts index 12871369f0..c14119a61b 100644 --- a/packages/microservices/errors/invalid-kafka-client-topic.exception.ts +++ b/packages/microservices/errors/invalid-kafka-client-topic.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; /** * @publicApi diff --git a/packages/microservices/errors/invalid-message.exception.ts b/packages/microservices/errors/invalid-message.exception.ts index 6b8c0e9eef..2c85ffca06 100644 --- a/packages/microservices/errors/invalid-message.exception.ts +++ b/packages/microservices/errors/invalid-message.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; /** * @publicApi diff --git a/packages/microservices/errors/invalid-proto-definition.exception.ts b/packages/microservices/errors/invalid-proto-definition.exception.ts index 28ce445a02..88d9574005 100644 --- a/packages/microservices/errors/invalid-proto-definition.exception.ts +++ b/packages/microservices/errors/invalid-proto-definition.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; /** * @publicApi diff --git a/packages/microservices/errors/invalid-tcp-data-reception.exception.ts b/packages/microservices/errors/invalid-tcp-data-reception.exception.ts index 31e69eba6f..82dc405ab9 100644 --- a/packages/microservices/errors/invalid-tcp-data-reception.exception.ts +++ b/packages/microservices/errors/invalid-tcp-data-reception.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; export class InvalidTcpDataReceptionException extends RuntimeException { constructor(err: string | Error) { diff --git a/packages/microservices/events/index.ts b/packages/microservices/events/index.ts index df8d4959f0..72afb0b597 100644 --- a/packages/microservices/events/index.ts +++ b/packages/microservices/events/index.ts @@ -1,6 +1,6 @@ -export { KafkaStatus } from './kafka.events'; -export { MqttEvents, MqttStatus } from './mqtt.events'; -export { NatsEvents, NatsStatus } from './nats.events'; -export { RedisEvents, RedisStatus } from './redis.events'; -export { RmqEvents, RmqStatus } from './rmq.events'; -export { TcpEvents, TcpStatus } from './tcp.events'; +export { KafkaStatus } from './kafka.events.js'; +export { MqttEvents, MqttStatus } from './mqtt.events.js'; +export { NatsEvents, NatsStatus } from './nats.events.js'; +export { RedisEvents, RedisStatus } from './redis.events.js'; +export { RmqEvents, RmqStatus } from './rmq.events.js'; +export { TcpEvents, TcpStatus } from './tcp.events.js'; diff --git a/packages/microservices/exceptions/base-rpc-exception-filter.ts b/packages/microservices/exceptions/base-rpc-exception-filter.ts index 4cc92bc945..95b890cf85 100644 --- a/packages/microservices/exceptions/base-rpc-exception-filter.ts +++ b/packages/microservices/exceptions/base-rpc-exception-filter.ts @@ -4,10 +4,10 @@ import { Logger, RpcExceptionFilter, } from '@nestjs/common'; -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { MESSAGES } from '@nestjs/core/constants'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { MESSAGES } from '@nestjs/core/constants.js'; import { Observable, throwError as _throw } from 'rxjs'; -import { RpcException } from './rpc-exception'; +import { RpcException } from './rpc-exception.js'; /** * @publicApi diff --git a/packages/microservices/exceptions/index.ts b/packages/microservices/exceptions/index.ts index 73e4c3176b..cdb16cb498 100644 --- a/packages/microservices/exceptions/index.ts +++ b/packages/microservices/exceptions/index.ts @@ -1,3 +1,3 @@ -export * from './base-rpc-exception-filter'; -export * from './kafka-retriable-exception'; -export * from './rpc-exception'; +export * from './base-rpc-exception-filter.js'; +export * from './kafka-retriable-exception.js'; +export * from './rpc-exception.js'; diff --git a/packages/microservices/exceptions/kafka-retriable-exception.ts b/packages/microservices/exceptions/kafka-retriable-exception.ts index c62194a2e3..a6de62f5ac 100644 --- a/packages/microservices/exceptions/kafka-retriable-exception.ts +++ b/packages/microservices/exceptions/kafka-retriable-exception.ts @@ -1,4 +1,4 @@ -import { RpcException } from './rpc-exception'; +import { RpcException } from './rpc-exception.js'; /** * Exception that instructs Kafka driver to instead of introspecting diff --git a/packages/microservices/exceptions/rpc-exception.ts b/packages/microservices/exceptions/rpc-exception.ts index 107574a74e..11d7ebabab 100644 --- a/packages/microservices/exceptions/rpc-exception.ts +++ b/packages/microservices/exceptions/rpc-exception.ts @@ -1,4 +1,4 @@ -import { isObject, isString } from '@nestjs/common/utils/shared.utils'; +import { isObject, isString } from '@nestjs/common/utils/shared.utils.js'; /** * @publicApi diff --git a/packages/microservices/exceptions/rpc-exceptions-handler.ts b/packages/microservices/exceptions/rpc-exceptions-handler.ts index f551bd953f..c8838a46ba 100644 --- a/packages/microservices/exceptions/rpc-exceptions-handler.ts +++ b/packages/microservices/exceptions/rpc-exceptions-handler.ts @@ -1,11 +1,11 @@ -import { RpcExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions'; -import { ArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface'; -import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { InvalidExceptionFilterException } from '@nestjs/core/errors/exceptions/invalid-exception-filter.exception'; +import { RpcExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/index.js'; +import { ArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface.js'; +import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { InvalidExceptionFilterException } from '@nestjs/core/errors/exceptions/invalid-exception-filter.exception.js'; import { Observable } from 'rxjs'; -import { BaseRpcExceptionFilter } from './base-rpc-exception-filter'; -import { RpcException } from './rpc-exception'; +import { BaseRpcExceptionFilter } from './base-rpc-exception-filter.js'; +import { RpcException } from './rpc-exception.js'; /** * @publicApi diff --git a/packages/microservices/factories/rpc-params-factory.ts b/packages/microservices/factories/rpc-params-factory.ts index af8c9e72b8..ca2865db4b 100644 --- a/packages/microservices/factories/rpc-params-factory.ts +++ b/packages/microservices/factories/rpc-params-factory.ts @@ -1,4 +1,4 @@ -import { RpcParamtype } from '../enums/rpc-paramtype.enum'; +import { RpcParamtype } from '../enums/rpc-paramtype.enum.js'; export class RpcParamsFactory { public exchangeKeyForValue( diff --git a/packages/microservices/helpers/grpc-helpers.ts b/packages/microservices/helpers/grpc-helpers.ts index 56bf9ad246..954eed0bbb 100644 --- a/packages/microservices/helpers/grpc-helpers.ts +++ b/packages/microservices/helpers/grpc-helpers.ts @@ -1,6 +1,6 @@ -import { InvalidGrpcPackageDefinitionMissingPackageDefinitionException } from '../errors/invalid-grpc-package-definition-missing-package-definition.exception'; -import { InvalidGrpcPackageDefinitionMutexException } from '../errors/invalid-grpc-package-definition-mutex.exception'; -import { GrpcOptions } from '../interfaces'; +import { InvalidGrpcPackageDefinitionMissingPackageDefinitionException } from '../errors/invalid-grpc-package-definition-missing-package-definition.exception.js'; +import { InvalidGrpcPackageDefinitionMutexException } from '../errors/invalid-grpc-package-definition-mutex.exception.js'; +import { GrpcOptions } from '../interfaces/index.js'; export function getGrpcPackageDefinition( options: GrpcOptions['options'], diff --git a/packages/microservices/helpers/index.ts b/packages/microservices/helpers/index.ts index e395ce7dc8..152d98ccf4 100644 --- a/packages/microservices/helpers/index.ts +++ b/packages/microservices/helpers/index.ts @@ -1,6 +1,6 @@ -export * from './json-socket'; -export * from './kafka-logger'; -export * from './kafka-parser'; -export * from './kafka-reply-partition-assigner'; -export * from './tcp-socket'; -export * from './grpc-helpers'; +export * from './json-socket.js'; +export * from './kafka-logger.js'; +export * from './kafka-parser.js'; +export * from './kafka-reply-partition-assigner.js'; +export * from './tcp-socket.js'; +export * from './grpc-helpers.js'; diff --git a/packages/microservices/helpers/json-socket.ts b/packages/microservices/helpers/json-socket.ts index 2812408d11..eed68d9298 100644 --- a/packages/microservices/helpers/json-socket.ts +++ b/packages/microservices/helpers/json-socket.ts @@ -1,8 +1,8 @@ import { Buffer } from 'buffer'; import { StringDecoder } from 'string_decoder'; -import { CorruptedPacketLengthException } from '../errors/corrupted-packet-length.exception'; -import { MaxPacketLengthExceededException } from '../errors/max-packet-length-exceeded.exception'; -import { TcpSocket } from './tcp-socket'; +import { CorruptedPacketLengthException } from '../errors/corrupted-packet-length.exception.js'; +import { MaxPacketLengthExceededException } from '../errors/max-packet-length-exceeded.exception.js'; +import { TcpSocket } from './tcp-socket.js'; const DEFAULT_MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; // 512 MBs in characters with 4 bytes per character (32-bit) diff --git a/packages/microservices/helpers/kafka-logger.ts b/packages/microservices/helpers/kafka-logger.ts index 64b4960608..0e41f815f7 100644 --- a/packages/microservices/helpers/kafka-logger.ts +++ b/packages/microservices/helpers/kafka-logger.ts @@ -1,4 +1,4 @@ -import { logLevel } from '../external/kafka.interface'; +import { logLevel } from '../external/kafka.interface.js'; export const KafkaLogger = (logger: any) => diff --git a/packages/microservices/helpers/kafka-parser.ts b/packages/microservices/helpers/kafka-parser.ts index 1d40e94d1c..457d4aa277 100644 --- a/packages/microservices/helpers/kafka-parser.ts +++ b/packages/microservices/helpers/kafka-parser.ts @@ -1,5 +1,5 @@ -import { isNil } from '@nestjs/common/utils/shared.utils'; -import { KafkaParserConfig } from '../interfaces'; +import { isNil } from '@nestjs/common/utils/shared.utils.js'; +import { KafkaParserConfig } from '../interfaces/index.js'; export class KafkaParser { protected readonly keepBinary: boolean; diff --git a/packages/microservices/helpers/kafka-reply-partition-assigner.ts b/packages/microservices/helpers/kafka-reply-partition-assigner.ts index 955c96b6c9..e908a18820 100644 --- a/packages/microservices/helpers/kafka-reply-partition-assigner.ts +++ b/packages/microservices/helpers/kafka-reply-partition-assigner.ts @@ -1,13 +1,13 @@ -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isUndefined } from '@nestjs/common/utils/shared.utils'; -import { ClientKafka } from '../client/client-kafka'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { ClientKafka } from '../client/client-kafka.js'; import { Cluster, GroupMember, GroupMemberAssignment, GroupState, MemberMetadata, -} from '../external/kafka.interface'; +} from '../external/kafka.interface.js'; let kafkaPackage: any = {}; @@ -24,10 +24,14 @@ export class KafkaReplyPartitionAssigner { kafkaPackage = loadPackage( 'kafkajs', KafkaReplyPartitionAssigner.name, - () => require('kafkajs'), + () => import('kafkajs'), ); } + async init() { + kafkaPackage = await kafkaPackage; + } + /** * This process can result in imbalanced assignments * @param {array} members array of members, e.g: [{ memberId: 'test-5f93f5a3' }] @@ -39,6 +43,7 @@ export class KafkaReplyPartitionAssigner { members: GroupMember[]; topics: string[]; }): Promise { + kafkaPackage = await kafkaPackage; const assignment = {}; const previousAssignment = {}; @@ -188,6 +193,8 @@ export class KafkaReplyPartitionAssigner { } public decodeMember(member: GroupMember) { + // kafkaPackage must be resolved before calling this method + // (it is resolved in assign() which calls decodeMember) const memberMetadata = kafkaPackage.AssignerProtocol.MemberMetadata.decode( member.memberMetadata, ) as MemberMetadata; diff --git a/packages/microservices/helpers/tcp-socket.ts b/packages/microservices/helpers/tcp-socket.ts index cd4988fc1c..9b75ce4baf 100644 --- a/packages/microservices/helpers/tcp-socket.ts +++ b/packages/microservices/helpers/tcp-socket.ts @@ -1,8 +1,8 @@ import { Buffer } from 'buffer'; import { Socket } from 'net'; -import { InvalidJSONFormatException } from '../errors/invalid-json-format.exception'; -import { NetSocketClosedException } from '../errors/net-socket-closed.exception'; -import { TcpEventsMap } from '../events/tcp.events'; +import { InvalidJSONFormatException } from '../errors/invalid-json-format.exception.js'; +import { NetSocketClosedException } from '../errors/net-socket-closed.exception.js'; +import { TcpEventsMap } from '../events/tcp.events.js'; export abstract class TcpSocket { private isClosed = false; diff --git a/packages/microservices/index.ts b/packages/microservices/index.ts index 26b67b9262..9053d1e294 100644 --- a/packages/microservices/index.ts +++ b/packages/microservices/index.ts @@ -6,16 +6,16 @@ */ import 'reflect-metadata'; -export * from './client'; -export * from './ctx-host'; -export * from './decorators'; -export * from './enums'; -export * from './events'; -export * from './exceptions'; -export * from './helpers'; -export * from './interfaces'; -export * from './module'; -export * from './nest-microservice'; -export * from './record-builders'; -export * from './server'; -export * from './tokens'; +export * from './client/index.js'; +export * from './ctx-host/index.js'; +export * from './decorators/index.js'; +export * from './enums/index.js'; +export * from './events/index.js'; +export * from './exceptions/index.js'; +export * from './helpers/index.js'; +export * from './interfaces/index.js'; +export * from './module/index.js'; +export * from './nest-microservice.js'; +export * from './record-builders/index.js'; +export * from './server/index.js'; +export * from './tokens.js'; diff --git a/packages/microservices/interfaces/client-kafka-proxy.interface.ts b/packages/microservices/interfaces/client-kafka-proxy.interface.ts index 8a797cd0cf..10fd806dc4 100644 --- a/packages/microservices/interfaces/client-kafka-proxy.interface.ts +++ b/packages/microservices/interfaces/client-kafka-proxy.interface.ts @@ -1,10 +1,10 @@ -import { ClientProxy } from '../client'; -import { KafkaStatus } from '../events'; +import { ClientProxy } from '../client/index.js'; +import { KafkaStatus } from '../events/index.js'; import { Consumer, Producer, TopicPartitionOffsetAndMetadata, -} from '../external/kafka.interface'; +} from '../external/kafka.interface.js'; export interface ClientKafkaProxy extends Omit< ClientProxy, diff --git a/packages/microservices/interfaces/client-metadata.interface.ts b/packages/microservices/interfaces/client-metadata.interface.ts index 415f54c2e4..cdeb570b1d 100644 --- a/packages/microservices/interfaces/client-metadata.interface.ts +++ b/packages/microservices/interfaces/client-metadata.interface.ts @@ -1,9 +1,9 @@ import { Type } from '@nestjs/common'; import { ConnectionOptions } from 'tls'; -import { ClientProxy } from '../client'; -import { Transport } from '../enums/transport.enum'; -import { TcpSocket } from '../helpers'; -import { Deserializer } from './deserializer.interface'; +import { ClientProxy } from '../client/index.js'; +import { Transport } from '../enums/transport.enum.js'; +import { TcpSocket } from '../helpers/index.js'; +import { Deserializer } from './deserializer.interface.js'; import { GrpcOptions, KafkaOptions, @@ -11,8 +11,8 @@ import { NatsOptions, RedisOptions, RmqOptions, -} from './microservice-configuration.interface'; -import { Serializer } from './serializer.interface'; +} from './microservice-configuration.interface.js'; +import { Serializer } from './serializer.interface.js'; export type ClientOptions = | RedisOptions diff --git a/packages/microservices/interfaces/custom-transport-strategy.interface.ts b/packages/microservices/interfaces/custom-transport-strategy.interface.ts index 507db2e439..c23ce7943c 100644 --- a/packages/microservices/interfaces/custom-transport-strategy.interface.ts +++ b/packages/microservices/interfaces/custom-transport-strategy.interface.ts @@ -1,4 +1,4 @@ -import { TransportId } from './microservice-configuration.interface'; +import { TransportId } from './microservice-configuration.interface.js'; /** * @publicApi diff --git a/packages/microservices/interfaces/deserializer.interface.ts b/packages/microservices/interfaces/deserializer.interface.ts index d5529b697f..c1f2974a68 100644 --- a/packages/microservices/interfaces/deserializer.interface.ts +++ b/packages/microservices/interfaces/deserializer.interface.ts @@ -2,7 +2,7 @@ import { IncomingEvent, IncomingRequest, IncomingResponse, -} from './packet.interface'; +} from './packet.interface.js'; /** * @publicApi diff --git a/packages/microservices/interfaces/index.ts b/packages/microservices/interfaces/index.ts index 71718b8e1b..716e7ddc3d 100644 --- a/packages/microservices/interfaces/index.ts +++ b/packages/microservices/interfaces/index.ts @@ -1,12 +1,12 @@ -export * from './client-grpc.interface'; -export * from './client-kafka-proxy.interface'; -export * from './client-metadata.interface'; -export * from './custom-transport-strategy.interface'; -export * from './deserializer.interface'; -export * from './message-handler.interface'; -export * from './microservice-configuration.interface'; -export * from './packet.interface'; -export * from './pattern-metadata.interface'; -export * from './pattern.interface'; -export * from './request-context.interface'; -export * from './serializer.interface'; +export * from './client-grpc.interface.js'; +export * from './client-kafka-proxy.interface.js'; +export * from './client-metadata.interface.js'; +export * from './custom-transport-strategy.interface.js'; +export * from './deserializer.interface.js'; +export * from './message-handler.interface.js'; +export * from './microservice-configuration.interface.js'; +export * from './packet.interface.js'; +export * from './pattern-metadata.interface.js'; +export * from './pattern.interface.js'; +export * from './request-context.interface.js'; +export * from './serializer.interface.js'; diff --git a/packages/microservices/interfaces/microservice-configuration.interface.ts b/packages/microservices/interfaces/microservice-configuration.interface.ts index 809486914f..387c4c5030 100644 --- a/packages/microservices/interfaces/microservice-configuration.interface.ts +++ b/packages/microservices/interfaces/microservice-configuration.interface.ts @@ -1,7 +1,7 @@ import { InjectionToken, Type } from '@nestjs/common'; import { TlsOptions } from 'tls'; -import { Transport } from '../enums/transport.enum'; -import { ChannelOptions } from '../external/grpc-options.interface'; +import { Transport } from '../enums/transport.enum.js'; +import { ChannelOptions } from '../external/grpc-options.interface.js'; import { ConsumerConfig, ConsumerRunConfig, @@ -9,18 +9,18 @@ import { KafkaConfig, ProducerConfig, ProducerRecord, -} from '../external/kafka.interface'; -import { MqttClientOptions, QoS } from '../external/mqtt-options.interface'; -import { IORedisOptions } from '../external/redis.interface'; +} from '../external/kafka.interface.js'; +import { MqttClientOptions, QoS } from '../external/mqtt-options.interface.js'; +import { IORedisOptions } from '../external/redis.interface.js'; import { AmqpConnectionManagerSocketOptions, AmqplibQueueOptions, RmqUrl, -} from '../external/rmq-url.interface'; -import { TcpSocket } from '../helpers'; -import { CustomTransportStrategy } from './custom-transport-strategy.interface'; -import { Deserializer } from './deserializer.interface'; -import { Serializer } from './serializer.interface'; +} from '../external/rmq-url.interface.js'; +import { TcpSocket } from '../helpers/index.js'; +import { CustomTransportStrategy } from './custom-transport-strategy.interface.js'; +import { Deserializer } from './deserializer.interface.js'; +import { Serializer } from './serializer.interface.js'; export type MicroserviceOptions = | GrpcOptions diff --git a/packages/microservices/interfaces/microservice-entrypoint-metadata.interface.ts b/packages/microservices/interfaces/microservice-entrypoint-metadata.interface.ts index 9993c7d770..f747374c70 100644 --- a/packages/microservices/interfaces/microservice-entrypoint-metadata.interface.ts +++ b/packages/microservices/interfaces/microservice-entrypoint-metadata.interface.ts @@ -1,5 +1,5 @@ -import { Transport } from '../enums'; -import { PatternMetadata } from './pattern-metadata.interface'; +import { Transport } from '../enums/index.js'; +import { PatternMetadata } from './pattern-metadata.interface.js'; export type MicroserviceEntrypointMetadata = { transportId: keyof typeof Transport | symbol; diff --git a/packages/microservices/interfaces/request-context.interface.ts b/packages/microservices/interfaces/request-context.interface.ts index 4b207231e9..6411b01209 100644 --- a/packages/microservices/interfaces/request-context.interface.ts +++ b/packages/microservices/interfaces/request-context.interface.ts @@ -1,4 +1,4 @@ -import { BaseRpcContext } from '../ctx-host/base-rpc.context'; +import { BaseRpcContext } from '../ctx-host/base-rpc.context.js'; export interface RequestContext< TData = any, diff --git a/packages/microservices/interfaces/serializer.interface.ts b/packages/microservices/interfaces/serializer.interface.ts index 4c090467c8..681064df00 100644 --- a/packages/microservices/interfaces/serializer.interface.ts +++ b/packages/microservices/interfaces/serializer.interface.ts @@ -2,13 +2,16 @@ import { OutgoingEvent, OutgoingRequest, OutgoingResponse, -} from './packet.interface'; +} from './packet.interface.js'; /** * @publicApi */ export interface Serializer { - serialize(value: TInput, options?: Record): TOutput; + serialize( + value: TInput, + options?: Record, + ): TOutput | Promise; } export type ProducerSerializer = Serializer< diff --git a/packages/microservices/listener-metadata-explorer.ts b/packages/microservices/listener-metadata-explorer.ts index e0fdd9c033..3936e0c20d 100644 --- a/packages/microservices/listener-metadata-explorer.ts +++ b/packages/microservices/listener-metadata-explorer.ts @@ -1,6 +1,6 @@ -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { isFunction, isUndefined } from '@nestjs/common/utils/shared.utils'; -import { MetadataScanner } from '@nestjs/core/metadata-scanner'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { isFunction, isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { MetadataScanner } from '@nestjs/core/metadata-scanner.js'; import { CLIENT_CONFIGURATION_METADATA, CLIENT_METADATA, @@ -8,10 +8,10 @@ import { PATTERN_HANDLER_METADATA, PATTERN_METADATA, TRANSPORT_METADATA, -} from './constants'; -import { Transport } from './enums'; -import { PatternHandler } from './enums/pattern-handler.enum'; -import { ClientOptions, PatternMetadata } from './interfaces'; +} from './constants.js'; +import { Transport } from './enums/index.js'; +import { PatternHandler } from './enums/pattern-handler.enum.js'; +import { ClientOptions, PatternMetadata } from './interfaces/index.js'; export interface ClientProperties { property: string; diff --git a/packages/microservices/listeners-controller.ts b/packages/microservices/listeners-controller.ts index 86f556e330..62b87c44ac 100644 --- a/packages/microservices/listeners-controller.ts +++ b/packages/microservices/listeners-controller.ts @@ -1,18 +1,18 @@ -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { isUndefined } from '@nestjs/common/utils/shared.utils'; -import { ContextIdFactory } from '@nestjs/core/helpers/context-id-factory'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; -import { STATIC_CONTEXT } from '@nestjs/core/injector/constants'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { Injector } from '@nestjs/core/injector/injector'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { ContextIdFactory } from '@nestjs/core/helpers/context-id-factory.js'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; +import { STATIC_CONTEXT } from '@nestjs/core/injector/constants.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { Injector } from '@nestjs/core/injector/injector.js'; import { ContextId, InstanceWrapper, -} from '@nestjs/core/injector/instance-wrapper'; -import { Module } from '@nestjs/core/injector/module'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; -import { MetadataScanner } from '@nestjs/core/metadata-scanner'; -import { REQUEST_CONTEXT_ID } from '@nestjs/core/router/request/request-constants'; +} from '@nestjs/core/injector/instance-wrapper.js'; +import { Module } from '@nestjs/core/injector/module.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; +import { MetadataScanner } from '@nestjs/core/metadata-scanner.js'; +import { REQUEST_CONTEXT_ID } from '@nestjs/core/router/request/request-constants.js'; import { forkJoin, from as fromPromise, @@ -22,25 +22,29 @@ import { ObservedValueOf, of, } from 'rxjs'; -import { IClientProxyFactory } from './client/client-proxy-factory'; -import { ClientsContainer } from './container'; -import { ExceptionFiltersContext } from './context/exception-filters-context'; -import { RequestContextHost } from './context/request-context-host'; -import { RpcContextCreator } from './context/rpc-context-creator'; +import { IClientProxyFactory } from './client/client-proxy-factory.js'; +import { ClientsContainer } from './container.js'; +import { ExceptionFiltersContext } from './context/exception-filters-context.js'; +import { RequestContextHost } from './context/request-context-host.js'; +import { RpcContextCreator } from './context/rpc-context-creator.js'; import { DEFAULT_CALLBACK_METADATA, DEFAULT_GRPC_CALLBACK_METADATA, -} from './context/rpc-metadata-constants'; -import { BaseRpcContext } from './ctx-host/base-rpc.context'; -import { Transport } from './enums'; -import { MessageHandler, PatternMetadata, RequestContext } from './interfaces'; -import { MicroserviceEntrypointMetadata } from './interfaces/microservice-entrypoint-metadata.interface'; +} from './context/rpc-metadata-constants.js'; +import { BaseRpcContext } from './ctx-host/base-rpc.context.js'; +import { Transport } from './enums/index.js'; +import { + MessageHandler, + PatternMetadata, + RequestContext, +} from './interfaces/index.js'; +import { MicroserviceEntrypointMetadata } from './interfaces/microservice-entrypoint-metadata.interface.js'; import { EventOrMessageListenerDefinition, ListenerMetadataExplorer, -} from './listener-metadata-explorer'; -import { ServerGrpc } from './server'; -import { Server } from './server/server'; +} from './listener-metadata-explorer.js'; +import { ServerGrpc } from './server/index.js'; +import { Server } from './server/server.js'; export class ListenersController { private readonly metadataExplorer = new ListenerMetadataExplorer( diff --git a/packages/microservices/microservices-module.ts b/packages/microservices/microservices-module.ts index 16f40346cc..04207892bb 100644 --- a/packages/microservices/microservices-module.ts +++ b/packages/microservices/microservices-module.ts @@ -1,24 +1,30 @@ -import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; -import { GuardsConsumer, GuardsContextCreator } from '@nestjs/core/guards'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { Injector } from '@nestjs/core/injector/injector'; -import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; +import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; +import { + GuardsConsumer, + GuardsContextCreator, +} from '@nestjs/core/guards/index.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { Injector } from '@nestjs/core/injector/injector.js'; +import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; import { InterceptorsConsumer, InterceptorsContextCreator, -} from '@nestjs/core/interceptors'; -import { PipesConsumer, PipesContextCreator } from '@nestjs/core/pipes'; -import { ClientProxyFactory } from './client'; -import { ClientsContainer } from './container'; -import { ExceptionFiltersContext } from './context/exception-filters-context'; -import { RpcContextCreator } from './context/rpc-context-creator'; -import { RpcProxy } from './context/rpc-proxy'; -import { ListenersController } from './listeners-controller'; -import { Server } from './server/server'; +} from '@nestjs/core/interceptors/index.js'; +import { + PipesConsumer, + PipesContextCreator, +} from '@nestjs/core/pipes/index.js'; +import { ClientProxyFactory } from './client/index.js'; +import { ClientsContainer } from './container.js'; +import { ExceptionFiltersContext } from './context/exception-filters-context.js'; +import { RpcContextCreator } from './context/rpc-context-creator.js'; +import { RpcProxy } from './context/rpc-proxy.js'; +import { ListenersController } from './listeners-controller.js'; +import { Server } from './server/server.js'; export class MicroservicesModule< TAppOptions extends NestApplicationContextOptions = diff --git a/packages/microservices/module/clients.module.ts b/packages/microservices/module/clients.module.ts index 4ed9f2eb93..59e7690e27 100644 --- a/packages/microservices/module/clients.module.ts +++ b/packages/microservices/module/clients.module.ts @@ -6,13 +6,13 @@ import { Provider, Type, } from '@nestjs/common'; -import { ClientProxy, ClientProxyFactory } from '../client'; +import { ClientProxy, ClientProxyFactory } from '../client/index.js'; import { ClientsModuleAsyncOptions, ClientsModuleOptions, ClientsModuleOptionsFactory, ClientsProviderAsyncOptions, -} from './interfaces'; +} from './interfaces/index.js'; @Module({}) export class ClientsModule { diff --git a/packages/microservices/module/index.ts b/packages/microservices/module/index.ts index 8a05a28bc3..4e41f31d82 100644 --- a/packages/microservices/module/index.ts +++ b/packages/microservices/module/index.ts @@ -1,2 +1,2 @@ -export * from './clients.module'; -export * from './interfaces'; +export * from './clients.module.js'; +export * from './interfaces/index.js'; diff --git a/packages/microservices/module/interfaces/clients-module.interface.ts b/packages/microservices/module/interfaces/clients-module.interface.ts index 4f932c3143..962e874b6e 100644 --- a/packages/microservices/module/interfaces/clients-module.interface.ts +++ b/packages/microservices/module/interfaces/clients-module.interface.ts @@ -1,5 +1,9 @@ -import { ClientOptions, CustomClientOptions } from '../../interfaces'; -import { Type, Provider, ModuleMetadata } from '@nestjs/common/interfaces'; +import { ClientOptions, CustomClientOptions } from '../../interfaces/index.js'; +import { + Type, + Provider, + ModuleMetadata, +} from '@nestjs/common/interfaces/index.js'; export type ClientProvider = ClientOptions | CustomClientOptions; diff --git a/packages/microservices/module/interfaces/index.ts b/packages/microservices/module/interfaces/index.ts index 2494326224..7a61a60f01 100644 --- a/packages/microservices/module/interfaces/index.ts +++ b/packages/microservices/module/interfaces/index.ts @@ -1 +1 @@ -export * from './clients-module.interface'; +export * from './clients-module.interface.js'; diff --git a/packages/microservices/nest-microservice.ts b/packages/microservices/nest-microservice.ts index 2a185b380b..b1d1fe1026 100644 --- a/packages/microservices/nest-microservice.ts +++ b/packages/microservices/nest-microservice.ts @@ -6,28 +6,34 @@ import { PipeTransform, WebSocketAdapter, } from '@nestjs/common'; -import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface'; -import { Logger } from '@nestjs/common/services/logger.service'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { MESSAGES } from '@nestjs/core/constants'; -import { optionalRequire } from '@nestjs/core/helpers/optional-require'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { Injector } from '@nestjs/core/injector/injector'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; -import { NestApplicationContext } from '@nestjs/core/nest-application-context'; -import { Transport } from './enums/transport.enum'; +import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { MESSAGES } from '@nestjs/core/constants.js'; +import { optionalRequire } from '@nestjs/core/helpers/optional-require.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { Injector } from '@nestjs/core/injector/injector.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; +import { NestApplicationContext } from '@nestjs/core/nest-application-context.js'; +import { Transport } from './enums/transport.enum.js'; import { AsyncMicroserviceOptions, MicroserviceOptions, -} from './interfaces/microservice-configuration.interface'; -import { MicroservicesModule } from './microservices-module'; -import { Server } from './server/server'; -import { ServerFactory } from './server/server-factory'; +} from './interfaces/microservice-configuration.interface.js'; +import { MicroservicesModule } from './microservices-module.js'; +import { ServerFactory } from './server/server-factory.js'; +import { Server } from './server/server.js'; -const { SocketModule } = optionalRequire( - '@nestjs/websockets/socket-module', - () => require('@nestjs/websockets/socket-module'), -); +let _socketModule: any; +async function getSocketModule() { + if (!_socketModule) { + _socketModule = await optionalRequire( + '@nestjs/websockets/socket-module', + () => import('@nestjs/websockets/socket-module.js'), + ); + } + return _socketModule; +} type CompleteMicroserviceOptions = NestMicroserviceOptions & (MicroserviceOptions | AsyncMicroserviceOptions); @@ -40,7 +46,7 @@ export class NestMicroservice timestamp: true, }); private readonly microservicesModule = new MicroservicesModule(); - private readonly socketModule = SocketModule ? new SocketModule() : null; + private socketModule: any = null; private microserviceConfig: Exclude< CompleteMicroserviceOptions, AsyncMicroserviceOptions @@ -256,6 +262,13 @@ export class NestMicroservice if (this.isInitialized) { return this; } + + // Lazy-load optional socket module (ESM-compatible) + const socketMod = await getSocketModule(); + if (socketMod?.SocketModule) { + this.socketModule = new socketMod.SocketModule(); + } + await super.init(); await this.registerModules(); return this; diff --git a/packages/microservices/package.json b/packages/microservices/package.json index 68d6b028ae..a4d8e9ce07 100644 --- a/packages/microservices/package.json +++ b/packages/microservices/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@microservices)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/microservices/record-builders/index.ts b/packages/microservices/record-builders/index.ts index 0bff5e1347..109dc5e10c 100644 --- a/packages/microservices/record-builders/index.ts +++ b/packages/microservices/record-builders/index.ts @@ -1,3 +1,3 @@ -export * from './mqtt.record-builder'; -export * from './nats.record-builder'; -export * from './rmq.record-builder'; +export * from './mqtt.record-builder.js'; +export * from './nats.record-builder.js'; +export * from './rmq.record-builder.js'; diff --git a/packages/microservices/serializers/identity.serializer.ts b/packages/microservices/serializers/identity.serializer.ts index a210272a0f..82ca2af349 100644 --- a/packages/microservices/serializers/identity.serializer.ts +++ b/packages/microservices/serializers/identity.serializer.ts @@ -1,4 +1,4 @@ -import { Serializer } from '../interfaces/serializer.interface'; +import { Serializer } from '../interfaces/serializer.interface.js'; export class IdentitySerializer implements Serializer { serialize(value: any) { diff --git a/packages/microservices/serializers/index.ts b/packages/microservices/serializers/index.ts index b58734cf1b..5da3ff95c8 100644 --- a/packages/microservices/serializers/index.ts +++ b/packages/microservices/serializers/index.ts @@ -1,5 +1,5 @@ -export * from './identity.serializer'; -export * from './kafka-request.serializer'; -export * from './mqtt-record.serializer'; -export * from './nats-record.serializer'; -export * from './rmq-record.serializer'; +export * from './identity.serializer.js'; +export * from './kafka-request.serializer.js'; +export * from './mqtt-record.serializer.js'; +export * from './nats-record.serializer.js'; +export * from './rmq-record.serializer.js'; diff --git a/packages/microservices/serializers/kafka-request.serializer.ts b/packages/microservices/serializers/kafka-request.serializer.ts index 8e76e80dfa..18612da86a 100644 --- a/packages/microservices/serializers/kafka-request.serializer.ts +++ b/packages/microservices/serializers/kafka-request.serializer.ts @@ -4,8 +4,8 @@ import { isPlainObject, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; -import { Serializer } from '../interfaces/serializer.interface'; +} from '@nestjs/common/utils/shared.utils.js'; +import { Serializer } from '../interfaces/serializer.interface.js'; export interface KafkaRequest { key: Buffer | string | null; diff --git a/packages/microservices/serializers/mqtt-record.serializer.ts b/packages/microservices/serializers/mqtt-record.serializer.ts index b6797709b5..5d9b8156a3 100644 --- a/packages/microservices/serializers/mqtt-record.serializer.ts +++ b/packages/microservices/serializers/mqtt-record.serializer.ts @@ -1,6 +1,6 @@ -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { ReadPacket, Serializer } from '../interfaces'; -import { MqttRecord } from '../record-builders'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { ReadPacket, Serializer } from '../interfaces/index.js'; +import { MqttRecord } from '../record-builders/index.js'; export class MqttRecordSerializer implements Serializer { serialize(packet: ReadPacket): string { diff --git a/packages/microservices/serializers/nats-record.serializer.ts b/packages/microservices/serializers/nats-record.serializer.ts index 8162f35366..976cad04e9 100644 --- a/packages/microservices/serializers/nats-record.serializer.ts +++ b/packages/microservices/serializers/nats-record.serializer.ts @@ -1,9 +1,9 @@ -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { NatsCodec } from '../external/nats-codec.interface'; -import { ReadPacket } from '../interfaces'; -import { Serializer } from '../interfaces/serializer.interface'; -import { NatsRecord, NatsRecordBuilder } from '../record-builders'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { NatsCodec } from '../external/nats-codec.interface.js'; +import { ReadPacket } from '../interfaces/index.js'; +import { Serializer } from '../interfaces/serializer.interface.js'; +import { NatsRecord, NatsRecordBuilder } from '../record-builders/index.js'; let natsPackage = {} as any; @@ -11,16 +11,29 @@ export class NatsRecordSerializer implements Serializer< ReadPacket, NatsRecord > { - private readonly jsonCodec: NatsCodec; + private jsonCodec: NatsCodec; constructor() { - natsPackage = loadPackage('nats', NatsRecordSerializer.name, () => - require('nats'), + natsPackage = loadPackage( + 'nats', + NatsRecordSerializer.name, + () => import('nats'), ); + } + + async init() { + natsPackage = await natsPackage; this.jsonCodec = natsPackage.JSONCodec(); } + private ensureJsonCodec() { + if (!this.jsonCodec) { + this.jsonCodec = natsPackage.JSONCodec(); + } + } + serialize(packet: any): NatsRecord { + this.ensureJsonCodec(); const natsMessage = packet?.data && isObject(packet.data) && packet.data instanceof NatsRecord ? packet.data diff --git a/packages/microservices/serializers/rmq-record.serializer.ts b/packages/microservices/serializers/rmq-record.serializer.ts index 2846b92377..2489dd2ebc 100644 --- a/packages/microservices/serializers/rmq-record.serializer.ts +++ b/packages/microservices/serializers/rmq-record.serializer.ts @@ -1,7 +1,7 @@ -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { ReadPacket } from '../interfaces'; -import { Serializer } from '../interfaces/serializer.interface'; -import { RmqRecord } from '../record-builders'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { ReadPacket } from '../interfaces/index.js'; +import { Serializer } from '../interfaces/serializer.interface.js'; +import { RmqRecord } from '../record-builders/index.js'; export class RmqRecordSerializer implements Serializer< ReadPacket, diff --git a/packages/microservices/server/index.ts b/packages/microservices/server/index.ts index 078d17a2f5..2ebabdc0b5 100644 --- a/packages/microservices/server/index.ts +++ b/packages/microservices/server/index.ts @@ -1,8 +1,8 @@ -export * from './server'; -export * from './server-grpc'; -export * from './server-kafka'; -export * from './server-mqtt'; -export * from './server-nats'; -export * from './server-redis'; -export * from './server-rmq'; -export * from './server-tcp'; +export * from './server.js'; +export * from './server-grpc.js'; +export * from './server-kafka.js'; +export * from './server-mqtt.js'; +export * from './server-nats.js'; +export * from './server-redis.js'; +export * from './server-rmq.js'; +export * from './server-tcp.js'; diff --git a/packages/microservices/server/server-factory.ts b/packages/microservices/server/server-factory.ts index 35d226f782..798d38d0c1 100644 --- a/packages/microservices/server/server-factory.ts +++ b/packages/microservices/server/server-factory.ts @@ -1,4 +1,4 @@ -import { Transport } from '../enums/transport.enum'; +import { Transport } from '../enums/transport.enum.js'; import { CustomStrategy, KafkaOptions, @@ -8,14 +8,14 @@ import { RedisOptions, RmqOptions, TcpOptions, -} from '../interfaces'; -import { ServerGrpc } from './server-grpc'; -import { ServerKafka } from './server-kafka'; -import { ServerMqtt } from './server-mqtt'; -import { ServerNats } from './server-nats'; -import { ServerRedis } from './server-redis'; -import { ServerRMQ } from './server-rmq'; -import { ServerTCP } from './server-tcp'; +} from '../interfaces/index.js'; +import { ServerGrpc } from './server-grpc.js'; +import { ServerKafka } from './server-kafka.js'; +import { ServerMqtt } from './server-mqtt.js'; +import { ServerNats } from './server-nats.js'; +import { ServerRedis } from './server-redis.js'; +import { ServerRMQ } from './server-rmq.js'; +import { ServerTCP } from './server-tcp.js'; export class ServerFactory { public static create(microserviceOptions: MicroserviceOptions) { diff --git a/packages/microservices/server/server-grpc.ts b/packages/microservices/server/server-grpc.ts index 426661fb03..442e070367 100644 --- a/packages/microservices/server/server-grpc.ts +++ b/packages/microservices/server/server-grpc.ts @@ -2,7 +2,7 @@ import { isObject, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { EMPTY, Observable, @@ -14,19 +14,19 @@ import { lastValueFrom, } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; -import { GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants'; -import { GrpcMethodStreamingType } from '../decorators'; -import { Transport } from '../enums'; -import { InvalidGrpcPackageException } from '../errors/invalid-grpc-package.exception'; -import { InvalidProtoDefinitionException } from '../errors/invalid-proto-definition.exception'; -import { ChannelOptions } from '../external/grpc-options.interface'; -import { getGrpcPackageDefinition } from '../helpers'; -import { MessageHandler } from '../interfaces'; +import { GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants.js'; +import { GrpcMethodStreamingType } from '../decorators/index.js'; +import { Transport } from '../enums/index.js'; +import { InvalidGrpcPackageException } from '../errors/invalid-grpc-package.exception.js'; +import { InvalidProtoDefinitionException } from '../errors/invalid-proto-definition.exception.js'; +import { ChannelOptions } from '../external/grpc-options.interface.js'; +import { getGrpcPackageDefinition } from '../helpers/index.js'; +import { MessageHandler } from '../interfaces/index.js'; import { GrpcOptions, TransportId, -} from '../interfaces/microservice-configuration.interface'; -import { Server } from './server'; +} from '../interfaces/microservice-configuration.interface.js'; +import { Server } from './server.js'; const CANCELLED_EVENT = 'cancelled'; @@ -74,16 +74,13 @@ export class ServerGrpc extends Server { const protoLoader = this.getOptionsProp(options, 'protoLoader') || GRPC_DEFAULT_PROTO_LOADER; - grpcPackage = this.loadPackage('@grpc/grpc-js', ServerGrpc.name, () => - require('@grpc/grpc-js'), + grpcPackage = this.loadPackageSynchronously( + '@grpc/grpc-js', + ServerGrpc.name, ); - grpcProtoLoaderPackage = this.loadPackage( + grpcProtoLoaderPackage = this.loadPackageSynchronously( protoLoader, ServerGrpc.name, - () => - protoLoader === GRPC_DEFAULT_PROTO_LOADER - ? require('@grpc/proto-loader') - : require(protoLoader), ); } diff --git a/packages/microservices/server/server-kafka.ts b/packages/microservices/server/server-kafka.ts index 939096e644..ea288f617c 100644 --- a/packages/microservices/server/server-kafka.ts +++ b/packages/microservices/server/server-kafka.ts @@ -1,5 +1,5 @@ -import { Logger } from '@nestjs/common/services/logger.service'; -import { isNil } from '@nestjs/common/utils/shared.utils'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { isNil } from '@nestjs/common/utils/shared.utils.js'; import { isObservable, lastValueFrom, Observable, ReplaySubject } from 'rxjs'; import { KAFKA_DEFAULT_BROKER, @@ -7,12 +7,12 @@ import { KAFKA_DEFAULT_GROUP, NO_EVENT_HANDLER, NO_MESSAGE_HANDLER, -} from '../constants'; -import { KafkaContext } from '../ctx-host'; -import { KafkaRequestDeserializer } from '../deserializers/kafka-request.deserializer'; -import { KafkaHeaders, Transport } from '../enums'; -import { KafkaStatus } from '../events'; -import { KafkaRetriableException } from '../exceptions'; +} from '../constants.js'; +import { KafkaContext } from '../ctx-host/index.js'; +import { KafkaRequestDeserializer } from '../deserializers/kafka-request.deserializer.js'; +import { KafkaHeaders, Transport } from '../enums/index.js'; +import { KafkaStatus } from '../events/index.js'; +import { KafkaRetriableException } from '../exceptions/index.js'; import { BrokersFunction, Consumer, @@ -24,16 +24,16 @@ import { Message, Producer, RecordMetadata, -} from '../external/kafka.interface'; -import { KafkaLogger, KafkaParser } from '../helpers'; +} from '../external/kafka.interface.js'; +import { KafkaLogger, KafkaParser } from '../helpers/index.js'; import { KafkaOptions, OutgoingResponse, ReadPacket, TransportId, -} from '../interfaces'; -import { KafkaRequestSerializer } from '../serializers/kafka-request.serializer'; -import { Server } from './server'; +} from '../interfaces/index.js'; +import { KafkaRequestSerializer } from '../serializers/kafka-request.serializer.js'; +import { Server } from './server.js'; let kafkaPackage: any = {}; @@ -75,8 +75,10 @@ export class ServerKafka extends Server { (clientOptions.clientId || KAFKA_DEFAULT_CLIENT) + postfixId; this.groupId = (consumerOptions.groupId || KAFKA_DEFAULT_GROUP) + postfixId; - kafkaPackage = this.loadPackage('kafkajs', ServerKafka.name, () => - require('kafkajs'), + kafkaPackage = this.loadPackage( + 'kafkajs', + ServerKafka.name, + () => import('kafkajs'), ); this.parser = new KafkaParser((options && options.parser) || undefined); @@ -89,7 +91,7 @@ export class ServerKafka extends Server { callback: (err?: unknown, ...optionalParams: unknown[]) => void, ): Promise { try { - this.client = this.createClient(); + this.client = await this.createClient(); await this.start(callback); } catch (err) { callback(err); @@ -152,7 +154,8 @@ export class ServerKafka extends Server { ); } - public createClient(): T { + public async createClient(): Promise { + kafkaPackage = await kafkaPackage; return new kafkaPackage.Kafka( Object.assign( { logCreator: KafkaLogger.bind(null, this.logger) }, diff --git a/packages/microservices/server/server-mqtt.ts b/packages/microservices/server/server-mqtt.ts index 37950bd753..a42d27daa7 100644 --- a/packages/microservices/server/server-mqtt.ts +++ b/packages/microservices/server/server-mqtt.ts @@ -1,27 +1,31 @@ -import { isObject, isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isObject, isUndefined } from '@nestjs/common/utils/shared.utils.js'; import { MQTT_DEFAULT_URL, MQTT_SEPARATOR, MQTT_WILDCARD_ALL, MQTT_WILDCARD_SINGLE, NO_MESSAGE_HANDLER, -} from '../constants'; -import { MqttContext } from '../ctx-host/mqtt.context'; -import { Transport } from '../enums'; -import { MqttEvents, MqttEventsMap, MqttStatus } from '../events/mqtt.events'; +} from '../constants.js'; +import { MqttContext } from '../ctx-host/mqtt.context.js'; +import { Transport } from '../enums/index.js'; +import { + MqttEvents, + MqttEventsMap, + MqttStatus, +} from '../events/mqtt.events.js'; import { IncomingRequest, MessageHandler, PacketId, ReadPacket, -} from '../interfaces'; +} from '../interfaces/index.js'; import { MqttOptions, TransportId, -} from '../interfaces/microservice-configuration.interface'; -import { MqttRecord } from '../record-builders/mqtt.record-builder'; -import { MqttRecordSerializer } from '../serializers/mqtt-record.serializer'; -import { Server } from './server'; +} from '../interfaces/microservice-configuration.interface.js'; +import { MqttRecord } from '../record-builders/mqtt.record-builder.js'; +import { MqttRecordSerializer } from '../serializers/mqtt-record.serializer.js'; +import { Server } from './server.js'; let mqttPackage: any = {}; @@ -48,8 +52,10 @@ export class ServerMqtt extends Server { super(); this.url = this.getOptionsProp(options, 'url', MQTT_DEFAULT_URL); - mqttPackage = this.loadPackage('mqtt', ServerMqtt.name, () => - require('mqtt'), + mqttPackage = this.loadPackage( + 'mqtt', + ServerMqtt.name, + () => import('mqtt'), ); this.initializeSerializer(options); @@ -60,7 +66,7 @@ export class ServerMqtt extends Server { callback: (err?: unknown, ...optionalParams: unknown[]) => void, ) { try { - this.mqttClient = this.createMqttClient(); + this.mqttClient = await this.createMqttClient(); this.start(callback); } catch (err) { callback(err); @@ -114,7 +120,8 @@ export class ServerMqtt extends Server { this.pendingEventListeners = []; } - public createMqttClient(): MqttClient { + public async createMqttClient(): Promise { + mqttPackage = await mqttPackage; return mqttPackage.connect(this.url, this.options as MqttOptions); } diff --git a/packages/microservices/server/server-nats.ts b/packages/microservices/server/server-nats.ts index bc08517b06..b3c7be79f6 100644 --- a/packages/microservices/server/server-nats.ts +++ b/packages/microservices/server/server-nats.ts @@ -1,22 +1,26 @@ -import { isObject, isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isObject, isUndefined } from '@nestjs/common/utils/shared.utils.js'; import { EventEmitter } from 'events'; import { NATS_DEFAULT_GRACE_PERIOD, NATS_DEFAULT_URL, NO_MESSAGE_HANDLER, -} from '../constants'; -import { NatsContext } from '../ctx-host/nats.context'; -import { NatsRequestJSONDeserializer } from '../deserializers/nats-request-json.deserializer'; -import { Transport } from '../enums'; -import { NatsEvents, NatsEventsMap, NatsStatus } from '../events/nats.events'; +} from '../constants.js'; +import { NatsContext } from '../ctx-host/nats.context.js'; +import { NatsRequestJSONDeserializer } from '../deserializers/nats-request-json.deserializer.js'; +import { Transport } from '../enums/index.js'; +import { + NatsEvents, + NatsEventsMap, + NatsStatus, +} from '../events/nats.events.js'; import { NatsOptions, TransportId, -} from '../interfaces/microservice-configuration.interface'; -import { IncomingRequest } from '../interfaces/packet.interface'; -import { NatsRecord } from '../record-builders'; -import { NatsRecordSerializer } from '../serializers/nats-record.serializer'; -import { Server } from './server'; +} from '../interfaces/microservice-configuration.interface.js'; +import { IncomingRequest } from '../interfaces/packet.interface.js'; +import { NatsRecord } from '../record-builders/index.js'; +import { NatsRecordSerializer } from '../serializers/nats-record.serializer.js'; +import { Server } from './server.js'; let natsPackage = {} as any; @@ -50,8 +54,10 @@ export class ServerNats< constructor(private readonly options: Required['options']) { super(); - natsPackage = this.loadPackage('nats', ServerNats.name, () => - require('nats'), + natsPackage = this.loadPackage( + 'nats', + ServerNats.name, + () => import('nats'), ); this.initializeSerializer(options); @@ -123,7 +129,23 @@ export class ServerNats< this.natsClient = null; } - public createNatsClient(): Promise { + public async createNatsClient(): Promise { + natsPackage = await natsPackage; + + // Eagerly initialize serializer/deserializer so they can be used synchronously + if ( + this.serializer && + typeof (this.serializer as any).init === 'function' + ) { + await (this.serializer as any).init(); + } + if ( + this.deserializer && + typeof (this.deserializer as any).init === 'function' + ) { + await (this.deserializer as any).init(); + } + const options = this.options || ({} as NatsOptions); return natsPackage.connect({ servers: NATS_DEFAULT_URL, diff --git a/packages/microservices/server/server-redis.ts b/packages/microservices/server/server-redis.ts index 10bf9c1cd1..5a1dc8bcf5 100644 --- a/packages/microservices/server/server-redis.ts +++ b/packages/microservices/server/server-redis.ts @@ -1,18 +1,22 @@ -import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; import { NO_MESSAGE_HANDLER, REDIS_DEFAULT_HOST, REDIS_DEFAULT_PORT, -} from '../constants'; -import { RedisContext } from '../ctx-host'; -import { Transport } from '../enums'; +} from '../constants.js'; +import { RedisContext } from '../ctx-host/index.js'; +import { Transport } from '../enums/index.js'; import { RedisEvents, RedisEventsMap, RedisStatus, -} from '../events/redis.events'; -import { IncomingRequest, RedisOptions, TransportId } from '../interfaces'; -import { Server } from './server'; +} from '../events/redis.events.js'; +import { + IncomingRequest, + RedisOptions, + TransportId, +} from '../interfaces/index.js'; +import { Server } from './server.js'; // To enable type safety for Redis. This cant be uncommented by default // because it would require the user to install the ioredis package even if they dont use Redis @@ -41,20 +45,22 @@ export class ServerRedis extends Server { constructor(protected readonly options: Required['options']) { super(); - redisPackage = this.loadPackage('ioredis', ServerRedis.name, () => - require('ioredis'), + redisPackage = this.loadPackage( + 'ioredis', + ServerRedis.name, + () => import('ioredis'), ); this.initializeSerializer(options); this.initializeDeserializer(options); } - public listen( + public async listen( callback: (err?: unknown, ...optionalParams: unknown[]) => void, ) { try { - this.subClient = this.createRedisClient(); - this.pubClient = this.createRedisClient(); + this.subClient = await this.createRedisClient(); + this.pubClient = await this.createRedisClient(); [this.subClient, this.pubClient].forEach((client, index) => { const type = index === 0 ? 'pub' : 'sub'; @@ -111,8 +117,10 @@ export class ServerRedis extends Server { this.pendingEventListeners = []; } - public createRedisClient(): Redis { - return new redisPackage({ + public async createRedisClient(): Promise { + redisPackage = await redisPackage; + const RedisClient = redisPackage.default || redisPackage; + return new RedisClient({ port: REDIS_DEFAULT_PORT, host: REDIS_DEFAULT_HOST, ...this.getClientOptions(), diff --git a/packages/microservices/server/server-rmq.ts b/packages/microservices/server/server-rmq.ts index 102c6a81a0..60e84d73d7 100644 --- a/packages/microservices/server/server-rmq.ts +++ b/packages/microservices/server/server-rmq.ts @@ -3,7 +3,7 @@ import { isNil, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; +} from '@nestjs/common/utils/shared.utils.js'; import { CONNECTION_FAILED_MESSAGE, DISCONNECTED_RMQ_MESSAGE, @@ -20,19 +20,23 @@ import { RQM_DEFAULT_URL, RQM_NO_EVENT_HANDLER, RQM_NO_MESSAGE_HANDLER, -} from '../constants'; -import { RmqContext } from '../ctx-host'; -import { Transport } from '../enums'; -import { RmqEvents, RmqEventsMap, RmqStatus } from '../events/rmq.events'; -import { RmqUrl } from '../external/rmq-url.interface'; -import { MessageHandler, RmqOptions, TransportId } from '../interfaces'; +} from '../constants.js'; +import { RmqContext } from '../ctx-host/index.js'; +import { Transport } from '../enums/index.js'; +import { RmqEvents, RmqEventsMap, RmqStatus } from '../events/rmq.events.js'; +import { RmqUrl } from '../external/rmq-url.interface.js'; +import { + MessageHandler, + RmqOptions, + TransportId, +} from '../interfaces/index.js'; import { IncomingRequest, OutgoingResponse, ReadPacket, -} from '../interfaces/packet.interface'; -import { RmqRecordSerializer } from '../serializers/rmq-record.serializer'; -import { Server } from './server'; +} from '../interfaces/packet.interface.js'; +import { RmqRecordSerializer } from '../serializers/rmq-record.serializer.js'; +import { Server } from './server.js'; // To enable type safety for RMQ. This cant be uncommented by default // because it would require the user to install the amqplib package even if they dont use RabbitMQ @@ -82,11 +86,11 @@ export class ServerRMQ extends Server { this.getOptionsProp(this.options, 'queueOptions') || RQM_DEFAULT_QUEUE_OPTIONS; - this.loadPackage('amqplib', ServerRMQ.name, () => require('amqplib')); + this.loadPackage('amqplib', ServerRMQ.name, () => import('amqplib')); rmqPackage = this.loadPackage( 'amqp-connection-manager', ServerRMQ.name, - () => require('amqp-connection-manager'), + () => import('amqp-connection-manager'), ); this.initializeSerializer(options); @@ -112,7 +116,7 @@ export class ServerRMQ extends Server { public async start( callback?: (err?: unknown, ...optionalParams: unknown[]) => void, ) { - this.server = this.createClient(); + this.server = await this.createClient(); this.server!.once(RmqEventsMap.CONNECT, () => { if (this.channel) { return; @@ -162,7 +166,8 @@ export class ServerRMQ extends Server { ); } - public createClient(): T { + public async createClient(): Promise { + rmqPackage = await rmqPackage; const socketOptions = this.getOptionsProp(this.options, 'socketOptions'); return rmqPackage.connect(this.urls, { connectionOptions: socketOptions?.connectionOptions, diff --git a/packages/microservices/server/server-tcp.ts b/packages/microservices/server/server-tcp.ts index eed4fc75a6..3f0e87403b 100644 --- a/packages/microservices/server/server-tcp.ts +++ b/packages/microservices/server/server-tcp.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { isString, isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isString, isUndefined } from '@nestjs/common/utils/shared.utils.js'; import * as net from 'net'; import { Server as NetSocket, Socket } from 'net'; import { createServer as tlsCreateServer, TlsOptions } from 'tls'; @@ -9,23 +9,23 @@ import { NO_MESSAGE_HANDLER, TCP_DEFAULT_HOST, TCP_DEFAULT_PORT, -} from '../constants'; -import { TcpContext } from '../ctx-host/tcp.context'; -import { Transport } from '../enums'; -import { TcpEvents, TcpEventsMap, TcpStatus } from '../events/tcp.events'; -import { JsonSocket, TcpSocket } from '../helpers'; -import { InvalidTcpDataReceptionException } from '../errors/invalid-tcp-data-reception.exception'; +} from '../constants.js'; +import { TcpContext } from '../ctx-host/tcp.context.js'; +import { Transport } from '../enums/index.js'; +import { TcpEvents, TcpEventsMap, TcpStatus } from '../events/tcp.events.js'; +import { JsonSocket, TcpSocket } from '../helpers/index.js'; +import { InvalidTcpDataReceptionException } from '../errors/invalid-tcp-data-reception.exception.js'; import { IncomingRequest, PacketId, ReadPacket, WritePacket, -} from '../interfaces'; +} from '../interfaces/index.js'; import { TcpOptions, TransportId, -} from '../interfaces/microservice-configuration.interface'; -import { Server } from './server'; +} from '../interfaces/microservice-configuration.interface.js'; +import { Server } from './server.js'; /** * @publicApi diff --git a/packages/microservices/server/server.ts b/packages/microservices/server/server.ts index 10b9e72445..87b8ddec04 100644 --- a/packages/microservices/server/server.ts +++ b/packages/microservices/server/server.ts @@ -1,5 +1,11 @@ -import { Logger, LoggerService } from '@nestjs/common/services/logger.service'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; +import { + Logger, + LoggerService, +} from '@nestjs/common/services/logger.service.js'; +import { + loadPackage, + loadPackageSync, +} from '@nestjs/common/utils/load-package.util.js'; import { connectable, EMPTY, @@ -18,10 +24,11 @@ import { finalize, mergeMap, } from 'rxjs/operators'; -import { NO_EVENT_HANDLER } from '../constants'; -import { BaseRpcContext } from '../ctx-host/base-rpc.context'; -import { IncomingRequestDeserializer } from '../deserializers/incoming-request.deserializer'; -import { Transport } from '../enums'; +import { NO_EVENT_HANDLER } from '../constants.js'; +import { BaseRpcContext } from '../ctx-host/base-rpc.context.js'; +import { IncomingRequestDeserializer } from '../deserializers/incoming-request.deserializer.js'; +import { Transport } from '../enums/index.js'; +import { ConsumerDeserializer } from '../interfaces/deserializer.interface.js'; import { ClientOptions, KafkaOptions, @@ -35,11 +42,10 @@ import { RmqOptions, TcpOptions, WritePacket, -} from '../interfaces'; -import { ConsumerDeserializer } from '../interfaces/deserializer.interface'; -import { ConsumerSerializer } from '../interfaces/serializer.interface'; -import { IdentitySerializer } from '../serializers/identity.serializer'; -import { transformPatternToRoute } from '../utils'; +} from '../interfaces/index.js'; +import { ConsumerSerializer } from '../interfaces/serializer.interface.js'; +import { IdentitySerializer } from '../serializers/identity.serializer.js'; +import { transformPatternToRoute } from '../utils/index.js'; /** * @publicApi @@ -290,10 +296,18 @@ export abstract class Server< name: string, ctx: string, loader?: Function, - ): T { + ): T | Promise { return loadPackage(name, ctx, loader); } + protected loadPackageSynchronously( + name: string, + ctx: string, + loader?: () => T, + ): T { + return loadPackageSync(name, ctx, loader); + } + protected initializeSerializer(options: ClientOptions['options']) { this.serializer = (options && diff --git a/packages/microservices/test/client/client-grpc.spec.ts b/packages/microservices/test/client/client-grpc.spec.ts index bb91f8479e..62e4f6bef5 100644 --- a/packages/microservices/test/client/client-grpc.spec.ts +++ b/packages/microservices/test/client/client-grpc.spec.ts @@ -2,12 +2,11 @@ import { Logger } from '@nestjs/common'; import { expect } from 'chai'; import { join } from 'path'; import { Observable, Subject } from 'rxjs'; -import * as sinon from 'sinon'; -import { ClientGrpcProxy } from '../../client'; -import { InvalidGrpcPackageException } from '../../errors/invalid-grpc-package.exception'; -import { InvalidGrpcServiceException } from '../../errors/invalid-grpc-service.exception'; -import { InvalidProtoDefinitionException } from '../../errors/invalid-proto-definition.exception'; -import * as grpcHelpers from '../../helpers/grpc-helpers'; +import sinon from 'sinon'; +import { ClientGrpcProxy } from '../../client/index.js'; +import { InvalidGrpcPackageException } from '../../errors/invalid-grpc-package.exception.js'; +import { InvalidGrpcServiceException } from '../../errors/invalid-grpc-service.exception.js'; +import { InvalidProtoDefinitionException } from '../../errors/invalid-proto-definition.exception.js'; class NoopLogger extends Logger { log(message: any, context?: string): void {} @@ -27,7 +26,7 @@ describe('ClientGrpcProxy', () => { beforeEach(() => { client = new ClientGrpcProxy({ - protoPath: join(__dirname, './test.proto'), + protoPath: join(import.meta.dirname, './test.proto'), package: 'test', }); untypedClient = client as any; @@ -36,54 +35,57 @@ describe('ClientGrpcProxy', () => { protoPath: ['test.proto', 'test2.proto'], package: ['test', 'test2'], loader: { - includeDirs: [join(__dirname, '.')], + includeDirs: [join(import.meta.dirname, '.')], }, }); }); describe('getService', () => { describe('when "grpcClient[name]" is nil', () => { - it('should throw "InvalidGrpcServiceException"', () => { + it('should throw "InvalidGrpcServiceException"', async () => { untypedClient.grpcClient = {}; - expect(() => client.getService('test')).to.throw( - InvalidGrpcServiceException, - ); + try { + await client.getService('test'); + expect.fail('should have thrown'); + } catch (err) { + expect(err).to.be.instanceOf(InvalidGrpcServiceException); + } }); - it('should throw "InvalidGrpcServiceException" (multiple proto)', () => { + it('should throw "InvalidGrpcServiceException" (multiple proto)', async () => { (clientMulti as any).grpcClient = {}; - expect(() => clientMulti.getService('test')).to.throw( - InvalidGrpcServiceException, - ); + try { + await clientMulti.getService('test'); + expect.fail('should have thrown'); + } catch (err) { + expect(err).to.be.instanceOf(InvalidGrpcServiceException); + } - expect(() => clientMulti.getService('test2')).to.throw( - InvalidGrpcServiceException, - ); + try { + await clientMulti.getService('test2'); + expect.fail('should have thrown'); + } catch (err) { + expect(err).to.be.instanceOf(InvalidGrpcServiceException); + } }); }); describe('when "grpcClient[name]" is not nil', () => { - it('should create grpcService', () => { + it('should create grpcService', async () => { untypedClient.grpcClients[0] = { test: GrpcService, }; - expect(() => client.getService('test')).to.not.throw( - InvalidGrpcServiceException, - ); + await client.getService('test'); // should not throw }); describe('when "grpcClient[name]" is not nil (multiple proto)', () => { - it('should create grpcService', () => { + it('should create grpcService', async () => { (clientMulti as any).grpcClients[0] = { test: GrpcService, test2: GrpcService, }; - expect(() => clientMulti.getService('test')).to.not.throw( - InvalidGrpcServiceException, - ); - expect(() => clientMulti.getService('test2')).to.not.throw( - InvalidGrpcServiceException, - ); + await clientMulti.getService('test'); // should not throw + await clientMulti.getService('test2'); // should not throw }); }); }); @@ -446,18 +448,13 @@ describe('ClientGrpcProxy', () => { describe('loadProto', () => { describe('when proto is invalid', () => { it('should throw InvalidProtoDefinitionException', () => { - const getPackageDefinitionStub = sinon.stub( - grpcHelpers, - 'getGrpcPackageDefinition' as any, - ); - getPackageDefinitionStub.callsFake(() => { - throw new Error(); - }); - untypedClient.logger = new NoopLogger(); - expect(() => client.loadProto()).to.throws( - InvalidProtoDefinitionException, - ); - getPackageDefinitionStub.restore(); + expect( + () => + new ClientGrpcProxy({ + protoPath: '/nonexistent/invalid.proto', + package: 'test', + }), + ).to.throws(InvalidProtoDefinitionException); }); }); }); diff --git a/packages/microservices/test/client/client-kafka.spec.ts b/packages/microservices/test/client/client-kafka.spec.ts index 773a985902..411988020b 100644 --- a/packages/microservices/test/client/client-kafka.spec.ts +++ b/packages/microservices/test/client/client-kafka.spec.ts @@ -2,15 +2,15 @@ import { expect } from 'chai'; import { Producer } from 'kafkajs'; import { Observable } from 'rxjs'; import * as sinon from 'sinon'; -import { ClientKafka } from '../../client/client-kafka'; -import { NO_MESSAGE_HANDLER } from '../../constants'; -import { KafkaHeaders } from '../../enums'; -import { InvalidKafkaClientTopicException } from '../../errors/invalid-kafka-client-topic.exception'; +import { ClientKafka } from '../../client/client-kafka.js'; +import { NO_MESSAGE_HANDLER } from '../../constants.js'; +import { KafkaHeaders } from '../../enums/index.js'; +import { InvalidKafkaClientTopicException } from '../../errors/invalid-kafka-client-topic.exception.js'; import { ConsumerGroupJoinEvent, EachMessagePayload, KafkaMessage, -} from '../../external/kafka.interface'; +} from '../../external/kafka.interface.js'; describe('ClientKafka', () => { const topic = 'test.topic'; @@ -229,7 +229,7 @@ describe('ClientKafka', () => { client = new ClientKafka({}); }); - it(`should accept a custom logCreator in client options`, () => { + it(`should accept a custom logCreator in client options`, async () => { const logCreatorSpy = sinon.spy(() => 'test'); const logCreator = () => logCreatorSpy; @@ -240,7 +240,8 @@ describe('ClientKafka', () => { }, }); - const logger = client.createClient().logger(); + const kafkaClient = await client.createClient(); + const logger = kafkaClient.logger(); logger.info({ namespace: '', level: 1, log: 'test' }); diff --git a/packages/microservices/test/client/client-mqtt.spec.ts b/packages/microservices/test/client/client-mqtt.spec.ts index 35845b6685..78f6da9c8b 100644 --- a/packages/microservices/test/client/client-mqtt.spec.ts +++ b/packages/microservices/test/client/client-mqtt.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import { EMPTY } from 'rxjs'; import * as sinon from 'sinon'; -import { ClientMqtt } from '../../client/client-mqtt'; -import { MqttEventsMap } from '../../events/mqtt.events'; -import { ReadPacket } from '../../interfaces'; -import { MqttRecord } from '../../record-builders'; +import { ClientMqtt } from '../../client/client-mqtt.js'; +import { MqttEventsMap } from '../../events/mqtt.events.js'; +import { ReadPacket } from '../../interfaces/index.js'; +import { MqttRecord } from '../../record-builders/index.js'; describe('ClientMqtt', () => { const test = 'test'; diff --git a/packages/microservices/test/client/client-nats.spec.ts b/packages/microservices/test/client/client-nats.spec.ts index c818351fe3..75d4507e56 100644 --- a/packages/microservices/test/client/client-nats.spec.ts +++ b/packages/microservices/test/client/client-nats.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import { headers as createHeaders, JSONCodec } from 'nats'; import * as sinon from 'sinon'; -import { ClientNats } from '../../client/client-nats'; -import { ReadPacket } from '../../interfaces'; -import { NatsRecord } from '../../record-builders'; +import { ClientNats } from '../../client/client-nats.js'; +import { ReadPacket } from '../../interfaces/index.js'; +import { NatsRecord } from '../../record-builders/index.js'; describe('ClientNats', () => { let client: ClientNats; @@ -23,10 +23,13 @@ describe('ClientNats', () => { subscription: any, createClient: sinon.SinonStub; - beforeEach(() => { + beforeEach(async () => { client = new ClientNats({}); untypedClient = client as any; + // Resolve the nats package (loaded asynchronously in constructor) + await client.createClient().catch(() => {}); + msg = { pattern, data: 'data' }; unsubscribeSpy = sinon.spy(); subscription = { @@ -49,7 +52,7 @@ describe('ClientNats', () => { }); createClient = sinon .stub(client, 'createClient') - .callsFake(() => untypedClient); + .callsFake(async () => untypedClient); }); afterEach(() => { connectSpy.restore(); @@ -167,7 +170,7 @@ describe('ClientNats', () => { callback = sinon.spy(); subscription = client.createSubscriptionHandler(msg, callback); - subscription(undefined, natsMessage); + await subscription(undefined, natsMessage); }); it('should call callback with expected arguments', () => { expect( @@ -182,7 +185,7 @@ describe('ClientNats', () => { beforeEach(async () => { callback = sinon.spy(); subscription = client.createSubscriptionHandler(msg, callback); - subscription(undefined, { + await subscription(undefined, { data: JSONCodec().encode({ ...responseMessage, isDisposed: true, @@ -336,10 +339,13 @@ describe('ClientNats', () => { let msg: ReadPacket; let subscribeStub: sinon.SinonStub, natsClient: any; - beforeEach(() => { + beforeEach(async () => { client = new ClientNats({}); untypedClient = client as any; + // Resolve the nats package (loaded asynchronously in constructor) + await client.createClient().catch(() => {}); + msg = { pattern: 'pattern', data: 'data' }; subscribeStub = sinon .stub() diff --git a/packages/microservices/test/client/client-proxy-factory.spec.ts b/packages/microservices/test/client/client-proxy-factory.spec.ts index 2bc656f0ed..b49dfc5f4e 100644 --- a/packages/microservices/test/client/client-proxy-factory.spec.ts +++ b/packages/microservices/test/client/client-proxy-factory.spec.ts @@ -1,14 +1,14 @@ import { expect } from 'chai'; -import { ClientProxyFactory } from '../../client/client-proxy-factory'; -import { ClientTCP } from '../../client/client-tcp'; -import { Transport } from '../../enums/transport.enum'; -import { ClientRedis } from '../../client/client-redis'; -import { ClientNats } from '../../client/client-nats'; -import { ClientMqtt } from '../../client/client-mqtt'; -import { ClientGrpcProxy } from '../../client/client-grpc'; -import { ClientRMQ } from '../../client/client-rmq'; -import { ClientKafka } from '../../client/client-kafka'; import { join } from 'path'; +import { ClientGrpcProxy } from '../../client/client-grpc.js'; +import { ClientKafka } from '../../client/client-kafka.js'; +import { ClientMqtt } from '../../client/client-mqtt.js'; +import { ClientNats } from '../../client/client-nats.js'; +import { ClientProxyFactory } from '../../client/client-proxy-factory.js'; +import { ClientRedis } from '../../client/client-redis.js'; +import { ClientRMQ } from '../../client/client-rmq.js'; +import { ClientTCP } from '../../client/client-tcp.js'; +import { Transport } from '../../enums/transport.enum.js'; describe('ClientProxyFactory', () => { describe('create', () => { @@ -36,7 +36,7 @@ describe('ClientProxyFactory', () => { const proxy = ClientProxyFactory.create({ transport: Transport.GRPC, options: { - protoPath: join(__dirname, './test.proto'), + protoPath: join(import.meta.dirname, './test.proto'), package: 'test', }, }); diff --git a/packages/microservices/test/client/client-proxy.spec.ts b/packages/microservices/test/client/client-proxy.spec.ts index e0afccdb03..28aeb03b95 100644 --- a/packages/microservices/test/client/client-proxy.spec.ts +++ b/packages/microservices/test/client/client-proxy.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import { Observable } from 'rxjs'; import * as sinon from 'sinon'; -import { ClientProxy } from '../../client/client-proxy'; -import { ReadPacket } from '../../interfaces'; +import { ClientProxy } from '../../client/client-proxy.js'; +import { ReadPacket } from '../../interfaces/index.js'; class TestClientProxy extends ClientProxy { protected async dispatchEvent( diff --git a/packages/microservices/test/client/client-redis.spec.ts b/packages/microservices/test/client/client-redis.spec.ts index 17486764ff..3369769f22 100644 --- a/packages/microservices/test/client/client-redis.spec.ts +++ b/packages/microservices/test/client/client-redis.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ClientRedis } from '../../client/client-redis'; -import { RedisEventsMap } from '../../events/redis.events'; +import { ClientRedis } from '../../client/client-redis.js'; +import { RedisEventsMap } from '../../events/redis.events.js'; describe('ClientRedis', () => { const test = 'test'; diff --git a/packages/microservices/test/client/client-rmq.spec.ts b/packages/microservices/test/client/client-rmq.spec.ts index 243ef89051..13baad121a 100644 --- a/packages/microservices/test/client/client-rmq.spec.ts +++ b/packages/microservices/test/client/client-rmq.spec.ts @@ -2,9 +2,9 @@ import { expect } from 'chai'; import { EventEmitter } from 'events'; import { EMPTY } from 'rxjs'; import * as sinon from 'sinon'; -import { ClientRMQ } from '../../client/client-rmq'; -import { ReadPacket } from '../../interfaces'; -import { RmqRecord } from '../../record-builders'; +import { ClientRMQ } from '../../client/client-rmq.js'; +import { ReadPacket } from '../../interfaces/index.js'; +import { RmqRecord } from '../../record-builders/index.js'; describe('ClientRMQ', function () { this.retries(10); diff --git a/packages/microservices/test/client/client-tcp.spec.ts b/packages/microservices/test/client/client-tcp.spec.ts index dbf3d85b89..ad945b22ef 100644 --- a/packages/microservices/test/client/client-tcp.spec.ts +++ b/packages/microservices/test/client/client-tcp.spec.ts @@ -2,9 +2,9 @@ import { expect } from 'chai'; import { Socket as NetSocket } from 'net'; import * as sinon from 'sinon'; import { TLSSocket } from 'tls'; -import { ClientTCP } from '../../client/client-tcp'; -import { TcpEventsMap } from '../../events/tcp.events'; -import { TcpSocket } from '../../helpers/tcp-socket'; +import { ClientTCP } from '../../client/client-tcp.js'; +import { TcpEventsMap } from '../../events/tcp.events.js'; +import { TcpSocket } from '../../helpers/tcp-socket.js'; describe('ClientTCP', () => { let client: ClientTCP; diff --git a/packages/microservices/test/container.spec.ts b/packages/microservices/test/container.spec.ts index 402d881325..107c4956b8 100644 --- a/packages/microservices/test/container.spec.ts +++ b/packages/microservices/test/container.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { ClientsContainer } from '../container'; +import { ClientsContainer } from '../container.js'; describe('ClientsContainer', () => { let instance: ClientsContainer; diff --git a/packages/microservices/test/context/exception-filters-context.spec.ts b/packages/microservices/test/context/exception-filters-context.spec.ts index f55c4019e2..c83e087400 100644 --- a/packages/microservices/test/context/exception-filters-context.spec.ts +++ b/packages/microservices/test/context/exception-filters-context.spec.ts @@ -1,11 +1,11 @@ -import { NestContainer } from '@nestjs/core/injector/container'; +import { NestContainer } from '@nestjs/core/injector/container.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Catch } from '../../../common/decorators/core/catch.decorator'; -import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator'; -import { ApplicationConfig } from '../../../core/application-config'; -import { InstanceWrapper } from '../../../core/injector/instance-wrapper'; -import { ExceptionFiltersContext } from '../../context/exception-filters-context'; +import { Catch } from '../../../common/decorators/core/catch.decorator.js'; +import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator.js'; +import { ApplicationConfig } from '../../../core/application-config.js'; +import { InstanceWrapper } from '../../../core/injector/instance-wrapper.js'; +import { ExceptionFiltersContext } from '../../context/exception-filters-context.js'; describe('ExceptionFiltersContext', () => { let applicationConfig: ApplicationConfig; diff --git a/packages/microservices/test/context/request-context-host.spec.ts b/packages/microservices/test/context/request-context-host.spec.ts index 7c7fb09268..04d8379457 100644 --- a/packages/microservices/test/context/request-context-host.spec.ts +++ b/packages/microservices/test/context/request-context-host.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RequestContextHost } from '../../context/request-context-host'; -import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; +import { RequestContextHost } from '../../context/request-context-host.js'; +import { BaseRpcContext } from '../../ctx-host/base-rpc.context.js'; describe('RequestContextHost', () => { const data = { test: true }; diff --git a/packages/microservices/test/context/rpc-context-creator.spec.ts b/packages/microservices/test/context/rpc-context-creator.spec.ts index 8b9f11d23d..a67794df96 100644 --- a/packages/microservices/test/context/rpc-context-creator.spec.ts +++ b/packages/microservices/test/context/rpc-context-creator.spec.ts @@ -1,23 +1,23 @@ -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { Injectable, UseGuards, UsePipes } from '../../../common'; -import { CUSTOM_ROUTE_ARGS_METADATA } from '../../../common/constants'; -import { ApplicationConfig } from '../../../core/application-config'; -import { GuardsConsumer } from '../../../core/guards/guards-consumer'; -import { GuardsContextCreator } from '../../../core/guards/guards-context-creator'; -import { NestContainer } from '../../../core/injector/container'; -import { InterceptorsConsumer } from '../../../core/interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '../../../core/interceptors/interceptors-context-creator'; -import { PipesConsumer } from '../../../core/pipes/pipes-consumer'; -import { PipesContextCreator } from '../../../core/pipes/pipes-context-creator'; -import { ExceptionFiltersContext } from '../../context/exception-filters-context'; -import { RpcContextCreator } from '../../context/rpc-context-creator'; -import { RpcProxy } from '../../context/rpc-proxy'; -import { RpcParamtype } from '../../enums/rpc-paramtype.enum'; -import { RpcParamsFactory } from '../../factories/rpc-params-factory'; -import { RpcException } from '../../index'; +import { Injectable, UseGuards, UsePipes } from '../../../common/index.js'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '../../../common/constants.js'; +import { ApplicationConfig } from '../../../core/application-config.js'; +import { GuardsConsumer } from '../../../core/guards/guards-consumer.js'; +import { GuardsContextCreator } from '../../../core/guards/guards-context-creator.js'; +import { NestContainer } from '../../../core/injector/container.js'; +import { InterceptorsConsumer } from '../../../core/interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '../../../core/interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '../../../core/pipes/pipes-consumer.js'; +import { PipesContextCreator } from '../../../core/pipes/pipes-context-creator.js'; +import { ExceptionFiltersContext } from '../../context/exception-filters-context.js'; +import { RpcContextCreator } from '../../context/rpc-context-creator.js'; +import { RpcProxy } from '../../context/rpc-proxy.js'; +import { RpcParamtype } from '../../enums/rpc-paramtype.enum.js'; +import { RpcParamsFactory } from '../../factories/rpc-params-factory.js'; +import { RpcException } from '../../index.js'; @Injectable() class TestGuard { diff --git a/packages/microservices/test/context/rpc-proxy.spec.ts b/packages/microservices/test/context/rpc-proxy.spec.ts index ccfac6d2d9..a65e522711 100644 --- a/packages/microservices/test/context/rpc-proxy.spec.ts +++ b/packages/microservices/test/context/rpc-proxy.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import { of, throwError } from 'rxjs'; import * as sinon from 'sinon'; -import { RpcProxy } from '../../context/rpc-proxy'; -import { RpcException } from '../../exceptions/rpc-exception'; -import { RpcExceptionsHandler } from '../../exceptions/rpc-exceptions-handler'; +import { RpcProxy } from '../../context/rpc-proxy.js'; +import { RpcException } from '../../exceptions/rpc-exception.js'; +import { RpcExceptionsHandler } from '../../exceptions/rpc-exceptions-handler.js'; describe('RpcProxy', () => { let routerProxy: RpcProxy; diff --git a/packages/microservices/test/ctx-host/base-rpc-context.spec.ts b/packages/microservices/test/ctx-host/base-rpc-context.spec.ts index 866567657b..2d89631433 100644 --- a/packages/microservices/test/ctx-host/base-rpc-context.spec.ts +++ b/packages/microservices/test/ctx-host/base-rpc-context.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; +import { BaseRpcContext } from '../../ctx-host/base-rpc.context.js'; describe('BaseRpcContext', () => { const args = [1, 2, 3]; diff --git a/packages/microservices/test/ctx-host/kafka.context.spec.ts b/packages/microservices/test/ctx-host/kafka.context.spec.ts index 11ba734561..f5da2b0441 100644 --- a/packages/microservices/test/ctx-host/kafka.context.spec.ts +++ b/packages/microservices/test/ctx-host/kafka.context.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; -import { KafkaContext } from '../../ctx-host'; +import { KafkaContext } from '../../ctx-host/index.js'; import { Consumer, KafkaMessage, Producer, -} from '../../external/kafka.interface'; +} from '../../external/kafka.interface.js'; describe('KafkaContext', () => { const args = [ diff --git a/packages/microservices/test/ctx-host/mqtt.context.spec.ts b/packages/microservices/test/ctx-host/mqtt.context.spec.ts index b811fa7599..774b25a58e 100644 --- a/packages/microservices/test/ctx-host/mqtt.context.spec.ts +++ b/packages/microservices/test/ctx-host/mqtt.context.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { MqttContext } from '../../ctx-host'; +import { MqttContext } from '../../ctx-host/index.js'; describe('MqttContext', () => { const args = ['test', { test: true }]; diff --git a/packages/microservices/test/ctx-host/nats.context.spec.ts b/packages/microservices/test/ctx-host/nats.context.spec.ts index 2704ea875f..a031edadf4 100644 --- a/packages/microservices/test/ctx-host/nats.context.spec.ts +++ b/packages/microservices/test/ctx-host/nats.context.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { NatsContext } from '../../ctx-host'; +import { NatsContext } from '../../ctx-host/index.js'; describe('NatsContext', () => { const args: [string, any] = ['test', {}]; diff --git a/packages/microservices/test/ctx-host/redis.context.spec.ts b/packages/microservices/test/ctx-host/redis.context.spec.ts index 7901b18e6b..0e4c8b86f5 100644 --- a/packages/microservices/test/ctx-host/redis.context.spec.ts +++ b/packages/microservices/test/ctx-host/redis.context.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { RedisContext } from '../../ctx-host'; +import { RedisContext } from '../../ctx-host/index.js'; describe('RedisContext', () => { const args = ['test']; diff --git a/packages/microservices/test/ctx-host/rmq.context.spec.ts b/packages/microservices/test/ctx-host/rmq.context.spec.ts index 64f637b679..58dbb9696c 100644 --- a/packages/microservices/test/ctx-host/rmq.context.spec.ts +++ b/packages/microservices/test/ctx-host/rmq.context.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { RmqContext } from '../../ctx-host'; +import { RmqContext } from '../../ctx-host/index.js'; describe('RmqContext', () => { const args = [{ test: true }, 'test', 'pattern']; diff --git a/packages/microservices/test/ctx-host/tcp.context.spec.ts b/packages/microservices/test/ctx-host/tcp.context.spec.ts index 58067f7272..94179078d5 100644 --- a/packages/microservices/test/ctx-host/tcp.context.spec.ts +++ b/packages/microservices/test/ctx-host/tcp.context.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { TcpContext } from '../../ctx-host'; +import { TcpContext } from '../../ctx-host/index.js'; describe('TcpContext', () => { const args = [{}, 'pattern']; diff --git a/packages/microservices/test/decorators/client.decorator.spec.ts b/packages/microservices/test/decorators/client.decorator.spec.ts index 39492ca7e8..8b6f40850f 100644 --- a/packages/microservices/test/decorators/client.decorator.spec.ts +++ b/packages/microservices/test/decorators/client.decorator.spec.ts @@ -3,8 +3,8 @@ import { expect } from 'chai'; import { CLIENT_METADATA, CLIENT_CONFIGURATION_METADATA, -} from '../../constants'; -import { Client } from '../../decorators/client.decorator'; +} from '../../constants.js'; +import { Client } from '../../decorators/client.decorator.js'; describe('@Client', () => { const pattern = { role: 'test' }; diff --git a/packages/microservices/test/decorators/ctx.decorator.spec.ts b/packages/microservices/test/decorators/ctx.decorator.spec.ts index 7ca9c9fccb..c7172847c7 100644 --- a/packages/microservices/test/decorators/ctx.decorator.spec.ts +++ b/packages/microservices/test/decorators/ctx.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { PARAM_ARGS_METADATA } from '../../constants'; -import { Ctx } from '../../decorators'; -import { RpcParamtype } from '../../enums/rpc-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../../constants.js'; +import { Ctx } from '../../decorators/index.js'; +import { RpcParamtype } from '../../enums/rpc-paramtype.enum.js'; class CtxTest { public test(@Ctx() ctx: any) {} diff --git a/packages/microservices/test/decorators/event-pattern.decorator.spec.ts b/packages/microservices/test/decorators/event-pattern.decorator.spec.ts index 13cbb26844..550bd378c1 100644 --- a/packages/microservices/test/decorators/event-pattern.decorator.spec.ts +++ b/packages/microservices/test/decorators/event-pattern.decorator.spec.ts @@ -3,9 +3,9 @@ import { PATTERN_EXTRAS_METADATA, PATTERN_METADATA, TRANSPORT_METADATA, -} from '../../constants'; -import { EventPattern } from '../../decorators/event-pattern.decorator'; -import { Transport } from '../../enums/transport.enum'; +} from '../../constants.js'; +import { EventPattern } from '../../decorators/event-pattern.decorator.js'; +import { Transport } from '../../enums/transport.enum.js'; describe('@EventPattern', () => { const pattern = { role: 'test' }; diff --git a/packages/microservices/test/decorators/message-pattern.decorator.spec.ts b/packages/microservices/test/decorators/message-pattern.decorator.spec.ts index c37c3643cb..88f86a4d19 100644 --- a/packages/microservices/test/decorators/message-pattern.decorator.spec.ts +++ b/packages/microservices/test/decorators/message-pattern.decorator.spec.ts @@ -3,15 +3,15 @@ import { PATTERN_EXTRAS_METADATA, PATTERN_METADATA, TRANSPORT_METADATA, -} from '../../constants'; +} from '../../constants.js'; import { GrpcMethod, GrpcMethodStreamingType, GrpcStreamCall, GrpcStreamMethod, MessagePattern, -} from '../../decorators/message-pattern.decorator'; -import { Transport } from '../../enums/transport.enum'; +} from '../../decorators/message-pattern.decorator.js'; +import { Transport } from '../../enums/transport.enum.js'; describe('@MessagePattern', () => { const pattern = { role: 'test' }; diff --git a/packages/microservices/test/decorators/payload.decorator.spec.ts b/packages/microservices/test/decorators/payload.decorator.spec.ts index b8bfa96f51..308d23af99 100644 --- a/packages/microservices/test/decorators/payload.decorator.spec.ts +++ b/packages/microservices/test/decorators/payload.decorator.spec.ts @@ -1,8 +1,8 @@ import { ValidationPipe } from '@nestjs/common'; import { expect } from 'chai'; -import { PARAM_ARGS_METADATA } from '../../constants'; -import { Payload } from '../../decorators'; -import { RpcParamtype } from '../../enums/rpc-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../../constants.js'; +import { Payload } from '../../decorators/index.js'; +import { RpcParamtype } from '../../enums/rpc-paramtype.enum.js'; class MessagePayloadTest { public test(@Payload(ValidationPipe) payload: any) {} diff --git a/packages/microservices/test/deserializers/identity.deserializer.spec.ts b/packages/microservices/test/deserializers/identity.deserializer.spec.ts index 10336bb353..f536a57d87 100644 --- a/packages/microservices/test/deserializers/identity.deserializer.spec.ts +++ b/packages/microservices/test/deserializers/identity.deserializer.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { IdentityDeserializer } from '../../deserializers/identity.deserializer'; +import { IdentityDeserializer } from '../../deserializers/identity.deserializer.js'; describe('IdentityDeserializer', () => { let instance: IdentityDeserializer; diff --git a/packages/microservices/test/deserializers/incoming-request.deserializer.spec.ts b/packages/microservices/test/deserializers/incoming-request.deserializer.spec.ts index 69007e3ada..ca9ea955b3 100644 --- a/packages/microservices/test/deserializers/incoming-request.deserializer.spec.ts +++ b/packages/microservices/test/deserializers/incoming-request.deserializer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { IncomingRequestDeserializer } from '../../deserializers/incoming-request.deserializer'; -import { IncomingRequest } from '../../interfaces'; +import { IncomingRequestDeserializer } from '../../deserializers/incoming-request.deserializer.js'; +import { IncomingRequest } from '../../interfaces/index.js'; describe('IncomingRequestDeserializer', () => { let instance: IncomingRequestDeserializer; diff --git a/packages/microservices/test/deserializers/incoming-response.deserializer.spec.ts b/packages/microservices/test/deserializers/incoming-response.deserializer.spec.ts index 9437527927..e097786121 100644 --- a/packages/microservices/test/deserializers/incoming-response.deserializer.spec.ts +++ b/packages/microservices/test/deserializers/incoming-response.deserializer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { IncomingResponseDeserializer } from '../../deserializers/incoming-response.deserializer'; -import { IncomingResponse } from '../../interfaces'; +import { IncomingResponseDeserializer } from '../../deserializers/incoming-response.deserializer.js'; +import { IncomingResponse } from '../../interfaces/index.js'; describe('IncomingResponseDeserializer', () => { let instance: IncomingResponseDeserializer; diff --git a/packages/microservices/test/deserializers/kafka-response.deserializer.spec.ts b/packages/microservices/test/deserializers/kafka-response.deserializer.spec.ts index 30b3276427..672fcbe537 100644 --- a/packages/microservices/test/deserializers/kafka-response.deserializer.spec.ts +++ b/packages/microservices/test/deserializers/kafka-response.deserializer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { KafkaResponseDeserializer } from '../../deserializers/kafka-response.deserializer'; -import { KafkaHeaders } from '../../enums/kafka-headers.enum'; +import { KafkaResponseDeserializer } from '../../deserializers/kafka-response.deserializer.js'; +import { KafkaHeaders } from '../../enums/kafka-headers.enum.js'; describe('KafkaResponseDeserializer', () => { const id = '10'; diff --git a/packages/microservices/test/exceptions/rpc-exception.spec.ts b/packages/microservices/test/exceptions/rpc-exception.spec.ts index 76b3871904..3801a42ce9 100644 --- a/packages/microservices/test/exceptions/rpc-exception.spec.ts +++ b/packages/microservices/test/exceptions/rpc-exception.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { RpcException } from '../../exceptions/rpc-exception'; +import { RpcException } from '../../exceptions/rpc-exception.js'; describe('RpcException', () => { describe('when string passed', () => { diff --git a/packages/microservices/test/exceptions/rpc-exceptions-handler.spec.ts b/packages/microservices/test/exceptions/rpc-exceptions-handler.spec.ts index 8765f73461..a794e430b7 100644 --- a/packages/microservices/test/exceptions/rpc-exceptions-handler.spec.ts +++ b/packages/microservices/test/exceptions/rpc-exceptions-handler.spec.ts @@ -2,8 +2,8 @@ import { expect } from 'chai'; import { EMPTY, of } from 'rxjs'; import { catchError } from 'rxjs/operators'; import * as sinon from 'sinon'; -import { RpcException } from '../../exceptions/rpc-exception'; -import { RpcExceptionsHandler } from '../../exceptions/rpc-exceptions-handler'; +import { RpcException } from '../../exceptions/rpc-exception.js'; +import { RpcExceptionsHandler } from '../../exceptions/rpc-exceptions-handler.js'; describe('RpcExceptionsHandler', () => { let handler: RpcExceptionsHandler; diff --git a/packages/microservices/test/factories/rpc-params-factory.spec.ts b/packages/microservices/test/factories/rpc-params-factory.spec.ts index 4065807768..89ef2cd390 100644 --- a/packages/microservices/test/factories/rpc-params-factory.spec.ts +++ b/packages/microservices/test/factories/rpc-params-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RpcParamtype } from '../../enums/rpc-paramtype.enum'; -import { RpcParamsFactory } from '../../factories/rpc-params-factory'; +import { RpcParamtype } from '../../enums/rpc-paramtype.enum.js'; +import { RpcParamsFactory } from '../../factories/rpc-params-factory.js'; describe('RpcParamsFactory', () => { let factory: RpcParamsFactory; diff --git a/packages/microservices/test/helpers/grpc-helpers.spec.ts b/packages/microservices/test/helpers/grpc-helpers.spec.ts index e8844a1f9d..fe114e5b92 100644 --- a/packages/microservices/test/helpers/grpc-helpers.spec.ts +++ b/packages/microservices/test/helpers/grpc-helpers.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { InvalidGrpcPackageDefinitionMissingPackageDefinitionException } from '../../errors/invalid-grpc-package-definition-missing-package-definition.exception'; -import { InvalidGrpcPackageDefinitionMutexException } from '../../errors/invalid-grpc-package-definition-mutex.exception'; -import { getGrpcPackageDefinition } from '../../helpers/grpc-helpers'; +import { InvalidGrpcPackageDefinitionMissingPackageDefinitionException } from '../../errors/invalid-grpc-package-definition-missing-package-definition.exception.js'; +import { InvalidGrpcPackageDefinitionMutexException } from '../../errors/invalid-grpc-package-definition-mutex.exception.js'; +import { getGrpcPackageDefinition } from '../../helpers/grpc-helpers.js'; const grpcProtoLoaderPackage = { loadSync: (a, b) => 'withLoader' }; diff --git a/packages/microservices/test/helpers/kafka-logger.spec.ts b/packages/microservices/test/helpers/kafka-logger.spec.ts index 844d35d7a5..d46fd4d0cd 100644 --- a/packages/microservices/test/helpers/kafka-logger.spec.ts +++ b/packages/microservices/test/helpers/kafka-logger.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { logLevel } from '../../external/kafka.interface'; -import { KafkaLogger } from '../../helpers/kafka-logger'; +import { logLevel } from '../../external/kafka.interface.js'; +import { KafkaLogger } from '../../helpers/kafka-logger.js'; const namespace = 'namespace'; const label = 'label'; diff --git a/packages/microservices/test/helpers/kafka-parser.spec.ts b/packages/microservices/test/helpers/kafka-parser.spec.ts index e4f8babcdd..ba1e8f9cfa 100644 --- a/packages/microservices/test/helpers/kafka-parser.spec.ts +++ b/packages/microservices/test/helpers/kafka-parser.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { KafkaHeaders } from '../../enums/kafka-headers.enum'; -import { KafkaParser } from '../../helpers/kafka-parser'; +import { KafkaHeaders } from '../../enums/kafka-headers.enum.js'; +import { KafkaParser } from '../../helpers/kafka-parser.js'; describe('KafkaParser', () => { describe('parse', () => { diff --git a/packages/microservices/test/helpers/kafka-reply-partition-assigner.spec.ts b/packages/microservices/test/helpers/kafka-reply-partition-assigner.spec.ts index 1004deb5c1..176eb4512a 100644 --- a/packages/microservices/test/helpers/kafka-reply-partition-assigner.spec.ts +++ b/packages/microservices/test/helpers/kafka-reply-partition-assigner.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; -import * as sinon from 'sinon'; import * as Kafka from 'kafkajs'; -import { KafkaReplyPartitionAssigner } from '../../helpers/kafka-reply-partition-assigner'; -import { ClientKafka } from '../../client/client-kafka'; +import * as sinon from 'sinon'; +import { ClientKafka } from '../../client/client-kafka.js'; +import { KafkaReplyPartitionAssigner } from '../../helpers/kafka-reply-partition-assigner.js'; describe('kafka reply partition assigner', () => { let cluster, topics, metadata, assigner, client; @@ -10,11 +10,12 @@ describe('kafka reply partition assigner', () => { let getConsumerAssignments: sinon.SinonSpy; let getPreviousAssignment: sinon.SinonSpy; - beforeEach(() => { + beforeEach(async () => { metadata = {}; cluster = { findTopicPartitionMetadata: topic => metadata[topic] }; client = new ClientKafka({}); assigner = new KafkaReplyPartitionAssigner(client, { cluster }); + await assigner.init(); topics = ['topic-A', 'topic-B']; getConsumerAssignments = sinon.spy(client, 'getConsumerAssignments'); @@ -257,14 +258,14 @@ describe('kafka reply partition assigner', () => { }); describe('protocol', () => { - it('returns the assigner name and metadata', () => { + it('returns the assigner name and metadata', async () => { // set previous assignments client.consumerAssignments = { 'topic-A': 0, 'topic-B': 1, }; - const protocol = assigner.protocol({ topics }); + const protocol = await assigner.protocol({ topics }); expect(getPreviousAssignment.calledOnce).to.be.true; expect(getConsumerAssignments.calledOnce).to.be.true; diff --git a/packages/microservices/test/json-socket/connection.spec.ts b/packages/microservices/test/json-socket/connection.spec.ts index 195788c84e..b5555449cc 100644 --- a/packages/microservices/test/json-socket/connection.spec.ts +++ b/packages/microservices/test/json-socket/connection.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import { AddressInfo, createServer, Socket } from 'net'; -import { TcpEventsMap } from '../../events/tcp.events'; -import { JsonSocket } from '../../helpers/json-socket'; -import { longPayload } from './data/long-payload-with-special-chars'; -import * as helpers from './helpers'; -import { ip } from './helpers'; +import { TcpEventsMap } from '../../events/tcp.events.js'; +import { JsonSocket } from '../../helpers/json-socket.js'; +import { longPayload } from './data/long-payload-with-special-chars.js'; +import * as helpers from './helpers.js'; +import { ip } from './helpers.js'; const MESSAGE_EVENT = 'message'; diff --git a/packages/microservices/test/json-socket/helpers.ts b/packages/microservices/test/json-socket/helpers.ts index d09fcf279f..3087615868 100644 --- a/packages/microservices/test/json-socket/helpers.ts +++ b/packages/microservices/test/json-socket/helpers.ts @@ -4,8 +4,8 @@ import { Server, Socket, } from 'net'; -import { TcpEventsMap } from '../../events/tcp.events'; -import { JsonSocket } from '../../helpers/json-socket'; +import { TcpEventsMap } from '../../events/tcp.events.js'; +import { JsonSocket } from '../../helpers/json-socket.js'; export const ip = '127.0.0.1'; diff --git a/packages/microservices/test/json-socket/listener-chaining.spec.ts b/packages/microservices/test/json-socket/listener-chaining.spec.ts index 24f9206188..797204898b 100644 --- a/packages/microservices/test/json-socket/listener-chaining.spec.ts +++ b/packages/microservices/test/json-socket/listener-chaining.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { TcpEventsMap } from '../../events/tcp.events'; -import { JsonSocket } from '../../helpers/json-socket'; -import * as helpers from './helpers'; +import { TcpEventsMap } from '../../events/tcp.events.js'; +import { JsonSocket } from '../../helpers/json-socket.js'; +import * as helpers from './helpers.js'; const MESSAGE_EVENT = 'message'; diff --git a/packages/microservices/test/json-socket/max-buffer-size.spec.ts b/packages/microservices/test/json-socket/max-buffer-size.spec.ts index fc97f45bce..9897beaf22 100644 --- a/packages/microservices/test/json-socket/max-buffer-size.spec.ts +++ b/packages/microservices/test/json-socket/max-buffer-size.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import { Socket } from 'net'; import * as sinon from 'sinon'; -import { MaxPacketLengthExceededException } from '../../errors/max-packet-length-exceeded.exception'; -import { TcpEventsMap } from '../../events/tcp.events'; -import { JsonSocket } from '../../helpers/json-socket'; +import { MaxPacketLengthExceededException } from '../../errors/max-packet-length-exceeded.exception.js'; +import { TcpEventsMap } from '../../events/tcp.events.js'; +import { JsonSocket } from '../../helpers/json-socket.js'; const DEFAULT_MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; // 512 MBs in characters with 4 bytes per character (32-bit) diff --git a/packages/microservices/test/json-socket/message-parsing.spec.ts b/packages/microservices/test/json-socket/message-parsing.spec.ts index e42fa42a57..d47018f395 100644 --- a/packages/microservices/test/json-socket/message-parsing.spec.ts +++ b/packages/microservices/test/json-socket/message-parsing.spec.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import { Socket } from 'net'; import * as sinon from 'sinon'; -import { TcpEventsMap } from '../../events/tcp.events'; -import { JsonSocket } from '../../helpers/json-socket'; +import { TcpEventsMap } from '../../events/tcp.events.js'; +import { JsonSocket } from '../../helpers/json-socket.js'; const MESSAGE_EVENT = 'message'; diff --git a/packages/microservices/test/listeners-controller.spec.ts b/packages/microservices/test/listeners-controller.spec.ts index 18fc28dd2b..9b24f97b0c 100644 --- a/packages/microservices/test/listeners-controller.spec.ts +++ b/packages/microservices/test/listeners-controller.spec.ts @@ -1,23 +1,23 @@ import { Scope } from '@nestjs/common'; import { ApplicationConfig } from '@nestjs/core'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { Injector } from '@nestjs/core/injector/injector'; -import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { Injector } from '@nestjs/core/injector/injector.js'; +import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { GraphInspector } from '../../core/inspector/graph-inspector'; -import { MetadataScanner } from '../../core/metadata-scanner'; -import { ClientProxyFactory } from '../client'; -import { ClientsContainer } from '../container'; -import { ExceptionFiltersContext } from '../context/exception-filters-context'; -import { RpcContextCreator } from '../context/rpc-context-creator'; -import { Transport } from '../enums/transport.enum'; +import { GraphInspector } from '../../core/inspector/graph-inspector.js'; +import { MetadataScanner } from '../../core/metadata-scanner.js'; +import { ClientProxyFactory } from '../client/index.js'; +import { ClientsContainer } from '../container.js'; +import { ExceptionFiltersContext } from '../context/exception-filters-context.js'; +import { RpcContextCreator } from '../context/rpc-context-creator.js'; +import { Transport } from '../enums/transport.enum.js'; import { EventOrMessageListenerDefinition, ListenerMetadataExplorer, -} from '../listener-metadata-explorer'; -import { ListenersController } from '../listeners-controller'; +} from '../listener-metadata-explorer.js'; +import { ListenersController } from '../listeners-controller.js'; describe('ListenersController', () => { let instance: ListenersController, diff --git a/packages/microservices/test/listeners-metadata-explorer.spec.ts b/packages/microservices/test/listeners-metadata-explorer.spec.ts index 079beeffbe..e60155aadb 100644 --- a/packages/microservices/test/listeners-metadata-explorer.spec.ts +++ b/packages/microservices/test/listeners-metadata-explorer.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { MetadataScanner } from '../../core/metadata-scanner'; -import { Client } from '../decorators/client.decorator'; -import { EventPattern } from '../decorators/event-pattern.decorator'; -import { MessagePattern } from '../decorators/message-pattern.decorator'; -import { Transport } from '../enums/transport.enum'; -import { ListenerMetadataExplorer } from '../listener-metadata-explorer'; +import { MetadataScanner } from '../../core/metadata-scanner.js'; +import { Client } from '../decorators/client.decorator.js'; +import { EventPattern } from '../decorators/event-pattern.decorator.js'; +import { MessagePattern } from '../decorators/message-pattern.decorator.js'; +import { Transport } from '../enums/transport.enum.js'; +import { ListenerMetadataExplorer } from '../listener-metadata-explorer.js'; describe('ListenerMetadataExplorer', () => { const msgPattern = { pattern: 'testMsg' }; diff --git a/packages/microservices/test/module/clients.module.spec.ts b/packages/microservices/test/module/clients.module.spec.ts index 454b8f2803..cb12d42e59 100644 --- a/packages/microservices/test/module/clients.module.spec.ts +++ b/packages/microservices/test/module/clients.module.spec.ts @@ -6,10 +6,13 @@ import { } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { ClientProxyFactory } from '../../client'; -import { Transport } from '../../enums'; -import { ClientOptions } from '../../interfaces'; -import { ClientsModule, ClientsModuleOptionsFactory } from '../../module'; +import { ClientProxyFactory } from '../../client/index.js'; +import { Transport } from '../../enums/index.js'; +import { ClientOptions } from '../../interfaces/index.js'; +import { + ClientsModule, + ClientsModuleOptionsFactory, +} from '../../module/index.js'; describe('ClientsModule', () => { let dynamicModule: DynamicModule; diff --git a/packages/microservices/test/nest-microservice.spec.ts b/packages/microservices/test/nest-microservice.spec.ts index 804f145223..48eff4d7d2 100644 --- a/packages/microservices/test/nest-microservice.spec.ts +++ b/packages/microservices/test/nest-microservice.spec.ts @@ -1,9 +1,9 @@ -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; -import { Transport } from '@nestjs/microservices/enums'; -import { AsyncMicroserviceOptions } from '@nestjs/microservices/interfaces'; -import { NestMicroservice } from '@nestjs/microservices/nest-microservice'; -import { Server, ServerTCP } from '@nestjs/microservices/server'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; +import { Transport } from '@nestjs/microservices/enums/index.js'; +import { AsyncMicroserviceOptions } from '@nestjs/microservices/interfaces/index.js'; +import { NestMicroservice } from '@nestjs/microservices/nest-microservice.js'; +import { Server, ServerTCP } from '@nestjs/microservices/server/index.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; diff --git a/packages/microservices/test/serializers/identity.serializer.spec.ts b/packages/microservices/test/serializers/identity.serializer.spec.ts index 2df2fdbe60..dd3d9bee1e 100644 --- a/packages/microservices/test/serializers/identity.serializer.spec.ts +++ b/packages/microservices/test/serializers/identity.serializer.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { IdentitySerializer } from '../../serializers/identity.serializer'; +import { IdentitySerializer } from '../../serializers/identity.serializer.js'; describe('IdentitySerializer', () => { let instance: IdentitySerializer; diff --git a/packages/microservices/test/serializers/kafka-request.serializer.spec.ts b/packages/microservices/test/serializers/kafka-request.serializer.spec.ts index ed07a013ac..f05d05d0a7 100644 --- a/packages/microservices/test/serializers/kafka-request.serializer.spec.ts +++ b/packages/microservices/test/serializers/kafka-request.serializer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { KafkaHeaders } from '../../enums/kafka-headers.enum'; -import { KafkaRequestSerializer } from '../../serializers/kafka-request.serializer'; +import { KafkaHeaders } from '../../enums/kafka-headers.enum.js'; +import { KafkaRequestSerializer } from '../../serializers/kafka-request.serializer.js'; describe('KafkaRequestSerializer', () => { let instance: KafkaRequestSerializer; diff --git a/packages/microservices/test/serializers/mqtt-record.serializer.spec.ts b/packages/microservices/test/serializers/mqtt-record.serializer.spec.ts index 0070904f68..ff3f1aaa0d 100644 --- a/packages/microservices/test/serializers/mqtt-record.serializer.spec.ts +++ b/packages/microservices/test/serializers/mqtt-record.serializer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { MqttRecordBuilder } from '../../record-builders'; -import { MqttRecordSerializer } from '../../serializers/mqtt-record.serializer'; +import { MqttRecordBuilder } from '../../record-builders/index.js'; +import { MqttRecordSerializer } from '../../serializers/mqtt-record.serializer.js'; describe('MqttRecordSerializer', () => { let instance: MqttRecordSerializer; diff --git a/packages/microservices/test/serializers/nats-record.serializer.spec.ts b/packages/microservices/test/serializers/nats-record.serializer.spec.ts index b34ed0a0ba..e2df70aa73 100644 --- a/packages/microservices/test/serializers/nats-record.serializer.spec.ts +++ b/packages/microservices/test/serializers/nats-record.serializer.spec.ts @@ -1,67 +1,70 @@ import { expect } from 'chai'; import * as nats from 'nats'; -import { NatsRecordBuilder } from '../../record-builders'; -import { NatsRecordSerializer } from '../../serializers/nats-record.serializer'; +import { NatsRecordBuilder } from '../../record-builders/index.js'; +import { NatsRecordSerializer } from '../../serializers/nats-record.serializer.js'; const jsonCodec = nats.JSONCodec(); describe('NatsRecordSerializer', () => { let instance: NatsRecordSerializer; - beforeEach(() => { + beforeEach(async () => { instance = new NatsRecordSerializer(); + await instance.init(); }); describe('serialize', () => { - it('undefined', () => { - expect(instance.serialize({ data: undefined })).to.deep.eq({ + it('undefined', async () => { + expect(await instance.serialize({ data: undefined })).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: undefined }), }); }); - it('null', () => { - expect(instance.serialize({ data: null })).to.deep.eq({ + it('null', async () => { + expect(await instance.serialize({ data: null })).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: null }), }); }); - it('string', () => { - expect(instance.serialize({ data: 'string' })).to.deep.eq({ + it('string', async () => { + expect(await instance.serialize({ data: 'string' })).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: 'string' }), }); }); - it('number', () => { - expect(instance.serialize({ data: 12345 })).to.deep.eq({ + it('number', async () => { + expect(await instance.serialize({ data: 12345 })).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: 12345 }), }); }); - it('buffer', () => { - expect(instance.serialize({ data: Buffer.from('buffer') })).to.deep.eq({ + it('buffer', async () => { + expect( + await instance.serialize({ data: Buffer.from('buffer') }), + ).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: Buffer.from('buffer') }), }); }); - it('array', () => { - expect(instance.serialize({ data: [1, 2, 3, 4, 5] })).to.deep.eq({ + it('array', async () => { + expect(await instance.serialize({ data: [1, 2, 3, 4, 5] })).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: [1, 2, 3, 4, 5] }), }); }); - it('object', () => { + it('object', async () => { const serObject = { prop: 'value' }; - expect(instance.serialize({ data: serObject })).to.deep.eq({ + expect(await instance.serialize({ data: serObject })).to.deep.eq({ headers: undefined, data: jsonCodec.encode({ data: serObject }), }); }); - it('nats message with data and nats headers', () => { + it('nats message with data and nats headers', async () => { const natsHeaders = nats.headers(); natsHeaders.set('1', 'header_1'); const natsMessage = new NatsRecordBuilder() @@ -69,7 +72,7 @@ describe('NatsRecordSerializer', () => { .setData({ value: 'string' }) .build(); expect( - instance.serialize({ + await instance.serialize({ data: natsMessage, }), ).to.deep.eq({ diff --git a/packages/microservices/test/serializers/rmq-record.serializer.spec.ts b/packages/microservices/test/serializers/rmq-record.serializer.spec.ts index b9dc420286..f41c834f4f 100644 --- a/packages/microservices/test/serializers/rmq-record.serializer.spec.ts +++ b/packages/microservices/test/serializers/rmq-record.serializer.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { RmqRecordBuilder } from '../../record-builders'; -import { RmqRecordSerializer } from '../../serializers/rmq-record.serializer'; +import { RmqRecordBuilder } from '../../record-builders/index.js'; +import { RmqRecordSerializer } from '../../serializers/rmq-record.serializer.js'; describe('RmqRecordSerializer', () => { const pattern = 'test'; diff --git a/packages/microservices/test/server/server-factory.spec.ts b/packages/microservices/test/server/server-factory.spec.ts index 62e5904556..c478db7d4b 100644 --- a/packages/microservices/test/server/server-factory.spec.ts +++ b/packages/microservices/test/server/server-factory.spec.ts @@ -1,13 +1,13 @@ import { expect } from 'chai'; -import { Transport } from '../../enums/transport.enum'; -import { ServerFactory } from '../../server/server-factory'; -import { ServerGrpc } from '../../server/server-grpc'; -import { ServerKafka } from '../../server/server-kafka'; -import { ServerMqtt } from '../../server/server-mqtt'; -import { ServerNats } from '../../server/server-nats'; -import { ServerRedis } from '../../server/server-redis'; -import { ServerRMQ } from '../../server/server-rmq'; -import { ServerTCP } from '../../server/server-tcp'; +import { Transport } from '../../enums/transport.enum.js'; +import { ServerFactory } from '../../server/server-factory.js'; +import { ServerGrpc } from '../../server/server-grpc.js'; +import { ServerKafka } from '../../server/server-kafka.js'; +import { ServerMqtt } from '../../server/server-mqtt.js'; +import { ServerNats } from '../../server/server-nats.js'; +import { ServerRedis } from '../../server/server-redis.js'; +import { ServerRMQ } from '../../server/server-rmq.js'; +import { ServerTCP } from '../../server/server-tcp.js'; describe('ServerFactory', () => { describe('create', () => { diff --git a/packages/microservices/test/server/server-grpc.spec.ts b/packages/microservices/test/server/server-grpc.spec.ts index 6f1e40888e..c0500d2c3e 100644 --- a/packages/microservices/test/server/server-grpc.spec.ts +++ b/packages/microservices/test/server/server-grpc.spec.ts @@ -3,11 +3,10 @@ import { expect } from 'chai'; import { join } from 'path'; import { ReplaySubject, Subject, throwError } from 'rxjs'; import * as sinon from 'sinon'; -import { InvalidGrpcPackageException } from '../../errors/invalid-grpc-package.exception'; -import { InvalidProtoDefinitionException } from '../../errors/invalid-proto-definition.exception'; -import * as grpcHelpers from '../../helpers/grpc-helpers'; -import { GrpcMethodStreamingType } from '../../index'; -import { ServerGrpc } from '../../server'; +import { InvalidGrpcPackageException } from '../../errors/invalid-grpc-package.exception.js'; +import { InvalidProtoDefinitionException } from '../../errors/invalid-proto-definition.exception.js'; +import { GrpcMethodStreamingType } from '../../index.js'; +import { ServerGrpc } from '../../server/index.js'; const CANCELLED_EVENT = 'cancelled'; @@ -24,7 +23,7 @@ describe('ServerGrpc', () => { beforeEach(() => { server = new ServerGrpc({ - protoPath: join(__dirname, './test.proto'), + protoPath: join(import.meta.dirname, './test.proto'), package: 'test', }); untypedServer = server as any; @@ -33,7 +32,7 @@ describe('ServerGrpc', () => { protoPath: ['test.proto', 'test2.proto'], package: ['test', 'test2'], loader: { - includeDirs: [join(__dirname, '.')], + includeDirs: [join(import.meta.dirname, '.')], }, }); }); @@ -851,18 +850,14 @@ describe('ServerGrpc', () => { describe('loadProto', () => { describe('when proto is invalid', () => { it('should throw InvalidProtoDefinitionException', () => { - const getPackageDefinitionStub = sinon.stub( - grpcHelpers, - 'getGrpcPackageDefinition' as any, - ); - getPackageDefinitionStub.callsFake(() => { - throw new Error(); + const invalidServer = new ServerGrpc({ + protoPath: '/nonexistent/invalid.proto', + package: 'test', }); - untypedServer.logger = new NoopLogger(); - expect(() => server.loadProto()).to.throws( + (invalidServer as any).logger = new NoopLogger(); + expect(() => invalidServer.loadProto()).to.throws( InvalidProtoDefinitionException, ); - getPackageDefinitionStub.restore(); }); }); }); diff --git a/packages/microservices/test/server/server-kafka.spec.ts b/packages/microservices/test/server/server-kafka.spec.ts index 855299200c..c40511380d 100644 --- a/packages/microservices/test/server/server-kafka.spec.ts +++ b/packages/microservices/test/server/server-kafka.spec.ts @@ -1,15 +1,15 @@ import { Logger } from '@nestjs/common'; import { AssertionError, expect } from 'chai'; import * as sinon from 'sinon'; -import { NO_MESSAGE_HANDLER } from '../../constants'; -import { KafkaContext } from '../../ctx-host'; -import { KafkaHeaders } from '../../enums'; +import { NO_MESSAGE_HANDLER } from '../../constants.js'; +import { KafkaContext } from '../../ctx-host/index.js'; +import { KafkaHeaders } from '../../enums/index.js'; import { EachMessagePayload, KafkaMessage, -} from '../../external/kafka.interface'; -import { ServerKafka } from '../../server'; -import { objectToMap } from './utils/object-to-map'; +} from '../../external/kafka.interface.js'; +import { ServerKafka } from '../../server/index.js'; +import { objectToMap } from './utils/object-to-map.js'; class NoopLogger extends Logger { log(message: any, context?: string): void {} @@ -150,7 +150,7 @@ describe('ServerKafka', () => { consumer: consumerStub, producer: producerStub, }; - sinon.stub(server, 'createClient').callsFake(() => client); + sinon.stub(server, 'createClient').callsFake(async () => client); untypedServer = server as any; }); @@ -536,7 +536,7 @@ describe('ServerKafka', () => { }); describe('createClient', () => { - it('should accept a custom logCreator in client options', () => { + it('should accept a custom logCreator in client options', async () => { const logCreatorSpy = sinon.spy(() => 'test'); const logCreator = () => logCreatorSpy; @@ -547,7 +547,8 @@ describe('ServerKafka', () => { }, }); - const logger = server.createClient().logger(); + const kafkaClient = await server.createClient(); + const logger = kafkaClient.logger(); logger.info({ namespace: '', level: 1, log: 'test' }); diff --git a/packages/microservices/test/server/server-mqtt.spec.ts b/packages/microservices/test/server/server-mqtt.spec.ts index 036c0d3f8c..3192caadd0 100644 --- a/packages/microservices/test/server/server-mqtt.spec.ts +++ b/packages/microservices/test/server/server-mqtt.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { NO_MESSAGE_HANDLER } from '../../constants'; -import { MqttContext } from '../../ctx-host'; -import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; -import { ServerMqtt } from '../../server/server-mqtt'; -import { objectToMap } from './utils/object-to-map'; +import { NO_MESSAGE_HANDLER } from '../../constants.js'; +import { MqttContext } from '../../ctx-host/index.js'; +import { BaseRpcContext } from '../../ctx-host/base-rpc.context.js'; +import { ServerMqtt } from '../../server/server-mqtt.js'; +import { objectToMap } from './utils/object-to-map.js'; describe('ServerMqtt', () => { let server: ServerMqtt; diff --git a/packages/microservices/test/server/server-nats.spec.ts b/packages/microservices/test/server/server-nats.spec.ts index 47cf398455..ca17f0a3fc 100644 --- a/packages/microservices/test/server/server-nats.spec.ts +++ b/packages/microservices/test/server/server-nats.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import { JSONCodec } from 'nats'; import * as sinon from 'sinon'; -import { NO_MESSAGE_HANDLER } from '../../constants'; -import { NatsContext } from '../../ctx-host'; -import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; -import { ServerNats } from '../../server/server-nats'; -import { objectToMap } from './utils/object-to-map'; +import { NO_MESSAGE_HANDLER } from '../../constants.js'; +import { BaseRpcContext } from '../../ctx-host/base-rpc.context.js'; +import { NatsContext } from '../../ctx-host/index.js'; +import { ServerNats } from '../../server/server-nats.js'; +import { objectToMap } from './utils/object-to-map.js'; // type NatsMsg = import('nats').Msg; type NatsMsg = any; @@ -14,9 +14,17 @@ describe('ServerNats', () => { let server: ServerNats; let untypedServer: any; - beforeEach(() => { + beforeEach(async () => { server = new ServerNats({}); untypedServer = server as any; + + // Eagerly init serializer/deserializer (loadPackage is async in ESM) + if (typeof (untypedServer.serializer as any)?.init === 'function') { + await untypedServer.serializer.init(); + } + if (typeof (untypedServer.deserializer as any)?.init === 'function') { + await untypedServer.deserializer.init(); + } }); describe('listen', () => { let client: any; diff --git a/packages/microservices/test/server/server-redis.spec.ts b/packages/microservices/test/server/server-redis.spec.ts index 402cf87bb9..348df9b569 100644 --- a/packages/microservices/test/server/server-redis.spec.ts +++ b/packages/microservices/test/server/server-redis.spec.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { NO_MESSAGE_HANDLER } from '../../constants'; -import { RedisContext } from '../../ctx-host'; -import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; -import { ServerRedis } from '../../server/server-redis'; -import { objectToMap } from './utils/object-to-map'; +import { NO_MESSAGE_HANDLER } from '../../constants.js'; +import { BaseRpcContext } from '../../ctx-host/base-rpc.context.js'; +import { RedisContext } from '../../ctx-host/index.js'; +import { ServerRedis } from '../../server/server-redis.js'; +import { objectToMap } from './utils/object-to-map.js'; describe('ServerRedis', () => { let server: ServerRedis; @@ -28,27 +28,29 @@ describe('ServerRedis', () => { on: onSpy, connect: connectSpy, }; - sinon.stub(server, 'createRedisClient').callsFake(() => client); + sinon + .stub(server, 'createRedisClient') + .callsFake(() => Promise.resolve(client)); callbackSpy = sinon.spy(); }); - it('should bind "error" event to handler', () => { - server.listen(callbackSpy); + it('should bind "error" event to handler', async () => { + await server.listen(callbackSpy); expect(onSpy.getCall(0).args[0]).to.be.equal('error'); }); - it('should call "RedisClient#connect()"', () => { - server.listen(callbackSpy); + it('should call "RedisClient#connect()"', async () => { + await server.listen(callbackSpy); expect(connectSpy.called).to.be.true; }); describe('when "start" throws an exception', () => { - it('should call callback with a thrown error as an argument', () => { + it('should call callback with a thrown error as an argument', async () => { const error = new Error('random error'); const callbackSpy = sinon.spy(); sinon.stub(server, 'start').callsFake(() => { throw error; }); - server.listen(callbackSpy); + await server.listen(callbackSpy); expect(callbackSpy.calledWith(error)).to.be.true; }); }); diff --git a/packages/microservices/test/server/server-rmq.spec.ts b/packages/microservices/test/server/server-rmq.spec.ts index 2872891bc6..2ccd428bd9 100644 --- a/packages/microservices/test/server/server-rmq.spec.ts +++ b/packages/microservices/test/server/server-rmq.spec.ts @@ -1,9 +1,9 @@ import { assert, expect } from 'chai'; import * as sinon from 'sinon'; -import { NO_MESSAGE_HANDLER, RQM_DEFAULT_QUEUE } from '../../constants'; -import { RmqContext } from '../../ctx-host'; -import { ServerRMQ } from '../../server/server-rmq'; -import { objectToMap } from './utils/object-to-map'; +import { NO_MESSAGE_HANDLER, RQM_DEFAULT_QUEUE } from '../../constants.js'; +import { RmqContext } from '../../ctx-host/index.js'; +import { ServerRMQ } from '../../server/server-rmq.js'; +import { objectToMap } from './utils/object-to-map.js'; describe('ServerRMQ', () => { let server: ServerRMQ; diff --git a/packages/microservices/test/server/server-tcp.spec.ts b/packages/microservices/test/server/server-tcp.spec.ts index fb54d90013..3570fec179 100644 --- a/packages/microservices/test/server/server-tcp.spec.ts +++ b/packages/microservices/test/server/server-tcp.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import { Socket as NetSocket } from 'net'; import * as sinon from 'sinon'; -import { NO_MESSAGE_HANDLER } from '../../constants'; -import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; -import { TcpSocket } from '../../helpers/tcp-socket'; -import { ServerTCP } from '../../server/server-tcp'; -import { objectToMap } from './utils/object-to-map'; +import { NO_MESSAGE_HANDLER } from '../../constants.js'; +import { BaseRpcContext } from '../../ctx-host/base-rpc.context.js'; +import { TcpSocket } from '../../helpers/tcp-socket.js'; +import { ServerTCP } from '../../server/server-tcp.js'; +import { objectToMap } from './utils/object-to-map.js'; describe('ServerTCP', () => { let server: ServerTCP; diff --git a/packages/microservices/test/server/server.spec.ts b/packages/microservices/test/server/server.spec.ts index 3c7fe801fc..f7204c07fc 100644 --- a/packages/microservices/test/server/server.spec.ts +++ b/packages/microservices/test/server/server.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import { throwError as _throw, lastValueFrom, Observable, of } from 'rxjs'; import * as sinon from 'sinon'; -import { Server } from '../../server/server'; +import { Server } from '../../server/server.js'; class TestServer extends Server { public on< diff --git a/packages/microservices/test/utils/transform-pattern.utils.spec.ts b/packages/microservices/test/utils/transform-pattern.utils.spec.ts index 4ea4b84237..d58fba6b99 100644 --- a/packages/microservices/test/utils/transform-pattern.utils.spec.ts +++ b/packages/microservices/test/utils/transform-pattern.utils.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { MsPattern } from '../../interfaces'; -import { transformPatternToRoute } from '../../utils/transform-pattern.utils'; +import { MsPattern } from '../../interfaces/index.js'; +import { transformPatternToRoute } from '../../utils/transform-pattern.utils.js'; function equalTest(testPatterns: MsPattern[], expectedResults: R[]) { testPatterns.forEach((testPattern: MsPattern, index: number) => { diff --git a/packages/microservices/tsconfig.build.json b/packages/microservices/tsconfig.build.json index e8b71a07ae..38ded6e68f 100644 --- a/packages/microservices/tsconfig.build.json +++ b/packages/microservices/tsconfig.build.json @@ -2,15 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/core": ["../core"], - "@nestjs/core/*": ["../core/*"], - "@nestjs/websockets": ["../websockets"], - "@nestjs/websockets/*": ["../websockets/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/microservices/utils/index.ts b/packages/microservices/utils/index.ts index 74dcc28e97..0389607970 100644 --- a/packages/microservices/utils/index.ts +++ b/packages/microservices/utils/index.ts @@ -1 +1 @@ -export * from './transform-pattern.utils'; +export * from './transform-pattern.utils.js'; diff --git a/packages/microservices/utils/param.utils.ts b/packages/microservices/utils/param.utils.ts index 6096709dbb..2030eb29ea 100644 --- a/packages/microservices/utils/param.utils.ts +++ b/packages/microservices/utils/param.utils.ts @@ -1,9 +1,9 @@ import { PipeTransform, Type } from '@nestjs/common'; -import { assignMetadata } from '@nestjs/common/decorators/http/route-params.decorator'; -import { isNil, isString } from '@nestjs/common/utils/shared.utils'; +import { assignMetadata } from '@nestjs/common/decorators/http/route-params.decorator.js'; +import { isNil, isString } from '@nestjs/common/utils/shared.utils.js'; import 'reflect-metadata'; -import { PARAM_ARGS_METADATA } from '../constants'; -import { RpcParamtype } from '../enums/rpc-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../constants.js'; +import { RpcParamtype } from '../enums/rpc-paramtype.enum.js'; export function createRpcParamDecorator( paramtype: RpcParamtype, diff --git a/packages/microservices/utils/transform-pattern.utils.ts b/packages/microservices/utils/transform-pattern.utils.ts index 4bcb299edf..b4c2fdec79 100644 --- a/packages/microservices/utils/transform-pattern.utils.ts +++ b/packages/microservices/utils/transform-pattern.utils.ts @@ -2,8 +2,8 @@ import { isObject, isString, isNumber, -} from '@nestjs/common/utils/shared.utils'; -import { MsPattern } from '../interfaces'; +} from '@nestjs/common/utils/shared.utils.js'; +import { MsPattern } from '../interfaces/index.js'; /** * Transforms the Pattern to Route. diff --git a/packages/platform-express/adapters/express-adapter.ts b/packages/platform-express/adapters/express-adapter.ts index 454396ba07..da47c3a02d 100644 --- a/packages/platform-express/adapters/express-adapter.ts +++ b/packages/platform-express/adapters/express-adapter.ts @@ -8,33 +8,33 @@ import { VersioningOptions, VersioningType, } from '@nestjs/common'; -import { VersionValue } from '@nestjs/common/interfaces'; import { CorsOptions, CorsOptionsDelegate, -} from '@nestjs/common/interfaces/external/cors-options.interface'; -import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface'; +} from '@nestjs/common/interfaces/external/cors-options.interface.js'; +import { VersionValue } from '@nestjs/common/interfaces/index.js'; +import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface.js'; import { isFunction, isNil, isObject, isString, isUndefined, -} from '@nestjs/common/utils/shared.utils'; -import { AbstractHttpAdapter } from '@nestjs/core/adapters/http-adapter'; -import { RouterMethodFactory } from '@nestjs/core/helpers/router-method-factory'; -import { LegacyRouteConverter } from '@nestjs/core/router/legacy-route-converter'; -import * as cors from 'cors'; -import * as express from 'express'; +} from '@nestjs/common/utils/shared.utils.js'; +import { AbstractHttpAdapter } from '@nestjs/core/adapters/http-adapter.js'; +import { RouterMethodFactory } from '@nestjs/core/helpers/router-method-factory.js'; +import { LegacyRouteConverter } from '@nestjs/core/router/legacy-route-converter.js'; +import cors from 'cors'; +import express from 'express'; import type { Server } from 'http'; import * as http from 'http'; import * as https from 'https'; import { pathToRegexp } from 'path-to-regexp'; import { Duplex, Writable } from 'stream'; -import { NestExpressBodyParserOptions } from '../interfaces/nest-express-body-parser-options.interface'; -import { NestExpressBodyParserType } from '../interfaces/nest-express-body-parser.interface'; -import { ServeStaticOptions } from '../interfaces/serve-static-options.interface'; -import { getBodyParserOptions } from './utils/get-body-parser-options.util'; +import { NestExpressBodyParserOptions } from '../interfaces/nest-express-body-parser-options.interface.js'; +import { NestExpressBodyParserType } from '../interfaces/nest-express-body-parser.interface.js'; +import { ServeStaticOptions } from '../interfaces/serve-static-options.interface.js'; +import { getBodyParserOptions } from './utils/get-body-parser-options.util.js'; type VersionedRoute = < TRequest extends Record = any, diff --git a/packages/platform-express/adapters/index.ts b/packages/platform-express/adapters/index.ts index 3644487c62..7591ddf554 100644 --- a/packages/platform-express/adapters/index.ts +++ b/packages/platform-express/adapters/index.ts @@ -1 +1 @@ -export * from './express-adapter'; +export * from './express-adapter.js'; diff --git a/packages/platform-express/adapters/utils/get-body-parser-options.util.ts b/packages/platform-express/adapters/utils/get-body-parser-options.util.ts index f7833ad68b..90856d6a16 100644 --- a/packages/platform-express/adapters/utils/get-body-parser-options.util.ts +++ b/packages/platform-express/adapters/utils/get-body-parser-options.util.ts @@ -1,6 +1,6 @@ import type { RawBodyRequest } from '@nestjs/common'; import type { IncomingMessage, ServerResponse } from 'http'; -import type { NestExpressBodyParserOptions } from '../../interfaces'; +import type { NestExpressBodyParserOptions } from '../../interfaces/index.js'; const rawBodyParser = ( req: RawBodyRequest, diff --git a/packages/platform-express/index.ts b/packages/platform-express/index.ts index 9afc788692..6cc7211a50 100644 --- a/packages/platform-express/index.ts +++ b/packages/platform-express/index.ts @@ -5,6 +5,6 @@ * MIT Licensed */ -export * from './adapters'; -export * from './interfaces'; -export * from './multer'; +export * from './adapters/index.js'; +export * from './interfaces/index.js'; +export * from './multer/index.js'; diff --git a/packages/platform-express/interfaces/index.ts b/packages/platform-express/interfaces/index.ts index ac057435a0..8b0c441976 100644 --- a/packages/platform-express/interfaces/index.ts +++ b/packages/platform-express/interfaces/index.ts @@ -1,3 +1,3 @@ -export * from './nest-express-application.interface'; -export { NestExpressBodyParserOptions } from './nest-express-body-parser-options.interface'; -export * from './nest-express-body-parser.interface'; +export * from './nest-express-application.interface.js'; +export { NestExpressBodyParserOptions } from './nest-express-body-parser-options.interface.js'; +export * from './nest-express-body-parser.interface.js'; diff --git a/packages/platform-express/interfaces/nest-express-application.interface.ts b/packages/platform-express/interfaces/nest-express-application.interface.ts index ade7aecf00..9599c75a1b 100644 --- a/packages/platform-express/interfaces/nest-express-application.interface.ts +++ b/packages/platform-express/interfaces/nest-express-application.interface.ts @@ -2,13 +2,13 @@ import { HttpServer, INestApplication } from '@nestjs/common'; import type { CorsOptions, CorsOptionsDelegate, -} from '@nestjs/common/interfaces/external/cors-options.interface'; +} from '@nestjs/common/interfaces/external/cors-options.interface.js'; import type { Express } from 'express'; import type { Server as CoreHttpServer } from 'http'; import type { Server as CoreHttpsServer } from 'https'; -import { NestExpressBodyParserOptions } from './nest-express-body-parser-options.interface'; -import { NestExpressBodyParserType } from './nest-express-body-parser.interface'; -import { ServeStaticOptions } from './serve-static-options.interface'; +import { NestExpressBodyParserOptions } from './nest-express-body-parser-options.interface.js'; +import { NestExpressBodyParserType } from './nest-express-body-parser.interface.js'; +import { ServeStaticOptions } from './serve-static-options.interface.js'; /** * Interface describing methods on NestExpressApplication. diff --git a/packages/platform-express/multer/index.ts b/packages/platform-express/multer/index.ts index 7afd4aab89..ed06a2e569 100644 --- a/packages/platform-express/multer/index.ts +++ b/packages/platform-express/multer/index.ts @@ -1,3 +1,3 @@ -export * from './interceptors'; -export * from './interfaces'; -export * from './multer.module'; +export * from './interceptors/index.js'; +export * from './interfaces/index.js'; +export * from './multer.module.js'; diff --git a/packages/platform-express/multer/interceptors/any-files.interceptor.ts b/packages/platform-express/multer/interceptors/any-files.interceptor.ts index 28a332fdd4..ea256a9c9d 100644 --- a/packages/platform-express/multer/interceptors/any-files.interceptor.ts +++ b/packages/platform-express/multer/interceptors/any-files.interceptor.ts @@ -7,12 +7,12 @@ import { Optional, Type, } from '@nestjs/common'; -import * as multer from 'multer'; +import multer from 'multer'; import { Observable } from 'rxjs'; -import { MULTER_MODULE_OPTIONS } from '../files.constants'; -import { MulterModuleOptions } from '../interfaces'; -import { MulterOptions } from '../interfaces/multer-options.interface'; -import { transformException } from '../multer/multer.utils'; +import { MULTER_MODULE_OPTIONS } from '../files.constants.js'; +import { MulterModuleOptions } from '../interfaces/index.js'; +import { MulterOptions } from '../interfaces/multer-options.interface.js'; +import { transformException } from '../multer/multer.utils.js'; type MulterInstance = any; diff --git a/packages/platform-express/multer/interceptors/file-fields.interceptor.ts b/packages/platform-express/multer/interceptors/file-fields.interceptor.ts index 27f05afca7..d46583d339 100644 --- a/packages/platform-express/multer/interceptors/file-fields.interceptor.ts +++ b/packages/platform-express/multer/interceptors/file-fields.interceptor.ts @@ -7,15 +7,15 @@ import { Optional, Type, } from '@nestjs/common'; -import * as multer from 'multer'; +import multer from 'multer'; import { Observable } from 'rxjs'; -import { MULTER_MODULE_OPTIONS } from '../files.constants'; -import { MulterModuleOptions } from '../interfaces'; +import { MULTER_MODULE_OPTIONS } from '../files.constants.js'; +import { MulterModuleOptions } from '../interfaces/index.js'; import { MulterField, MulterOptions, -} from '../interfaces/multer-options.interface'; -import { transformException } from '../multer/multer.utils'; +} from '../interfaces/multer-options.interface.js'; +import { transformException } from '../multer/multer.utils.js'; type MulterInstance = any; diff --git a/packages/platform-express/multer/interceptors/file.interceptor.ts b/packages/platform-express/multer/interceptors/file.interceptor.ts index bbc8f3947f..b3e159f122 100644 --- a/packages/platform-express/multer/interceptors/file.interceptor.ts +++ b/packages/platform-express/multer/interceptors/file.interceptor.ts @@ -7,12 +7,12 @@ import { Optional, Type, } from '@nestjs/common'; -import * as multer from 'multer'; +import multer from 'multer'; import { Observable } from 'rxjs'; -import { MULTER_MODULE_OPTIONS } from '../files.constants'; -import { MulterModuleOptions } from '../interfaces'; -import { MulterOptions } from '../interfaces/multer-options.interface'; -import { transformException } from '../multer/multer.utils'; +import { MULTER_MODULE_OPTIONS } from '../files.constants.js'; +import { MulterModuleOptions } from '../interfaces/index.js'; +import { MulterOptions } from '../interfaces/multer-options.interface.js'; +import { transformException } from '../multer/multer.utils.js'; type MulterInstance = any; diff --git a/packages/platform-express/multer/interceptors/files.interceptor.ts b/packages/platform-express/multer/interceptors/files.interceptor.ts index dbdb1abe0f..c12432007b 100644 --- a/packages/platform-express/multer/interceptors/files.interceptor.ts +++ b/packages/platform-express/multer/interceptors/files.interceptor.ts @@ -7,12 +7,12 @@ import { Optional, Type, } from '@nestjs/common'; -import * as multer from 'multer'; +import multer from 'multer'; import { Observable } from 'rxjs'; -import { MULTER_MODULE_OPTIONS } from '../files.constants'; -import { MulterModuleOptions } from '../interfaces'; -import { MulterOptions } from '../interfaces/multer-options.interface'; -import { transformException } from '../multer/multer.utils'; +import { MULTER_MODULE_OPTIONS } from '../files.constants.js'; +import { MulterModuleOptions } from '../interfaces/index.js'; +import { MulterOptions } from '../interfaces/multer-options.interface.js'; +import { transformException } from '../multer/multer.utils.js'; type MulterInstance = any; diff --git a/packages/platform-express/multer/interceptors/index.ts b/packages/platform-express/multer/interceptors/index.ts index 855620d976..5bdca24476 100644 --- a/packages/platform-express/multer/interceptors/index.ts +++ b/packages/platform-express/multer/interceptors/index.ts @@ -1,5 +1,5 @@ -export * from './any-files.interceptor'; -export * from './file-fields.interceptor'; -export * from './file.interceptor'; -export * from './files.interceptor'; -export * from './no-files.interceptor'; +export * from './any-files.interceptor.js'; +export * from './file-fields.interceptor.js'; +export * from './file.interceptor.js'; +export * from './files.interceptor.js'; +export * from './no-files.interceptor.js'; diff --git a/packages/platform-express/multer/interceptors/no-files.interceptor.ts b/packages/platform-express/multer/interceptors/no-files.interceptor.ts index 696df1ab31..9852a4a8d1 100644 --- a/packages/platform-express/multer/interceptors/no-files.interceptor.ts +++ b/packages/platform-express/multer/interceptors/no-files.interceptor.ts @@ -7,12 +7,12 @@ import { Optional, Type, } from '@nestjs/common'; -import * as multer from 'multer'; +import multer from 'multer'; import { Observable } from 'rxjs'; -import { MULTER_MODULE_OPTIONS } from '../files.constants'; -import { MulterModuleOptions } from '../interfaces'; -import { MulterOptions } from '../interfaces/multer-options.interface'; -import { transformException } from '../multer/multer.utils'; +import { MULTER_MODULE_OPTIONS } from '../files.constants.js'; +import { MulterModuleOptions } from '../interfaces/index.js'; +import { MulterOptions } from '../interfaces/multer-options.interface.js'; +import { transformException } from '../multer/multer.utils.js'; type MulterInstance = any; diff --git a/packages/platform-express/multer/interfaces/files-upload-module.interface.ts b/packages/platform-express/multer/interfaces/files-upload-module.interface.ts index 46623cc999..5989655bf7 100644 --- a/packages/platform-express/multer/interfaces/files-upload-module.interface.ts +++ b/packages/platform-express/multer/interfaces/files-upload-module.interface.ts @@ -1,5 +1,5 @@ -import { ModuleMetadata, Type } from '@nestjs/common/interfaces'; -import { MulterOptions } from './multer-options.interface'; +import { ModuleMetadata, Type } from '@nestjs/common/interfaces/index.js'; +import { MulterOptions } from './multer-options.interface.js'; export type MulterModuleOptions = MulterOptions; diff --git a/packages/platform-express/multer/interfaces/index.ts b/packages/platform-express/multer/interfaces/index.ts index be94ec24af..1e6d82337b 100644 --- a/packages/platform-express/multer/interfaces/index.ts +++ b/packages/platform-express/multer/interfaces/index.ts @@ -1 +1 @@ -export * from './files-upload-module.interface'; +export * from './files-upload-module.interface.js'; diff --git a/packages/platform-express/multer/multer.module.ts b/packages/platform-express/multer/multer.module.ts index 0ee770b930..d4a6ffc381 100644 --- a/packages/platform-express/multer/multer.module.ts +++ b/packages/platform-express/multer/multer.module.ts @@ -1,12 +1,12 @@ import { DynamicModule, Module, Provider } from '@nestjs/common'; -import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; -import { MULTER_MODULE_OPTIONS } from './files.constants'; +import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util.js'; +import { MULTER_MODULE_OPTIONS } from './files.constants.js'; import { MulterModuleAsyncOptions, MulterModuleOptions, MulterOptionsFactory, -} from './interfaces/files-upload-module.interface'; -import { MULTER_MODULE_ID } from './multer.constants'; +} from './interfaces/files-upload-module.interface.js'; +import { MULTER_MODULE_ID } from './multer.constants.js'; /** * @publicApi diff --git a/packages/platform-express/multer/multer/multer.utils.ts b/packages/platform-express/multer/multer/multer.utils.ts index 62c1a7f107..c5e1329523 100644 --- a/packages/platform-express/multer/multer/multer.utils.ts +++ b/packages/platform-express/multer/multer/multer.utils.ts @@ -3,7 +3,7 @@ import { HttpException, PayloadTooLargeException, } from '@nestjs/common'; -import { multerExceptions, busboyExceptions } from './multer.constants'; +import { multerExceptions, busboyExceptions } from './multer.constants.js'; // Multer may add in a 'field' property to the error // https://github.com/expressjs/multer/blob/aa42bea6ac7d0cb8fcb279b15a7278cda805dc63/lib/multer-error.js#L19 diff --git a/packages/platform-express/package.json b/packages/platform-express/package.json index 091346d2e4..ddf94ff257 100644 --- a/packages/platform-express/package.json +++ b/packages/platform-express/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@platform-express)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/platform-express/test/adapters/express-adapter.spec.ts b/packages/platform-express/test/adapters/express-adapter.spec.ts index 622b9e7aee..e1d2051491 100644 --- a/packages/platform-express/test/adapters/express-adapter.spec.ts +++ b/packages/platform-express/test/adapters/express-adapter.spec.ts @@ -1,6 +1,6 @@ import { ExpressAdapter } from '@nestjs/platform-express'; import { expect } from 'chai'; -import * as express from 'express'; +import express from 'express'; import * as sinon from 'sinon'; describe('ExpressAdapter', () => { diff --git a/packages/platform-express/test/adapters/utils/get-body-parser-options.util.spec.ts b/packages/platform-express/test/adapters/utils/get-body-parser-options.util.spec.ts index 3a9b8f98f6..5c6c396817 100644 --- a/packages/platform-express/test/adapters/utils/get-body-parser-options.util.spec.ts +++ b/packages/platform-express/test/adapters/utils/get-body-parser-options.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { getBodyParserOptions } from '../../../adapters/utils/get-body-parser-options.util'; +import { getBodyParserOptions } from '../../../adapters/utils/get-body-parser-options.util.js'; describe('getBodyParserOptions', () => { describe('when rawBody is false', () => { diff --git a/packages/platform-express/test/multer/interceptors/any-files.interceptor.spec.ts b/packages/platform-express/test/multer/interceptors/any-files.interceptor.spec.ts index 796d389920..07e27d8c38 100644 --- a/packages/platform-express/test/multer/interceptors/any-files.interceptor.spec.ts +++ b/packages/platform-express/test/multer/interceptors/any-files.interceptor.spec.ts @@ -1,9 +1,9 @@ import { CallHandler } from '@nestjs/common'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { AnyFilesInterceptor } from '../../../multer/interceptors/any-files.interceptor'; +import { AnyFilesInterceptor } from '../../../multer/interceptors/any-files.interceptor.js'; describe('FilesInterceptor', () => { it('should return metatype with expected structure', async () => { diff --git a/packages/platform-express/test/multer/interceptors/file-fields.interceptor.spec.ts b/packages/platform-express/test/multer/interceptors/file-fields.interceptor.spec.ts index 2d7fbf2ae7..5b48226dc7 100644 --- a/packages/platform-express/test/multer/interceptors/file-fields.interceptor.spec.ts +++ b/packages/platform-express/test/multer/interceptors/file-fields.interceptor.spec.ts @@ -1,9 +1,9 @@ import { CallHandler } from '@nestjs/common'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { FileFieldsInterceptor } from '../../../multer/interceptors/file-fields.interceptor'; +import { FileFieldsInterceptor } from '../../../multer/interceptors/file-fields.interceptor.js'; describe('FileFieldsInterceptor', () => { it('should return metatype with expected structure', async () => { diff --git a/packages/platform-express/test/multer/interceptors/file.interceptor.spec.ts b/packages/platform-express/test/multer/interceptors/file.interceptor.spec.ts index 39f003e146..076071304d 100644 --- a/packages/platform-express/test/multer/interceptors/file.interceptor.spec.ts +++ b/packages/platform-express/test/multer/interceptors/file.interceptor.spec.ts @@ -1,9 +1,9 @@ import { CallHandler } from '@nestjs/common'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { FileInterceptor } from '../../../multer/interceptors/file.interceptor'; +import { FileInterceptor } from '../../../multer/interceptors/file.interceptor.js'; describe('FileInterceptor', () => { it('should return metatype with expected structure', async () => { diff --git a/packages/platform-express/test/multer/interceptors/files.interceptor.spec.ts b/packages/platform-express/test/multer/interceptors/files.interceptor.spec.ts index 20c6b0803d..ce7d1dac5d 100644 --- a/packages/platform-express/test/multer/interceptors/files.interceptor.spec.ts +++ b/packages/platform-express/test/multer/interceptors/files.interceptor.spec.ts @@ -1,9 +1,9 @@ import { CallHandler } from '@nestjs/common'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { FilesInterceptor } from '../../../multer/interceptors/files.interceptor'; +import { FilesInterceptor } from '../../../multer/interceptors/files.interceptor.js'; describe('FilesInterceptor', () => { it('should return metatype with expected structure', async () => { diff --git a/packages/platform-express/test/multer/interceptors/no-files.inteceptor.spec.ts b/packages/platform-express/test/multer/interceptors/no-files.inteceptor.spec.ts index 5b5289941f..345d216479 100644 --- a/packages/platform-express/test/multer/interceptors/no-files.inteceptor.spec.ts +++ b/packages/platform-express/test/multer/interceptors/no-files.inteceptor.spec.ts @@ -1,9 +1,9 @@ import { CallHandler } from '@nestjs/common'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { NoFilesInterceptor } from '../../../multer/interceptors/no-files.interceptor'; +import { NoFilesInterceptor } from '../../../multer/interceptors/no-files.interceptor.js'; describe('NoFilesInterceptor', () => { it('should return metatype with expected structure', async () => { diff --git a/packages/platform-express/test/multer/multer/multer.module.spec.ts b/packages/platform-express/test/multer/multer/multer.module.spec.ts index 63aaf2330b..ba361547d1 100644 --- a/packages/platform-express/test/multer/multer/multer.module.spec.ts +++ b/packages/platform-express/test/multer/multer/multer.module.spec.ts @@ -1,8 +1,8 @@ import { FactoryProvider } from '@nestjs/common'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { MULTER_MODULE_OPTIONS } from '../../../multer/files.constants'; -import { MulterModule } from '../../../multer/multer.module'; +import { MULTER_MODULE_OPTIONS } from '../../../multer/files.constants.js'; +import { MulterModule } from '../../../multer/multer.module.js'; describe('MulterModule', () => { describe('register', () => { diff --git a/packages/platform-express/test/multer/multer/multer.utils.spec.ts b/packages/platform-express/test/multer/multer/multer.utils.spec.ts index be409795aa..2029986516 100644 --- a/packages/platform-express/test/multer/multer/multer.utils.spec.ts +++ b/packages/platform-express/test/multer/multer/multer.utils.spec.ts @@ -7,8 +7,8 @@ import { expect } from 'chai'; import { busboyExceptions, multerExceptions, -} from '../../../multer/multer/multer.constants'; -import { transformException } from '../../../multer/multer/multer.utils'; +} from '../../../multer/multer/multer.constants.js'; +import { transformException } from '../../../multer/multer/multer.utils.js'; describe('transformException', () => { describe('if error does not exist', () => { diff --git a/packages/platform-express/tsconfig.build.json b/packages/platform-express/tsconfig.build.json index 732ca00cb7..fb0f617fdb 100644 --- a/packages/platform-express/tsconfig.build.json +++ b/packages/platform-express/tsconfig.build.json @@ -2,13 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/core": ["../core"], - "@nestjs/core/*": ["../core/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/platform-fastify/adapters/fastify-adapter.ts b/packages/platform-fastify/adapters/fastify-adapter.ts index 0831aa5f7d..6fb24e7e8f 100644 --- a/packages/platform-fastify/adapters/fastify-adapter.ts +++ b/packages/platform-fastify/adapters/fastify-adapter.ts @@ -10,11 +10,11 @@ import { VersioningOptions, VersioningType, } from '@nestjs/common'; -import { VersionValue } from '@nestjs/common/interfaces'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isString, isUndefined } from '@nestjs/common/utils/shared.utils'; -import { AbstractHttpAdapter } from '@nestjs/core/adapters/http-adapter'; -import { LegacyRouteConverter } from '@nestjs/core/router/legacy-route-converter'; +import { VersionValue } from '@nestjs/common/interfaces/index.js'; +import { loadPackage } from '@nestjs/common/utils/load-package.util.js'; +import { isString, isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { AbstractHttpAdapter } from '@nestjs/core/adapters/http-adapter.js'; +import { LegacyRouteConverter } from '@nestjs/core/router/legacy-route-converter.js'; import { FastifyBaseLogger, FastifyBodyParser, @@ -37,8 +37,8 @@ import { RouteShorthandOptions, fastify, } from 'fastify'; -import * as Reply from 'fastify/lib/reply'; -import { kRouteContext } from 'fastify/lib/symbols'; +import * as Reply from 'fastify/lib/reply.js'; +import fastifySymbols from 'fastify/lib/symbols.js'; import * as http from 'http'; import * as http2 from 'http2'; import * as https from 'https'; @@ -48,20 +48,22 @@ import { Response as LightMyRequestResponse, } from 'light-my-request'; import { pathToRegexp } from 'path-to-regexp'; +const { kRouteContext } = fastifySymbols; // Fastify uses `fast-querystring` internally to quickly parse URL query strings. import { parse as querystringParse } from 'fast-querystring'; -import { safeDecodeURI } from 'find-my-way/lib/url-sanitizer'; +import urlSanitizer from 'find-my-way/lib/url-sanitizer.js'; import { FASTIFY_ROUTE_CONFIG_METADATA, FASTIFY_ROUTE_CONSTRAINTS_METADATA, FASTIFY_ROUTE_SCHEMA_METADATA, -} from '../constants'; -import { NestFastifyBodyParserOptions } from '../interfaces'; +} from '../constants.js'; import { FastifyStaticOptions, FastifyViewOptions, -} from '../interfaces/external'; -import middie from './middie/fastify-middie'; +} from '../interfaces/external/index.js'; +import { NestFastifyBodyParserOptions } from '../interfaces/index.js'; +import middie from './middie/fastify-middie.js'; +const { safeDecodeURI } = urlSanitizer; type FastifyAdapterBaseOptions< Server extends RawServerBase = RawServerDefault, @@ -141,7 +143,7 @@ export class FastifyAdapter< FastifyInstance, > extends AbstractHttpAdapter { protected readonly logger = new Logger(FastifyAdapter.name); - protected readonly instance: TInstance; + declare protected readonly instance: TInstance; protected _pathPrefix?: string; private _isParserRegistered: boolean; @@ -555,16 +557,18 @@ export class FastifyAdapter< this.httpServer = this.instance.server; } - public useStaticAssets(options: FastifyStaticOptions) { + public async useStaticAssets(options: FastifyStaticOptions) { return this.register( - loadPackage('@fastify/static', 'FastifyAdapter.useStaticAssets()', () => - require('@fastify/static'), + await loadPackage( + '@fastify/static', + 'FastifyAdapter.useStaticAssets()', + () => import('@fastify/static'), ), options, ); } - public setViewEngine(options: FastifyViewOptions | string) { + public async setViewEngine(options: FastifyViewOptions | string) { if (isString(options)) { new Logger('FastifyAdapter').error( "setViewEngine() doesn't support a string argument.", @@ -572,8 +576,10 @@ export class FastifyAdapter< process.exit(1); } return this.register( - loadPackage('@fastify/view', 'FastifyAdapter.setViewEngine()', () => - require('@fastify/view'), + await loadPackage( + '@fastify/view', + 'FastifyAdapter.setViewEngine()', + () => import('@fastify/view'), ), options, ); diff --git a/packages/platform-fastify/adapters/index.ts b/packages/platform-fastify/adapters/index.ts index 109d506ff3..b49c8455ec 100644 --- a/packages/platform-fastify/adapters/index.ts +++ b/packages/platform-fastify/adapters/index.ts @@ -1 +1 @@ -export * from './fastify-adapter'; +export * from './fastify-adapter.js'; diff --git a/packages/platform-fastify/adapters/middie/fastify-middie.ts b/packages/platform-fastify/adapters/middie/fastify-middie.ts index ca98a27ea7..f41db77a14 100644 --- a/packages/platform-fastify/adapters/middie/fastify-middie.ts +++ b/packages/platform-fastify/adapters/middie/fastify-middie.ts @@ -8,10 +8,11 @@ import { HookHandlerDoneFunction, } from 'fastify'; import fp from 'fastify-plugin'; -import { safeDecodeURI } from 'find-my-way/lib/url-sanitizer'; +import urlSanitizer from 'find-my-way/lib/url-sanitizer.js'; import * as http from 'node:http'; import { Path, pathToRegexp } from 'path-to-regexp'; -import reusify = require('reusify'); +import reusify from 'reusify'; +const { safeDecodeURI } = urlSanitizer; export type MiddlewareFn< Req extends { url: string; originalUrl?: string }, diff --git a/packages/platform-fastify/decorators/index.ts b/packages/platform-fastify/decorators/index.ts index fce3ca1f74..9a1be313b9 100644 --- a/packages/platform-fastify/decorators/index.ts +++ b/packages/platform-fastify/decorators/index.ts @@ -1,3 +1,3 @@ -export * from './route-config.decorator'; -export * from './route-constraints.decorator'; -export * from './route-schema.decorator'; +export * from './route-config.decorator.js'; +export * from './route-constraints.decorator.js'; +export * from './route-schema.decorator.js'; diff --git a/packages/platform-fastify/decorators/route-config.decorator.ts b/packages/platform-fastify/decorators/route-config.decorator.ts index b0e6c874fd..415ae6fac9 100644 --- a/packages/platform-fastify/decorators/route-config.decorator.ts +++ b/packages/platform-fastify/decorators/route-config.decorator.ts @@ -1,5 +1,5 @@ import { SetMetadata } from '@nestjs/common'; -import { FASTIFY_ROUTE_CONFIG_METADATA } from '../constants'; +import { FASTIFY_ROUTE_CONFIG_METADATA } from '../constants.js'; /** * @publicApi diff --git a/packages/platform-fastify/decorators/route-constraints.decorator.ts b/packages/platform-fastify/decorators/route-constraints.decorator.ts index 0b7e4112c5..707a4b446b 100644 --- a/packages/platform-fastify/decorators/route-constraints.decorator.ts +++ b/packages/platform-fastify/decorators/route-constraints.decorator.ts @@ -1,5 +1,5 @@ import { SetMetadata } from '@nestjs/common'; -import { FASTIFY_ROUTE_CONSTRAINTS_METADATA } from '../constants'; +import { FASTIFY_ROUTE_CONSTRAINTS_METADATA } from '../constants.js'; import { RouteShorthandOptions } from 'fastify'; /** diff --git a/packages/platform-fastify/decorators/route-schema.decorator.ts b/packages/platform-fastify/decorators/route-schema.decorator.ts index de22c46caf..e66158452d 100644 --- a/packages/platform-fastify/decorators/route-schema.decorator.ts +++ b/packages/platform-fastify/decorators/route-schema.decorator.ts @@ -1,5 +1,5 @@ import { SetMetadata } from '@nestjs/common'; -import { FASTIFY_ROUTE_SCHEMA_METADATA } from '../constants'; +import { FASTIFY_ROUTE_SCHEMA_METADATA } from '../constants.js'; import { FastifySchema } from 'fastify'; /** diff --git a/packages/platform-fastify/index.ts b/packages/platform-fastify/index.ts index 7b0f16f303..86b3d13997 100644 --- a/packages/platform-fastify/index.ts +++ b/packages/platform-fastify/index.ts @@ -5,6 +5,6 @@ * MIT Licensed */ -export * from './adapters'; -export * from './interfaces'; -export * from './decorators'; +export * from './adapters/index.js'; +export * from './interfaces/index.js'; +export * from './decorators/index.js'; diff --git a/packages/platform-fastify/interfaces/external/index.ts b/packages/platform-fastify/interfaces/external/index.ts index a80eb8a365..1dbf99e30a 100644 --- a/packages/platform-fastify/interfaces/external/index.ts +++ b/packages/platform-fastify/interfaces/external/index.ts @@ -1,2 +1,2 @@ -export * from './fastify-static-options.interface'; -export * from './fastify-view-options.interface'; +export * from './fastify-static-options.interface.js'; +export * from './fastify-view-options.interface.js'; diff --git a/packages/platform-fastify/interfaces/index.ts b/packages/platform-fastify/interfaces/index.ts index ae18b9a3c5..d88541194e 100644 --- a/packages/platform-fastify/interfaces/index.ts +++ b/packages/platform-fastify/interfaces/index.ts @@ -1,2 +1,2 @@ -export * from './nest-fastify-application.interface'; -export * from './nest-fastify-body-parser-options.interface'; +export * from './nest-fastify-application.interface.js'; +export * from './nest-fastify-body-parser-options.interface.js'; diff --git a/packages/platform-fastify/interfaces/nest-fastify-application.interface.ts b/packages/platform-fastify/interfaces/nest-fastify-application.interface.ts index d31f00c348..45c46edf0f 100644 --- a/packages/platform-fastify/interfaces/nest-fastify-application.interface.ts +++ b/packages/platform-fastify/interfaces/nest-fastify-application.interface.ts @@ -18,8 +18,8 @@ import { Chain as LightMyRequestChain, Response as LightMyRequestResponse, } from 'light-my-request'; -import { FastifyStaticOptions, FastifyViewOptions } from './external'; -import { NestFastifyBodyParserOptions } from './nest-fastify-body-parser-options.interface'; +import { FastifyStaticOptions, FastifyViewOptions } from './external/index.js'; +import { NestFastifyBodyParserOptions } from './nest-fastify-body-parser-options.interface.js'; /** * @publicApi diff --git a/packages/platform-fastify/package.json b/packages/platform-fastify/package.json index ac7a71c148..5dda707e34 100644 --- a/packages/platform-fastify/package.json +++ b/packages/platform-fastify/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@platform-fastify)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/platform-fastify/test/decorators/router-config.decorator.spec.ts b/packages/platform-fastify/test/decorators/router-config.decorator.spec.ts index 3837d04636..f181f5aa23 100644 --- a/packages/platform-fastify/test/decorators/router-config.decorator.spec.ts +++ b/packages/platform-fastify/test/decorators/router-config.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { FASTIFY_ROUTE_CONFIG_METADATA } from '../../constants'; -import { RouteConfig } from '../../decorators/route-config.decorator'; +import { FASTIFY_ROUTE_CONFIG_METADATA } from '../../constants.js'; +import { RouteConfig } from '../../decorators/route-config.decorator.js'; describe('@RouteConfig', () => { const routeConfig = { testKey: 'testValue' }; diff --git a/packages/platform-fastify/test/decorators/router-constraints.decorator.spec.ts b/packages/platform-fastify/test/decorators/router-constraints.decorator.spec.ts index ecd43f7f6a..08846ff8fb 100644 --- a/packages/platform-fastify/test/decorators/router-constraints.decorator.spec.ts +++ b/packages/platform-fastify/test/decorators/router-constraints.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { FASTIFY_ROUTE_CONSTRAINTS_METADATA } from '../../constants'; -import { RouteConstraints } from '../../decorators/route-constraints.decorator'; +import { FASTIFY_ROUTE_CONSTRAINTS_METADATA } from '../../constants.js'; +import { RouteConstraints } from '../../decorators/route-constraints.decorator.js'; describe('@RouteConstraints', () => { describe('has version constraints', () => { diff --git a/packages/platform-fastify/test/decorators/router-schema.decorator.spec.ts b/packages/platform-fastify/test/decorators/router-schema.decorator.spec.ts index 22ff3471cb..96940819a2 100644 --- a/packages/platform-fastify/test/decorators/router-schema.decorator.spec.ts +++ b/packages/platform-fastify/test/decorators/router-schema.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { FASTIFY_ROUTE_SCHEMA_METADATA } from '../../constants'; -import { RouteSchema } from '../../decorators/route-schema.decorator'; +import { FASTIFY_ROUTE_SCHEMA_METADATA } from '../../constants.js'; +import { RouteSchema } from '../../decorators/route-schema.decorator.js'; describe('@RouteSchema', () => { const routeSchema = { body: 'testValue' }; diff --git a/packages/platform-fastify/tsconfig.build.json b/packages/platform-fastify/tsconfig.build.json index 732ca00cb7..fb0f617fdb 100644 --- a/packages/platform-fastify/tsconfig.build.json +++ b/packages/platform-fastify/tsconfig.build.json @@ -2,13 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/core": ["../core"], - "@nestjs/core/*": ["../core/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/platform-socket.io/adapters/index.ts b/packages/platform-socket.io/adapters/index.ts index 97b4b62692..df174bfcb6 100644 --- a/packages/platform-socket.io/adapters/index.ts +++ b/packages/platform-socket.io/adapters/index.ts @@ -1 +1 @@ -export * from './io-adapter'; +export * from './io-adapter.js'; diff --git a/packages/platform-socket.io/adapters/io-adapter.ts b/packages/platform-socket.io/adapters/io-adapter.ts index 109041daf4..2e4b33a80b 100644 --- a/packages/platform-socket.io/adapters/io-adapter.ts +++ b/packages/platform-socket.io/adapters/io-adapter.ts @@ -1,9 +1,9 @@ -import { isFunction, isNil } from '@nestjs/common/utils/shared.utils'; +import { isFunction, isNil } from '@nestjs/common/utils/shared.utils.js'; import { AbstractWsAdapter, MessageMappingProperties, } from '@nestjs/websockets'; -import { DISCONNECT_EVENT } from '@nestjs/websockets/constants'; +import { DISCONNECT_EVENT } from '@nestjs/websockets/constants.js'; import { fromEvent, Observable } from 'rxjs'; import { filter, first, map, mergeMap, share, takeUntil } from 'rxjs/operators'; import { Server, ServerOptions, Socket } from 'socket.io'; diff --git a/packages/platform-socket.io/index.ts b/packages/platform-socket.io/index.ts index 818f1a0146..d2ecbacb22 100644 --- a/packages/platform-socket.io/index.ts +++ b/packages/platform-socket.io/index.ts @@ -5,4 +5,4 @@ * MIT Licensed */ -export * from './adapters'; +export * from './adapters/index.js'; diff --git a/packages/platform-socket.io/package.json b/packages/platform-socket.io/package.json index fdf0d71e58..fd34be2c62 100644 --- a/packages/platform-socket.io/package.json +++ b/packages/platform-socket.io/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@platform-socket.io)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/platform-socket.io/tsconfig.build.json b/packages/platform-socket.io/tsconfig.build.json index b9ccddc222..448fade51b 100644 --- a/packages/platform-socket.io/tsconfig.build.json +++ b/packages/platform-socket.io/tsconfig.build.json @@ -2,13 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/websockets": ["../websockets"], - "@nestjs/websockets/*": ["../websockets/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/platform-ws/adapters/index.ts b/packages/platform-ws/adapters/index.ts index 0f0c68ef87..3f863af5b1 100644 --- a/packages/platform-ws/adapters/index.ts +++ b/packages/platform-ws/adapters/index.ts @@ -1 +1 @@ -export * from './ws-adapter'; +export * from './ws-adapter.js'; diff --git a/packages/platform-ws/adapters/ws-adapter.ts b/packages/platform-ws/adapters/ws-adapter.ts index 6292468ad8..9974b1aec6 100644 --- a/packages/platform-ws/adapters/ws-adapter.ts +++ b/packages/platform-ws/adapters/ws-adapter.ts @@ -1,13 +1,13 @@ import { INestApplicationContext, Logger } from '@nestjs/common'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isNil, normalizePath } from '@nestjs/common/utils/shared.utils'; +import { loadPackageSync } from '@nestjs/common/utils/load-package.util.js'; +import { isNil, normalizePath } from '@nestjs/common/utils/shared.utils.js'; import { AbstractWsAdapter } from '@nestjs/websockets'; import { CLOSE_EVENT, CONNECTION_EVENT, ERROR_EVENT, -} from '@nestjs/websockets/constants'; -import { MessageMappingProperties } from '@nestjs/websockets/gateway-metadata-explorer'; +} from '@nestjs/websockets/constants.js'; +import { MessageMappingProperties } from '@nestjs/websockets/gateway-metadata-explorer.js'; import * as http from 'http'; import { EMPTY, fromEvent, Observable } from 'rxjs'; import { filter, first, mergeMap, share, takeUntil } from 'rxjs/operators'; @@ -55,7 +55,12 @@ export class WsAdapter extends AbstractWsAdapter { options?: WsAdapterOptions, ) { super(appOrHttpServer); - wsPackage = loadPackage('ws', 'WsAdapter', () => require('ws')); + wsPackage = loadPackageSync('ws', 'WsAdapter'); + // Normalize CJS/ESM: In CJS, require('ws') returns WebSocket with .Server. + // We need .Server for creating WebSocketServer instances. + if (!wsPackage.Server) { + wsPackage = { ...wsPackage, Server: wsPackage.WebSocketServer }; + } if (options?.messageParser) { this.messageParser = options.messageParser; @@ -185,8 +190,10 @@ export class WsAdapter extends AbstractWsAdapter { const closeEventSignal = new Promise((resolve, reject) => server.close((err: Error) => (err ? reject(err) : resolve(undefined))), ); - for (const ws of server.clients) { - ws.terminate(); + if (server.clients) { + for (const ws of server.clients) { + ws.terminate(); + } } await closeEventSignal; } diff --git a/packages/platform-ws/index.ts b/packages/platform-ws/index.ts index 53c99aa8d8..5660ae3708 100644 --- a/packages/platform-ws/index.ts +++ b/packages/platform-ws/index.ts @@ -5,4 +5,4 @@ * MIT Licensed */ -export * from './adapters'; +export * from './adapters/index.js'; diff --git a/packages/platform-ws/package.json b/packages/platform-ws/package.json index 902f4a4889..89b365b933 100644 --- a/packages/platform-ws/package.json +++ b/packages/platform-ws/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@platform-ws)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/platform-ws/tsconfig.build.json b/packages/platform-ws/tsconfig.build.json index b9ccddc222..448fade51b 100644 --- a/packages/platform-ws/tsconfig.build.json +++ b/packages/platform-ws/tsconfig.build.json @@ -2,13 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/websockets": ["../websockets"], - "@nestjs/websockets/*": ["../websockets/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/testing/index.ts b/packages/testing/index.ts index 03a845c421..03af9654ac 100644 --- a/packages/testing/index.ts +++ b/packages/testing/index.ts @@ -5,7 +5,7 @@ * MIT Licensed */ -export * from './interfaces'; -export * from './test'; -export * from './testing-module'; -export * from './testing-module.builder'; +export * from './interfaces/index.js'; +export * from './test.js'; +export * from './testing-module.js'; +export * from './testing-module.builder.js'; diff --git a/packages/testing/interfaces/index.ts b/packages/testing/interfaces/index.ts index 4f5aa2fa6c..27ae6544f9 100644 --- a/packages/testing/interfaces/index.ts +++ b/packages/testing/interfaces/index.ts @@ -1,3 +1,3 @@ -export * from './mock-factory'; -export * from './override-by-factory-options.interface'; -export * from './override-by.interface'; +export * from './mock-factory.js'; +export * from './override-by-factory-options.interface.js'; +export * from './override-by.interface.js'; diff --git a/packages/testing/interfaces/override-by.interface.ts b/packages/testing/interfaces/override-by.interface.ts index fafc82e468..505db976a2 100644 --- a/packages/testing/interfaces/override-by.interface.ts +++ b/packages/testing/interfaces/override-by.interface.ts @@ -1,5 +1,5 @@ -import { TestingModuleBuilder } from '../testing-module.builder'; -import { OverrideByFactoryOptions } from './override-by-factory-options.interface'; +import { TestingModuleBuilder } from '../testing-module.builder.js'; +import { OverrideByFactoryOptions } from './override-by-factory-options.interface.js'; /** * @publicApi diff --git a/packages/testing/interfaces/override-module.interface.ts b/packages/testing/interfaces/override-module.interface.ts index 1bebdd4acb..793c2bcd3d 100644 --- a/packages/testing/interfaces/override-module.interface.ts +++ b/packages/testing/interfaces/override-module.interface.ts @@ -1,5 +1,5 @@ -import { ModuleDefinition } from '@nestjs/core/interfaces/module-definition.interface'; -import { TestingModuleBuilder } from '../testing-module.builder'; +import { ModuleDefinition } from '@nestjs/core/interfaces/module-definition.interface.js'; +import { TestingModuleBuilder } from '../testing-module.builder.js'; /** * @publicApi diff --git a/packages/testing/package.json b/packages/testing/package.json index c3dda72cd5..d72e66057d 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@testing)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "homepage": "https://nestjs.com", "funding": { "type": "opencollective", diff --git a/packages/testing/test.ts b/packages/testing/test.ts index 1ddf658d6c..e8acb15807 100644 --- a/packages/testing/test.ts +++ b/packages/testing/test.ts @@ -1,9 +1,9 @@ -import { ModuleMetadata } from '@nestjs/common/interfaces/modules/module-metadata.interface'; -import { MetadataScanner } from '@nestjs/core/metadata-scanner'; +import { ModuleMetadata } from '@nestjs/common/interfaces/modules/module-metadata.interface.js'; +import { MetadataScanner } from '@nestjs/core/metadata-scanner.js'; import { TestingModuleBuilder, TestingModuleOptions, -} from './testing-module.builder'; +} from './testing-module.builder.js'; export class Test { private static readonly metadataScanner = new MetadataScanner(); diff --git a/packages/testing/testing-injector.ts b/packages/testing/testing-injector.ts index c5a783196b..6cff93f8e5 100644 --- a/packages/testing/testing-injector.ts +++ b/packages/testing/testing-injector.ts @@ -1,12 +1,12 @@ import { NestContainer } from '@nestjs/core'; -import { STATIC_CONTEXT } from '@nestjs/core/injector/constants'; +import { STATIC_CONTEXT } from '@nestjs/core/injector/constants.js'; import { Injector, InjectorDependencyContext, -} from '@nestjs/core/injector/injector'; -import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; -import { Module } from '@nestjs/core/injector/module'; -import { MockFactory } from './interfaces'; +} from '@nestjs/core/injector/injector.js'; +import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper.js'; +import { Module } from '@nestjs/core/injector/module.js'; +import { MockFactory } from './interfaces/index.js'; /** * @publicApi diff --git a/packages/testing/testing-instance-loader.ts b/packages/testing/testing-instance-loader.ts index 6c4aead482..472358cb81 100644 --- a/packages/testing/testing-instance-loader.ts +++ b/packages/testing/testing-instance-loader.ts @@ -1,7 +1,7 @@ -import { InstanceLoader } from '@nestjs/core/injector/instance-loader'; -import { Module } from '@nestjs/core/injector/module'; -import { MockFactory } from './interfaces'; -import { TestingInjector } from './testing-injector'; +import { InstanceLoader } from '@nestjs/core/injector/instance-loader.js'; +import { Module } from '@nestjs/core/injector/module.js'; +import { MockFactory } from './interfaces/index.js'; +import { TestingInjector } from './testing-injector.js'; export class TestingInstanceLoader extends InstanceLoader { public async createInstancesOfDependencies( diff --git a/packages/testing/testing-module.builder.ts b/packages/testing/testing-module.builder.ts index ca5d654943..ecbfd846e4 100644 --- a/packages/testing/testing-module.builder.ts +++ b/packages/testing/testing-module.builder.ts @@ -1,27 +1,27 @@ import { Logger, LoggerService, Module, ModuleMetadata } from '@nestjs/common'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; -import { NoopGraphInspector } from '@nestjs/core/inspector/noop-graph-inspector'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; +import { NoopGraphInspector } from '@nestjs/core/inspector/noop-graph-inspector.js'; import { UuidFactory, UuidFactoryMode, -} from '@nestjs/core/inspector/uuid-factory'; -import { ModuleDefinition } from '@nestjs/core/interfaces/module-definition.interface'; -import { ModuleOverride } from '@nestjs/core/interfaces/module-override.interface'; -import { MetadataScanner } from '@nestjs/core/metadata-scanner'; -import { DependenciesScanner } from '@nestjs/core/scanner'; +} from '@nestjs/core/inspector/uuid-factory.js'; +import { ModuleDefinition } from '@nestjs/core/interfaces/module-definition.interface.js'; +import { ModuleOverride } from '@nestjs/core/interfaces/module-override.interface.js'; +import { MetadataScanner } from '@nestjs/core/metadata-scanner.js'; +import { DependenciesScanner } from '@nestjs/core/scanner.js'; import { MockFactory, OverrideBy, OverrideByFactoryOptions, -} from './interfaces'; -import { OverrideModule } from './interfaces/override-module.interface'; -import { TestingLogger } from './services/testing-logger.service'; -import { TestingInjector } from './testing-injector'; -import { TestingInstanceLoader } from './testing-instance-loader'; -import { TestingModule } from './testing-module'; +} from './interfaces/index.js'; +import { OverrideModule } from './interfaces/override-module.interface.js'; +import { TestingLogger } from './services/testing-logger.service.js'; +import { TestingInjector } from './testing-injector.js'; +import { TestingInstanceLoader } from './testing-instance-loader.js'; +import { TestingModule } from './testing-module.js'; /** * @publicApi @@ -123,12 +123,14 @@ export class TestingModuleBuilder { scanner.applyApplicationProviders(); const root = this.getRootModule(); - return new TestingModule( + const testingModule = new TestingModule( this.container, graphInspector, root, this.applicationConfig, ); + await testingModule.preloadLazyPackages(); + return testingModule; } private override(typeOrToken: T, isProvider: boolean): OverrideBy { diff --git a/packages/testing/testing-module.ts b/packages/testing/testing-module.ts index 79d2e86c34..3affec9e1b 100644 --- a/packages/testing/testing-module.ts +++ b/packages/testing/testing-module.ts @@ -6,19 +6,22 @@ import { NestApplicationOptions, Type, } from '@nestjs/common'; -import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { loadPackage } from '@nestjs/common/utils/load-package.util'; -import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { + loadPackage, + loadPackageCached, +} from '@nestjs/common/utils/load-package.util.js'; +import { isUndefined } from '@nestjs/common/utils/shared.utils.js'; import { AbstractHttpAdapter, NestApplication, NestApplicationContext, } from '@nestjs/core'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { Module } from '@nestjs/core/injector/module'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { Module } from '@nestjs/core/injector/module.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; /** * @publicApi @@ -39,6 +42,25 @@ export class TestingModule extends NestApplicationContext { this.graphInspector = graphInspector; } + /** + * Pre-load optional packages so that createNestApplication, + * createNestMicroservice and createHttpAdapter can stay synchronous. + * Called from TestingModuleBuilder.compile(). + */ + public async preloadLazyPackages(): Promise { + // Best-effort: silently swallow if packages are not installed + await loadPackage( + '@nestjs/platform-express', + 'TestingModule', + () => import('@nestjs/platform-express'), + ).catch(() => {}); + await loadPackage( + '@nestjs/microservices', + 'TestingModule', + () => import('@nestjs/microservices'), + ).catch(() => {}); + } + private isHttpServer( serverOrOptions: | HttpServer @@ -84,11 +106,7 @@ export class TestingModule extends NestApplicationContext { public createNestMicroservice( options: NestMicroserviceOptions & T, ): INestMicroservice { - const { NestMicroservice } = loadPackage( - '@nestjs/microservices', - 'TestingModule', - () => require('@nestjs/microservices'), - ); + const { NestMicroservice } = loadPackageCached('@nestjs/microservices'); this.applyLogger(options); return new NestMicroservice( this.container, @@ -99,11 +117,7 @@ export class TestingModule extends NestApplicationContext { } private createHttpAdapter(httpServer?: T): AbstractHttpAdapter { - const { ExpressAdapter } = loadPackage( - '@nestjs/platform-express', - 'NestFactory', - () => require('@nestjs/platform-express'), - ); + const { ExpressAdapter } = loadPackageCached('@nestjs/platform-express'); return new ExpressAdapter(httpServer); } diff --git a/packages/testing/tsconfig.build.json b/packages/testing/tsconfig.build.json index a5a3a63059..a08f7f7fdb 100644 --- a/packages/testing/tsconfig.build.json +++ b/packages/testing/tsconfig.build.json @@ -2,17 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/core": ["../core"], - "@nestjs/core/*": ["../core/*"], - "@nestjs/microservices": ["../microservices"], - "@nestjs/microservices/*": ["../microservices/*"], - "@nestjs/platform-express": ["../platform-express"], - "@nestjs/platform-express/*": ["../platform-express/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/tsconfig.build.json b/packages/tsconfig.build.json index e1bdb8e40d..289cca7697 100644 --- a/packages/tsconfig.build.json +++ b/packages/tsconfig.build.json @@ -1,7 +1,9 @@ { "compilerOptions": { "composite": true, - "module": "commonjs", + "module": "Node16", + "moduleResolution": "Node16", + "esModuleInterop": true, "declaration": true, "noImplicitAny": false, "skipLibCheck": true, @@ -12,7 +14,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "useUnknownInCatchVariables": false, - "target": "ES2021", + "target": "ES2023", "sourceMap": false, "allowJs": false, "strict": true, diff --git a/packages/websockets/adapters/index.ts b/packages/websockets/adapters/index.ts index 0f0c68ef87..3f863af5b1 100644 --- a/packages/websockets/adapters/index.ts +++ b/packages/websockets/adapters/index.ts @@ -1 +1 @@ -export * from './ws-adapter'; +export * from './ws-adapter.js'; diff --git a/packages/websockets/adapters/ws-adapter.ts b/packages/websockets/adapters/ws-adapter.ts index 62470b688f..8f69fd3ea1 100644 --- a/packages/websockets/adapters/ws-adapter.ts +++ b/packages/websockets/adapters/ws-adapter.ts @@ -1,9 +1,9 @@ import { INestApplicationContext, WebSocketAdapter } from '@nestjs/common'; -import { WsMessageHandler } from '@nestjs/common/interfaces'; -import { isFunction } from '@nestjs/common/utils/shared.utils'; +import { WsMessageHandler } from '@nestjs/common/interfaces/index.js'; +import { isFunction } from '@nestjs/common/utils/shared.utils.js'; import { NestApplication } from '@nestjs/core'; import { Observable } from 'rxjs'; -import { CONNECTION_EVENT, DISCONNECT_EVENT } from '../constants'; +import { CONNECTION_EVENT, DISCONNECT_EVENT } from '../constants.js'; export interface BaseWsInstance { on: (event: string, callback: Function) => void; diff --git a/packages/websockets/constants.ts b/packages/websockets/constants.ts index a143462929..4ddba155c0 100644 --- a/packages/websockets/constants.ts +++ b/packages/websockets/constants.ts @@ -1,4 +1,4 @@ -import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants'; +import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants.js'; export const MESSAGE_MAPPING_METADATA = 'websockets:message_mapping'; export const MESSAGE_METADATA = 'message'; diff --git a/packages/websockets/context/exception-filters-context.ts b/packages/websockets/context/exception-filters-context.ts index 7d630ad1cc..c234b69b64 100644 --- a/packages/websockets/context/exception-filters-context.ts +++ b/packages/websockets/context/exception-filters-context.ts @@ -1,8 +1,8 @@ -import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { BaseExceptionFilterContext } from '@nestjs/core/exceptions/base-exception-filter-context'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { WsExceptionsHandler } from '../exceptions/ws-exceptions-handler'; +import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { BaseExceptionFilterContext } from '@nestjs/core/exceptions/base-exception-filter-context.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { WsExceptionsHandler } from '../exceptions/ws-exceptions-handler.js'; /** * @publicApi diff --git a/packages/websockets/context/ws-context-creator.ts b/packages/websockets/context/ws-context-creator.ts index c699612b6f..3add181ff5 100644 --- a/packages/websockets/context/ws-context-creator.ts +++ b/packages/websockets/context/ws-context-creator.ts @@ -1,34 +1,37 @@ import { CUSTOM_ROUTE_ARGS_METADATA, PARAMTYPES_METADATA, -} from '@nestjs/common/constants'; +} from '@nestjs/common/constants.js'; import { ContextType, Controller, PipeTransform, -} from '@nestjs/common/interfaces'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { FORBIDDEN_MESSAGE } from '@nestjs/core/guards/constants'; -import { GuardsConsumer } from '@nestjs/core/guards/guards-consumer'; -import { GuardsContextCreator } from '@nestjs/core/guards/guards-context-creator'; +} from '@nestjs/common/interfaces/index.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { FORBIDDEN_MESSAGE } from '@nestjs/core/guards/constants.js'; +import { GuardsConsumer } from '@nestjs/core/guards/guards-consumer.js'; +import { GuardsContextCreator } from '@nestjs/core/guards/guards-context-creator.js'; import { ContextUtils, ParamProperties, -} from '@nestjs/core/helpers/context-utils'; -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; -import { HandlerMetadataStorage } from '@nestjs/core/helpers/handler-metadata-storage'; -import { ParamsMetadata } from '@nestjs/core/helpers/interfaces'; +} from '@nestjs/core/helpers/context-utils.js'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; +import { HandlerMetadataStorage } from '@nestjs/core/helpers/handler-metadata-storage.js'; +import { ParamsMetadata } from '@nestjs/core/helpers/interfaces/index.js'; import { InterceptorsConsumer, InterceptorsContextCreator, -} from '@nestjs/core/interceptors'; -import { PipesConsumer, PipesContextCreator } from '@nestjs/core/pipes'; -import { MESSAGE_METADATA, PARAM_ARGS_METADATA } from '../constants'; -import { WsException } from '../errors/ws-exception'; -import { WsParamsFactory } from '../factories/ws-params-factory'; -import { ExceptionFiltersContext } from './exception-filters-context'; -import { DEFAULT_CALLBACK_METADATA } from './ws-metadata-constants'; -import { WsProxy } from './ws-proxy'; +} from '@nestjs/core/interceptors/index.js'; +import { + PipesConsumer, + PipesContextCreator, +} from '@nestjs/core/pipes/index.js'; +import { MESSAGE_METADATA, PARAM_ARGS_METADATA } from '../constants.js'; +import { WsException } from '../errors/ws-exception.js'; +import { WsParamsFactory } from '../factories/ws-params-factory.js'; +import { ExceptionFiltersContext } from './exception-filters-context.js'; +import { DEFAULT_CALLBACK_METADATA } from './ws-metadata-constants.js'; +import { WsProxy } from './ws-proxy.js'; type WsParamProperties = ParamProperties & { metatype?: any }; export interface WsHandlerMetadata { diff --git a/packages/websockets/context/ws-metadata-constants.ts b/packages/websockets/context/ws-metadata-constants.ts index 76aee7e2d8..7247980c68 100644 --- a/packages/websockets/context/ws-metadata-constants.ts +++ b/packages/websockets/context/ws-metadata-constants.ts @@ -1,4 +1,4 @@ -import { WsParamtype } from '../enums/ws-paramtype.enum'; +import { WsParamtype } from '../enums/ws-paramtype.enum.js'; export const DEFAULT_CALLBACK_METADATA = { [`${WsParamtype.ACK}:2`]: { index: 2, data: undefined, pipes: [] }, diff --git a/packages/websockets/context/ws-proxy.ts b/packages/websockets/context/ws-proxy.ts index dedbfddfc3..b7c4e78d4d 100644 --- a/packages/websockets/context/ws-proxy.ts +++ b/packages/websockets/context/ws-proxy.ts @@ -1,7 +1,7 @@ -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { EMPTY, isObservable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { WsExceptionsHandler } from '../exceptions/ws-exceptions-handler'; +import { WsExceptionsHandler } from '../exceptions/ws-exceptions-handler.js'; export class WsProxy { public create( diff --git a/packages/websockets/decorators/ack.decorator.ts b/packages/websockets/decorators/ack.decorator.ts index 728bc0964a..b5aa93ab9a 100644 --- a/packages/websockets/decorators/ack.decorator.ts +++ b/packages/websockets/decorators/ack.decorator.ts @@ -1,5 +1,5 @@ -import { WsParamtype } from '../enums/ws-paramtype.enum'; -import { createPipesWsParamDecorator } from '../utils/param.utils'; +import { WsParamtype } from '../enums/ws-paramtype.enum.js'; +import { createPipesWsParamDecorator } from '../utils/param.utils.js'; /** * WebSockets `ack` parameter decorator. diff --git a/packages/websockets/decorators/connected-socket.decorator.ts b/packages/websockets/decorators/connected-socket.decorator.ts index c21e4f8a15..c43ac84e1a 100644 --- a/packages/websockets/decorators/connected-socket.decorator.ts +++ b/packages/websockets/decorators/connected-socket.decorator.ts @@ -1,5 +1,5 @@ -import { WsParamtype } from '../enums/ws-paramtype.enum'; -import { createWsParamDecorator } from '../utils/param.utils'; +import { WsParamtype } from '../enums/ws-paramtype.enum.js'; +import { createWsParamDecorator } from '../utils/param.utils.js'; /** * @publicApi diff --git a/packages/websockets/decorators/gateway-server.decorator.ts b/packages/websockets/decorators/gateway-server.decorator.ts index 3a08326393..2623603ef8 100644 --- a/packages/websockets/decorators/gateway-server.decorator.ts +++ b/packages/websockets/decorators/gateway-server.decorator.ts @@ -1,4 +1,4 @@ -import { GATEWAY_SERVER_METADATA } from '../constants'; +import { GATEWAY_SERVER_METADATA } from '../constants.js'; /** * Attaches native Web Socket Server to a given property. diff --git a/packages/websockets/decorators/index.ts b/packages/websockets/decorators/index.ts index ee6f88bcd1..00e00c661e 100644 --- a/packages/websockets/decorators/index.ts +++ b/packages/websockets/decorators/index.ts @@ -1,6 +1,6 @@ -export * from './connected-socket.decorator'; -export * from './gateway-server.decorator'; -export * from './message-body.decorator'; -export * from './socket-gateway.decorator'; -export * from './subscribe-message.decorator'; -export * from './ack.decorator'; +export * from './connected-socket.decorator.js'; +export * from './gateway-server.decorator.js'; +export * from './message-body.decorator.js'; +export * from './socket-gateway.decorator.js'; +export * from './subscribe-message.decorator.js'; +export * from './ack.decorator.js'; diff --git a/packages/websockets/decorators/message-body.decorator.ts b/packages/websockets/decorators/message-body.decorator.ts index 9b21e14fe3..e034b92e41 100644 --- a/packages/websockets/decorators/message-body.decorator.ts +++ b/packages/websockets/decorators/message-body.decorator.ts @@ -1,6 +1,6 @@ import { PipeTransform, Type } from '@nestjs/common'; -import { WsParamtype } from '../enums/ws-paramtype.enum'; -import { createPipesWsParamDecorator } from '../utils/param.utils'; +import { WsParamtype } from '../enums/ws-paramtype.enum.js'; +import { createPipesWsParamDecorator } from '../utils/param.utils.js'; /** * WebSockets message body parameter decorator. diff --git a/packages/websockets/decorators/socket-gateway.decorator.ts b/packages/websockets/decorators/socket-gateway.decorator.ts index 8fc1c9baef..d4e6f52fdb 100644 --- a/packages/websockets/decorators/socket-gateway.decorator.ts +++ b/packages/websockets/decorators/socket-gateway.decorator.ts @@ -1,5 +1,9 @@ -import { GATEWAY_METADATA, GATEWAY_OPTIONS, PORT_METADATA } from '../constants'; -import { GatewayMetadata } from '../interfaces'; +import { + GATEWAY_METADATA, + GATEWAY_OPTIONS, + PORT_METADATA, +} from '../constants.js'; +import { GatewayMetadata } from '../interfaces/index.js'; /** * Decorator that marks a class as a Nest gateway that enables real-time, bidirectional diff --git a/packages/websockets/decorators/subscribe-message.decorator.ts b/packages/websockets/decorators/subscribe-message.decorator.ts index 4e33299002..807e013c52 100644 --- a/packages/websockets/decorators/subscribe-message.decorator.ts +++ b/packages/websockets/decorators/subscribe-message.decorator.ts @@ -1,4 +1,4 @@ -import { MESSAGE_MAPPING_METADATA, MESSAGE_METADATA } from '../constants'; +import { MESSAGE_MAPPING_METADATA, MESSAGE_METADATA } from '../constants.js'; /** * Subscribes to messages that fulfils chosen pattern. diff --git a/packages/websockets/enums/ws-paramtype.enum.ts b/packages/websockets/enums/ws-paramtype.enum.ts index 731aacc161..b771712153 100644 --- a/packages/websockets/enums/ws-paramtype.enum.ts +++ b/packages/websockets/enums/ws-paramtype.enum.ts @@ -1,4 +1,4 @@ -import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; +import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js'; export enum WsParamtype { SOCKET = RouteParamtypes.REQUEST, diff --git a/packages/websockets/errors/index.ts b/packages/websockets/errors/index.ts index 83185f3a6e..d6616c5872 100644 --- a/packages/websockets/errors/index.ts +++ b/packages/websockets/errors/index.ts @@ -1 +1 @@ -export * from './ws-exception'; +export * from './ws-exception.js'; diff --git a/packages/websockets/errors/invalid-socket-port.exception.ts b/packages/websockets/errors/invalid-socket-port.exception.ts index 59f0b3faa5..61e6f88402 100644 --- a/packages/websockets/errors/invalid-socket-port.exception.ts +++ b/packages/websockets/errors/invalid-socket-port.exception.ts @@ -1,4 +1,4 @@ -import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception'; +import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception.js'; export class InvalidSocketPortException extends RuntimeException { constructor(port: number | string, type: any) { diff --git a/packages/websockets/errors/ws-exception.ts b/packages/websockets/errors/ws-exception.ts index f6eddd845d..15c02bcd96 100644 --- a/packages/websockets/errors/ws-exception.ts +++ b/packages/websockets/errors/ws-exception.ts @@ -1,4 +1,4 @@ -import { isObject, isString } from '@nestjs/common/utils/shared.utils'; +import { isObject, isString } from '@nestjs/common/utils/shared.utils.js'; export class WsException extends Error { constructor(private readonly error: string | object) { diff --git a/packages/websockets/exceptions/base-ws-exception-filter.ts b/packages/websockets/exceptions/base-ws-exception-filter.ts index be46ec05da..4cd1dc85a0 100644 --- a/packages/websockets/exceptions/base-ws-exception-filter.ts +++ b/packages/websockets/exceptions/base-ws-exception-filter.ts @@ -4,9 +4,9 @@ import { Logger, WsExceptionFilter, } from '@nestjs/common'; -import { isObject } from '@nestjs/common/utils/shared.utils'; -import { MESSAGES } from '@nestjs/core/constants'; -import { WsException } from '../errors/ws-exception'; +import { isObject } from '@nestjs/common/utils/shared.utils.js'; +import { MESSAGES } from '@nestjs/core/constants.js'; +import { WsException } from '../errors/ws-exception.js'; export interface ErrorPayload { /** diff --git a/packages/websockets/exceptions/index.ts b/packages/websockets/exceptions/index.ts index 407cea5fbb..27813896a4 100644 --- a/packages/websockets/exceptions/index.ts +++ b/packages/websockets/exceptions/index.ts @@ -1 +1 @@ -export * from './base-ws-exception-filter'; +export * from './base-ws-exception-filter.js'; diff --git a/packages/websockets/exceptions/ws-exceptions-handler.ts b/packages/websockets/exceptions/ws-exceptions-handler.ts index 3efbbbfad5..2401bd013e 100644 --- a/packages/websockets/exceptions/ws-exceptions-handler.ts +++ b/packages/websockets/exceptions/ws-exceptions-handler.ts @@ -1,10 +1,10 @@ import { ArgumentsHost } from '@nestjs/common'; -import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface'; -import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util'; -import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { InvalidExceptionFilterException } from '@nestjs/core/errors/exceptions/invalid-exception-filter.exception'; -import { WsException } from '../errors/ws-exception'; -import { BaseWsExceptionFilter } from './base-ws-exception-filter'; +import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.js'; +import { selectExceptionFilterMetadata } from '@nestjs/common/utils/select-exception-filter-metadata.util.js'; +import { isEmpty } from '@nestjs/common/utils/shared.utils.js'; +import { InvalidExceptionFilterException } from '@nestjs/core/errors/exceptions/invalid-exception-filter.exception.js'; +import { WsException } from '../errors/ws-exception.js'; +import { BaseWsExceptionFilter } from './base-ws-exception-filter.js'; /** * @publicApi diff --git a/packages/websockets/factories/server-and-event-streams-factory.ts b/packages/websockets/factories/server-and-event-streams-factory.ts index fc7038e528..9f2e570a2b 100644 --- a/packages/websockets/factories/server-and-event-streams-factory.ts +++ b/packages/websockets/factories/server-and-event-streams-factory.ts @@ -1,5 +1,5 @@ import { ReplaySubject, Subject } from 'rxjs'; -import { ServerAndEventStreamsHost } from '../interfaces/server-and-event-streams-host.interface'; +import { ServerAndEventStreamsHost } from '../interfaces/server-and-event-streams-host.interface.js'; export class ServerAndEventStreamsFactory { public static create(server: T): ServerAndEventStreamsHost { diff --git a/packages/websockets/factories/ws-params-factory.ts b/packages/websockets/factories/ws-params-factory.ts index 2ef6fefa00..5550729d9c 100644 --- a/packages/websockets/factories/ws-params-factory.ts +++ b/packages/websockets/factories/ws-params-factory.ts @@ -1,5 +1,5 @@ -import { isFunction } from '@nestjs/common/utils/shared.utils'; -import { WsParamtype } from '../enums/ws-paramtype.enum'; +import { isFunction } from '@nestjs/common/utils/shared.utils.js'; +import { WsParamtype } from '../enums/ws-paramtype.enum.js'; export class WsParamsFactory { public exchangeKeyForValue( diff --git a/packages/websockets/gateway-metadata-explorer.ts b/packages/websockets/gateway-metadata-explorer.ts index 66f44cc998..c516c19a9e 100644 --- a/packages/websockets/gateway-metadata-explorer.ts +++ b/packages/websockets/gateway-metadata-explorer.ts @@ -1,16 +1,16 @@ -import { isFunction, isUndefined } from '@nestjs/common/utils/shared.utils'; -import { MetadataScanner } from '@nestjs/core/metadata-scanner'; +import { isFunction, isUndefined } from '@nestjs/common/utils/shared.utils.js'; +import { MetadataScanner } from '@nestjs/core/metadata-scanner.js'; import { Observable } from 'rxjs'; import { GATEWAY_SERVER_METADATA, MESSAGE_MAPPING_METADATA, MESSAGE_METADATA, PARAM_ARGS_METADATA, -} from './constants'; -import { NestGateway } from './interfaces/nest-gateway.interface'; -import { ParamsMetadata } from '@nestjs/core/helpers/interfaces'; -import { WsParamtype } from './enums/ws-paramtype.enum'; -import { ContextUtils } from '@nestjs/core/helpers/context-utils'; +} from './constants.js'; +import { NestGateway } from './interfaces/nest-gateway.interface.js'; +import { ParamsMetadata } from '@nestjs/core/helpers/interfaces/index.js'; +import { WsParamtype } from './enums/ws-paramtype.enum.js'; +import { ContextUtils } from '@nestjs/core/helpers/context-utils.js'; export interface MessageMappingProperties { message: any; diff --git a/packages/websockets/index.ts b/packages/websockets/index.ts index c831a18b23..9e0948c5ea 100644 --- a/packages/websockets/index.ts +++ b/packages/websockets/index.ts @@ -6,9 +6,9 @@ */ import 'reflect-metadata'; -export * from './adapters'; -export * from './decorators'; -export * from './errors'; -export * from './exceptions'; -export { MessageMappingProperties } from './gateway-metadata-explorer'; -export * from './interfaces'; +export * from './adapters/index.js'; +export * from './decorators/index.js'; +export * from './errors/index.js'; +export * from './exceptions/index.js'; +export { MessageMappingProperties } from './gateway-metadata-explorer.js'; +export * from './interfaces/index.js'; diff --git a/packages/websockets/interfaces/gateway-metadata.interface.ts b/packages/websockets/interfaces/gateway-metadata.interface.ts index 7164c21a9e..2962cf2cef 100644 --- a/packages/websockets/interfaces/gateway-metadata.interface.ts +++ b/packages/websockets/interfaces/gateway-metadata.interface.ts @@ -1,4 +1,4 @@ -import { CorsOptions } from '@nestjs/common/interfaces/external/cors-options.interface'; +import { CorsOptions } from '@nestjs/common/interfaces/external/cors-options.interface.js'; /** * External interface diff --git a/packages/websockets/interfaces/hooks/index.ts b/packages/websockets/interfaces/hooks/index.ts index b80cb26ca4..3142711a01 100644 --- a/packages/websockets/interfaces/hooks/index.ts +++ b/packages/websockets/interfaces/hooks/index.ts @@ -1,3 +1,3 @@ -export * from './on-gateway-connection.interface'; -export * from './on-gateway-disconnect.interface'; -export * from './on-gateway-init.interface'; +export * from './on-gateway-connection.interface.js'; +export * from './on-gateway-disconnect.interface.js'; +export * from './on-gateway-init.interface.js'; diff --git a/packages/websockets/interfaces/index.ts b/packages/websockets/interfaces/index.ts index 80428a5fb6..90ef3dbe55 100644 --- a/packages/websockets/interfaces/index.ts +++ b/packages/websockets/interfaces/index.ts @@ -1,5 +1,5 @@ -export * from './gateway-metadata.interface'; -export * from './hooks'; -export * from './server-and-event-streams-host.interface'; -export * from './web-socket-server.interface'; -export * from './ws-response.interface'; +export * from './gateway-metadata.interface.js'; +export * from './hooks/index.js'; +export * from './server-and-event-streams-host.interface.js'; +export * from './web-socket-server.interface.js'; +export * from './ws-response.interface.js'; diff --git a/packages/websockets/package.json b/packages/websockets/package.json index 0ab580c8d0..276fd08aa5 100644 --- a/packages/websockets/package.json +++ b/packages/websockets/package.json @@ -4,6 +4,12 @@ "description": "Nest - modern, fast, powerful node.js web framework (@websockets)", "author": "Kamil Mysliwiec", "license": "MIT", + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./*": "./*" + }, "repository": { "type": "git", "url": "https://github.com/nestjs/nest.git", diff --git a/packages/websockets/socket-module.ts b/packages/websockets/socket-module.ts index c0fe93f93c..e82c2e309a 100644 --- a/packages/websockets/socket-module.ts +++ b/packages/websockets/socket-module.ts @@ -1,28 +1,28 @@ import { NestApplicationOptions } from '@nestjs/common'; -import { InjectionToken } from '@nestjs/common/interfaces'; -import { Injectable } from '@nestjs/common/interfaces/injectable.interface'; -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { GuardsConsumer } from '@nestjs/core/guards/guards-consumer'; -import { GuardsContextCreator } from '@nestjs/core/guards/guards-context-creator'; -import { loadAdapter } from '@nestjs/core/helpers/load-adapter'; -import { NestContainer } from '@nestjs/core/injector/container'; -import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; -import { InterceptorsConsumer } from '@nestjs/core/interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '@nestjs/core/interceptors/interceptors-context-creator'; -import { PipesConsumer } from '@nestjs/core/pipes/pipes-consumer'; -import { PipesContextCreator } from '@nestjs/core/pipes/pipes-context-creator'; +import { InjectionToken } from '@nestjs/common/interfaces/index.js'; +import { Injectable } from '@nestjs/common/interfaces/injectable.interface.js'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { GuardsConsumer } from '@nestjs/core/guards/guards-consumer.js'; +import { GuardsContextCreator } from '@nestjs/core/guards/guards-context-creator.js'; +import { loadAdapter } from '@nestjs/core/helpers/load-adapter.js'; +import { NestContainer } from '@nestjs/core/injector/container.js'; +import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; +import { InterceptorsConsumer } from '@nestjs/core/interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '@nestjs/core/interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '@nestjs/core/pipes/pipes-consumer.js'; +import { PipesContextCreator } from '@nestjs/core/pipes/pipes-context-creator.js'; import { iterate } from 'iterare'; -import { AbstractWsAdapter } from './adapters'; -import { GATEWAY_METADATA } from './constants'; -import { ExceptionFiltersContext } from './context/exception-filters-context'; -import { WsContextCreator } from './context/ws-context-creator'; -import { WsProxy } from './context/ws-proxy'; -import { NestGateway } from './interfaces/nest-gateway.interface'; -import { SocketServerProvider } from './socket-server-provider'; -import { SocketsContainer } from './sockets-container'; -import { WebSocketsController } from './web-sockets-controller'; +import { AbstractWsAdapter } from './adapters/index.js'; +import { GATEWAY_METADATA } from './constants.js'; +import { ExceptionFiltersContext } from './context/exception-filters-context.js'; +import { WsContextCreator } from './context/ws-context-creator.js'; +import { WsProxy } from './context/ws-proxy.js'; +import { NestGateway } from './interfaces/nest-gateway.interface.js'; +import { SocketServerProvider } from './socket-server-provider.js'; +import { SocketsContainer } from './sockets-container.js'; +import { WebSocketsController } from './web-sockets-controller.js'; export class SocketModule< THttpServer = any, @@ -74,7 +74,7 @@ export class SocketModule< .forEach(wrapper => this.connectGatewayToServer(wrapper, moduleName)); } - public connectGatewayToServer( + public async connectGatewayToServer( wrapper: InstanceWrapper, moduleName: string, ) { @@ -84,7 +84,7 @@ export class SocketModule< return; } if (!this.isAdapterInitialized) { - this.initializeAdapter(); + await this.initializeAdapter(); } this.webSocketsController.connectGatewayToServer( instance as NestGateway, @@ -113,7 +113,7 @@ export class SocketModule< this.socketsContainer.clear(); } - private initializeAdapter() { + private async initializeAdapter() { const forceCloseConnections = (this.appOptions as NestApplicationOptions) .forceCloseConnections; const adapter = this.applicationConfig.getIoAdapter(); @@ -123,10 +123,10 @@ export class SocketModule< this.isAdapterInitialized = true; return; } - const { IoAdapter } = loadAdapter( + const { IoAdapter } = await loadAdapter( '@nestjs/platform-socket.io', 'WebSockets', - () => require('@nestjs/platform-socket.io'), + () => import('@nestjs/platform-socket.io'), ); const ioAdapter = new IoAdapter(this.httpServer); ioAdapter.forceCloseConnections = forceCloseConnections; diff --git a/packages/websockets/socket-server-provider.ts b/packages/websockets/socket-server-provider.ts index a4b54f4533..3820e7323d 100644 --- a/packages/websockets/socket-server-provider.ts +++ b/packages/websockets/socket-server-provider.ts @@ -1,9 +1,12 @@ -import { addLeadingSlash, isString } from '@nestjs/common/utils/shared.utils'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { ServerAndEventStreamsFactory } from './factories/server-and-event-streams-factory'; -import { GatewayMetadata } from './interfaces/gateway-metadata.interface'; -import { ServerAndEventStreamsHost } from './interfaces/server-and-event-streams-host.interface'; -import { SocketsContainer } from './sockets-container'; +import { + addLeadingSlash, + isString, +} from '@nestjs/common/utils/shared.utils.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { ServerAndEventStreamsFactory } from './factories/server-and-event-streams-factory.js'; +import { GatewayMetadata } from './interfaces/gateway-metadata.interface.js'; +import { ServerAndEventStreamsHost } from './interfaces/server-and-event-streams-host.interface.js'; +import { SocketsContainer } from './sockets-container.js'; export class SocketServerProvider { constructor( diff --git a/packages/websockets/sockets-container.ts b/packages/websockets/sockets-container.ts index f6b0ccfccf..763bdc85b7 100644 --- a/packages/websockets/sockets-container.ts +++ b/packages/websockets/sockets-container.ts @@ -1,5 +1,8 @@ -import * as hash from 'object-hash'; -import { GatewayMetadata, ServerAndEventStreamsHost } from './interfaces'; +import hash from 'object-hash'; +import { + GatewayMetadata, + ServerAndEventStreamsHost, +} from './interfaces/index.js'; export class SocketsContainer { private readonly serverAndEventStreamsHosts = new Map< diff --git a/packages/websockets/test/container.spec.ts b/packages/websockets/test/container.spec.ts index 1947804f5d..303f44e460 100644 --- a/packages/websockets/test/container.spec.ts +++ b/packages/websockets/test/container.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import * as hash from 'object-hash'; +import hash from 'object-hash'; import * as sinon from 'sinon'; -import { SocketsContainer } from '../sockets-container'; +import { SocketsContainer } from '../sockets-container.js'; describe('SocketsContainer', () => { const port = 30; diff --git a/packages/websockets/test/context/exception-filters.context.spec.ts b/packages/websockets/test/context/exception-filters.context.spec.ts index d58730c1e3..0e11b3726f 100644 --- a/packages/websockets/test/context/exception-filters.context.spec.ts +++ b/packages/websockets/test/context/exception-filters.context.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { Catch } from '../../../common/decorators/core/catch.decorator'; -import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator'; -import { NestContainer } from '../../../core/injector/container'; -import { ExceptionFiltersContext } from '../../context/exception-filters-context'; +import { Catch } from '../../../common/decorators/core/catch.decorator.js'; +import { UseFilters } from '../../../common/decorators/core/exception-filters.decorator.js'; +import { NestContainer } from '../../../core/injector/container.js'; +import { ExceptionFiltersContext } from '../../context/exception-filters-context.js'; describe('ExceptionFiltersContext', () => { let exceptionFilter: ExceptionFiltersContext; diff --git a/packages/websockets/test/context/ws-context-creator.spec.ts b/packages/websockets/test/context/ws-context-creator.spec.ts index 37b0b28359..05117e8c69 100644 --- a/packages/websockets/test/context/ws-context-creator.spec.ts +++ b/packages/websockets/test/context/ws-context-creator.spec.ts @@ -1,22 +1,22 @@ -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import { of } from 'rxjs'; import * as sinon from 'sinon'; -import { Injectable, UseGuards, UsePipes } from '../../../common'; -import { CUSTOM_ROUTE_ARGS_METADATA } from '../../../common/constants'; -import { GuardsConsumer } from '../../../core/guards/guards-consumer'; -import { GuardsContextCreator } from '../../../core/guards/guards-context-creator'; -import { NestContainer } from '../../../core/injector/container'; -import { InterceptorsConsumer } from '../../../core/interceptors/interceptors-consumer'; -import { InterceptorsContextCreator } from '../../../core/interceptors/interceptors-context-creator'; -import { PipesConsumer } from '../../../core/pipes/pipes-consumer'; -import { PipesContextCreator } from '../../../core/pipes/pipes-context-creator'; -import { ExceptionFiltersContext } from '../../context/exception-filters-context'; -import { WsContextCreator } from '../../context/ws-context-creator'; -import { WsProxy } from '../../context/ws-proxy'; -import { WsParamtype } from '../../enums/ws-paramtype.enum'; -import { WsParamsFactory } from '../../factories/ws-params-factory'; -import { WsException } from '../../index'; +import { Injectable, UseGuards, UsePipes } from '../../../common/index.js'; +import { CUSTOM_ROUTE_ARGS_METADATA } from '../../../common/constants.js'; +import { GuardsConsumer } from '../../../core/guards/guards-consumer.js'; +import { GuardsContextCreator } from '../../../core/guards/guards-context-creator.js'; +import { NestContainer } from '../../../core/injector/container.js'; +import { InterceptorsConsumer } from '../../../core/interceptors/interceptors-consumer.js'; +import { InterceptorsContextCreator } from '../../../core/interceptors/interceptors-context-creator.js'; +import { PipesConsumer } from '../../../core/pipes/pipes-consumer.js'; +import { PipesContextCreator } from '../../../core/pipes/pipes-context-creator.js'; +import { ExceptionFiltersContext } from '../../context/exception-filters-context.js'; +import { WsContextCreator } from '../../context/ws-context-creator.js'; +import { WsProxy } from '../../context/ws-proxy.js'; +import { WsParamtype } from '../../enums/ws-paramtype.enum.js'; +import { WsParamsFactory } from '../../factories/ws-params-factory.js'; +import { WsException } from '../../index.js'; @Injectable() class TestGuard { diff --git a/packages/websockets/test/context/ws-proxy.spec.ts b/packages/websockets/test/context/ws-proxy.spec.ts index 7266ce13b3..b7fa8d296a 100644 --- a/packages/websockets/test/context/ws-proxy.spec.ts +++ b/packages/websockets/test/context/ws-proxy.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import { throwError } from 'rxjs'; import * as sinon from 'sinon'; -import { WsProxy } from '../../context/ws-proxy'; -import { WsException } from '../../errors/ws-exception'; -import { WsExceptionsHandler } from '../../exceptions/ws-exceptions-handler'; +import { WsProxy } from '../../context/ws-proxy.js'; +import { WsException } from '../../errors/ws-exception.js'; +import { WsExceptionsHandler } from '../../exceptions/ws-exceptions-handler.js'; describe('WsProxy', () => { let routerProxy: WsProxy; diff --git a/packages/websockets/test/decorators/ack.decorator.spec.ts b/packages/websockets/test/decorators/ack.decorator.spec.ts index 8bcc737e81..a574eaef36 100644 --- a/packages/websockets/test/decorators/ack.decorator.spec.ts +++ b/packages/websockets/test/decorators/ack.decorator.spec.ts @@ -1,8 +1,8 @@ import 'reflect-metadata'; import { expect } from 'chai'; -import { PARAM_ARGS_METADATA } from '../../constants'; -import { Ack } from '../../decorators/ack.decorator'; -import { WsParamtype } from '../../enums/ws-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../../constants.js'; +import { Ack } from '../../decorators/ack.decorator.js'; +import { WsParamtype } from '../../enums/ws-paramtype.enum.js'; class AckTest { public test(@Ack() ack: Function) {} diff --git a/packages/websockets/test/decorators/connected-socket.decorator.spec.ts b/packages/websockets/test/decorators/connected-socket.decorator.spec.ts index 7d92ee57a3..cede2bcf6a 100644 --- a/packages/websockets/test/decorators/connected-socket.decorator.spec.ts +++ b/packages/websockets/test/decorators/connected-socket.decorator.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { PARAM_ARGS_METADATA } from '../../constants'; -import { ConnectedSocket } from '../../decorators'; -import { WsParamtype } from '../../enums/ws-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../../constants.js'; +import { ConnectedSocket } from '../../decorators/index.js'; +import { WsParamtype } from '../../enums/ws-paramtype.enum.js'; class ConnectedSocketTest { public test(@ConnectedSocket() socket: any) {} diff --git a/packages/websockets/test/decorators/message-body.decorator.spec.ts b/packages/websockets/test/decorators/message-body.decorator.spec.ts index a379fed956..7222c5be37 100644 --- a/packages/websockets/test/decorators/message-body.decorator.spec.ts +++ b/packages/websockets/test/decorators/message-body.decorator.spec.ts @@ -1,8 +1,8 @@ import { ValidationPipe } from '@nestjs/common'; import { expect } from 'chai'; -import { PARAM_ARGS_METADATA } from '../../constants'; -import { MessageBody } from '../../decorators'; -import { WsParamtype } from '../../enums/ws-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../../constants.js'; +import { MessageBody } from '../../decorators/index.js'; +import { WsParamtype } from '../../enums/ws-paramtype.enum.js'; class MessagePayloadTest { public test(@MessageBody(ValidationPipe) payload: any) {} diff --git a/packages/websockets/test/exceptions/ws-exception.spec.ts b/packages/websockets/test/exceptions/ws-exception.spec.ts index b058edbea0..be23676ad1 100644 --- a/packages/websockets/test/exceptions/ws-exception.spec.ts +++ b/packages/websockets/test/exceptions/ws-exception.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { WsException } from '../../errors/ws-exception'; +import { WsException } from '../../errors/ws-exception.js'; describe('WsException', () => { describe('when string passed', () => { diff --git a/packages/websockets/test/exceptions/ws-exceptions-handler.spec.ts b/packages/websockets/test/exceptions/ws-exceptions-handler.spec.ts index c1b54ba4a2..0cbf11c3c0 100644 --- a/packages/websockets/test/exceptions/ws-exceptions-handler.spec.ts +++ b/packages/websockets/test/exceptions/ws-exceptions-handler.spec.ts @@ -1,8 +1,8 @@ -import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { WsException } from '../../errors/ws-exception'; -import { WsExceptionsHandler } from '../../exceptions/ws-exceptions-handler'; +import { WsException } from '../../errors/ws-exception.js'; +import { WsExceptionsHandler } from '../../exceptions/ws-exceptions-handler.js'; describe('WsExceptionsHandler', () => { let handler: WsExceptionsHandler; diff --git a/packages/websockets/test/factories/server-and-event-streams-factory.spec.ts b/packages/websockets/test/factories/server-and-event-streams-factory.spec.ts index 7d7e148cb0..22f491a067 100644 --- a/packages/websockets/test/factories/server-and-event-streams-factory.spec.ts +++ b/packages/websockets/test/factories/server-and-event-streams-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { ReplaySubject, Subject } from 'rxjs'; -import { ServerAndEventStreamsFactory } from '../../factories/server-and-event-streams-factory'; +import { ServerAndEventStreamsFactory } from '../../factories/server-and-event-streams-factory.js'; describe('ServerAndEventStreamsFactory', () => { describe('create', () => { diff --git a/packages/websockets/test/factories/ws-params-factory.spec.ts b/packages/websockets/test/factories/ws-params-factory.spec.ts index a0e95883bf..785aad9ce6 100644 --- a/packages/websockets/test/factories/ws-params-factory.spec.ts +++ b/packages/websockets/test/factories/ws-params-factory.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { WsParamtype } from '../../enums/ws-paramtype.enum'; -import { WsParamsFactory } from '../../factories/ws-params-factory'; +import { WsParamtype } from '../../enums/ws-paramtype.enum.js'; +import { WsParamsFactory } from '../../factories/ws-params-factory.js'; describe('WsParamsFactory', () => { let factory: WsParamsFactory; diff --git a/packages/websockets/test/gateway-metadata-explorer.spec.ts b/packages/websockets/test/gateway-metadata-explorer.spec.ts index f5d4488a90..6e31205e77 100644 --- a/packages/websockets/test/gateway-metadata-explorer.spec.ts +++ b/packages/websockets/test/gateway-metadata-explorer.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; -import { MetadataScanner } from '../../core/metadata-scanner'; -import { WebSocketServer } from '../decorators/gateway-server.decorator'; -import { WebSocketGateway } from '../decorators/socket-gateway.decorator'; -import { SubscribeMessage } from '../decorators/subscribe-message.decorator'; -import { Ack } from '../decorators/ack.decorator'; -import { GatewayMetadataExplorer } from '../gateway-metadata-explorer'; +import { MetadataScanner } from '../../core/metadata-scanner.js'; +import { WebSocketServer } from '../decorators/gateway-server.decorator.js'; +import { WebSocketGateway } from '../decorators/socket-gateway.decorator.js'; +import { SubscribeMessage } from '../decorators/subscribe-message.decorator.js'; +import { Ack } from '../decorators/ack.decorator.js'; +import { GatewayMetadataExplorer } from '../gateway-metadata-explorer.js'; describe('GatewayMetadataExplorer', () => { const message = 'test'; diff --git a/packages/websockets/test/socket-server-provider.spec.ts b/packages/websockets/test/socket-server-provider.spec.ts index a9d1649db6..d9eb9b1bbf 100644 --- a/packages/websockets/test/socket-server-provider.spec.ts +++ b/packages/websockets/test/socket-server-provider.spec.ts @@ -1,9 +1,9 @@ -import { ApplicationConfig } from '@nestjs/core/application-config'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; import { expect } from 'chai'; import * as sinon from 'sinon'; -import { AbstractWsAdapter } from '../adapters/ws-adapter'; -import { SocketServerProvider } from '../socket-server-provider'; -import { SocketsContainer } from '../sockets-container'; +import { AbstractWsAdapter } from '../adapters/ws-adapter.js'; +import { SocketServerProvider } from '../socket-server-provider.js'; +import { SocketsContainer } from '../sockets-container.js'; class NoopAdapter extends AbstractWsAdapter { public create(port: number, options?: any) {} diff --git a/packages/websockets/test/utils/compare-element.util.spec.ts b/packages/websockets/test/utils/compare-element.util.spec.ts index 74e4b6c409..d125997f3a 100644 --- a/packages/websockets/test/utils/compare-element.util.spec.ts +++ b/packages/websockets/test/utils/compare-element.util.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { compareElementAt } from '../../utils/compare-element.util'; +import { compareElementAt } from '../../utils/compare-element.util.js'; describe('compareElementAt', () => { it('should compare elements at the specific position in arrays', () => { diff --git a/packages/websockets/test/utils/gateway-server.decorator.spec.ts b/packages/websockets/test/utils/gateway-server.decorator.spec.ts index 1150da0965..cc6f806bfb 100644 --- a/packages/websockets/test/utils/gateway-server.decorator.spec.ts +++ b/packages/websockets/test/utils/gateway-server.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { WebSocketServer } from '../../decorators/gateway-server.decorator'; -import { GATEWAY_SERVER_METADATA } from '../../constants'; +import { WebSocketServer } from '../../decorators/gateway-server.decorator.js'; +import { GATEWAY_SERVER_METADATA } from '../../constants.js'; describe('@WebSocketServer', () => { class TestGateway { diff --git a/packages/websockets/test/utils/socket-gateway.decorator.spec.ts b/packages/websockets/test/utils/socket-gateway.decorator.spec.ts index 81d94b361f..6e9e6671f0 100644 --- a/packages/websockets/test/utils/socket-gateway.decorator.spec.ts +++ b/packages/websockets/test/utils/socket-gateway.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { GATEWAY_METADATA, GATEWAY_OPTIONS } from '../../constants'; -import { WebSocketGateway } from '../../decorators/socket-gateway.decorator'; +import { GATEWAY_METADATA, GATEWAY_OPTIONS } from '../../constants.js'; +import { WebSocketGateway } from '../../decorators/socket-gateway.decorator.js'; describe('@WebSocketGateway', () => { @WebSocketGateway(80, { namespace: '/' }) diff --git a/packages/websockets/test/utils/subscribe-message.decorator.spec.ts b/packages/websockets/test/utils/subscribe-message.decorator.spec.ts index 3479e7bdb3..f06810940b 100644 --- a/packages/websockets/test/utils/subscribe-message.decorator.spec.ts +++ b/packages/websockets/test/utils/subscribe-message.decorator.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { MESSAGE_MAPPING_METADATA } from '../../constants'; -import { SubscribeMessage } from '../../decorators/subscribe-message.decorator'; +import { MESSAGE_MAPPING_METADATA } from '../../constants.js'; +import { SubscribeMessage } from '../../decorators/subscribe-message.decorator.js'; describe('@SubscribeMessage', () => { class TestGateway { diff --git a/packages/websockets/test/web-sockets-controller.spec.ts b/packages/websockets/test/web-sockets-controller.spec.ts index ffa77f9009..c231514ef7 100644 --- a/packages/websockets/test/web-sockets-controller.spec.ts +++ b/packages/websockets/test/web-sockets-controller.spec.ts @@ -1,21 +1,21 @@ import { NestContainer } from '@nestjs/core'; -import { ApplicationConfig } from '@nestjs/core/application-config'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; import { expect } from 'chai'; import { fromEvent, lastValueFrom, Observable, of } from 'rxjs'; import * as sinon from 'sinon'; -import { GraphInspector } from '../../core/inspector/graph-inspector'; -import { MetadataScanner } from '../../core/metadata-scanner'; -import { AbstractWsAdapter } from '../adapters/ws-adapter'; -import { PORT_METADATA } from '../constants'; -import { WsContextCreator } from '../context/ws-context-creator'; -import { WebSocketGateway } from '../decorators/socket-gateway.decorator'; -import { InvalidSocketPortException } from '../errors/invalid-socket-port.exception'; +import { GraphInspector } from '../../core/inspector/graph-inspector.js'; +import { MetadataScanner } from '../../core/metadata-scanner.js'; +import { AbstractWsAdapter } from '../adapters/ws-adapter.js'; +import { PORT_METADATA } from '../constants.js'; +import { WsContextCreator } from '../context/ws-context-creator.js'; +import { WebSocketGateway } from '../decorators/socket-gateway.decorator.js'; +import { InvalidSocketPortException } from '../errors/invalid-socket-port.exception.js'; import { GatewayMetadataExplorer, MessageMappingProperties, -} from '../gateway-metadata-explorer'; -import { SocketServerProvider } from '../socket-server-provider'; -import { WebSocketsController } from '../web-sockets-controller'; +} from '../gateway-metadata-explorer.js'; +import { SocketServerProvider } from '../socket-server-provider.js'; +import { WebSocketsController } from '../web-sockets-controller.js'; class NoopAdapter extends AbstractWsAdapter { public create(port: number, options?: any) {} diff --git a/packages/websockets/tsconfig.build.json b/packages/websockets/tsconfig.build.json index 732ca00cb7..fb0f617fdb 100644 --- a/packages/websockets/tsconfig.build.json +++ b/packages/websockets/tsconfig.build.json @@ -2,13 +2,7 @@ "extends": "../tsconfig.build.json", "compilerOptions": { "outDir": ".", - "rootDir": ".", - "paths": { - "@nestjs/common": ["../common"], - "@nestjs/common/*": ["../common/*"], - "@nestjs/core": ["../core"], - "@nestjs/core/*": ["../core/*"] - } + "rootDir": "." }, "exclude": ["node_modules", "dist", "test/**/*", "*.spec.ts"], "references": [ diff --git a/packages/websockets/utils/index.ts b/packages/websockets/utils/index.ts index d7f90adea9..20f429261b 100644 --- a/packages/websockets/utils/index.ts +++ b/packages/websockets/utils/index.ts @@ -1 +1 @@ -export * from './param.utils'; +export * from './param.utils.js'; diff --git a/packages/websockets/utils/param.utils.ts b/packages/websockets/utils/param.utils.ts index 6f539903b6..507b4a1ee9 100644 --- a/packages/websockets/utils/param.utils.ts +++ b/packages/websockets/utils/param.utils.ts @@ -1,9 +1,9 @@ import { PipeTransform, Type } from '@nestjs/common'; -import { assignMetadata } from '@nestjs/common/decorators/http/route-params.decorator'; -import { isNil, isString } from '@nestjs/common/utils/shared.utils'; +import { assignMetadata } from '@nestjs/common/decorators/http/route-params.decorator.js'; +import { isNil, isString } from '@nestjs/common/utils/shared.utils.js'; import 'reflect-metadata'; -import { PARAM_ARGS_METADATA } from '../constants'; -import { WsParamtype } from '../enums/ws-paramtype.enum'; +import { PARAM_ARGS_METADATA } from '../constants.js'; +import { WsParamtype } from '../enums/ws-paramtype.enum.js'; export function createWsParamDecorator( paramtype: WsParamtype, diff --git a/packages/websockets/web-sockets-controller.ts b/packages/websockets/web-sockets-controller.ts index 37e21efefd..6739c98d0e 100644 --- a/packages/websockets/web-sockets-controller.ts +++ b/packages/websockets/web-sockets-controller.ts @@ -1,9 +1,9 @@ -import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; -import { Type } from '@nestjs/common/interfaces/type.interface'; -import { Logger } from '@nestjs/common/services/logger.service'; -import { ApplicationConfig } from '@nestjs/core/application-config'; -import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; -import { MetadataScanner } from '@nestjs/core/metadata-scanner'; +import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface.js'; +import { Type } from '@nestjs/common/interfaces/type.interface.js'; +import { Logger } from '@nestjs/common/services/logger.service.js'; +import { ApplicationConfig } from '@nestjs/core/application-config.js'; +import { GraphInspector } from '@nestjs/core/inspector/graph-inspector.js'; +import { MetadataScanner } from '@nestjs/core/metadata-scanner.js'; import { from as fromPromise, isObservable, @@ -12,19 +12,19 @@ import { Subject, } from 'rxjs'; import { distinctUntilChanged, mergeAll } from 'rxjs/operators'; -import { GATEWAY_OPTIONS, PORT_METADATA } from './constants'; -import { WsContextCreator } from './context/ws-context-creator'; -import { InvalidSocketPortException } from './errors/invalid-socket-port.exception'; +import { GATEWAY_OPTIONS, PORT_METADATA } from './constants.js'; +import { WsContextCreator } from './context/ws-context-creator.js'; +import { InvalidSocketPortException } from './errors/invalid-socket-port.exception.js'; import { GatewayMetadataExplorer, MessageMappingProperties, -} from './gateway-metadata-explorer'; -import { GatewayMetadata } from './interfaces/gateway-metadata.interface'; -import { NestGateway } from './interfaces/nest-gateway.interface'; -import { ServerAndEventStreamsHost } from './interfaces/server-and-event-streams-host.interface'; -import { WebsocketEntrypointMetadata } from './interfaces/websockets-entrypoint-metadata.interface'; -import { SocketServerProvider } from './socket-server-provider'; -import { compareElementAt } from './utils/compare-element.util'; +} from './gateway-metadata-explorer.js'; +import { GatewayMetadata } from './interfaces/gateway-metadata.interface.js'; +import { NestGateway } from './interfaces/nest-gateway.interface.js'; +import { ServerAndEventStreamsHost } from './interfaces/server-and-event-streams-host.interface.js'; +import { WebsocketEntrypointMetadata } from './interfaces/websockets-entrypoint-metadata.interface.js'; +import { SocketServerProvider } from './socket-server-provider.js'; +import { compareElementAt } from './utils/compare-element.util.js'; export class WebSocketsController { private readonly logger = new Logger(WebSocketsController.name, { diff --git a/sample/01-cats-app/tsconfig.json b/sample/01-cats-app/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/01-cats-app/tsconfig.json +++ b/sample/01-cats-app/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/02-gateways/tsconfig.json b/sample/02-gateways/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/02-gateways/tsconfig.json +++ b/sample/02-gateways/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/03-microservices/tsconfig.json b/sample/03-microservices/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/03-microservices/tsconfig.json +++ b/sample/03-microservices/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/04-grpc/tsconfig.json b/sample/04-grpc/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/04-grpc/tsconfig.json +++ b/sample/04-grpc/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/05-sql-typeorm/tsconfig.json b/sample/05-sql-typeorm/tsconfig.json index 29bde718a4..8e5ffa8ff9 100644 --- a/sample/05-sql-typeorm/tsconfig.json +++ b/sample/05-sql-typeorm/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/06-mongoose/tsconfig.json b/sample/06-mongoose/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/06-mongoose/tsconfig.json +++ b/sample/06-mongoose/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/07-sequelize/tsconfig.json b/sample/07-sequelize/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/07-sequelize/tsconfig.json +++ b/sample/07-sequelize/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/08-webpack/tsconfig.json b/sample/08-webpack/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/08-webpack/tsconfig.json +++ b/sample/08-webpack/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/10-fastify/tsconfig.json b/sample/10-fastify/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/10-fastify/tsconfig.json +++ b/sample/10-fastify/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/11-swagger/tsconfig.json b/sample/11-swagger/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/11-swagger/tsconfig.json +++ b/sample/11-swagger/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/12-graphql-schema-first/tsconfig.json b/sample/12-graphql-schema-first/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/12-graphql-schema-first/tsconfig.json +++ b/sample/12-graphql-schema-first/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/13-mongo-typeorm/tsconfig.json b/sample/13-mongo-typeorm/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/13-mongo-typeorm/tsconfig.json +++ b/sample/13-mongo-typeorm/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/14-mongoose-base/tsconfig.json b/sample/14-mongoose-base/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/14-mongoose-base/tsconfig.json +++ b/sample/14-mongoose-base/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/15-mvc/tsconfig.json b/sample/15-mvc/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/15-mvc/tsconfig.json +++ b/sample/15-mvc/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/16-gateways-ws/tsconfig.json b/sample/16-gateways-ws/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/16-gateways-ws/tsconfig.json +++ b/sample/16-gateways-ws/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/17-mvc-fastify/tsconfig.json b/sample/17-mvc-fastify/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/17-mvc-fastify/tsconfig.json +++ b/sample/17-mvc-fastify/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/18-context/tsconfig.json b/sample/18-context/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/18-context/tsconfig.json +++ b/sample/18-context/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/19-auth-jwt/tsconfig.json b/sample/19-auth-jwt/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/19-auth-jwt/tsconfig.json +++ b/sample/19-auth-jwt/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/20-cache/tsconfig.json b/sample/20-cache/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/20-cache/tsconfig.json +++ b/sample/20-cache/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/21-serializer/tsconfig.json b/sample/21-serializer/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/21-serializer/tsconfig.json +++ b/sample/21-serializer/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/22-graphql-prisma/tsconfig.json b/sample/22-graphql-prisma/tsconfig.json index d9c82ca975..2eeaf7eeaf 100755 --- a/sample/22-graphql-prisma/tsconfig.json +++ b/sample/22-graphql-prisma/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/23-graphql-code-first/tsconfig.json b/sample/23-graphql-code-first/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/23-graphql-code-first/tsconfig.json +++ b/sample/23-graphql-code-first/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/24-serve-static/tsconfig.json b/sample/24-serve-static/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/24-serve-static/tsconfig.json +++ b/sample/24-serve-static/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/25-dynamic-modules/tsconfig.json b/sample/25-dynamic-modules/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/25-dynamic-modules/tsconfig.json +++ b/sample/25-dynamic-modules/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/26-queues/tsconfig.json b/sample/26-queues/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/26-queues/tsconfig.json +++ b/sample/26-queues/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/27-scheduling/tsconfig.json b/sample/27-scheduling/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/27-scheduling/tsconfig.json +++ b/sample/27-scheduling/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/28-sse/tsconfig.json b/sample/28-sse/tsconfig.json index 1bbdea209f..bcf264b2ea 100644 --- a/sample/28-sse/tsconfig.json +++ b/sample/28-sse/tsconfig.json @@ -5,7 +5,7 @@ "removeComments": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/29-file-upload/tsconfig.json b/sample/29-file-upload/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/29-file-upload/tsconfig.json +++ b/sample/29-file-upload/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/30-event-emitter/tsconfig.json b/sample/30-event-emitter/tsconfig.json index 29bde718a4..8e5ffa8ff9 100644 --- a/sample/30-event-emitter/tsconfig.json +++ b/sample/30-event-emitter/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/31-graphql-federation-code-first/gateway/tsconfig.json b/sample/31-graphql-federation-code-first/gateway/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/31-graphql-federation-code-first/gateway/tsconfig.json +++ b/sample/31-graphql-federation-code-first/gateway/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/31-graphql-federation-code-first/posts-application/tsconfig.json b/sample/31-graphql-federation-code-first/posts-application/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/31-graphql-federation-code-first/posts-application/tsconfig.json +++ b/sample/31-graphql-federation-code-first/posts-application/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/31-graphql-federation-code-first/users-application/tsconfig.json b/sample/31-graphql-federation-code-first/users-application/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/31-graphql-federation-code-first/users-application/tsconfig.json +++ b/sample/31-graphql-federation-code-first/users-application/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/32-graphql-federation-schema-first/gateway/tsconfig.json b/sample/32-graphql-federation-schema-first/gateway/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/32-graphql-federation-schema-first/gateway/tsconfig.json +++ b/sample/32-graphql-federation-schema-first/gateway/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/32-graphql-federation-schema-first/posts-application/tsconfig.json b/sample/32-graphql-federation-schema-first/posts-application/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/32-graphql-federation-schema-first/posts-application/tsconfig.json +++ b/sample/32-graphql-federation-schema-first/posts-application/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/32-graphql-federation-schema-first/users-application/tsconfig.json b/sample/32-graphql-federation-schema-first/users-application/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/32-graphql-federation-schema-first/users-application/tsconfig.json +++ b/sample/32-graphql-federation-schema-first/users-application/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/33-graphql-mercurius/tsconfig.json b/sample/33-graphql-mercurius/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/33-graphql-mercurius/tsconfig.json +++ b/sample/33-graphql-mercurius/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/34-using-esm-packages/package.json b/sample/34-using-esm-packages/package.json index 0fb1b7e968..6c3bf1b138 100644 --- a/sample/34-using-esm-packages/package.json +++ b/sample/34-using-esm-packages/package.json @@ -7,7 +7,7 @@ "license": "UNLICENSED", "type": "commonjs", "engines": { - "node": ">=18.8" + "node": ">= 20" }, "scripts": { "build": "nest build", diff --git a/sample/34-using-esm-packages/tsconfig.json b/sample/34-using-esm-packages/tsconfig.json index 95f5641cf7..de9c8c2f10 100644 --- a/sample/34-using-esm-packages/tsconfig.json +++ b/sample/34-using-esm-packages/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/35-use-esm-package-after-node22/tsconfig.json b/sample/35-use-esm-package-after-node22/tsconfig.json index 95f5641cf7..de9c8c2f10 100644 --- a/sample/35-use-esm-package-after-node22/tsconfig.json +++ b/sample/35-use-esm-package-after-node22/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/sample/36-hmr-esm/tsconfig.json b/sample/36-hmr-esm/tsconfig.json index d9c82ca975..2eeaf7eeaf 100644 --- a/sample/36-hmr-esm/tsconfig.json +++ b/sample/36-hmr-esm/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", diff --git a/tools/benchmarks/tsconfig.json b/tools/benchmarks/tsconfig.json index df3c10ce59..846a91127e 100644 --- a/tools/benchmarks/tsconfig.json +++ b/tools/benchmarks/tsconfig.json @@ -5,7 +5,7 @@ "compilerOptions": { "lib": ["es2023"], "module": "node16", - "target": "es2022", + "target": "es2023", "strict": true, "esModuleInterop": true, diff --git a/tools/gulp/config.ts b/tools/gulp/config.ts index 85ffc5aaed..cd0dd5b443 100644 --- a/tools/gulp/config.ts +++ b/tools/gulp/config.ts @@ -1,4 +1,4 @@ -import { getDirs } from './util/task-helpers'; +import { getDirs } from './util/task-helpers.js'; // All paths are related to the base dir export const source = 'packages'; diff --git a/tools/gulp/gulpfile.ts b/tools/gulp/gulpfile.ts index 1e62007616..dbe0f419cc 100644 --- a/tools/gulp/gulpfile.ts +++ b/tools/gulp/gulpfile.ts @@ -1,4 +1,4 @@ -import './tasks/clean'; -import './tasks/copy-misc'; -import './tasks/move'; -import './tasks/samples'; +import './tasks/clean.js'; +import './tasks/copy-misc.js'; +import './tasks/move.js'; +import './tasks/samples.js'; diff --git a/tools/gulp/tasks/clean.ts b/tools/gulp/tasks/clean.ts index 19b8322ebc..1db41db83f 100644 --- a/tools/gulp/tasks/clean.ts +++ b/tools/gulp/tasks/clean.ts @@ -1,7 +1,7 @@ -import { task, src, series } from 'gulp'; -import { source } from '../config'; -import * as clean from 'gulp-clean'; -import * as deleteEmpty from 'delete-empty'; +import deleteEmpty from 'delete-empty'; +import { series, src, task } from 'gulp'; +import clean from 'gulp-clean'; +import { source } from '../config.js'; /** * Cleans the build output assets from the packages folders diff --git a/tools/gulp/tasks/copy-misc.ts b/tools/gulp/tasks/copy-misc.ts index 8c3091f116..85deba9bf6 100644 --- a/tools/gulp/tasks/copy-misc.ts +++ b/tools/gulp/tasks/copy-misc.ts @@ -1,5 +1,5 @@ -import { task, src, dest } from 'gulp'; -import { packagePaths } from '../config'; +import { dest, src, task } from 'gulp'; +import { packagePaths } from '../config.js'; /** * Copies assets like Readme.md or LICENSE from the project base path diff --git a/tools/gulp/tasks/move.ts b/tools/gulp/tasks/move.ts index 666901c39a..5810df47df 100644 --- a/tools/gulp/tasks/move.ts +++ b/tools/gulp/tasks/move.ts @@ -1,7 +1,7 @@ import { dest, src, task } from 'gulp'; -import { join } from 'path'; -import { samplePath } from '../config'; -import { containsPackageJson, getDirs } from '../util/task-helpers'; +import { join } from 'node:path'; +import { samplePath } from '../config.js'; +import { containsPackageJson, getDirs } from '../util/task-helpers.js'; const distFiles = src(['packages/**/*.js', 'packages/**/*.d.ts']); diff --git a/tools/gulp/tasks/samples.ts b/tools/gulp/tasks/samples.ts index c1c75269fc..3b70714168 100644 --- a/tools/gulp/tasks/samples.ts +++ b/tools/gulp/tasks/samples.ts @@ -1,12 +1,16 @@ import { blue, magenta } from 'ansis'; -import * as childProcess from 'child_process'; -import { execFile as execFileCb } from 'child_process'; -import * as log from 'fancy-log'; +import log from 'fancy-log'; import { task } from 'gulp'; -import { resolve } from 'path'; -import { promisify } from 'util'; -import { samplePath } from '../config'; -import { containsPackageJson, getDirs } from '../util/task-helpers'; +import * as childProcess from 'node:child_process'; +import { execFile as execFileCb } from 'node:child_process'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { promisify } from 'node:util'; +import { samplePath } from '../config.js'; +import { containsPackageJson, getDirs } from '../util/task-helpers.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); const exec = promisify(childProcess.exec); const execFile = promisify(execFileCb); diff --git a/tools/gulp/tsconfig.json b/tools/gulp/tsconfig.json index 0432178305..4040caeb10 100644 --- a/tools/gulp/tsconfig.json +++ b/tools/gulp/tsconfig.json @@ -3,22 +3,18 @@ "experimentalDecorators": true, "noUnusedParameters": false, "noUnusedLocals": false, - "module": "commonjs", - "moduleResolution": "node", + "module": "Node16", + "moduleResolution": "Node16", "outDir": "../../dist/tools/gulp", "strictNullChecks": true, "strictFunctionTypes": true, "noImplicitThis": true, "noEmitOnError": true, "noImplicitAny": false, - "target": "ES2021", - "types": [ - "node" - ], + "target": "ES2023", + "types": ["node"], "typeRoots": ["./typings", "../../node_modules/@types/"], - "baseUrl": ".", + "baseUrl": "." }, - "files": [ - "gulpfile.ts" - ] + "files": ["gulpfile.ts"] } diff --git a/tools/gulp/util/task-helpers.ts b/tools/gulp/util/task-helpers.ts index 9e9e65e3cd..1977b096f0 100644 --- a/tools/gulp/util/task-helpers.ts +++ b/tools/gulp/util/task-helpers.ts @@ -1,5 +1,5 @@ -import { readdirSync, statSync } from 'fs'; -import { join } from 'path'; +import { readdirSync, statSync } from 'node:fs'; +import { join } from 'node:path'; function isDirectory(path: string) { return statSync(path).isDirectory(); diff --git a/tsconfig.json b/tsconfig.json index b9e2adb889..15b18d385b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,8 @@ { "compilerOptions": { - "module": "commonjs", + "module": "Node16", + "moduleResolution": "Node16", + "esModuleInterop": true, "noImplicitAny": false, "noUnusedLocals": false, "removeComments": true, @@ -10,8 +12,9 @@ "noLib": false, "emitDecoratorMetadata": true, "experimentalDecorators": true, + "useDefineForClassFields": false, "useUnknownInCatchVariables": false, - "target": "ES2021", + "target": "ES2023", "sourceMap": true, "allowJs": false, "outDir": "dist", @@ -34,7 +37,7 @@ "@nestjs/platform-fastify": ["./packages/platform-fastify"], "@nestjs/platform-fastify/*": ["./packages/platform-fastify/*"], "@nestjs/platform-socket.io": ["./packages/platform-socket.io"], - "@nestjs/platform-socket.io/*": ["./packages/platform-socket.io/*"], + "@nestjs/platform-socket.io/*": ["./packages/platform-socket.io/*"] } }, "include": ["packages/**/*", "integration/**/*"],