Skip to content

Commit 8313ae8

Browse files
authored
chore: auto update reflect metadata module (#1648)
updated entrypoint to auto import reflect metadata updated docs updated tsconfig with modern NodeJS module resolution removed unused ancient builds simplified CI
1 parent c68e60d commit 8313ae8

38 files changed

+54
-142
lines changed

.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
matrix:
1515
node-version: [20.x, 22.x]
1616
os: [ubuntu-latest, windows-latest]
17-
ts-project: [src/tsconfig.json, src/tsconfig-es6.json]
17+
ts-project: [src/tsconfig.json]
1818
exclude:
1919
- node-version: 22.x
2020
os: ubuntu-latest

.gitignore

-21
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,18 @@ pids
77
*.pid
88
*.seed
99

10-
# Directory for instrumented libs generated by jscoverage/JSCover
11-
lib-cov
12-
1310
# Coverage directory used by tools like istanbul
1411
coverage
1512

16-
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
17-
.grunt
18-
19-
# node-waf configuration
20-
.lock-wscript
21-
22-
# Compiled binary addons (http://nodejs.org/api/addons.html)
23-
build/Release
24-
build
25-
2613
# Dependency directory
2714
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
28-
build
2915
node_modules
30-
bower_components
31-
docs
32-
bundled
3316

34-
typings
35-
.typingsrc
3617
dist
3718
dts
3819
lib
3920
temp
4021
es
41-
es6
42-
amd
4322

4423
type_definitions/inversify/*.js
4524

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99
### Added
1010

1111
### Changed
12+
- Updated library to import `reflect-metadata`. Importing `reflect-metadata` before bootstraping a module in the userland is no longer required.
1213

1314
### Fixed
1415
- Fixed container to properly resolve async `.toService` bindings.

README.md

+6-15
Original file line numberDiff line numberDiff line change
@@ -63,24 +63,18 @@ You can get the latest release and the type definitions using your preferred pac
6363
> pnpm add inversify reflect-metadata
6464
```
6565

66-
> **Hint!** If you want to use a more type-safe version of reflect-metadata, try [`@abraham/reflection`](https://www.npmjs.com/package/@abraham/reflection)
66+
`reflect-metadata` will be automatically imported by inversify.
6767

6868
The InversifyJS type definitions are included in the inversify npm package.
6969

70-
> :warning: **Important!** InversifyJS requires TypeScript >= 4.4 and the `experimentalDecorators`, `emitDecoratorMetadata`, `types` and `lib`
71-
compilation options in your `tsconfig.json` file.
70+
> :warning: **Important!** InversifyJS requires TypeScript >= 4.4 and the `experimentalDecorators`, `emitDecoratorMetadata`, compilation options in your `tsconfig.json` file.
7271
7372
```json
7473
{
75-
"compilerOptions": {
76-
"target": "es5",
77-
"lib": ["es6"],
78-
"types": ["reflect-metadata"],
79-
"module": "commonjs",
80-
"moduleResolution": "node",
81-
"experimentalDecorators": true,
82-
"emitDecoratorMetadata": true
83-
}
74+
"compilerOptions": {
75+
"experimentalDecorators": true,
76+
"emitDecoratorMetadata": true
77+
}
8478
}
8579
```
8680

@@ -93,8 +87,6 @@ InversifyJS requires a modern JavaScript engine with support for:
9387

9488
If your environment doesn't support one of these you will need to import a shim or polyfill.
9589

96-
> :warning: **The `reflect-metadata` polyfill should be imported only once in your entire application** because the Reflect object is meant to be a global singleton. More details about this can be found [here](https://github.com/inversify/InversifyJS/issues/262#issuecomment-227593844).
97-
9890
Check out the [Environment support and polyfills](https://github.com/inversify/InversifyJS/blob/master/wiki/environment.md)
9991
page in the wiki and the [Basic example](https://github.com/inversify/inversify-basic-example) to learn more.
10092

@@ -152,7 +144,6 @@ When a class has a dependency on an interface we also need to use the `@inject`
152144
// file entities.ts
153145

154146
import { injectable, inject } from "inversify";
155-
import "reflect-metadata";
156147
import { Weapon, ThrowableWeapon, Warrior } from "./interfaces";
157148
import { TYPES } from "./types";
158149

package-lock.json

+5-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"nyc": "17.1.0",
2525
"prettier": "3.3.3",
2626
"publish-please": "5.5.2",
27-
"reflect-metadata": "0.2.2",
2827
"rimraf": "6.0.1",
2928
"sinon": "19.0.2",
3029
"ts-loader": "9.5.1",
@@ -35,6 +34,9 @@
3534
"webpack": "5.96.1",
3635
"webpack-cli": "5.1.4"
3736
},
37+
"peerDependencies": {
38+
"reflect-metadata": "~0.2.2"
39+
},
3840
"engines": {},
3941
"homepage": "http://inversify.io",
4042
"jsnext:main": "es/inversify.js",
@@ -63,12 +65,10 @@
6365
"url": "https://github.com/inversify/InversifyJS.git"
6466
},
6567
"scripts": {
66-
"build": "npm run build:lib && npm run build:amd && npm run build:es && npm run build:es6",
67-
"build:amd": "tsc -p src/tsconfig-amd.json",
68+
"build": "npm run build:lib && npm run build:es",
6869
"build:es": "webpack && node ./scripts/writeEsmPackageJson.mjs ./es",
69-
"build:es6": "tsc -p src/tsconfig-es6.json",
7070
"build:lib": "tsc -p src/tsconfig.json",
71-
"clean": "rimraf amd es es6 lib",
71+
"clean": "rimraf es lib",
7272
"format": "prettier --write ./src/*.ts ./src/**/*.ts ./test/*.ts ./test/**/*.ts",
7373
"lint": "eslint ./src ./test",
7474
"postupdate": "git diff-files --quiet package-lock.json || npm test",

src/inversify.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import 'reflect-metadata';
2+
13
import * as keys from './constants/metadata_keys';
24

35
export { LazyServiceIdentifier } from '@inversifyjs/common';

src/tsconfig-amd.json

-10
This file was deleted.

src/tsconfig-es6.json

-10
This file was deleted.

test/annotation/inject.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { inject } from '../../src/annotation/inject';
1919
import { multiInject } from '../../src/annotation/multi_inject';
2020
import * as ERROR_MSGS from '../../src/constants/error_msgs';
2121
import * as METADATA_KEY from '../../src/constants/metadata_keys';
22-
import { interfaces } from '../../src/interfaces/interfaces';
22+
import type { interfaces } from '../../src/interfaces/interfaces';
2323

2424
class Katana {}
2525
class Shuriken {}

test/annotation/multi_inject.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { decorate } from '../../src/annotation/decorator_utils';
1717
import { multiInject } from '../../src/annotation/multi_inject';
1818
import * as ERROR_MSGS from '../../src/constants/error_msgs';
1919
import * as METADATA_KEY from '../../src/constants/metadata_keys';
20-
import { interfaces } from '../../src/interfaces/interfaces';
20+
import type { interfaces } from '../../src/interfaces/interfaces';
2121

2222
type Weapon = object;
2323

test/annotation/named.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { decorate } from '../../src/annotation/decorator_utils';
1717
import { named } from '../../src/annotation/named';
1818
import * as ERROR_MSGS from '../../src/constants/error_msgs';
1919
import * as METADATA_KEY from '../../src/constants/metadata_keys';
20-
import { interfaces } from '../../src/interfaces/interfaces';
20+
import type { interfaces } from '../../src/interfaces/interfaces';
2121

2222
type Weapon = unknown;
2323

test/annotation/tagged.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { decorate } from '../../src/annotation/decorator_utils';
1717
import { tagged } from '../../src/annotation/tagged';
1818
import * as ERRORS_MSGS from '../../src/constants/error_msgs';
1919
import * as METADATA_KEY from '../../src/constants/metadata_keys';
20-
import { interfaces } from '../../src/interfaces/interfaces';
20+
import type { interfaces } from '../../src/interfaces/interfaces';
2121

2222
type Weapon = unknown;
2323

test/annotation/target_name.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { decorate } from '../../src/annotation/decorator_utils';
44
import { injectable } from '../../src/annotation/injectable';
55
import { targetName } from '../../src/annotation/target_name';
66
import * as METADATA_KEY from '../../src/constants/metadata_keys';
7-
import { interfaces } from '../../src/inversify';
7+
import type { interfaces } from '../../src/inversify';
88
import { Metadata } from '../../src/planning/metadata';
99
import * as Stubs from '../utils/stubs';
1010

test/container/container.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { BindingScopeEnum } from '../../src/constants/literal_types';
99
import { Container } from '../../src/container/container';
1010
import { ContainerModule } from '../../src/container/container_module';
1111
import { ModuleActivationStore } from '../../src/container/module_activation_store';
12-
import { interfaces } from '../../src/interfaces/interfaces';
12+
import type { interfaces } from '../../src/interfaces/interfaces';
1313
import { getBindingDictionary } from '../../src/planning/planner';
1414
import { getServiceIdentifierAsString } from '../../src/utils/serialization';
1515

test/container/container_module.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
AsyncContainerModule,
88
ContainerModule,
99
} from '../../src/container/container_module';
10-
import { interfaces } from '../../src/interfaces/interfaces';
10+
import type { interfaces } from '../../src/interfaces/interfaces';
1111

