@adaas/a-utils 0.3.5 → 0.3.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 (63) hide show
  1. package/.conf/tsconfig.browser.json +4 -1
  2. package/.conf/tsconfig.node.json +5 -2
  3. package/dist/browser/a-service.mjs +12 -12
  4. package/dist/browser/a-service.mjs.map +1 -1
  5. package/dist/browser/a-signal.d.mts +51 -30
  6. package/dist/browser/a-signal.mjs +100 -65
  7. package/dist/browser/a-signal.mjs.map +1 -1
  8. package/dist/browser/chunk-S2RSPZXR.mjs +143 -0
  9. package/dist/browser/chunk-S2RSPZXR.mjs.map +1 -0
  10. package/dist/browser/helpers.d.mts +56 -0
  11. package/dist/browser/helpers.mjs +5 -0
  12. package/dist/browser/helpers.mjs.map +1 -0
  13. package/dist/node/{A-Signal.types-P5VKMKMs.d.mts → A-Signal.types-DxQHmPm6.d.mts} +23 -27
  14. package/dist/node/{A-Signal.types-P5VKMKMs.d.ts → A-Signal.types-DxQHmPm6.d.ts} +23 -27
  15. package/dist/node/helpers/A-Utils.helper.d.mts +56 -0
  16. package/dist/node/helpers/A-Utils.helper.d.ts +56 -0
  17. package/dist/node/helpers/A-Utils.helper.js +153 -0
  18. package/dist/node/helpers/A-Utils.helper.js.map +1 -0
  19. package/dist/node/helpers/A-Utils.helper.mjs +143 -0
  20. package/dist/node/helpers/A-Utils.helper.mjs.map +1 -0
  21. package/dist/node/helpers/index.d.mts +3 -0
  22. package/dist/node/helpers/index.d.ts +3 -0
  23. package/dist/node/helpers/index.js +12 -0
  24. package/dist/node/helpers/index.js.map +1 -0
  25. package/dist/node/helpers/index.mjs +4 -0
  26. package/dist/node/helpers/index.mjs.map +1 -0
  27. package/dist/node/lib/A-Service/A-Service.container.js +12 -12
  28. package/dist/node/lib/A-Service/A-Service.container.js.map +1 -1
  29. package/dist/node/lib/A-Service/A-Service.container.mjs +12 -12
  30. package/dist/node/lib/A-Service/A-Service.container.mjs.map +1 -1
  31. package/dist/node/lib/A-Signal/A-Signal.types.d.mts +1 -1
  32. package/dist/node/lib/A-Signal/A-Signal.types.d.ts +1 -1
  33. package/dist/node/lib/A-Signal/components/A-SignalBus.component.d.mts +1 -1
  34. package/dist/node/lib/A-Signal/components/A-SignalBus.component.d.ts +1 -1
  35. package/dist/node/lib/A-Signal/context/A-SignalConfig.context.d.mts +1 -1
  36. package/dist/node/lib/A-Signal/context/A-SignalConfig.context.d.ts +1 -1
  37. package/dist/node/lib/A-Signal/context/A-SignalState.context.d.mts +1 -1
  38. package/dist/node/lib/A-Signal/context/A-SignalState.context.d.ts +1 -1
  39. package/dist/node/lib/A-Signal/entities/A-Signal.entity.d.mts +1 -1
  40. package/dist/node/lib/A-Signal/entities/A-Signal.entity.d.ts +1 -1
  41. package/dist/node/lib/A-Signal/entities/A-Signal.entity.js +35 -59
  42. package/dist/node/lib/A-Signal/entities/A-Signal.entity.js.map +1 -1
  43. package/dist/node/lib/A-Signal/entities/A-Signal.entity.mjs +35 -59
  44. package/dist/node/lib/A-Signal/entities/A-Signal.entity.mjs.map +1 -1
  45. package/dist/node/lib/A-Signal/entities/A-SignalVector.entity.d.mts +29 -4
  46. package/dist/node/lib/A-Signal/entities/A-SignalVector.entity.d.ts +29 -4
  47. package/dist/node/lib/A-Signal/entities/A-SignalVector.entity.js +64 -5
  48. package/dist/node/lib/A-Signal/entities/A-SignalVector.entity.js.map +1 -1
  49. package/dist/node/lib/A-Signal/entities/A-SignalVector.entity.mjs +65 -6
  50. package/dist/node/lib/A-Signal/entities/A-SignalVector.entity.mjs.map +1 -1
  51. package/dist/node/lib/A-Signal/index.d.mts +1 -1
  52. package/dist/node/lib/A-Signal/index.d.ts +1 -1
  53. package/jest.config.ts +3 -1
  54. package/package.json +19 -3
  55. package/src/helpers/A-Utils.helper.ts +186 -0
  56. package/src/helpers/index.ts +1 -0
  57. package/src/lib/A-Service/A-Service.container.ts +12 -12
  58. package/src/lib/A-Signal/A-Signal.types.ts +2 -2
  59. package/src/lib/A-Signal/entities/A-Signal.entity.ts +44 -84
  60. package/src/lib/A-Signal/entities/A-SignalVector.entity.ts +80 -11
  61. package/tests/A-Signal.test.ts +16 -12
  62. package/tsconfig.json +4 -1
  63. package/tsup.config.ts +2 -0
