From c6e9fbd2a35d217eb832e0d4f72f5eabd7f85eee Mon Sep 17 00:00:00 2001 From: "Max P." Date: Wed, 2 Apr 2025 21:05:56 +0200 Subject: [PATCH] feat!: switch to native ESM with NodeNext module resolution and .js import paths BREAKING CHANGE: Consumers must use ESM-compatible environments. All import paths now include .js extensions. CommonJS (require) is no longer supported. --- src/__tests__/Decorators.spec.ts | 8 ++++---- src/__tests__/Decorators.test.ts | 10 +++++----- src/__tests__/Functions.spec.ts | 2 +- src/__tests__/Functions.test.ts | 11 +++++++---- src/__tests__/ITSinjex.spec.ts | 2 +- src/__tests__/TSinjex.test.ts | 4 ++-- src/classes/TSinjex.ts | 20 ++++++++++---------- src/decorators/Inject.ts | 8 ++++---- src/decorators/Register.ts | 6 +++--- src/decorators/RegisterInstance.ts | 6 +++--- src/functions/register.ts | 4 ++-- src/functions/resolve.ts | 6 +++--- src/index.ts | 20 ++++++++++---------- src/interfaces/Exceptions.ts | 4 ++-- src/interfaces/ITSinjex.ts | 4 ++-- tsconfig.json | 6 +++--- 16 files changed, 62 insertions(+), 59 deletions(-) diff --git a/src/__tests__/Decorators.spec.ts b/src/__tests__/Decorators.spec.ts index df90bf3..07ff08e 100644 --- a/src/__tests__/Decorators.spec.ts +++ b/src/__tests__/Decorators.spec.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Inject } from 'src/decorators/Inject'; -import { DependencyResolutionError } from 'src/interfaces/Exceptions'; -import { ForceConstructor } from 'src/types/GenericContructor'; -import { ITSinjex_, ITSinjex } from '../interfaces/ITSinjex'; +import { Inject } from 'src/decorators/Inject.js'; +import { DependencyResolutionError } from 'src/interfaces/Exceptions.js'; +import { ForceConstructor } from 'src/types/GenericContructor.js'; +import { ITSinjex_, ITSinjex } from '../interfaces/ITSinjex.js'; /** * Test the Inject decorator. diff --git a/src/__tests__/Decorators.test.ts b/src/__tests__/Decorators.test.ts index 28d2d54..9a8054e 100644 --- a/src/__tests__/Decorators.test.ts +++ b/src/__tests__/Decorators.test.ts @@ -1,13 +1,13 @@ /* eslint-disable deprecation/deprecation */ -import { TSinjex } from 'src/classes/TSinjex'; -import { Inject } from 'src/decorators/Inject'; -import { Register } from 'src/decorators/Register'; -import { RegisterInstance } from 'src/decorators/RegisterInstance'; +import { TSinjex } from 'src/classes/TSinjex.js'; +import { Inject } from 'src/decorators/Inject.js'; +import { Register } from 'src/decorators/Register.js'; +import { RegisterInstance } from 'src/decorators/RegisterInstance.js'; import { test_InjectDecorator, test_RegisterDecorator, test_RegisterInstanceDecorator, -} from './Decorators.spec'; +} from './Decorators.spec.js'; test_InjectDecorator(TSinjex, Inject); diff --git a/src/__tests__/Functions.spec.ts b/src/__tests__/Functions.spec.ts index c48a790..d99a99a 100644 --- a/src/__tests__/Functions.spec.ts +++ b/src/__tests__/Functions.spec.ts @@ -1,6 +1,6 @@ /* istanbul ignore file */ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { ITSinjex, ITSinjex_ } from 'src/interfaces/ITSinjex'; +import { ITSinjex, ITSinjex_ } from 'src/interfaces/ITSinjex.js'; export function test_RegisterFunction( Container: ITSinjex_, diff --git a/src/__tests__/Functions.test.ts b/src/__tests__/Functions.test.ts index 1f89810..3fbe09d 100644 --- a/src/__tests__/Functions.test.ts +++ b/src/__tests__/Functions.test.ts @@ -1,7 +1,10 @@ -import { TSinjex } from 'src/classes/TSinjex'; -import { register } from 'src/functions/register'; -import { resolve } from 'src/functions/resolve'; -import { test_RegisterFunction, test_ResolveFunction } from './Functions.spec'; +import { TSinjex } from 'src/classes/TSinjex.js'; +import { register } from 'src/functions/register.js'; +import { resolve } from 'src/functions/resolve.js'; +import { + test_RegisterFunction, + test_ResolveFunction, +} from './Functions.spec.js'; test_RegisterFunction(TSinjex, register); test_ResolveFunction(TSinjex, resolve); diff --git a/src/__tests__/ITSinjex.spec.ts b/src/__tests__/ITSinjex.spec.ts index 3fd7b10..90af9c3 100644 --- a/src/__tests__/ITSinjex.spec.ts +++ b/src/__tests__/ITSinjex.spec.ts @@ -1,5 +1,5 @@ /* istanbul ignore file */ -import { ITSinjex_, ITSinjex } from '../interfaces/ITSinjex'; +import { ITSinjex_, ITSinjex } from '../interfaces/ITSinjex.js'; /** * Test the implementation of the `ITSinjex` interface. diff --git a/src/__tests__/TSinjex.test.ts b/src/__tests__/TSinjex.test.ts index 0763003..f64ab8e 100644 --- a/src/__tests__/TSinjex.test.ts +++ b/src/__tests__/TSinjex.test.ts @@ -1,4 +1,4 @@ -import { test_ITSinjex } from './ITSinjex.spec'; -import { TSinjex } from '../classes/TSinjex'; +import { test_ITSinjex } from './ITSinjex.spec.js'; +import { TSinjex } from '../classes/TSinjex.js'; test_ITSinjex(TSinjex); diff --git a/src/classes/TSinjex.ts b/src/classes/TSinjex.ts index 37da7f3..531a1a4 100644 --- a/src/classes/TSinjex.ts +++ b/src/classes/TSinjex.ts @@ -1,13 +1,13 @@ -import type { Inject } from '../decorators/Inject'; -import type { Register } from '../decorators/Register'; -import type { RegisterInstance } from '../decorators/RegisterInstance'; -import type { register } from '../functions/register'; -import type { resolve } from '../functions/resolve'; -import { ImplementsStatic } from '../helper/ImplementsStatic'; -import { DependencyResolutionError } from '../interfaces/Exceptions'; -import { IDependency } from '../interfaces/IDependency'; -import { ITSinjex, ITSinjex_ } from '../interfaces/ITSinjex'; -import { Identifier } from '../types/Identifier'; +import type { Inject } from '../decorators/Inject.js'; +import type { Register } from '../decorators/Register.js'; +import type { RegisterInstance } from '../decorators/RegisterInstance.js'; +import type { register } from '../functions/register.js'; +import type { resolve } from '../functions/resolve.js'; +import { ImplementsStatic } from '../helper/ImplementsStatic.js'; +import { DependencyResolutionError } from '../interfaces/Exceptions.js'; +import { IDependency } from '../interfaces/IDependency.js'; +import { ITSinjex, ITSinjex_ } from '../interfaces/ITSinjex.js'; +import { Identifier } from '../types/Identifier.js'; /** * # TSinjex diff --git a/src/decorators/Inject.ts b/src/decorators/Inject.ts index 1dd5652..1401bbd 100644 --- a/src/decorators/Inject.ts +++ b/src/decorators/Inject.ts @@ -1,12 +1,12 @@ +import { TSinjex } from '../classes/TSinjex.js'; import { DependencyResolutionError, InitializationError, InjectorError, NoInstantiationMethodError, -} from 'src/interfaces/Exceptions'; -import { TSinjex } from '../classes/TSinjex'; -import { Identifier } from '../types/Identifier'; -import { InitDelegate } from '../types/InitDelegate'; +} from '../interfaces/Exceptions.js'; +import { Identifier } from '../types/Identifier.js'; +import { InitDelegate } from '../types/InitDelegate.js'; /** * A decorator to inject a dependency from a DI (Dependency Injection) container into a class property. diff --git a/src/decorators/Register.ts b/src/decorators/Register.ts index 69ea5f3..9b675fe 100644 --- a/src/decorators/Register.ts +++ b/src/decorators/Register.ts @@ -1,6 +1,6 @@ -import { InitDelegate } from 'src/types/InitDelegate'; -import { TSinjex } from '../classes/TSinjex'; -import { Identifier } from '../types/Identifier'; +import { InitDelegate } from 'src/types/InitDelegate.js'; +import { TSinjex } from '../classes/TSinjex.js'; +import { Identifier } from '../types/Identifier.js'; //#region Overloads diff --git a/src/decorators/RegisterInstance.ts b/src/decorators/RegisterInstance.ts index 2fa4545..7107fdd 100644 --- a/src/decorators/RegisterInstance.ts +++ b/src/decorators/RegisterInstance.ts @@ -1,6 +1,6 @@ -import { Register } from './Register'; -import { Identifier } from '../types/Identifier'; -import { InitDelegate } from '../types/InitDelegate'; +import { Register } from './Register.js'; +import { Identifier } from '../types/Identifier.js'; +import { InitDelegate } from '../types/InitDelegate.js'; /** * A decorator to register an instance of a class in the DI (Dependency Injection) container. diff --git a/src/functions/register.ts b/src/functions/register.ts index 4e0bb96..e2da74f 100644 --- a/src/functions/register.ts +++ b/src/functions/register.ts @@ -1,5 +1,5 @@ -import { TSinjex } from '../classes/TSinjex'; -import { Identifier } from '../types/Identifier'; +import { TSinjex } from '../classes/TSinjex.js'; +import { Identifier } from '../types/Identifier.js'; /** * Register a dependency. diff --git a/src/functions/resolve.ts b/src/functions/resolve.ts index 2be0f1c..7ded0bf 100644 --- a/src/functions/resolve.ts +++ b/src/functions/resolve.ts @@ -1,6 +1,6 @@ -import { TSinjex } from '../classes/TSinjex'; -import { DependencyResolutionError } from '../interfaces/Exceptions'; -import { Identifier } from '../types/Identifier'; +import { TSinjex } from '../classes/TSinjex.js'; +import { DependencyResolutionError } from '../interfaces/Exceptions.js'; +import { Identifier } from '../types/Identifier.js'; /** * Resolve a dependency. diff --git a/src/index.ts b/src/index.ts index a5d7054..4d4ad55 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,21 +1,21 @@ /* istanbul ignore file */ // Main -export * from './classes/TSinjex'; +export * from './classes/TSinjex.js'; // Decorators -export * from './decorators/Inject'; -export * from './decorators/Register'; -export * from './decorators/RegisterInstance'; +export * from './decorators/Inject.js'; +export * from './decorators/Register.js'; +export * from './decorators/RegisterInstance.js'; // Helper -export * from './helper/ImplementsStatic'; +export * from './helper/ImplementsStatic.js'; // Functions -export * from './functions/resolve'; -export * from './functions/register'; +export * from './functions/resolve.js'; +export * from './functions/register.js'; // Interfaces & Types -export type * from './interfaces/ITSinjex'; -export type * from './types/InitDelegate'; -export type * from './types/GenericContructor'; +export type * from './interfaces/ITSinjex.js'; +export type * from './types/InitDelegate.js'; +export type * from './types/GenericContructor.js'; diff --git a/src/interfaces/Exceptions.ts b/src/interfaces/Exceptions.ts index af4c4c8..dc8df22 100644 --- a/src/interfaces/Exceptions.ts +++ b/src/interfaces/Exceptions.ts @@ -1,5 +1,5 @@ -import { Identifier } from 'src/types/Identifier'; -import { ITSinjex } from './ITSinjex'; +import { Identifier } from 'src/types/Identifier.js'; +import { ITSinjex } from './ITSinjex.js'; /** * General error class for {@link ITSinjex} interface. diff --git a/src/interfaces/ITSinjex.ts b/src/interfaces/ITSinjex.ts index b57dc5d..2078c5c 100644 --- a/src/interfaces/ITSinjex.ts +++ b/src/interfaces/ITSinjex.ts @@ -1,5 +1,5 @@ -import { DependencyResolutionError } from './Exceptions'; -import { Identifier } from '../types/Identifier'; +import { DependencyResolutionError } from './Exceptions.js'; +import { Identifier } from '../types/Identifier.js'; /** * Static TSInjex Interface diff --git a/tsconfig.json b/tsconfig.json index 782ed0e..d5f2a06 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,13 +7,13 @@ "declaration": true, "declarationMap": true, "outDir": "./dist", - "module": "ESNext", - "target": "ES6", + "module": "NodeNext", + "target": "ES2020", "allowJs": true, "noUnusedLocals": false, "noUnusedParameters": false, "noImplicitAny": true, - "moduleResolution": "node", + "moduleResolution": "NodeNext", "allowSyntheticDefaultImports": true, "importHelpers": true, "isolatedModules": true,