@adaas/a-concept 0.0.39 → 0.0.41

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 (72) hide show
  1. package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.js +1 -0
  2. package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.js.map +1 -1
  3. package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js +10 -0
  4. package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js.map +1 -1
  5. package/dist/src/decorators/A-Feature/A-Feature.decorator.types.d.ts +1 -0
  6. package/dist/src/global/A-Abstraction/A-Abstraction.class.d.ts +8 -2
  7. package/dist/src/global/A-Abstraction/A-Abstraction.class.js +5 -1
  8. package/dist/src/global/A-Abstraction/A-Abstraction.class.js.map +1 -1
  9. package/dist/src/global/A-Abstraction/A-Abstraction.types.d.ts +13 -4
  10. package/dist/src/global/A-Abstraction/A-Abstraction.types.js.map +1 -1
  11. package/dist/src/global/A-Component/A-Component.class.d.ts +11 -4
  12. package/dist/src/global/A-Component/A-Component.class.js +13 -4
  13. package/dist/src/global/A-Component/A-Component.class.js.map +1 -1
  14. package/dist/src/global/A-Concept/A_Concept.class.d.ts +11 -10
  15. package/dist/src/global/A-Concept/A_Concept.class.js +24 -20
  16. package/dist/src/global/A-Concept/A_Concept.class.js.map +1 -1
  17. package/dist/src/global/A-Concept/A_Concept.meta.d.ts +4 -4
  18. package/dist/src/global/A-Concept/A_Concept.meta.js +14 -6
  19. package/dist/src/global/A-Concept/A_Concept.meta.js.map +1 -1
  20. package/dist/src/global/A-Container/A-Container.class.d.ts +3 -4
  21. package/dist/src/global/A-Container/A-Container.class.js +8 -8
  22. package/dist/src/global/A-Container/A-Container.class.js.map +1 -1
  23. package/dist/src/global/A-Context/A-Context.class.d.ts +6 -11
  24. package/dist/src/global/A-Context/A-Context.class.js +32 -32
  25. package/dist/src/global/A-Context/A-Context.class.js.map +1 -1
  26. package/dist/src/global/A-Entity/A-Entity.class.d.ts +2 -2
  27. package/dist/src/global/A-Entity/A-Entity.class.js +4 -4
  28. package/dist/src/global/A-Entity/A-Entity.class.js.map +1 -1
  29. package/dist/src/global/A-Feature/A-Feature.class.d.ts +10 -8
  30. package/dist/src/global/A-Feature/A-Feature.class.js +20 -28
  31. package/dist/src/global/A-Feature/A-Feature.class.js.map +1 -1
  32. package/dist/src/global/A-Feature/A-Feature.types.d.ts +13 -2
  33. package/dist/src/global/A-Feature/A-Feature.types.js.map +1 -1
  34. package/dist/src/global/A-Meta/A-Meta.class.d.ts +6 -0
  35. package/dist/src/global/A-Meta/A-Meta.class.js +8 -0
  36. package/dist/src/global/A-Meta/A-Meta.class.js.map +1 -1
  37. package/dist/src/global/A-Scope/A-Scope.class.d.ts +14 -0
  38. package/dist/src/global/A-Scope/A-Scope.class.js +48 -5
  39. package/dist/src/global/A-Scope/A-Scope.class.js.map +1 -1
  40. package/dist/src/global/A-Stage/A-Stage.class.d.ts +3 -2
  41. package/dist/src/global/A-Stage/A-Stage.class.js +18 -5
  42. package/dist/src/global/A-Stage/A-Stage.class.js.map +1 -1
  43. package/dist/src/global/A-Stage/A-Stage.error.d.ts +3 -0
  44. package/dist/src/global/A-Stage/A-Stage.error.js +8 -0
  45. package/dist/src/global/A-Stage/A-Stage.error.js.map +1 -0
  46. package/dist/src/helpers/StepsManager.class.d.ts +17 -0
  47. package/dist/src/helpers/StepsManager.class.js +41 -3
  48. package/dist/src/helpers/StepsManager.class.js.map +1 -1
  49. package/examples/simple/components/A.component.ts +12 -3
  50. package/examples/simple/concept.ts +10 -4
  51. package/examples/simple/containers/Main.container.ts +6 -5
  52. package/examples/simple-http-server/concept.ts +1 -0
  53. package/examples/simple-http-server/containers/http-server.container.ts +4 -2
  54. package/package.json +1 -1
  55. package/src/decorators/A-Feature/A-Feature-Define.decorator.ts +1 -0
  56. package/src/decorators/A-Feature/A-Feature-Extend.decorator.ts +17 -0
  57. package/src/decorators/A-Feature/A-Feature.decorator.types.ts +1 -0
  58. package/src/global/A-Abstraction/A-Abstraction.class.ts +11 -3
  59. package/src/global/A-Abstraction/A-Abstraction.types.ts +13 -6
  60. package/src/global/A-Component/A-Component.class.ts +12 -7
  61. package/src/global/A-Concept/A_Concept.class.ts +29 -21
  62. package/src/global/A-Concept/A_Concept.meta.ts +8 -15
  63. package/src/global/A-Container/A-Container.class.ts +13 -11
  64. package/src/global/A-Context/A-Context.class.ts +37 -99
  65. package/src/global/A-Entity/A-Entity.class.ts +5 -4
  66. package/src/global/A-Feature/A-Feature.class.ts +40 -36
  67. package/src/global/A-Feature/A-Feature.types.ts +14 -2
  68. package/src/global/A-Meta/A-Meta.class.ts +10 -0
  69. package/src/global/A-Scope/A-Scope.class.ts +61 -5
  70. package/src/global/A-Stage/A-Stage.class.ts +34 -11
  71. package/src/global/A-Stage/A-Stage.error.ts +9 -0
  72. package/src/helpers/StepsManager.class.ts +63 -3
