@adaas/a-utils 0.1.10 → 0.1.12

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 (125) hide show
  1. package/README.md +87 -32
  2. package/dist/index.d.mts +933 -0
  3. package/dist/index.d.ts +933 -27
  4. package/dist/index.js +1786 -90
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +1764 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/examples/command-examples.ts +268 -0
  9. package/package.json +5 -3
  10. package/src/index.ts +70 -0
  11. package/src/lib/A-Command/A-Command.constants.ts +4 -0
  12. package/src/lib/A-Command/A-Command.entity.ts +31 -13
  13. package/src/lib/A-Command/A-Command.types.ts +6 -1
  14. package/src/lib/A-Command/README.md +645 -0
  15. package/src/lib/A-Logger/A-Logger.component.ts +10 -3
  16. package/src/lib/A-Memory/A-Memory.context.ts +15 -0
  17. package/src/lib/A-Polyfill/A-Polyfill.component.ts +153 -15
  18. package/src/lib/A-Polyfill/A-Polyfill.types.ts +54 -0
  19. package/src/lib/A-Polyfill/classes/A-Buffer-Polyfill.class.ts +85 -0
  20. package/src/lib/A-Polyfill/classes/A-Crypto-Polyfill.class.ts +87 -0
  21. package/src/lib/A-Polyfill/classes/A-FS-Polyfill.class.ts +61 -0
  22. package/src/lib/A-Polyfill/classes/A-Http-Polyfill.class.ts +100 -0
  23. package/src/lib/A-Polyfill/classes/A-Https-Polyfill.class.ts +100 -0
  24. package/src/lib/A-Polyfill/classes/A-Path-Polyfill.class.ts +97 -0
  25. package/src/lib/A-Polyfill/classes/A-Process-Polyfill.class.ts +73 -0
  26. package/src/lib/A-Polyfill/classes/A-Url-Polyfill.class.ts +88 -0
  27. package/tests/A-Command.test.ts +447 -2
  28. package/tests/A-Config.test.ts +5 -5
  29. package/tests/A-Memory.test.ts +189 -0
  30. package/tests/A-Polyfill.test.ts +446 -29
  31. package/tsconfig.json +1 -1
  32. package/tsup.config.ts +15 -0
  33. package/dist/src/constants/errors.constants.d.ts +0 -0
  34. package/dist/src/constants/errors.constants.js +0 -2
  35. package/dist/src/constants/errors.constants.js.map +0 -1
  36. package/dist/src/lib/A-Channel/A-Channel.component.d.ts +0 -22
  37. package/dist/src/lib/A-Channel/A-Channel.component.js +0 -84
  38. package/dist/src/lib/A-Channel/A-Channel.component.js.map +0 -1
  39. package/dist/src/lib/A-Channel/A-Channel.error.d.ts +0 -4
  40. package/dist/src/lib/A-Channel/A-Channel.error.js +0 -9
  41. package/dist/src/lib/A-Channel/A-Channel.error.js.map +0 -1
  42. package/dist/src/lib/A-Channel/A-Channel.types.d.ts +0 -0
  43. package/dist/src/lib/A-Channel/A-Channel.types.js +0 -2
  44. package/dist/src/lib/A-Channel/A-Channel.types.js.map +0 -1
  45. package/dist/src/lib/A-Command/A-Command.constants.d.ts +0 -22
  46. package/dist/src/lib/A-Command/A-Command.constants.js +0 -28
  47. package/dist/src/lib/A-Command/A-Command.constants.js.map +0 -1
  48. package/dist/src/lib/A-Command/A-Command.entity.d.ts +0 -133
  49. package/dist/src/lib/A-Command/A-Command.entity.js +0 -273
  50. package/dist/src/lib/A-Command/A-Command.entity.js.map +0 -1
  51. package/dist/src/lib/A-Command/A-Command.error.d.ts +0 -3
  52. package/dist/src/lib/A-Command/A-Command.error.js +0 -8
  53. package/dist/src/lib/A-Command/A-Command.error.js.map +0 -1
  54. package/dist/src/lib/A-Command/A-Command.types.d.ts +0 -73
  55. package/dist/src/lib/A-Command/A-Command.types.js +0 -4
  56. package/dist/src/lib/A-Command/A-Command.types.js.map +0 -1
  57. package/dist/src/lib/A-Config/A-Config.constants.d.ts +0 -3
  58. package/dist/src/lib/A-Config/A-Config.constants.js +0 -6
  59. package/dist/src/lib/A-Config/A-Config.constants.js.map +0 -1
  60. package/dist/src/lib/A-Config/A-Config.container.d.ts +0 -6
  61. package/dist/src/lib/A-Config/A-Config.container.js +0 -77
  62. package/dist/src/lib/A-Config/A-Config.container.js.map +0 -1
  63. package/dist/src/lib/A-Config/A-Config.context.d.ts +0 -29
  64. package/dist/src/lib/A-Config/A-Config.context.js +0 -63
  65. package/dist/src/lib/A-Config/A-Config.context.js.map +0 -1
  66. package/dist/src/lib/A-Config/A-Config.error.d.ts +0 -4
  67. package/dist/src/lib/A-Config/A-Config.error.js +0 -9
  68. package/dist/src/lib/A-Config/A-Config.error.js.map +0 -1
  69. package/dist/src/lib/A-Config/A-Config.types.d.ts +0 -19
  70. package/dist/src/lib/A-Config/A-Config.types.js +0 -7
  71. package/dist/src/lib/A-Config/A-Config.types.js.map +0 -1
  72. package/dist/src/lib/A-Config/components/ConfigReader.component.d.ts +0 -30
  73. package/dist/src/lib/A-Config/components/ConfigReader.component.js +0 -103
  74. package/dist/src/lib/A-Config/components/ConfigReader.component.js.map +0 -1
  75. package/dist/src/lib/A-Config/components/ENVConfigReader.component.d.ts +0 -14
  76. package/dist/src/lib/A-Config/components/ENVConfigReader.component.js +0 -72
  77. package/dist/src/lib/A-Config/components/ENVConfigReader.component.js.map +0 -1
  78. package/dist/src/lib/A-Config/components/FileConfigReader.component.d.ts +0 -11
  79. package/dist/src/lib/A-Config/components/FileConfigReader.component.js +0 -47
  80. package/dist/src/lib/A-Config/components/FileConfigReader.component.js.map +0 -1
  81. package/dist/src/lib/A-Logger/A-Logger.component.d.ts +0 -29
  82. package/dist/src/lib/A-Logger/A-Logger.component.js +0 -152
  83. package/dist/src/lib/A-Logger/A-Logger.component.js.map +0 -1
  84. package/dist/src/lib/A-Logger/A-Logger.types.d.ts +0 -0
  85. package/dist/src/lib/A-Logger/A-Logger.types.js +0 -2
  86. package/dist/src/lib/A-Logger/A-Logger.types.js.map +0 -1
  87. package/dist/src/lib/A-Manifest/A-Manifest.context.d.ts +0 -52
  88. package/dist/src/lib/A-Manifest/A-Manifest.context.js +0 -154
  89. package/dist/src/lib/A-Manifest/A-Manifest.context.js.map +0 -1
  90. package/dist/src/lib/A-Manifest/A-Manifest.error.d.ts +0 -4
  91. package/dist/src/lib/A-Manifest/A-Manifest.error.js +0 -9
  92. package/dist/src/lib/A-Manifest/A-Manifest.error.js.map +0 -1
  93. package/dist/src/lib/A-Manifest/A-Manifest.types.d.ts +0 -43
  94. package/dist/src/lib/A-Manifest/A-Manifest.types.js +0 -3
  95. package/dist/src/lib/A-Manifest/A-Manifest.types.js.map +0 -1
  96. package/dist/src/lib/A-Manifest/classes/A-ManifestChecker.class.d.ts +0 -14
  97. package/dist/src/lib/A-Manifest/classes/A-ManifestChecker.class.js +0 -24
  98. package/dist/src/lib/A-Manifest/classes/A-ManifestChecker.class.js.map +0 -1
  99. package/dist/src/lib/A-Memory/A-Memory.context.d.ts +0 -64
  100. package/dist/src/lib/A-Memory/A-Memory.context.js +0 -105
  101. package/dist/src/lib/A-Memory/A-Memory.context.js.map +0 -1
  102. package/dist/src/lib/A-Polyfill/A-Polyfill.component.d.ts +0 -20
  103. package/dist/src/lib/A-Polyfill/A-Polyfill.component.js +0 -53
  104. package/dist/src/lib/A-Polyfill/A-Polyfill.component.js.map +0 -1
  105. package/dist/src/lib/A-Polyfill/A-Polyfill.types.d.ts +0 -9
  106. package/dist/src/lib/A-Polyfill/A-Polyfill.types.js +0 -3
  107. package/dist/src/lib/A-Polyfill/A-Polyfill.types.js.map +0 -1
  108. package/dist/src/lib/A-Polyfill/A-Polyfills.class.d.ts +0 -11
  109. package/dist/src/lib/A-Polyfill/A-Polyfills.class.js +0 -123
  110. package/dist/src/lib/A-Polyfill/A-Polyfills.class.js.map +0 -1
  111. package/dist/src/lib/A-Schedule/A-Deferred.class.d.ts +0 -12
  112. package/dist/src/lib/A-Schedule/A-Deferred.class.js +0 -23
  113. package/dist/src/lib/A-Schedule/A-Deferred.class.js.map +0 -1
  114. package/dist/src/lib/A-Schedule/A-Schedule.component.d.ts +0 -57
  115. package/dist/src/lib/A-Schedule/A-Schedule.component.js +0 -49
  116. package/dist/src/lib/A-Schedule/A-Schedule.component.js.map +0 -1
  117. package/dist/src/lib/A-Schedule/A-Schedule.types.d.ts +0 -10
  118. package/dist/src/lib/A-Schedule/A-Schedule.types.js +0 -3
  119. package/dist/src/lib/A-Schedule/A-Schedule.types.js.map +0 -1
  120. package/dist/src/lib/A-Schedule/A-ScheduleObject.class.d.ts +0 -29
  121. package/dist/src/lib/A-Schedule/A-ScheduleObject.class.js +0 -58
  122. package/dist/src/lib/A-Schedule/A-ScheduleObject.class.js.map +0 -1
  123. package/index.ts +0 -71
  124. package/src/lib/A-Polyfill/A-Polyfills.class.ts +0 -99
  125. package/tsconfig.build.json +0 -56
