inversify 7.11.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/lib/{cjs/index.d.ts → index.d.ts} +1 -1
  2. package/lib/index.d.ts.map +1 -0
  3. package/lib/index.js +4 -0
  4. package/lib/index.js.map +1 -0
  5. package/lib/test/bugs/issue_1190.test.d.ts.map +1 -0
  6. package/lib/test/bugs/issue_1190.test.js +60 -0
  7. package/lib/test/bugs/issue_1190.test.js.map +1 -0
  8. package/lib/test/bugs/issue_1416.test.d.ts.map +1 -0
  9. package/lib/test/bugs/issue_1416.test.js +50 -0
  10. package/lib/test/bugs/issue_1416.test.js.map +1 -0
  11. package/lib/test/bugs/issue_1515.test.d.ts.map +1 -0
  12. package/lib/test/bugs/issue_1515.test.js +69 -0
  13. package/lib/test/bugs/issue_1515.test.js.map +1 -0
  14. package/lib/test/bugs/issue_1518.test.d.ts.map +1 -0
  15. package/lib/test/bugs/issue_1518.test.js +13 -0
  16. package/lib/test/bugs/issue_1518.test.js.map +1 -0
  17. package/lib/test/bugs/issue_706.test.d.ts.map +1 -0
  18. package/lib/test/bugs/issue_706.test.js +29 -0
  19. package/lib/test/bugs/issue_706.test.js.map +1 -0
  20. package/lib/test/bugs/issue_928.test.d.ts.map +1 -0
  21. package/lib/test/bugs/issue_928.test.js +66 -0
  22. package/lib/test/bugs/issue_928.test.js.map +1 -0
  23. package/package.json +14 -21
  24. package/CHANGELOG.md +0 -626
  25. package/lib/cjs/index.d.ts.map +0 -1
  26. package/lib/cjs/index.js +0 -24
  27. package/lib/cjs/index.js.map +0 -1
  28. package/lib/cjs/package.json +0 -3
  29. package/lib/cjs/test/annotation/inject.int.spec.d.ts.map +0 -1
  30. package/lib/cjs/test/annotation/injectable.int.spec.d.ts.map +0 -1
  31. package/lib/cjs/test/annotation/multi_inject.int.spec.d.ts.map +0 -1
  32. package/lib/cjs/test/annotation/named.int.spec.d.ts.map +0 -1
  33. package/lib/cjs/test/annotation/optional.int.spec.d.ts.map +0 -1
  34. package/lib/cjs/test/annotation/post_construct.int.spec.d.ts.map +0 -1
  35. package/lib/cjs/test/bugs/bugs.int.spec.d.ts.map +0 -1
  36. package/lib/cjs/test/bugs/issue_1190.test.d.ts.map +0 -1
  37. package/lib/cjs/test/bugs/issue_1190.test.js +0 -62
  38. package/lib/cjs/test/bugs/issue_1190.test.js.map +0 -1
  39. package/lib/cjs/test/bugs/issue_1297.test.d.ts +0 -2
  40. package/lib/cjs/test/bugs/issue_1297.test.d.ts.map +0 -1
  41. package/lib/cjs/test/bugs/issue_1297.test.js +0 -66
  42. package/lib/cjs/test/bugs/issue_1297.test.js.map +0 -1
  43. package/lib/cjs/test/bugs/issue_1416.test.d.ts.map +0 -1
  44. package/lib/cjs/test/bugs/issue_1416.test.js +0 -52
  45. package/lib/cjs/test/bugs/issue_1416.test.js.map +0 -1
  46. package/lib/cjs/test/bugs/issue_1515.test.d.ts.map +0 -1
  47. package/lib/cjs/test/bugs/issue_1515.test.js +0 -71
  48. package/lib/cjs/test/bugs/issue_1515.test.js.map +0 -1
  49. package/lib/cjs/test/bugs/issue_1518.test.d.ts.map +0 -1
  50. package/lib/cjs/test/bugs/issue_1518.test.js +0 -15
  51. package/lib/cjs/test/bugs/issue_1518.test.js.map +0 -1
  52. package/lib/cjs/test/bugs/issue_1564.int.spec.d.ts.map +0 -1
  53. package/lib/cjs/test/bugs/issue_543.int.spec.d.ts.map +0 -1
  54. package/lib/cjs/test/bugs/issue_549.int.spec.d.ts.map +0 -1
  55. package/lib/cjs/test/bugs/issue_706.test.d.ts.map +0 -1
  56. package/lib/cjs/test/bugs/issue_706.test.js +0 -31
  57. package/lib/cjs/test/bugs/issue_706.test.js.map +0 -1
  58. package/lib/cjs/test/bugs/issue_928.test.d.ts.map +0 -1
  59. package/lib/cjs/test/bugs/issue_928.test.js +0 -68
  60. package/lib/cjs/test/bugs/issue_928.test.js.map +0 -1
  61. package/lib/cjs/test/container/container.int.spec.d.ts.map +0 -1
  62. package/lib/cjs/test/container/container_module.int.spec.d.ts.map +0 -1
  63. package/lib/cjs/test/features/named_default.int.spec.d.ts.map +0 -1
  64. package/lib/cjs/test/features/property_injection.int.spec.d.ts.map +0 -1
  65. package/lib/cjs/test/features/provider.int.spec.d.ts +0 -2
  66. package/lib/cjs/test/features/provider.int.spec.d.ts.map +0 -1
  67. package/lib/cjs/test/features/request_scope.int.spec.d.ts.map +0 -1
  68. package/lib/cjs/test/features/transitive_bindings.int.spec.d.ts.map +0 -1
  69. package/lib/cjs/test/inversify.int.spec.d.ts.map +0 -1
  70. package/lib/cjs/test/node/error_messages.int.spec.d.ts.map +0 -1
  71. package/lib/cjs/test/node/exceptions.int.spec.d.ts.map +0 -1
  72. package/lib/cjs/test/node/proxies.int.spec.d.ts.map +0 -1
  73. package/lib/esm/index.d.ts +0 -3
  74. package/lib/esm/index.d.ts.map +0 -1
  75. package/lib/esm/index.js +0 -2
  76. package/lib/esm/index.js.map +0 -1
  77. package/lib/esm/package.json +0 -3
  78. /package/lib/{cjs/test → test}/annotation/inject.int.spec.d.ts +0 -0
  79. /package/lib/{cjs/test → test}/annotation/injectable.int.spec.d.ts +0 -0
  80. /package/lib/{cjs/test → test}/annotation/multi_inject.int.spec.d.ts +0 -0
  81. /package/lib/{cjs/test → test}/annotation/named.int.spec.d.ts +0 -0
  82. /package/lib/{cjs/test → test}/annotation/optional.int.spec.d.ts +0 -0
  83. /package/lib/{cjs/test → test}/annotation/post_construct.int.spec.d.ts +0 -0
  84. /package/lib/{cjs/test → test}/bugs/bugs.int.spec.d.ts +0 -0
  85. /package/lib/{cjs/test → test}/bugs/issue_1190.test.d.ts +0 -0
  86. /package/lib/{cjs/test → test}/bugs/issue_1416.test.d.ts +0 -0
  87. /package/lib/{cjs/test → test}/bugs/issue_1515.test.d.ts +0 -0
  88. /package/lib/{cjs/test → test}/bugs/issue_1518.test.d.ts +0 -0
  89. /package/lib/{cjs/test → test}/bugs/issue_1564.int.spec.d.ts +0 -0
  90. /package/lib/{cjs/test → test}/bugs/issue_543.int.spec.d.ts +0 -0
  91. /package/lib/{cjs/test → test}/bugs/issue_549.int.spec.d.ts +0 -0
  92. /package/lib/{cjs/test → test}/bugs/issue_706.test.d.ts +0 -0
  93. /package/lib/{cjs/test → test}/bugs/issue_928.test.d.ts +0 -0
  94. /package/lib/{cjs/test → test}/container/container.int.spec.d.ts +0 -0
  95. /package/lib/{cjs/test → test}/container/container_module.int.spec.d.ts +0 -0
  96. /package/lib/{cjs/test → test}/features/named_default.int.spec.d.ts +0 -0
  97. /package/lib/{cjs/test → test}/features/property_injection.int.spec.d.ts +0 -0
  98. /package/lib/{cjs/test → test}/features/request_scope.int.spec.d.ts +0 -0
  99. /package/lib/{cjs/test → test}/features/transitive_bindings.int.spec.d.ts +0 -0
  100. /package/lib/{cjs/test → test}/inversify.int.spec.d.ts +0 -0
  101. /package/lib/{cjs/test → test}/node/error_messages.int.spec.d.ts +0 -0
  102. /package/lib/{cjs/test → test}/node/exceptions.int.spec.d.ts +0 -0
  103. /package/lib/{cjs/test → test}/node/proxies.int.spec.d.ts +0 -0
