@adaas/a-concept 0.0.5 → 0.0.7

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 (121) hide show
  1. package/dist/examples/simple/components/A.component.d.ts +4 -2
  2. package/dist/examples/simple/components/A.component.js +7 -4
  3. package/dist/examples/simple/components/A.component.js.map +1 -1
  4. package/dist/examples/simple/components/B.component.d.ts +6 -2
  5. package/dist/examples/simple/components/B.component.js +18 -7
  6. package/dist/examples/simple/components/B.component.js.map +1 -1
  7. package/dist/examples/simple/concept.js +59 -32
  8. package/dist/examples/simple/concept.js.map +1 -1
  9. package/dist/examples/simple/containers/Main.container.d.ts +1 -2
  10. package/dist/examples/simple/containers/Main.container.js +18 -5
  11. package/dist/examples/simple/containers/Main.container.js.map +1 -1
  12. package/dist/examples/simple-http-server/components/http-error-handler.component.d.ts +2 -1
  13. package/dist/examples/simple-http-server/components/http-error-handler.component.js +3 -1
  14. package/dist/examples/simple-http-server/components/http-error-handler.component.js.map +1 -1
  15. package/dist/examples/simple-http-server/components/http-request-handler.component.d.ts +2 -1
  16. package/dist/examples/simple-http-server/components/http-request-handler.component.js +2 -1
  17. package/dist/examples/simple-http-server/components/http-request-handler.component.js.map +1 -1
  18. package/dist/examples/simple-http-server/containers/http-server.container.d.ts +1 -2
  19. package/dist/index.d.ts +5 -1
  20. package/dist/index.js +10 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/src/base/A-Config/A-Config.container.d.ts +1 -3
  23. package/dist/src/base/A-Config/A-Config.container.js +6 -22
  24. package/dist/src/base/A-Config/A-Config.container.js.map +1 -1
  25. package/dist/src/base/A-Config/A-Config.context.d.ts +1 -0
  26. package/dist/src/base/A-Config/A-Config.context.js +20 -2
  27. package/dist/src/base/A-Config/A-Config.context.js.map +1 -1
  28. package/dist/src/base/A-Config/A-Config.types.d.ts +2 -2
  29. package/dist/src/base/A-Config/components/ConfigReader.component.d.ts +2 -1
  30. package/dist/src/base/A-Config/components/ConfigReader.component.js +3 -1
  31. package/dist/src/base/A-Config/components/ConfigReader.component.js.map +1 -1
  32. package/dist/src/base/A-Errors/A-Errors.component.d.ts +2 -1
  33. package/dist/src/base/A-Errors/A-Errors.component.js +3 -1
  34. package/dist/src/base/A-Errors/A-Errors.component.js.map +1 -1
  35. package/dist/src/base/A-Logger/A-Logger.component.d.ts +4 -2
  36. package/dist/src/base/A-Logger/A-Logger.component.js +11 -3
  37. package/dist/src/base/A-Logger/A-Logger.component.js.map +1 -1
  38. package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.js.map +1 -1
  39. package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js +9 -9
  40. package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js.map +1 -1
  41. package/dist/src/decorators/A-Inject/A-Inject.decorator.d.ts +0 -2
  42. package/dist/src/decorators/A-Inject/A-Inject.decorator.js +4 -2
  43. package/dist/src/decorators/A-Inject/A-Inject.decorator.js.map +1 -1
  44. package/dist/src/global/A-Component/A-Component.class.d.ts +28 -1
  45. package/dist/src/global/A-Component/A-Component.class.js +22 -0
  46. package/dist/src/global/A-Component/A-Component.class.js.map +1 -1
  47. package/dist/src/global/A-Component/A-Component.meta.d.ts +8 -1
  48. package/dist/src/global/A-Component/A-Component.meta.js +26 -0
  49. package/dist/src/global/A-Component/A-Component.meta.js.map +1 -1
  50. package/dist/src/global/A-Component/A-Component.types.d.ts +43 -6
  51. package/dist/src/global/A-Component/A-Component.types.js +5 -0
  52. package/dist/src/global/A-Component/A-Component.types.js.map +1 -1
  53. package/dist/src/global/A-Concept/A_Concept.class.d.ts +7 -7
  54. package/dist/src/global/A-Concept/A_Concept.class.js +1 -2
  55. package/dist/src/global/A-Concept/A_Concept.class.js.map +1 -1
  56. package/dist/src/global/A-Container/A-Container.class.d.ts +5 -4
  57. package/dist/src/global/A-Container/A-Container.class.js +13 -24
  58. package/dist/src/global/A-Container/A-Container.class.js.map +1 -1
  59. package/dist/src/global/A-Container/A-Container.meta.d.ts +0 -3
  60. package/dist/src/global/A-Container/A-Container.meta.js +0 -46
  61. package/dist/src/global/A-Container/A-Container.meta.js.map +1 -1
  62. package/dist/src/global/A-Context/A-Context.class.d.ts +35 -5
  63. package/dist/src/global/A-Context/A-Context.class.js +135 -53
  64. package/dist/src/global/A-Context/A-Context.class.js.map +1 -1
  65. package/dist/src/global/A-Context/A-Context.types.d.ts +0 -12
  66. package/dist/src/global/A-Context/A-Context.types.js +0 -1
  67. package/dist/src/global/A-Entity/A-Entity.class.d.ts +28 -4
  68. package/dist/src/global/A-Entity/A-Entity.class.js +23 -3
  69. package/dist/src/global/A-Entity/A-Entity.class.js.map +1 -1
  70. package/dist/src/global/A-Entity/A-Entity.meta.d.ts +4 -0
  71. package/dist/src/global/A-Entity/A-Entity.meta.js +8 -0
  72. package/dist/src/global/A-Entity/A-Entity.meta.js.map +1 -0
  73. package/dist/src/global/A-Entity/A-Entity.types.d.ts +43 -0
  74. package/dist/src/global/A-Entity/A-Entity.types.js +13 -0
  75. package/dist/src/global/A-Entity/A-Entity.types.js.map +1 -1
  76. package/dist/src/global/A-Feature/A-Feature.class.d.ts +11 -1
  77. package/dist/src/global/A-Feature/A-Feature.class.js +48 -12
  78. package/dist/src/global/A-Feature/A-Feature.class.js.map +1 -1
  79. package/dist/src/global/A-Feature/A-Feature.types.d.ts +5 -4
  80. package/dist/src/global/A-Feature/A-Feature.types.js.map +1 -1
  81. package/dist/src/global/A-Fragment/A-Fragment.class.js +1 -2
  82. package/dist/src/global/A-Fragment/A-Fragment.class.js.map +1 -1
  83. package/dist/src/global/A-Meta/A-Meta.class.d.ts +75 -1
  84. package/dist/src/global/A-Meta/A-Meta.class.js +100 -10
  85. package/dist/src/global/A-Meta/A-Meta.class.js.map +1 -1
  86. package/dist/src/global/A-Scope/A-Scope.class.d.ts +15 -6
  87. package/dist/src/global/A-Scope/A-Scope.class.js +53 -17
  88. package/dist/src/global/A-Scope/A-Scope.class.js.map +1 -1
  89. package/examples/simple/components/A.component.ts +6 -3
  90. package/examples/simple/components/B.component.ts +19 -6
  91. package/examples/simple/concept.ts +65 -33
  92. package/examples/simple/containers/Main.container.ts +28 -7
  93. package/examples/simple-http-server/components/http-error-handler.component.ts +5 -2
  94. package/examples/simple-http-server/components/http-request-handler.component.ts +3 -1
  95. package/index.ts +6 -1
  96. package/package.json +1 -1
  97. package/src/base/A-Config/A-Config.container.ts +5 -8
  98. package/src/base/A-Config/A-Config.context.ts +10 -2
  99. package/src/base/A-Config/A-Config.types.ts +2 -2
  100. package/src/base/A-Config/components/ConfigReader.component.ts +5 -2
  101. package/src/base/A-Errors/A-Errors.component.ts +3 -2
  102. package/src/base/A-Logger/A-Logger.component.ts +21 -3
  103. package/src/decorators/A-Feature/A-Feature-Define.decorator.ts +0 -1
  104. package/src/decorators/A-Feature/A-Feature-Extend.decorator.ts +15 -10
  105. package/src/decorators/A-Inject/A-Inject.decorator.ts +13 -11
  106. package/src/global/A-Component/A-Component.class.ts +56 -1
  107. package/src/global/A-Component/A-Component.meta.ts +40 -1
  108. package/src/global/A-Component/A-Component.types.ts +51 -19
  109. package/src/global/A-Concept/A_Concept.class.ts +2 -2
  110. package/src/global/A-Container/A-Container.class.ts +22 -34
  111. package/src/global/A-Container/A-Container.meta.ts +0 -64
  112. package/src/global/A-Context/A-Context.class.ts +240 -79
  113. package/src/global/A-Context/A-Context.types.ts +0 -15
  114. package/src/global/A-Entity/A-Entity.class.ts +65 -8
  115. package/src/global/A-Entity/A-Entity.meta.ts +9 -0
  116. package/src/global/A-Entity/A-Entity.types.ts +58 -0
  117. package/src/global/A-Feature/A-Feature.class.ts +62 -20
  118. package/src/global/A-Feature/A-Feature.types.ts +8 -2
  119. package/src/global/A-Fragment/A-Fragment.class.ts +1 -5
  120. package/src/global/A-Meta/A-Meta.class.ts +114 -22
  121. package/src/global/A-Scope/A-Scope.class.ts +93 -33
