assemblerjs 1.1.27 → 1.2.0

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/index39.mjs CHANGED
@@ -1,30 +1,63 @@
1
- class PointcutMatcher {
2
- static parse(t) {
3
- const e = t.match(/^execution\(([^.]+)\.([^)]+)\)$/);
4
- if (!e) {
5
- throw new Error(`Invalid pointcut expression: ${t}`);
6
- }
7
- const [, c, r] = e;
8
- return new ExecutionPointcutMatcher(c, r);
9
- }
10
- }
11
- let ExecutionPointcutMatcher = class ExecutionPointcutMatcher {
12
- matches(t) {
13
- const e = t.target.constructor.name;
14
- const c = t.methodName;
15
- return this.classRegex.test(e) && this.methodRegex.test(c);
1
+ let AbstractCycleDetector = class AbstractCycleDetector {
2
+ };
3
+ let NoOpCycleDetector = class NoOpCycleDetector extends AbstractCycleDetector {
4
+ detect() {
5
+ return [];
16
6
  }
17
- patternToRegex(t) {
18
- if (t === '*') {
19
- return /.*/;
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 o = [];
15
+ const r = new Set();
16
+ if (this.hasCycleDFS(n, o, r, e)) {
17
+ const e = o.findIndex((e)=>e === n);
18
+ if (e >= 0) {
19
+ const s = o.slice(e).map((e)=>t(e));
20
+ c.push({
21
+ cycle: s,
22
+ path: s.join(' → ')
23
+ });
24
+ }
25
+ }
26
+ s.add(n);
20
27
  }
21
- const e = t.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
22
- return new RegExp(`^${e}$`);
28
+ return c;
23
29
  }
24
- constructor(t, e){
25
- this.classRegex = this.patternToRegex(t);
26
- this.methodRegex = this.patternToRegex(e);
30
+ hasCycleDFS(e, t, c, s) {
31
+ if (c.has(e)) {
32
+ t.push(e);
33
+ return true;
34
+ }
35
+ t.push(e);
36
+ c.add(e);
37
+ const n = s.get(e);
38
+ if (n?.dependencies && n.dependencies.length > 0) {
39
+ for (const e of n.dependencies){
40
+ if (this.hasCycleDFS(e, t, c, s)) {
41
+ return true;
42
+ }
43
+ }
44
+ }
45
+ c.delete(e);
46
+ t.pop();
47
+ return false;
27
48
  }
28
49
  };
50
+ class CycleDetector {
51
+ static getInstance() {
52
+ return CycleDetector.instance;
53
+ }
54
+ static enable() {
55
+ CycleDetector.instance = new ActiveCycleDetector();
56
+ }
57
+ static disable() {
58
+ CycleDetector.instance = new NoOpCycleDetector();
59
+ }
60
+ }
61
+ CycleDetector.instance = new NoOpCycleDetector();
29
62
 
30
- export { PointcutMatcher };
63
+ export { CycleDetector };
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('./index32.js');
7
- const objectManager = require('./index33.js');
8
- const hookManager = require('./index34.js');
9
- const assemblerBuilder = require('./index35.js');
10
- const contextProvider = require('./index36.js');
11
- const debugLogger = require('./index37.js');
12
- const cycleDetector = require('./index38.js');
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');
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 './index32.mjs';
3
- import { ObjectManager } from './index33.mjs';
4
- import { HookManager } from './index34.mjs';
5
- import { AssemblerBuilder } from './index35.mjs';
6
- import { ContextProvider } from './index36.mjs';
7
- import { DebugLogger } from './index37.mjs';
8
- import { CycleDetector } from './index38.mjs';
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';
9
9
  import { EventManager } from './index6.mjs';
10
10
 
11
11
  class Assembler extends EventManager {
package/dist/index41.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;
package/dist/index41.mjs CHANGED
@@ -1,41 +1,30 @@
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);
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);
1
+ class PointcutMatcher {
2
+ static parse(t) {
3
+ const e = t.match(/^execution\(([^.]+)\.([^)]+)\)$/);
4
+ if (!e) {
5
+ throw new Error(`Invalid pointcut expression: ${t}`);
20
6
  }
7
+ const [, c, r] = e;
8
+ return new ExecutionPointcutMatcher(c, r);
21
9
  }
22
- };
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);
36
- }
10
+ }
11
+ let ExecutionPointcutMatcher = class ExecutionPointcutMatcher {
12
+ matches(t) {
13
+ const e = t.target.constructor.name;
14
+ const c = t.methodName;
15
+ return this.classRegex.test(e) && this.methodRegex.test(c);
16
+ }
17
+ patternToRegex(t) {
18
+ if (t === '*') {
19
+ return /.*/;
37
20
  }
21
+ const e = t.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
22
+ return new RegExp(`^${e}$`);
23
+ }
24
+ constructor(t, e){
25
+ this.classRegex = this.patternToRegex(t);
26
+ this.methodRegex = this.patternToRegex(e);
38
27
  }
39
28
  };