package/README.md CHANGED
@@ -59,45 +59,73 @@ const channel = new A_Channel();
59
59
 
60
60
  ### A-Command
61
61
 
62
- A powerful command execution system that provides structured command patterns with lifecycle management, status tracking, and serialization capabilities.
62
+ A powerful command execution system that provides structured command patterns with lifecycle management, event handling, status tracking, and serialization capabilities.
63
63
 
64
- **Basic Usage:**
64
+ > 📚 **[Complete A-Command Documentation](./src/lib/A-Command/README.md)** - Comprehensive guide with examples, API reference, and advanced usage patterns.
65
+
66
+ **Quick Start:**
65
67
  ```typescript
66
68
  import { A_Command } from '@adaas/a-utils';
69
+ import { A_Context } from '@adaas/a-concept';
67
70
 
68
- // Create a command
69
- const command = new A_Command({});
71
+ // Create and execute a simple command
72
+ const command = new A_Command({ action: 'greet', name: 'World' });
73
+ A_Context.root.register(command);
70
74
 
71
- // Execute the command
72
75
  await command.execute();
73
76
 
74
77
  console.log(command.status); // 'COMPLETED'
75
78
  console.log(command.duration); // Execution time in ms
76
79
  ```
77
80
 
78
- **Advanced Usage:**
81
+ **Advanced Example:**
79
82
  ```typescript
80
- // Command with custom logic
81
- class CustomCommand extends A_Command {
82
- async execute() {
83
- // Your custom command logic here
84
- return await super.execute();
83
+ // Typed command with custom logic
84
+ interface UserCreateParams {
85
+ name: string;
86
+ email: string;
87
+ }
88
+
89
+ interface UserCreateResult {
90
+ userId: string;
91
+ createdAt: string;
92
+ }
93
+
94
+ class CreateUserCommand extends A_Command<UserCreateParams, UserCreateResult> {}
95
+
96
+ // Custom execution logic using components
97
+ class UserProcessor extends A_Component {
98
+ @A_Feature.Extend({ scope: [CreateUserCommand] })
99
+ async execute(@A_Inject(A_Memory) memory: A_Memory<UserCreateResult>) {
100
+ // Your business logic here
101
+ await memory.set('userId', 'user-123');
102
+ await memory.set('createdAt', new Date().toISOString());
85
103
  }
86
104
  }
87
105
 
88
- // Serialization
89
- const command = new A_Command({});
90
- await command.execute();
106
+ // Execute with event handling
107
+ const command = new CreateUserCommand({
108
+ name: 'John Doe',
109
+ email: 'john@example.com'
110
+ });
111
+
112
+ command.on('complete', (cmd) => {
113
+ console.log('User created:', cmd.result);
114
+ });
91
115
 
92
- const serialized = command.toJSON();
93
- const deserializedCommand = new A_Command(serialized);
116
+ A_Context.root.register(UserProcessor);
117
+ A_Context.root.register(command);
118
+ await command.execute();
94
119
  ```