@@ -5,6 +5,8 @@ const a_utils_1 = require("@adaas/a-utils");
5
5
  const A_Fragment_class_1 = require("../A-Fragment/A-Fragment.class");
6
6
  const A_Context_class_1 = require("../A-Context/A-Context.class");
7
7
  const A_Component_types_1 = require("../A-Component/A-Component.types");
8
+ const A_Component_class_1 = require("../A-Component/A-Component.class");
9
+ const A_Entity_class_1 = require("../A-Entity/A-Entity.class");
8
10
  /**
9
11
  *
10
12
  *
@@ -23,6 +25,7 @@ class A_Scope {
23
25
  this.name = '';
24
26
  this._components = new WeakMap();
25
27
  this._fragments = new WeakMap();
28
+ this._entities = new Map();
26
29
  this.name = params.name || this.constructor.name;
27
30
  // TODO: move to defaults
28
31
  const defaultParams = {
@@ -98,24 +101,14 @@ class A_Scope {
98
101
  case a_utils_1.A_CommonHelper.isInheritedFrom(component, A_Fragment_class_1.A_Fragment): {
99
102
  return this.resolveFragment(component);
100
103
  }
101
- case this.components.includes(component) && this._components.has(component): {
102
- return this._components.get(component);
104
+ case a_utils_1.A_CommonHelper.isInheritedFrom(component, A_Scope): {
105
+ return this.resolveScope(component);
103
106
  }
104
- case this.components.includes(component) && !this._components.has(component): {
105
- const componentMeta = A_Context_class_1.A_Context.meta(component);
106
- const argsMeta = componentMeta.get(A_Component_types_1.A_TYPES__ComponentMetaKey.INJECTIONS);
107
- let resolvedArgs = [];
108
- if (argsMeta)
109
- resolvedArgs = (argsMeta.get('constructor') || [])
110
- .map(arg => this.resolve(arg));
111
- this._components.set(component, new component());
112
- return this._components.get(component);
113
- }
114
- case !this.components.includes(component) && !!this.parent: {
115
- return this.parent.resolve(component);
107
+ case a_utils_1.A_CommonHelper.isInheritedFrom(component, A_Component_class_1.A_Component): {
108
+ return this.resolveComponent(component);
116
109
  }
117
110
  default:
118
- throw new Error(`Component ${component.name} not found in the scope`);
111
+ throw new Error(`Injected Component ${component} not found in the scope`);
119
112
  }
120
113
  }
121
114
  resolveFragment(fragment) {
@@ -127,8 +120,51 @@ class A_Scope {
127
120
  }
128
121
  throw new Error(`Fragment ${fragment.name} not found in the scope ${this.name}`);
129
122
  }
130
- register(fragment) {
131
- this._fragments.set(fragment.constructor, fragment);
123
+ resolveScope(scope) {
124
+ return this;
125
+ }
126
+ resolveComponent(component) {
127
+ if (this.components.includes(component) && this._components.has(component))
128
+ return this._components.get(component);
129
+ else if (this.components.includes(component) && !this._components.has(component)) {
130
+ const componentMeta = A_Context_class_1.A_Context.meta(component);
131
+ const argsMeta = componentMeta.get(A_Component_types_1.A_TYPES__ComponentMetaKey.INJECTIONS);
132
+ const resolvedArgs = ((argsMeta === null || argsMeta === void 0 ? void 0 : argsMeta.get('constructor')) || [])
133
+ .map(arg => this.resolve(arg));
134
+ const newComponent = new component(...resolvedArgs);
135
+ this.register(newComponent);
136
+ return this._components.get(component);
137
+ }
138
+ else if (!this.components.includes(component) && !!this.parent) {
139
+ return this.parent.resolveComponent(component);
140
+ }
141
+ else {
142
+ throw new Error(`Component ${component.name} not found in the scope`);
143
+ }
144
+ }
145
+ register(param1) {
146
+ switch (true) {
147
+ case param1 instanceof A_Fragment_class_1.A_Fragment && !this._fragments.has(param1.constructor): {
148
+ this._fragments.set(param1.constructor, param1);
149
+ // The same situation. Have not idea how to fix it
150
+ A_Context_class_1.A_Context.register(this, param1);
151
+ break;
152
+ }
153
+ case param1 instanceof A_Entity_class_1.A_Entity && !this._entities.has(param1.aseid.toString()): {
154
+ this._entities.set(param1.aseid.toString(), param1);
155
+ // The same situation. Have not idea how to fix it
156
+ A_Context_class_1.A_Context.register(this, param1);
157
+ break;
158
+ }
159
+ case param1 instanceof A_Component_class_1.A_Component: {
160
+ this._components.set(param1.constructor, param1);
161
+ // The same situation. Have not idea how to fix it
162
+ A_Context_class_1.A_Context.register(this, param1);
163
+ break;
164
+ }
165
+ default:
166
+ throw new Error('Invalid arguments provided');
167
+ }
132
168
  }
133
169
  }
134
170
  exports.A_Scope = A_Scope;
@@ -1 +1 @@
1
- {"version":3,"file":"A-Scope.class.js","sourceRoot":"","sources":["../../../../src/global/A-Scope/A-Scope.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"A-Scope.class.js","sourceRoot":"","sources":["../../../../src/global/A-Scope/A-Scope.class.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@ import { A_Feature } from "@adaas/a-concept/global/A-Feature/A-Feature.class";
2
2
  import { ContextFragmentA } from "../context/Fragment_A.context";
3
3
  import { ContextFragmentB } from "../context/Fragment_B.context";
4
4
  import { A_Inject } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorator";
5
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
6
+ import { A_Logger } from "@adaas/a-concept/base/A-Logger/A-Logger.component";
5
7
 
6
- export class ComponentA {
8
+ export class ComponentA extends A_Component {
7
9
 
8
10
 
9
11
  @A_Feature.Extend()
@@ -13,9 +15,10 @@ export class ComponentA {
13
15
 
14
16
  @A_Feature.Extend()
15
17
  async method_A(
16
- @A_Inject(ContextFragmentA) fragmentA: ContextFragmentA
18
+ @A_Inject(ContextFragmentA) fragmentA: ContextFragmentA,
19
+ @A_Inject(A_Logger) logger: A_Logger
17
20
  ) {
18
- console.log('Component A -> method_A()');
21
+ logger.log('red', 'Component A -> method_A()');
19
22
  fragmentA.decrement();
20
23
  }
21
24
 
@@ -2,9 +2,17 @@ import { A_Inject } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorato
2
2
  import { ContextFragmentB } from "../context/Fragment_B.context";
3
3
  import { ContextFragmentA } from "../context/Fragment_A.context";
4
4
  import { A_Feature } from "@adaas/a-concept/global/A-Feature/A-Feature.class";
5
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
6
+ import { A_Logger } from "@adaas/a-concept/base/A-Logger/A-Logger.component";
5
7
 
6
8
 
7
- export class ComponentB {
9
+ export class ComponentB extends A_Component {
10
+
11
+ constructor(
12
+ @A_Inject(A_Logger) private logger: A_Logger
13
+ ) {
14
+ super();
15
+ }
8
16
 
9
17
 
10
18
  @A_Feature.Extend()
@@ -14,15 +22,20 @@ export class ComponentB {
14
22
 
15
23
 
16
24
  @A_Feature.Extend()
17
- async method_B() {
18
- console.log('Component B -> method_B()');
25
+ async method_B(
26
+ @A_Inject(A_Logger) logger: A_Logger
27
+ ) {
28
+ logger.log('cyan', 'Component B -> method_B()');
19
29
  }
20
30
 
21
31
  @A_Feature.Extend({
22
32
  name: 'method_B'
23
33
  })
24
- async someMethod() {
25
- console.log('Component B -> method_B() -> someMethod()');
34
+ async someMethod(
35
+
36
+ ) {
37
+ this.logger.log('pink', 'Component B -> method_B() -> someMethod()');
38
+ this.logger.log('Component B -> method_B() -> someMethod()');
26
39
  }
27
40
 
28
41
 
@@ -30,7 +43,7 @@ export class ComponentB {
30
43
  name: 'method_B'
31
44
  })
32
45
  async someMethod2() {
33
- console.log('Component B -> method_B() -> someMethod2()');
46
+ this.logger.log('yellow', 'Component B -> method_B() -> someMethod2()');
34
47
  }
35
48
 
36
49
  @A_Feature.Extend({
@@ -1,53 +1,85 @@
1
- import { A_Concept } from "@adaas/a-concept/global/A-Concept/A_Concept.class";
2
1
  import { MainContainer } from "./containers/Main.container";
3
2
  import { ComponentA } from "./components/A.component";
4
3
  import { ComponentB } from "./components/B.component";
4
+ import { A_Logger } from "@adaas/a-concept/base/A-Logger/A-Logger.component";
5
+ import { ContextFragmentA } from "./context/Fragment_A.context";
6
+ import { ContextFragmentB } from "./context/Fragment_B.context";
5
7
  import { A_Config } from "@adaas/a-concept/base/A-Config/A-Config.context";
6
- import { A_Errors } from "@adaas/a-concept/base/A-Errors/A-Errors.context";
7
- import { A_Container } from "@adaas/a-concept/global/A-Container/A-Container.class";
8
-
8
+ import { A_ConfigLoader } from "@adaas/a-concept/base/A-Config/A-Config.container";
9
+ import { ENVConfigReader } from "@adaas/a-concept/base/A-Config/components/ENVConfigReader.component";
9
10
 
10
11
  (async () => {
11
12
 
12
13
  console.log('Start');
13
14
 
14
- class foo extends A_Container<['f', 'f2']> {
15
+ // class foo extends A_Container<['f', 'f2']> {
16
+
17
+ // }
18
+
19
+
20
+ // const simpleConcept = new A_Concept({
21
+ // name: 'simple-concept',
22
+ // fragments: [
23
+ // new A_Config({
24
+ // variables: ['A', 'B', 'C'],
25
+ // defaults: {
26
+ // A: 1,
27
+ // }
28
+ // }),
29
+ // new A_Errors({
30
+ // errors: [
31
+ // {
32
+ // code: 'some_error',
33
+ // description: 'Error 1',
34
+ // message: 'Error 1'
35
+ // }
36
+ // ]
37
+ // })
38
+ // ],
39
+ // containers: [
40
+
41
+ // new foo({})
42
+ // ]
43
+ // });
44
+
45
+ // console.log('Here')
46
+ // simpleConcept.call('method_B');
15
47
 
16
- }
48
+ const configContext = new A_Config({
49
+ variables: ['CONFIG_VERBOSE'],
50
+ defaults: {
51
+ 'CONFIG_VERBOSE': true
52
+ }
53
+ });
17
54
 
18
55
 
19
- const simpleConcept = new A_Concept({
20
- name: 'simple-concept',
56
+ const configLoader = new A_ConfigLoader({
21
57
  fragments: [
22
- new A_Config({
23
- variables: ['A', 'B', 'C'],
24
- defaults: {
25
- A: 1,
26
- }
27
- }),
28
- new A_Errors({
29
- errors: [
30
- {
31
- code: 'some_error',
32
- description: 'Error 1',
33
- message: 'Error 1'
34
- }
35
- ]
36
- })
58
+ configContext
37
59
  ],
38
- containers: [
39
- new MainContainer({
40
- components: [
41
- ComponentA,
42
- ComponentB
43
- ]
44
- }),
45
- new foo({})
60
+ components: [
61
+ ENVConfigReader
46
62
  ]
47
63
  });
48
64
 
49
- await simpleConcept.run({})
65
+ await configLoader.identifyReader();
66
+ await configLoader.readVariables();
67
+
50
68
 
51
- simpleConcept.call('method_B');
69
+ const container = new MainContainer({
70
+ name: 'MainContainer',
71
+ components: [
72
+ A_Logger,
73
+ ComponentA,
74
+ ComponentB
75
+ ],
76
+ fragments: [
77
+ configContext,
78
+ new ContextFragmentA(),
79
+ new ContextFragmentB()
80
+ ]
81
+ });
52
82
 
83
+ // await container.call('method_B');
84
+ await container.method_B();
53
85
  })();
@@ -4,6 +4,8 @@ import { ContextFragmentA } from "../context/Fragment_A.context";
4
4
  import { ContextFragmentB } from "../context/Fragment_B.context";
5
5
  import { A_Concept } from "@adaas/a-concept/global/A-Concept/A_Concept.class";
6
6
  import { A_Inject } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorator";
7
+ import { A_Context } from "@adaas/a-concept/global/A-Context/A-Context.class";
8
+ import { A_Logger } from "@adaas/a-concept/base/A-Logger/A-Logger.component";
7
9
 
8
10
 
9
11
 
@@ -22,8 +24,10 @@ export class MainContainer extends A_Container<
22
24
  ) {
23
25
  if (params) {
24
26
  console.log('Start');
25
-
27
+
26
28
  }
29
+
30
+ A_Context.feature(this, 'method_A');
27
31
  }
28
32
 
29
33
 
@@ -32,16 +36,33 @@ export class MainContainer extends A_Container<
32
36
  @A_Feature.Define()
33
37
  async method_A() {
34
38
  console.log('Method A');
35
- const feature = this.call('method_A', {
36
- fragments: [new ContextFragmentA(), new ContextFragmentB()]
39
+ await this.call('method_A', {
40
+ fragments: [
41
+ new ContextFragmentA(),
42
+ new ContextFragmentB()
43
+ ]
37
44
  });
38
-
39
- await feature.process();
40
45
  }
41
46
 
47
+
48
+
49
+
42
50
  @A_Feature.Define()
43
51
  async method_B() {
44
- console.log('Method B');
45
- return this.call('method_B');
52
+ console.log('Method B', A_Context.root);
53
+
54
+ const logger = this.Scope.resolve(A_Logger);
55
+
56
+ // or you can manually call the feature
57
+
58
+ const feature = A_Context.feature(this, 'method_B', {
59
+ fragments: [new ContextFragmentA(), new ContextFragmentB()]
60
+ });
61
+
62
+ for (const step of feature) {
63
+ logger.log('Manual Loop Execution Step', feature.current);
64
+
65
+ await step();
66
+ }
46
67
  }
47
68
  }
@@ -3,13 +3,16 @@ import { HTTPRequest } from "../contexts/http-request.context";
3
3
  import { A_Logger } from "@adaas/a-concept/base/A-Logger/A-Logger.component";
4
4
  import { HttpServer } from "../containers/http-server.container";
5
5
  import { A_Feature } from "@adaas/a-concept/global/A-Feature/A-Feature.class";
6
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
6
7
 
7
8
 
8
- export class HTTPErrorHandler {
9
+ export class HTTPErrorHandler extends A_Component {
9
10
 
10
11
  constructor(
11
12
  @A_Inject(A_Logger) private logger: A_Logger
12
- ) { }
13
+ ) {
14
+ super();
15
+ }
13
16
 
14
17
 
15
18
 
@@ -1,4 +1,6 @@
1
- export class HTTPRequestHandler {
1
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
2
+
3
+ export class HTTPRequestHandler extends A_Component {
2
4
 
3
5
 
4
6
 
package/index.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  // =================================================================================================
5
5
  // ---------------------- Major Components ----------------------
6
6
  export { A_Context } from './src/global/A-Context/A-Context.class';
7
- export * from './src/global/A-Context/A-Context.types';
7
+ // export * from './src/global/A-Context/A-Context.types';
8
8
 
9
9
  export { A_Concept } from './src/global/A-Concept/A_Concept.class';
10
10
  export { A_ConceptMeta } from './src/global/A-Concept/A_Concept.meta';
@@ -43,7 +43,12 @@ export * from './src/global/A-Fragment/A-Fragment.types';
43
43
  export { A_Inject } from './src/decorators/A-Inject/A-Inject.decorator';
44
44
  export * from './src/decorators/A-Inject/A-Inject.decorator.types';
45
45
 
46
+ export { A_Feature_Define } from './src/decorators/A-Feature/A-Feature-Define.decorator';
47
+ export { A_Feature_Extend } from './src/decorators/A-Feature/A-Feature-Extend.decorator';
48
+ export * from './src/decorators/A-Feature/A-Feature.decorator.types';
46
49
 
50
+ export { A_Stage } from './src/decorators/A-Stage/A-Stage.decorator';
51
+ export * from './src/decorators/A-Stage/A-Stage.decorator.types';
47
52
 
48
53
 
49
54
  // =================================================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaas/a-concept",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
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",
@@ -19,10 +19,7 @@ export class A_ConfigLoader extends A_Container<['load', 'read']> {
19
19
 
20
20
 
21
21
  async identifyReader(
22
- @A_Inject(A_Scope) scope: A_Scope,
23
- @A_Inject(A_Logger) logger: A_Logger
24
22
  ) {
25
-
26
23
  // OR Inject the logger by calling Context Provider
27
24
  // const logger2 = await this.CP.resolve(A_LoggerContext);
28
25
 
@@ -30,17 +27,17 @@ export class A_ConfigLoader extends A_Container<['load', 'read']> {
30
27
 
31
28
  switch (true) {
32
29
 
33
- case A_Context.environment === 'server' && !!fs.existsSync(`${scope.name}.conf.json`):
34
- this.reader = scope.resolve(FileConfigReader);
30
+ case A_Context.environment === 'server' && !!fs.existsSync(`${this.Scope.name}.conf.json`):
31
+ this.reader = this.Scope.resolve(FileConfigReader);
35
32
  break;
36
33
 
37
34
 
38
- case A_Context.environment === 'server': !fs.existsSync(`${scope.name}.conf.json`)
39
- this.reader = scope.resolve(ENVConfigReader);
35
+ case A_Context.environment === 'server': !fs.existsSync(`${this.Scope.name}.conf.json`)
36
+ this.reader = this.Scope.resolve(ENVConfigReader);
40
37
  break;
41
38
 
42
39
  case A_Context.environment === 'browser':
43
- this.reader = scope.resolve(ENVConfigReader);
40
+ this.reader = this.Scope.resolve(ENVConfigReader);
44
41
  break;
45
42
 
46
43
  default:
@@ -28,12 +28,19 @@ export class A_Config<
28
28
 
29
29
  this.config = A_CommonHelper.deepCloneAndMerge<A_TYPES__ConfigContainerConstructor<T>>(config as any, {
30
30
  name: this.name,
31
- defaults: {} as Record<T, any>
31
+ defaults: {} as Record<T, any>,
32
+ variables: [] as T[]
32
33
  });
33
34
 
34
35
  this.CONFIG_PROPERTIES = this.config.variables ? this.config.variables : [];
35
36
  }
36
37
 
38
+ protected async onInit(): Promise<void> {
39
+ this.config.variables.forEach((variable) => {
40
+ this.VARIABLES.set(variable, this.config.defaults[variable]);
41
+ });
42
+ }
43
+
37
44
 
38
45
  /**
39
46
  * This method is used to get the configuration property by name
@@ -44,7 +51,8 @@ export class A_Config<
44
51
  get<_OutType = any>(
45
52
  property: T | typeof this.DEFAULT_ALLOWED_TO_READ_PROPERTIES[number]
46
53
  ): _OutType {
47
- if (this.CONFIG_PROPERTIES.includes(property as any))
54
+ if (this.CONFIG_PROPERTIES.includes(property as any)
55
+ || this.DEFAULT_ALLOWED_TO_READ_PROPERTIES.includes(property as any))
48
56
  return this.VARIABLES.get(property as string) as _OutType;
49
57
 
50
58
  throw new Error('Property not exists or not allowed to read') as never;
@@ -11,12 +11,12 @@ export type A_TYPES__ConfigContainerConstructor<T extends string> = {
11
11
  /**
12
12
  * Allows to define the names of variable to be loaded
13
13
  */
