assemblerjs 1.1.24 → 1.1.25

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 (78) hide show
  1. package/dist/index.d.ts +118 -0
  2. package/dist/index.js +15 -13
  3. package/dist/index.mjs +14 -13
  4. package/dist/index11.js +3 -3
  5. package/dist/index11.mjs +3 -3
  6. package/dist/index12.js +2 -2
  7. package/dist/index12.mjs +2 -2
  8. package/dist/index13.js +1 -1
  9. package/dist/index13.mjs +1 -1
  10. package/dist/index14.js +144 -3
  11. package/dist/index14.mjs +144 -3
  12. package/dist/index15.js +4 -22
  13. package/dist/index15.mjs +4 -22
  14. package/dist/index16.js +20 -9
  15. package/dist/index16.mjs +20 -9
  16. package/dist/index17.js +9 -87
  17. package/dist/index17.mjs +9 -87
  18. package/dist/index18.js +88 -16
  19. package/dist/index18.mjs +88 -16
  20. package/dist/index19.js +10 -10
  21. package/dist/index19.mjs +10 -10
  22. package/dist/index2.js +3 -3
  23. package/dist/index2.mjs +3 -3
  24. package/dist/index20.js +10 -10
  25. package/dist/index20.mjs +10 -10
  26. package/dist/index21.js +10 -10
  27. package/dist/index21.mjs +10 -10
  28. package/dist/index22.js +11 -26
  29. package/dist/index22.mjs +11 -25
  30. package/dist/index23.js +22 -22
  31. package/dist/index23.mjs +21 -21
  32. package/dist/index24.js +25 -19
  33. package/dist/index24.mjs +24 -19
  34. package/dist/index25.js +23 -25
  35. package/dist/index25.mjs +23 -21
  36. package/dist/index26.js +26 -46
  37. package/dist/index26.mjs +22 -45
  38. package/dist/index27.js +50 -2
  39. package/dist/index27.mjs +47 -2
  40. package/dist/index28.js +2 -19
  41. package/dist/index28.mjs +2 -15
  42. package/dist/index29.js +17 -159
  43. package/dist/index29.mjs +15 -158
  44. package/dist/index3.js +2 -2
  45. package/dist/index3.mjs +2 -2
  46. package/dist/index30.js +34 -44
  47. package/dist/index30.mjs +33 -44
  48. package/dist/index31.js +145 -66
  49. package/dist/index31.mjs +145 -67
  50. package/dist/index32.js +45 -50
  51. package/dist/index32.mjs +45 -50
  52. package/dist/index33.js +76 -28
  53. package/dist/index33.mjs +76 -28
  54. package/dist/index34.js +50 -170
  55. package/dist/index34.mjs +50 -170
  56. package/dist/index35.js +28 -60
  57. package/dist/index35.mjs +28 -60
  58. package/dist/index36.js +174 -16
  59. package/dist/index36.mjs +174 -13
  60. package/dist/index37.js +57 -16
  61. package/dist/index37.mjs +57 -16
  62. package/dist/index38.js +13 -103
  63. package/dist/index38.mjs +10 -101
  64. package/dist/index39.js +20 -38
  65. package/dist/index39.mjs +20 -37
  66. package/dist/index4.js +7 -7
  67. package/dist/index4.mjs +7 -7
  68. package/dist/index40.js +101 -117
  69. package/dist/index40.mjs +99 -117
  70. package/dist/index45.js +6 -6
  71. package/dist/index45.mjs +6 -6
  72. package/dist/index49.js +1 -1
  73. package/dist/index49.mjs +1 -1
  74. package/dist/index50.js +2 -2
  75. package/dist/index50.mjs +2 -2
  76. package/dist/index51.js +2 -2
  77. package/dist/index51.mjs +2 -2
  78. package/package.json +1 -1