95
120
 
96
- **Features:**
97
- - Command execution with lifecycle management
98
- - Status tracking (INITIALIZED, PROCESSING, COMPLETED, FAILED)
99
- - Built-in timing and duration tracking
100
- - JSON serialization/deserialization
121
+ **Key Features:**
122
+ - **Complete Lifecycle Management** - Automatic progression through init → compile → execute → complete/fail
123
+ - **Event-Driven Architecture** - Subscribe to lifecycle events and custom events
124
+ - ✅ **State Persistence** - Full serialization/deserialization support
125
+ - **Type Safety** - Full TypeScript support with generic types
126
+ - ✅ **Error Handling** - Comprehensive error capture and management
127
+ - ✅ **Execution Tracking** - Built-in timing and duration tracking
128
+ - ✅ **Component Integration** - Extensible through A-Component architecture
101
129
  - Scope integration with dependency injection
102
130
  - Memory management integration
103
131
 
@@ -284,13 +312,15 @@ const manifest = new A_Manifest([
284
312
 
285
313
  ### A-Memory
286
314
 
287
- A type-safe memory management system for storing intermediate values and tracking errors during complex operations.
315
+ A type-safe memory management system for storing intermediate values and tracking errors during complex operations. Fully integrated with A-Command for state management.
316
+
317
+ > 💡 **Note:** A-Memory is automatically used by A-Command for result and error storage. See [A-Command Documentation](./src/lib/A-Command/README.md) for integration examples.
288
318
 
289
319
  **Basic Usage:**
290
320
  ```typescript
291
321
  import { A_Memory } from '@adaas/a-utils';
292
322
 
293
- // Create memory instance
323
+ // Create typed memory instance
294
324
  const memory = new A_Memory<{
295
325
  userId: string;
296
326
  userData: any;
@@ -299,16 +329,19 @@ const memory = new A_Memory<{
299
329
  userId: '12345'
300
330
  });
301
331
 
302
- // Store values
303
- memory.set('userData', { name: 'John', email: 'john@example.com' });
304
- memory.set('processedData', processUserData(memory.get('userData')));
332
+ // Store and retrieve values
333
+ await memory.set('userData', { name: 'John', email: 'john@example.com' });
334
+ await memory.set('processedData', processUserData(memory.get('userData')));
335
+
336
+ // Access values with type safety
337
+ const userId = memory.get('userId'); // string | undefined
338
+ const userData = memory.get('userData'); // any | undefined
305
339
 
306
340
  // Check prerequisites
307
341
  const hasRequired = await memory.verifyPrerequisites(['userId', 'userData']);
308
342
  console.log(hasRequired); // true
309
343
 
310
- // Access values
311
- const userId = memory.get('userId');
344
+ // Serialize all data
312
345
  const allData = memory.toJSON();
313
346
  ```
314
347
 
@@ -318,20 +351,42 @@ import { A_Error } from '@adaas/a-concept';
318
351
 
319
352
  const memory = new A_Memory();
320
353
 
321
- // Errors are automatically tracked
354
+ // Add errors during processing
322
355
  try {
323
356
  // Some operation that might fail
324
- throw new A_Error('Something went wrong');
357
+ throw new Error('Something went wrong');
325
358
  } catch (error) {
326
- memory.addError(error);
359
+ await memory.error(new A_Error({
360
+ title: 'Operation Failed',
361
+ message: error.message
362
+ }));
327
363
  }
328
364
 
329
365
  // Check for errors
330
366
  if (memory.Errors) {
331
- console.log('Errors occurred:', memory.Errors);
367
+ console.log('Errors occurred:', Array.from(memory.Errors));
332
368
  }
333
369
  ```
334
370
 
371
+ **Integration with A-Command:**
372
+ ```typescript
373
+ // A-Memory is automatically used by A-Command
374
+ class DataProcessor extends A_Component {
375
+ @A_Feature.Extend({ scope: [MyCommand] })
376
+ async execute(@A_Inject(A_Memory) memory: A_Memory<ResultType>) {
377
+ // Store intermediate results
378
+ await memory.set('step1', 'completed');
379
+ await memory.set('step2', { data: 'processed' });
380
+
381
+ // Access stored values
382
+ const step1Result = memory.get('step1');
383
+
384
+ // Results automatically become command.result
385
+ }
386
+ }
387
+ ```
388
+ ```
389
+
335
390
  **Features:**
336
391
  - Type-safe value storage
337
392
  - Prerequisite verification