@@ -1,4 +1,4 @@
1
1
  export { Newable, LazyServiceIdentifier, ServiceIdentifier, } from '@inversifyjs/common';
2
2
  export { Bind, BindInFluentSyntax, BindingIdentifier, BindInWhenOnFluentSyntax, BindOnFluentSyntax, BindToFluentSyntax, BindWhenFluentSyntax, BindWhenOnFluentSyntax, BoundServiceSyntax, Container, ContainerModule, ContainerModuleLoadOptions, ContainerOptions, IsBound, IsBoundOptions, MapToResolvedValueInjectOptions, OnActivation, OnDeactivation, Rebind, RebindSync, ResolvedValueInjectOptions, ResolvedValueMetadataInjectOptions, ResolvedValueMetadataInjectTagOptions, Unbind, UnbindSync, } from '@inversifyjs/container';
3
- export { BindingActivation, BindingConstraints, BindingDeactivation, BindingScope, DynamicValueBuilder, Factory, GetAllOptions, GetOptions, GetOptionsTagConstraint, InjectFromBaseOptions, InjectFromBaseOptionsLifecycle, InjectFromHierarchyOptions, InjectFromHierarchyOptionsLifecycle, MetadataName, MetadataTag, MultiInjectOptions, OptionalGetOptions, Provider, ResolutionContext, bindingScopeValues, bindingTypeValues, decorate, inject, injectFromBase, injectFromHierarchy, injectable, multiInject, named, optional, unmanaged, tagged, postConstruct, preDestroy, } from '@inversifyjs/core';
3
+ export { BindingActivation, BindingConstraints, BindingDeactivation, BindingScope, DynamicValueBuilder, Factory, GetAllOptions, GetOptions, GetOptionsTagConstraint, InjectFromBaseOptions, InjectFromBaseOptionsLifecycle, InjectFromHierarchyOptions, InjectFromHierarchyOptionsLifecycle, MetadataName, MetadataTag, MultiInjectOptions, OptionalGetOptions, ResolutionContext, bindingScopeValues, bindingTypeValues, decorate, inject, injectFromBase, injectFromHierarchy, injectable, multiInject, named, optional, unmanaged, tagged, postConstruct, preDestroy, } from '@inversifyjs/core';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,IAAI,EACJ,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,0BAA0B,EAC1B,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,+BAA+B,EAC/B,YAAY,EACZ,cAAc,EACd,MAAM,EACN,UAAU,EACV,0BAA0B,EAC1B,kCAAkC,EAClC,qCAAqC,EACrC,MAAM,EACN,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,EAC1B,mCAAmC,EACnC,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { LazyServiceIdentifier, } from '@inversifyjs/common';
2
+ export { Container, ContainerModule, } from '@inversifyjs/container';
3
+ export { bindingScopeValues, bindingTypeValues, decorate, inject, injectFromBase, injectFromHierarchy, injectable, multiInject, named, optional, unmanaged, tagged, postConstruct, preDestroy, } from '@inversifyjs/core';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAUL,SAAS,EACT,eAAe,GAehB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAmBL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1190.test.d.ts","sourceRoot":"","sources":["../../../src/test/bugs/issue_1190.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { describe, expect, it } from 'vitest';
3
+ import { Container, inject, injectable, named, optional } from '../../index.js';
4
+ describe('Issue 1190', () => {
5
+ it('should inject a katana as default weapon to ninja', () => {
6
+ // eslint-disable-next-line @typescript-eslint/typedef
7
+ const TYPES = {
8
+ Weapon: 'Weapon',
9
+ };
10
+ // eslint-disable-next-line @typescript-eslint/typedef
11
+ const TAG = {
12
+ throwable: 'throwable',
13
+ };
14
+ let Katana = class Katana {
15
+ name;
16
+ constructor() {
17
+ this.name = 'Katana';
18
+ }
19
+ };
20
+ Katana = __decorate([
21
+ injectable(),
22
+ __metadata("design:paramtypes", [])
23
+ ], Katana);
24
+ let Shuriken = class Shuriken {
25
+ name;
26
+ constructor() {
27
+ this.name = 'Shuriken';
28
+ }
29
+ };
30
+ Shuriken = __decorate([
31
+ injectable(),
32
+ __metadata("design:paramtypes", [])
33
+ ], Shuriken);
34
+ let Ninja = class Ninja {
35
+ name;
36
+ katana;
37
+ shuriken;
38
+ constructor(katana, shuriken) {
39
+ this.name = 'Ninja';
40
+ this.katana = katana;
41
+ this.shuriken = shuriken;
42
+ }
43
+ };
44
+ Ninja = __decorate([
45
+ injectable(),
46
+ __param(0, inject(TYPES.Weapon)),
47
+ __param(0, optional()),
48
+ __param(1, inject(TYPES.Weapon)),
49
+ __param(1, named(TAG.throwable)),
50
+ __metadata("design:paramtypes", [Object, Object])
51
+ ], Ninja);
52
+ const container = new Container();
53
+ container.bind(TYPES.Weapon).to(Katana).whenDefault();
54
+ container.bind(TYPES.Weapon).to(Shuriken).whenNamed(TAG.throwable);
55
+ container.bind('Ninja').to(Ninja);
56
+ const ninja = container.get('Ninja');
57
+ expect(ninja.katana).toStrictEqual(new Katana());
58
+ });
59
+ });
60
+ //# sourceMappingURL=issue_1190.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1190.test.js","sourceRoot":"","sources":["../../../src/test/bugs/issue_1190.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEhF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,sDAAsD;QACtD,MAAM,KAAK,GAAG;YACZ,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,sDAAsD;QACtD,MAAM,GAAG,GAAG;YACV,SAAS,EAAE,WAAW;SACvB,CAAC;QAMF,IACM,MAAM,GADZ,MACM,MAAM;YACH,IAAI,CAAS;YACpB;gBACE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,CAAC;SACF,CAAA;QALK,MAAM;YADX,UAAU,EAAE;;WACP,MAAM,CAKX;QAED,IACM,QAAQ,GADd,MACM,QAAQ;YACL,IAAI,CAAS;YACpB;gBACE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,CAAC;SACF,CAAA;QALK,QAAQ;YADb,UAAU,EAAE;;WACP,QAAQ,CAKb;QAED,IACM,KAAK,GADX,MACM,KAAK;YACF,IAAI,CAAS;YACb,MAAM,CAAS;YACf,QAAQ,CAAW;YAC1B,YACoC,MAAc,EACJ,QAAgB;gBAE5D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3B,CAAC;SACF,CAAA;QAZK,KAAK;YADV,UAAU,EAAE;YAMR,WAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAAE,WAAA,QAAQ,EAAE,CAAA;YAChC,WAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAAE,WAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;;WANzC,KAAK,CAYV;QAED,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAE7C,SAAS,CAAC,IAAI,CAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE3E,SAAS,CAAC,IAAI,CAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAU,SAAS,CAAC,GAAG,CAAQ,OAAO,CAAC,CAAC;QAEnD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1416.test.d.ts","sourceRoot":"","sources":["../../../src/test/bugs/issue_1416.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { describe, expect, it, vitest } from 'vitest';
3
+ import { bindingScopeValues, Container, injectable, preDestroy, } from '../../index.js';
4
+ describe('Issue 1416', () => {
5
+ it('should allow providing default values on optional bindings', async () => {
6
+ let Test1 = class Test1 {
7
+ onDestroyMock = vitest.fn();
8
+ destroy() {
9
+ this.onDestroyMock();
10
+ }
11
+ };
12
+ __decorate([
13
+ preDestroy(),
14
+ __metadata("design:type", Function),
15
+ __metadata("design:paramtypes", []),
16
+ __metadata("design:returntype", void 0)
17
+ ], Test1.prototype, "destroy", null);
18
+ Test1 = __decorate([
19
+ injectable()
20
+ ], Test1);
21
+ let Test2 = class Test2 {
22
+ destroy() { }
23
+ };
24
+ Test2 = __decorate([
25
+ injectable()
26
+ ], Test2);
27
+ let Test3 = class Test3 {
28
+ destroy() { }
29
+ };
30
+ Test3 = __decorate([
31
+ injectable()
32
+ ], Test3);
33
+ const container = new Container({
34
+ defaultScope: bindingScopeValues.Singleton,
35
+ });
36
+ container.bind(Test1).toSelf();
37
+ container.bind(Test2).toService(Test1);
38
+ container.bind(Test3).toService(Test1);
39
+ const test1 = container.get(Test1);
40
+ container.get(Test2);
41
+ container.get(Test3);
42
+ await Promise.all([
43
+ container.unbindAsync(Test1),
44
+ container.unbindAsync(Test2),
45
+ container.unbindAsync(Test3),
46
+ ]);
47
+ expect(test1.onDestroyMock).toHaveBeenCalledTimes(1);
48
+ });
49
+ });
50
+ //# sourceMappingURL=issue_1416.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1416.test.js","sourceRoot":"","sources":["../../../src/test/bugs/issue_1416.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE5D,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAE1E,IAAM,KAAK,GAAX,MAAM,KAAK;YACF,aAAa,GAAqB,MAAM,CAAC,EAAE,EAAE,CAAC;YAG9C,OAAO;gBACZ,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;SACF,CAAA;QAHQ;YADN,UAAU,EAAE;;;;4CAGZ;QANG,KAAK;YADV,UAAU,EAAE;WACP,KAAK,CAOV;QAGD,IAAM,KAAK,GAAX,MAAM,KAAK;YACF,OAAO,KAAU,CAAC;SAC1B,CAAA;QAFK,KAAK;YADV,UAAU,EAAE;WACP,KAAK,CAEV;QAGD,IAAM,KAAK,GAAX,MAAM,KAAK;YACF,OAAO,KAAU,CAAC;SAC1B,CAAA;QAFK,KAAK;YADV,UAAU,EAAE;WACP,KAAK,CAEV;QAED,MAAM,SAAS,GAAc,IAAI,SAAS,CAAC;YACzC,YAAY,EAAE,kBAAkB,CAAC,SAAS;SAC3C,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAU,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAErB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1515.test.d.ts","sourceRoot":"","sources":["../../../src/test/bugs/issue_1515.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { describe, expect, it } from 'vitest';
3
+ import { Container, inject, injectable, multiInject } from '../../index.js';
4
+ describe('Issue 1515', () => {
5
+ it('should properly throw on circular dependency', () => {
6
+ let Circle1 = class Circle1 {
7
+ circle2;
8
+ constructor(circle2) {
9
+ this.circle2 = circle2;
10
+ }
11
+ };
12
+ Circle1 = __decorate([
13
+ injectable(),
14
+ __param(0, inject('circle-2')),
15
+ __metadata("design:paramtypes", [Object])
16
+ ], Circle1);
17
+ let Circle2 = class Circle2 {
18
+ circle1;
19
+ constructor(circle1) {
20
+ this.circle1 = circle1;
21
+ }
22
+ };
23
+ Circle2 = __decorate([
24
+ injectable(),
25
+ __param(0, inject('circle-1')),
26
+ __metadata("design:paramtypes", [Object])
27
+ ], Circle2);
28
+ let Multi1 = class Multi1 {
29
+ };
30
+ Multi1 = __decorate([
31
+ injectable()
32
+ ], Multi1);
33
+ let Multi2 = class Multi2 {
34
+ };
35
+ Multi2 = __decorate([
36
+ injectable()
37
+ ], Multi2);
38
+ let Multi3 = class Multi3 {
39
+ };
40
+ Multi3 = __decorate([
41
+ injectable()
42
+ ], Multi3);
43
+ let Top = class Top {
44
+ multis;
45
+ circle1;
46
+ constructor(multis, circle1) {
47
+ this.multis = multis;
48
+ this.circle1 = circle1;
49
+ }
50
+ };
51
+ Top = __decorate([
52
+ injectable(),
53
+ __param(0, multiInject('multi-inject')),
54
+ __param(1, inject('circle-1')),
55
+ __metadata("design:paramtypes", [Array, Object])
56
+ ], Top);
57
+ const container = new Container();
58
+ container.bind('multi-inject').to(Multi1);
59
+ container.bind('multi-inject').to(Multi2);
60
+ container.bind('multi-inject').to(Multi3);
61
+ container.bind('circle-1').to(Circle1);
62
+ container.bind('circle-2').to(Circle2);
63
+ container.bind(Top).toSelf();
64
+ expect(() => {
65
+ container.get(Top);
66
+ }).toThrow('Circular dependency found: Top -> circle-1 -> circle-2 -> circle-1');
67
+ });
68
+ });
69
+ //# sourceMappingURL=issue_1515.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1515.test.js","sourceRoot":"","sources":["../../../src/test/bugs/issue_1515.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,IACM,OAAO,GADb,MACM,OAAO;YACqC;YAAhD,YAAgD,OAAgB;gBAAhB,YAAO,GAAP,OAAO,CAAS;YAAG,CAAC;SACrE,CAAA;QAFK,OAAO;YADZ,UAAU,EAAE;YAEE,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;;WAD3B,OAAO,CAEZ;QAED,IACM,OAAO,GADb,MACM,OAAO;YAC4B;YAAvC,YAAuC,OAAgB;gBAAhB,YAAO,GAAP,OAAO,CAAS;YAAG,CAAC;SAC5D,CAAA;QAFK,OAAO;YADZ,UAAU,EAAE;YAEE,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;;WAD3B,OAAO,CAEZ;QAGD,IAAM,MAAM,GAAZ,MAAM,MAAM;SAAG,CAAA;QAAT,MAAM;YADX,UAAU,EAAE;WACP,MAAM,CAAG;QAEf,IAAM,MAAM,GAAZ,MAAM,MAAM;SAAG,CAAA;QAAT,MAAM;YADX,UAAU,EAAE;WACP,MAAM,CAAG;QAEf,IAAM,MAAM,GAAZ,MAAM,MAAM;SAAG,CAAA;QAAT,MAAM;YADX,UAAU,EAAE;WACP,MAAM,CAAG;QAEf,IACM,GAAG,GADT,MACM,GAAG;YAEwC;YACT;YAFtC,YAC+C,MAAiB,EAC1B,OAAgB;gBADP,WAAM,GAAN,MAAM,CAAW;gBAC1B,YAAO,GAAP,OAAO,CAAS;YACnD,CAAC;SACL,CAAA;QALK,GAAG;YADR,UAAU,EAAE;YAGR,WAAA,WAAW,CAAC,cAAc,CAAC,CAAA;YAC3B,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;;WAHjB,GAAG,CAKR;QAED,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAE7C,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1C,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1C,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAE7B,MAAM,CAAC,GAAG,EAAE;YACV,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,OAAO,CACR,oEAAoE,CACrE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1518.test.d.ts","sourceRoot":"","sources":["../../../src/test/bugs/issue_1518.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { Container } from '../../index.js';
3
+ describe('Issue 1518', () => {
4
+ it('should not throw on deactivating undefined singleton values', async () => {
5
+ const container = new Container();
6
+ const symbol = Symbol.for('foo');
7
+ container.bind(symbol).toConstantValue(undefined);
8
+ console.log(container.get(symbol));
9
+ await container.unbindAsync('foo');
10
+ expect(() => { }).not.toThrow();
11
+ });
12
+ });
13
+ //# sourceMappingURL=issue_1518.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_1518.test.js","sourceRoot":"","sources":["../../../src/test/bugs/issue_1518.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAW,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnC,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_706.test.d.ts","sourceRoot":"","sources":["../../../src/test/bugs/issue_706.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { describe, expect, it } from 'vitest';
3
+ import { bindingScopeValues, Container, injectable } from '../../index.js';
4
+ describe('Issue 706', () => {
5
+ it('Should expose BindingScopeEnum as part of the public API', () => {
6
+ let SomeClass = class SomeClass {
7
+ time;
8
+ constructor() {
9
+ this.time = new Date().getTime();
10
+ }
11
+ };
12
+ SomeClass = __decorate([
13
+ injectable(),
14
+ __metadata("design:paramtypes", [])
15
+ ], SomeClass);
16
+ const container = new Container({
17
+ defaultScope: bindingScopeValues.Singleton,
18
+ });
19
+ // eslint-disable-next-line @typescript-eslint/typedef
20
+ const TYPE = {
21
+ SomeClass: Symbol.for('SomeClass'),
22
+ };
23
+ container.bind(TYPE.SomeClass).to(SomeClass);
24
+ const instanceOne = container.get(TYPE.SomeClass);
25
+ const instanceTwo = container.get(TYPE.SomeClass);
26
+ expect(instanceOne.time).toBe(instanceTwo.time);
27
+ });
28
+ });
29
+ //# sourceMappingURL=issue_706.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_706.test.js","sourceRoot":"","sources":["../../../src/test/bugs/issue_706.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,IACM,SAAS,GADf,MACM,SAAS;YACN,IAAI,CAAS;YACpB;gBACE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACnC,CAAC;SACF,CAAA;QALK,SAAS;YADd,UAAU,EAAE;;WACP,SAAS,CAKd;QAED,MAAM,SAAS,GAAc,IAAI,SAAS,CAAC;YACzC,YAAY,EAAE,kBAAkB,CAAC,SAAS;SAC3C,CAAC,CAAC;QAEH,sDAAsD;QACtD,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;SACnC,CAAC;QAEF,SAAS,CAAC,IAAI,CAAY,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,WAAW,GAAc,SAAS,CAAC,GAAG,CAAY,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,MAAM,WAAW,GAAc,SAAS,CAAC,GAAG,CAAY,IAAI,CAAC,SAAS,CAAC,CAAC;QAExE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_928.test.d.ts","sourceRoot":"","sources":["../../../src/test/bugs/issue_928.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { describe, expect, it } from 'vitest';
3
+ import { Container, inject, injectable, optional, } from '../../index.js';
4
+ describe('Issue 928', () => {
5
+ it('should inject the right instances', () => {
6
+ let injectedA;
7
+ let injectedB;
8
+ let injectedC;
9
+ // some dependencies
10
+ let DepA = class DepA {
11
+ a = 1;
12
+ };
13
+ DepA = __decorate([
14
+ injectable()
15
+ ], DepA);
16
+ let DepB = class DepB {
17
+ b = 1;
18
+ };
19
+ DepB = __decorate([
20
+ injectable()
21
+ ], DepB);
22
+ let DepC = class DepC {
23
+ c = 1;
24
+ };
25
+ DepC = __decorate([
26
+ injectable()
27
+ ], DepC);
28
+ let AbstractCls = class AbstractCls {
29
+ constructor(a, b = { b: 0 }) {
30
+ injectedA = a;
31
+ injectedB = b;
32
+ }
33
+ };
34
+ AbstractCls = __decorate([
35
+ injectable(),
36
+ __param(0, inject(DepA)),
37
+ __param(1, inject(DepB)),
38
+ __param(1, optional()),
39
+ __metadata("design:paramtypes", [DepA,
40
+ DepB])
41
+ ], AbstractCls);
42
+ let Cls = class Cls extends AbstractCls {
43
+ constructor(c, b = { b: 0 }, a) {
44
+ super(a, b);
45
+ injectedC = c;
46
+ }
47
+ };
48
+ Cls = __decorate([
49
+ injectable(),
50
+ __param(0, inject(DepC)),
51
+ __param(1, inject(DepB)),
52
+ __param(1, optional()),
53
+ __param(2, inject(DepA)),
54
+ __metadata("design:paramtypes", [DepC,
55
+ DepB,
56
+ DepA])
57
+ ], Cls);
58
+ const container = new Container();
59
+ [DepA, DepB, DepC, Cls].forEach((i) => container.bind(i).toSelf().inSingletonScope());
60
+ container.get(Cls);
61
+ expect(injectedA).toStrictEqual(new DepA());
62
+ expect(injectedB).toStrictEqual(new DepB());
63
+ expect(injectedC).toStrictEqual(new DepC());
64
+ });
65
+ });
66
+ //# sourceMappingURL=issue_928.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue_928.test.js","sourceRoot":"","sources":["../../../src/test/bugs/issue_928.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EACL,SAAS,EACT,MAAM,EACN,UAAU,EAEV,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,IAAI,SAAkB,CAAC;QACvB,IAAI,SAAkB,CAAC;QACvB,IAAI,SAAkB,CAAC;QAEvB,oBAAoB;QAEpB,IAAM,IAAI,GAAV,MAAM,IAAI;YACD,CAAC,GAAW,CAAC,CAAC;SACtB,CAAA;QAFK,IAAI;YADT,UAAU,EAAE;WACP,IAAI,CAET;QAED,IAAM,IAAI,GAAV,MAAM,IAAI;YACD,CAAC,GAAW,CAAC,CAAC;SACtB,CAAA;QAFK,IAAI;YADT,UAAU,EAAE;WACP,IAAI,CAET;QAED,IAAM,IAAI,GAAV,MAAM,IAAI;YACD,CAAC,GAAW,CAAC,CAAC;SACtB,CAAA;QAFK,IAAI;YADT,UAAU,EAAE;WACP,IAAI,CAET;QAED,IACe,WAAW,GAD1B,MACe,WAAW;YACxB,YACgB,CAAO,EACK,IAAU,EAAE,CAAC,EAAE,CAAC,EAAE;gBAE5C,SAAS,GAAG,CAAC,CAAC;gBACd,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;SACF,CAAA;QARc,WAAW;YADzB,UAAU,EAAE;YAGR,WAAA,MAAM,CAAC,IAAI,CAAC,CAAA;YACZ,WAAA,MAAM,CAAC,IAAI,CAAC,CAAA;YAAE,WAAA,QAAQ,EAAE,CAAA;6CADR,IAAI;gBACQ,IAAI;WAHtB,WAAW,CAQzB;QAED,IACM,GAAG,GADT,MACM,GAAI,SAAQ,WAAW;YAC3B,YACgB,CAAO,EACK,IAAU,EAAE,CAAC,EAAE,CAAC,EAAE,EAC9B,CAAO;gBAErB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEZ,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;SACF,CAAA;QAVK,GAAG;YADR,UAAU,EAAE;YAGR,WAAA,MAAM,CAAC,IAAI,CAAC,CAAA;YACZ,WAAA,MAAM,CAAC,IAAI,CAAC,CAAA;YAAE,WAAA,QAAQ,EAAE,CAAA;YACxB,WAAA,MAAM,CAAC,IAAI,CAAC,CAAA;6CAFI,IAAI;gBACQ,IAAI;gBAChB,IAAI;WAJnB,GAAG,CAUR;QAED,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAC7C,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAmB,EAAE,EAAE,CACtD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAC9C,CAAC;QAEF,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnB,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -5,22 +5,21 @@
5
5
  },