package/dist/index35.js CHANGED
@@ -2,68 +2,36 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- let AbstractCycleDetector = class AbstractCycleDetector {
6
- };
7
- let NoOpCycleDetector = class NoOpCycleDetector extends AbstractCycleDetector {
8
- detect() {
9
- return [];
5
+ class ContextProvider {
6
+ createPublicContext() {
7
+ return {
8
+ has: this.assembler.has.bind(this.assembler),
9
+ require: this.assembler.require.bind(this.assembler),
10
+ concrete: this.assembler.concrete.bind(this.assembler),
11
+ tagged: this.assembler.tagged.bind(this.assembler),
12
+ dispose: this.assembler.dispose.bind(this.assembler),
13
+ global: this.assembler.global.bind(this.assembler),
14
+ on: this.assembler.on.bind(this.assembler),
15
+ once: this.assembler.once.bind(this.assembler),
16
+ off: this.assembler.off.bind(this.assembler),
17
+ events: this.assembler.channels
18
+ };
10
19
  }
11
- };
12
- let ActiveCycleDetector = class ActiveCycleDetector extends AbstractCycleDetector {
13
- detect(e, t) {
14
- const c = [];
15
- const s = new Set();
16
- for (const [n] of e){
17
- if (s.has(n)) continue;
18
- const r = [];
19
- const o = new Set();
20
- if (this.hasCycleDFS(n, r, o, s, e)) {
21
- const e = r.findIndex((e)=>e === n);
22
- if (e >= 0) {
23
- const s = r.slice(e).map((e)=>t(e));
24
- c.push({
25
- cycle: s,
26
- path: s.join(' → ')
27
- });
28
- }
29
- }
30
- }
31
- return c;
20
+ createPrivateContext(s) {
21
+ return {
22
+ ...s,
23
+ register: this.assembler.register.bind(this.assembler),
24
+ use: this.assembler.use.bind(this.assembler),
25
+ addGlobal: this.assembler.addGlobal.bind(this.assembler),
26
+ prepareInitHook: this.assembler.prepareInitHook.bind(this.assembler),
27
+ emit: this.assembler.emit.bind(this.assembler),
28
+ addChannels: this.assembler.addChannels.bind(this.assembler),
29
+ removeChannels: this.assembler.removeChannels.bind(this.assembler)
30
+ };
32
31
  }
33
- hasCycleDFS(e, t, c, s, n) {
34
- if (c.has(e)) {
35
- t.push(e);
36
- return true;
37
- }
38
- if (s.has(e)) {
39
- return false;
40
- }
41
- t.push(e);
42
- c.add(e);
43
- const r = n.get(e);
44
- if (r?.dependencies && r.dependencies.length > 0) {
45
- for (const e of r.dependencies){
46
- if (this.hasCycleDFS(e, t, c, s, n)) {
47
- return true;
48
- }
49
- }
50
- }
51
- c.delete(e);
52
- s.add(e);
53
- return false;
54
- }
55
- };
56
- class CycleDetector {
57
- static getInstance() {
58
- return CycleDetector.instance;
59
- }
60
- static enable() {
61
- CycleDetector.instance = new ActiveCycleDetector();
62
- }
63
- static disable() {
64
- CycleDetector.instance = new NoOpCycleDetector();
32
+ constructor(s){
33
+ this.assembler = s;
65
34
  }
66
35
  }
67
- CycleDetector.instance = new NoOpCycleDetector();
68
36
 
69
- exports.CycleDetector = CycleDetector;
37
+ exports.ContextProvider = ContextProvider;
package/dist/index35.mjs CHANGED
@@ -1,65 +1,33 @@
1
- let AbstractCycleDetector = class AbstractCycleDetector {
2
- };
3
- let NoOpCycleDetector = class NoOpCycleDetector extends AbstractCycleDetector {
4
- detect() {
5
- return [];
1
+ class ContextProvider {
2
+ createPublicContext() {
3
+ return {
4
+ has: this.assembler.has.bind(this.assembler),
5
+ require: this.assembler.require.bind(this.assembler),
6
+ concrete: this.assembler.concrete.bind(this.assembler),
7
+ tagged: this.assembler.tagged.bind(this.assembler),
8
+ dispose: this.assembler.dispose.bind(this.assembler),
9
+ global: this.assembler.global.bind(this.assembler),
10
+ on: this.assembler.on.bind(this.assembler),
11
+ once: this.assembler.once.bind(this.assembler),
12
+ off: this.assembler.off.bind(this.assembler),
13
+ events: this.assembler.channels
14
+ };
6
15
  }
7
- };
8
- let ActiveCycleDetector = class ActiveCycleDetector extends AbstractCycleDetector {
9
- detect(e, t) {
10
- const c = [];
11
- const s = new Set();
12
- for (const [n] of e){
13
- if (s.has(n)) continue;
14
- const r = [];
15
- const o = new Set();
16
- if (this.hasCycleDFS(n, r, o, s, e)) {
17
- const e = r.findIndex((e)=>e === n);
18
- if (e >= 0) {
19
- const s = r.slice(e).map((e)=>t(e));
20
- c.push({
21
- cycle: s,
22
- path: s.join(' → ')
23
- });
24
- }
25
- }
26
- }
27
- return c;
16
+ createPrivateContext(s) {
17
+ return {
18
+ ...s,
19
+ register: this.assembler.register.bind(this.assembler),
20
+ use: this.assembler.use.bind(this.assembler),
21
+ addGlobal: this.assembler.addGlobal.bind(this.assembler),
22
+ prepareInitHook: this.assembler.prepareInitHook.bind(this.assembler),
23
+ emit: this.assembler.emit.bind(this.assembler),
24
+ addChannels: this.assembler.addChannels.bind(this.assembler),
25
+ removeChannels: this.assembler.removeChannels.bind(this.assembler)
26
+ };
28
27
  }
29
- hasCycleDFS(e, t, c, s, n) {
30
- if (c.has(e)) {
31
- t.push(e);
32
- return true;
33
- }
34
- if (s.has(e)) {
35
- return false;
36
- }
37
- t.push(e);
38
- c.add(e);
39
- const r = n.get(e);
40
- if (r?.dependencies && r.dependencies.length > 0) {
41
- for (const e of r.dependencies){
42
- if (this.hasCycleDFS(e, t, c, s, n)) {
43
- return true;
44
- }
45
- }
46
- }
47
- c.delete(e);
48
- s.add(e);
49
- return false;
50
- }
51
- };
52
- class CycleDetector {
53
- static getInstance() {
54
- return CycleDetector.instance;
55
- }
56
- static enable() {
57
- CycleDetector.instance = new ActiveCycleDetector();
58
- }
59
- static disable() {
60
- CycleDetector.instance = new NoOpCycleDetector();
28
+ constructor(s){
29
+ this.assembler = s;
61
30
  }
62
31
  }
63
- CycleDetector.instance = new NoOpCycleDetector();
64
32
 
65
- export { CycleDetector };
33
+ export { ContextProvider };
package/dist/index36.js CHANGED
@@ -2,22 +2,180 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const constants = require('./index28.js');
6
-
7
- const defineCustomMetadata = (t, o, n)=>{
8
- Reflect.defineMetadata(`${constants.ReflectPrefix}${t}${constants.ReflectSuffix}`, o, n);
9
- };
10
- const getCustomMetadata = (t, o)=>{
11
- return Reflect.getMetadata(`${constants.ReflectPrefix}${t}${constants.ReflectSuffix}`, o);
12
- };
13
- const getOwnCustomMetadata = (t, o)=>{
14
- return Reflect.getOwnMetadata(`${constants.ReflectPrefix}${t}${constants.ReflectSuffix}`, o);
5
+ function e(e) {
6
+ if (e === undefined) return 'undefined';
7
+ if (e === null) return 'null';
8
+ if (typeof e === 'function') {
9
+ if (e.name) return e.name;
10
+ if (e.constructor?.name && e.constructor.name !== 'Function') {
11
+ return e.constructor.name;
12
+ }
13
+ return 'AnonymousFunction';
14
+ }
15
+ if (typeof e === 'object') {
16
+ const o = e.constructor?.name;
17
+ if (o && o !== 'Object') {
18
+ return o;
19
+ }
20
+ if (e.name && typeof e.name === 'string') {
21
+ return e.name;
22
+ }
23
+ return '[Object]';
24
+ }
25
+ return String(e);
26
+ }
27
+ let NoOpDebugLogger = class NoOpDebugLogger {
28
+ configure(e) {}
29
+ log(e, o, t) {}
30
+ logBuildStart(e) {}
31
+ logBuildEnd(e, o) {}
32
+ logRegistration(e) {}
33
+ logHook(e, o, t) {}
34
+ logPhaseStart(e, o) {}
35
+ logPhaseEnd(e, o, t) {}
36
+ logResolution(e, o, t) {}
37
+ logConstruction(e) {}
38
+ logInjection(e, o) {}
15
39
  };
16
- const getParamTypes = (e)=>{
17
- return Reflect.getMetadata(constants.ReflectParamTypes, e) || [];
40
+ let ActiveDebugLogger = class ActiveDebugLogger {
41
+ configure(e) {
42
+ this.options = {
43
+ ...this.options,
44
+ ...e,
45
+ logPhases: {
46
+ ...this.options.logPhases,
47
+ ...e.logPhases || {}
48
+ }
49
+ };
50
+ }
51
+ logBuildStart(e) {
52
+ this.log('info', 'Build started', {
53
+ entry: e.name
54
+ });
55
+ }
56
+ logBuildEnd(e, o) {
57
+ const t = {
58
+ entry: e.name
59
+ };
60
+ if (o !== undefined) t.duration = `${o.toFixed(2)}ms`;
61
+ this.log('info', 'Build completed', t);
62
+ }
63
+ logRegistration(o) {
64
+ if (!this.shouldLog('registration')) return;
65
+ this.log('info', 'Registration', {
66
+ identifier: e(o.identifier),
67
+ isSingleton: o.isSingleton,
68
+ dependencies: o.dependencies.map((o)=>e(o)),
69
+ tags: o.tags
70
+ });
71
+ }
72
+ logHook(o, t, n) {
73
+ if (!this.shouldLog('hooks')) return;
74
+ const i = this.options.logTimings ? performance.now() : 0;
75
+ this.log('info', `Hook: ${o}`, {
76
+ target: e(t),
77
+ config: n
78
+ });
79
+ if (this.options.logTimings) {
80
+ return ()=>{
81
+ const e = performance.now() - i;
82
+ this.log('info', `Hook: ${o} completed`, {
83
+ duration: `${e.toFixed(2)}ms`
84
+ });
85
+ };
86
+ }
87
+ }
88
+ logPhaseStart(e, o) {
89
+ this.log('info', `Phase: ${e} started`, o);
90
+ }
91
+ logPhaseEnd(e, o, t) {
92
+ const n = o !== undefined ? {
93
+ duration: `${o.toFixed(2)}ms`
94
+ } : {};
95
+ if (t) {
96
+ Object.assign(n, t);
97
+ }
98
+ this.log('info', `Phase: ${e} ended`, Object.keys(n).length > 0 ? n : undefined);
99
+ }
100
+ logResolution(e, o, t) {
101
+ if (!this.shouldLog('resolution')) return;
102
+ this.log('info', `Resolving: ${e}`, {
103
+ strategy: `${o} strategy`,
104
+ cache: t ? 'hit' : 'miss'
105
+ });
106
+ }
107
+ logConstruction(e) {
108
+ if (!this.shouldLog('construction')) return;
109
+ this.log('info', `Constructing: ${e}`);
110
+ }
111
+ logInjection(e, o) {
112
+ if (!this.shouldLog(e === 'use' ? 'injectionUse' : 'injectionGlobal')) return;
113
+ this.log('info', `Injecting: @${e === 'use' ? 'Use' : 'Global'}`, o);
114
+ }
115
+ shouldLog(e) {
116
+ return !this.options.logPhases || this.options.logPhases[e] !== false;
117
+ }
118
+ log(e, o, t) {
119
+ if (this.options.logger) {
120
+ this.options.logger(e, o, t);
121
+ } else {
122
+ const n = `[Assembler:${e}]`;
123
+ const i = this.options.useColors !== false ? this.colorize(e, n) : n;
124
+ if (t) {
125
+ console.log(`${i} ${o}`, t);
126
+ } else {
127
+ console.log(`${i} ${o}`);
128
+ }
129
+ }
130
+ }
131
+ colorize(e, o) {
132
+ const t = {
133
+ info: '\x1b[36m',
134
+ warn: '\x1b[33m',
135
+ error: '\x1b[31m',
136
+ reset: '\x1b[0m'
137
+ };
138
+ const n = t[e] || t.info;
139
+ return `${n}${o}${t.reset}`;
140
+ }
141
+ constructor(){
142
+ this.options = {
143
+ enabled: true,
144
+ logPhases: {
145
+ registration: true,
146
+ registrationUse: true,
147
+ registrationGlobals: true,
148
+ resolution: true,
149
+ construction: true,
150
+ hooks: true,
151
+ cache: true,
152
+ injectionUse: true,
153
+ injectionGlobal: true
154
+ },
155
+ logTimings: false,
156
+ logDependencyTree: true,
157
+ useColors: true
158
+ };
159
+ }
18
160
  };
161
+ class DebugLogger {
162
+ static getInstance() {
163
+ return DebugLogger.instance;
164
+ }
165
+ static enable(e) {
166
+ if (e?.enabled === false) {
167
+ DebugLogger.instance = new NoOpDebugLogger();
168
+ return;
169
+ }
170
+ DebugLogger.instance = new ActiveDebugLogger();
171
+ if (e) {
172
+ DebugLogger.instance.configure(e);
173
+ }
174
+ }
175
+ static disable() {
176
+ DebugLogger.instance = new NoOpDebugLogger();
177
+ }
178
+ }
179
+ DebugLogger.instance = new NoOpDebugLogger();
19
180
 
20
- exports.defineCustomMetadata = defineCustomMetadata;
21
- exports.getCustomMetadata = getCustomMetadata;
22
- exports.getOwnCustomMetadata = getOwnCustomMetadata;
23
- exports.getParamTypes = getParamTypes;
181
+ exports.DebugLogger = DebugLogger;
package/dist/index36.mjs CHANGED
@@ -1,16 +1,177 @@
1
- import { ReflectPrefix, ReflectSuffix, ReflectParamTypes } from './index28.mjs';
2
-
3
- const defineCustomMetadata = (t, o, n)=>{
4
- Reflect.defineMetadata(`${ReflectPrefix}${t}${ReflectSuffix}`, o, n);
5
- };
6
- const getCustomMetadata = (t, o)=>{
7
- return Reflect.getMetadata(`${ReflectPrefix}${t}${ReflectSuffix}`, o);
8
- };
9
- const getOwnCustomMetadata = (t, o)=>{
10
- return Reflect.getOwnMetadata(`${ReflectPrefix}${t}${ReflectSuffix}`, o);
1
+ function e(e) {
2
+ if (e === undefined) return 'undefined';
3
+ if (e === null) return 'null';
4
+ if (typeof e === 'function') {
5
+ if (e.name) return e.name;
6
+ if (e.constructor?.name && e.constructor.name !== 'Function') {
7
+ return e.constructor.name;
8
+ }
9
+ return 'AnonymousFunction';
10
+ }
11
+ if (typeof e === 'object') {
12
+ const o = e.constructor?.name;
13
+ if (o && o !== 'Object') {
14
+ return o;
15
+ }
16
+ if (e.name && typeof e.name === 'string') {
17
+ return e.name;
18
+ }
19
+ return '[Object]';
20
+ }
21
+ return String(e);
22
+ }
23
+ let NoOpDebugLogger = class NoOpDebugLogger {
24
+ configure(e) {}
25
+ log(e, o, t) {}
26
+ logBuildStart(e) {}
27
+ logBuildEnd(e, o) {}
28
+ logRegistration(e) {}
29
+ logHook(e, o, t) {}
30
+ logPhaseStart(e, o) {}
31
+ logPhaseEnd(e, o, t) {}
32
+ logResolution(e, o, t) {}
33
+ logConstruction(e) {}
34
+ logInjection(e, o) {}
11
35
  };
12
- const getParamTypes = (e)=>{
13
- return Reflect.getMetadata(ReflectParamTypes, e) || [];
36
+ let ActiveDebugLogger = class ActiveDebugLogger {
37
+ configure(e) {
38
+ this.options = {
39
+ ...this.options,
40
+ ...e,
41
+ logPhases: {
42
+ ...this.options.logPhases,
43
+ ...e.logPhases || {}
44
+ }
45
+ };
46
+ }
47
+ logBuildStart(e) {
48
+ this.log('info', 'Build started', {
49
+ entry: e.name
50
+ });
51
+ }
52
+ logBuildEnd(e, o) {
53
+ const t = {
54
+ entry: e.name
55
+ };
56
+ if (o !== undefined) t.duration = `${o.toFixed(2)}ms`;
57
+ this.log('info', 'Build completed', t);
58
+ }
59
+ logRegistration(o) {
60
+ if (!this.shouldLog('registration')) return;
61
+ this.log('info', 'Registration', {
62
+ identifier: e(o.identifier),
63
+ isSingleton: o.isSingleton,
64
+ dependencies: o.dependencies.map((o)=>e(o)),
65
+ tags: o.tags
66
+ });
67
+ }
68
+ logHook(o, t, n) {
69
+ if (!this.shouldLog('hooks')) return;
70
+ const i = this.options.logTimings ? performance.now() : 0;
71
+ this.log('info', `Hook: ${o}`, {
72
+ target: e(t),
73
+ config: n
74
+ });
75
+ if (this.options.logTimings) {
76
+ return ()=>{
77
+ const e = performance.now() - i;
78
+ this.log('info', `Hook: ${o} completed`, {
79
+ duration: `${e.toFixed(2)}ms`
80
+ });
81
+ };
82
+ }
83
+ }
84
+ logPhaseStart(e, o) {
85
+ this.log('info', `Phase: ${e} started`, o);
86
+ }
87
+ logPhaseEnd(e, o, t) {
88
+ const n = o !== undefined ? {
89
+ duration: `${o.toFixed(2)}ms`
90
+ } : {};
91
+ if (t) {
92
+ Object.assign(n, t);
93
+ }
94
+ this.log('info', `Phase: ${e} ended`, Object.keys(n).length > 0 ? n : undefined);
95
+ }
96
+ logResolution(e, o, t) {
97
+ if (!this.shouldLog('resolution')) return;
98
+ this.log('info', `Resolving: ${e}`, {
99
+ strategy: `${o} strategy`,
100
+ cache: t ? 'hit' : 'miss'
101
+ });
102
+ }
103
+ logConstruction(e) {
104
+ if (!this.shouldLog('construction')) return;
105
+ this.log('info', `Constructing: ${e}`);
106
+ }
107
+ logInjection(e, o) {
108
+ if (!this.shouldLog(e === 'use' ? 'injectionUse' : 'injectionGlobal')) return;
109
+ this.log('info', `Injecting: @${e === 'use' ? 'Use' : 'Global'}`, o);
110
+ }
111
+ shouldLog(e) {
112
+ return !this.options.logPhases || this.options.logPhases[e] !== false;
113
+ }
114
+ log(e, o, t) {
115
+ if (this.options.logger) {
116
+ this.options.logger(e, o, t);
117
+ } else {
118
+ const n = `[Assembler:${e}]`;
119
+ const i = this.options.useColors !== false ? this.colorize(e, n) : n;
120
+ if (t) {
121
+ console.log(`${i} ${o}`, t);
122
+ } else {
123
+ console.log(`${i} ${o}`);
124
+ }
125
+ }
126
+ }
127
+ colorize(e, o) {
128
+ const t = {
129
+ info: '\x1b[36m',
130
+ warn: '\x1b[33m',
131
+ error: '\x1b[31m',
132
+ reset: '\x1b[0m'
133
+ };
134
+ const n = t[e] || t.info;
135
+ return `${n}${o}${t.reset}`;
136
+ }
137
+ constructor(){
138
+ this.options = {
139
+ enabled: true,
140
+ logPhases: {
141
+ registration: true,
142
+ registrationUse: true,
143
+ registrationGlobals: true,
144
+ resolution: true,
145
+ construction: true,
146
+ hooks: true,
147
+ cache: true,
148
+ injectionUse: true,
149
+ injectionGlobal: true
150
+ },
151
+ logTimings: false,
152
+ logDependencyTree: true,
153
+ useColors: true
154
+ };
155
+ }
14
156
  };
157
+ class DebugLogger {
158
+ static getInstance() {
159
+ return DebugLogger.instance;
160
+ }
161
+ static enable(e) {
162
+ if (e?.enabled === false) {
163
+ DebugLogger.instance = new NoOpDebugLogger();
164
+ return;
165
+ }
166
+ DebugLogger.instance = new ActiveDebugLogger();
167
+ if (e) {
168
+ DebugLogger.instance.configure(e);
169
+ }
170
+ }
171
+ static disable() {
172
+ DebugLogger.instance = new NoOpDebugLogger();
173
+ }
174
+ }
175
+ DebugLogger.instance = new NoOpDebugLogger();
15
176
 
16
- export { defineCustomMetadata, getCustomMetadata, getOwnCustomMetadata, getParamTypes };
177
+ export { DebugLogger };
package/dist/index37.js CHANGED
@@ -2,27 +2,68 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- class ResolverStore {
6
- static register(e, r) {
7
- this.resolvers.set(e, r);
5
+ let AbstractCycleDetector = class AbstractCycleDetector {
6
+ };
7
+ let NoOpCycleDetector = class NoOpCycleDetector extends AbstractCycleDetector {
8
+ detect() {
9
+ return [];
8
10
  }
9
- static getResolver(e) {
10
- const r = this.resolvers.get(e);
11
- if (!r) {
12
- throw new Error(`No resolver found for decorator type: ${e}`);
11
+ };
12
+ let ActiveCycleDetector = class ActiveCycleDetector extends AbstractCycleDetector {
13
+ detect(e, t) {
14
+ const c = [];
15
+ const s = new Set();
16
+ for (const [n] of e){
17
+ if (s.has(n)) continue;
18
+ const r = [];
19
+ const o = new Set();
20
+ if (this.hasCycleDFS(n, r, o, s, e)) {
21
+ const e = r.findIndex((e)=>e === n);
22
+ if (e >= 0) {
23
+ const s = r.slice(e).map((e)=>t(e));
24
+ c.push({
25
+ cycle: s,
26
+ path: s.join(' → ')
27
+ });
28
+ }
29
+ }
13
30
  }
14
- return new r();
31
+ return c;
15
32
  }
16
- static hasResolver(e) {
17
- return this.resolvers.has(e);
33
+ hasCycleDFS(e, t, c, s, n) {
34
+ if (c.has(e)) {
35
+ t.push(e);
36
+ return true;
37
+ }
38
+ if (s.has(e)) {
39
+ return false;
40
+ }
41
+ t.push(e);
42
+ c.add(e);
43
+ const r = n.get(e);
44
+ if (r?.dependencies && r.dependencies.length > 0) {
45
+ for (const e of r.dependencies){
46
+ if (this.hasCycleDFS(e, t, c, s, n)) {
47
+ return true;
48
+ }
49
+ }
50
+ }
51
+ c.delete(e);
52
+ s.add(e);
53
+ return false;
54
+ }
55
+ };
56
+ class CycleDetector {
57
+ static getInstance() {
58
+ return CycleDetector.instance;
18
59
  }
19
- static getRegisteredTypes() {
20
- return Array.from(this.resolvers.keys());
60
+ static enable() {
61
+ CycleDetector.instance = new ActiveCycleDetector();
21
62
  }
22
- static clear() {
23
- this.resolvers.clear();
63
+ static disable() {
64
+ CycleDetector.instance = new NoOpCycleDetector();
24
65
  }
25
66
  }
26
- ResolverStore.resolvers = new Map();
67
+ CycleDetector.instance = new NoOpCycleDetector();
27
68
 
28
- exports.ResolverStore = ResolverStore;
69
+ exports.CycleDetector = CycleDetector;