assemblerjs 1.1.1 → 1.1.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 (64) hide show
  1. package/dist/index.d.ts +53 -8
  2. package/dist/index13.js +1 -1
  3. package/dist/index13.mjs +1 -1
  4. package/dist/index18.js +1 -1
  5. package/dist/index18.mjs +1 -1
  6. package/dist/index19.js +1 -1
  7. package/dist/index19.mjs +1 -1
  8. package/dist/index20.js +1 -1
  9. package/dist/index20.mjs +1 -1
  10. package/dist/index21.js +1 -1
  11. package/dist/index21.mjs +1 -1
  12. package/dist/index22.js +1 -1
  13. package/dist/index22.mjs +1 -1
  14. package/dist/index23.js +1 -1
  15. package/dist/index23.mjs +1 -1
  16. package/dist/index24.js +1 -1
  17. package/dist/index24.mjs +1 -1
  18. package/dist/index27.js +1 -1
  19. package/dist/index27.mjs +1 -1
  20. package/dist/index30.js +8 -2
  21. package/dist/index30.mjs +8 -2
  22. package/dist/index31.js +38 -20
  23. package/dist/index31.mjs +37 -20
  24. package/dist/index32.js +17 -58
  25. package/dist/index32.mjs +17 -58
  26. package/dist/index33.js +57 -20
  27. package/dist/index33.mjs +57 -20
  28. package/dist/index34.js +23 -57
  29. package/dist/index34.mjs +23 -57
  30. package/dist/index35.js +75 -27
  31. package/dist/index35.mjs +75 -27
  32. package/dist/index36.js +39 -29
  33. package/dist/index36.mjs +39 -29
  34. package/dist/index37.js +30 -39
  35. package/dist/index37.mjs +30 -38
  36. package/dist/index38.js +125 -97
  37. package/dist/index38.mjs +125 -97
  38. package/dist/index39.js +101 -24
  39. package/dist/index39.mjs +101 -24
  40. package/dist/index4.js +21 -8
  41. package/dist/index4.mjs +21 -8
  42. package/dist/index40.js +28 -48
  43. package/dist/index40.mjs +28 -48
  44. package/dist/index41.js +43 -3
  45. package/dist/index41.mjs +43 -3
  46. package/dist/index42.js +22 -28
  47. package/dist/index42.mjs +21 -27
  48. package/dist/index43.js +26 -169
  49. package/dist/index43.mjs +25 -169
  50. package/dist/index44.js +192 -940
  51. package/dist/index44.mjs +192 -940
  52. package/dist/index45.js +942 -2
  53. package/dist/index45.mjs +942 -2
  54. package/dist/index46.js +2 -2
  55. package/dist/index46.mjs +2 -2
  56. package/dist/index47.js +2 -14
  57. package/dist/index47.mjs +2 -14
  58. package/dist/index48.js +9 -23
  59. package/dist/index48.mjs +9 -23
  60. package/dist/index49.js +32 -55
  61. package/dist/index49.mjs +32 -54
  62. package/dist/index50.js +67 -0
  63. package/dist/index50.mjs +62 -0
  64. package/package.json +1 -1
