@adaas/a-concept 0.0.63 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +24 -32
- package/dist/index.js +35 -52
- package/dist/index.js.map +1 -1
- package/dist/src/constants/env.constants.d.ts +15 -8
- package/dist/src/constants/env.constants.js +17 -10
- package/dist/src/constants/env.constants.js.map +1 -1
- package/dist/src/global/A-Abstraction/A-Abstraction-Extend.decorator.d.ts +23 -0
- package/dist/src/global/A-Abstraction/A-Abstraction-Extend.decorator.js +69 -0
- package/dist/src/global/A-Abstraction/A-Abstraction-Extend.decorator.js.map +1 -0
- package/dist/src/global/A-Abstraction/A-Abstraction.class.d.ts +47 -20
- package/dist/src/global/A-Abstraction/A-Abstraction.class.js +55 -48
- package/dist/src/global/A-Abstraction/A-Abstraction.class.js.map +1 -1
- package/dist/src/global/A-Abstraction/A-Abstraction.error.d.ts +7 -0
- package/dist/src/global/A-Abstraction/A-Abstraction.error.js +12 -0
- package/dist/src/global/A-Abstraction/A-Abstraction.error.js.map +1 -0
- package/dist/src/global/A-Abstraction/A-Abstraction.types.d.ts +27 -12
- package/dist/src/global/A-Abstraction/A-Abstraction.types.js +0 -8
- package/dist/src/global/A-Abstraction/A-Abstraction.types.js.map +1 -1
- package/dist/src/global/A-Caller/A_Caller.class.d.ts +33 -0
- package/dist/src/global/A-Caller/A_Caller.class.js +44 -0
- package/dist/src/global/A-Caller/A_Caller.class.js.map +1 -0
- package/dist/src/global/A-Caller/A_Caller.error.d.ts +7 -0
- package/dist/src/global/A-Caller/A_Caller.error.js +12 -0
- package/dist/src/global/A-Caller/A_Caller.error.js.map +1 -0
- package/dist/src/global/A-Caller/A_Caller.types.d.ts +18 -0
- package/dist/src/{base/A-Errors/A-Errors.types.js → global/A-Caller/A_Caller.types.js} +1 -1
- package/dist/src/global/A-Caller/A_Caller.types.js.map +1 -0
- package/dist/src/global/A-Component/A-Component.class.d.ts +20 -3
- package/dist/src/global/A-Component/A-Component.class.js +35 -19
- package/dist/src/global/A-Component/A-Component.class.js.map +1 -1
- package/dist/src/global/A-Component/A-Component.constants.d.ts +6 -0
- package/dist/src/global/A-Component/A-Component.constants.js +11 -0
- package/dist/src/global/A-Component/A-Component.constants.js.map +1 -0
- package/dist/src/global/A-Component/A-Component.meta.d.ts +4 -4
- package/dist/src/global/A-Component/A-Component.meta.js +6 -8
- package/dist/src/global/A-Component/A-Component.meta.js.map +1 -1
- package/dist/src/global/A-Component/A-Component.types.d.ts +40 -22
- package/dist/src/global/A-Component/A-Component.types.js +1 -8
- package/dist/src/global/A-Component/A-Component.types.js.map +1 -1
- package/dist/src/global/A-Concept/A-Concept.class.d.ts +153 -0
- package/dist/src/global/A-Concept/A-Concept.class.js +260 -0
- package/dist/src/global/A-Concept/A-Concept.class.js.map +1 -0
- package/dist/src/global/A-Concept/A-Concept.constants.d.ts +33 -0
- package/dist/src/global/A-Concept/A-Concept.constants.js +39 -0
- package/dist/src/global/A-Concept/A-Concept.constants.js.map +1 -0
- package/dist/src/global/A-Concept/{A_Concept.meta.js → A-Concept.meta.js} +1 -2
- package/dist/src/global/A-Concept/A-Concept.meta.js.map +1 -0
- package/dist/src/global/A-Concept/A-Concept.types.d.ts +83 -0
- package/dist/src/global/{A-Channel/A-Channel.types.js → A-Concept/A-Concept.types.js} +1 -1
- package/dist/src/global/A-Concept/A-Concept.types.js.map +1 -0
- package/dist/src/global/A-Container/A-Container.class.d.ts +31 -35
- package/dist/src/global/A-Container/A-Container.class.js +34 -55
- package/dist/src/global/A-Container/A-Container.class.js.map +1 -1
- package/dist/src/global/A-Container/A-Container.constants.d.ts +5 -0
- package/dist/src/global/A-Container/A-Container.constants.js +10 -0
- package/dist/src/global/A-Container/A-Container.constants.js.map +1 -0
- package/dist/src/global/A-Container/A-Container.meta.d.ts +6 -6
- package/dist/src/global/A-Container/A-Container.meta.js +5 -6
- package/dist/src/global/A-Container/A-Container.meta.js.map +1 -1
- package/dist/src/global/A-Container/A-Container.types.d.ts +31 -25
- package/dist/src/global/A-Container/A-Container.types.js +1 -7
- package/dist/src/global/A-Container/A-Container.types.js.map +1 -1
- package/dist/src/global/A-Context/A-Context.class.d.ts +302 -76
- package/dist/src/global/A-Context/A-Context.class.js +436 -244
- package/dist/src/global/A-Context/A-Context.class.js.map +1 -1
- package/dist/src/global/A-Context/A-Context.error.d.ts +20 -0
- package/dist/src/global/A-Context/A-Context.error.js +25 -0
- package/dist/src/global/A-Context/A-Context.error.js.map +1 -0
- package/dist/src/global/A-Context/A-Context.types.d.ts +5 -0
- package/dist/src/global/A-Context/A-Context.types.js +1 -0
- package/dist/src/global/A-Entity/A-Entity.class.d.ts +18 -18
- package/dist/src/global/A-Entity/A-Entity.class.js +36 -43
- package/dist/src/global/A-Entity/A-Entity.class.js.map +1 -1
- package/dist/src/global/A-Entity/A-Entity.constants.d.ts +11 -0
- package/dist/src/global/A-Entity/A-Entity.constants.js +17 -0
- package/dist/src/global/A-Entity/A-Entity.constants.js.map +1 -0
- package/dist/src/global/A-Entity/A-Entity.error.d.ts +7 -0
- package/dist/src/global/A-Entity/A-Entity.error.js +12 -0
- package/dist/src/global/A-Entity/A-Entity.error.js.map +1 -0
- package/dist/src/global/A-Entity/A-Entity.meta.d.ts +2 -2
- package/dist/src/global/A-Entity/A-Entity.meta.js +2 -2
- package/dist/src/global/A-Entity/A-Entity.meta.js.map +1 -1
- package/dist/src/global/A-Entity/A-Entity.types.d.ts +24 -29
- package/dist/src/global/A-Entity/A-Entity.types.js +1 -13
- package/dist/src/global/A-Entity/A-Entity.types.js.map +1 -1
- package/dist/src/global/A-Error/A_Error.class.d.ts +219 -0
- package/dist/src/global/A-Error/A_Error.class.js +267 -0
- package/dist/src/global/A-Error/A_Error.class.js.map +1 -0
- package/dist/src/global/A-Error/A_Error.constants.d.ts +5 -0
- package/dist/src/global/A-Error/A_Error.constants.js +9 -0
- package/dist/src/global/A-Error/A_Error.constants.js.map +1 -0
- package/dist/src/global/A-Error/A_Error.types.d.ts +89 -0
- package/dist/src/{decorators/A-Inject/A-Inject.decorator.types.js → global/A-Error/A_Error.types.js} +1 -1
- package/dist/src/global/A-Error/A_Error.types.js.map +1 -0
- package/dist/src/global/A-Feature/A-Feature-Define.decorator.d.ts +15 -0
- package/dist/src/{decorators → global}/A-Feature/A-Feature-Define.decorator.js +21 -27
- package/dist/src/global/A-Feature/A-Feature-Define.decorator.js.map +1 -0
- package/dist/src/{decorators → global}/A-Feature/A-Feature-Extend.decorator.d.ts +26 -3
- package/dist/src/global/A-Feature/A-Feature-Extend.decorator.js +97 -0
- package/dist/src/global/A-Feature/A-Feature-Extend.decorator.js.map +1 -0
- package/dist/src/global/A-Feature/A-Feature.class.d.ts +120 -30
- package/dist/src/global/A-Feature/A-Feature.class.js +205 -73
- package/dist/src/global/A-Feature/A-Feature.class.js.map +1 -1
- package/dist/src/global/A-Feature/A-Feature.error.d.ts +25 -0
- package/dist/src/global/A-Feature/A-Feature.error.js +33 -0
- package/dist/src/global/A-Feature/A-Feature.error.js.map +1 -0
- package/dist/src/global/A-Feature/A-Feature.types.d.ts +241 -18
- package/dist/src/global/A-Feature/A-Feature.types.js +16 -22
- package/dist/src/global/A-Feature/A-Feature.types.js.map +1 -1
- package/dist/src/global/A-Fragment/A-Fragment.class.d.ts +19 -27
- package/dist/src/global/A-Fragment/A-Fragment.class.js +21 -91
- package/dist/src/global/A-Fragment/A-Fragment.class.js.map +1 -1
- package/dist/src/global/A-Fragment/A-Fragment.types.d.ts +19 -1
- package/dist/src/global/A-Fragment/A-Fragment.types.js +3 -0
- package/dist/src/global/A-Fragment/A-Fragment.types.js.map +1 -1
- package/dist/src/global/A-Inject/A-Inject.decorator.d.ts +80 -0
- package/dist/src/global/A-Inject/A-Inject.decorator.js +49 -0
- package/dist/src/global/A-Inject/A-Inject.decorator.js.map +1 -0
- package/dist/src/global/A-Inject/A-Inject.error.d.ts +5 -0
- package/dist/src/global/A-Inject/A-Inject.error.js +10 -0
- package/dist/src/global/A-Inject/A-Inject.error.js.map +1 -0
- package/dist/src/global/A-Inject/A-Inject.types.d.ts +42 -0
- package/dist/src/{decorators/A-Entity/A-Entity.decorator.types.js → global/A-Inject/A-Inject.types.js} +1 -1
- package/dist/src/global/A-Inject/A-Inject.types.js.map +1 -0
- package/dist/src/global/A-Meta/A-Meta.class.d.ts +1 -1
- package/dist/src/global/A-Meta/A-Meta.types.d.ts +14 -0
- package/dist/src/global/A-Meta/A-Meta.types.js +1 -0
- package/dist/src/global/A-Scope/A-Scope.class.d.ts +406 -63
- package/dist/src/global/A-Scope/A-Scope.class.js +533 -287
- package/dist/src/global/A-Scope/A-Scope.class.js.map +1 -1
- package/dist/src/global/A-Scope/A-Scope.error.d.ts +6 -0
- package/dist/src/global/A-Scope/A-Scope.error.js +11 -0
- package/dist/src/global/A-Scope/A-Scope.error.js.map +1 -0
- package/dist/src/global/A-Scope/A-Scope.types.d.ts +50 -13
- package/dist/src/global/A-Stage/A-Stage.class.d.ts +31 -23
- package/dist/src/global/A-Stage/A-Stage.class.js +100 -68
- package/dist/src/global/A-Stage/A-Stage.class.js.map +1 -1
- package/dist/src/global/A-Stage/A-Stage.error.d.ts +2 -1
- package/dist/src/global/A-Stage/A-Stage.error.js +5 -2
- package/dist/src/global/A-Stage/A-Stage.error.js.map +1 -1
- package/dist/src/global/A-Stage/A-Stage.types.d.ts +4 -16
- package/dist/src/global/A-Stage/A-Stage.types.js +0 -16
- package/dist/src/global/A-Stage/A-Stage.types.js.map +1 -1
- package/dist/src/global/ASEID/ASEID.class.d.ts +130 -0
- package/dist/src/global/ASEID/ASEID.class.js +167 -0
- package/dist/src/global/ASEID/ASEID.class.js.map +1 -0
- package/dist/src/global/ASEID/ASEID.constants.js +2 -0
- package/dist/src/global/ASEID/ASEID.constants.js.map +1 -0
- package/dist/src/global/ASEID/ASEID.error.d.ts +5 -0
- package/dist/src/global/ASEID/ASEID.error.js +10 -0
- package/dist/src/global/ASEID/ASEID.error.js.map +1 -0
- package/dist/src/global/ASEID/ASEID.types.d.ts +65 -0
- package/dist/src/global/ASEID/ASEID.types.js +5 -0
- package/dist/src/global/ASEID/ASEID.types.js.map +1 -0
- package/dist/src/helpers/A_Common.helper.d.ts +28 -0
- package/dist/src/helpers/A_Common.helper.js +170 -0
- package/dist/src/helpers/A_Common.helper.js.map +1 -0
- package/dist/src/helpers/A_Formatter.helper.d.ts +35 -0
- package/dist/src/helpers/A_Formatter.helper.js +62 -0
- package/dist/src/helpers/A_Formatter.helper.js.map +1 -0
- package/dist/src/helpers/A_Identity.helper.d.ts +29 -0
- package/dist/src/helpers/A_Identity.helper.js +43 -0
- package/dist/src/helpers/A_Identity.helper.js.map +1 -0
- package/dist/src/helpers/{StepsManager.class.d.ts → A_StepsManager.class.d.ts} +4 -2
- package/dist/src/helpers/{StepsManager.class.js → A_StepsManager.class.js} +10 -5
- package/dist/src/helpers/A_StepsManager.class.js.map +1 -0
- package/dist/src/helpers/A_TypeGuards.helper.d.ts +205 -0
- package/dist/src/helpers/A_TypeGuards.helper.js +288 -0
- package/dist/src/helpers/A_TypeGuards.helper.js.map +1 -0
- package/dist/src/types/A_Common.types.d.ts +36 -0
- package/dist/src/types/A_Common.types.js +3 -0
- package/dist/src/types/A_Common.types.js.map +1 -0
- package/index.ts +27 -51
- package/jest.config.ts +1 -0
- package/package.json +1 -2
- package/src/constants/env.constants.ts +18 -11
- package/src/global/A-Abstraction/A-Abstraction-Extend.decorator.ts +103 -0
- package/src/global/A-Abstraction/A-Abstraction.class.ts +71 -65
- package/src/global/A-Abstraction/A-Abstraction.error.ts +9 -0
- package/src/global/A-Abstraction/A-Abstraction.types.ts +52 -13
- package/src/global/A-Caller/A_Caller.class.ts +61 -0
- package/src/global/A-Caller/A_Caller.error.ts +10 -0
- package/src/global/A-Caller/A_Caller.types.ts +25 -0
- package/src/global/A-Component/A-Component.class.ts +26 -15
- package/src/global/A-Component/A-Component.constants.ts +9 -0
- package/src/global/A-Component/A-Component.meta.ts +6 -16
- package/src/global/A-Component/A-Component.types.ts +53 -28
- package/src/global/A-Concept/A-Concept.class.ts +316 -0
- package/src/global/A-Concept/A-Concept.constants.ts +36 -0
- package/src/global/A-Concept/A-Concept.meta.ts +17 -0
- package/src/global/A-Concept/A-Concept.types.ts +100 -0
- package/src/global/A-Container/A-Container.class.ts +42 -83
- package/src/global/A-Container/A-Container.constants.ts +5 -0
- package/src/global/A-Container/A-Container.meta.ts +7 -11
- package/src/global/A-Container/A-Container.types.ts +38 -34
- package/src/global/A-Context/A-Context.class.ts +648 -412
- package/src/global/A-Context/A-Context.error.ts +44 -0
- package/src/global/A-Context/A-Context.types.ts +14 -0
- package/src/global/A-Entity/A-Entity.class.ts +39 -52
- package/src/global/A-Entity/A-Entity.constants.ts +12 -0
- package/src/global/A-Entity/A-Entity.error.ts +12 -0
- package/src/global/A-Entity/A-Entity.meta.ts +4 -4
- package/src/global/A-Entity/A-Entity.types.ts +31 -36
- package/src/global/A-Error/A_Error.class.ts +408 -0
- package/src/global/A-Error/A_Error.constants.ts +11 -0
- package/src/global/A-Error/A_Error.types.ts +96 -0
- package/src/{decorators → global}/A-Feature/A-Feature-Define.decorator.ts +31 -37
- package/src/global/A-Feature/A-Feature-Extend.decorator.ts +187 -0
- package/src/global/A-Feature/A-Feature.class.ts +279 -122
- package/src/global/A-Feature/A-Feature.error.ts +33 -0
- package/src/global/A-Feature/A-Feature.types.ts +278 -40
- package/src/global/A-Fragment/A-Fragment.class.ts +29 -100
- package/src/global/A-Fragment/A-Fragment.types.ts +25 -3
- package/src/global/A-Inject/A-Inject.decorator.ts +167 -0
- package/src/global/A-Inject/A-Inject.error.ts +8 -0
- package/src/global/A-Inject/A-Inject.types.ts +75 -0
- package/src/global/A-Meta/A-Meta.class.ts +1 -1
- package/src/global/A-Meta/A-Meta.types.ts +21 -0
- package/src/global/A-Scope/A-Scope.class.ts +841 -443
- package/src/global/A-Scope/A-Scope.error.ts +13 -0
- package/src/global/A-Scope/A-Scope.types.ts +65 -26
- package/src/global/A-Stage/A-Stage.class.ts +142 -80
- package/src/global/A-Stage/A-Stage.error.ts +4 -2
- package/src/global/A-Stage/A-Stage.types.ts +4 -25
- package/src/global/ASEID/ASEID.class.ts +275 -0
- package/src/global/ASEID/ASEID.error.ts +12 -0
- package/src/global/ASEID/ASEID.types.ts +79 -0
- package/src/helpers/A_Common.helper.ts +204 -0
- package/src/helpers/A_Formatter.helper.ts +58 -0
- package/src/helpers/A_Identity.helper.ts +53 -0
- package/src/helpers/{StepsManager.class.ts → A_StepsManager.class.ts} +19 -3
- package/src/helpers/A_TypeGuards.helper.ts +318 -0
- package/src/types/A_Common.types.ts +79 -0
- package/tests/A-Common.test.ts +117 -0
- package/tests/A-Component.test.ts +11 -6
- package/tests/A-Concept.test.ts +19 -22
- package/tests/A-Entity.test.ts +24 -24
- package/tests/A-Error.test.ts +129 -0
- package/tests/A-Feature.test.ts +34 -25
- package/tests/A-Scope.test.ts +50 -22
- package/tests/ASEID.test.ts +74 -0
- package/tsconfig.build.json +2 -1
- package/tsconfig.json +3 -2
- package/dist/src/base/A-Config/A-Config.container.d.ts +0 -9
- package/dist/src/base/A-Config/A-Config.container.js +0 -69
- package/dist/src/base/A-Config/A-Config.container.js.map +0 -1
- package/dist/src/base/A-Config/A-Config.context.d.ts +0 -30
- package/dist/src/base/A-Config/A-Config.context.js +0 -60
- package/dist/src/base/A-Config/A-Config.context.js.map +0 -1
- package/dist/src/base/A-Config/A-Config.types.d.ts +0 -20
- package/dist/src/base/A-Config/A-Config.types.js +0 -7
- package/dist/src/base/A-Config/A-Config.types.js.map +0 -1
- package/dist/src/base/A-Config/components/ConfigReader.component.d.ts +0 -29
- package/dist/src/base/A-Config/components/ConfigReader.component.js +0 -84
- package/dist/src/base/A-Config/components/ConfigReader.component.js.map +0 -1
- package/dist/src/base/A-Config/components/ENVConfigReader.component.d.ts +0 -10
- package/dist/src/base/A-Config/components/ENVConfigReader.component.js +0 -37
- package/dist/src/base/A-Config/components/ENVConfigReader.component.js.map +0 -1
- package/dist/src/base/A-Config/components/FileConfigReader.component.d.ts +0 -11
- package/dist/src/base/A-Config/components/FileConfigReader.component.js +0 -48
- package/dist/src/base/A-Config/components/FileConfigReader.component.js.map +0 -1
- package/dist/src/base/A-Errors/A-Error.entity.d.ts +0 -3
- package/dist/src/base/A-Errors/A-Error.entity.js +0 -8
- package/dist/src/base/A-Errors/A-Error.entity.js.map +0 -1
- package/dist/src/base/A-Errors/A-Errors.component.d.ts +0 -19
- package/dist/src/base/A-Errors/A-Errors.component.js +0 -87
- package/dist/src/base/A-Errors/A-Errors.component.js.map +0 -1
- package/dist/src/base/A-Errors/A-Errors.context.d.ts +0 -27
- package/dist/src/base/A-Errors/A-Errors.context.js +0 -50
- package/dist/src/base/A-Errors/A-Errors.context.js.map +0 -1
- package/dist/src/base/A-Errors/A-Errors.types.d.ts +0 -5
- package/dist/src/base/A-Errors/A-Errors.types.js.map +0 -1
- package/dist/src/base/A-Logger/A-Logger.component.d.ts +0 -31
- package/dist/src/base/A-Logger/A-Logger.component.js +0 -155
- package/dist/src/base/A-Logger/A-Logger.component.js.map +0 -1
- package/dist/src/base/A-Logger/A-Logger.types.js +0 -2
- package/dist/src/base/A-Logger/A-Logger.types.js.map +0 -1
- package/dist/src/base/A-Polyfill/A-Polyfill.component.d.ts +0 -5
- package/dist/src/base/A-Polyfill/A-Polyfill.component.js +0 -34
- package/dist/src/base/A-Polyfill/A-Polyfill.component.js.map +0 -1
- package/dist/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.d.ts +0 -14
- package/dist/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.js +0 -53
- package/dist/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.js.map +0 -1
- package/dist/src/decorators/A-Abstraction/A-Abstraction.decorator.types.d.ts +0 -2
- package/dist/src/decorators/A-Abstraction/A-Abstraction.decorator.types.js +0 -3
- package/dist/src/decorators/A-Abstraction/A-Abstraction.decorator.types.js.map +0 -1
- package/dist/src/decorators/A-Connect/A-Connect.decorator.d.ts +0 -19
- package/dist/src/decorators/A-Connect/A-Connect.decorator.js +0 -31
- package/dist/src/decorators/A-Connect/A-Connect.decorator.js.map +0 -1
- package/dist/src/decorators/A-Connect/A-Connect.decorator.types.d.ts +0 -1
- package/dist/src/decorators/A-Connect/A-Connect.decorator.types.js +0 -3
- package/dist/src/decorators/A-Connect/A-Connect.decorator.types.js.map +0 -1
- package/dist/src/decorators/A-Entity/A-Entity-List.decorator.d.ts +0 -1
- package/dist/src/decorators/A-Entity/A-Entity-List.decorator.js +0 -8
- package/dist/src/decorators/A-Entity/A-Entity-List.decorator.js.map +0 -1
- package/dist/src/decorators/A-Entity/A-Entity.decorator.types.d.ts +0 -14
- package/dist/src/decorators/A-Entity/A-Entity.decorator.types.js.map +0 -1
- package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.d.ts +0 -19
- package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.js.map +0 -1
- package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js +0 -81
- package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js.map +0 -1
- package/dist/src/decorators/A-Feature/A-Feature.decorator.types.d.ts +0 -96
- package/dist/src/decorators/A-Feature/A-Feature.decorator.types.js +0 -3
- package/dist/src/decorators/A-Feature/A-Feature.decorator.types.js.map +0 -1
- package/dist/src/decorators/A-Inject/A-Inject.decorator.d.ts +0 -30
- package/dist/src/decorators/A-Inject/A-Inject.decorator.js +0 -47
- package/dist/src/decorators/A-Inject/A-Inject.decorator.js.map +0 -1
- package/dist/src/decorators/A-Inject/A-Inject.decorator.types.d.ts +0 -48
- package/dist/src/decorators/A-Inject/A-Inject.decorator.types.js.map +0 -1
- package/dist/src/global/A-Channel/A-Channel.class.d.ts +0 -16
- package/dist/src/global/A-Channel/A-Channel.class.js +0 -59
- package/dist/src/global/A-Channel/A-Channel.class.js.map +0 -1
- package/dist/src/global/A-Channel/A-Channel.types.d.ts +0 -68
- package/dist/src/global/A-Channel/A-Channel.types.js.map +0 -1
- package/dist/src/global/A-Command/A-Command.class.d.ts +0 -187
- package/dist/src/global/A-Command/A-Command.class.js +0 -349
- package/dist/src/global/A-Command/A-Command.class.js.map +0 -1
- package/dist/src/global/A-Command/A-Command.constants.d.ts +0 -17
- package/dist/src/global/A-Command/A-Command.constants.js +0 -22
- package/dist/src/global/A-Command/A-Command.constants.js.map +0 -1
- package/dist/src/global/A-Command/A-Command.meta.d.ts +0 -11
- package/dist/src/global/A-Command/A-Command.meta.js +0 -18
- package/dist/src/global/A-Command/A-Command.meta.js.map +0 -1
- package/dist/src/global/A-Command/A-Command.types.d.ts +0 -43
- package/dist/src/global/A-Command/A-Command.types.js +0 -10
- package/dist/src/global/A-Command/A-Command.types.js.map +0 -1
- package/dist/src/global/A-Command/context/A_Command.context.d.ts +0 -64
- package/dist/src/global/A-Command/context/A_Command.context.js +0 -85
- package/dist/src/global/A-Command/context/A_Command.context.js.map +0 -1
- package/dist/src/global/A-Concept/A_Concept.class.d.ts +0 -104
- package/dist/src/global/A-Concept/A_Concept.class.js +0 -217
- package/dist/src/global/A-Concept/A_Concept.class.js.map +0 -1
- package/dist/src/global/A-Concept/A_Concept.meta.js.map +0 -1
- package/dist/src/global/A-Concept/A_Concept.types.d.ts +0 -103
- package/dist/src/global/A-Concept/A_Concept.types.js +0 -28
- package/dist/src/global/A-Concept/A_Concept.types.js.map +0 -1
- package/dist/src/global/A-Feature/A-FeatureCaller.class.d.ts +0 -22
- package/dist/src/global/A-Feature/A-FeatureCaller.class.js +0 -26
- package/dist/src/global/A-Feature/A-FeatureCaller.class.js.map +0 -1
- package/dist/src/helpers/StepsManager.class.js.map +0 -1
- package/dist/src/types/A_Module.types.d.ts +0 -17
- package/dist/src/types/A_Module.types.js +0 -22
- package/dist/src/types/A_Module.types.js.map +0 -1
- package/examples/entity/concept.ts +0 -68
- package/examples/entity/entities/Task.entity.ts +0 -110
- package/examples/entity/entities/User.entity.ts +0 -62
- package/examples/fe-be/channels/Test.channel.ts +0 -27
- package/examples/fe-be/components/BE-Controller.component.ts +0 -20
- package/examples/fe-be/components/FE.component.ts +0 -13
- package/examples/fe-be/containers/ServerApp.container.ts +0 -8
- package/examples/fe-be/containers/WebApp.container.ts +0 -13
- package/examples/multi-container/channels/Direct.channel.ts +0 -39
- package/examples/multi-container/concept.ts +0 -0
- package/examples/multi-container/containers/Command.container.ts +0 -41
- package/examples/multi-container/containers/Schedule.container.ts +0 -52
- package/examples/simple/components/A.component.ts +0 -71
- package/examples/simple/components/B.component.ts +0 -68
- package/examples/simple/concept.ts +0 -87
- package/examples/simple/containers/Main.container.ts +0 -88
- package/examples/simple/containers/Secondary.container.ts +0 -26
- package/examples/simple/context/Fragment_A.context.ts +0 -25
- package/examples/simple/context/Fragment_B.context.ts +0 -19
- package/examples/simple/entities/EntityA.entity.ts +0 -32
- package/examples/simple-http-server/components/http-error-handler.component.ts +0 -47
- package/examples/simple-http-server/components/http-request-handler.component.ts +0 -13
- package/examples/simple-http-server/concept.ts +0 -35
- package/examples/simple-http-server/containers/http-server.container.ts +0 -57
- package/examples/simple-http-server/contexts/http-request.context.ts +0 -59
- package/examples/simple-http-server/contexts/http-server.context.types.ts +0 -0
- package/examples/simple-http-server/controllers/orders.controller.ts +0 -20
- package/examples/simple-http-server/controllers/users.controller.ts +0 -104
- package/examples/simple-http-server/test.ts +0 -290
- package/src/base/A-Config/A-Config.container.ts +0 -68
- package/src/base/A-Config/A-Config.context.ts +0 -114
- package/src/base/A-Config/A-Config.types.ts +0 -28
- package/src/base/A-Config/components/ConfigReader.component.ts +0 -68
- package/src/base/A-Config/components/ENVConfigReader.component.ts +0 -31
- package/src/base/A-Config/components/FileConfigReader.component.ts +0 -41
- package/src/base/A-Errors/A-Error.entity.ts +0 -10
- package/src/base/A-Errors/A-Errors.component.ts +0 -103
- package/src/base/A-Errors/A-Errors.context.ts +0 -90
- package/src/base/A-Errors/A-Errors.types.ts +0 -6
- package/src/base/A-Logger/A-Logger.component.ts +0 -192
- package/src/base/A-Logger/A-Logger.types.ts +0 -0
- package/src/base/A-Polyfill/A-Polyfill.component.ts +0 -18
- package/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.ts +0 -81
- package/src/decorators/A-Abstraction/A-Abstraction.decorator.types.ts +0 -21
- package/src/decorators/A-Connect/A-Connect.decorator.ts +0 -71
- package/src/decorators/A-Connect/A-Connect.decorator.types.ts +0 -6
- package/src/decorators/A-Entity/A-Entity-List.decorator.ts +0 -12
- package/src/decorators/A-Entity/A-Entity.decorator.types.ts +0 -18
- package/src/decorators/A-Feature/A-Feature-Extend.decorator.ts +0 -151
- package/src/decorators/A-Feature/A-Feature.decorator.types.ts +0 -142
- package/src/decorators/A-Inject/A-Inject.decorator.ts +0 -119
- package/src/decorators/A-Inject/A-Inject.decorator.types.ts +0 -85
- package/src/global/A-Channel/A-Channel.class.ts +0 -111
- package/src/global/A-Channel/A-Channel.types.ts +0 -114
- package/src/global/A-Command/A-Command.class.ts +0 -419
- package/src/global/A-Command/A-Command.constants.ts +0 -27
- package/src/global/A-Command/A-Command.meta.ts +0 -22
- package/src/global/A-Command/A-Command.types.ts +0 -73
- package/src/global/A-Command/context/A_Command.context.ts +0 -114
- package/src/global/A-Concept/A_Concept.class.ts +0 -298
- package/src/global/A-Concept/A_Concept.meta.ts +0 -32
- package/src/global/A-Concept/A_Concept.types.ts +0 -143
- package/src/global/A-Feature/A-FeatureCaller.class.ts +0 -38
- package/src/types/A_Module.types.ts +0 -23
- package/tests/A-Command.test.ts +0 -133
- package/tests/A-Config.test.ts +0 -172
- /package/dist/src/global/A-Concept/{A_Concept.meta.d.ts → A-Concept.meta.d.ts} +0 -0
- /package/dist/src/{base/A-Logger/A-Logger.types.d.ts → global/ASEID/ASEID.constants.d.ts} +0 -0
- /package/{examples/fe-be/concept.ts → src/global/ASEID/ASEID.constants.ts} +0 -0
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import {
|
|
2
|
+
A_TYPES__Feature_Init,
|
|
3
|
+
A_TYPES__Feature_InitWithComponent,
|
|
4
|
+
A_TYPES__Feature_InitWithTemplate,
|
|
5
|
+
A_TYPES__FeatureAvailableComponents,
|
|
6
|
+
A_TYPES__FeatureState,
|
|
7
|
+
} from "./A-Feature.types";
|
|
8
|
+
import { A_Feature_Define } from "@adaas/a-concept/global/A-Feature/A-Feature-Define.decorator";
|
|
9
|
+
import { A_Feature_Extend } from "@adaas/a-concept/global/A-Feature/A-Feature-Extend.decorator";
|
|
7
10
|
import { A_Stage } from "../A-Stage/A-Stage.class";
|
|
8
|
-
import {
|
|
9
|
-
import { A_Scope } from "../A-Scope/A-Scope.class";
|
|
11
|
+
import { A_StepsManager } from "@adaas/a-concept/helpers/A_StepsManager.class";
|
|
10
12
|
import { A_StageError } from "../A-Stage/A-Stage.error";
|
|
11
|
-
import {
|
|
13
|
+
import { A_TypeGuards } from "@adaas/a-concept/helpers/A_TypeGuards.helper";
|
|
14
|
+
import { A_FeatureError } from "./A-Feature.error";
|
|
15
|
+
import { A_Context } from "../A-Context/A-Context.class";
|
|
16
|
+
import { A_Caller } from "../A-Caller/A_Caller.class";
|
|
17
|
+
import { A_Scope } from "../A-Scope/A-Scope.class";
|
|
18
|
+
import { A_Component } from "../A-Component/A-Component.class";
|
|
19
|
+
|
|
12
20
|
|
|
13
21
|
/**
|
|
14
22
|
* A_Feature is representing a feature that can be executed across multiple components
|
|
@@ -18,9 +26,11 @@ import { A_FeatureCaller } from "./A-FeatureCaller.class";
|
|
|
18
26
|
* across the different, distributed components
|
|
19
27
|
*
|
|
20
28
|
*/
|
|
21
|
-
export class A_Feature {
|
|
22
|
-
|
|
29
|
+
export class A_Feature<T extends A_TYPES__FeatureAvailableComponents = A_TYPES__FeatureAvailableComponents> {
|
|
23
30
|
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// --------------------------- Static Methods ---------------------------------
|
|
33
|
+
// =============================================================================
|
|
24
34
|
/**
|
|
25
35
|
* Define a new A-Feature
|
|
26
36
|
*/
|
|
@@ -28,80 +38,131 @@ export class A_Feature {
|
|
|
28
38
|
return A_Feature_Define;
|
|
29
39
|
}
|
|
30
40
|
|
|
31
|
-
|
|
32
41
|
/**
|
|
33
42
|
* Extend an existing A-Feature
|
|
34
43
|
*/
|
|
35
|
-
static get Extend():
|
|
44
|
+
static get Extend(): typeof A_Feature_Extend {
|
|
36
45
|
return A_Feature_Extend;
|
|
37
46
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
//
|
|
41
|
-
|
|
47
|
+
// =============================================================================
|
|
48
|
+
// --------------------------- Internal Properties ----------------------------
|
|
49
|
+
// =============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* The name of the Feature
|
|
52
|
+
*/
|
|
53
|
+
protected _name!: string;
|
|
54
|
+
/**
|
|
55
|
+
* List of stages that are part of this Feature
|
|
56
|
+
*/
|
|
57
|
+
protected _stages: Array<A_Stage> = [];
|
|
58
|
+
/**
|
|
59
|
+
* The Stage currently being processed
|
|
60
|
+
*/
|
|
42
61
|
protected _current?: A_Stage;
|
|
43
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Actual Index of the current Stage being processed
|
|
64
|
+
*/
|
|
44
65
|
protected _index: number = 0;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Steps Manager to organize the steps into stages
|
|
68
|
+
*/
|
|
69
|
+
protected _SM!: A_StepsManager;
|
|
70
|
+
/**
|
|
71
|
+
* The Caller that initiated the Feature call
|
|
72
|
+
*/
|
|
73
|
+
protected _caller!: A_Caller<T>;
|
|
74
|
+
/**
|
|
75
|
+
* The current state of the Feature
|
|
76
|
+
*/
|
|
77
|
+
protected _state: A_TYPES__FeatureState = A_TYPES__FeatureState.INITIALIZED;
|
|
78
|
+
/**
|
|
79
|
+
* The error that caused the Feature to be interrupted
|
|
80
|
+
*/
|
|
81
|
+
protected _error?: A_FeatureError
|
|
51
82
|
|
|
52
|
-
readonly name: string;
|
|
53
|
-
readonly Scope!: A_Scope;
|
|
54
83
|
|
|
55
84
|
|
|
85
|
+
/**
|
|
86
|
+
* A-Feature is a pipeline distributed by multiple components that can be easily attached or detached from the scope.
|
|
87
|
+
* Feature itself does not have scope, but attached to the caller who dictates how feature should be processed.
|
|
88
|
+
*
|
|
89
|
+
* Comparing to A-Command Feature does not store any state except statuses for better analysis.
|
|
90
|
+
*
|
|
91
|
+
* [!] Note: If A-Feature should have result use A-Fragment
|
|
92
|
+
*
|
|
93
|
+
* @param params
|
|
94
|
+
*/
|
|
56
95
|
constructor(
|
|
57
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Feature Initialization parameters
|
|
98
|
+
*/
|
|
99
|
+
params: A_TYPES__Feature_Init<T>
|
|
58
100
|
) {
|
|
59
|
-
this.
|
|
60
|
-
this.Scope = params.scope
|
|
101
|
+
this.validateParams(params);
|
|
61
102
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
this._current = this.stages[0];
|
|
67
|
-
|
|
68
|
-
this._caller = new A_FeatureCaller(params.caller);
|
|
103
|
+
const initializer = this.getInitializer(params);
|
|
104
|
+
// the returned initializer is already bound to `this` (we used .bind(this)),
|
|
105
|
+
// so calling it will run the appropriate logic on this instance:
|
|
106
|
+
initializer.call(this, params);
|
|
69
107
|
}
|
|
70
108
|
|
|
71
109
|
|
|
110
|
+
/**
|
|
111
|
+
* The name of the Feature
|
|
112
|
+
*/
|
|
113
|
+
get name(): string { return this._name; }
|
|
114
|
+
/**
|
|
115
|
+
* The error that caused the Feature to be interrupted
|
|
116
|
+
*/
|
|
117
|
+
get error(): A_FeatureError | undefined { return this._error; }
|
|
118
|
+
/**
|
|
119
|
+
* The current state of the Feature
|
|
120
|
+
*/
|
|
121
|
+
get state(): A_TYPES__FeatureState { return this._state; }
|
|
122
|
+
/**
|
|
123
|
+
* Sets the current state of the Feature
|
|
124
|
+
*/
|
|
125
|
+
get index(): number { return this._index; }
|
|
72
126
|
/**
|
|
73
127
|
* Returns the current A-Feature Stage
|
|
74
|
-
*
|
|
75
128
|
*/
|
|
76
|
-
get stage(): A_Stage | undefined {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
129
|
+
get stage(): A_Stage | undefined { return this._current; }
|
|
130
|
+
/**
|
|
131
|
+
* The Caller that initiated the Feature call
|
|
132
|
+
*/
|
|
133
|
+
get caller(): A_Caller<T> { return this._caller; }
|
|
134
|
+
/**
|
|
135
|
+
* The Scope allocated for the Feature Execution
|
|
136
|
+
*/
|
|
137
|
+
get scope(): A_Scope { return A_Context.scope(this); }
|
|
80
138
|
|
|
81
|
-
|
|
82
|
-
|
|
139
|
+
/**
|
|
140
|
+
* This method checks if the A-Feature is done
|
|
141
|
+
*
|
|
142
|
+
* @returns
|
|
143
|
+
*/
|
|
144
|
+
get isDone(): boolean {
|
|
145
|
+
return !this.stage
|
|
146
|
+
|| this._index >= this._stages.length
|
|
147
|
+
|| this.state === A_TYPES__FeatureState.COMPLETED
|
|
148
|
+
|| this.state === A_TYPES__FeatureState.INTERRUPTED;
|
|
83
149
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
150
|
/**
|
|
87
|
-
*
|
|
151
|
+
* Iterator to iterate over the steps of the feature
|
|
88
152
|
*
|
|
89
153
|
* @returns
|
|
90
154
|
*/
|
|
91
155
|
[Symbol.iterator](): Iterator<A_Stage, any> {
|
|
92
156
|
return {
|
|
93
|
-
// Custom next method
|
|
94
157
|
next: (): IteratorResult<A_Stage, any> => {
|
|
95
|
-
if (!this.isDone
|
|
96
|
-
|
|
97
|
-
this._current = this.stages[this._index];
|
|
158
|
+
if (!this.isDone) {
|
|
159
|
+
this._current = this._stages[this._index];
|
|
98
160
|
|
|
99
161
|
return {
|
|
100
162
|
value: this._current,
|
|
101
163
|
done: false
|
|
102
164
|
};
|
|
103
165
|
} else {
|
|
104
|
-
|
|
105
166
|
this._current = undefined; // Reset current on end
|
|
106
167
|
|
|
107
168
|
return {
|
|
@@ -113,122 +174,218 @@ export class A_Feature {
|
|
|
113
174
|
};
|
|
114
175
|
}
|
|
115
176
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
177
|
+
// ============================================================================
|
|
178
|
+
// ------------------------ Initialization Methods ----------------------------
|
|
179
|
+
// ============================================================================
|
|
119
180
|
/**
|
|
120
|
-
*
|
|
181
|
+
* Validates the provided parameters for A-Feature initialization
|
|
121
182
|
*
|
|
122
|
-
* @
|
|
183
|
+
* @param params
|
|
123
184
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
185
|
+
protected validateParams(
|
|
186
|
+
params: A_TYPES__Feature_Init<T>
|
|
187
|
+
) {
|
|
188
|
+
if (!params || typeof params !== 'object') {
|
|
189
|
+
throw new A_FeatureError(
|
|
190
|
+
A_FeatureError.FeatureInitializationError,
|
|
191
|
+
`Invalid A-Feature initialization parameters of type: ${typeof params} with value: ${JSON.stringify(params).slice(0, 100)}...`
|
|
192
|
+
);
|
|
193
|
+
}
|
|
129
194
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
195
|
/**
|
|
134
|
-
*
|
|
196
|
+
* Returns the appropriate initializer method based on the provided parameters
|
|
135
197
|
*
|
|
136
|
-
* @param
|
|
198
|
+
* @param params
|
|
199
|
+
* @returns
|
|
137
200
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
201
|
+
protected getInitializer(
|
|
202
|
+
params: A_TYPES__Feature_Init<T>
|
|
203
|
+
): (param1: any) => void | (() => void) {
|
|
140
204
|
|
|
141
|
-
|
|
205
|
+
switch (true) {
|
|
206
|
+
case 'component' in params:
|
|
207
|
+
return this.fromComponent;
|
|
142
208
|
|
|
143
|
-
|
|
144
|
-
|
|
209
|
+
case 'template' in params:
|
|
210
|
+
return this.fromTemplate;
|
|
211
|
+
default:
|
|
212
|
+
throw new A_FeatureError(
|
|
213
|
+
A_FeatureError.FeatureInitializationError,
|
|
214
|
+
`Invalid A-Feature initialization parameters of type: ${typeof params} with value: ${JSON.stringify(params).slice(0, 100)}...`
|
|
215
|
+
);
|
|
145
216
|
}
|
|
146
217
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
218
|
/**
|
|
150
|
-
*
|
|
151
|
-
* Uses to interrupt or end the feature processing
|
|
152
|
-
*
|
|
153
|
-
* The result of the feature is a Scope Fragments
|
|
219
|
+
* Initializes the A-Feature from the provided template
|
|
154
220
|
*
|
|
155
|
-
* @param
|
|
156
|
-
* @returns
|
|
221
|
+
* @param params
|
|
157
222
|
*/
|
|
158
|
-
|
|
223
|
+
protected fromTemplate(
|
|
224
|
+
params: A_TYPES__Feature_InitWithTemplate
|
|
225
|
+
) {
|
|
226
|
+
if (!params.template || !Array.isArray(params.template)) {
|
|
227
|
+
throw new A_FeatureError(
|
|
228
|
+
A_FeatureError.FeatureInitializationError,
|
|
229
|
+
`Invalid A-Feature template provided of type: ${typeof params.template} with value: ${JSON.stringify(params.template).slice(0, 100)}...`
|
|
230
|
+
);
|
|
231
|
+
}
|
|
159
232
|
|
|
160
|
-
|
|
233
|
+
if (!params.scope || !(params.scope instanceof A_Scope)) {
|
|
234
|
+
throw new A_FeatureError(
|
|
235
|
+
A_FeatureError.FeatureInitializationError,
|
|
236
|
+
`Invalid A-Feature scope provided of type: ${typeof params.scope} with value: ${JSON.stringify(params.scope).slice(0, 100)}...`
|
|
237
|
+
);
|
|
238
|
+
}
|
|
161
239
|
|
|
162
|
-
|
|
240
|
+
// 1) save feature name
|
|
241
|
+
this._name = params.name;
|
|
163
242
|
|
|
164
|
-
|
|
165
|
-
|
|
243
|
+
// 2) get scope from where feature is called
|
|
244
|
+
const componentScope = params.scope;
|
|
166
245
|
|
|
246
|
+
// 3) create caller wrapper for the simple injection of the caller component
|
|
247
|
+
// - Just to prevent issues with undefined caller in features without component
|
|
248
|
+
// - TODO: maybe would be better to allow passing caller in params?
|
|
249
|
+
this._caller = new A_Caller<T>(new A_Component() as T);
|
|
167
250
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* Uses to interrupt or end the feature processing
|
|
171
|
-
*
|
|
172
|
-
* @param error
|
|
173
|
-
*/
|
|
174
|
-
async failed(
|
|
175
|
-
error: Error | A_Error | unknown
|
|
176
|
-
) {
|
|
177
|
-
this.error = error as A_Error;
|
|
178
|
-
this.state = A_TYPES__FeatureState.FAILED;
|
|
251
|
+
// 4) allocate new scope for the feature
|
|
252
|
+
const scope = A_Context.allocate(this);
|
|
179
253
|
|
|
254
|
+
// 5) ensure that the scope of the caller component is inherited by the feature scope
|
|
255
|
+
scope.inherit(componentScope);
|
|
180
256
|
|
|
181
|
-
|
|
182
|
-
|
|
257
|
+
// 6) create steps manager to organize steps into stages
|
|
258
|
+
this._SM = new A_StepsManager(params.template);
|
|
183
259
|
|
|
260
|
+
// 7) create stages from the steps
|
|
261
|
+
this._stages = this._SM.toStages(this);
|
|
184
262
|
|
|
263
|
+
// 8) set the first stage as current
|
|
264
|
+
this._current = this._stages[0];
|
|
265
|
+
}
|
|
185
266
|
/**
|
|
186
|
-
*
|
|
267
|
+
* Initializes the A-Feature from the provided component
|
|
187
268
|
*
|
|
269
|
+
* @param params
|
|
188
270
|
*/
|
|
189
|
-
|
|
190
|
-
|
|
271
|
+
protected fromComponent(
|
|
272
|
+
params: A_TYPES__Feature_InitWithComponent<T>
|
|
191
273
|
) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
274
|
+
if (!params.component || !A_TypeGuards.isAllowedForFeatureDefinition(params.component)) {
|
|
275
|
+
throw new A_FeatureError(
|
|
276
|
+
A_FeatureError.FeatureInitializationError,
|
|
277
|
+
`Invalid A-Feature component provided of type: ${typeof params.component} with value: ${JSON.stringify(params.component).slice(0, 100)}...`
|
|
278
|
+
);
|
|
196
279
|
}
|
|
197
280
|
|
|
198
|
-
|
|
199
|
-
|
|
281
|
+
// 1) save feature name
|
|
282
|
+
this._name = params.name;
|
|
200
283
|
|
|
201
|
-
|
|
202
|
-
|
|
284
|
+
// 2) get scope from where feature is called
|
|
285
|
+
const componentScope = A_Context.scope(params.component);
|
|
203
286
|
|
|
204
|
-
|
|
287
|
+
// 3) create caller wrapper for the simple injection of the caller component
|
|
288
|
+
this._caller = new A_Caller<T>(params.component);
|
|
205
289
|
|
|
206
|
-
|
|
207
|
-
|
|
290
|
+
// 4) allocate new scope for the feature
|
|
291
|
+
const scope = A_Context.allocate(this);
|
|
292
|
+
|
|
293
|
+
// 5) ensure that the scope of the caller component is inherited by the feature scope
|
|
294
|
+
scope.inherit(componentScope);
|
|
295
|
+
|
|
296
|
+
// 6) retrieve the template from the context
|
|
297
|
+
const template = A_Context.featureTemplate(this._name, this._caller.component, scope);
|
|
298
|
+
|
|
299
|
+
// 7) create steps manager to organize steps into stages
|
|
300
|
+
this._SM = new A_StepsManager(template);
|
|
208
301
|
|
|
302
|
+
// 8) create stages from the steps
|
|
303
|
+
this._stages = this._SM.toStages(this);
|
|
209
304
|
|
|
210
|
-
|
|
305
|
+
// 9) set the first stage as current
|
|
306
|
+
this._current = this._stages[0];
|
|
307
|
+
}
|
|
211
308
|
|
|
212
309
|
|
|
213
|
-
|
|
310
|
+
// ============================================================================
|
|
311
|
+
// ----------------------- Main Processing Methods ----------------------------
|
|
312
|
+
// ============================================================================
|
|
313
|
+
/**
|
|
314
|
+
* This method processes the feature by executing all the stages
|
|
315
|
+
*
|
|
316
|
+
*/
|
|
317
|
+
async process(
|
|
318
|
+
/**
|
|
319
|
+
* Optional scope to be used to resolve the steps dependencies
|
|
320
|
+
* If not provided, the scope of the caller component will be used
|
|
321
|
+
*/
|
|
322
|
+
scope?: A_Scope,
|
|
323
|
+
) {
|
|
324
|
+
if (this.isDone)
|
|
325
|
+
return;
|
|
214
326
|
|
|
215
|
-
|
|
327
|
+
this._state = A_TYPES__FeatureState.PROCESSING;
|
|
328
|
+
|
|
329
|
+
for (const stage of this._stages) {
|
|
330
|
+
await stage.process(scope);
|
|
216
331
|
}
|
|
217
332
|
|
|
333
|
+
return await this.completed();
|
|
218
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* This method moves the feature to the next stage
|
|
337
|
+
*
|
|
338
|
+
* @param stage
|
|
339
|
+
*/
|
|
340
|
+
next(stage) {
|
|
341
|
+
const stageIndex = this._stages.indexOf(stage);
|
|
219
342
|
|
|
343
|
+
this._index = stageIndex + 1;
|
|
220
344
|
|
|
221
|
-
|
|
222
|
-
|
|
345
|
+
if (this._index >= this._stages.length) {
|
|
346
|
+
this.completed();
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* This method marks the feature as completed and returns the result
|
|
351
|
+
* Uses to interrupt or end the feature processing
|
|
352
|
+
*
|
|
353
|
+
* @param result
|
|
354
|
+
* @returns
|
|
355
|
+
*/
|
|
356
|
+
async completed(): Promise<void> {
|
|
357
|
+
this._state = A_TYPES__FeatureState.COMPLETED;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* This method marks the feature as failed and throws an error
|
|
361
|
+
* Uses to interrupt or end the feature processing
|
|
362
|
+
*
|
|
363
|
+
* @param error
|
|
364
|
+
*/
|
|
365
|
+
async interrupt(
|
|
366
|
+
/**
|
|
367
|
+
* The reason of feature interruption
|
|
368
|
+
*/
|
|
369
|
+
reason?: string | A_StageError | Error
|
|
370
|
+
) {
|
|
223
371
|
switch (true) {
|
|
224
|
-
case
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
372
|
+
case A_TypeGuards.isString(reason):
|
|
373
|
+
this._error = new A_FeatureError(A_FeatureError.Interruption, reason);
|
|
374
|
+
break;
|
|
375
|
+
|
|
376
|
+
case A_TypeGuards.isErrorInstance(reason):
|
|
377
|
+
this._error = new A_FeatureError({
|
|
378
|
+
code: A_FeatureError.Interruption,
|
|
379
|
+
message: reason.message,
|
|
380
|
+
description: reason.description,
|
|
381
|
+
originalError: reason
|
|
382
|
+
});
|
|
383
|
+
break;
|
|
229
384
|
|
|
230
385
|
default:
|
|
231
|
-
|
|
386
|
+
break;
|
|
232
387
|
}
|
|
388
|
+
|
|
389
|
+
this._state = A_TYPES__FeatureState.INTERRUPTED;
|
|
233
390
|
}
|
|
234
391
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { A_Error } from "../A-Error/A_Error.class";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export class A_FeatureError extends A_Error {
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Indicates that the Feature has been interrupted
|
|
9
|
+
*/
|
|
10
|
+
static readonly Interruption = 'Feature Interrupted';
|
|
11
|
+
/**
|
|
12
|
+
* Indicates that there was an error initializing the Feature
|
|
13
|
+
*
|
|
14
|
+
* Failed during the A-Feature initialization process
|
|
15
|
+
*/
|
|
16
|
+
static readonly FeatureInitializationError = 'Unable to initialize A-Feature';
|
|
17
|
+
|
|
18
|
+
// =======================================================================
|
|
19
|
+
// ---------------------- Decorator Errors -----------------------------
|
|
20
|
+
// =======================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Indicates that there was an error defining the Feature
|
|
23
|
+
*
|
|
24
|
+
* Failed during the @A_Feature.Define() decorator execution
|
|
25
|
+
*/
|
|
26
|
+
static readonly FeatureDefinitionError = 'Unable to define A-Feature';
|
|
27
|
+
/**
|
|
28
|
+
* Indicates that there was an error extending the Feature
|
|
29
|
+
*
|
|
30
|
+
* Failed during the @A_Feature.Extend() decorator execution
|
|
31
|
+
*/
|
|
32
|
+
static readonly FeatureExtensionError = 'Unable to extend A-Feature';
|
|
33
|
+
}
|