assemblerjs 1.1.21 → 1.1.23
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.
- package/dist/index11.js +2 -2
- package/dist/index11.mjs +2 -2
- package/dist/index13.js +2 -2
- package/dist/index13.mjs +2 -2
- package/dist/index16.js +1 -1
- package/dist/index16.mjs +1 -1
- package/dist/index17.js +1 -1
- package/dist/index17.mjs +1 -1
- package/dist/index18.js +1 -1
- package/dist/index18.mjs +1 -1
- package/dist/index19.js +1 -1
- package/dist/index19.mjs +1 -1
- package/dist/index2.js +2 -2
- package/dist/index2.mjs +2 -2
- package/dist/index20.js +1 -1
- package/dist/index20.mjs +1 -1
- package/dist/index21.js +1 -1
- package/dist/index21.mjs +1 -1
- package/dist/index22.js +3 -3
- package/dist/index22.mjs +3 -3
- package/dist/index23.js +3 -3
- package/dist/index23.mjs +3 -3
- package/dist/index24.js +2 -2
- package/dist/index24.mjs +2 -2
- package/dist/index25.js +1 -1
- package/dist/index25.mjs +1 -1
- package/dist/index26.js +1 -1
- package/dist/index26.mjs +1 -1
- package/dist/index29.js +158 -17
- package/dist/index29.mjs +157 -14
- package/dist/index3.js +1 -1
- package/dist/index3.mjs +1 -1
- package/dist/index30.js +43 -100
- package/dist/index30.mjs +43 -98
- package/dist/index31.js +71 -32
- package/dist/index31.mjs +71 -31
- package/dist/index32.js +51 -154
- package/dist/index32.mjs +51 -153
- package/dist/index33.js +28 -47
- package/dist/index33.mjs +28 -47
- package/dist/index34.js +161 -65
- package/dist/index34.mjs +161 -65
- package/dist/index35.js +58 -50
- package/dist/index35.mjs +58 -50
- package/dist/index36.js +18 -32
- package/dist/index36.mjs +15 -32
- package/dist/index37.js +16 -169
- package/dist/index37.mjs +16 -169
- package/dist/index38.js +100 -56
- package/dist/index38.mjs +98 -56
- package/dist/index39.js +101 -18
- package/dist/index39.mjs +101 -18
- package/dist/index4.js +7 -7
- package/dist/index4.mjs +7 -7
- package/dist/index40.js +24 -101
- package/dist/index40.mjs +24 -101
- package/dist/index41.js +36 -24
- package/dist/index41.mjs +35 -24
- package/dist/index42.js +29 -49
- package/dist/index42.mjs +28 -49
- package/dist/index44.js +49 -29
- package/dist/index44.mjs +49 -28
- package/dist/index45.js +42 -26
- package/dist/index45.mjs +42 -26
- package/dist/index49.js +1 -1
- package/dist/index49.mjs +1 -1
- package/dist/index50.js +2 -2
- package/dist/index50.mjs +2 -2
- package/dist/index51.js +1 -1
- package/dist/index51.mjs +1 -1
- package/package.json +1 -1
package/dist/index11.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const constants = require('./index28.js');
|
|
6
|
-
const reflection = require('./
|
|
6
|
+
const reflection = require('./index36.js');
|
|
7
7
|
const decorator = require('./index2.js');
|
|
8
|
-
const schema = require('./
|
|
8
|
+
const schema = require('./index38.js');
|
|
9
9
|
|
|
10
10
|
function isTransversal(e) {
|
|
11
11
|
try {
|
package/dist/index11.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReflectValue } from './index28.mjs';
|
|
2
|
-
import { getCustomMetadata, defineCustomMetadata } from './
|
|
2
|
+
import { getCustomMetadata, defineCustomMetadata } from './index36.mjs';
|
|
3
3
|
import { Assemblage } from './index2.mjs';
|
|
4
|
-
import { getDefinition } from './
|
|
4
|
+
import { getDefinition } from './index38.mjs';
|
|
5
5
|
|
|
6
6
|
function isTransversal(e) {
|
|
7
7
|
try {
|
package/dist/index13.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const core = require('@assemblerjs/core');
|
|
6
|
-
const pointcutMatcher = require('./
|
|
6
|
+
const pointcutMatcher = require('./index40.js');
|
|
7
7
|
const affect = require('./index12.js');
|
|
8
|
-
const schema = require('./
|
|
8
|
+
const schema = require('./index38.js');
|
|
9
9
|
|
|
10
10
|
class TransversalManager {
|
|
11
11
|
static getInstance(e) {
|
package/dist/index13.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isClass } from '@assemblerjs/core';
|
|
2
|
-
import { PointcutMatcher } from './
|
|
2
|
+
import { PointcutMatcher } from './index40.mjs';
|
|
3
3
|
import { getAffectedMethods } from './index12.mjs';
|
|
4
|
-
import { getDefinition } from './
|
|
4
|
+
import { getDefinition } from './index38.mjs';
|
|
5
5
|
|
|
6
6
|
class TransversalManager {
|
|
7
7
|
static getInstance(e) {
|
package/dist/index16.js
CHANGED
package/dist/index16.mjs
CHANGED
package/dist/index17.js
CHANGED
package/dist/index17.mjs
CHANGED
package/dist/index18.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const parameterDecoratorFactory = require('./index17.js');
|
|
6
|
-
const resolverStore = require('./
|
|
6
|
+
const resolverStore = require('./index37.js');
|
|
7
7
|
|
|
8
8
|
let ContextResolver = class ContextResolver {
|
|
9
9
|
resolve(e, r, t) {
|
package/dist/index18.mjs
CHANGED
package/dist/index19.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const parameterDecoratorFactory = require('./index17.js');
|
|
6
|
-
const resolverStore = require('./
|
|
6
|
+
const resolverStore = require('./index37.js');
|
|
7
7
|
|
|
8
8
|
let ConfigurationResolver = class ConfigurationResolver {
|
|
9
9
|
resolve(r, o, e, n) {
|
package/dist/index19.mjs
CHANGED
package/dist/index2.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const constants = require('./index28.js');
|
|
6
|
-
const reflection = require('./
|
|
7
|
-
const schema = require('./
|
|
6
|
+
const reflection = require('./index36.js');
|
|
7
|
+
const schema = require('./index38.js');
|
|
8
8
|
|
|
9
9
|
const Assemblage = (e)=>{
|
|
10
10
|
return (r)=>{
|
package/dist/index2.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReflectFlags, ReflectValue } from './index28.mjs';
|
|
2
|
-
import { defineCustomMetadata } from './
|
|
3
|
-
import { validateDefinition } from './
|
|
2
|
+
import { defineCustomMetadata } from './index36.mjs';
|
|
3
|
+
import { validateDefinition } from './index38.mjs';
|
|
4
4
|
|
|
5
5
|
const Assemblage = (e)=>{
|
|
6
6
|
return (r)=>{
|
package/dist/index20.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const parameterDecoratorFactory = require('./index17.js');
|
|
6
|
-
const resolverStore = require('./
|
|
6
|
+
const resolverStore = require('./index37.js');
|
|
7
7
|
|
|
8
8
|
let DefinitionResolver = class DefinitionResolver {
|
|
9
9
|
resolve(e, r) {
|
package/dist/index20.mjs
CHANGED
package/dist/index21.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const parameterDecoratorFactory = require('./index17.js');
|
|
6
|
-
const resolverStore = require('./
|
|
6
|
+
const resolverStore = require('./index37.js');
|
|
7
7
|
|
|
8
8
|
let DisposeResolver = class DisposeResolver {
|
|
9
9
|
resolve(e, r, s) {
|
package/dist/index21.mjs
CHANGED
package/dist/index22.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const reflection = require('./
|
|
6
|
-
const debugLogger = require('./
|
|
5
|
+
const reflection = require('./index36.js');
|
|
6
|
+
const debugLogger = require('./index34.js');
|
|
7
7
|
const parameterDecoratorFactory = require('./index17.js');
|
|
8
8
|
const helpers = require('./index25.js');
|
|
9
|
-
const resolverStore = require('./
|
|
9
|
+
const resolverStore = require('./index37.js');
|
|
10
10
|
|
|
11
11
|
let UseResolver = class UseResolver {
|
|
12
12
|
resolve(o, t, a) {
|
package/dist/index22.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getOwnCustomMetadata } from './
|
|
2
|
-
import { DebugLogger } from './
|
|
1
|
+
import { getOwnCustomMetadata } from './index36.mjs';
|
|
2
|
+
import { DebugLogger } from './index34.mjs';
|
|
3
3
|
import { ParameterDecoratorFactory } from './index17.mjs';
|
|
4
4
|
import { getParamValueKey } from './index25.mjs';
|
|
5
|
-
import { ResolverStore } from './
|
|
5
|
+
import { ResolverStore } from './index37.mjs';
|
|
6
6
|
|
|
7
7
|
let UseResolver = class UseResolver {
|
|
8
8
|
resolve(o, t, a) {
|
package/dist/index23.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const reflection = require('./
|
|
6
|
-
const debugLogger = require('./
|
|
5
|
+
const reflection = require('./index36.js');
|
|
6
|
+
const debugLogger = require('./index34.js');
|
|
7
7
|
const parameterDecoratorFactory = require('./index17.js');
|
|
8
8
|
const helpers = require('./index25.js');
|
|
9
|
-
const resolverStore = require('./
|
|
9
|
+
const resolverStore = require('./index37.js');
|
|
10
10
|
|
|
11
11
|
let GlobalResolver = class GlobalResolver {
|
|
12
12
|
resolve(r, l, a) {
|
package/dist/index23.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getOwnCustomMetadata } from './
|
|
2
|
-
import { DebugLogger } from './
|
|
1
|
+
import { getOwnCustomMetadata } from './index36.mjs';
|
|
2
|
+
import { DebugLogger } from './index34.mjs';
|
|
3
3
|
import { ParameterDecoratorFactory } from './index17.mjs';
|
|
4
4
|
import { getParamValueKey } from './index25.mjs';
|
|
5
|
-
import { ResolverStore } from './
|
|
5
|
+
import { ResolverStore } from './index37.mjs';
|
|
6
6
|
|
|
7
7
|
let GlobalResolver = class GlobalResolver {
|
|
8
8
|
resolve(r, l, a) {
|
package/dist/index24.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const reflection = require('./
|
|
5
|
+
const reflection = require('./index36.js');
|
|
6
6
|
const parameterDecoratorFactory = require('./index17.js');
|
|
7
7
|
const helpers = require('./index25.js');
|
|
8
|
-
const resolverStore = require('./
|
|
8
|
+
const resolverStore = require('./index37.js');
|
|
9
9
|
|
|
10
10
|
let OptionalResolver = class OptionalResolver {
|
|
11
11
|
resolve(o, t, n) {
|
package/dist/index24.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { getParamTypes, getOwnCustomMetadata } from './
|
|
1
|
+
import { getParamTypes, getOwnCustomMetadata } from './index36.mjs';
|
|
2
2
|
import { ParameterDecoratorFactory } from './index17.mjs';
|
|
3
3
|
import { getParamValueKey } from './index25.mjs';
|
|
4
|
-
import { ResolverStore } from './
|
|
4
|
+
import { ResolverStore } from './index37.mjs';
|
|
5
5
|
|
|
6
6
|
let OptionalResolver = class OptionalResolver {
|
|
7
7
|
resolve(o, t, n) {
|
package/dist/index25.js
CHANGED
package/dist/index25.mjs
CHANGED
package/dist/index26.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const constants = require('./index28.js');
|
|
6
|
-
const reflection = require('./
|
|
6
|
+
const reflection = require('./index36.js');
|
|
7
7
|
const helpers = require('./index25.js');
|
|
8
8
|
const parameterDecoratorFactory = require('./index17.js');
|
|
9
9
|
const decorator = require('./index2.js');
|
package/dist/index26.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReflectParamTypes, ReflectValue } from './index28.mjs';
|
|
2
|
-
import { getOwnCustomMetadata, defineCustomMetadata } from './
|
|
2
|
+
import { getOwnCustomMetadata, defineCustomMetadata } from './index36.mjs';
|
|
3
3
|
import { getDecoratedParametersIndexes, getParamValueKey, getParamIndexKey } from './index25.mjs';
|
|
4
4
|
import { ParameterDecoratorFactory } from './index17.mjs';
|
|
5
5
|
import { decorateAssemblage } from './index2.mjs';
|
package/dist/index29.js
CHANGED
|
@@ -2,22 +2,163 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const hookManager = require('./index31.js');
|
|
6
|
+
const resolutionStrategies = require('./index42.js');
|
|
7
|
+
const debugLogger = require('./index34.js');
|
|
8
|
+
const core = require('@assemblerjs/core');
|
|
9
|
+
const use = require('./index43.js');
|
|
10
|
+
const inject = require('./index44.js');
|
|
11
|
+
const injectable = require('./index45.js');
|
|
6
12
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
function formatIdentifier(e) {
|
|
14
|
+
if (e === undefined) return 'undefined';
|
|
15
|
+
if (e === null) return 'null';
|
|
16
|
+
if (typeof e === 'function') {
|
|
17
|
+
if (e.name) return e.name;
|
|
18
|
+
if (e.constructor?.name && e.constructor.name !== 'Function') {
|
|
19
|
+
return e.constructor.name;
|
|
20
|
+
}
|
|
21
|
+
return 'AnonymousFunction';
|
|
22
|
+
}
|
|
23
|
+
if (typeof e === 'string') return e;
|
|
24
|
+
if (typeof e === 'symbol') return e.toString();
|
|
25
|
+
if (typeof e === 'number') return String(e);
|
|
26
|
+
if (typeof e === 'boolean') return String(e);
|
|
27
|
+
if (typeof e === 'object') {
|
|
28
|
+
if (e.name && typeof e.name === 'string') {
|
|
29
|
+
return e.name;
|
|
30
|
+
}
|
|
31
|
+
const t = e.constructor?.name;
|
|
32
|
+
if (t && t !== 'Object') {
|
|
33
|
+
return t;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const t = JSON.stringify(e);
|
|
37
|
+
if (t.length > 100) {
|
|
38
|
+
return t.substring(0, 100) + '...';
|
|
39
|
+
}
|
|
40
|
+
return t;
|
|
41
|
+
} catch {
|
|
42
|
+
return '[UnknownObject]';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return String(e);
|
|
46
|
+
}
|
|
47
|
+
function c(e) {
|
|
48
|
+
if (core.isClass(e)) {
|
|
49
|
+
const t = e.prototype && Object.getOwnPropertyNames(e.prototype).length > 1;
|
|
50
|
+
return t ? 'class' : 'class';
|
|
51
|
+
}
|
|
52
|
+
if (typeof e === 'function') return 'function';
|
|
53
|
+
if (typeof e === 'string') return 'string';
|
|
54
|
+
if (typeof e === 'symbol') return 'symbol';
|
|
55
|
+
if (typeof e === 'object' && e !== null) return 'object';
|
|
56
|
+
return 'unknown';
|
|
57
|
+
}
|
|
58
|
+
class InjectableManager {
|
|
59
|
+
setContexts(e, t) {
|
|
60
|
+
this.privateContext = e;
|
|
61
|
+
this.publicContext = t;
|
|
62
|
+
}
|
|
63
|
+
register(i, o = false) {
|
|
64
|
+
const a = debugLogger.DebugLogger.getInstance();
|
|
65
|
+
const c = o === true ? use.resolveInstanceInjectionTuple(i) : inject.resolveInjectionTuple(i);
|
|
66
|
+
if (this.has(c.identifier)) {
|
|
67
|
+
const e = `An assemblage is already registered with identifier '${c.identifier.name}'.`;
|
|
68
|
+
a.log('error', 'Duplicate registration', {
|
|
69
|
+
identifier: c.identifier.name,
|
|
70
|
+
error: e
|
|
71
|
+
});
|
|
72
|
+
throw new Error(e);
|
|
73
|
+
}
|
|
74
|
+
const f = injectable.Injectable.of(c, this.privateContext, this.publicContext);
|
|
75
|
+
a.logRegistration(f);
|
|
76
|
+
this.injectables.set(f.identifier, f);
|
|
77
|
+
if (f.concrete) {
|
|
78
|
+
hookManager.HookManager.callHook(f.concrete, 'onRegister', this.publicContext, f.configuration);
|
|
79
|
+
}
|
|
80
|
+
return f;
|
|
81
|
+
}
|
|
82
|
+
has(e) {
|
|
83
|
+
return this.injectables.has(e);
|
|
84
|
+
}
|
|
85
|
+
require(e, t, n) {
|
|
86
|
+
if (!this.injectables.has(e)) {
|
|
87
|
+
const r = this.resolvingStack.has(e);
|
|
88
|
+
const i = r ? 'Circular dependency detected' : 'Dependency not registered';
|
|
89
|
+
const o = formatIdentifier(e);
|
|
90
|
+
const a = c(e);
|
|
91
|
+
const f = t?.__paramIndex;
|
|
92
|
+
const u = t?.__paramCount;
|
|
93
|
+
const l = t?.__expectedType;
|
|
94
|
+
const g = r ? `Circular dependency detected: '${o}' is already being resolved.` : `Dependency '${o}' has not been registered (Class/Service not found in current assemblages).`;
|
|
95
|
+
const d = {
|
|
96
|
+
identifier: o,
|
|
97
|
+
caller: n ? formatIdentifier(n) : 'unknown',
|
|
98
|
+
type: a,
|
|
99
|
+
error: g
|
|
100
|
+
};
|
|
101
|
+
if (f !== undefined) {
|
|
102
|
+
d.paramIndex = f;
|
|
103
|
+
}
|
|
104
|
+
if (u !== undefined) {
|
|
105
|
+
d.paramCount = u;
|
|
106
|
+
}
|
|
107
|
+
if (l !== undefined) {
|
|
108
|
+
const e = l?.name || formatIdentifier(l);
|
|
109
|
+
d.expectedType = e;
|
|
110
|
+
}
|
|
111
|
+
debugLogger.DebugLogger.getInstance().log('error', i, d);
|
|
112
|
+
throw new Error(g);
|
|
113
|
+
}
|
|
114
|
+
const r = this.injectables.get(e);
|
|
115
|
+
this.resolvingStack.add(r.identifier);
|
|
116
|
+
try {
|
|
117
|
+
if (r.isSingleton) {
|
|
118
|
+
return this.singletonStrategy.resolve(r, t);
|
|
119
|
+
} else {
|
|
120
|
+
return this.transientStrategy.resolve(r, t);
|
|
121
|
+
}
|
|
122
|
+
} finally{
|
|
123
|
+
this.resolvingStack.delete(r.identifier);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
concrete(e) {
|
|
127
|
+
const t = this.injectables.get(e);
|
|
128
|
+
if (t) return t.concrete;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
tagged(...e) {
|
|
132
|
+
const t = [];
|
|
133
|
+
for (const n of e){
|
|
134
|
+
for (const [e, r] of this.injectables){
|
|
135
|
+
if (r.tags.includes(n)) t.push(r.build());
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return t;
|
|
139
|
+
}
|
|
140
|
+
dispose() {
|
|
141
|
+
for (const [e, t] of this.injectables){
|
|
142
|
+
t.dispose();
|
|
143
|
+
}
|
|
144
|
+
this.resolvingStack.clear();
|
|
145
|
+
}
|
|
146
|
+
get size() {
|
|
147
|
+
return this.injectables.size;
|
|
148
|
+
}
|
|
149
|
+
getRegisteredIdentifiers() {
|
|
150
|
+
return Array.from(this.injectables.keys()).map((e)=>e?.name || String(e));
|
|
151
|
+
}
|
|
152
|
+
getInjectables() {
|
|
153
|
+
return this.injectables;
|
|
154
|
+
}
|
|
155
|
+
constructor(){
|
|
156
|
+
this.injectables = new Map();
|
|
157
|
+
this.resolvingStack = new Set();
|
|
158
|
+
this.singletonStrategy = new resolutionStrategies.SingletonStrategy();
|
|
159
|
+
this.transientStrategy = new resolutionStrategies.TransientStrategy();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
19
162
|
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.getOwnCustomMetadata = getOwnCustomMetadata;
|
|
23
|
-
exports.getParamTypes = getParamTypes;
|
|
163
|
+
exports.InjectableManager = InjectableManager;
|
|
164
|
+
exports.formatIdentifier = formatIdentifier;
|
package/dist/index29.mjs
CHANGED
|
@@ -1,16 +1,159 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HookManager } from './index31.mjs';
|
|
2
|
+
import { SingletonStrategy, TransientStrategy } from './index42.mjs';
|
|
3
|
+
import { DebugLogger } from './index34.mjs';
|
|
4
|
+
import { isClass } from '@assemblerjs/core';
|
|
5
|
+
import { resolveInstanceInjectionTuple } from './index43.mjs';
|
|
6
|
+
import { resolveInjectionTuple } from './index44.mjs';
|
|
7
|
+
import { Injectable } from './index45.mjs';
|
|
2
8
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
function formatIdentifier(e) {
|
|
10
|
+
if (e === undefined) return 'undefined';
|
|
11
|
+
if (e === null) return 'null';
|
|
12
|
+
if (typeof e === 'function') {
|
|
13
|
+
if (e.name) return e.name;
|
|
14
|
+
if (e.constructor?.name && e.constructor.name !== 'Function') {
|
|
15
|
+
return e.constructor.name;
|
|
16
|
+
}
|
|
17
|
+
return 'AnonymousFunction';
|
|
18
|
+
}
|
|
19
|
+
if (typeof e === 'string') return e;
|
|
20
|
+
if (typeof e === 'symbol') return e.toString();
|
|
21
|
+
if (typeof e === 'number') return String(e);
|
|
22
|
+
if (typeof e === 'boolean') return String(e);
|
|
23
|
+
if (typeof e === 'object') {
|
|
24
|
+
if (e.name && typeof e.name === 'string') {
|
|
25
|
+
return e.name;
|
|
26
|
+
}
|
|
27
|
+
const t = e.constructor?.name;
|
|
28
|
+
if (t && t !== 'Object') {
|
|
29
|
+
return t;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const t = JSON.stringify(e);
|
|
33
|
+
if (t.length > 100) {
|
|
34
|
+
return t.substring(0, 100) + '...';
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
} catch {
|
|
38
|
+
return '[UnknownObject]';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return String(e);
|
|
42
|
+
}
|
|
43
|
+
function c(e) {
|
|
44
|
+
if (isClass(e)) {
|
|
45
|
+
const t = e.prototype && Object.getOwnPropertyNames(e.prototype).length > 1;
|
|
46
|
+
return t ? 'class' : 'class';
|
|
47
|
+
}
|
|
48
|
+
if (typeof e === 'function') return 'function';
|
|
49
|
+
if (typeof e === 'string') return 'string';
|
|
50
|
+
if (typeof e === 'symbol') return 'symbol';
|
|
51
|
+
if (typeof e === 'object' && e !== null) return 'object';
|
|
52
|
+
return 'unknown';
|
|
53
|
+
}
|
|
54
|
+
class InjectableManager {
|
|
55
|
+
setContexts(e, t) {
|
|
56
|
+
this.privateContext = e;
|
|
57
|
+
this.publicContext = t;
|
|
58
|
+
}
|
|
59
|
+
register(i, o = false) {
|
|
60
|
+
const a = DebugLogger.getInstance();
|
|
61
|
+
const c = o === true ? resolveInstanceInjectionTuple(i) : resolveInjectionTuple(i);
|
|
62
|
+
if (this.has(c.identifier)) {
|
|
63
|
+
const e = `An assemblage is already registered with identifier '${c.identifier.name}'.`;
|
|
64
|
+
a.log('error', 'Duplicate registration', {
|
|
65
|
+
identifier: c.identifier.name,
|
|
66
|
+
error: e
|
|
67
|
+
});
|
|
68
|
+
throw new Error(e);
|
|
69
|
+
}
|
|
70
|
+
const f = Injectable.of(c, this.privateContext, this.publicContext);
|
|
71
|
+
a.logRegistration(f);
|
|
72
|
+
this.injectables.set(f.identifier, f);
|
|
73
|
+
if (f.concrete) {
|
|
74
|
+
HookManager.callHook(f.concrete, 'onRegister', this.publicContext, f.configuration);
|
|
75
|
+
}
|
|
76
|
+
return f;
|
|
77
|
+
}
|
|
78
|
+
has(e) {
|
|
79
|
+
return this.injectables.has(e);
|
|
80
|
+
}
|
|
81
|
+
require(e, t, n) {
|
|
82
|
+
if (!this.injectables.has(e)) {
|
|
83
|
+
const r = this.resolvingStack.has(e);
|
|
84
|
+
const i = r ? 'Circular dependency detected' : 'Dependency not registered';
|
|
85
|
+
const o = formatIdentifier(e);
|
|
86
|
+
const a = c(e);
|
|
87
|
+
const f = t?.__paramIndex;
|
|
88
|
+
const u = t?.__paramCount;
|
|
89
|
+
const l = t?.__expectedType;
|
|
90
|
+
const g = r ? `Circular dependency detected: '${o}' is already being resolved.` : `Dependency '${o}' has not been registered (Class/Service not found in current assemblages).`;
|
|
91
|
+
const d = {
|
|
92
|
+
identifier: o,
|
|
93
|
+
caller: n ? formatIdentifier(n) : 'unknown',
|
|
94
|
+
type: a,
|
|
95
|
+
error: g
|
|
96
|
+
};
|
|
97
|
+
if (f !== undefined) {
|
|
98
|
+
d.paramIndex = f;
|
|
99
|
+
}
|
|
100
|
+
if (u !== undefined) {
|
|
101
|
+
d.paramCount = u;
|
|
102
|
+
}
|
|
103
|
+
if (l !== undefined) {
|
|
104
|
+
const e = l?.name || formatIdentifier(l);
|
|
105
|
+
d.expectedType = e;
|
|
106
|
+
}
|
|
107
|
+
DebugLogger.getInstance().log('error', i, d);
|
|
108
|
+
throw new Error(g);
|
|
109
|
+
}
|
|
110
|
+
const r = this.injectables.get(e);
|
|
111
|
+
this.resolvingStack.add(r.identifier);
|
|
112
|
+
try {
|
|
113
|
+
if (r.isSingleton) {
|
|
114
|
+
return this.singletonStrategy.resolve(r, t);
|
|
115
|
+
} else {
|
|
116
|
+
return this.transientStrategy.resolve(r, t);
|
|
117
|
+
}
|
|
118
|
+
} finally{
|
|
119
|
+
this.resolvingStack.delete(r.identifier);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
concrete(e) {
|
|
123
|
+
const t = this.injectables.get(e);
|
|
124
|
+
if (t) return t.concrete;
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
tagged(...e) {
|
|
128
|
+
const t = [];
|
|
129
|
+
for (const n of e){
|
|
130
|
+
for (const [e, r] of this.injectables){
|
|
131
|
+
if (r.tags.includes(n)) t.push(r.build());
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return t;
|
|
135
|
+
}
|
|
136
|
+
dispose() {
|
|
137
|
+
for (const [e, t] of this.injectables){
|
|
138
|
+
t.dispose();
|
|
139
|
+
}
|
|
140
|
+
this.resolvingStack.clear();
|
|
141
|
+
}
|
|
142
|
+
get size() {
|
|
143
|
+
return this.injectables.size;
|
|
144
|
+
}
|
|
145
|
+
getRegisteredIdentifiers() {
|
|
146
|
+
return Array.from(this.injectables.keys()).map((e)=>e?.name || String(e));
|
|
147
|
+
}
|
|
148
|
+
getInjectables() {
|
|
149
|
+
return this.injectables;
|
|
150
|
+
}
|
|
151
|
+
constructor(){
|
|
152
|
+
this.injectables = new Map();
|
|
153
|
+
this.resolvingStack = new Set();
|
|
154
|
+
this.singletonStrategy = new SingletonStrategy();
|
|
155
|
+
this.transientStrategy = new TransientStrategy();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
15
158
|
|
|
16
|
-
export {
|
|
159
|
+
export { InjectableManager, formatIdentifier };
|