assemblerjs 1.1.19 → 1.1.20

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/index38.mjs CHANGED
@@ -1,168 +1,41 @@
1
- function o(o) {
2
- if (o === undefined) return 'undefined';
3
- if (o === null) return 'null';
4
- if (typeof o === 'function') {
5
- if (o.name) return o.name;
6
- if (o.constructor?.name && o.constructor.name !== 'Function') {
7
- return o.constructor.name;
1
+ import { EventManager } from './index6.mjs';
2
+
3
+ const registerEvents = (t, n)=>{
4
+ const o = t.concrete !== undefined && 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);
8
11
  }
9
- return 'AnonymousFunction';
10
- }
11
- if (typeof o === 'object') {
12
- const e = o.constructor?.name;
13
- if (e && e !== 'Object') {
14
- return e;
12
+ for (const e of t.events){
13
+ n.on(e, (...n)=>{
14
+ t.privateContext.emit(e, ...n);
15
+ });
15
16
  }
16
- if (o.name && typeof o.name === 'string') {
17
- return o.name;
17
+ } else {
18
+ for (const e of t.events){
19
+ if (!t.privateContext.events.has(e)) t.privateContext.addChannels(e);
18
20
  }
19
- return '[Object]';
20
21
  }
21
- return String(o);
22
- }
23
- let NoOpDebugLogger = class NoOpDebugLogger {
24
- configure(o) {}
25
- log(o, e, t) {}
26
- logBuildStart(o) {}
27
- logBuildEnd(o, e) {}
28
- logRegistration(o) {}
29
- logHook(o, e, t) {}
30
- logPhaseStart(o, e) {}
31
- logPhaseEnd(o, e, t) {}
32
- logResolution(o, e, t) {}
33
- logConstruction(o) {}
34
22
  };
35
- let ActiveDebugLogger = class ActiveDebugLogger {
36
- configure(o) {
37
- this.options = {
38
- ...this.options,
39
- ...o,
40
- logPhases: {
41
- ...this.options.logPhases,
42
- ...o.logPhases || {}
43
- }
44
- };
45
- }
46
- logBuildStart(o) {
47
- this.log('info', 'Build started', {
48
- entry: o.name
49
- });
50
- }
51
- logBuildEnd(o, e) {
52
- const t = {
53
- entry: o.name
54
- };
55
- if (e !== undefined) t.duration = `${e.toFixed(2)}ms`;
56
- this.log('info', 'Build completed', t);
57
- }
58
- logRegistration(e) {
59
- if (!this.shouldLog('registration')) return;
60
- this.log('info', 'Registration', {
61
- identifier: o(e.identifier),
62
- isSingleton: e.isSingleton,
63
- dependencies: e.dependencies.map((e)=>o(e)),
64
- tags: e.tags
65
- });
66
- }
67
- logHook(e, t, n) {
68
- if (!this.shouldLog('hooks')) return;
69
- const s = this.options.logTimings ? performance.now() : 0;
70
- this.log('info', `Hook: ${e}`, {
71
- target: o(t),
72
- config: n
73
- });
74
- if (this.options.logTimings) {
75
- return ()=>{
76
- const o = performance.now() - s;
77
- this.log('info', `Hook: ${e} completed`, {
78
- duration: `${o.toFixed(2)}ms`
79
- });
80
- };
81
- }
82
- }
83
- logPhaseStart(o, e) {
84
- this.log('info', `Phase: ${o} started`, e);
85
- }
86
- logPhaseEnd(o, e, t) {
87
- const n = e !== undefined ? {
88
- duration: `${e.toFixed(2)}ms`
89
- } : {};
90
- if (t) {
91
- Object.assign(n, t);
92
- }
93
- this.log('info', `Phase: ${o} ended`, Object.keys(n).length > 0 ? n : undefined);
94
- }
95
- logResolution(o, e, t) {
96
- if (!this.shouldLog('resolution')) return;
97
- this.log('info', `Resolving: ${o}`, {
98
- strategy: `${e} strategy`,
99
- cache: t ? 'hit' : 'miss'
100
- });
101
- }
102
- logConstruction(o) {
103
- if (!this.shouldLog('construction')) return;
104
- this.log('info', `Constructing: ${o}`);
105
- }
106
- shouldLog(o) {
107
- return !this.options.logPhases || this.options.logPhases[o] !== false;
108
- }
109
- log(o, e, t) {
110
- if (this.options.logger) {
111
- this.options.logger(o, e, t);
112
- } else {
113
- const n = `[Assembler:${o}]`;
114
- const s = this.options.useColors !== false ? this.colorize(o, n) : n;
115
- if (t) {
116
- console.log(`${s} ${e}`, t);
117
- } else {
118
- console.log(`${s} ${e}`);
23
+ const unregisterEvents = (t, n)=>{
24
+ const o = t.concrete !== undefined && 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);
119
36
  }
120
37
  }
121
38
  }
122
- colorize(o, e) {
123
- const t = {
124
- info: '\x1b[36m',
125
- warn: '\x1b[33m',
126
- error: '\x1b[31m',
127
- reset: '\x1b[0m'
128
- };
129
- const n = t[o] || t.info;
130
- return `${n}${e}${t.reset}`;
131
- }
132
- constructor(){
133
- this.options = {
134
- enabled: true,
135
- logPhases: {
136
- registration: true,
137
- resolution: true,
138
- construction: true,
139
- hooks: true,
140
- cache: true
141
- },
142
- logTimings: false,
143
- logDependencyTree: true,
144
- useColors: true
145
- };
146
- }
147
39
  };
148
- class DebugLogger {
149
- static getInstance() {
150
- return DebugLogger.instance;
151
- }
152
- static enable(o) {
153
- if (o?.enabled === false) {
154
- DebugLogger.instance = new NoOpDebugLogger();
155
- return;
156
- }
157
- DebugLogger.instance = new ActiveDebugLogger();
158
- if (o) {
159
- DebugLogger.instance.configure(o);
160
- }
161
- }
162
- static disable() {
163
- DebugLogger.instance = new NoOpDebugLogger();
164
- }
165
- }
166
- DebugLogger.instance = new NoOpDebugLogger();
167
40
 
168
- export { DebugLogger };
41
+ export { registerEvents, unregisterEvents };
package/dist/index39.js CHANGED
@@ -2,68 +2,110 @@
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 [];
10
- }
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
- });
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;
28
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
+ };
29
42
  }