package/dist/index36.mjs CHANGED
@@ -1,33 +1,43 @@
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
- };
15
- }
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
- };
1
+ import { HookManager } from './index35.mjs';
2
+ import { DebugLogger } from './index38.mjs';
3
+ import { setDefinitionValue } from './index30.mjs';
4
+
5
+ class AssemblerBuilder {
6
+ build(t, a) {
7
+ const n = DebugLogger.getInstance();
8
+ setDefinitionValue('singleton', true, t);
9
+ n.logPhaseStart('registration');
10
+ const r = this.assembler.register([
11
+ t
12
+ ]);
13
+ n.logPhaseEnd('registration');
14
+ n.logPhaseStart('resolution');
15
+ const i = this.assembler.require(r.identifier, a);
16
+ n.logPhaseEnd('resolution');
17
+ const l = this.assembler.hookManager.getCache().find((e)=>e.instance === i);
18
+ if (!l) {
19
+ throw new Error('Root instance not found in assemblages cache.');
20
+ }
21
+ const h = this.assembler.hookManager.getCache().indexOf(l);
22
+ this.assembler.hookManager.getCache().splice(h, 1);
23
+ n.logPhaseStart('hooks:onInit');
24
+ this.assembler.hookManager.callInitHooks(this.assembler.publicContext);
25
+ const c = a ? {
26
+ ...r.configuration,
27
+ ...a
28
+ } : r.configuration;
29
+ HookManager.callHookImmediate(i, 'onInit', this.assembler.publicContext, c);
30
+ n.logPhaseEnd('hooks:onInit');
31
+ n.logPhaseStart('hooks:onInited');
32
+ this.assembler.hookManager.callInitedHooks(this.assembler.publicContext);
33
+ HookManager.callHookImmediate(i, 'onInited', this.assembler.publicContext, c);
34
+ n.logPhaseEnd('hooks:onInited');
35
+ this.assembler.hookManager.clearCache();
36
+ return i;
27
37
  }
28
- constructor(s){
29
- this.assembler = s;
38
+ constructor(e){
39
+ this.assembler = e;
30
40
  }
31
41
  }
32
42
 
33
- export { ContextProvider };
43
+ export { AssemblerBuilder };
package/dist/index37.js CHANGED
@@ -2,45 +2,36 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const eventManager = require('./index6.js');
6
-
7
- const registerEvents = (t, n)=>{
8
- const o = t.concrete.prototype instanceof eventManager.EventManager;
9
- if (o) {
10
- const e = n;
11
- const o = e.channels;
12
- for (const n of t.events){
13
- if (!o.has(n)) e.addChannels(n);
14
- if (!t.privateContext.events.has(n)) t.privateContext.addChannels(n);
15
- }
16
- for (const e of t.events){
17
- n.on(e, (...n)=>{
18
- t.privateContext.emit(e, ...n);
19
- });
20
- }
21
- } else {
22
- for (const e of t.events){
23
- if (!t.privateContext.events.has(e)) t.privateContext.addChannels(e);
24
- }
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
+ };
19
+ }
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
+ };
25
31
  }
26
- };
27
- const unregisterEvents = (t, n)=>{
28
- const o = t.concrete.prototype instanceof eventManager.EventManager;
29
- if (o) {
30
- const e = n;
31
- for (const n of t.events){
32
- e.off(n);
33
- }
34
- e.removeChannels(...t.events);
35
- t.privateContext.removeChannels(...t.events);
36
- } else {
37
- for (const e of t.events){
38
- if (t.privateContext.events.has(e)) {
39
- t.privateContext.removeChannels(e);
40
- }
41
- }
32
+ constructor(s){
33
+ this.assembler = s;
42
34
  }
43
- };
35
+ }
44
36
 
45
- exports.registerEvents = registerEvents;
46
- exports.unregisterEvents = unregisterEvents;
37
+ exports.ContextProvider = ContextProvider;
package/dist/index37.mjs CHANGED
@@ -1,41 +1,33 @@
1
- import { EventManager } from './index6.mjs';
2
-
3
- const registerEvents = (t, n)=>{
4
- const o = t.concrete.prototype instanceof EventManager;
5
- if (o) {
6
- const e = n;
7
- const o = e.channels;
8
- for (const n of t.events){
9
- if (!o.has(n)) e.addChannels(n);
10
- if (!t.privateContext.events.has(n)) t.privateContext.addChannels(n);
11
- }
12
- for (const e of t.events){
13
- n.on(e, (...n)=>{
14
- t.privateContext.emit(e, ...n);
15
- });
16
- }
17
- } else {
18
- for (const e of t.events){
19
- if (!t.privateContext.events.has(e)) t.privateContext.addChannels(e);
20
- }
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
+ };
15
+ }
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
+ };
21
27
  }
22
- };
23
- const unregisterEvents = (t, n)=>{
24
- const o = t.concrete.prototype instanceof EventManager;
25
- if (o) {
26
- const e = n;
27
- for (const n of t.events){
28
- e.off(n);
29
- }
30
- e.removeChannels(...t.events);
31
- t.privateContext.removeChannels(...t.events);
32
- } else {
33
- for (const e of t.events){
34
- if (t.privateContext.events.has(e)) {
35
- t.privateContext.removeChannels(e);
36
- }
37
- }
28
+ constructor(s){
29
+ this.assembler = s;
38
30
  }
39
- };
31
+ }
40
32
 