@@ -20,7 +20,10 @@
20
20
  "@adaas/a-utils/a-schedule": ["src/lib/A-Schedule"],
21
21
  "@adaas/a-utils/a-service": ["src/lib/A-Service"],
22
22
  "@adaas/a-utils/a-signal": ["src/lib/A-Signal"],
23
- "@adaas/a-utils/a-state-machine": ["src/lib/A-StateMachine"]
23
+ "@adaas/a-utils/a-state-machine": ["src/lib/A-StateMachine"],
24
+
25
+ "@adaas/a-utils/helpers": ["src/helpers"],
26
+
24
27
  },
25
28
  },
26
29
  }
@@ -4,7 +4,7 @@
4
4
  "rootDir": "../",
5
5
  "outDir": "dist/node",
6
6
  "baseUrl": "../",
7
-
7
+
8
8
  "paths": {
9
9
  "@adaas/a-utils/a-channel": ["src/lib/A-Channel"],
10
10
  "@adaas/a-utils/a-command": ["src/lib/A-Command"],
@@ -20,7 +20,10 @@
20
20
  "@adaas/a-utils/a-schedule": ["src/lib/A-Schedule"],
21
21
  "@adaas/a-utils/a-service": ["src/lib/A-Service"],
22
22
  "@adaas/a-utils/a-signal": ["src/lib/A-Signal"],
23
- "@adaas/a-utils/a-state-machine": ["src/lib/A-StateMachine"]
23
+ "@adaas/a-utils/a-state-machine": ["src/lib/A-StateMachine"],
24
+
25
+
26
+ "@adaas/a-utils/helpers": ["src/helpers"],
24
27
  },
25
28
 
