@adaas/a-concept 0.1.17 → 0.1.18

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.
@@ -51,14 +51,22 @@ config = {}) {
51
51
  const existedMeta = meta.get(metaKey) || new A_Meta_class_1.A_Meta();
52
52
  // Set the metadata of the method to define a custom Stage with name
53
53
  const existedMetaValue = existedMeta.get(setName) || [];
54
- // Add the new method to the metadata
55
- existedMetaValue.push({
54
+ const existedIndex = existedMetaValue.findIndex(item => item.handler === propertyKey);
55
+ const abstraction = {
56
56
  name: setName,
57
57
  handler: propertyKey,
58
58
  before: config.before || [],
59
59
  after: config.after || [],
60
60
  behavior: config.behavior || 'sync'
61
- });
61
+ };
62
+ if (existedIndex !== -1) {
63
+ // Update the existing method in the metadata
64
+ existedMetaValue[existedIndex] = abstraction;
65
+ }
66
+ else {
67
+ // Add the new method to the metadata
68
+ existedMetaValue.push(abstraction);
69
+ }
62
70
  // Set the metadata of the method to define a custom Feature with name
63
71
  existedMeta.set(setName, existedMetaValue);
64
72
  // Update the metadata of the container with the new Stage definition
@@ -1 +1 @@
1
- {"version":3,"file":"A-Abstraction-Extend.decorator.js","sourceRoot":"","sources":["../../../../src/global/A-Abstraction/A-Abstraction-Extend.decorator.ts"],"names":[],"mappings":";;AA2BA,oDA2EC;AAjGD,uFAA8E;AAI9E,8EAAqE;AAErE,qGAAsG;AACtG,qGAAsG;AAEtG,+DAA2D;AAC3D,sFAA4E;AAG5E;;;;;;;;GAQG;AACH,SAAgB,oBAAoB;AAChC;;GAEG;AACH,IAAkC;AAClC;;;GAGG;AACH,SAAuD,EAAE;IAEzD,OAAO,UACH,MAAiC,EACjC,WAAmB,EACnB,UAAmD;;QAEnD,qBAAqB;QACrB,MAAM,aAAa,GAAG,CAAA,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;QAEjG,IAAI,CAAC,IAAI;YACL,MAAM,IAAI,wCAAkB,CACxB,wCAAkB,CAAC,yBAAyB,EAC5C,gEAAgE,aAAa,IAAI,CACpF,CAAC;QAEN,kEAAkE;QAClE,IAAI,CAAC,kCAAY,CAAC,oCAAoC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,wCAAkB,CACxB,wCAAkB,CAAC,yBAAyB,EAC5C,iCAAiC,IAAI,UAAU,aAAa,gEAAgE,CAC/H,CAAC;QACN,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,MAAM,IAAI,GAAsC,2BAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvE,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,kCAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBACxF,OAAO,GAAG,iDAAyB,CAAC,YAAY,CAAA;gBAChD,MAAM;YACV,KAAK,kCAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBACxF,OAAO,GAAG,iDAAyB,CAAC,YAAY,CAAA;gBAChD,MAAM;QACd,CAAC;QACD,MAAM,OAAO,GAAG,wBAAwB,IAAI,EAAE,CAAC;QAE/C,+CAA+C;QAC/C,MAAM,WAAW,GAEZ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,qBAAM,EAAE,CAAC;QAEvC,oEAAoE;QACpE,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAExD,qCAAqC;QACrC,gBAAgB,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM;SACtC,CAAC,CAAC;QAEH,sEAAsE;QACtE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAG3C,sEAAsE;QACtE,2BAAS;aACJ,IAAI,CAAC,MAAM,CAAC;aACZ,GAAG,CACA,OAAO,EACP,WAAW,CACd,CAAC;IACV,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"A-Abstraction-Extend.decorator.js","sourceRoot":"","sources":["../../../../src/global/A-Abstraction/A-Abstraction-Extend.decorator.ts"],"names":[],"mappings":";;AA2BA,oDAmFC;AAzGD,uFAA8E;AAI9E,8EAAqE;AAErE,qGAAsG;AACtG,qGAAsG;AAEtG,+DAA2D;AAC3D,sFAA4E;AAG5E;;;;;;;;GAQG;AACH,SAAgB,oBAAoB;AAChC;;GAEG;AACH,IAAkC;AAClC;;;GAGG;AACH,SAAuD,EAAE;IAEzD,OAAO,UACH,MAAiC,EACjC,WAAmB,EACnB,UAAmD;;QAEnD,qBAAqB;QACrB,MAAM,aAAa,GAAG,CAAA,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;QAEjG,IAAI,CAAC,IAAI;YACL,MAAM,IAAI,wCAAkB,CACxB,wCAAkB,CAAC,yBAAyB,EAC5C,gEAAgE,aAAa,IAAI,CACpF,CAAC;QAEN,kEAAkE;QAClE,IAAI,CAAC,kCAAY,CAAC,oCAAoC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,wCAAkB,CACxB,wCAAkB,CAAC,yBAAyB,EAC5C,iCAAiC,IAAI,UAAU,aAAa,gEAAgE,CAC/H,CAAC;QACN,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,MAAM,IAAI,GAAsC,2BAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvE,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,kCAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBACxF,OAAO,GAAG,iDAAyB,CAAC,YAAY,CAAA;gBAChD,MAAM;YACV,KAAK,kCAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBACxF,OAAO,GAAG,iDAAyB,CAAC,YAAY,CAAA;gBAChD,MAAM;QACd,CAAC;QACD,MAAM,OAAO,GAAG,wBAAwB,IAAI,EAAE,CAAC;QAE/C,+CAA+C;QAC/C,MAAM,WAAW,GAEZ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,qBAAM,EAAE,CAAC;QAEvC,oEAAoE;QACpE,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAExD,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC;QAEtF,MAAM,WAAW,GAAI;YACjB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM;SACtC,CAAA;QAED,IAAG,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,6CAA6C;YAC7C,gBAAgB,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;QACjD,CAAC;aAAI,CAAC;YACF,qCAAqC;YACrC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAED,sEAAsE;QACtE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE3C,sEAAsE;QACtE,2BAAS;aACJ,IAAI,CAAC,MAAM,CAAC;aACZ,GAAG,CACA,OAAO,EACP,WAAW,CACd,CAAC;IACV,CAAC,CAAC;AACN,CAAC"}
@@ -273,6 +273,14 @@ export declare class A_Context {
273
273
  * Provide the scope that dictates which components are active and can provide extensions for the feature.
274
274
  */
275
275
  scope: A_Scope): Array<A_TYPES__A_StageStep>;
276
+ /**
277
+ * method helps to filter steps in a way that only the most derived classes are kept.
278
+ *
279
+ * @param scope
280
+ * @param items
281
+ * @returns
282
+ */
283
+ private filterToMostDerived;
276
284
  /**
277
285
  * This method returns the feature template definition without any extensions.
278
286
  * It can be used to retrieve the base template for a feature before any modifications are applied.
@@ -382,7 +382,35 @@ class A_Context {
382
382
  });
383
383
  }
384
384
  }
385
- return steps;
385
+ return instance.filterToMostDerived(scope, steps);
386
+ }
387
+ /**
388
+ * method helps to filter steps in a way that only the most derived classes are kept.
389
+ *
390
+ * @param scope
391
+ * @param items
392
+ * @returns
393
+ */
394
+ filterToMostDerived(scope, items) {
395
+ return items.filter(item => {
396
+ const currentClass = typeof item.component === 'string'
397
+ ? scope.resolveConstructor(item.component)
398
+ : A_TypeGuards_helper_1.A_TypeGuards.isContainerInstance(item.component)
399
+ ? item.component.constructor : item.component;
400
+ // Check if this class is parent of any other in the list
401
+ const isParentOfAnother = items.some(other => {
402
+ if (other === item)
403
+ return false;
404
+ const otherClass = typeof other.component === 'string'
405
+ ? scope.resolveConstructor(other.component)
406
+ : A_TypeGuards_helper_1.A_TypeGuards.isContainerInstance(other.component)
407
+ ? other.component.constructor
408
+ : other.component;
409
+ return currentClass.prototype.isPrototypeOf(otherClass.prototype);
410
+ });
411
+ // Keep only classes that are not parent of any other
412
+ return !isParentOfAnother;
413
+ });
386
414
  }
387
415
  /**
388
416
  * This method returns the feature template definition without any extensions.
@@ -509,7 +537,7 @@ class A_Context {
509
537
  });
510
538
  }
511
539
  }
512
- return steps;
540
+ return instance.filterToMostDerived(scope, steps);
513
541
  }
514
542
  /**
515
543
  * Resets the Context to its initial state.
@@ -1 +1 @@
1
- {"version":3,"file":"A-Context.class.js","sourceRoot":"","sources":["../../../../src/global/A-Context/A-Context.class.ts"],"names":[],"mappings":";;;AAcA,wEAA+D;AAE/D,wEAA+D;AAC/D,4DAAmD;AACnD,yDAAgD;AAChD,sEAAkE;AAClE,sEAAkE;AAClE,+DAAsD;AACtD,6DAAyD;AAEzD,4EAA8F;AAC9F,uEAAwE;AACxE,gFAAiF;AACjF,gFAAiF;AAEjF,sFAA4E;AAC5E,uDAAmD;AAInD,oFAAgF;AAQhF,MAAa,SAAS;IAClB,uGAAuG;IACvG,uGAAuG;IACvG,uGAAuG;IACvG;;;;OAIG;IACH,MAAM,KAAK,OAAO;QACd,OAAO,OAAO,CAAC,GAAG,CAAC,kDAAkC,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC;IACzF,CAAC;IACD;;;;OAIG;IACH,MAAM,KAAK,IAAI;QACX,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;IACpC,CAAC;IACD;;;;OAIG;IACH,MAAM,KAAK,WAAW;QAClB,IAAI,eAAe,GAAgC,SAAS,CAAC;QAE7D,IAAI,CAAC;YACD,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAe,GAAG,QAAQ,CAAC;QAC/B,CAAC;QAED,OAAO,eAAe,CAAC;IAC3B,CAAC;IA0CD;;;;OAIG;IACH;QA5BA;;;WAGG;QACO,cAAS,GAAqD,IAAI,OAAO,EAAE,CAAC;QACtF;;;WAGG;QACO,kBAAa,GAAqD,IAAI,OAAO,EAAE,CAAC;QAC1F;;;WAGG;QACO,kBAAa,GAAuD,IAAI,OAAO,EAAE,CAAC;QAC5F;;;WAGG;QACO,iBAAY,GAA0D,IAAI,GAAG,EAAE,CAAC;QAUtF,IAAI,IAAI,GAAG,MAAM,CAAC;QAElB,IAAI,SAAS,CAAC,WAAW,KAAK,QAAQ;YAClC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,kDAAkC,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC;QAE1F,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS;YACnC,IAAI,GAAI,MAAc,CAAC,kDAAkC,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC;QAE9F,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAID;;;;;;OAMG;IACH,MAAM,CAAC,WAAW;QACd,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACvB,SAAS,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1C,CAAC;QAED,OAAO,SAAS,CAAC,SAAS,CAAC;IAC/B,CAAC;IAID;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ;IACX;;OAEG;IACH,KAAc;IACd;;OAEG;IACH,SAA2C;;QAG3C,+BAA+B;QAC/B,MAAM,aAAa,GAAG,CAAA,MAAC,SAAiB,aAAjB,SAAS,uBAAT,SAAS,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjF,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,gCAAc,CACpC,gCAAc,CAAC,6BAA6B,EAC5C,sEAAsE,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,gCAAc,CAChC,gCAAc,CAAC,6BAA6B,EAC5C,kEAAkE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,gCAAc,CAClE,gCAAc,CAAC,iCAAiC,EAChD,aAAa,aAAa,uCAAuC,CAAC,CAAC;QAEvE,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE7C,OAAO,KAAK,CAAC;IACjB,CAAC;IAqCD,MAAM,CAAC,QAAQ,CACX,SAAyC,EACzC,SAAyE;;QAEzE,+BAA+B;QAC/B,MAAM,aAAa,GAAG,CAAA,MAAC,SAAiB,aAAjB,SAAS,uBAAT,SAAS,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjF,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;YAC5C,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,iCAAiC,EAAE,qBAAqB,aAAa,gFAAgF,CAAC,CAAC;QACnM,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,sDAAsD;QACtD,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;YACjC,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,sCAAsC,EAAE,aAAa,aAAa,iCAAiC,CAAC,CAAC;QAGjJ,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,kCAAY,CAAC,eAAe,CAAC,SAAS,CAAC;YACpD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,uBAAO,CAAC,SAAS,IAAI;gBACvB,IAAI,EAAE,aAAa,GAAG,QAAQ;aACjC,EAAE,SAAS,CAAC,CAAC;QAElB,+DAA+D;QAC/D,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;YACzC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErC,uDAAuD;QACvD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5C,4DAA4D;QAC5D,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhD,oCAAoC;QACpC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAmED,MAAM,CAAC,IAAI,CACP,MAEY;;QAGZ,4CAA4C;QAC5C,MAAM,aAAa,GAAG,CAAA,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3E,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,yBAAyB,EAAE,gFAAgF,CAAC,CAAC;QAElK,qDAAqD;QACrD,IAAI,CAAC,CACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;eAC1B,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;eACxC,kCAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;eAC7B,kCAAY,CAAC,UAAU,CAAC,MAAM,CAChC,CAAC;YACJ,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,yBAAyB,EAAE,6DAA6D,aAAa,2FAA2F,CAAC,CAAC;QAE5O,IAAI,QAAkD,CAAC;QACvD,IAAI,QAAkG,CAAA;QAEtG,QAAQ,IAAI,EAAE,CAAC;YACX,0CAA0C;YAC1C,KAAK,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5C,QAAQ,GAAG,MAAM,CAAC,WAA6C,CAAC;gBAChE,QAAQ,GAAG,kCAAe,CAAC;gBAE3B,MAAM;YACV,CAAC;YACD,uCAAuC;YACvC,KAAK,kCAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/C,QAAQ,GAAG,MAA4B,CAAC;gBACxC,QAAQ,GAAG,kCAAe,CAAC;gBAE3B,MAAM;YACV,CAAC;YACD,0CAA0C;YAC1C,KAAK,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5C,QAAQ,GAAG,MAAM,CAAC,WAA6C,CAAC;gBAChE,QAAQ,GAAG,kCAAe,CAAC;gBAE3B,MAAM;YACV,CAAC;YACD,uCAAuC;YACvC,KAAK,kCAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/C,QAAQ,GAAG,MAA4B,CAAC;gBACxC,QAAQ,GAAG,kCAAe,CAAC;gBAE3B,MAAM;YACV,CAAC;YACD,uCAAuC;YACvC,KAAK,kCAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzC,QAAQ,GAAG,MAAM,CAAC,WAA0C,CAAC;gBAC7D,QAAQ,GAAG,kCAAe,CAAC;gBAE3B,MAAM;YACV,CAAC;YACD,oCAAoC;YACpC,KAAK,kCAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5C,QAAQ,GAAG,MAAM,CAAC;gBAClB,QAAQ,GAAG,4BAAY,CAAC;gBAExB,MAAM;YACV,CAAC;YACD,wEAAwE;YACxE,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;qBAC1C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;uBACzB,CAAC,CAAC,IAAI,KAAK,sCAAiB,CAAC,WAAW,CAAC,MAAM,CAAC;uBAChD,CAAC,CAAC,IAAI,KAAK,sCAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CACtD,CAAC;gBACP,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;oBACxB,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,yBAAyB,EAAE,+DAA+D,MAAM,iCAAiC,CAAC,CAAC;gBAE/K,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,QAAQ,GAAG,kCAAe,CAAC;gBAE3B,MAAM;YACV,CAAC;YACD,8CAA8C;YAC9C,OAAO,CAAC,CAAC,CAAC;gBACN,QAAQ,GAAG,MAAM,CAAC;gBAClB,QAAQ,GAAG,qBAAM,CAAC;gBAElB,MAAM;YACV,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YACjG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAkB,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,mCAAmC;QACnC,OAAO,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IAChD,CAAC;IAGD;;;;;;OAMG;IACH,MAAM,CAAC,MAAM;IACT;;OAEG;IACH,KAAc;QAGd,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,gCAAc,CAChC,gCAAc,CAAC,8BAA8B,EAC7C,wFAAwF,CAC3F,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,gCAAc,CAC5D,gCAAc,CAAC,kBAAkB,EACjC,oGAAoG,CACvG,CAAC;QAEF,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;IAC9C,CAAC;IA2CD,MAAM,CAAC,KAAK,CACR,MAAS;;QAGT,qBAAqB;QACrB,MAAM,IAAI,GAAG,CAAA,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAElE,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,mBAAmB;QACnB,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,0BAA0B,EAAE,iFAAiF,CAAC,CAAC;QAEpK,yDAAyD;QACzD,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;eACtC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAExC,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,0BAA0B,EAAE,8DAA8D,IAAI,uCAAuC,CAAC,CAAC;QAEnL,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;gBAEzC,+CAA+C;gBAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC/B,MAAM,IAAI,gCAAc,CACpB,gCAAc,CAAC,kBAAkB,EACjC,8DAA8D,IAAI,mIAAmI,CACxM,CAAC;gBAEN,qEAAqE;gBACrE,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YAE3C,KAAK,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;gBAErC,gDAAgD;gBAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;oBACnC,MAAM,IAAI,gCAAc,CACpB,gCAAc,CAAC,kBAAkB,EACjC,8DAA8D,IAAI,0IAA0I,CAC/M,CAAC;gBAEN,kFAAkF;gBAClF,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YAC/C;gBACI,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,0BAA0B,EAAE,8DAA8D,IAAI,mCAAmC,CAAC,CAAC;QACnL,CAAC;IACL,CAAC;IAGD,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G;;;;;;OAMG;IACH,MAAM,CAAC,eAAe;IAClB;;OAEG;IACH,IAAqB;IACrB;;OAEG;IACH,SAA8C;IAC9C;;OAEG;IACH,QAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;;QAEtC,0BAA0B;QAC1B,MAAM,aAAa,GAAG,CAAA,MAAC,SAAiB,aAAjB,SAAS,uBAAT,SAAS,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjF,mBAAmB;QACnB,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,oCAAoC,EAAE,wEAAwE,CAAC,CAAC;QACxK,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,oCAAoC,EAAE,2EAA2E,CAAC,CAAC;QAEtK,2DAA2D;QAC3D,IAAI,CAAC,kCAAY,CAAC,6BAA6B,CAAC,SAAS,CAAC;YACtD,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,oCAAoC,EAAE,qDAAqD,aAAa,yCAAyC,CAAC,CAAC;QAE/L,MAAM,KAAK,GAA2B;YAClC,wDAAwD;YACxD,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC;YAC1C,2EAA2E;YAC3E,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;SACpD,CAAC;QAEF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB;IACpB;;OAEG;IACH,IAAqB;IACrB;;OAEG;IACH,SAA8C;IAC9C;;OAEG;IACH,KAAc;;QAGd,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,0BAA0B;QAC1B,MAAM,aAAa,GAAG,CAAA,MAAC,SAAiB,aAAjB,SAAS,uBAAT,SAAS,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjF,mBAAmB;QACnB,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,qCAAqC,EAAE,wEAAwE,CAAC,CAAC;QACzK,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,qCAAqC,EAAE,2EAA2E,CAAC,CAAC;QAEvK,2DAA2D;QAC3D,IAAI,CAAC,kCAAY,CAAC,6BAA6B,CAAC,SAAS,CAAC;YACtD,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,qCAAqC,EAAE,qDAAqD,aAAa,yCAAyC,CAAC,CAAC;QAEhM,MAAM,QAAQ,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAEzD,MAAM,KAAK,GAA2B,EAAE,CAAC;QAEzC,iFAAiF;QACjF,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC9C,oFAAoF;YACpF,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAClB,kCAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC;mBACvC,kCAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAChD,EAAE,CAAC;gBACA,qCAAqC;gBACrC,IAAI;qBACC,UAAU,CAAC,QAAQ,CAAC;qBACpB,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;oBACrB,KAAK,CAAC,IAAI,iBACN,SAAS,EAAE,GAAG,IACX,WAAW,EAChB,CAAC;gBACP,CAAC,CAAC,CAAC;YACX,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IACD;;;;;;;;;OASG;IACH,MAAM,CAAC,iBAAiB;IACpB;;;OAGG;IACH,OAAwB;IACxB;;OAEG;IACH,SAA8C;;QAE9C,IAAI,OAAO,CAAC;QAEZ,IAAI,CAAC,OAAO;YACR,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,oCAAoC,EAAE,2EAA2E,CAAC,CAAC;QAC/J,IAAI,CAAC,SAAS;YACV,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,oCAAoC,EAAE,wEAAwE,CAAC,CAAC;QAG5J,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,SAAS,YAAY,yBAAQ;gBAC9B,OAAO,GAAG,2CAAsB,CAAC,QAAQ,CAAC;gBAC1C,MAAM;YACV,KAAK,SAAS,YAAY,+BAAW;gBACjC,OAAO,GAAG,iDAAyB,CAAC,QAAQ,CAAA;gBAC5C,MAAM;YACV,KAAK,SAAS,YAAY,+BAAW;gBACjC,OAAO,GAAG,iDAAyB,CAAC,QAAQ,CAAA;gBAC5C,MAAM;YAEV;gBACI,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,oCAAoC,EAAE,sCAAsC,SAAS,QAAQ,CAAC,CAAC;QAC/I,CAAC;QAED,MAAM,iBAAiB,GAAoD,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,0CACzF,GAAG,CAAC,OAAO,CAAC,0CACZ,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnB,OAAO;YACH,GAAG,CAAC,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,QAAQ,KAAI,EAAE,CAAC;SACzC,CAAC;IACN,CAAC;IAED,6GAA6G;IAC7G,8GAA8G;IAC9G,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAC7G;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB;IACtB;;OAEG;IACH,WAAyC;IACzC;;OAEG;IACH,SAA8C;;QAE9C,0BAA0B;QAC1B,MAAM,aAAa,GAAG,CAAA,MAAC,SAAiB,aAAjB,SAAS,uBAAT,SAAS,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjF,mBAAmB;QACnB,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,gCAAc,CACpC,gCAAc,CAAC,wCAAwC,EACvD,wEAAwE,CAAC,CAAC;QAE9E,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,gCAAc,CACtC,gCAAc,CAAC,wCAAwC,EACvD,gFAAgF,CAAC,CAAC;QAEtF,2DAA2D;QAC3D,IAAI,CAAC,kCAAY,CAAC,iCAAiC,CAAC,SAAS,CAAC;YAC1D,MAAM,IAAI,gCAAc,CAAC,gCAAc,CAAC,wCAAwC,EAAE,qDAAqD,aAAa,yCAAyC,CAAC,CAAC;QAEnM,MAAM,KAAK,GAA2B;YAClC,4DAA4D;YAC5D,kFAAkF;YAClF,yDAAyD;YAEzD,+EAA+E;YAC/E,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC;SACxD,CAAC;QAEF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,6GAA6G;IAC7G,6GAA6G;IAC7G,6GAA6G;IAE7G,MAAM,CAAC,qBAAqB;IACxB;;OAEG;IACH,WAAyC;IACzC;;OAEG;IACH,SAA8C;;QAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,0BAA0B;QAC1B,MAAM,aAAa,GAAG,CAAA,MAAC,SAAiB,aAAjB,SAAS,uBAAT,SAAS,CAAU,WAAW,0CAAE,IAAI,KAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjF,mBAAmB;QACnB,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,gCAAc,CACpC,gCAAc,CAAC,yCAAyC,EACxD,wEAAwE,CAC3E,CAAC;QACF,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,gCAAc,CACtC,gCAAc,CAAC,yCAAyC,EACxD,gFAAgF,CACnF,CAAC;QACF,2DAA2D;QAC3D,IAAI,CAAC,kCAAY,CAAC,iCAAiC,CAAC,SAAS,CAAC;YAC1D,MAAM,IAAI,gCAAc,CACnB,gCAAc,CAAC,yCAAyC,EACrD,qDAAqD,aAAa,yCAAyC,CAC9G,CAAC;QAEV,MAAM,KAAK,GAA2B,EAAE,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpC,iFAAiF;QACjF,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC9C,oFAAoF;YACpF,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAClB,kCAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC;mBACvC,kCAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAChD,EAAE,CAAC;gBACA,qCAAqC;gBACrC,IAAI;qBACC,YAAY,CAAC,WAAW,CAAC;qBACzB,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;oBACrB,KAAK,CAAC,IAAI,iBACN,SAAS,EAAE,GAAG,IACX,WAAW,EAChB,CAAC;gBACP,CAAC,CAAC,CAAC;YACX,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAID;;OAEG;IACH,MAAM,CAAC,KAAK;QACR,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAEzC,QAAQ,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;QAEnC,IAAI,IAAI,GAAG,MAAM,CAAC;QAElB,IAAI,SAAS,CAAC,WAAW,KAAK,QAAQ;YAClC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,kDAAkC,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC;QAE1F,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS;YACnC,IAAI,GAAI,MAAc,CAAC,kDAAkC,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC;QAE9F,QAAQ,CAAC,KAAK,GAAG,IAAI,uBAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAKD,uHAAuH;IACvH,uHAAuH;IACvH,uHAAuH;IACvH;;;;;OAKG;IACH,MAAM,CAAC,2BAA2B,CAAC,KAAU;QACzC,OAAO,kCAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;eACvC,kCAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IACD;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,KAAU;QACrC,OAAO,kCAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC;eACpC,kCAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;eACvC,kCAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAU;QAC9B,OAAO,kCAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;eACvC,kCAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;eACvC,kCAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD;;;;;OAKG;IACH,MAAM,CAAC,2BAA2B,CAAC,KAAU;QACzC,OAAO,kCAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC;eAC1C,kCAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC;eAC1C,kCAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;CAIJ;AA91BD,8BA81BC"}
1
+ {"version":3,"file":"A-Context.class.js","sourceRoot":"","sources":["../../../../src/global/A-Context/A-Context.class.ts"],"names":[],"mappings":"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"}
@@ -57,14 +57,24 @@ function A_Feature_Extend(param1) {
57
57
  throw new A_Feature_error_1.A_FeatureError(A_Feature_error_1.A_FeatureError.FeatureExtensionError, `A-Feature-Extend cannot be used on the method "${propertyKey}" because it is already defined as a Feature with "invoke" set to true. Please remove the A-Feature-Extend decorator or set "invoke" to false in the A-Feature decorator.`);
58
58
  }
59
59
  const existedMetaValue = existedMeta.get(targetRegexp.source) || [];
60
- // Add the new method to the metadata
61
- existedMetaValue.push({
60
+ const existedIndex = existedMetaValue.findIndex(item => item.handler === propertyKey);
61
+ const extension = {
62
62
  name: targetRegexp.source,
63
63
  handler: propertyKey,
64
64
  behavior,
65
65
  before,
66
66
  after
67
- });
67
+ };
68
+ if (existedIndex !== -1) {
69
+ // Update the existing method in the metadata
70
+ existedMetaValue[existedIndex] = extension;
71
+ }
72
+ else {
73
+ // Add the new method to the metadata
74
+ existedMetaValue.push(extension);
75
+ }
76
+ // Add the new method to the metadata
77
+ existedMetaValue.push();
68
78
  // Set the metadata of the method to define a custom Feature with name
69
79
  existedMeta.set(targetRegexp.source, existedMetaValue);
70
80
  // Update the metadata of the container with the new Feature definition
@@ -1 +1 @@
1
- {"version":3,"file":"A-Feature-Extend.decorator.js","sourceRoot":"","sources":["../../../../src/global/A-Feature/A-Feature-Extend.decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"A-Feature-Extend.decorator.js","sourceRoot":"","sources":["../../../../src/global/A-Feature/A-Feature-Extend.decorator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaas/a-concept",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "description": "A-Concept is a framework to build new Applications within or outside the ADAAS ecosystem. This framework is designed to be modular structure regardless environment and program goal.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -79,19 +79,27 @@ export function A_Abstraction_Extend(
79
79
  // Set the metadata of the method to define a custom Stage with name
80
80
  const existedMetaValue = existedMeta.get(setName) || [];
81
81
 
82
- // Add the new method to the metadata
83
- existedMetaValue.push({
82
+ const existedIndex = existedMetaValue.findIndex(item => item.handler === propertyKey);
83
+
84
+ const abstraction = {
84
85
  name: setName,
85
86
  handler: propertyKey,
86
87
  before: config.before || [],
87
88
  after: config.after || [],
88
89
  behavior: config.behavior || 'sync'
89
- });
90
+ }
91
+
92
+ if(existedIndex !== -1) {
93
+ // Update the existing method in the metadata
94
+ existedMetaValue[existedIndex] = abstraction;
95
+ }else{
96
+ // Add the new method to the metadata
97
+ existedMetaValue.push(abstraction);
98
+ }
90
99
 
91
100
  // Set the metadata of the method to define a custom Feature with name
92
101
  existedMeta.set(setName, existedMetaValue);
93
102
 
94
-
95
103
  // Update the metadata of the container with the new Stage definition
96
104
  A_Context
97
105
  .meta(target)
@@ -662,8 +662,46 @@ export class A_Context {
662
662
  }
663
663
  }
664
664
 
665
- return steps;
665
+ return instance.filterToMostDerived(scope, steps);
666
+ }
667
+
668
+
669
+ /**
670
+ * method helps to filter steps in a way that only the most derived classes are kept.
671
+ *
672
+ * @param scope
673
+ * @param items
674
+ * @returns
675
+ */
676
+ private filterToMostDerived(
677
+ scope: A_Scope,
678
+ items: A_TYPES__A_StageStep[]): Array<A_TYPES__A_StageStep> {
679
+ return items.filter(item => {
680
+ const currentClass = typeof item.component === 'string'
681
+ ? scope.resolveConstructor(item.component)
682
+ : A_TypeGuards.isContainerInstance(item.component)
683
+ ? item.component.constructor : item.component;
684
+
685
+ // Check if this class is parent of any other in the list
686
+ const isParentOfAnother = items.some(other => {
687
+ if (other === item) return false;
688
+
689
+ const otherClass = typeof other.component === 'string'
690
+ ? scope.resolveConstructor(other.component)
691
+ : A_TypeGuards.isContainerInstance(other.component)
692
+ ? other.component.constructor
693
+ : other.component;
694
+
695
+
696
+ return currentClass.prototype.isPrototypeOf(otherClass.prototype);
697
+ });
698
+
699
+ // Keep only classes that are not parent of any other
700
+ return !isParentOfAnother;
701
+ });
666
702
  }
703
+
704
+
667
705
  /**
668
706
  * This method returns the feature template definition without any extensions.
669
707
  * It can be used to retrieve the base template for a feature before any modifications are applied.
@@ -825,11 +863,10 @@ export class A_Context {
825
863
  }
826
864
  }
827
865
 
828
- return steps;
866
+ return instance.filterToMostDerived(scope, steps);
829
867
  }
830
868
 
831
869
 
832
-
833
870
  /**
834
871
  * Resets the Context to its initial state.
835
872
  */
@@ -136,14 +136,26 @@ export function A_Feature_Extend(
136
136
 
137
137
  const existedMetaValue = existedMeta.get(targetRegexp.source) || [];
138
138
 
139
- // Add the new method to the metadata
140
- existedMetaValue.push({
139
+ const existedIndex = existedMetaValue.findIndex(item => item.handler === propertyKey);
140
+
141
+ const extension = {
141
142
  name: targetRegexp.source,
142
143
  handler: propertyKey,
143
144
  behavior,
144
145
  before,
145
146
  after
146
- });
147
+ }
148
+
149
+ if (existedIndex !== -1){
150
+ // Update the existing method in the metadata
151
+ existedMetaValue[existedIndex] = extension;
152
+ }else{
153
+ // Add the new method to the metadata
154
+ existedMetaValue.push(extension);
155
+ }
156
+
157
+ // Add the new method to the metadata
158
+ existedMetaValue.push();
147
159
 
148
160
  // Set the metadata of the method to define a custom Feature with name
149
161
  existedMeta.set(targetRegexp.source, existedMetaValue);
@@ -3,6 +3,7 @@ import './test.setup'
3
3
  import { A_Concept } from '@adaas/a-concept/global/A-Concept/A-Concept.class';
4
4
  import { A_Container } from '@adaas/a-concept/global/A-Container/A-Container.class';
5
5
  import { A_Context } from '@adaas/a-concept/global/A-Context/A-Context.class';
6
+ import { A_Scope } from '@adaas/a-concept/global/A-Scope/A-Scope.class';
6
7
 
7
8
  jest.retryTimes(0);
8
9
 
@@ -255,4 +256,69 @@ describe('A-Abstraction Tests', () => {
255
256
 
256
257
  expect(order).toEqual(['step1', 'step3', 'step2', 'step5', 'step4']);
257
258
  })
259
+ it('Should inherit abstraction extensions', async () => {
260
+ const executionOrder: string[] = [];
261
+
262
+ // 1) create a base component with some abstraction
263
+ class My_Component extends A_Component {
264
+
265
+ @A_Concept.Load()
266
+ async feature1() {
267
+ executionOrder.push('stepOne');
268
+ }
269
+ }
270
+
271
+
272
+ class My_Child_Component extends My_Component { }
273
+
274
+ const concept = new A_Concept({
275
+ name: 'TestConcept',
276
+ containers: [
277
+ new A_Container({
278
+ name: 'TestContainer',
279
+ components: [My_Child_Component],
280
+ })
281
+ ]
282
+ });
283
+
284
+ await concept.load();
285
+
286
+ expect(executionOrder).toEqual(['stepOne']);
287
+ });
288
+ it('Should allow to override abstraction extensions', async () => {
289
+ const executionOrder: string[] = [];
290
+
291
+ // 1) create a base component with some abstraction
292
+ class My_Component extends A_Component {
293
+
294
+ @A_Concept.Load()
295
+ async feature1() {
296
+ executionOrder.push('stepOne');
297
+ }
298
+ }
299
+
300
+
301
+ class My_Child_Component extends My_Component {
302
+ @A_Concept.Load()
303
+ async feature1() {
304
+ // do nothing
305
+ executionOrder.push('stepTwo');
306
+
307
+ }
308
+ }
309
+
310
+ const concept = new A_Concept({
311
+ name: 'TestConcept',
312
+ containers: [
313
+ new A_Container({
314
+ name: 'TestContainer',
315
+ components: [My_Child_Component],
316
+ })
317
+ ]
318
+ });
319
+
320
+ await concept.load();
321
+
322
+ expect(executionOrder).toEqual(['stepTwo']);
323
+ });
258
324
  });
@@ -6,279 +6,363 @@ import { A_Feature } from "@adaas/a-concept/global/A-Feature/A-Feature.class";
6
6
  import { A_Scope } from "@adaas/a-concept/global/A-Scope/A-Scope.class";
7
7
  import { A_Caller } from '@adaas/a-concept/global/A-Caller/A_Caller.class';
8
8
  import { A_Context } from '@adaas/a-concept/global/A-Context/A-Context.class';
9
+ import { A_TYPES__ComponentMetaKey } from '@adaas/a-concept/global/A-Component/A-Component.constants';
9
10
 
10
11
  jest.retryTimes(0);
11
12
 
12
13
  describe('A-Feature tests', () => {
13
- it('Should Allow to create a feature from component', async () => {
14
- const testComponent = new A_Component()
15
- A_Context.root.register(testComponent);
14
+ // it('Should Allow to create a feature from component', async () => {
15
+ // const testComponent = new A_Component()
16
+ // A_Context.root.register(testComponent);
17
+
18
+ // const feature = new A_Feature({
19
+ // name: 'testFeature',
20
+ // component: testComponent,
21
+ // });
22
+
23
+ // expect(feature).toBeInstanceOf(A_Feature);
24
+ // expect(feature.scope.parent).toBe(A_Context.root);
25
+
26
+ // });
27
+ // it('Should Allow to create a feature with steps', async () => {
28
+ // const template = [
29
+ // {
30
+ // name: 'A_Component.testHandler',
31
+ // component: A_Component,
32
+ // handler: 'testHandler',
33
+ // }
34
+ // ]
35
+
36
+ // const feature = new A_Feature({
37
+ // name: 'testFeature',
38
+ // scope: new A_Scope(),
39
+ // template
40
+ // });
41
+
42
+ // expect(feature).toBeInstanceOf(A_Feature);
43
+ // });
44
+ // it('Should be possible to execute a feature with steps as a template on the component', async () => {
45
+ // // 1) create a base component with some feature
46
+ // class MyExtendedComponent extends A_Component {
47
+
48
+ // async testHandler(
49
+ // @A_Inject(A_Caller) caller: MyComponent
50
+ // ) {
51
+ // caller.sum = 2;
52
+ // }
53
+ // }
54
+
55
+ // // 2) create a custom component with a defined template feature
56
+ // class MyComponent extends A_Component {
57
+ // sum: number = 0;
58
+
59
+ // @A_Feature.Define({
60
+ // invoke: true,
61
+ // template: [{
62
+ // name: 'MyExtendedComponent.testHandler',
63
+ // component: MyExtendedComponent,
64
+ // handler: 'testHandler',
65
+ // behavior: 'sync',
66
+ // before: [],
67
+ // after: []
68
+ // },
69
+ // {
70
+ // name: 'MyExtendedComponent.testHandler',
71
+ // component: MyExtendedComponent,
72
+ // handler: 'testHandler'
73
+ // }]
74
+ // })
75
+ // async testHandler() { }
76
+ // }
77
+
78
+
79
+ // // 3) create a running scope
80
+ // const scope = new A_Scope({ name: 'TestScope' });
81
+ // scope.register(MyExtendedComponent);
82
+ // scope.register(MyComponent);
83
+
84
+ // // 4) create an instance of the component from the scope
85
+ // const myComponent = scope.resolve(MyComponent);
86
+ // expect(myComponent).toBeInstanceOf(MyComponent);
87
+ // expect(myComponent.sum).toBe(0);
88
+
89
+ // // 5) call the feature caller to execute the feature
90
+ // await myComponent.testHandler();
91
+
92
+ // // 6) check the results
93
+ // expect(myComponent.sum).toBe(2);
94
+
95
+ // });
96
+ // it('Should be possible to execute a feature with steps as a template on the component with string component declaration', async () => {
97
+ // // 1) create a base component with some feature
98
+ // class MyExtendedComponent2 extends A_Component {
99
+
100
+ // async testHandler(
101
+ // @A_Inject(A_Caller) caller: MyComponent2
102
+ // ) {
103
+ // caller.sum = 2;
104
+ // }
105
+ // }
106
+
107
+ // // 2) create a custom component with a defined template feature
108
+ // class MyComponent2 extends A_Component {
109
+ // sum: number = 0;
110
+
111
+ // @A_Feature.Define({
112
+ // invoke: true,
113
+ // template: [{
114
+ // name: 'MyExtendedComponent2.testHandler',
115
+ // component: 'MyExtendedComponent2',
116
+ // handler: 'testHandler',
117
+ // behavior: 'sync',
118
+ // before: [],
119
+ // after: []
120
+ // }]
121
+ // })
122
+ // async testHandler() { }
123
+ // }
124
+
125
+
126
+ // // 3) create a running scope
127
+ // const scope = new A_Scope({ name: 'TestScope' });
128
+ // scope.register(MyExtendedComponent2);
129
+ // scope.register(MyComponent2);
130
+
131
+ // // 4) create an instance of the component from the scope
132
+ // const myComponent = scope.resolve(MyComponent2);
133
+ // expect(myComponent).toBeInstanceOf(MyComponent2);
134
+ // expect(myComponent.sum).toBe(0);
135
+
136
+ // // 5) call the feature caller to execute the feature
137
+ // await myComponent.testHandler();
138
+
139
+ // // 6) check the results
140
+ // expect(myComponent.sum).toBe(2);
141
+
142
+ // });
143
+ // it('Should execute feature steps in base order', async () => {
144
+ // const executionOrder: string[] = [];
145
+
146
+ // // 1) create a base component with some feature
147
+ // class My_Component extends A_Component {
148
+ // async methodA() {
149
+ // await this.call('myFeature')
150
+ // }
151
+
152
+ // @A_Feature.Extend({
153
+ // name: 'myFeature',
154
+ // })
155
+ // async stepOne(
156
+ // ) {
157
+ // executionOrder.push('stepOne');
158
+ // }
159
+
160
+ // @A_Feature.Extend({
161
+ // name: 'myFeature',
162
+ // })
163
+ // async stepTwo(
164
+ // ) {
165
+ // executionOrder.push('stepTwo');
166
+ // }
167
+
168
+ // @A_Feature.Extend({
169
+ // name: 'myFeature',
170
+ // })
171
+ // async stepThree(
172
+ // ) {
173
+ // executionOrder.push('stepThree');
174
+ // }
175
+ // }
176
+
177
+
178
+ // // 2) create a running scope
179
+ // const scope = new A_Scope({ name: 'TestScope', components: [My_Component] });
180
+
181
+ // // 3) create an instance of the component from the scope
182
+ // const myComponent = scope.resolve(My_Component);
183
+ // expect(myComponent).toBeInstanceOf(My_Component);
184
+
185
+ // // 4) call the feature caller to execute the feature
186
+ // await myComponent.methodA();
187
+
188
+ // // 5) check the results
189
+ // expect(executionOrder).toEqual(['stepOne', 'stepTwo', 'stepThree']);
190
+ // });
191
+ // it('Should execute feature steps in proper order', async () => {
192
+ // const executionOrder: string[] = [];
193
+
194
+ // // 1) create a base component with some feature
195
+ // class My_Component extends A_Component {
196
+ // async methodA() {
197
+ // await this.call('myFeature')
198
+ // }
199
+
200
+ // @A_Feature.Extend({
201
+ // name: 'myFeature',
202
+ // after: ['My_Component.stepTwo'],
203
+ // })
204
+ // async stepOne(
205
+ // ) {
206
+ // executionOrder.push('stepOne');
207
+ // }
208
+
209
+ // @A_Feature.Extend({
210
+ // name: 'myFeature',
211
+ // })
212
+ // async stepTwo(
213
+ // ) {
214
+ // executionOrder.push('stepTwo');
215
+ // }
216
+ // }
217
+
218
+
219
+ // // 2) create a running scope
220
+ // const scope = new A_Scope({ name: 'TestScope', components: [My_Component] });
221
+
222
+ // // 3) create an instance of the component from the scope
223
+ // const myComponent = scope.resolve(My_Component);
224
+ // expect(myComponent).toBeInstanceOf(My_Component);
225
+
226
+ // // 4) call the feature caller to execute the feature
227
+ // await myComponent.methodA();
228
+
229
+ // // 5) check the results
230
+ // expect(executionOrder).toEqual(['stepTwo', 'stepOne']);
231
+ // });
232
+
233
+ // it('Should allow to define a feature', async () => {
234
+ // const executionOrder: string[] = [];
235
+
236
+ // // 1) create a base component with some feature
237
+ // class My_Component extends A_Component {
238
+
239
+
240
+ // @A_Feature.Define({ invoke: true })
241
+ // @A_Feature.Extend({
242
+ // name: 'myFeature',
243
+ // })
244
+ // async feature1(
245
+ // @A_Inject(A_Component) component: A_Component
246
+ // ) { }
247
+
248
+ // @A_Feature.Extend({
249
+ // name: 'feature1',
250
+ // })
251
+ // async feature1Extension() {
252
+ // executionOrder.push('stepOne');
253
+ // }
254
+
255
+ // @A_Feature.Define()
256
+ // async feature2() {
257
+ // await this.call('feature2');
258
+ // }
259
+
260
+ // @A_Feature.Extend({
261
+ // name: 'feature2',
262
+ // })
263
+ // async feature2Extension() {
264
+ // executionOrder.push('stepTwo');
265
+ // }
266
+
267
+ // }
268
+
269
+
270
+ // // 2) create a running scope
271
+ // const scope = new A_Scope({ name: 'TestScope', components: [My_Component] });
272
+
273
+ // // 3) create an instance of the component from the scope
274
+ // const myComponent = scope.resolve(My_Component);
275
+ // expect(myComponent).toBeInstanceOf(My_Component);
16
276
 
17
- const feature = new A_Feature({
18
- name: 'testFeature',
19
- component: testComponent,
20
- });
21
-
22
- expect(feature).toBeInstanceOf(A_Feature);
23
- expect(feature.scope.parent).toBe(A_Context.root);
24
-
25
- });
26
- it('Should Allow to create a feature with steps', async () => {
27
- const template = [
28
- {
29
- name: 'A_Component.testHandler',
30
- component: A_Component,
31
- handler: 'testHandler',
32
- }
33
- ]
34
-
35
- const feature = new A_Feature({
36
- name: 'testFeature',
37
- scope: new A_Scope(),
38
- template
39
- });
40
-
41
- expect(feature).toBeInstanceOf(A_Feature);
42
- });
43
- it('Should be possible to execute a feature with steps as a template on the component', async () => {
44
- // 1) create a base component with some feature
45
- class MyExtendedComponent extends A_Component {
46
-
47
- async testHandler(
48
- @A_Inject(A_Caller) caller: MyComponent
49
- ) {
50
- caller.sum = 2;
51
- }
52
- }
53
-
54
- // 2) create a custom component with a defined template feature
55
- class MyComponent extends A_Component {
56
- sum: number = 0;
57
-
58
- @A_Feature.Define({
59
- invoke: true,
60
- template: [{
61
- name: 'MyExtendedComponent.testHandler',
62
- component: MyExtendedComponent,
63
- handler: 'testHandler',
64
- behavior: 'sync',
65
- before: [],
66
- after: []
67
- },
68
- {
69
- name: 'MyExtendedComponent.testHandler',
70
- component: MyExtendedComponent,
71
- handler: 'testHandler'
72
- }]
73
- })
74
- async testHandler() { }
75
- }
76
-
77
-
78
- // 3) create a running scope
79
- const scope = new A_Scope({ name: 'TestScope' });
80
- scope.register(MyExtendedComponent);
81
- scope.register(MyComponent);
82
-
83
- // 4) create an instance of the component from the scope
84
- const myComponent = scope.resolve(MyComponent);
85
- expect(myComponent).toBeInstanceOf(MyComponent);
86
- expect(myComponent.sum).toBe(0);
87
-
88
- // 5) call the feature caller to execute the feature
89
- await myComponent.testHandler();
90
-
91
- // 6) check the results
92
- expect(myComponent.sum).toBe(2);
93
-
94
- });
95
- it('Should be possible to execute a feature with steps as a template on the component with string component declaration', async () => {
96
- // 1) create a base component with some feature
97
- class MyExtendedComponent2 extends A_Component {
98
-
99
- async testHandler(
100
- @A_Inject(A_Caller) caller: MyComponent2
101
- ) {
102
- caller.sum = 2;
103
- }
104
- }
105
-
106
- // 2) create a custom component with a defined template feature
107
- class MyComponent2 extends A_Component {
108
- sum: number = 0;
109
-
110
- @A_Feature.Define({
111
- invoke: true,
112
- template: [{
113
- name: 'MyExtendedComponent2.testHandler',
114
- component: 'MyExtendedComponent2',
115
- handler: 'testHandler',
116
- behavior: 'sync',
117
- before: [],
118
- after: []
119
- }]
120
- })
121
- async testHandler() { }
122
- }
123
-
124
-
125
- // 3) create a running scope
126
- const scope = new A_Scope({ name: 'TestScope' });
127
- scope.register(MyExtendedComponent2);
128
- scope.register(MyComponent2);
129
-
130
- // 4) create an instance of the component from the scope
131
- const myComponent = scope.resolve(MyComponent2);
132
- expect(myComponent).toBeInstanceOf(MyComponent2);
133
- expect(myComponent.sum).toBe(0);
134
-
135
- // 5) call the feature caller to execute the feature
136
- await myComponent.testHandler();
137
-
138
- // 6) check the results
139
- expect(myComponent.sum).toBe(2);
140
-
141
- });
142
- it('Should execute feature steps in base order', async () => {
277
+ // // 4) call the feature caller to execute the feature
278
+ // await myComponent.feature1(new A_Component());
279
+
280
+ // await myComponent.feature2();
281
+
282
+ // // 5) check the results
283
+ // expect(executionOrder).toEqual(['stepOne', 'stepTwo']);
284
+ // });
285
+ it('Should inherit feature definitions & extensions', async () => {
143
286
  const executionOrder: string[] = [];
144
287
 
145
288
  // 1) create a base component with some feature
146
289
  class My_Component extends A_Component {
147
- async methodA() {
148
- await this.call('myFeature')
149
- }
150
290
 
151
- @A_Feature.Extend({
152
- name: 'myFeature',
153
- })
154
- async stepOne(
155
- ) {
291
+ @A_Feature.Define({ invoke: false })
292
+ async feature1() {
156
293
  executionOrder.push('stepOne');
157
- }
158
294
 
159
- @A_Feature.Extend({
160
- name: 'myFeature',
161
- })
162
- async stepTwo(
163
- ) {
164
- executionOrder.push('stepTwo');
295
+ await this.call('feature1');
165
296
  }
166
297
 
167
298
  @A_Feature.Extend({
168
- name: 'myFeature',
299
+ name: 'feature1',
169
300
  })
170
- async stepThree(
301
+ async feature1Extension(
302
+ @A_Inject(A_Scope) scope: A_Scope
171
303
  ) {
172
- executionOrder.push('stepThree');
304
+ executionOrder.push('stepTwo');
173
305
  }
174
306
  }
175
307
 
176
308
 
309
+ class My_Child_Component extends My_Component { }
310
+
311
+
177
312
  // 2) create a running scope
178
- const scope = new A_Scope({ name: 'TestScope', components: [My_Component] });
313
+ const scope = new A_Scope({ name: 'TestScope', components: [My_Child_Component] });
179
314
 
180
315
  // 3) create an instance of the component from the scope
181
- const myComponent = scope.resolve(My_Component);
182
- expect(myComponent).toBeInstanceOf(My_Component);
316
+ const myComponent = scope.resolve(My_Child_Component);
317
+ expect(myComponent).toBeInstanceOf(My_Child_Component);
183
318
 
184
- // 4) call the feature caller to execute the feature
185
- await myComponent.methodA();
319
+ await myComponent.feature1();
186
320
 
187
- // 5) check the results
188
- expect(executionOrder).toEqual(['stepOne', 'stepTwo', 'stepThree']);
321
+ expect(executionOrder).toEqual(['stepOne', 'stepTwo']);
189
322
  });
190
- it('Should execute feature steps in proper order', async () => {
323
+
324
+
325
+ it('Should allow override feature extension', async () => {
191
326
  const executionOrder: string[] = [];
192
327
 
193
328
  // 1) create a base component with some feature
194
329
  class My_Component extends A_Component {
195
- async methodA() {
196
- await this.call('myFeature')
197
- }
198
330
 
199
- @A_Feature.Extend({
200
- name: 'myFeature',
201
- after: ['My_Component.stepTwo'],
202
- })
203
- async stepOne(
204
- ) {
331
+ @A_Feature.Define({ invoke: true })
332
+ async feature1() {
205
333
  executionOrder.push('stepOne');
206
334
  }
207
335
 
208
336
  @A_Feature.Extend({
209
- name: 'myFeature',
337
+ name: 'feature1',
210
338
  })
211
- async stepTwo(
339
+ async feature1Extension(
340
+ @A_Inject(A_Scope) scope: A_Scope
212
341
  ) {
213
342
  executionOrder.push('stepTwo');
214
343
  }
215
344
  }
216
345
 
217
346
 
218
- // 2) create a running scope
219
- const scope = new A_Scope({ name: 'TestScope', components: [My_Component] });
220
-
221
- // 3) create an instance of the component from the scope
222
- const myComponent = scope.resolve(My_Component);
223
- expect(myComponent).toBeInstanceOf(My_Component);
224
-
225
- // 4) call the feature caller to execute the feature
226
- await myComponent.methodA();
227
-
228
- // 5) check the results
229
- expect(executionOrder).toEqual(['stepTwo', 'stepOne']);
230
- });
231
-
232
- it('Should allow to define a feature', async () => {
233
- const executionOrder: string[] = [];
234
-
235
- // 1) create a base component with some feature
236
- class My_Component extends A_Component {
237
-
238
-
239
- @A_Feature.Define({ invoke: true })
240
- @A_Feature.Extend({
241
- name: 'myFeature',
242
- })
243
- async feature1(
244
- @A_Inject(A_Component) component: A_Component
245
- ) { }
347
+ class My_Child_Component extends My_Component {
246
348
 
247
- @A_Feature.Extend({
248
- name: 'feature1',
249
- })
250
- async feature1Extension() {
251
- executionOrder.push('stepOne');
252
- }
253
-
254
- @A_Feature.Define()
255
- async feature2() {
256
- await this.call('feature2');
257
- }
258
-
259
- @A_Feature.Extend({
260
- name: 'feature2',
261
- })
262
- async feature2Extension() {
263
- executionOrder.push('stepTwo');
349
+ async feature1Extension(
350
+ @A_Inject(A_Scope) scope: A_Scope
351
+ ) {
352
+ executionOrder.push('stepThree');
264
353
  }
265
-
266
354
  }
267
355
 
268
356
 
269
357
  // 2) create a running scope
270
- const scope = new A_Scope({ name: 'TestScope', components: [My_Component] });
358
+ const scope = new A_Scope({ name: 'TestScope', components: [My_Child_Component] });
271
359
 
272
360
  // 3) create an instance of the component from the scope
273
- const myComponent = scope.resolve(My_Component);
274
- expect(myComponent).toBeInstanceOf(My_Component);
361
+ const myComponent = scope.resolve(My_Child_Component);
362
+ expect(myComponent).toBeInstanceOf(My_Child_Component);
275
363
 
276
- // 4) call the feature caller to execute the feature
277
- await myComponent.feature1(new A_Component());
364
+ await myComponent.feature1();
278
365
 
279
- await myComponent.feature2();
280
-
281
- // 5) check the results
282
- expect(executionOrder).toEqual(['stepOne', 'stepTwo']);
366
+ expect(executionOrder).toEqual(['stepOne', 'stepThree']);
283
367
  });
284
368
  });