30
- }
31
- return c;
43
+ });
32
44
  }
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
- }
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);
49
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;
76
+ });
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;
50
90
  }
51
- c.delete(e);
52
- s.add(e);
53
- return false;
54
91
  }
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();
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
+ }
106
+ };
107
+ return s();
65
108
  }
66
109
  }
67
- CycleDetector.instance = new NoOpCycleDetector();
68
110
 
69
- exports.CycleDetector = CycleDetector;
111
+ exports.TransversalWeaver = TransversalWeaver;
package/dist/index39.mjs CHANGED
@@ -1,65 +1,107 @@
1
- let AbstractCycleDetector = class AbstractCycleDetector {
2
- };
3
- let NoOpCycleDetector = class NoOpCycleDetector extends AbstractCycleDetector {
4
- detect() {
5
- return [];
6
- }
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
- });
1
+ import { TransversalManager } from './index13.mjs';
2
+ import { getAffectedMethods } from './index12.mjs';
3
+
4
+ class TransversalWeaver {
5
+ static weave(n, r, o) {
6
+ const c = TransversalManager.getInstance(o);
7
+ const s = c.getAspectsForTarget(r);
8
+ const a = Object.getPrototypeOf(n);
9
+ const f = Object.getOwnPropertyNames(a).some((t)=>{
10
+ if (t === 'constructor') return false;
11
+ const n = Object.getOwnPropertyDescriptor(a, t);
12
+ if (!n) return false;
13
+ const r = n.value && typeof n.value === 'function';
14
+ const o = n.get && typeof n.get === 'function';
15
+ if (!r && !o) return false;
16
+ const c = getAffectedMethods(a, t);
17
+ return c.length > 0;
18
+ });
19
+ if (s.length === 0 && !f) {
20
+ return n;
21
+ }
22
+ return new Proxy(n, {
23
+ get (t, e, n) {
24
+ const r = Reflect.get(t, e, n);
25
+ if (typeof r !== 'function') {
26
+ return r;
24
27
  }
28
+ return function(...n) {
29
+ const o = String(e);
30
+ const a = {
31
+ target: t,
32
+ methodName: o,
33
+ args: n
34
+ };
35
+ const f = c.getAdvicesForJoinPoint(a, s, t, e);
36
+ return TransversalWeaver.executeAdviceChain(f, r, t, n, a);
37
+ };
25
38
  }
26
- }
27
- return c;
39
+ });
28
40
  }
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
- }
41
+ static executeAdviceChain(t, e, n, r, o) {
42
+ const c = t.filter((t)=>t.type === 'before');
43
+ const s = t.filter((t)=>t.type === 'around');
44
+ const a = t.filter((t)=>t.type === 'after');
45
+ try {
46
+ for (const t of c){
47
+ const e = {
48
+ ...o,
49
+ config: t.config
50
+ };
51
+ t.method.call(t.transversalInstance, e);
45
52
  }
53
+ let t;
54
+ if (s.length > 0) {
55
+ t = this.buildAroundChain(s, e, n, r, o);
56
+ } else {
57
+ t = e.apply(n, r);
58
+ }
59
+ if (t instanceof Promise) {
60
+ return t.then((t)=>{
61
+ for (const e of a){
62
+ const n = {
63
+ ...o,
64
+ result: t
65
+ };
66
+ e.method.call(e.transversalInstance, n);
67
+ }
68
+ return t;
69
+ }).catch((t)=>{
70
+ o.error = t;
71
+ throw t;
72
+ });
73
+ }
74
+ for (const e of a){
75
+ const n = {
76
+ ...o,
77
+ result: t,
78
+ config: e.config
79
+ };
80
+ e.method.call(e.transversalInstance, n);
81
+ }
82
+ return t;
83
+ } catch (t) {
84
+ o.error = t;
85
+ throw t;
46
86
  }
47
- c.delete(e);
48
- s.add(e);
49
- return false;
50
87
  }
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();
88
+ static buildAroundChain(t, e, n, r, o) {
89
+ let c = 0;
90
+ const s = ()=>{
91
+ if (c < t.length) {
92
+ const e = t[c++];
93
+ const n = {
94
+ ...o,
95
+ proceed: s,
96
+ config: e.config
97
+ };
98
+ return e.method.call(e.transversalInstance, n);
99
+ } else {
100
+ return e.apply(n, r);
101
+ }
102
+ };
103
+ return s();
61
104
  }