6
6
  "description": "A powerful and lightweight inversion of control container for JavaScript and Node.js apps powered by TypeScript.",
7
7
  "dependencies": {
8
- "@inversifyjs/common": "1.5.2",
9
- "@inversifyjs/container": "1.15.0",
10
- "@inversifyjs/core": "9.2.0"
8
+ "@inversifyjs/common": "2.0.0",
9
+ "@inversifyjs/container": "2.0.0",
10
+ "@inversifyjs/core": "10.0.0"
11
11
  },
12
12
  "devDependencies": {
13
- "@types/node": "24.10.4",
14
- "@vitest/coverage-v8": "4.0.16",
15
- "eslint": "9.39.2",
16
- "prettier": "3.7.4",
13
+ "@types/node": "24.12.0",
14
+ "@vitest/coverage-v8": "4.1.0",
15
+ "eslint": "10.0.3",
16
+ "prettier": "3.8.1",
17
17
  "reflect-metadata": "0.2.2",
18
- "rimraf": "6.1.2",
19
- "rollup": "4.55.1",
20
- "ts-loader": "9.5.4",
18
+ "rimraf": "6.1.3",
21
19
  "tslib": "2.8.1",
22
20
  "typescript": "5.9.3",
23
- "vitest": "4.0.16"
21
+ "vitest": "4.1.0",
22
+ "@inversifyjs/eslint-plugin-require-extensions": "0.2.0"
24
23
  },
