@shellicar/core-di 0.0.1 → 0.0.3

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 (118) hide show
  1. package/README.md +6 -0
  2. package/dist/index.cjs +2 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +70 -0
  5. package/dist/index.d.mts +70 -0
  6. package/dist/index.mjs +2 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +30 -31
  9. package/dist/cjs/ServiceCollection.d.ts +0 -13
  10. package/dist/cjs/ServiceCollection.d.ts.map +0 -1
  11. package/dist/cjs/ServiceCollection.js +0 -64
  12. package/dist/cjs/ServiceCollection.js.map +0 -1
  13. package/dist/cjs/ServiceProvider.d.ts +0 -22
  14. package/dist/cjs/ServiceProvider.d.ts.map +0 -1
  15. package/dist/cjs/ServiceProvider.js +0 -138
  16. package/dist/cjs/ServiceProvider.js.map +0 -1
  17. package/dist/cjs/constants.d.ts +0 -8
  18. package/dist/cjs/constants.d.ts.map +0 -1
  19. package/dist/cjs/constants.js +0 -12
  20. package/dist/cjs/constants.js.map +0 -1
  21. package/dist/cjs/createServiceCollection.d.ts +0 -3
  22. package/dist/cjs/createServiceCollection.d.ts.map +0 -1
  23. package/dist/cjs/createServiceCollection.js +0 -7
  24. package/dist/cjs/createServiceCollection.js.map +0 -1
  25. package/dist/cjs/debug.d.ts +0 -4
  26. package/dist/cjs/debug.d.ts.map +0 -1
  27. package/dist/cjs/debug.js +0 -25
  28. package/dist/cjs/debug.js.map +0 -1
  29. package/dist/cjs/dependsOn.d.ts +0 -3
  30. package/dist/cjs/dependsOn.d.ts.map +0 -1
  31. package/dist/cjs/dependsOn.js +0 -27
  32. package/dist/cjs/dependsOn.js.map +0 -1
  33. package/dist/cjs/errors.d.ts +0 -11
  34. package/dist/cjs/errors.d.ts.map +0 -1
  35. package/dist/cjs/errors.js +0 -22
  36. package/dist/cjs/errors.js.map +0 -1
  37. package/dist/cjs/index.d.ts +0 -6
  38. package/dist/cjs/index.d.ts.map +0 -1
  39. package/dist/cjs/index.js +0 -17
  40. package/dist/cjs/index.js.map +0 -1
  41. package/dist/cjs/interfaces.d.ts +0 -22
  42. package/dist/cjs/interfaces.d.ts.map +0 -1
  43. package/dist/cjs/interfaces.js +0 -19
  44. package/dist/cjs/interfaces.js.map +0 -1
  45. package/dist/cjs/metadata.d.ts +0 -5
  46. package/dist/cjs/metadata.d.ts.map +0 -1
  47. package/dist/cjs/metadata.js +0 -17
  48. package/dist/cjs/metadata.js.map +0 -1
  49. package/dist/cjs/types.d.ts +0 -35
  50. package/dist/cjs/types.d.ts.map +0 -1
  51. package/dist/cjs/types.js +0 -3
  52. package/dist/cjs/types.js.map +0 -1
  53. package/dist/esm/ServiceCollection.d.ts +0 -13
  54. package/dist/esm/ServiceCollection.d.ts.map +0 -1
  55. package/dist/esm/ServiceCollection.js +0 -60
  56. package/dist/esm/ServiceCollection.js.map +0 -1
  57. package/dist/esm/ServiceProvider.d.ts +0 -22
  58. package/dist/esm/ServiceProvider.d.ts.map +0 -1
  59. package/dist/esm/ServiceProvider.js +0 -134
  60. package/dist/esm/ServiceProvider.js.map +0 -1
  61. package/dist/esm/constants.d.ts +0 -8
  62. package/dist/esm/constants.d.ts.map +0 -1
  63. package/dist/esm/constants.js +0 -9
  64. package/dist/esm/constants.js.map +0 -1
  65. package/dist/esm/createServiceCollection.d.ts +0 -3
  66. package/dist/esm/createServiceCollection.d.ts.map +0 -1
  67. package/dist/esm/createServiceCollection.js +0 -3
  68. package/dist/esm/createServiceCollection.js.map +0 -1
  69. package/dist/esm/debug.d.ts +0 -4
  70. package/dist/esm/debug.d.ts.map +0 -1
  71. package/dist/esm/debug.js +0 -22
  72. package/dist/esm/debug.js.map +0 -1
  73. package/dist/esm/dependsOn.d.ts +0 -3
  74. package/dist/esm/dependsOn.d.ts.map +0 -1
  75. package/dist/esm/dependsOn.js +0 -23
  76. package/dist/esm/dependsOn.js.map +0 -1
  77. package/dist/esm/errors.d.ts +0 -11
  78. package/dist/esm/errors.d.ts.map +0 -1
  79. package/dist/esm/errors.js +0 -16
  80. package/dist/esm/errors.js.map +0 -1
  81. package/dist/esm/index.d.ts +0 -6
  82. package/dist/esm/index.d.ts.map +0 -1
  83. package/dist/esm/index.js +0 -5
  84. package/dist/esm/index.js.map +0 -1
  85. package/dist/esm/interfaces.d.ts +0 -22
  86. package/dist/esm/interfaces.d.ts.map +0 -1
  87. package/dist/esm/interfaces.js +0 -11
  88. package/dist/esm/interfaces.js.map +0 -1
  89. package/dist/esm/metadata.d.ts +0 -5
  90. package/dist/esm/metadata.d.ts.map +0 -1
  91. package/dist/esm/metadata.js +0 -12
  92. package/dist/esm/metadata.js.map +0 -1
  93. package/dist/esm/types.d.ts +0 -35
  94. package/dist/esm/types.d.ts.map +0 -1
  95. package/dist/esm/types.js +0 -2
  96. package/dist/esm/types.js.map +0 -1
  97. package/dist/types/ServiceCollection.d.ts +0 -13
  98. package/dist/types/ServiceCollection.d.ts.map +0 -1
  99. package/dist/types/ServiceProvider.d.ts +0 -22
  100. package/dist/types/ServiceProvider.d.ts.map +0 -1
  101. package/dist/types/constants.d.ts +0 -8
  102. package/dist/types/constants.d.ts.map +0 -1
  103. package/dist/types/createServiceCollection.d.ts +0 -3
  104. package/dist/types/createServiceCollection.d.ts.map +0 -1
  105. package/dist/types/debug.d.ts +0 -4
  106. package/dist/types/debug.d.ts.map +0 -1
  107. package/dist/types/dependsOn.d.ts +0 -3
  108. package/dist/types/dependsOn.d.ts.map +0 -1
  109. package/dist/types/errors.d.ts +0 -11
  110. package/dist/types/errors.d.ts.map +0 -1
  111. package/dist/types/index.d.ts +0 -6
  112. package/dist/types/index.d.ts.map +0 -1
  113. package/dist/types/interfaces.d.ts +0 -22
  114. package/dist/types/interfaces.d.ts.map +0 -1
  115. package/dist/types/metadata.d.ts +0 -5
  116. package/dist/types/metadata.d.ts.map +0 -1
  117. package/dist/types/types.d.ts +0 -35
  118. package/dist/types/types.d.ts.map +0 -1