14
- variables?: Array<T>
14
+ variables: Array<T>
15
15
 
16
16
  /**
17
17
  * Allows to set the default values for the variables
18
18
  */
19
- defaults?: {
19
+ defaults: {
20
20
  [key in T]?: any
21
21
  }
22
22
 
@@ -1,16 +1,19 @@
1
1
  import { A_Scope } from "@adaas/a-concept/global/A-Scope/A-Scope.class";
2
2
  import { A_Inject } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorator";
3
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
3
4
 
4
5
 
5
6
 
6
7
  /**
7
8
  * Config Reader
8
9
  */
9
- export class ConfigReader {
10
+ export class ConfigReader extends A_Component {
10
11
 
11
12
  constructor(
12
13
  @A_Inject(A_Scope) protected scope: A_Scope
13
- ) { }
14
+ ) {
15
+ super();
16
+ }
14
17
 
15
18
 
16
19
  /**
@@ -3,14 +3,15 @@ import { A_Inject } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorato
3
3
  import { A_Errors } from "./A-Errors.context";
4
4
  import { A_CONSTANTS__ERROR_CODES, A_Error, A_ServerError, ASEID } from "@adaas/a-utils";
5
5
  import { A_Context } from "@adaas/a-concept/global/A-Context/A-Context.class";
6
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
6
7
 
7
- export class A_ErrorsManager {
8
+ export class A_ErrorsManager extends A_Component {
8
9
 
9
10
  constructor(
10
11
  @A_Inject(A_Scope) protected scope: A_Scope,
11
12
  @A_Inject(A_Errors) protected errors: A_Errors
12
13
  ) {
13
-
14
+ super();
14
15
  }
15
16
 
16
17
 
@@ -2,15 +2,17 @@ import { A_Inject } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorato
2
2
  import { A_Error } from "@adaas/a-utils";
3
3
  import { A_Config } from "../A-Config/A-Config.context";
4
4
  import { A_Scope } from "@adaas/a-concept/global/A-Scope/A-Scope.class";
5
+ import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
5
6
 
6
7
 
7
8
 
8
- export class A_Logger {
9
+ export class A_Logger extends A_Component {
9
10
 
10
11
  constructor(
11
12
  @A_Inject(A_Scope) protected scope: A_Scope,
12
13
  @A_Inject(A_Config) protected config: A_Config
13
14
  ) {
15
+ super();
14
16
  }
15
17
 
16
18
  readonly colors = {
@@ -75,11 +77,27 @@ export class A_Logger {
75
77
  }
76
78
 
77
79
 
78
- log(...args) {
80
+ log(
81
+ color: keyof typeof this.colors,
82
+ ...args: any[]
83
+ )
84
+ log(
85
+ ...args: any[]
86
+ )
87
+ log(
88
+ param1: any,
89
+ ...args: any[]
90
+ ) {
79
91
  if (!this.config.get('CONFIG_VERBOSE'))
80
92
  return;
81
93
 
82
- console.log(...this.compile('blue', ...args));
94
+ if (typeof param1 === 'string' && this.colors[param1]) {
95
+ console.log(...this.compile(param1 as keyof typeof this.colors, ...args));
96
+ return;
97
+ }
98
+ else {
99
+ console.log(...this.compile('blue', param1, ...args));
100
+ }
83
101
  }
84
102
 
85
103
  warning(...args) {
@@ -36,7 +36,6 @@ export function A_Feature_Define(
36
36
  || new Map();
37
37
 
38
38
 
39
-
40
39
  // Set the metadata of the method to define a custom Feature with name
41
40
  existedMeta.set(propertyKey, {
42
41
  handler: propertyKey,