1212
describe('ContainerModule', () => {
1313
it('Should be able to set the registry of a container module', () => {

test/container/lookup.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Binding } from '../../src/bindings/binding';
44
import * as ERROR_MSGS from '../../src/constants/error_msgs';
55
import { BindingScopeEnum } from '../../src/constants/literal_types';
66
import { Lookup } from '../../src/container/lookup';
7-
import { interfaces } from '../../src/interfaces/interfaces';
7+
import type { interfaces } from '../../src/interfaces/interfaces';
88

99
class ClonableValue<T> implements interfaces.Clonable<ClonableValue<T>> {
1010
public readonly val: T;

test/container/module_activation_store.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { expect } from 'chai';
22

33
import { ModuleActivationStore } from '../../src/container/module_activation_store';
4-
import { interfaces } from '../../src/inversify';
4+
import type { interfaces } from '../../src/inversify';
55

66
describe('ModuleActivationStore', () => {
77
it('should remove handlers added by the module', () => {

test/features/metadata_reader.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { expect } from 'chai';
22

33
import * as METADATA_KEY from '../../src/constants/metadata_keys';
4-
import { interfaces } from '../../src/interfaces/interfaces';
4+
import type { interfaces } from '../../src/interfaces/interfaces';
55
import {
66
Container,
77
inject,

test/inversify.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { expect } from 'chai';
33

44
import { DecoratorTarget } from '../src/annotation/decorator_utils';
55
import * as ERROR_MSGS from '../src/constants/error_msgs';
6-
import { interfaces } from '../src/interfaces/interfaces';
6+
import type { interfaces } from '../src/interfaces/interfaces';
77
import {
88
Container,
99
ContainerModule,

test/middleware/middleware.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as sinon from 'sinon';
44
import { injectable } from '../../src/annotation/injectable';
55
import * as ERROR_MSGS from '../../src/constants/error_msgs';
66
import { Container } from '../../src/container/container';
7-
import { interfaces } from '../../src/interfaces/interfaces';
7+
import type { interfaces } from '../../src/interfaces/interfaces';
88

99
describe('Middleware', () => {
1010
let sandbox: sinon.SinonSandbox;

test/node/proxies.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'chai';
22

3-
import { interfaces } from '../../src/interfaces/interfaces';
3+
import type { interfaces } from '../../src/interfaces/interfaces';
44
import { Container, inject, injectable } from '../../src/inversify';
55

66
describe('InversifyJS', () => {

test/planning/planner.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { targetName } from '../../src/annotation/target_name';
99
import * as ERROR_MSGS from '../../src/constants/error_msgs';
1010
import { TargetTypeEnum } from '../../src/constants/literal_types';
1111
import { Container } from '../../src/container/container';
12-
import { interfaces } from '../../src/interfaces/interfaces';
12+
import type { interfaces } from '../../src/interfaces/interfaces';
1313
import { named } from '../../src/inversify';
1414
import { MetadataReader } from '../../src/planning/metadata_reader';
1515
import { Plan } from '../../src/planning/plan';

test/planning/request.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { expect } from 'chai';
66

77
import { TargetTypeEnum } from '../../src/constants/literal_types';
88
import { Container } from '../../src/container/container';
9-
import { interfaces } from '../../src/interfaces/interfaces';
9+
import type { interfaces } from '../../src/interfaces/interfaces';
1010
import { Context } from '../../src/planning/context';
1111
import { Request } from '../../src/planning/request';
1212

test/resolution/resolver.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
TargetTypeEnum,
1616
} from '../../src/constants/literal_types';
1717
import { Container } from '../../src/container/container';
18-
import { interfaces } from '../../src/interfaces/interfaces';
18+
import type { interfaces } from '../../src/interfaces/interfaces';
1919
import { MetadataReader } from '../../src/planning/metadata_reader';
2020
import { getBindingDictionary, plan } from '../../src/planning/planner';
2121
import { resolveInstance } from '../../src/resolution/instantiation';

test/syntax/binding_in_when_on_syntax.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as sinon from 'sinon';
44
import { injectable } from '../../src/annotation/injectable';
55
import { Binding } from '../../src/bindings/binding';
66
import { BindingScopeEnum } from '../../src/constants/literal_types';
7-
import { interfaces } from '../../src/interfaces/interfaces';
7+
import type { interfaces } from '../../src/interfaces/interfaces';
88
import { BindingInWhenOnSyntax } from '../../src/syntax/binding_in_when_on_syntax';
99

1010
describe('BindingInWhenOnSyntax', () => {

test/syntax/binding_on_syntax.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect } from 'chai';
22

33
import { Binding } from '../../src/bindings/binding';
44
import { BindingScopeEnum } from '../../src/constants/literal_types';
5-
import { interfaces } from '../../src/interfaces/interfaces';
5+
import type { interfaces } from '../../src/interfaces/interfaces';
66
import { BindingOnSyntax } from '../../src/syntax/binding_on_syntax';
77

88
describe('BindingOnSyntax', () => {

test/syntax/binding_to_syntax.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
BindingScopeEnum,
1010
BindingTypeEnum,
1111
} from '../../src/constants/literal_types';
12-
import { interfaces } from '../../src/interfaces/interfaces';
12+
import type { interfaces } from '../../src/interfaces/interfaces';
1313
import { BindingToSyntax } from '../../src/syntax/binding_to_syntax';
1414

1515
describe('BindingToSyntax', () => {

test/syntax/binding_when_on_syntax.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Sinon, * as sinon from 'sinon';
44
import { injectable } from '../../src/annotation/injectable';
55
import { Binding } from '../../src/bindings/binding';
66
import { BindingScopeEnum } from '../../src/constants/literal_types';
7-
import { interfaces } from '../../src/interfaces/interfaces';
7+
import type { interfaces } from '../../src/interfaces/interfaces';
88
import { BindingWhenOnSyntax } from '../../src/syntax/binding_when_on_syntax';
99

1010
describe('BindingWhenOnSyntax', () => {

test/syntax/binding_when_syntax.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
TargetTypeEnum,
1111
} from '../../src/constants/literal_types';
1212
import { Container } from '../../src/container/container';
13-
import { interfaces } from '../../src/interfaces/interfaces';
13+
import type { interfaces } from '../../src/interfaces/interfaces';
1414
import { Context } from '../../src/planning/context';
1515
import { Request } from '../../src/planning/request';
1616
import { BindingWhenSyntax } from '../../src/syntax/binding_when_syntax';

0 commit comments

Comments
 (0)