41
- export { registerEvents, unregisterEvents };
33
+ export { ContextProvider };
package/dist/index38.js CHANGED
@@ -2,110 +2,138 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const transversalManager = require('./index13.js');
6
- const affect = require('./index12.js');
7
-
8
- class TransversalWeaver {
9
- static weave(n, r, o) {
10
- const c = transversalManager.TransversalManager.getInstance(o);
11
- const s = c.getAspectsForTarget(r);
12
- const a = Object.getPrototypeOf(n);
13
- const f = Object.getOwnPropertyNames(a).some((t)=>{
14
- if (t === 'constructor') return false;
15
- const n = Object.getOwnPropertyDescriptor(a, t);
16
- if (!n) return false;
17
- const r = n.value && typeof n.value === 'function';
18
- const o = n.get && typeof n.get === 'function';
19
- if (!r && !o) return false;
20
- const c = affect.getAffectedMethods(a, t);
21
- return c.length > 0;
22
- });
23
- if (s.length === 0 && !f) {
24
- return n;
25
- }
26
- return new Proxy(n, {
27
- get (t, e, n) {
28
- const r = Reflect.get(t, e, n);
29
- if (typeof r !== 'function') {
30
- return r;
31
- }
32
- return function(...n) {
33
- const o = String(e);
34
- const a = {
35
- target: t,
36
- methodName: o,
37
- args: n
38
- };
39
- const f = c.getAdvicesForJoinPoint(a, s, t, e);
40
- return TransversalWeaver.executeAdviceChain(f, r, t, n, a);
41
- };
5
+ let NoOpDebugLogger = class NoOpDebugLogger {
6
+ configure(o) {}
7
+ logBuildStart(o) {}
8
+ logBuildEnd(o, e) {}
9
+ logRegistration(o) {}
10
+ logHook(o, e, t) {}
11
+ logPhaseStart(o, e) {}
12
+ logPhaseEnd(o, e) {}
13
+ logResolution(o, e, t) {}
14
+ logConstruction(o) {}
15
+ };
16
+ let ActiveDebugLogger = class ActiveDebugLogger {
17
+ configure(o) {
18
+ this.options = {
19
+ ...this.options,
20
+ ...o,
21
+ logPhases: {
22
+ ...this.options.logPhases,
23
+ ...o.logPhases || {}
42
24
  }
25
+ };
26
+ }
27
+ logBuildStart(o) {
28
+ this.log('info', 'Build started', {
29
+ entry: o.name
43
30
  });
44
31
  }
45
- static executeAdviceChain(t, e, n, r, o) {
46
- const c = t.filter((t)=>t.type === 'before');
47
- const s = t.filter((t)=>t.type === 'around');
48
- const a = t.filter((t)=>t.type === 'after');
49
- try {
50
- for (const t of c){
51
- const e = {
52
- ...o,
53
- config: t.config
54
- };
55
- t.method.call(t.transversalInstance, e);
56
- }
57
- let t;
58
- if (s.length > 0) {
59
- t = this.buildAroundChain(s, e, n, r, o);
60
- } else {
61
- t = e.apply(n, r);
62
- }
63
- if (t instanceof Promise) {
64
- return t.then((t)=>{
65
- for (const e of a){
66
- const n = {
67
- ...o,
68
- result: t
69
- };
70
- e.method.call(e.transversalInstance, n);
71
- }
72
- return t;
73
- }).catch((t)=>{
74
- o.error = t;
75
- throw t;
32
+ logBuildEnd(o, e) {
33
+ const t = {
34
+ entry: o.name
35
+ };
36
+ if (e !== undefined) t.duration = `${e.toFixed(2)}ms`;
37
+ this.log('info', 'Build completed', t);
38
+ }
39
+ logRegistration(o) {
40
+ if (!this.shouldLog('registration')) return;
41
+ this.log('info', 'Registration', {
42
+ identifier: o.identifier?.name || String(o.identifier),
43
+ isSingleton: o.isSingleton,
44
+ dependencies: o.dependencies.map((o)=>o?.name || String(o)),
45
+ tags: o.tags
46
+ });
47
+ }
48
+ logHook(o, e, t) {
49
+ if (!this.shouldLog('hooks')) return;
50
+ const s = this.options.logTimings ? performance.now() : 0;
51
+ this.log('info', `Hook: ${o}`, {
52
+ target: e.constructor?.name || e.name,
53
+ config: t
54
+ });
55
+ if (this.options.logTimings) {
56
+ return ()=>{
57
+ const e = performance.now() - s;
58
+ this.log('info', `Hook: ${o} completed`, {
59
+ duration: `${e.toFixed(2)}ms`
76
60
  });
77
- }
78
- for (const e of a){
79
- const n = {
80
- ...o,
81
- result: t,
82
- config: e.config
83
- };
84
- e.method.call(e.transversalInstance, n);
85
- }
86
- return t;
87
- } catch (t) {
88
- o.error = t;
89
- throw t;
61
+ };
90
62
  }
91
63
  }
92
- static buildAroundChain(t, e, n, r, o) {
93
- let c = 0;
94
- const s = ()=>{
95
- if (c < t.length) {
96
- const e = t[c++];
97
- const n = {
98
- ...o,
99
- proceed: s,
100
- config: e.config
101
- };
102
- return e.method.call(e.transversalInstance, n);
103
- } else {
104
- return e.apply(n, r);
105
- }
64
+ logPhaseStart(o, e) {
65
+ this.log('info', `Phase: ${o} started`, e);
66
+ }
67
+ logPhaseEnd(o, e) {
68
+ const t = e !== undefined ? {
69
+ duration: `${e.toFixed(2)}ms`
70
+ } : undefined;
71
+ this.log('info', `Phase: ${o} ended`, t);
72
+ }
73
+ logResolution(o, e, t) {
74
+ if (!this.shouldLog('resolution')) return;
75
+ this.log('info', `Resolving: ${o}`, {
76
+ strategy: `${e} strategy`,
77
+ cache: t ? 'hit' : 'miss'
78
+ });
79
+ }
80
+ logConstruction(o) {
81
+ if (!this.shouldLog('construction')) return;
82
+ this.log('info', `Constructing: ${o}`);
83
+ }
84
+ shouldLog(o) {
85
+ return !this.options.logPhases || this.options.logPhases[o] !== false;
86
+ }
87
+ log(o, e, t) {
88
+ if (this.options.logger) {
89
+ this.options.logger(o, e, t);
90
+ } else {
91
+ const s = `[Assembler:${o}]`;
92
+ const i = this.options.useColors !== false ? this.colorize(o, s) : s;
93
+ const n = t ? ` ${JSON.stringify(t)}` : '';
94
+ console.log(`${i} ${e}${n}`);
95
+ }
96
+ }
97
+ colorize(o, e) {
98
+ const t = {
99
+ info: '\x1b[36m',
100
+ warn: '\x1b[33m',
101
+ error: '\x1b[31m',
102
+ reset: '\x1b[0m'
103
+ };
104
+ const s = t[o] || t.info;
105
+ return `${s}${e}${t.reset}`;
106
+ }
107
+ constructor(){
108
+ this.options = {
109
+ enabled: true,
110
+ logPhases: {
111
+ registration: true,
112
+ resolution: true,
113
+ construction: true,
114
+ hooks: true,
115
+ cache: true
116
+ },
117
+ logTimings: false,
118
+ logDependencyTree: true,
119
+ useColors: true
106
120
  };
107
- return s();
121
+ }
122
+ };
123
+ class DebugLogger {
124
+ static getInstance() {
125
+ return DebugLogger.instance;
126
+ }
127
+ static enable(o) {
128
+ DebugLogger.instance = new ActiveDebugLogger();
129
+ if (o) {
130
+ DebugLogger.instance.configure(o);
131
+ }
132
+ }
133
+ static disable() {
134
+ DebugLogger.instance = new NoOpDebugLogger();
108
135
  }
109
136
  }
137
+ DebugLogger.instance = new NoOpDebugLogger();
110
138
 
111
- exports.TransversalWeaver = TransversalWeaver;
139
+ exports.DebugLogger = DebugLogger;