26
29
  "types": [
@@ -32,9 +32,9 @@ var A_Service = class extends A_Container {
32
32
  */
33
33
  async load() {
34
34
  try {
35
- await this.call("_A_Service_onBeforeLoad" /* onBeforeLoad */);
36
- await this.call("_A_Service_onLoad" /* onLoad */);
37
- await this.call("_A_Service_onAfterLoad" /* onAfterLoad */);
35
+ await this.call("_A_Service_onBeforeLoad" /* onBeforeLoad */, this.scope);
36
+ await this.call("_A_Service_onLoad" /* onLoad */, this.scope);
37
+ await this.call("_A_Service_onAfterLoad" /* onAfterLoad */, this.scope);
38
38
  } catch (error) {
39
39
  let wrappedError;
40
40
  switch (true) {
@@ -53,7 +53,7 @@ var A_Service = class extends A_Container {
53
53
  break;
54
54
  }
55
55
  this.scope.register(wrappedError);
56
- await this.call("_A_Service_onError" /* onError */);
56
+ await this.call("_A_Service_onError" /* onError */, this.scope);
57
57
  }
58
58
  }
59
59
  /**
@@ -61,9 +61,9 @@ var A_Service = class extends A_Container {
61
61
  */
62
62
  async start() {
63
63
  try {
64
- await this.call("_A_Service_onBeforeStart" /* onBeforeStart */);
65
- await this.call("_A_Service_onStart" /* onStart */);
66
- await this.call("_A_Service_onAfterStart" /* onAfterStart */);
64
+ await this.call("_A_Service_onBeforeStart" /* onBeforeStart */, this.scope);
65
+ await this.call("_A_Service_onStart" /* onStart */, this.scope);
66
+ await this.call("_A_Service_onAfterStart" /* onAfterStart */, this.scope);
67
67
  } catch (error) {
68
68
  let wrappedError;
69
69
  switch (true) {
@@ -82,7 +82,7 @@ var A_Service = class extends A_Container {
82
82
  break;
83
83
  }
84
84
  this.scope.register(wrappedError);
85
- await this.call("_A_Service_onError" /* onError */);
85
+ await this.call("_A_Service_onError" /* onError */, this.scope);
86
86
  }
87
87
  }
88
88
  /**
@@ -90,9 +90,9 @@ var A_Service = class extends A_Container {
90
90
  */
91
91
  async stop() {
92
92
  try {
93
- await this.call("_A_Service_onBeforeStop" /* onBeforeStop */);
94
- await this.call("_A_Service_onStop" /* onStop */);
95
- await this.call("_A_Service_onAfterStop" /* onAfterStop */);
93
+ await this.call("_A_Service_onBeforeStop" /* onBeforeStop */, this.scope);
94
+ await this.call("_A_Service_onStop" /* onStop */, this.scope);
95
+ await this.call("_A_Service_onAfterStop" /* onAfterStop */, this.scope);
96
96
  } catch (error) {
97
97
  let wrappedError;
98
98
  switch (true) {
@@ -111,7 +111,7 @@ var A_Service = class extends A_Container {
111
111
  break;
112
112
  }
113
113
  this.scope.register(wrappedError);
114
- await this.call("_A_Service_onError" /* onError */);
114
+ await this.call("_A_Service_onError" /* onError */, this.scope);
115
115
  }
116
116
  }
117
117
  async [_j = "_A_Service_onBeforeLoad" /* onBeforeLoad */](polyfill, ...args) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/A-Service/A-Service.constants.ts","../../src/lib/A-Service/A-Service.error.ts","../../src/lib/A-Service/A-Service.container.ts"],"names":["A_ServiceFeatures","A_Error"],"mappings":"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","file":"a-service.mjs","sourcesContent":["export enum A_ServiceFeatures {\n\n onBeforeLoad = '_A_Service_onBeforeLoad',\n onLoad = '_A_Service_onLoad',\n onAfterLoad = '_A_Service_onAfterLoad',\n\n onBeforeStart = '_A_Service_onBeforeStart',\n onStart = '_A_Service_onStart',\n onAfterStart = '_A_Service_onAfterStart',\n\n onBeforeStop = '_A_Service_onBeforeStop',\n onStop = '_A_Service_onStop',\n onAfterStop = '_A_Service_onAfterStop',\n\n\n onError = '_A_Service_onError',\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\n\nexport class A_Service_Error extends A_Error {\n\n static readonly ServiceLoadError = 'Service load error';\n\n static readonly ServiceStartError = 'Service start error';\n\n static readonly ServiceStopError = 'Service stop error';\n\n \n\n}","import { A_Concept, A_Container, A_Error, A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport { A_ServiceFeatures } from \"./A-Service.constants\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Service_Error } from \"./A-Service.error\";\nimport { A_Frame } from \"@adaas/a-frame\";\nimport { A_Polyfill } from '@adaas/a-utils/a-polyfill';\n\n\n\n/**\n * A-Service is a container that can run different types of services, such as HTTP servers, workers, etc.\n * Depending on the provided config and configuration, it will load the necessary components and start the service.\n * \n */\n@A_Frame.Container({\n namespace: 'A-Utils',\n name: 'A-Service',\n description: 'Service container that manages the lifecycle of various types of services, such as HTTP servers and workers or UI loader. It dynamically loads necessary components based on the provided configuration and orchestrates the start and stop processes, ensuring proper error handling and extensibility through feature hooks.'\n})\nexport class A_Service extends A_Container {\n\n\n @A_Concept.Load()\n /**\n * Load the service\n */\n async load() {\n try {\n await this.call(A_ServiceFeatures.onBeforeLoad);\n\n await this.call(A_ServiceFeatures.onLoad);\n\n await this.call(A_ServiceFeatures.onAfterLoad);\n\n } catch (error) {\n\n let wrappedError;\n\n switch (true) {\n case error instanceof A_Service_Error:\n wrappedError = error;\n break;\n\n case error instanceof A_Error && error.originalError instanceof A_Service_Error:\n wrappedError = error.originalError;\n break;\n\n default:\n wrappedError = new A_Service_Error({\n title: A_Service_Error.ServiceLoadError,\n description: 'An error occurred while processing the request.',\n originalError: error\n })\n break;\n }\n\n this.scope.register(wrappedError);\n\n await this.call(A_ServiceFeatures.onError);\n }\n\n }\n\n\n @A_Concept.Start()\n /**\n * Start the server\n */\n async start() {\n try {\n await this.call(A_ServiceFeatures.onBeforeStart);\n\n await this.call(A_ServiceFeatures.onStart);\n\n await this.call(A_ServiceFeatures.onAfterStart);\n\n } catch (error) {\n\n let wrappedError;\n\n switch (true) {\n case error instanceof A_Service_Error:\n wrappedError = error;\n break;\n\n case error instanceof A_Error && error.originalError instanceof A_Service_Error:\n wrappedError = error.originalError;\n break;\n\n default:\n wrappedError = new A_Service_Error({\n title: A_Service_Error.ServiceStartError,\n description: 'An error occurred while processing the request.',\n originalError: error\n })\n break;\n }\n\n this.scope.register(wrappedError);\n\n await this.call(A_ServiceFeatures.onError);\n }\n\n }\n\n @A_Concept.Stop()\n /**\n * Stop the server\n */\n async stop() {\n try {\n await this.call(A_ServiceFeatures.onBeforeStop);\n\n await this.call(A_ServiceFeatures.onStop);\n\n await this.call(A_ServiceFeatures.onAfterStop);\n\n } catch (error) {\n\n let wrappedError;\n\n switch (true) {\n case error instanceof A_Service_Error:\n wrappedError = error;\n break;\n\n case error instanceof A_Error && error.originalError instanceof A_Service_Error:\n wrappedError = error.originalError;\n break;\n\n default:\n wrappedError = new A_Service_Error({\n title: A_Service_Error.ServiceStopError,\n description: 'An error occurred while processing the request.',\n originalError: error\n })\n break;\n }\n\n this.scope.register(wrappedError);\n\n await this.call(A_ServiceFeatures.onError);\n }\n }\n\n\n\n\n // ======================================================================================\n // ============================= A-Service Lifecycle =================================\n // ======================================================================================\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onBeforeLoad](\n @A_Inject(A_Polyfill) polyfill: A_Polyfill,\n ...args: any[]\n ): Promise<void> {\n // Initialize Polyfill\n if (!polyfill) {\n this.scope.register(A_Polyfill);\n polyfill = this.scope.resolve(A_Polyfill)!\n }\n }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onLoad](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onAfterLoad](...args: any[]) { }\n\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onBeforeStart](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onStart](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onAfterStart](...args: any[]) { }\n\n\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onBeforeStop](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onStop](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onAfterStop](...args: any[]) { }\n\n\n\n @A_Feature.Extend({\n before: /.*/\n })\n protected async [A_ServiceFeatures.onError](\n @A_Inject(A_Error) error: A_Error,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ) {\n logger?.error(error);\n }\n\n}\n\n\n\n\n\n\n\n\n"]}
1
+ {"version":3,"sources":["../../src/lib/A-Service/A-Service.constants.ts","../../src/lib/A-Service/A-Service.error.ts","../../src/lib/A-Service/A-Service.container.ts"],"names":["A_ServiceFeatures","A_Error"],"mappings":"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","file":"a-service.mjs","sourcesContent":["export enum A_ServiceFeatures {\n\n onBeforeLoad = '_A_Service_onBeforeLoad',\n onLoad = '_A_Service_onLoad',\n onAfterLoad = '_A_Service_onAfterLoad',\n\n onBeforeStart = '_A_Service_onBeforeStart',\n onStart = '_A_Service_onStart',\n onAfterStart = '_A_Service_onAfterStart',\n\n onBeforeStop = '_A_Service_onBeforeStop',\n onStop = '_A_Service_onStop',\n onAfterStop = '_A_Service_onAfterStop',\n\n\n onError = '_A_Service_onError',\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\n\nexport class A_Service_Error extends A_Error {\n\n static readonly ServiceLoadError = 'Service load error';\n\n static readonly ServiceStartError = 'Service start error';\n\n static readonly ServiceStopError = 'Service stop error';\n\n \n\n}","import { A_Concept, A_Container, A_Error, A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport { A_ServiceFeatures } from \"./A-Service.constants\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Service_Error } from \"./A-Service.error\";\nimport { A_Frame } from \"@adaas/a-frame\";\nimport { A_Polyfill } from '@adaas/a-utils/a-polyfill';\n\n\n\n/**\n * A-Service is a container that can run different types of services, such as HTTP servers, workers, etc.\n * Depending on the provided config and configuration, it will load the necessary components and start the service.\n * \n */\n@A_Frame.Container({\n namespace: 'A-Utils',\n name: 'A-Service',\n description: 'Service container that manages the lifecycle of various types of services, such as HTTP servers and workers or UI loader. It dynamically loads necessary components based on the provided configuration and orchestrates the start and stop processes, ensuring proper error handling and extensibility through feature hooks.'\n})\nexport class A_Service extends A_Container {\n\n\n @A_Concept.Load()\n /**\n * Load the service\n */\n async load() {\n try {\n await this.call(A_ServiceFeatures.onBeforeLoad, this.scope);\n\n await this.call(A_ServiceFeatures.onLoad, this.scope);\n\n await this.call(A_ServiceFeatures.onAfterLoad, this.scope);\n\n } catch (error) {\n\n let wrappedError;\n\n switch (true) {\n case error instanceof A_Service_Error:\n wrappedError = error;\n break;\n\n case error instanceof A_Error && error.originalError instanceof A_Service_Error:\n wrappedError = error.originalError;\n break;\n\n default:\n wrappedError = new A_Service_Error({\n title: A_Service_Error.ServiceLoadError,\n description: 'An error occurred while processing the request.',\n originalError: error\n })\n break;\n }\n\n this.scope.register(wrappedError);\n\n await this.call(A_ServiceFeatures.onError, this.scope);\n }\n\n }\n\n\n @A_Concept.Start()\n /**\n * Start the server\n */\n async start() {\n try {\n await this.call(A_ServiceFeatures.onBeforeStart, this.scope);\n\n await this.call(A_ServiceFeatures.onStart, this.scope);\n\n await this.call(A_ServiceFeatures.onAfterStart, this.scope);\n\n } catch (error) {\n\n let wrappedError;\n\n switch (true) {\n case error instanceof A_Service_Error:\n wrappedError = error;\n break;\n\n case error instanceof A_Error && error.originalError instanceof A_Service_Error:\n wrappedError = error.originalError;\n break;\n\n default:\n wrappedError = new A_Service_Error({\n title: A_Service_Error.ServiceStartError,\n description: 'An error occurred while processing the request.',\n originalError: error\n })\n break;\n }\n\n this.scope.register(wrappedError);\n\n await this.call(A_ServiceFeatures.onError, this.scope);\n }\n\n }\n\n @A_Concept.Stop()\n /**\n * Stop the server\n */\n async stop() {\n try {\n await this.call(A_ServiceFeatures.onBeforeStop, this.scope);\n\n await this.call(A_ServiceFeatures.onStop, this.scope);\n\n await this.call(A_ServiceFeatures.onAfterStop, this.scope);\n\n } catch (error) {\n\n let wrappedError;\n\n switch (true) {\n case error instanceof A_Service_Error:\n wrappedError = error;\n break;\n\n case error instanceof A_Error && error.originalError instanceof A_Service_Error:\n wrappedError = error.originalError;\n break;\n\n default:\n wrappedError = new A_Service_Error({\n title: A_Service_Error.ServiceStopError,\n description: 'An error occurred while processing the request.',\n originalError: error\n })\n break;\n }\n\n this.scope.register(wrappedError);\n\n await this.call(A_ServiceFeatures.onError, this.scope);\n }\n }\n\n\n\n\n // ======================================================================================\n // ============================= A-Service Lifecycle =================================\n // ======================================================================================\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onBeforeLoad](\n @A_Inject(A_Polyfill) polyfill: A_Polyfill,\n ...args: any[]\n ): Promise<void> {\n // Initialize Polyfill\n if (!polyfill) {\n this.scope.register(A_Polyfill);\n polyfill = this.scope.resolve(A_Polyfill)!\n }\n }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onLoad](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onAfterLoad](...args: any[]) { }\n\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onBeforeStart](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onStart](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onAfterStart](...args: any[]) { }\n\n\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onBeforeStop](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onStop](...args: any[]) { }\n\n @A_Feature.Extend()\n protected async [A_ServiceFeatures.onAfterStop](...args: any[]) { }\n\n\n\n @A_Feature.Extend({\n before: /.*/\n })\n protected async [A_ServiceFeatures.onError](\n @A_Inject(A_Error) error: A_Error,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ) {\n logger?.error(error);\n }\n\n}\n\n\n\n\n\n\n\n\n"]}
@@ -31,7 +31,7 @@ type A_SignalVector_Serialized = A_TYPES__Entity_Serialized & {
31
31
  structure: string[];
32
32
  values: Array<Record<string, any>>;
33
33
  } & A_TYPES__Entity_Serialized;
34
- type A_Signal_Init<T extends Record<string, any> = Record<string, any>> = {
34
+ type A_Signal_Init<T extends any = any> = {
35
35
  /**
36
36
  * Possible signal id
37
37
  *
@@ -47,7 +47,7 @@ type A_Signal_Init<T extends Record<string, any> = Record<string, any>> = {
47
47
  */
48
48
  data: T;
49
49
  };
50
- type A_Signal_Serialized<T extends Record<string, any> = Record<string, any>> = {
50
+ type A_Signal_Serialized<T extends any = any> = {
51
51
  /**
52
52
  * The signal data
53
53
  */
@@ -67,33 +67,11 @@ type A_Signal_Serialized<T extends Record<string, any> = Record<string, any>> =
67
67
  * Signals are typically used in scenarios where the current state is more important than individual events,
68
68
  * such as monitoring systems, real-time dashboards, or stateful applications.
69
69
  */
70
- declare class A_Signal<_TSignalDataType extends Record<string, any> = Record<string, any>> extends A_Entity<A_Signal_Init<_TSignalDataType>, A_Signal_Serialized<_TSignalDataType>> {
71
- /**
72
- * Allows to define default data for the signal.
73
- *
74
- * If no data is provided during initialization, the default data will be used.
75
- *
76
- * @returns
77
- */
78
- static default(): Promise<A_Signal | undefined>;
70
+ declare class A_Signal<_TSignalDataType extends any = any, _TSignalSerializedDataType extends any = _TSignalDataType> extends A_Entity<A_Signal_Init<_TSignalDataType>, A_Signal_Serialized<_TSignalSerializedDataType>> {
79
71
  /**
80
72
  * The actual data carried by the signal.
81
73
  */
82
74
  data: _TSignalDataType;
83
- /**
84
- * Generates signal hash uses for comparison
85
- *
86
- * @param str
87
- */
88
- protected createHash(str?: string): string;
89
- protected createHash(str?: undefined): string;
90
- protected createHash(str?: Record<string, any>): string;
91
- protected createHash(str?: Array<any>): string;
92
- protected createHash(str?: number): string;
93
- protected createHash(str?: boolean): string;
94
- protected createHash(str?: null): string;
95
- protected createHash(map?: Map<any, any>): string;
96
- protected createHash(set?: Set<any>): string;
97
75
  /**
98
76
  * This method compares the current signal with another signal instance by deduplication ID
99
77
  * this id can be configured during initialization with the "id" property.
@@ -108,9 +86,27 @@ declare class A_Signal<_TSignalDataType extends Record<string, any> = Record<str
108
86
  * @returns
109
87
  */
110
88
  compare(other: A_Signal<_TSignalDataType>): boolean;
111
- fromJSON(serializedEntity: A_Signal_Serialized<_TSignalDataType>): void;
89
+ /**
90
+ * Allows to define default data for the signal.
91
+ *
92
+ * If no data is provided during initialization, the default data will be used.
93
+ *
94
+ * @returns
95
+ */
96
+ fromUndefined(): void;
97
+ /**
98
+ * Allows to initialize the signal from a new signal entity. This is useful for example when we want to create a new instance of the signal entity with the same data as another instance, but with a different ASEID.
99
+ *
100
+ * @param newEntity
101
+ */
112
102
  fromNew(newEntity: A_Signal_Init<_TSignalDataType>): void;
113
- toJSON(): A_Signal_Serialized<_TSignalDataType>;
103
+ /**
104
+ * Allows to initialize the signal from a serialized version of the signal. This is useful for example when we receive a signal from the server and we want to create an instance of the signal entity from the received data.
105
+ *
106
+ * @param serializedEntity
107
+ */
108
+ fromJSON(serializedEntity: A_Signal_Serialized<_TSignalSerializedDataType>): void;
109
+ toJSON(): A_Signal_Serialized<_TSignalSerializedDataType>;
114
110
  }
115
111
 
116
112
  /**
@@ -158,14 +154,39 @@ declare class A_SignalVector<TSignals extends A_Signal[] = A_Signal[]> extends A
158
154
  * @returns
159
155
  */
160
156
  [Symbol.iterator](): Iterator<TSignals[number]>;
157
+ /**
158
+ * Checks that 2 vectors are identical by types and data
159
+ *
160
+ * e.g. [UserSignInSignal, UserStatusSignal] is equal to [UserSignInSignal, UserStatusSignal] with the same data,
161
+ * but not equal to [UserStatusSignal, UserSignInSignal] or [UserSignInSignal, UserStatusSignal] with different data.
162
+ *
163
+ * @param other
164
+ * @returns
165
+ */
166
+ equals(other: A_SignalVector<TSignals>): boolean;
161
167
  /**
162
168
  * Allows to match the current Signal Vector with another Signal Vector by comparing each signal in the structure.
163
- * This method returns true if all signals in the vector match the corresponding signals in the other vector.
169
+ * This method returns true if all signals in the vector A match the corresponding signals in vector B, and false otherwise.
170
+ *
171
+ *
172
+ * e.g. [UserSignInSignal, UserStatusSignal] matches [UserStatusSignal, UserSignInSignal] with the same data,
173
+ *
174
+ * but not matches [UserSignInSignal, UserStatusSignal] with different data or [UserSignInSignal] or [UserSignInSignal, UserStatusSignal, UserActivitySignal].
175
+ *
164
176
  *
165
177
  * @param other
166
178
  * @returns
167
179
  */
168
180
  match(other: A_SignalVector<TSignals>): boolean;
181
+ /**
182
+ * Checks if the current Signal Vector includes all signals from another Signal Vector, regardless of order.
183
+ *
184
+ * e.g. [UserSignInSignal, UserStatusSignal] includes [UserStatusSignal] with the same data,
185
+ * but not includes [UserStatusSignal] with different data or [UserActivitySignal].
186
+ *
187
+ * @param other
188
+ */
189
+ includes(other: A_SignalVector<TSignals>): boolean;
169
190
  /**
170
191
  * This method should ensure that the current Signal Vector contains all signals from the provided Signal Vector.
171
192
  *
@@ -193,7 +214,7 @@ declare class A_SignalVector<TSignals extends A_Signal[] = A_Signal[]> extends A
193
214
  * @param structure - Optional structure to override the default ordering
194
215
  * @returns Array of signal instances in the specified order
195
216
  */
196
- toVector<T extends Array<A_Signal> = TSignals>(structure?: A_Signal_TSignalsConstructors<T>): Promise<T>;
217
+ toVector<T extends Array<A_Signal> = TSignals>(structure?: A_Signal_TSignalsConstructors<T>): T;
197
218
  /**
198
219
  * Converts to Array of data of signals in the vector
199
220
  * Maintains the order specified in the structure/generic type
@@ -201,7 +222,7 @@ declare class A_SignalVector<TSignals extends A_Signal[] = A_Signal[]> extends A
201
222
  * @param structure - Optional structure to override the default ordering
202
223
  * @returns Array of serialized signal data in the specified order
203
224
  */
204
- toDataVector<T extends A_Signal[] = TSignals>(structure?: A_Signal_TSignalsConstructors<T>): Promise<A_SignalTValueArray<T>>;
225
+ toDataVector<T extends A_Signal[] = TSignals>(structure?: A_Signal_TSignalsConstructors<T>): A_SignalTValueArray<T>;
205
226
  /**
206
227
  * Converts to Object with signal constructor names as keys and their corresponding data values
207
228
  * Uses the structure ordering to ensure consistent key ordering
@@ -1,67 +1,13 @@
1
+ import { A_UtilsHelper } from './chunk-S2RSPZXR.mjs';
1
2
  import { A_Logger } from './chunk-TK5UEYMZ.mjs';
2
3
  import { A_Config } from './chunk-ECSGFDRQ.mjs';
3
4
  import './chunk-J6CLHXFQ.mjs';
4
5
  import './chunk-TQ5UON22.mjs';
5
6
  import { __decorateClass, __decorateParam } from './chunk-EQQGB2QZ.mjs';
6
- import { A_Feature, A_Inject, A_Error, A_Scope, A_Dependency, A_Entity, A_Fragment, A_Context, A_CommonHelper, A_Component } from '@adaas/a-concept';
7
+ import { A_Feature, A_Inject, A_Error, A_Scope, A_Dependency, A_Entity, A_TypeGuards, A_Fragment, A_Context, A_CommonHelper, A_Component } from '@adaas/a-concept';
7
8
  import { A_Frame } from '@adaas/a-frame';
8
9
 
9
10
  var A_Signal = class extends A_Entity {
10
- // ========================================================================
11
- // ========================== Static Methods ==============================
12
- // ========================================================================
13
- /**
14
- * Allows to define default data for the signal.
15
- *
16
- * If no data is provided during initialization, the default data will be used.
17
- *
18
- * @returns
19
- */
20
- static async default() {
21
- return void 0;
22
- }
23
- createHash(str) {
24
- let hashSource;
25
- if (str instanceof Map) {
26
- hashSource = JSON.stringify(Array.from(str.entries()));
27
- } else if (str instanceof Set) {
28
- hashSource = JSON.stringify(Array.from(str.values()));
29
- } else {
30
- switch (typeof str) {
31
- case "string":
32
- hashSource = str;
33
- break;
34
- case "undefined":
35
- hashSource = "undefined";
36
- break;
37
- case "object":
38
- if ("toJSON" in str)
39
- hashSource = JSON.stringify(str.toJSON());
40
- else
41
- hashSource = JSON.stringify(str);
42
- break;
43
- case "number":
44
- hashSource = str.toString();
45
- break;
46
- case "boolean":
47
- hashSource = str ? "true" : "false";
48
- break;
49
- case "function":
50
- hashSource = str.toString();
51
- break;
52
- default:
53
- hashSource = String(str);
54
- }
55
- }
56
- let hash = 0, i, chr;
57
- for (i = 0; i < hashSource.length; i++) {
58
- chr = hashSource.charCodeAt(i);
59
- hash = (hash << 5) - hash + chr;
60
- hash |= 0;
61
- }
62
- const hashString = hash.toString();
63
- return hashString;
64
- }
65
11
  /**
66
12
  * This method compares the current signal with another signal instance by deduplication ID
67
13
  * this id can be configured during initialization with the "id" property.
@@ -81,22 +27,52 @@ var A_Signal = class extends A_Entity {
81
27
  }
82
28
  return true;
83
29
  }
84
- fromJSON(serializedEntity) {
85
- super.fromJSON(serializedEntity);
86
- this.data = serializedEntity.data;
30
+ /**
31
+ * Allows to define default data for the signal.
32
+ *
33
+ * If no data is provided during initialization, the default data will be used.
34
+ *
35
+ * @returns
36
+ */
37
+ fromUndefined() {
38
+ const name = this.constructor.entity;
39
+ this.data = void 0;
40
+ const identity = {
41
+ name,
42
+ data: this.data
43
+ };
44
+ const id = A_UtilsHelper.hash(identity);
45
+ this.aseid = this.generateASEID({
46
+ entity: name,
47
+ id
48
+ });
87
49
  }
50
+ /**
51
+ * Allows to initialize the signal from a new signal entity. This is useful for example when we want to create a new instance of the signal entity with the same data as another instance, but with a different ASEID.
52
+ *
53
+ * @param newEntity
54
+ */
88
55
  fromNew(newEntity) {
89
56
  this.data = newEntity.data;
90
57
  const identity = newEntity.id || {
91
58
  name: newEntity.name,
92
59
  data: this.data
93
60
  };
94
- const id = this.createHash(identity);
61
+ const id = A_UtilsHelper.hash(identity);
95
62
  this.aseid = this.generateASEID({
96
63
  entity: newEntity.name,
97
64
  id
98
65
  });
99
66
  }
67
+ /**
68
+ * Allows to initialize the signal from a serialized version of the signal. This is useful for example when we receive a signal from the server and we want to create an instance of the signal entity from the received data.
69
+ *
70
+ * @param serializedEntity
71
+ */
72
+ fromJSON(serializedEntity) {
73
+ super.fromJSON(serializedEntity);
74
+ this.data = serializedEntity.data;
75
+ }
100
76
  toJSON() {
101
77
  return {
102
78
  ...super.toJSON(),
@@ -167,9 +143,51 @@ var A_SignalVector = class extends A_Entity {
167
143
  }
168
144
  };
169
145
  }
146
+ /**
147
+ * Checks that 2 vectors are identical by types and data
148
+ *
149
+ * e.g. [UserSignInSignal, UserStatusSignal] is equal to [UserSignInSignal, UserStatusSignal] with the same data,
150
+ * but not equal to [UserStatusSignal, UserSignInSignal] or [UserSignInSignal, UserStatusSignal] with different data.
151
+ *
152
+ * @param other
153
+ * @returns
154
+ */
155
+ equals(other) {
156
+ if (this.structure.length !== other.structure.length) {
157
+ return false;
158
+ }
159
+ for (let i = 0; i < this.structure.length; i++) {
160
+ const thisSignalConstructor = this.structure[i];
161
+ const otherSignalConstructor = other.structure[i];
162
+ if (thisSignalConstructor !== otherSignalConstructor) {
163
+ return false;
164
+ }
165
+ const thisSignalIndex = this._signals.findIndex((s) => s.constructor === thisSignalConstructor);
166
+ const otherSignalIndex = other._signals.findIndex((s) => s.constructor === otherSignalConstructor);
167
+ if (thisSignalIndex !== otherSignalIndex) {
168
+ return false;
169
+ }
170
+ const thisSignal = thisSignalIndex !== -1 ? this._signals[thisSignalIndex] : void 0;
171
+ const otherSignal = otherSignalIndex !== -1 ? other._signals[otherSignalIndex] : void 0;
172
+ if (thisSignal && otherSignal) {
173
+ if (!thisSignal.compare(otherSignal)) {
174
+ return false;
175
+ }
176
+ } else if (thisSignal || otherSignal) {
177
+ return false;
178
+ }
179
+ }
180
+ return true;
181
+ }
170
182
  /**
171
183
  * Allows to match the current Signal Vector with another Signal Vector by comparing each signal in the structure.
172
- * This method returns true if all signals in the vector match the corresponding signals in the other vector.
184
+ * This method returns true if all signals in the vector A match the corresponding signals in vector B, and false otherwise.
185
+ *
186
+ *
187
+ * e.g. [UserSignInSignal, UserStatusSignal] matches [UserStatusSignal, UserSignInSignal] with the same data,
188
+ *
189
+ * but not matches [UserSignInSignal, UserStatusSignal] with different data or [UserSignInSignal] or [UserSignInSignal, UserStatusSignal, UserActivitySignal].
190
+ *
173
191
  *
174
192
  * @param other
175
193
  * @returns
@@ -198,6 +216,23 @@ var A_SignalVector = class extends A_Entity {
198
216
  }
199
217
  return true;
200
218
  }
219
+ /**
220
+ * Checks if the current Signal Vector includes all signals from another Signal Vector, regardless of order.
221
+ *
222
+ * e.g. [UserSignInSignal, UserStatusSignal] includes [UserStatusSignal] with the same data,
223
+ * but not includes [UserStatusSignal] with different data or [UserActivitySignal].
224
+ *
225
+ * @param other
226
+ */
227
+ includes(other) {
228
+ for (const signalConstructor of other.structure) {
229
+ const signalIndex = this._signals.findIndex((s) => s.constructor === signalConstructor);
230
+ if (signalIndex === -1) {
231
+ return false;
232
+ }
233
+ }
234
+ return true;
235
+ }
201
236
  /**
202
237
  * This method should ensure that the current Signal Vector contains all signals from the provided Signal Vector.
203
238
  *
@@ -214,7 +249,7 @@ var A_SignalVector = class extends A_Entity {
214
249
  }
215
250
  has(param1) {
216
251
  let signalConstructor;
217
- if (param1 instanceof A_Entity) {
252
+ if (A_TypeGuards.isEntityInstance(param1)) {
218
253
  signalConstructor = param1.constructor;
219
254
  } else {
220
255
  signalConstructor = param1;
@@ -241,7 +276,7 @@ var A_SignalVector = class extends A_Entity {
241
276
  * @param structure - Optional structure to override the default ordering
242
277
  * @returns Array of signal instances in the specified order
243
278
  */
244
- async toVector(structure) {
279
+ toVector(structure) {
245
280
  const usedStructure = structure || this.structure;
246
281
  return usedStructure.map((signalConstructor) => {
247
282
  const signalIndex = this._signals.findIndex((s) => s.constructor === signalConstructor);
@@ -255,14 +290,14 @@ var A_SignalVector = class extends A_Entity {
255
290
  * @param structure - Optional structure to override the default ordering
256
291
  * @returns Array of serialized signal data in the specified order
257
292
  */
258
- async toDataVector(structure) {
293
+ toDataVector(structure) {
259
294
  const usedStructure = structure || this.structure;
260
295
  const results = [];
261
296
  for (const signalConstructor of usedStructure) {
262
297
  const signalIndex = this._signals.findIndex((s) => s.constructor === signalConstructor);
263
298
  let data;
264
299
  if (signalIndex === -1) {
265
- data = await signalConstructor.default();
300
+ data = new signalConstructor();
266
301
  } else {
267
302
  const signal = this._signals[signalIndex];
268
303
  data = signal;