@@ -1,138 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceProvider = void 0;
4
- const debug_1 = require("./debug");
5
- const constants_1 = require("./constants");
6
- const interfaces_1 = require("./interfaces");
7
- const metadata_1 = require("./metadata");
8
- const errors_1 = require("./errors");
9
- const createResolveMap = () => new Map();
10
- class ServiceProvider {
11
- constructor(services, singletons = createResolveMap()) {
12
- Object.defineProperty(this, "services", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: services
17
- });
18
- Object.defineProperty(this, "singletons", {
19
- enumerable: true,
20
- configurable: true,
21
- writable: true,
22
- value: singletons
23
- });
24
- Object.defineProperty(this, "scoped", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: createResolveMap()
29
- });
30
- Object.defineProperty(this, "created", {
31
- enumerable: true,
32
- configurable: true,
33
- writable: true,
34
- value: []
35
- });
36
- }
37
- [Symbol.dispose]() {
38
- this.created.forEach(x => x[Symbol.dispose]());
39
- }
40
- resolveFrom(identifier, descriptor, lifetimeMap, currentResolve) {
41
- let resolvedInstances = lifetimeMap.get(identifier);
42
- if (resolvedInstances === undefined) {
43
- resolvedInstances = new Map();
44
- lifetimeMap.set(identifier, resolvedInstances);
45
- }
46
- let instance = resolvedInstances.get(descriptor.implementation);
47
- if (instance === undefined) {
48
- instance = this.createInstance(descriptor, currentResolve);
49
- resolvedInstances.set(descriptor.implementation, instance);
50
- this.setDependencies(descriptor.implementation, instance, currentResolve);
51
- }
52
- return instance;
53
- }
54
- resolveInternal(identifier, descriptor, currentResolve) {
55
- const mapping = {
56
- [constants_1.Lifetime.Singleton]: this.singletons,
57
- [constants_1.Lifetime.Scoped]: this.scoped,
58
- [constants_1.Lifetime.Resolve]: currentResolve,
59
- };
60
- const sourceMap = mapping[descriptor.lifetime];
61
- if (sourceMap === undefined) {
62
- const instance = this.createInstance(descriptor, currentResolve);
63
- this.setDependencies(descriptor.implementation, instance, currentResolve);
64
- return instance;
65
- }
66
- return this.resolveFrom(identifier, descriptor, sourceMap, currentResolve);
67
- }
68
- resolveAll(identifier, currentResolve = createResolveMap()) {
69
- const descriptors = this.services.get(identifier);
70
- return descriptors.map(descriptor => this.resolveInternal(identifier, descriptor, currentResolve));
71
- }
72
- resolve(identifier, currentResolve = createResolveMap()) {
73
- if (identifier.prototype === interfaces_1.IServiceScope.prototype) {
74
- return this;
75
- }
76
- const descriptors = this.services.get(identifier);
77
- if (descriptors.length === 0) {
78
- throw new errors_1.UnregisteredServiceError(identifier);
79
- }
80
- if (descriptors.length > 1) {
81
- throw new errors_1.MultipleRegistrationError(identifier);
82
- }
83
- const descriptor = descriptors[0];
84
- return this.resolveInternal(identifier, descriptor, currentResolve);
85
- }
86
- createInstance(descriptor, currentResolve) {
87
- let instance;
88
- if ('factory' in descriptor) {
89
- const factory = descriptor.factory;
90
- const resolve = (identifier) => this.resolve(identifier, currentResolve);
91
- const resolveAll = (identifier) => this.resolveAll(identifier, currentResolve);
92
- const createScope = () => this.createScope();
93
- // proxy requests to keep current resolved types
94
- instance = factory({
95
- resolve: resolve,
96
- resolveAll: resolveAll,
97
- createScope: createScope,
98
- // [Symbol.dispose]: () => {},
99
- });
100
- }
101
- else {
102
- try {
103
- instance = new descriptor.implementation();
104
- }
105
- catch (err) {
106
- console.error(err, 'Error creating service', {
107
- descriptor,
108
- });
109
- throw err;
110
- }
111
- }
112
- if (descriptor.lifetime !== constants_1.Lifetime.Singleton && Symbol.dispose in instance) {
113
- this.created.push(instance);
114
- }
115
- return instance;
116
- }
117
- createScope() {
118
- return new ServiceProvider(this.services, this.singletons);
119
- }
120
- setDependencies(type, instance, currentResolve) {
121
- var _a;
122
- const dependencies = (_a = (0, metadata_1.getMetadata)(constants_1.DesignDependenciesKey, type)) !== null && _a !== void 0 ? _a : {};
123
- (0, debug_1.log)('Dependencies', type.name, dependencies);
124
- for (const [key, identifier] of Object.entries(dependencies)) {
125
- if (identifier !== type) {
126
- (0, debug_1.log)('Resolving', identifier, 'for', type.name);
127
- const dep = this.resolve(identifier, currentResolve);
128
- instance[key] = dep;
129
- }
130
- else {
131
- throw new errors_1.SelfDependencyError();
132
- }
133
- }
134
- return instance;
135
- }
136
- }
137
- exports.ServiceProvider = ServiceProvider;
138
- //# sourceMappingURL=ServiceProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceProvider.js","sourceRoot":"","sources":["../../src/ServiceProvider.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export declare enum Lifetime {
2
- Resolve = "RESOLVE",
3
- Transient = "TRANSIENT",
4
- Scoped = "SCOPED",
5
- Singleton = "SINGLETON"
6
- }
7
- export declare const DesignDependenciesKey = "design:dependencies";
8
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,qBAAqB,wBAAwB,CAAC"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DesignDependenciesKey = exports.Lifetime = void 0;
4
- var Lifetime;
5
- (function (Lifetime) {
6
- Lifetime["Resolve"] = "RESOLVE";
7
- Lifetime["Transient"] = "TRANSIENT";
8
- Lifetime["Scoped"] = "SCOPED";
9
- Lifetime["Singleton"] = "SINGLETON";
10
- })(Lifetime || (exports.Lifetime = Lifetime = {}));
11
- exports.DesignDependenciesKey = 'design:dependencies';
12
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,6BAAiB,CAAA;IACjB,mCAAuB,CAAA;AACzB,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AAEY,QAAA,qBAAqB,GAAG,qBAAqB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { IServiceCollection } from './interfaces';
2
- export declare const createServiceCollection: () => IServiceCollection;
3
- //# sourceMappingURL=createServiceCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createServiceCollection.d.ts","sourceRoot":"","sources":["../../src/createServiceCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,uBAAuB,QAAO,kBAAmE,CAAC"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createServiceCollection = void 0;
4
- const ServiceCollection_1 = require("./ServiceCollection");
5
- const createServiceCollection = () => new ServiceCollection_1.ServiceCollection();
6
- exports.createServiceCollection = createServiceCollection;
7
- //# sourceMappingURL=createServiceCollection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createServiceCollection.js","sourceRoot":"","sources":["../../src/createServiceCollection.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAEjD,MAAM,uBAAuB,GAAG,GAAuB,EAAE,CAAC,IAAI,qCAAiB,EAAwB,CAAC;AAAlG,QAAA,uBAAuB,2BAA2E"}
@@ -1,4 +0,0 @@
1
- export declare const log: (message?: string, ...optionalParams: unknown[]) => void;
2
- export declare const enable: () => void;
3
- export declare const disable: () => void;
4
- //# sourceMappingURL=debug.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,GAAG,aATO,MAAM,qBAAqB,OAAO,EAAE,SASjB,CAAC;AAC3C,eAAO,MAAM,MAAM,YAA6B,CAAC;AACjD,eAAO,MAAM,OAAO,YAA8B,CAAC"}
package/dist/cjs/debug.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.disable = exports.enable = exports.log = void 0;
4
- class DebugLogger {
5
- constructor() {
6
- Object.defineProperty(this, "debugging", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: false
11
- });
12
- }
13
- enable() { this.debugging = true; }
14
- disable() { this.debugging = false; }
15
- log(message, ...optionalParams) {
16
- if (this.debugging) {
17
- console.log(message, ...optionalParams);
18
- }
19
- }
20
- }
21
- const logger = new DebugLogger();
22
- exports.log = logger.log.bind(logger);
23
- exports.enable = logger.enable.bind(logger);
24
- exports.disable = logger.disable.bind(logger);
25
- //# sourceMappingURL=debug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":";;;AACA,MAAM,WAAW;IAAjB;QACU;;;;mBAAY,KAAK;WAAC;IAS5B,CAAC;IAPQ,MAAM,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IACnC,OAAO,KAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,OAAgB,EAAE,GAAG,cAAyB;QACvD,IAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;AAEpB,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ServiceIdentifier, SourceType } from './types';
2
- export declare const dependsOn: <T extends SourceType>(identifier: ServiceIdentifier<T>) => (value: undefined, ctx: ClassFieldDecoratorContext) => (this: object, initialValue: any) => any;
3
- //# sourceMappingURL=dependsOn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependsOn.d.ts","sourceRoot":"","sources":["../../src/dependsOn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAY7D,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,UAAU,cAAc,iBAAiB,CAAC,CAAC,CAAC,aAC/D,SAAS,OAAO,0BAA0B,YAChC,MAAM,gBAAgB,GAAG,QAUnD,CAAC"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dependsOn = void 0;
4
- const constants_1 = require("./constants");
5
- const metadata_1 = require("./metadata");
6
- const tagProperty = (metadataKey, annotationTarget, name, identifier) => {
7
- let existing = (0, metadata_1.getMetadata)(metadataKey, annotationTarget);
8
- if (existing === undefined) {
9
- existing = {};
10
- (0, metadata_1.defineMetadata)(metadataKey, existing, annotationTarget);
11
- }
12
- existing[name] = identifier;
13
- };
14
- const dependsOn = (identifier) => {
15
- return (value, ctx) => {
16
- return function (initialValue) {
17
- if (Reflect.getMetadata === undefined) {
18
- throw new Error('Please import reflect-metadata');
19
- }
20
- const target = this.constructor;
21
- tagProperty(constants_1.DesignDependenciesKey, target, ctx.name, identifier);
22
- return initialValue;
23
- };
24
- };
25
- };
26
- exports.dependsOn = dependsOn;
27
- //# sourceMappingURL=dependsOn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependsOn.js","sourceRoot":"","sources":["../../src/dependsOn.ts"],"names":[],"mappings":";;;AAAA,2CAAoD;AAEpD,yCAAyD;AAEzD,MAAM,WAAW,GAAG,CAAuB,WAAmB,EAAE,gBAAwB,EAAE,IAAqB,EAAE,UAAgC,EAAE,EAAE;IACnJ,IAAI,QAAQ,GAAG,IAAA,sBAAW,EAAI,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,EAAE,CAAC;QACd,IAAA,yBAAc,EAAC,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;AAC9B,CAAC,CAAC;AAEK,MAAM,SAAS,GAAG,CAAuB,UAAgC,EAAE,EAAE;IAClF,OAAO,CAAC,KAAgB,EAAE,GAA+B,EAAE,EAAE;QAC3D,OAAO,UAAwB,YAAiB;YAC9C,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YAChC,WAAW,CAAC,iCAAqB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjE,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,SAAS,aAYpB"}
@@ -1,11 +0,0 @@
1
- import type { ServiceIdentifier } from './types';
2
- export declare class UnregisteredServiceError<T extends object> extends Error {
3
- constructor(identifier: ServiceIdentifier<T>);
4
- }
5
- export declare class MultipleRegistrationError<T extends object> extends Error {
6
- constructor(identifier: ServiceIdentifier<T>);
7
- }
8
- export declare class SelfDependencyError extends Error {
9
- constructor();
10
- }
11
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,qBAAa,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK;gBACvD,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAG7C;AAED,qBAAa,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK;gBACxD,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAG7C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAI7C"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SelfDependencyError = exports.MultipleRegistrationError = exports.UnregisteredServiceError = void 0;
4
- class UnregisteredServiceError extends Error {
5
- constructor(identifier) {
6
- super(`Resolving service that has not been registered: ${identifier}`);
7
- }
8
- }
9
- exports.UnregisteredServiceError = UnregisteredServiceError;
10
- class MultipleRegistrationError extends Error {
11
- constructor(identifier) {
12
- super(`Multiple services have been registered: ${identifier}`);
13
- }
14
- }
15
- exports.MultipleRegistrationError = MultipleRegistrationError;
16
- class SelfDependencyError extends Error {
17
- constructor() {
18
- super('Service depending on itself');
19
- }
20
- }
21
- exports.SelfDependencyError = SelfDependencyError;
22
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAEA,MAAa,wBAA2C,SAAQ,KAAK;IACnE,YAAY,UAAgC;QAC1C,KAAK,CAAC,mDAAmD,UAAU,EAAE,CAAC,CAAC;IACzE,CAAC;CACF;AAJD,4DAIC;AAED,MAAa,yBAA4C,SAAQ,KAAK;IACpE,YAAY,UAAgC;QAC1C,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AAJD,8DAIC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvC,CAAC;CACF;AAJD,kDAIC"}
@@ -1,6 +0,0 @@
1
- export { createServiceCollection } from './createServiceCollection';
2
- export { dependsOn } from './dependsOn';
3
- export { IDisposable, IServiceCollection, IServiceModule, IServiceProvider, IServiceScope } from './interfaces';
4
- export type { AbstractNewable, InstanceFactory, LifetimeBuilder, MetadataType, Newable, ServiceBuilder, ServiceDescriptor, ServiceDescriptorConcrete, ServiceDescriptorFactory, ServiceIdentifier, ServiceImplementation, ServiceModuleType, SourceType, } from './types';
5
- export { enable, disable, } from './debug';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChH,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,UAAU,GAAG,MAAM,SAAS,CAAC;AAC1Q,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,SAAS,CAAC"}
package/dist/cjs/index.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.disable = exports.enable = exports.IServiceScope = exports.IServiceProvider = exports.IServiceModule = exports.IServiceCollection = exports.IDisposable = exports.dependsOn = exports.createServiceCollection = void 0;
4
- var createServiceCollection_1 = require("./createServiceCollection");
5
- Object.defineProperty(exports, "createServiceCollection", { enumerable: true, get: function () { return createServiceCollection_1.createServiceCollection; } });
6
- var dependsOn_1 = require("./dependsOn");
7
- Object.defineProperty(exports, "dependsOn", { enumerable: true, get: function () { return dependsOn_1.dependsOn; } });
8
- var interfaces_1 = require("./interfaces");
9
- Object.defineProperty(exports, "IDisposable", { enumerable: true, get: function () { return interfaces_1.IDisposable; } });
10
- Object.defineProperty(exports, "IServiceCollection", { enumerable: true, get: function () { return interfaces_1.IServiceCollection; } });
11
- Object.defineProperty(exports, "IServiceModule", { enumerable: true, get: function () { return interfaces_1.IServiceModule; } });
12
- Object.defineProperty(exports, "IServiceProvider", { enumerable: true, get: function () { return interfaces_1.IServiceProvider; } });
13
- Object.defineProperty(exports, "IServiceScope", { enumerable: true, get: function () { return interfaces_1.IServiceScope; } });
14
- var debug_1 = require("./debug");
15
- Object.defineProperty(exports, "enable", { enumerable: true, get: function () { return debug_1.enable; } });
16
- Object.defineProperty(exports, "disable", { enumerable: true, get: function () { return debug_1.disable; } });
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,2CAAgH;AAAvG,yGAAA,WAAW,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEzF,iCAA2C;AAAlC,+FAAA,MAAM,OAAA;AAAE,gGAAA,OAAO,OAAA"}
@@ -1,22 +0,0 @@
1
- import type { SourceType, ServiceBuilder, ServiceDescriptor, ServiceIdentifier, ServiceModuleType } from './types';
2
- export declare abstract class IDisposable {
3
- abstract [Symbol.dispose]: () => void;
4
- }
5
- export declare abstract class IServiceModule {
6
- abstract registerServices(services: IServiceCollection): void;
7
- }
8
- export declare abstract class IServiceScope {
9
- abstract resolve<T extends SourceType>(identifier: ServiceIdentifier<T>): T;
10
- abstract resolveAll<T extends SourceType>(identifier: ServiceIdentifier<T>): T[];
11
- }
12
- export declare abstract class IServiceProvider extends IServiceScope {
13
- abstract createScope(): IServiceScope & IDisposable;
14
- }
15
- export declare abstract class IServiceCollection {
16
- abstract get<T extends SourceType>(key: ServiceIdentifier<T>): ServiceDescriptor<T>[];
17
- abstract register<T extends SourceType>(identifier: ServiceIdentifier<T>): ServiceBuilder<T>;
18
- abstract registerModules(modules: ServiceModuleType[]): void;
19
- abstract buildProvider(): IServiceProvider;
20
- abstract clone(): IServiceCollection;
21
- }
22
- //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnH,8BAAsB,WAAW;IAC/B,SAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9C;AAED,8BAAsB,cAAc;aAClB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CACrE;AAED,8BAAsB,aAAa;aACjB,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;aAClE,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CACxF;AAED,8BAAsB,gBAAiB,SAAQ,aAAa;aAC1C,WAAW,IAAI,aAAa,GAAG,WAAW;CAC3D;AAED,8BAAsB,kBAAkB;aACtB,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE;aAC5E,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;aACnF,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI;aACnD,aAAa,IAAI,gBAAgB;aACjC,KAAK,IAAI,kBAAkB;CAC5C"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IServiceCollection = exports.IServiceProvider = exports.IServiceScope = exports.IServiceModule = exports.IDisposable = void 0;
4
- class IDisposable {
5
- }
6
- exports.IDisposable = IDisposable;
7
- class IServiceModule {
8
- }
9
- exports.IServiceModule = IServiceModule;
10
- class IServiceScope {
11
- }
12
- exports.IServiceScope = IServiceScope;
13
- class IServiceProvider extends IServiceScope {
14
- }
15
- exports.IServiceProvider = IServiceProvider;
16
- class IServiceCollection {
17
- }
18
- exports.IServiceCollection = IServiceCollection;
19
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AAEA,MAAsB,WAAW;CAEhC;AAFD,kCAEC;AAED,MAAsB,cAAc;CAEnC;AAFD,wCAEC;AAED,MAAsB,aAAa;CAGlC;AAHD,sCAGC;AAED,MAAsB,gBAAiB,SAAQ,aAAa;CAE3D;AAFD,4CAEC;AAED,MAAsB,kBAAkB;CAMvC;AAND,gDAMC"}
@@ -1,5 +0,0 @@
1
- import 'reflect-metadata';
2
- import type { MetadataType, SourceType } from './types';
3
- export declare const getMetadata: <T extends SourceType>(key: string, obj: object) => MetadataType<T> | undefined;
4
- export declare const defineMetadata: <T extends SourceType>(key: string, metadata: MetadataType<T>, obj: object) => void;
5
- //# sourceMappingURL=metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,UAAU,OAAO,MAAM,OAAO,MAAM,KAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAM9F,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,UAAU,OAAO,MAAM,YAAY,YAAY,CAAC,CAAC,CAAC,OAAO,MAAM,SAEvG,CAAC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineMetadata = exports.getMetadata = void 0;
4
- require("reflect-metadata");
5
- const getMetadata = (key, obj) => {
6
- const result = Reflect.getMetadata(key, obj);
7
- if (result === undefined) {
8
- return undefined;
9
- }
10
- return result;
11
- };
12
- exports.getMetadata = getMetadata;
13
- const defineMetadata = (key, metadata, obj) => {
14
- Reflect.defineMetadata(key, metadata, obj);
15
- };
16
- exports.defineMetadata = defineMetadata;
17
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAGnB,MAAM,WAAW,GAAG,CAAuB,GAAW,EAAE,GAAW,EAA+B,EAAE;IACzG,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAyB,CAAC;AACnC,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEK,MAAM,cAAc,GAAG,CAAuB,GAAW,EAAE,QAAyB,EAAE,GAAW,EAAE,EAAE;IAC1G,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB"}
@@ -1,35 +0,0 @@
1
- import type { Lifetime } from './constants';
2
- import type { IServiceModule, IServiceProvider, IServiceScope } from './interfaces';
3
- export type SourceType = object;
4
- export type AbstractNewable<T> = abstract new (...args: any[]) => T;
5
- export type Newable<T> = new (...args: any[]) => T;
6
- export type ServiceIdentifier<T extends SourceType> = {
7
- prototype: T;
8
- name: string;
9
- };
10
- export type ServiceImplementation<T extends SourceType> = Newable<T>;
11
- export type InstanceFactory<T extends SourceType> = (x: IServiceScope & IServiceProvider) => T;
12
- export type ServiceModuleType = Newable<IServiceModule>;
13
- export type ServiceDescriptorFactory<T extends SourceType> = {
14
- implementation: ServiceIdentifier<T>;
15
- factory: InstanceFactory<T>;
16
- lifetime: Lifetime;
17
- };
18
- export type ServiceDescriptorConcrete<T extends SourceType> = {
19
- implementation: ServiceImplementation<T>;
20
- lifetime: Lifetime;
21
- };
22
- export type ServiceDescriptor<T extends SourceType> = ServiceDescriptorConcrete<T> | ServiceDescriptorFactory<T>;
23
- export type LifetimeBuilder = {
24
- singleton: () => LifetimeBuilder;
25
- scoped: () => LifetimeBuilder;
26
- transient: () => LifetimeBuilder;
27
- };
28
- export type ServiceBuilder<T extends SourceType> = {
29
- to: {
30
- (implementation: ServiceImplementation<T>): LifetimeBuilder;
31
- (implementation: ServiceIdentifier<T>, factory: InstanceFactory<T>): LifetimeBuilder;
32
- };
33
- };
34
- export type MetadataType<T extends SourceType> = Record<string | symbol, ServiceIdentifier<T>>;
35
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACpE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI;IAAE,SAAS,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACrF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,KAAK,CAAC,CAAC;AAE/F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC3D,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5D,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI,yBAAyB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAOjH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,eAAe,CAAC;IAC9B,SAAS,EAAE,MAAM,eAAe,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI;IACjD,EAAE,EAAE;QACF,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;QAC5D,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;KACtF,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"}
package/dist/cjs/types.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import type { SourceType, ServiceBuilder, ServiceDescriptor, ServiceIdentifier, Newable } from './types';
2
- import type { IServiceCollection, IServiceModule, IServiceProvider } from './interfaces';
3
- export declare class ServiceCollection implements IServiceCollection {
4
- private readonly services;
5
- constructor(services?: Map<ServiceIdentifier<any>, ServiceDescriptor<any>[]>);
6
- registerModules(modules: Newable<IServiceModule>[]): void;
7
- get<T extends SourceType>(key: ServiceIdentifier<T>): ServiceDescriptor<T>[];
8
- register<T extends SourceType>(identifier: ServiceIdentifier<T>): ServiceBuilder<T>;
9
- private addService;
10
- clone(): IServiceCollection;
11
- buildProvider(): IServiceProvider;
12
- }
13
- //# sourceMappingURL=ServiceCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceCollection.d.ts","sourceRoot":"","sources":["../../src/ServiceCollection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAyB,OAAO,EAAE,MAAM,SAAS,CAAC;AACjJ,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIzF,qBAAa,iBAAkB,YAAW,kBAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,wDAA8D;IAG5F,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAOhE,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE;IAI5E,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAgBnF,OAAO,CAAC,UAAU;IAUX,KAAK,IAAI,kBAAkB;IAU3B,aAAa,IAAI,gBAAgB;CAIzC"}
@@ -1,60 +0,0 @@
1
- import { ServiceProvider } from './ServiceProvider';
2
- import { Lifetime } from './constants';
3
- import { log } from './debug';
4
- export class ServiceCollection {
5
- constructor(services = new Map()) {
6
- Object.defineProperty(this, "services", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: services
11
- });
12
- }
13
- registerModules(modules) {
14
- modules.forEach(x => {
15
- const module = new x();
16
- module.registerServices(this);
17
- });
18
- }
19
- get(key) {
20
- var _a;
21
- return (_a = this.services.get(key)) !== null && _a !== void 0 ? _a : [];
22
- }
23
- register(identifier) {
24
- return {
25
- // to: (implementation: ServiceImplementation<T>, func?: InstanceFactory<T>) => {
26
- to: (implementation, factory) => {
27
- const descriptor = (factory === undefined) ? { implementation: implementation, lifetime: Lifetime.Resolve } : { implementation, factory, lifetime: Lifetime.Resolve };
28
- this.addService(identifier, descriptor);
29
- const builder = {
30
- singleton: () => { descriptor.lifetime = Lifetime.Singleton; return builder; },
31
- scoped: () => { descriptor.lifetime = Lifetime.Scoped; return builder; },
32
- transient: () => { descriptor.lifetime = Lifetime.Transient; return builder; },
33
- };
34
- return builder;
35
- },
36
- };
37
- }
38
- addService(identifier, descriptor) {
39
- log('Adding service', { identifier, descriptor });
40
- let existing = this.services.get(identifier);
41
- if (existing == null) {
42
- existing = [];
43
- this.services.set(identifier, existing);
44
- }
45
- existing.push(descriptor);
46
- }
47
- clone() {
48
- const clonedMap = new Map();
49
- for (const [key, descriptors] of this.services) {
50
- const clonedDescriptors = descriptors.map(descriptor => ({ ...descriptor }));
51
- clonedMap.set(key, clonedDescriptors);
52
- }
53
- return new ServiceCollection(clonedMap);
54
- }
55
- buildProvider() {
56
- const cloned = this.clone();
57
- return new ServiceProvider(cloned);
58
- }
59
- }
60
- //# sourceMappingURL=ServiceCollection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceCollection.js","sourceRoot":"","sources":["../../src/ServiceCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,OAAO,iBAAiB;IAC5B,YAA6B,WAAW,IAAI,GAAG,EAAoD;QAAvF;;;;mBAAiB,QAAQ;WAA8D;IACnG,CAAC;IAEM,eAAe,CAAC,OAAkC;QACvD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAuB,GAAyB;;QACjD,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;IACtC,CAAC;IAED,QAAQ,CAAuB,UAAgC;QAC7D,OAAO;YACL,iFAAiF;YACjF,EAAE,EAAE,CAAC,cAA+D,EAAE,OAA4B,EAAE,EAAE;gBACpG,MAAM,UAAU,GAAwB,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAA0C,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACvN,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG;oBACd,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;oBAC9E,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;oBACxE,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;iBAC/E,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,UAAU,CAAuB,UAAgC,EAAE,UAAgC;QACzG,GAAG,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,QAAQ,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAEM,KAAK;QACV,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;QAC9E,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;YAC7E,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAEM,aAAa;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- import type { IServiceProvider, IDisposable, IServiceCollection } from './interfaces';
2
- import { IServiceScope } from './interfaces';
3
- import type { ServiceIdentifier, ServiceImplementation, SourceType } from './types';
4
- type Id<T extends SourceType> = ServiceIdentifier<T> | ServiceImplementation<T>;
5
- type ResolveMap<T extends SourceType> = Map<ServiceIdentifier<T>, Map<Id<T>, T>>;
6
- export declare class ServiceProvider implements IServiceProvider, IServiceScope {
7
- private services;
8
- private singletons;
9
- private scoped;
10
- private created;
11
- constructor(services: IServiceCollection, singletons?: ResolveMap<object>);
12
- [Symbol.dispose](): void;
13
- private resolveFrom;
14
- private resolveInternal;
15
- resolveAll<T extends SourceType>(identifier: ServiceIdentifier<T>, currentResolve?: ResolveMap<T>): T[];
16
- resolve<T extends SourceType>(identifier: ServiceIdentifier<T>, currentResolve?: ResolveMap<T>): T;
17
- private createInstance;
18
- createScope(): IServiceScope & IDisposable;
19
- private setDependencies;
20
- }
21
- export {};
22
- //# sourceMappingURL=ServiceProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../src/ServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAqB,qBAAqB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGvG,KAAK,EAAE,CAAC,CAAC,SAAS,UAAU,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAEhF,KAAK,UAAU,CAAC,CAAC,SAAS,UAAU,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAIjF,qBAAa,eAAgB,YAAW,gBAAgB,EAAE,aAAa;IAKnE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAqB;gBAG1B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,qBAAqB;IAGzC,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,eAAe;IAmBhB,UAAU,CAAC,CAAC,SAAS,UAAU,EACpC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChC,cAAc,gBAAwB,GACrC,CAAC,EAAE;IAKC,OAAO,CAAC,CAAC,SAAS,UAAU,EACjC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChC,cAAc,gBAAwB,GACrC,CAAC;IAiBJ,OAAO,CAAC,cAAc;IAiCf,WAAW,IAAI,aAAa,GAAG,WAAW;IAIjD,OAAO,CAAC,eAAe;CAkBxB"}