62
105
  }
63
- CycleDetector.instance = new NoOpCycleDetector();
64
106
 
65
- export { CycleDetector };
107
+ export { TransversalWeaver };
package/dist/index4.js CHANGED
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const core = require('@assemblerjs/core');
6
- const injectableManager = require('./index33.js');
7
- const objectManager = require('./index34.js');
8
- const hookManager = require('./index35.js');
9
- const assemblerBuilder = require('./index36.js');
10
- const contextProvider = require('./index37.js');
11
- const debugLogger = require('./index38.js');
12
- const cycleDetector = require('./index39.js');
6
+ const injectableManager = require('./index31.js');
7
+ const objectManager = require('./index32.js');
8
+ const hookManager = require('./index33.js');
9
+ const assemblerBuilder = require('./index34.js');
10
+ const contextProvider = require('./index35.js');
11
+ const debugLogger = require('./index36.js');
12
+ const cycleDetector = require('./index37.js');
13
13
  const eventManager = require('./index6.js');
14
14
 
15
15
  class Assembler extends eventManager.EventManager {
package/dist/index4.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import { clearInstance } from '@assemblerjs/core';
2
- import { InjectableManager } from './index33.mjs';
3
- import { ObjectManager } from './index34.mjs';
4
- import { HookManager } from './index35.mjs';
5
- import { AssemblerBuilder } from './index36.mjs';
6
- import { ContextProvider } from './index37.mjs';
7
- import { DebugLogger } from './index38.mjs';
8
- import { CycleDetector } from './index39.mjs';
2
+ import { InjectableManager } from './index31.mjs';
3
+ import { ObjectManager } from './index32.mjs';
4
+ import { HookManager } from './index33.mjs';
5
+ import { AssemblerBuilder } from './index34.mjs';
6
+ import { ContextProvider } from './index35.mjs';
7
+ import { DebugLogger } from './index36.mjs';
8
+ import { CycleDetector } from './index37.mjs';
9
9
  import { EventManager } from './index6.mjs';
10
10
 
11
11
  class Assembler extends EventManager {
package/dist/index40.js CHANGED
@@ -2,45 +2,33 @@
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 !== undefined && 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);
5
+ class PointcutMatcher {
6
+ static parse(t) {
7
+ const e = t.match(/^execution\(([^.]+)\.([^)]+)\)$/);
8
+ if (!e) {
9
+ throw new Error(`Invalid pointcut expression: ${t}`);
24
10
  }
11
+ const [, c, r] = e;
12
+ return new ExecutionPointcutMatcher(c, r);
25
13
  }
26
- };
27
- const unregisterEvents = (t, n)=>{
28
- const o = t.concrete !== undefined && 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
- }
14
+ }
15
+ let ExecutionPointcutMatcher = class ExecutionPointcutMatcher {
16
+ matches(t) {
17
+ const e = t.target.constructor.name;
18
+ const c = t.methodName;
19
+ return this.classRegex.test(e) && this.methodRegex.test(c);
20
+ }
21
+ patternToRegex(t) {
22
+ if (t === '*') {
23
+ return /.*/;
41
24
  }
25
+ const e = t.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
26
+ return new RegExp(`^${e}$`);
27
+ }
28
+ constructor(t, e){
29
+ this.classRegex = this.patternToRegex(t);
30
+ this.methodRegex = this.patternToRegex(e);
42
31
  }
43
32
  };
44
33
 
45
- exports.registerEvents = registerEvents;
46
- exports.unregisterEvents = unregisterEvents;
34
+ exports.PointcutMatcher = PointcutMatcher;