40
29
 
41
- export { registerEvents, unregisterEvents };
30
+ export { PointcutMatcher };
package/dist/index45.js CHANGED
@@ -5,11 +5,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const core = require('@assemblerjs/core');
6
6
  const constants = require('./index29.js');
7
7
  const reflection = require('./index30.js');
8
- const debugLogger = require('./index37.js');
8
+ const debugLogger = require('./index38.js');
9
9
  const injectableBuilder = require('./index50.js');
10
10
  const dependencies = require('./index51.js');
11
- const helpers = require('./index41.js');
12
- const hookManager = require('./index34.js');
11
+ const helpers = require('./index32.js');
12
+ const hookManager = require('./index35.js');
13
13
  const helpers$1 = require('./index3.js');
14
14
  const use = require('./index43.js');
15
15
  const schema = require('./index31.js');
@@ -84,7 +84,7 @@ class Injectable {
84
84
  }
85
85
  get injections() {
86
86
  if (this.cachedInjections === undefined) {
87
- this.cachedInjections = this.definition.inject || [];
87
+ this.cachedInjections = this.definition.provide || this.definition.inject || [];
88
88
  }
89
89
  return this.cachedInjections;
90
90
  }
package/dist/index45.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import { isClass, clearInstance } from '@assemblerjs/core';
2
2
  import { ReflectValue } from './index29.mjs';
3
3
  import { defineCustomMetadata } from './index30.mjs';
4
- import { DebugLogger } from './index37.mjs';
4
+ import { DebugLogger } from './index38.mjs';
5
5
  import { InjectableBuilder } from './index50.mjs';
6
6
  import { resolveDependencies } from './index51.mjs';
7
- import { unregisterEvents } from './index41.mjs';
8
- import { HookManager } from './index34.mjs';
7
+ import { unregisterEvents } from './index32.mjs';
8
+ import { HookManager } from './index35.mjs';
9
9
  import { isAssemblage } from './index3.mjs';
10
10
  import { isFactory } from './index43.mjs';
11
11
  import { getDefinition } from './index31.mjs';
@@ -80,7 +80,7 @@ class Injectable {
80
80
  }
81
81
  get injections() {
82
82
  if (this.cachedInjections === undefined) {
83
- this.cachedInjections = this.definition.inject || [];
83
+ this.cachedInjections = this.definition.provide || this.definition.inject || [];
84
84
  }
85
85
  return this.cachedInjections;
86
86
  }
package/dist/index50.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const dependencies = require('./index51.js');
6
6
  const transversalWeaver = require('./index14.js');
7
- const helpers = require('./index41.js');
7
+ const helpers = require('./index32.js');
8
8
 
9
9
  class InjectableBuilder {
10
10
  build(i) {
package/dist/index50.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { resolveInjectableParameters } from './index51.mjs';
2
2
  import { TransversalWeaver } from './index14.mjs';
3
- import { registerEvents } from './index41.mjs';
3
+ import { registerEvents } from './index32.mjs';
4
4
 
5
5
  class InjectableBuilder {
6
6
  build(i) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "assemblerjs",
3
3
  "description": "A general purpose Dependency Injection library for node and browser.",
4
- "version": "1.1.27",
4
+ "version": "1.2.0",
5
5
  "author": "Benoît LAHOZ <info@benoitlahoz.io>",
6
6
  "bugs": "https://github.com/benoitlahoz/assemblerjs/issues",
7
7
  "homepage": "https://github.com/benoitlahoz/assemblerjs#README",