25
24
  "homepage": "https://inversify.io",
26
25
  "keywords": [
@@ -38,14 +37,10 @@
38
37
  "pnpm": "^10.13.1"
39
38
  },
40
39
  "license": "MIT",
41
- "main": "lib/cjs/index.js",
42
- "module": "lib/esm/index.js",
43
40
  "exports": {
44
- ".": {
45
- "import": "./lib/esm/index.js",
46
- "require": "./lib/cjs/index.js"
47
- }
41
+ ".": "./lib/index.js"
48
42
  },
43
+ "type": "module",
49
44
  "name": "inversify",
50
45
  "publishConfig": {
51
46
  "access": "public"
@@ -55,11 +50,9 @@
55
50
  "url": "git+https://github.com/inversify/monorepo.git"
56
51
  },
57
52
  "sideEffects": true,
58
- "version": "7.11.0",
53
+ "version": "8.0.0",
59
54
  "scripts": {
60
- "build": "pnpm run build:cjs && pnpm run build:esm",
61
- "build:cjs": "tsc --build tsconfig.cjs.json && pnpm exec foundation-ts-package-cjs ./lib/cjs",
62
- "build:esm": "rollup -c ./rollup.config.mjs && pnpm exec foundation-ts-package-esm ./lib/esm",
55
+ "build": "tsc",
63
56
  "build:clean": "rimraf lib",
64
57
  "format": "prettier --write ./src",
65
58
  "lint": "eslint ./src",