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