@@ -11,8 +11,9 @@ import { A_Scope } from "../A-Scope/A-Scope.class";
11
11
  * A-Stage is a common object that uses to simplify logic and re-use of A-Feature internals for better composition.
12
12
  */
13
13
  export declare class A_Stage {
14
- private feature;
15
- private _steps;
14
+ readonly name: string;
15
+ private readonly feature;
16
+ private readonly _steps;
16
17
  constructor(feature: A_Feature, _steps?: A_TYPES__A_StageStep[]);
17
18
  status: A_TYPES__A_Stage_Status;
18
19
  /**
@@ -16,6 +16,7 @@ const A_Feature_class_1 = require("../A-Feature/A-Feature.class");
16
16
  const A_Stage_types_1 = require("./A-Stage.types");
17
17
  const A_Container_class_1 = require("../A-Container/A-Container.class");
18
18
  const A_Scope_class_1 = require("../A-Scope/A-Scope.class");
19
+ const A_Stage_error_1 = require("./A-Stage.error");
19
20
  /**
20
21
  * A_Stage is a set of A_Functions within A_Feature that should be run in a specific order.
21
22
  * Each stage may contain one or more functions.
@@ -25,9 +26,17 @@ const A_Scope_class_1 = require("../A-Scope/A-Scope.class");
25
26
  */
26
27
  class A_Stage {
27
28
  constructor(feature, _steps = []) {
29
+ this.name = 'A_Stage';
30
+ this.status = A_Stage_types_1.A_TYPES__A_Stage_Status.INITIALIZED;
28
31
  this.feature = feature;
29
32
  this._steps = _steps;
30
- this.status = A_Stage_types_1.A_TYPES__A_Stage_Status.INITIALIZED;
33
+ this.name = `${this.feature.name}::a-stage:[sync:${this
34
+ .syncSteps
35
+ .map(s => s.component.name + '.' + s.handler)
36
+ .join(' -> ')}][async:${this
37
+ .asyncSteps
38
+ .map(s => s.component.name + '.' + s.handler)
39
+ .join(' -> ')}]`;
31
40
  }
32
41
  get before() {
33
42
  return this._steps.reduce((acc, step) => ([
@@ -68,7 +77,6 @@ class A_Stage {
68
77
  if (a_utils_1.A_CommonHelper.isInheritedFrom(arg.target, A_Feature_class_1.A_Feature))
69
78
  return this.feature;
70
79
  return scope
71
- .merge(A_Context_class_1.A_Context.scope(this.feature))
72
80
  .resolve(arg.target);
73
81
  })));
74
82
  });
@@ -94,7 +102,7 @@ class A_Stage {
94
102
  // TODO: probably would be better to do it another way. let's think about it
95
103
  const instance = component instanceof A_Container_class_1.A_Container
96
104
  ? component
97
- : A_Context_class_1.A_Context.scope(this.feature).resolve(component);
105
+ : this.feature.Scope.resolve(component);
98
106
  if (!instance)
99
107
  throw new Error(`Unable to resolve component ${component.name}`);
100
108
  if (!instance[handler])
@@ -111,7 +119,7 @@ class A_Stage {
111
119
  return __awaiter(this, void 0, void 0, function* () {
112
120
  const instance = yield this.getStepInstance(step);
113
121
  const callArgs = yield this.getStepArgs(step, scope);
114
- return instance[step.handler](...callArgs);
122
+ return yield instance[step.handler](...callArgs);
115
123
  });
116
124
  }
117
125
  /**
@@ -125,6 +133,8 @@ class A_Stage {
125
133
  * Scope to be used to resolve the steps dependencies
126
134
  */
127
135
  scope = new A_Scope_class_1.A_Scope({}, {}), params) {
136
+ scope = scope.inherit(this.feature.Scope);
137
+ console.log(' -> Init stage processing:', this.name);
128
138
  if (!this.processed)
129
139
  this.processed = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
130
140
  try {
@@ -143,7 +153,9 @@ class A_Stage {
143
153
  new Promise((r, j) => __awaiter(this, void 0, void 0, function* () {
144
154
  try {
145
155
  for (const step of syncSteps) {
156
+ console.log(' - -> Processing stage step:', step.handler, ' with Regexp: ', step.name);
146
157
  yield this.callStepHandler(step, scope);
158
+ console.log(' - -> Finished processing stage step:', step.handler);
147
159
  }
148
160
  return r();
149
161
  }
@@ -153,6 +165,7 @@ class A_Stage {
153
165
  }))
154
166
  ]);
155
167
  this.completed();
168
+ console.log(' -> Finished stage processing:', this.name);
156
169
  return resolve();
157
170
  }
158
171
  catch (error) {
@@ -180,7 +193,7 @@ class A_Stage {
180
193
  }
181
194
  failed(error) {
182
195
  this.status = A_Stage_types_1.A_TYPES__A_Stage_Status.FAILED;
183
- this.feature.failed(error);
196
+ this.feature.failed(new A_Stage_error_1.A_StageError(error));
184
197
  }
185
198
  // ==========================================
186
199
  // ============ Serialization ===============
@@ -1 +1 @@
1
- {"version":3,"file":"A-Stage.class.js","sourceRoot":"","sources":["../../../../src/global/A-Stage/A-Stage.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"A-Stage.class.js","sourceRoot":"","sources":["../../../../src/global/A-Stage/A-Stage.class.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyD;AACzD,kEAAyD;AACzD,kEAAyD;AACzD,mDAAkJ;AAClJ,wEAA+D;AAC/D,4DAAmD;AACnD,mDAA+C;AAG/C;;;;;;GAMG;AACH,MAAa,OAAO;IAOhB,YACI,OAAkB,EAClB,SAAiC,EAAE;QAP9B,SAAI,GAAW,SAAS,CAAC;QAqBlC,WAAM,GAA4B,uCAAuB,CAAC,WAAW,CAAC;QAZlE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,IAAI;aAClD,SAAS;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aAC5C,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI;aACvB,UAAU;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAE7B,CAAC;IASD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,GAAG,GAAG;YACN,GAAG,IAAI,CAAC,MAAM;SACjB,CAAC,EAAE,EAAc,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,GAAG,GAAG;YACN,GAAG,IAAI,CAAC,KAAK;SAChB,CAAC,EAAE,EAAc,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAGD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAChE,CAAC;IAGD;;;;;OAKG;IACa,WAAW,CACvB,IAA0B,EAC1B,KAAc;;YAGd,OAAO,OAAO;iBACT,GAAG,CAAC,2BAAS;iBACT,IAAI,CACD,IAAI,CAAC,SAAS,YAAY,+BAAW;gBACjC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW;gBAC5B,CAAC,CAAC,IAAI,CAAC,SAAS,CACvB;iBACA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;iBACxB,GAAG,CAAC,CAAM,GAAG,EAAC,EAAE;gBACb,IAAI,wBAAc,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,2BAAS,CAAC;oBACrD,OAAO,IAAI,CAAC,OAAO,CAAC;gBAExB,OAAO,KAAK;qBACP,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC,CAAA,CAAC,CACL,CAAA;QACT,CAAC;KAAA;IAGD;;;;;OAKG;IACH,GAAG,CACC,IAA0B;QAE1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD;;;;;OAKG;IACO,eAAe,CAAC,IAA0B;QAChD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAGpC,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,SAAS,YAAY,+BAAW;YAC7C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,iBAAiB,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAID;;;;;OAKG;IACa,eAAe,CAC3B,IAA0B,EAC1B,KAAc;;YAEd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAErD,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QACrD,CAAC;KAAA;IAGD;;;;OAIG;IACG,OAAO;;QACT;;WAEG;QACH,QAAiB,IAAI,uBAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EACpC,MAA2D;YAG3D,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAG1C,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAErD,IAAI,CAAC,IAAI,CAAC,SAAS;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CACxB,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;oBACtB,IAAI,CAAC;wBACD,IAAI,CAAC,MAAM,GAAG,uCAAuB,CAAC,UAAU,CAAC;wBAEjD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;4BACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjD,CAAC;wBAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;wBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;wBAE1E,kBAAkB;wBAClB,MAAM,OAAO;6BACR,GAAG,CAAC;4BAED,sDAAsD;4BACtD,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;4BAE5D,mDAAmD;4BACnD,IAAI,OAAO,CACP,CAAO,CAAC,EAAE,CAAC,EAAE,EAAE;gCACX,IAAI,CAAC;oCACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wCAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wCAEvF,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wCAExC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oCACvE,CAAC;oCAED,OAAO,CAAC,EAAE,CAAC;gCACf,CAAC;gCAAC,OAAO,KAAK,EAAE,CAAC;oCAEb,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;gCACpB,CAAC;4BACL,CAAC,CAAA,CACJ;yBACJ,CAAC,CAAC;wBAEP,IAAI,CAAC,SAAS,EAAE,CAAC;wBAEjB,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzD,OAAO,OAAO,EAAE,CAAC;oBAErB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAEnB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACL,CAAC,CAAA,CAAC,CAAC;YAGX,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;KAAA;IAGD;;;OAGG;IACH,IAAI;QACA,IAAI,CAAC,MAAM,GAAG,uCAAuB,CAAC,OAAO,CAAC;QAE9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAKD,6CAA6C;IAC7C,4CAA4C;IAC5C,6CAA6C;IAEnC,SAAS;QACf,IAAI,CAAC,MAAM,GAAG,uCAAuB,CAAC,SAAS,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAES,MAAM,CACZ,KAAgC;QAEhC,IAAI,CAAC,MAAM,GAAG,uCAAuB,CAAC,MAAM,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,4BAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IAID,6CAA6C;IAC7C,6CAA6C;IAC7C,6CAA6C;IAG7C;;;OAGG;IACH,MAAM;QAEF,OAAO;YACH,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAA;IACL,CAAC;CACJ;AA/QD,0BA+QC"}
@@ -0,0 +1,3 @@
1
+ import { A_Error } from "@adaas/a-utils";
2
+ export declare class A_StageError extends A_Error {
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.A_StageError = void 0;
4
+ const a_utils_1 = require("@adaas/a-utils");
5
+ class A_StageError extends a_utils_1.A_Error {
6
+ }
7
+ exports.A_StageError = A_StageError;
8
+ //# sourceMappingURL=A-Stage.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A-Stage.error.js","sourceRoot":"","sources":["../../../../src/global/A-Stage/A-Stage.error.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAGzC,MAAa,YAAa,SAAQ,iBAAO;CAKxC;AALD,oCAKC"}
@@ -14,3 +14,20 @@ export declare class StepsManager {
14
14
  private visit;
15
15
  toStages(feature: A_Feature): Array<A_Stage>;
16
16
  }
17
+ export declare class A_TmpStage {
18
+ readonly name: string;
19
+ private readonly _steps;
20
+ constructor(_steps?: A_TYPES__A_StageStep[]);
21
+ get before(): string[];
22
+ get after(): string[];
23
+ get steps(): A_TYPES__A_StageStep[];
24
+ get asyncSteps(): A_TYPES__A_StageStep[];
25
+ get syncSteps(): A_TYPES__A_StageStep[];
26
+ /**
27
+ * Adds a step to the stage
28
+ *
29
+ * @param step
30
+ * @returns
31
+ */
32
+ add(step: A_TYPES__A_StageStep): this;
33
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StepsManager = void 0;
3
+ exports.A_TmpStage = exports.StepsManager = void 0;
4
4
  const A_Stage_class_1 = require("../global/A-Stage/A-Stage.class");
5
5
  class StepsManager {
6
6
  constructor(entities) {
@@ -76,13 +76,51 @@ class StepsManager {
76
76
  && step.before.every(before => stage.after.includes(before));
77
77
  });
78
78
  if (!stage) {
79
- stage = new A_Stage_class_1.A_Stage(feature);
79
+ stage = new A_TmpStage();
80
80
  stages.push(stage);
81
81
  }
82
82
  stage.add(step);
83
83
  });
84
- return stages;
84
+ return stages.map(stage => new A_Stage_class_1.A_Stage(feature, stage.steps));
85
85
  }
86
86
  }
87
87
  exports.StepsManager = StepsManager;
88
+ class A_TmpStage {
89
+ constructor(_steps = []) {
90
+ this.name = 'A_TmpStage';
91
+ this._steps = _steps;
92
+ }
93
+ get before() {
94
+ return this._steps.reduce((acc, step) => ([
95
+ ...acc,
96
+ ...step.before
97
+ ]), []);
98
+ }
99
+ get after() {
100
+ return this._steps.reduce((acc, step) => ([
101
+ ...acc,
102
+ ...step.after
103
+ ]), []);
104
+ }
105
+ get steps() {
106
+ return this._steps;
107
+ }
108
+ get asyncSteps() {
109
+ return this._steps.filter(step => step.behavior === 'async');
110
+ }
111
+ get syncSteps() {
112
+ return this._steps.filter(step => step.behavior === 'sync');
113
+ }
114
+ /**
115
+ * Adds a step to the stage
116
+ *
117
+ * @param step
118
+ * @returns
119
+ */
120
+ add(step) {
121
+ this._steps.push(step);
122
+ return this;
123
+ }
124
+ }
125
+ exports.A_TmpStage = A_TmpStage;
88
126
  //# sourceMappingURL=StepsManager.class.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepsManager.class.js","sourceRoot":"","sources":["../../../src/helpers/StepsManager.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepsManager.class.js","sourceRoot":"","sources":["../../../src/helpers/StepsManager.class.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,10 @@ export class ComponentA extends A_Component {
14
14
 
15
15
 
16
16
  @A_Feature.Extend()
17
+ @A_Feature.Define()
17
18
  async method_A(
18
19
  @A_Inject(ContextFragmentA) fragmentA: ContextFragmentA,
19
20
  @A_Inject(A_Logger) logger: A_Logger,
20
-
21
21
  ) {
22
22
  logger.log('red', 'Component A -> method_A()');
23
23
  fragmentA.decrement();
@@ -31,9 +31,18 @@ export class ComponentA extends A_Component {
31
31
  async someMethod(
32
32
  @A_Inject(ContextFragmentB) fragmentB: ContextFragmentB
33
33
  ) {
34
- console.log('Component A -> method_A() -> someMethod()');
34
+ // throw new Error('Some error occurred');
35
+
36
+ return new Promise<void>((resolve, reject) => {
37
+ setTimeout(() => {
38
+ console.log('Component A -> method_A() -> someMethod()');
39
+
40
+ fragmentB.increment();
41
+ console.log('awaited after 5 sec');
42
+ resolve();
35
43
 
36
- fragmentB.increment();
44
+ }, 5000);
45
+ });
37
46
  }
38
47
 
39
48
 
@@ -48,16 +48,22 @@ console.log('Simple concept loaded', A_Concept);
48
48
  ]
49
49
  });
50
50
 
51
- await concept.start();
51
+ // await concept.load();
52
+ // await concept.start();
52
53
 
53
54
 
54
- await main.method_B()
55
+ // await main.method_B()
55
56
 
56
57
 
57
- await main.method_C();
58
+ // await main.method_C();
58
59
 
60
+ try {
61
+ await main.call('method_A')
62
+
63
+ } catch (error) {
64
+ console.error('Error occurred:', error);
65
+ }
59
66
 
60
- await main.call('method_A')
61
67
 
62
68
 
63
69
  })();
@@ -36,12 +36,13 @@ export class MainContainer extends A_Container {
36
36
  @A_Feature.Define()
37
37
  async method_A() {
38
38
  console.log('Method A');
39
- await this.call('method_A', {
39
+ await this.call('method_A', new A_Scope({
40
+ name: `method-A::${Date.now()}`,
40
41
  fragments: [
41
42
  new ContextFragmentA(),
42
43
  new ContextFragmentB()
43
44
  ]
44
- });
45
+ }));
45
46
  }
46
47
 
47
48
 
@@ -62,10 +63,10 @@ export class MainContainer extends A_Container {
62
63
  const logger = this.Scope.resolve(A_Logger);
63
64
 
64
65
  // or you can manually call the feature
65
-
66
- const feature = A_Context.feature(this.Scope, this, 'method_B', {
66
+ const feature = A_Context.feature(this, 'method_B', new A_Scope({
67
+ name: `method-B::${Date.now()}`,
67
68
  fragments: [new ContextFragmentA(), new ContextFragmentB()]
68
- });
69
+ }));
69
70
 
70
71
  for (const stage of feature) {
71
72
  logger.log('Manual Loop Execution Step', feature.stage);
@@ -28,6 +28,7 @@ import { HTTPRequestHandler } from "./components/http-request-handler.component"
28
28
  })
29
29
 
30
30
 
31
+ await simpleConcept.load();
31
32
 
32
33
  await simpleConcept.start();
33
34
 
@@ -5,6 +5,7 @@ import { A_Concept } from "@adaas/a-concept/global/A-Concept/A_Concept.class";
5
5
  import { A_Config } from "@adaas/a-concept/base/A-Config/A-Config.context";
6
6
  import { A_Feature } from "@adaas/a-concept/global/A-Feature/A-Feature.class";
7
7
  import { HTTPRequest } from "../contexts/http-request.context";
8
+ import { A_Scope } from "@adaas/a-concept/global/A-Scope/A-Scope.class";
8
9
 
9
10
 
10
11
 
@@ -42,11 +43,12 @@ export class HttpServer extends A_Container {
42
43
  req: IncomingMessage,
43
44
  res: ServerResponse
44
45
  ) {
45
- return await this.call('onRequest', {
46
+ return await this.call('onRequest', new A_Scope({
47
+ name: `http-request::${Date.now()}`,
46
48
  fragments: [
47
49
  new HTTPRequest(req, res)
48
50
  ]
49
- });
51
+ }));
50
52
  }
51
53
 
52
54
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaas/a-concept",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
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",
@@ -77,6 +77,7 @@ export function A_Feature_Define(
77
77
  existedMeta.set(propertyKey, {
78
78
  name: `${target.constructor.name}.${handlerName}`,
79
79
  handler: handlerName,
80
+ invoke: invoke,
80
81
  template: config.template && config.template.length ? config.template.map(
81
82
  item => ({
82
83
  ...item,
@@ -80,6 +80,12 @@ export function A_Feature_Extend(
80
80
  targetRegexp = new RegExp(`^.*\\.${propertyKey}$`);
81
81
  }
82
82
 
83
+ const existedDefinitions = A_Context
84
+ .meta(target)
85
+ .get(A_TYPES__ComponentMetaKey.FEATURES);
86
+
87
+
88
+
83
89
  // Get the existed metadata or create a new one
84
90
  const existedMeta = A_Context
85
91
  .meta(target)
@@ -87,6 +93,17 @@ export function A_Feature_Extend(
87
93
  || new A_Meta();
88
94
 
89
95
 
96
+ if (existedDefinitions
97
+ && existedDefinitions.size()
98
+ && existedDefinitions.has(propertyKey)
99
+ && existedDefinitions.get(propertyKey)!.invoke
100
+ ) {
101
+
102
+ throw new Error(`A-Feature-Extend cannot be used on the method "${propertyKey}" because it is already defined as a Feature with "invoke" set to true.
103
+ Please remove the A-Feature-Extend decorator or set "invoke" to false in the A-Feature decorator.`);
104
+ }
105
+
106
+
90
107
  const existedMetaValue = existedMeta.get(targetRegexp.source) || [];
91
108
 
92
109
  // Add the new method to the metadata
@@ -39,6 +39,7 @@ export type A_TYPES__A_FeatureTemplateItem = A_TYPES__Required<Partial<A_TYPES__
39
39
  export type A_TYPES__A_DefineDecorator_Meta = {
40
40
  name: string,
41
41
  handler: string,
42
+ invoke: boolean,
42
43
  channel: Array<typeof A_Channel>
43
44
  template: Array<A_TYPES__A_StageStep>
44
45
  }
@@ -2,6 +2,7 @@ import { A_Abstraction_Extend } from "@adaas/a-concept/decorators/A-Abstraction/
2
2
  import { A_Feature } from "../A-Feature/A-Feature.class";
3
3
  import { A_TYPES__A_AbstractionConstructor, A_TYPES__AbstractionState } from "./A-Abstraction.types";
4
4
  import { A_Error, A_TYPES__Required } from "@adaas/a-utils";
5
+ import { A_Scope } from "../A-Scope/A-Scope.class";
5
6
 
6
7
 
7
8
  export class A_Abstraction {
@@ -15,6 +16,7 @@ export class A_Abstraction {
15
16
  error?: A_Error
16
17
 
17
18
 
19
+ readonly Scope!: A_Scope;
18
20
 
19
21
  /**
20
22
  * Define a new A-Abstraction
@@ -24,9 +26,14 @@ export class A_Abstraction {
24
26
  }
25
27
 
26
28
 
27
-
28
- constructor(params: A_TYPES__Required<Partial<A_TYPES__A_AbstractionConstructor>, ['name', 'features']>) {
29
+ constructor(
30
+ /**
31
+ * Parameters to define the A-Abstraction
32
+ */
33
+ params: A_TYPES__A_AbstractionConstructor
34
+ ) {
29
35
  this.name = params.name;
36
+
30
37
  this.features = params.features.map(def => new A_Feature(def));
31
38
 
32
39
  this._current = this.features[0];
@@ -37,6 +44,7 @@ export class A_Abstraction {
37
44
  return this._current;
38
45
  }
39
46
 
47
+
40
48
  [Symbol.iterator](): Iterator<A_Feature, any> {
41
49
  return {
42
50
  // Custom next method
@@ -110,7 +118,7 @@ export class A_Abstraction {
110
118
 
111
119
 
112
120
  async process() {
113
- if (this.isDone())
121
+ if (this.isDone())
114
122
  return;
115
123
  try {
116
124
  this.state = A_TYPES__AbstractionState.PROCESSING;
@@ -1,15 +1,22 @@
1
- import { A_TYPES__Required } from "@adaas/a-utils";
2
- import { A_Container } from "../A-Container/A-Container.class";
3
1
  import { A_TYPES__FeatureConstructor } from "../A-Feature/A-Feature.types";
4
- import { A_TYPES__ScopeConstructor } from "../A-Scope/A-Scope.types";
5
- import { A_TYPES__A_StageStep } from "../A-Stage/A-Stage.types";
2
+ import { A_Scope } from "../A-Scope/A-Scope.class";
6
3
 
7
4
 
8
5
 
9
6
  export type A_TYPES__A_AbstractionConstructor = {
7
+ /**
8
+ * Name of the A-Abstraction
9
+ */
10
10
  name: string,
11
- features: Array<A_TYPES__Required<Partial<A_TYPES__FeatureConstructor>, ['steps']>>
12
- } & A_TYPES__ScopeConstructor
11
+ /**
12
+ * Features that compose the A-Abstraction
13
+ */
14
+ features: Array<A_TYPES__FeatureConstructor>
15
+ /**
16
+ * Scope in which the A-Abstraction will be executed
17
+ */
18
+ scope: A_Scope
19
+ }
13
20
 
14
21
 
15
22
 
@@ -1,6 +1,7 @@
1
1
  import { A_Context } from "../A-Context/A-Context.class";
2
2
  import { A_TYPES__ComponentConstructor } from "./A-Component.types";
3
3
  import { A_TYPES__FeatureCallParams } from "../A-Feature/A-Feature.types";
4
+ import { A_Scope } from "../A-Scope/A-Scope.class";
4
5
 
5
6
 
6
7
 
@@ -9,24 +10,28 @@ import { A_TYPES__FeatureCallParams } from "../A-Feature/A-Feature.types";
9
10
  *
10
11
  */
11
12
  export class A_Component {
12
- constructor(
13
- params?: Partial<A_TYPES__ComponentConstructor<any>>
14
- ) {
13
+ constructor() {
15
14
  console.log('A-Component instance created', this);
16
15
 
17
16
  }
18
17
 
19
18
 
20
19
  async call(
20
+ /**
21
+ * Name of the feature to call
22
+ */
21
23
  feature: string,
22
- params: Partial<A_TYPES__FeatureCallParams> = {}
24
+ /**
25
+ * Scope in which the feature will be executed
26
+ */
27
+ scope?: A_Scope,
23
28
  ) {
24
- const newFeature = A_Context.feature(A_Context.scope(this), this, feature, params);
29
+ scope = scope ? scope.inherit(A_Context.scope(this)) : A_Context.scope(this);
30
+
31
+ const newFeature = A_Context.feature(this, feature, scope);
25
32
 
26
33
  return await newFeature.process();
27
34
  }
28
-
29
-
30
35
  }
31
36
 
32
37