@futdevpro/fsm-dynamo 1.20.108 → 1.20.112

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/README.md CHANGED
@@ -1,723 +1,723 @@
1
- # @futdevpro/fsm-dynamo
2
-
3
- [![npm version](https://img.shields.io/npm/v/@futdevpro/fsm-dynamo.svg)](https://www.npmjs.com/package/@futdevpro/fsm-dynamo)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
-
6
- **Full Stack Model Collection for Dynamic (NodeJS-TypeScript) Framework**
7
-
8
- Dynamo FSM (Full Stack Module) is the foundational TypeScript package that provides the core infrastructure and shared utilities for building full-stack applications. It serves as the base structure for all other Dynamo projects, establishing consistent patterns, type definitions, and interfaces that ensure seamless integration between frontend and backend implementations.
9
-
10
- **Naming Convention**: All exports from Dynamo FSM use the `DyFM_*` prefix (Dynamo Full Stack Module), ensuring clear identification and preventing naming conflicts. This consistent prefix pattern makes it easy to identify FSM utilities, classes, interfaces, and enums throughout your codebase.
11
-
12
- ## Table of Contents
13
-
14
- - [Introduction](#introduction)
15
- - [Features](#features)
16
- - [Installation](#installation)
17
- - [Quick Start](#quick-start)
18
- - [Modules](#modules)
19
- - [Common Usage Patterns](#common-usage-patterns)
20
- - [API Reference](#api-reference)
21
- - [Requirements](#requirements)
22
- - [Support & Contributing](#support--contributing)
23
- - [License](#license)
24
-
25
- ## Introduction
26
-
27
- Dynamo FSM provides core utilities for data manipulation, error handling, logging, state management, and more. It includes modules covering AI integration, real-time communication, location services, data transformation, and testing tools. This package serves as the base structure for all other Dynamo projects.
28
-
29
- **Naming Convention**: All exports from Dynamo FSM use the `DyFM_*` prefix (Dynamo Full Stack Module). This consistent naming pattern makes it easy to identify FSM utilities, classes, interfaces, enums, and constants throughout your codebase. Examples include `DyFM_Array`, `DyFM_Log`, `DyFM_Error`, `DyFM_DataHandler`, and `DyFM_Metadata`.
30
-
31
- ### Dynamo Packages Using FSM
32
-
33
- Dynamo FSM is the foundational package used by all other Dynamo packages:
34
-
35
- - **[Dynamo-NTS](https://www.npmjs.com/package/@futdevpro/dynamo-nts)** - Backend framework for Node.js with TypeScript
36
- - **[Dynamo NGX Models](https://www.npmjs.com/package/@futdevpro/ngx-dynamo-models)** - Model definitions for Angular applications
37
- - **[Dynamo NGX](https://www.npmjs.com/package/@futdevpro/ngx-dynamo)** - Angular framework with Material Design and Tailwind CSS
38
-
39
- All these packages build upon Dynamo FSM's core interfaces, types, and utilities, ensuring consistency and type safety across the entire Dynamo ecosystem.
40
-
41
- ### Key Characteristics
42
-
43
- - **Zero Dependencies**: The foundational package has no dependencies (except peer dependencies), making it the base upon which all other Dynamo packages are built
44
- - **Type-Safe Full-Stack Development**: Shared interfaces and models ensure data structures, API contracts, and business logic remain consistent from database to UI
45
- - **Comprehensive Utility Library**: Utilities for arrays, strings, dates, UUIDs, error handling, logging, and more
46
- - **Modular Architecture**: Import only what you need, keeping bundle sizes small while providing access to a comprehensive toolkit
47
-
48
- ## Features
49
-
50
- ### Core Utilities
51
- - **Array Manipulation**: Advanced array operations with async support (`DyFM_Array`)
52
- - **String Operations**: Comprehensive string manipulation utilities (`DyFM_String`)
53
- - **Time & Date**: Advanced time manipulation and formatting (`DyFM_Time`)
54
- - **UUID Generation**: Secure UUID generation utilities (`DyFM_UUID`)
55
- - **Logging**: Advanced logging with customizable styling (`DyFM_Log`)
56
- - **Error Handling**: Standardized error handling with configurable severity levels (`DyFM_Error`)
57
- - **Data Transformation**: Type-safe cloning and data manipulation utilities
58
-
1
+ # @futdevpro/fsm-dynamo
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@futdevpro/fsm-dynamo.svg)](https://www.npmjs.com/package/@futdevpro/fsm-dynamo)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ **Full Stack Model Collection for Dynamic (NodeJS-TypeScript) Framework**
7
+
8
+ Dynamo FSM (Full Stack Module) is the foundational TypeScript package that provides the core infrastructure and shared utilities for building full-stack applications. It serves as the base structure for all other Dynamo projects, establishing consistent patterns, type definitions, and interfaces that ensure seamless integration between frontend and backend implementations.
9
+
10
+ **Naming Convention**: All exports from Dynamo FSM use the `DyFM_*` prefix (Dynamo Full Stack Module), ensuring clear identification and preventing naming conflicts. This consistent prefix pattern makes it easy to identify FSM utilities, classes, interfaces, and enums throughout your codebase.
11
+
12
+ ## Table of Contents
13
+
14
+ - [Introduction](#introduction)
15
+ - [Features](#features)
16
+ - [Installation](#installation)
17
+ - [Quick Start](#quick-start)
18
+ - [Modules](#modules)
19
+ - [Common Usage Patterns](#common-usage-patterns)
20
+ - [API Reference](#api-reference)
21
+ - [Requirements](#requirements)
22
+ - [Support & Contributing](#support--contributing)
23
+ - [License](#license)
24
+
25
+ ## Introduction
26
+
27
+ Dynamo FSM provides core utilities for data manipulation, error handling, logging, state management, and more. It includes modules covering AI integration, real-time communication, location services, data transformation, and testing tools. This package serves as the base structure for all other Dynamo projects.
28
+
29
+ **Naming Convention**: All exports from Dynamo FSM use the `DyFM_*` prefix (Dynamo Full Stack Module). This consistent naming pattern makes it easy to identify FSM utilities, classes, interfaces, enums, and constants throughout your codebase. Examples include `DyFM_Array`, `DyFM_Log`, `DyFM_Error`, `DyFM_DataHandler`, and `DyFM_Metadata`.
30
+
31
+ ### Dynamo Packages Using FSM
32
+
33
+ Dynamo FSM is the foundational package used by all other Dynamo packages:
34
+
35
+ - **[Dynamo-NTS](https://www.npmjs.com/package/@futdevpro/dynamo-nts)** - Backend framework for Node.js with TypeScript
36
+ - **[Dynamo NGX Models](https://www.npmjs.com/package/@futdevpro/ngx-dynamo-models)** - Model definitions for Angular applications
37
+ - **[Dynamo NGX](https://www.npmjs.com/package/@futdevpro/ngx-dynamo)** - Angular framework with Material Design and Tailwind CSS
38
+
39
+ All these packages build upon Dynamo FSM's core interfaces, types, and utilities, ensuring consistency and type safety across the entire Dynamo ecosystem.
40
+
41
+ ### Key Characteristics
42
+
43
+ - **Zero Dependencies**: The foundational package has no dependencies (except peer dependencies), making it the base upon which all other Dynamo packages are built
44
+ - **Type-Safe Full-Stack Development**: Shared interfaces and models ensure data structures, API contracts, and business logic remain consistent from database to UI
45
+ - **Comprehensive Utility Library**: Utilities for arrays, strings, dates, UUIDs, error handling, logging, and more
46
+ - **Modular Architecture**: Import only what you need, keeping bundle sizes small while providing access to a comprehensive toolkit
47
+
48
+ ## Features
49
+
50
+ ### Core Utilities
51
+ - **Array Manipulation**: Advanced array operations with async support (`DyFM_Array`)
52
+ - **String Operations**: Comprehensive string manipulation utilities (`DyFM_String`)
53
+ - **Time & Date**: Advanced time manipulation and formatting (`DyFM_Time`)
54
+ - **UUID Generation**: Secure UUID generation utilities (`DyFM_UUID`)
55
+ - **Logging**: Advanced logging with customizable styling (`DyFM_Log`)
56
+ - **Error Handling**: Standardized error handling with configurable severity levels (`DyFM_Error`)
57
+ - **Data Transformation**: Type-safe cloning and data manipulation utilities
58
+
59
59
  ### Specialized Modules
60
- - **AI Integration**: Unified interface for multiple AI providers (OpenAI, Anthropic, Google, Local AI)
61
- - **Reactive Data Management**: RxJS-based data handlers for single items, lists, and searchable data
62
- - **Real-Time Communication**: Socket.IO integration for bidirectional communication
63
- - **Location Services**: Comprehensive geographical data handling with country information
64
- - **Messaging System**: Unified messaging for user↔user and user↔AI communication
65
- - **Data Transformation**: Specialized pipes for geographic data, string manipulation, and formatting
66
- - **Crypto Utilities**: Deterministic encryption/decryption using AES-256-CBC
67
- - **Testing Tools**: Comprehensive HTTP endpoint testing utilities
60
+ - **AI Integration**: Unified interface for multiple AI providers (OpenAI, Anthropic, Google, Local AI)
61
+ - **Reactive Data Management**: RxJS-based data handlers for single items, lists, and searchable data
62
+ - **Real-Time Communication**: Socket.IO integration for bidirectional communication
63
+ - **Location Services**: Comprehensive geographical data handling with country information
64
+ - **Messaging System**: Unified messaging for user↔user and user↔AI communication
65
+ - **Data Transformation**: Specialized pipes for geographic data, string manipulation, and formatting
66
+ - **Crypto Utilities**: Deterministic encryption/decryption using AES-256-CBC
67
+ - **Testing Tools**: Comprehensive HTTP endpoint testing utilities
68
68
  - **Analytics**: User behavior tracking and usage analytics
69
69
  - **Sandbox Runtime Contract**: Closed cross-runtime outcomes, result codes, and strict content-free receipt validation (`@futdevpro/fsm-dynamo/sandbox-runtime`)
70
70
  - **Application Alert Contract**: Exact content-free alert envelopes, closed severity/state, bounded integer evidence, and canonical replay checksums (`@futdevpro/fsm-dynamo/application-alert`)
71
-
72
- ## Installation
73
-
74
- ```bash
75
- npm install @futdevpro/fsm-dynamo
76
- ```
77
-
78
- or
79
-
80
- ```bash
81
- pnpm add @futdevpro/fsm-dynamo
82
- ```
83
-
84
- ## Quick Start
85
-
86
- ### Basic Utility Usage
87
-
88
- ```typescript
89
- import { DyFM_Array, DyFM_String, DyFM_Log, DyFM_Error, DyFM_ErrorLevel } from '@futdevpro/fsm-dynamo';
90
-
91
- // Array operations
92
- const numbers = [1, 2, 3, 4, 5];
93
- const doubled = DyFM_Array.map(numbers, (n) => n * 2);
94
-
95
- // String operations
96
- const formatted = DyFM_String.capitalize('hello world'); // "Hello World"
97
-
98
- // Logging
99
- DyFM_Log.info('Application started');
100
- DyFM_Log.warn('This is a warning');
101
- DyFM_Log.error('An error occurred');
102
-
103
- // Special logging methods
104
- DyFM_Log.H_error('Highlighted error message'); // Highlighted error with visual formatting
105
- DyFM_Log.T_error('Test error message'); // Test error with special formatting
106
-
107
- // Error handling
108
- const error = new DyFM_Error({
109
- errorCode: 'USER_NOT_FOUND',
110
- message: 'User with ID 123 not found',
111
- userMessage: 'User not found',
112
- level: DyFM_ErrorLevel.error
113
- });
114
-
115
- // Or use static method for any error type
116
- DyFM_Error.logSimple('Operation failed', error);
117
- ```
118
-
119
- ### Data Handler Example
120
-
121
- ```typescript
122
- import { DyFM_DataHandler } from '@futdevpro/fsm-dynamo/data-handler';
123
- import { DyFM_Metadata } from '@futdevpro/fsm-dynamo';
124
-
125
- interface User extends DyFM_Metadata {
126
- name: string;
127
- email: string;
128
- }
129
-
130
- class UserHandler extends DyFM_DataHandler<User> {
131
- constructor(apiService: any) {
132
- super({
133
- name: 'UserHandler',
134
- get: async (userId: string) => {
135
- return await apiService.getUser(userId);
136
- },
137
- set: async (user: User) => {
138
- return await apiService.updateUser(user);
139
- }
140
- });
141
- }
142
- }
143
-
144
- // Usage
145
- const userHandler = new UserHandler(apiService);
146
- await userHandler.reload('user-123');
147
- userHandler.data$.subscribe(user => {
148
- console.log('User loaded:', user);
149
- });
150
- ```
151
-
152
- ### AI Module Example
153
-
154
- ```typescript
155
- import { DyFM_AI_Provider, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
156
- import { DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
157
-
158
- // Configure AI provider
159
- const aiConfig = {
160
- provider: DyFM_AI_Provider.OpenAI,
161
- apiKey: process.env.OPENAI_API_KEY,
162
- model: DyFM_OAI_Model.gpt_4o_latest
163
- };
164
-
165
- // Create AI request
166
- const aiRequest = {
167
- messages: [
168
- {
169
- role: DyFM_AI_MessageRole.user,
170
- content: 'Hello, how are you?'
171
- }
172
- ],
173
- settings: aiConfig
174
- };
175
- ```
176
-
177
- ## Modules
178
-
179
- Dynamo FSM is organized into 12 specialized modules, each providing focused functionality for specific use cases.
180
-
181
- ### 1. Main Module
182
-
183
- **Import:** `@futdevpro/fsm-dynamo`
184
-
185
- The core foundation providing essential utilities, constants, enums, and models for state management and data handling.
186
-
187
- **Key Features:**
188
- - Core utilities for array manipulation, logging, string operations, and type-safe data handling
189
- - Constants for times, data sizes, numbers, and global settings
190
- - Enums for error levels, HTTP types, log styles, and more
191
- - Models for error handling, data properties, and service endpoints
192
-
193
- **Example:**
194
- ```typescript
195
- import {
196
- DyFM_Array,
197
- DyFM_Log,
198
- DyFM_Error,
199
- DyFM_times,
200
- DyFM_ErrorLevel
201
- } from '@futdevpro/fsm-dynamo';
202
-
203
- // Use time constants
204
- const oneDay = DyFM_times.day; // 86400000 milliseconds
205
-
206
- // Array operations
207
- const result = DyFM_Array.filter([1, 2, 3, 4], n => n > 2);
208
- ```
209
-
210
- ### 2. AI Module
211
-
212
- **Import:** `@futdevpro/fsm-dynamo/ai`
213
-
214
- Unified interface for interacting with multiple AI providers (OpenAI, Anthropic, Google, Local AI).
215
-
216
- **Key Features:**
217
- - Standardized models and interfaces for LLM operations
218
- - Embedding support across providers
219
- - Provider capability detection
220
- - Flexible configuration options
221
-
222
- **Submodules:**
223
- - `@futdevpro/fsm-dynamo/ai/open-ai` - OpenAI-specific implementations
224
- - `@futdevpro/fsm-dynamo/ai/anthropic` - Anthropic (Claude) implementations
225
- - `@futdevpro/fsm-dynamo/ai/google` - Google AI implementations
226
- - `@futdevpro/fsm-dynamo/ai/local` - Local AI implementations
227
-
228
- **Example:**
229
- ```typescript
230
- import { DyFM_AI_Provider, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
231
- import { DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
232
-
233
- const config = {
234
- provider: DyFM_AI_Provider.OpenAI,
235
- model: DyFM_OAI_Model.gpt_4o_latest
236
- };
237
- ```
238
-
239
- **See also:**
240
- - [OpenAI-compatible providers how-to (LM Studio / Ollama / vLLM / LocalAI)](__documentations/2026-05-17-oai-compatible-providers-howto.md) — `DyFM_OAI_ClientOptions.baseURL`-override mintázattal lokál és self-hosted LLM-ek
241
-
242
- ### 3. Data Handler Module
243
-
244
- **Import:** `@futdevpro/fsm-dynamo/data-handler`
245
-
246
- Reactive data management utilities using RxJS BehaviorSubjects and Observables.
247
-
248
- **Key Features:**
249
- - Automatic loading prevention (prevents multiple simultaneous load calls)
250
- - Post-processing support for data transformation
251
- - Dependency management for dependent data handlers
252
- - Specialized handlers for lists, searchable data, and pagination
253
-
254
- **Classes:**
255
- - `DyFM_DataHandler` - Base handler for single data items
256
- - `DyFM_DataListHandler` - Handler for array data
257
- - `DyFM_DataSearchHandler` - Handler for searchable data with pagination
258
- - `DyFM_ListCollectorDataHandler` - Handler for list collections within parent objects
259
-
260
- **Example:**
261
- ```typescript
262
- import { DyFM_DataListHandler } from '@futdevpro/fsm-dynamo/data-handler';
263
-
264
- const listHandler = new DyFM_DataListHandler({
265
- name: 'UsersList',
266
- get: async () => await apiService.getUsers(),
267
- setItem: async (user) => await apiService.updateUser(user),
268
- deleteItem: async (userId) => await apiService.deleteUser(userId)
269
- });
270
-
271
- listHandler.dataList$.subscribe(users => {
272
- console.log('Users updated:', users);
273
- });
274
- ```
275
-
276
- ### 4. Location Module
277
-
278
- **Import:** `@futdevpro/fsm-dynamo/location`
279
-
280
- Comprehensive suite for handling geographical data and location-based functionality.
281
-
282
- **Key Features:**
283
- - Country information management with ISO codes
284
- - Administrative divisions data
285
- - Geographical utilities for coordinates and distance calculations
286
- - Region classification and IP-based location services
287
- - Phone code integration
288
-
289
- **Example:**
290
- ```typescript
291
- import {
292
- DyFM_CountryISOs,
293
- DyFM_LocationUtils,
294
- DyFM_RegionsUtils
295
- } from '@futdevpro/fsm-dynamo/location';
296
-
297
- const country = DyFM_CountryISOs.getByISO('US');
298
- const distance = DyFM_LocationUtils.calculateDistance(
299
- { lat: 40.7128, lng: -74.0060 },
300
- { lat: 34.0522, lng: -118.2437 }
301
- );
302
- ```
303
-
304
- ### 5. Messaging Module
305
-
306
- **Import:** `@futdevpro/fsm-dynamo/messaging`
307
-
308
- Unified messaging system for user↔user and user↔AI communication.
309
-
310
- **Key Features:**
311
- - Support for direct, group, assistant chat, and channel conversations
312
- - Message types: text, attachments, reactions, mentions, threads
313
- - Real-time capabilities with socket integration
314
- - Agent process visualization for AI reasoning
315
- - Participant role management
316
-
317
- **Example:**
318
- ```typescript
319
- import {
320
- DyFM_Msg_Message,
321
- DyFM_Msg_Type,
322
- DyFM_Msg_Status
323
- } from '@futdevpro/fsm-dynamo/messaging';
324
-
325
- const message = new DyFM_Msg_Message({
326
- conversationId: 'conv-123',
327
- senderId: 'user-456',
328
- content: 'Hello, world!',
329
- type: DyFM_Msg_Type.text,
330
- status: DyFM_Msg_Status.sent
331
- });
332
- ```
333
-
334
- ### 6. Socket Module
335
-
336
- **Import:** `@futdevpro/fsm-dynamo/socket`
337
-
338
- Real-time bidirectional communication using Socket.IO.
339
-
340
- **Key Features:**
341
- - Event management with predefined event keys
342
- - Client configuration and connection management
343
- - Automatic reconnection logic
344
- - Observable properties for connection and subscription states
345
- - Base service class for custom socket clients
346
-
347
- **Example:**
348
- ```typescript
349
- import {
350
- DyFM_SocketClient_ServiceBase,
351
- DyFM_SocketEvent_Key
352
- } from '@futdevpro/fsm-dynamo/socket';
353
-
354
- class MySocketClient extends DyFM_SocketClient_ServiceBase {
355
- // Implementation
356
- }
357
- ```
358
-
359
- ### 7. Pipe Module
360
-
361
- **Import:** `@futdevpro/fsm-dynamo/pipe`
362
-
363
- Data transformation utilities for manipulating and formatting data.
364
-
365
- **Key Features:**
366
- - Specialized pipes for geographic data, string manipulation, and data formatting
367
- - UI component support with Angular pipe integration
368
- - Multi-pipe functionality for complex transformations
369
- - Country, region, and division formatting
370
-
371
- **Example:**
372
- ```typescript
373
- import { DyFM_pipeTransforms } from '@futdevpro/fsm-dynamo/pipe';
374
-
375
- const formatted = DyFM_pipeTransforms.country('US'); // "United States"
376
- ```
377
-
378
- ### 8. Crypto Module
379
-
380
- **Import:** `@futdevpro/fsm-dynamo/crypto`
381
-
382
- Deterministic encryption and decryption utilities using AES-256-CBC.
383
-
384
- **Key Features:**
385
- - Deterministic encryption (same input + key = same output)
386
- - Cross-platform compatibility
387
- - URL-safe base64 encoding
388
- - Secure random key generation
389
- - Cross-runtime ECDSA P-256 artifact signing and public-key verification
390
- - Strict 64-byte IEEE P1363 signatures with unpadded Base64URL transport
391
- - Content-free verification codes and canonical public-JWK fingerprints
392
-
393
- **Important:** This implementation produces identical encrypted output for identical input data and key. Use when consistency across systems is more important than cryptographic security.
394
-
395
- **Example:**
396
- ```typescript
397
- import { DyFM_Crypto } from '@futdevpro/fsm-dynamo/crypto';
398
-
399
- const encrypted = DyFM_Crypto.encrypt('sensitive data', 'my-secret-key');
400
- const decrypted = DyFM_Crypto.decrypt(encrypted, 'my-secret-key');
401
- ```
402
-
403
- For publication authenticity, `DyFM_ArtifactSignature_ControlService` signs exact caller-provided bytes with a
404
- PKCS#8 private key and verifies them with a public P-256 JWK. Private material belongs in the consuming server's
405
- FDP Keystore configuration and is never returned in signature evidence or sent to a browser. The verifier works
406
- through Web Crypto in secure browser contexts and supported Node.js runtimes.
407
-
408
- ### Deployment Contract Module
409
-
410
- **Import:** `@futdevpro/fsm-dynamo/deployment`
411
-
412
- Shared, content-free deployment target contracts for FDP operational tooling.
413
-
414
- **Key Features:**
415
- - Strict `fdp-atomic-rollback-manifest/1` parsing with unknown-field rejection
416
- - Canonical, order-independent target checksum generation
417
- - Immutable image reference, digest and mutable promotion-target validation
418
- - Configuration revision, compatibility-policy and authority-evidence validation
419
- - Safe post-check endpoint validation and bounded gap-code evidence
420
-
421
- The module validates only operational metadata. Application data, workbook content, secrets and credentials do not
422
- belong in the manifest and are rejected when supplied as additional fields.
423
-
424
- Use `DyFM_AtomicRollbackManifest_Util.validate(value)` for strict parsing and
425
- `DyFM_AtomicRollbackManifest_Util.computeTargetChecksum(manifest)` for canonical target checksums.
426
-
427
- ### 9. Custom Data Module
428
-
429
- **Import:** `@futdevpro/fsm-dynamo/custom-data`
430
-
431
- Flexible storage and management of custom data with metadata support.
432
-
433
- **Key Features:**
434
- - Type-safe data containers with validation rules
435
- - RESTful API endpoints for data operations
436
- - Metadata support for tracking and organization
437
-
438
- **Example:**
439
- ```typescript
440
- import { DyFM_CustomData } from '@futdevpro/fsm-dynamo/custom-data';
441
-
442
- const customData = new DyFM_CustomData({
443
- key: 'user-preferences',
444
- value: { theme: 'dark', language: 'en' },
445
- __createdBy: 'user-123'
446
- });
447
- ```
448
-
449
- ### 10. Test Module
450
-
451
- **Import:** `@futdevpro/fsm-dynamo/test`
452
-
453
- Comprehensive testing tools for HTTP endpoints.
454
-
455
- **Key Features:**
456
- - Complete suite of HTTP method test endpoints
457
- - Server status monitoring
458
- - Structured response handling
459
-
460
- ### 11. Usage Module
461
-
462
- **Import:** `@futdevpro/fsm-dynamo/usage`
463
-
464
- User behavior tracking and analytics tools.
465
-
466
- **Key Features:**
467
- - Session management
468
- - Usage analytics and geographic insights
469
- - Daily statistics and action tracking
470
-
471
- **Example:**
472
- ```typescript
473
- import { DyFM_UsageSession } from '@futdevpro/fsm-dynamo/usage';
474
-
475
- const session = new DyFM_UsageSession({
476
- userId: 'user-123',
477
- startTime: new Date(),
478
- __createdBy: 'system'
479
- });
480
- ```
481
-
482
- ### 12. CI Tools Module
483
-
484
- **Import:** `@futdevpro/fsm-dynamo/ci-tools`
485
-
486
- Models and enums for tracking CI/CD pipeline results.
487
-
488
- **Key Features:**
489
- - Build, test, and deployment pipeline tracking
490
- - Detailed step-by-step results
491
- - Result code enums for standardized status reporting
492
-
493
- **Example:**
494
- ```typescript
495
- import {
496
- DyFM_CIT_CIResultCode,
497
- DyFM_CIT_CIResultInfo
498
- } from '@futdevpro/fsm-dynamo/ci-tools';
499
-
500
- const ciResult: DyFM_CIT_CIResultInfo = {
501
- resultCode: DyFM_CIT_CIResultCode.success,
502
- // ... other properties
503
- };
504
- ```
505
-
506
- ## Common Usage Patterns
507
-
508
- ### Import Patterns
509
-
510
- All exports use the `DyFM_` prefix (Dynamo Full Stack Module):
511
-
512
- ```typescript
513
- // Main module
514
- import { DyFM_Array, DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
515
-
516
- // Specific modules
517
- import { DyFM_DataHandler } from '@futdevpro/fsm-dynamo/data-handler';
518
- import { DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
519
- import { DyFM_Crypto } from '@futdevpro/fsm-dynamo/crypto';
520
- ```
521
-
522
- ### Type Safety
523
-
524
- Dynamo FSM provides full TypeScript support with strict typing:
525
-
526
- ```typescript
527
- import { DyFM_Metadata, DyFM_Error, DyFM_ErrorLevel } from '@futdevpro/fsm-dynamo';
528
-
529
- interface User extends DyFM_Metadata {
530
- name: string;
531
- email: string;
532
- }
533
-
534
- // Type-safe error handling
535
- const error = new DyFM_Error({
536
- errorCode: 'VALIDATION_ERROR',
537
- message: 'Invalid user data',
538
- level: DyFM_ErrorLevel.warning
539
- });
540
- ```
541
-
542
- ### Error Handling Pattern
543
-
544
- ```typescript
545
- import { DyFM_Error, DyFM_ErrorLevel, DyFM_Log } from '@futdevpro/fsm-dynamo';
546
-
547
- try {
548
- // Your code
549
- } catch (err) {
550
- if (err instanceof DyFM_Error && err.___handled) {
551
- // Error already handled
552
- return;
553
- }
554
-
555
- const error = new DyFM_Error({
556
- errorCode: 'OPERATION_FAILED',
557
- message: err.message,
558
- userMessage: 'An error occurred',
559
- level: DyFM_ErrorLevel.error
560
- });
561
-
562
- // Use logSimple for formatted error logging
563
- error.logSimple('Operation failed');
564
- // Or use static method
565
- DyFM_Error.logSimple('Operation failed', error);
566
-
567
- throw error;
568
- }
569
- ```
570
-
571
- ### Special Logging Methods
572
-
573
- Dynamo FSM provides specialized logging methods for different use cases:
574
-
575
- ```typescript
576
- import { DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
577
-
578
- // Highlighted error - displays error with visual formatting
579
- DyFM_Log.H_error('Critical error occurred', errorDetails);
580
- // Alias: DyFM_Log.highlightedError()
581
-
582
- // Test error - displays error with test-specific formatting
583
- DyFM_Log.T_error('Test error message', testData);
584
- // Alias: DyFM_Log.testError()
585
-
586
- // Simple error logging - formatted error output with error code, message, stack
587
- const error = new DyFM_Error({
588
- errorCode: 'VALIDATION_ERROR',
589
- message: 'Invalid input',
590
- level: DyFM_ErrorLevel.error
591
- });
592
-
593
- // Static method for any error type
594
- DyFM_Error.logSimple('Operation failed', error);
595
- // Works with both DyFM_Error instances and regular Error objects
596
- ```
597
-
598
- ### Constants Usage
599
-
600
- ```typescript
601
- import { DyFM_times, DyFM_data_sizes, DyFM_numbers } from '@futdevpro/fsm-dynamo';
602
-
603
- // Time constants
604
- const oneHour = DyFM_times.hour;
605
- const oneDay = DyFM_times.day;
606
- const oneWeek = DyFM_times.week;
607
-
608
- // Data size constants
609
- const maxStringLength = DyFM_data_sizes.maxStringLength;
610
-
611
- // Number constants
612
- const maxSafeInteger = DyFM_numbers.maxSafeInteger;
613
- ```
614
-
615
- ## API Reference
616
-
617
- ### Main Exports
618
-
619
- The main module exports utilities, constants, enums, and models:
620
-
621
- **Constants:**
622
- - `DyFM_error_defaults` - Default error configuration
623
- - `DyFM_global_settings` - Global framework settings
624
- - `DyFM_numbers` - Standard numeric constants
625
- - `DyFM_times` - Time constants (second, minute, hour, day, week, month, year)
626
- - `DyFM_data_sizes` - Data size constants
627
-
628
- **Utilities:**
629
- - `DyFM_Array` - Array manipulation utilities
630
- - `DyFM_String` - String manipulation utilities
631
- - `DyFM_Log` - Logging utilities with special methods:
632
- - `DyFM_Log.H_error` / `DyFM_Log.highlightedError` - Big Highlighted error logging
633
- - `DyFM_Log.T_error` / `DyFM_Log.testError` - Mdium Highlighted error logging
634
- - `DyFM_Log.S_error` / `DyFM_Log.smallError` - Small Highlighted error logging
635
- - `DyFM_Time` - Time manipulation utilities
636
- - `DyFM_UUID` - UUID generation utilities
637
- - `DyFM_Data` - Data transformation utilities
638
- - `DyFM_Math` - Mathematical operations
639
- - `DyFM_Random` - Random number generation
640
-
641
- **Enums:**
642
- - `DyFM_ErrorLevel` - Error severity levels
643
- - `DyFM_LogStyle` - Text styling options
644
- - `DyFM_HttpCallType` - HTTP request methods
645
- - `DyFM_HttpResponseType` - HTTP response data types
646
- - `DyFM_EnvironmentFlag` - Environment types
647
-
648
- **Models:**
649
- - `DyFM_Error` - Error model with methods:
650
- - `logSimple()` - Formatted error logging with error code, message, stack, and additional content
651
- - `static logSimple()` - Static method for logging any error type
652
- - `DyFM_Metadata` - Base metadata model
653
- - `DyFM_SearchQuery` - Search query interface
654
- - `DyFM_SearchResult` - Search result interface
655
- - `DyFM_Paged` - Pagination interface
656
-
657
- ### Module Export Paths
658
-
659
- All modules can be imported directly:
660
-
661
- ```typescript
662
- // Main module
663
- import { ... } from '@futdevpro/fsm-dynamo';
664
-
665
- // Submodules
666
- import { ... } from '@futdevpro/fsm-dynamo/ai';
667
- import { ... } from '@futdevpro/fsm-dynamo/ai/open-ai';
668
- import { ... } from '@futdevpro/fsm-dynamo/ai/anthropic';
669
- import { ... } from '@futdevpro/fsm-dynamo/data-handler';
670
- import { ... } from '@futdevpro/fsm-dynamo/location';
671
- import { ... } from '@futdevpro/fsm-dynamo/messaging';
672
- import { ... } from '@futdevpro/fsm-dynamo/socket';
673
- import { ... } from '@futdevpro/fsm-dynamo/pipe';
674
- import { ... } from '@futdevpro/fsm-dynamo/crypto';
675
- import { ... } from '@futdevpro/fsm-dynamo/deployment';
676
- import { ... } from '@futdevpro/fsm-dynamo/custom-data';
677
- import { ... } from '@futdevpro/fsm-dynamo/test';
678
- import { ... } from '@futdevpro/fsm-dynamo/usage';
679
- import { ... } from '@futdevpro/fsm-dynamo/ci-tools';
680
- ```
681
-
682
- For detailed API documentation, refer to the [Dynamo FSM Documentation](https://futdevpro.hu/projects/dynamo).
683
-
684
- ## Requirements
685
-
686
- - **TypeScript**: 5.9.3 or higher
687
- - **Node.js**: Compatible with Node.js LTS versions
688
- - **Peer Dependencies**:
689
- - `rxjs`: 7.8.2
690
-
691
- ## Support & Contributing
692
-
693
- ### Support
694
-
695
- - **Donations**: [https://futdevpro.hu/support/dynamo](https://futdevpro.hu/support/dynamo) - Support page for project donations
696
- - **Homepage**: [https://futdevpro.hu/projects/dynamo](https://futdevpro.hu/projects/dynamo)
697
- - **Feedback & Contact**: For feature requests, bug reports, or questions, please use the feedback page or contact us at:
698
- - contact@futdevpro.hu
699
- - support@futdevpro.hu
700
-
701
- ## License
702
-
703
- MIT License
704
-
705
- Copyright (c) Future Development Program Ltd. (HU)
706
-
707
- Permission is hereby granted, free of charge, to any person obtaining a copy
708
- of this software and associated documentation files (the "Software"), to deal
709
- in the Software without restriction, including without limitation the rights
710
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
711
- copies of the Software, and to permit persons to whom the Software is
712
- furnished to do so, subject to the following conditions:
713
-
714
- The above copyright notice and this permission notice shall be included in all
715
- copies or substantial portions of the Software.
716
-
717
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
718
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
719
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
720
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
721
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
722
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
723
- SOFTWARE.
71
+
72
+ ## Installation
73
+
74
+ ```bash
75
+ npm install @futdevpro/fsm-dynamo
76
+ ```
77
+
78
+ or
79
+
80
+ ```bash
81
+ pnpm add @futdevpro/fsm-dynamo
82
+ ```
83
+
84
+ ## Quick Start
85
+
86
+ ### Basic Utility Usage
87
+
88
+ ```typescript
89
+ import { DyFM_Array, DyFM_String, DyFM_Log, DyFM_Error, DyFM_ErrorLevel } from '@futdevpro/fsm-dynamo';
90
+
91
+ // Array operations
92
+ const numbers = [1, 2, 3, 4, 5];
93
+ const doubled = DyFM_Array.map(numbers, (n) => n * 2);
94
+
95
+ // String operations
96
+ const formatted = DyFM_String.capitalize('hello world'); // "Hello World"
97
+
98
+ // Logging
99
+ DyFM_Log.info('Application started');
100
+ DyFM_Log.warn('This is a warning');
101
+ DyFM_Log.error('An error occurred');
102
+
103
+ // Special logging methods
104
+ DyFM_Log.H_error('Highlighted error message'); // Highlighted error with visual formatting
105
+ DyFM_Log.T_error('Test error message'); // Test error with special formatting
106
+
107
+ // Error handling
108
+ const error = new DyFM_Error({
109
+ errorCode: 'USER_NOT_FOUND',
110
+ message: 'User with ID 123 not found',
111
+ userMessage: 'User not found',
112
+ level: DyFM_ErrorLevel.error
113
+ });
114
+
115
+ // Or use static method for any error type
116
+ DyFM_Error.logSimple('Operation failed', error);
117
+ ```
118
+
119
+ ### Data Handler Example
120
+
121
+ ```typescript
122
+ import { DyFM_DataHandler } from '@futdevpro/fsm-dynamo/data-handler';
123
+ import { DyFM_Metadata } from '@futdevpro/fsm-dynamo';
124
+
125
+ interface User extends DyFM_Metadata {
126
+ name: string;
127
+ email: string;
128
+ }
129
+
130
+ class UserHandler extends DyFM_DataHandler<User> {
131
+ constructor(apiService: any) {
132
+ super({
133
+ name: 'UserHandler',
134
+ get: async (userId: string) => {
135
+ return await apiService.getUser(userId);
136
+ },
137
+ set: async (user: User) => {
138
+ return await apiService.updateUser(user);
139
+ }
140
+ });
141
+ }
142
+ }
143
+
144
+ // Usage
145
+ const userHandler = new UserHandler(apiService);
146
+ await userHandler.reload('user-123');
147
+ userHandler.data$.subscribe(user => {
148
+ console.log('User loaded:', user);
149
+ });
150
+ ```
151
+
152
+ ### AI Module Example
153
+
154
+ ```typescript
155
+ import { DyFM_AI_Provider, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
156
+ import { DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
157
+
158
+ // Configure AI provider
159
+ const aiConfig = {
160
+ provider: DyFM_AI_Provider.OpenAI,
161
+ apiKey: process.env.OPENAI_API_KEY,
162
+ model: DyFM_OAI_Model.gpt_4o_latest
163
+ };
164
+
165
+ // Create AI request
166
+ const aiRequest = {
167
+ messages: [
168
+ {
169
+ role: DyFM_AI_MessageRole.user,
170
+ content: 'Hello, how are you?'
171
+ }
172
+ ],
173
+ settings: aiConfig
174
+ };
175
+ ```
176
+
177
+ ## Modules
178
+
179
+ Dynamo FSM is organized into 12 specialized modules, each providing focused functionality for specific use cases.
180
+
181
+ ### 1. Main Module
182
+
183
+ **Import:** `@futdevpro/fsm-dynamo`
184
+
185
+ The core foundation providing essential utilities, constants, enums, and models for state management and data handling.
186
+
187
+ **Key Features:**
188
+ - Core utilities for array manipulation, logging, string operations, and type-safe data handling
189
+ - Constants for times, data sizes, numbers, and global settings
190
+ - Enums for error levels, HTTP types, log styles, and more
191
+ - Models for error handling, data properties, and service endpoints
192
+
193
+ **Example:**
194
+ ```typescript
195
+ import {
196
+ DyFM_Array,
197
+ DyFM_Log,
198
+ DyFM_Error,
199
+ DyFM_times,
200
+ DyFM_ErrorLevel
201
+ } from '@futdevpro/fsm-dynamo';
202
+
203
+ // Use time constants
204
+ const oneDay = DyFM_times.day; // 86400000 milliseconds
205
+
206
+ // Array operations
207
+ const result = DyFM_Array.filter([1, 2, 3, 4], n => n > 2);
208
+ ```
209
+
210
+ ### 2. AI Module
211
+
212
+ **Import:** `@futdevpro/fsm-dynamo/ai`
213
+
214
+ Unified interface for interacting with multiple AI providers (OpenAI, Anthropic, Google, Local AI).
215
+
216
+ **Key Features:**
217
+ - Standardized models and interfaces for LLM operations
218
+ - Embedding support across providers
219
+ - Provider capability detection
220
+ - Flexible configuration options
221
+
222
+ **Submodules:**
223
+ - `@futdevpro/fsm-dynamo/ai/open-ai` - OpenAI-specific implementations
224
+ - `@futdevpro/fsm-dynamo/ai/anthropic` - Anthropic (Claude) implementations
225
+ - `@futdevpro/fsm-dynamo/ai/google` - Google AI implementations
226
+ - `@futdevpro/fsm-dynamo/ai/local` - Local AI implementations
227
+
228
+ **Example:**
229
+ ```typescript
230
+ import { DyFM_AI_Provider, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
231
+ import { DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
232
+
233
+ const config = {
234
+ provider: DyFM_AI_Provider.OpenAI,
235
+ model: DyFM_OAI_Model.gpt_4o_latest
236
+ };
237
+ ```
238
+
239
+ **See also:**
240
+ - [OpenAI-compatible providers how-to (LM Studio / Ollama / vLLM / LocalAI)](__documentations/2026-05-17-oai-compatible-providers-howto.md) — `DyFM_OAI_ClientOptions.baseURL`-override mintázattal lokál és self-hosted LLM-ek
241
+
242
+ ### 3. Data Handler Module
243
+
244
+ **Import:** `@futdevpro/fsm-dynamo/data-handler`
245
+
246
+ Reactive data management utilities using RxJS BehaviorSubjects and Observables.
247
+
248
+ **Key Features:**
249
+ - Automatic loading prevention (prevents multiple simultaneous load calls)
250
+ - Post-processing support for data transformation
251
+ - Dependency management for dependent data handlers
252
+ - Specialized handlers for lists, searchable data, and pagination
253
+
254
+ **Classes:**
255
+ - `DyFM_DataHandler` - Base handler for single data items
256
+ - `DyFM_DataListHandler` - Handler for array data
257
+ - `DyFM_DataSearchHandler` - Handler for searchable data with pagination
258
+ - `DyFM_ListCollectorDataHandler` - Handler for list collections within parent objects
259
+
260
+ **Example:**
261
+ ```typescript
262
+ import { DyFM_DataListHandler } from '@futdevpro/fsm-dynamo/data-handler';
263
+
264
+ const listHandler = new DyFM_DataListHandler({
265
+ name: 'UsersList',
266
+ get: async () => await apiService.getUsers(),
267
+ setItem: async (user) => await apiService.updateUser(user),
268
+ deleteItem: async (userId) => await apiService.deleteUser(userId)
269
+ });
270
+
271
+ listHandler.dataList$.subscribe(users => {
272
+ console.log('Users updated:', users);
273
+ });
274
+ ```
275
+
276
+ ### 4. Location Module
277
+
278
+ **Import:** `@futdevpro/fsm-dynamo/location`
279
+
280
+ Comprehensive suite for handling geographical data and location-based functionality.
281
+
282
+ **Key Features:**
283
+ - Country information management with ISO codes
284
+ - Administrative divisions data
285
+ - Geographical utilities for coordinates and distance calculations
286
+ - Region classification and IP-based location services
287
+ - Phone code integration
288
+
289
+ **Example:**
290
+ ```typescript
291
+ import {
292
+ DyFM_CountryISOs,
293
+ DyFM_LocationUtils,
294
+ DyFM_RegionsUtils
295
+ } from '@futdevpro/fsm-dynamo/location';
296
+
297
+ const country = DyFM_CountryISOs.getByISO('US');
298
+ const distance = DyFM_LocationUtils.calculateDistance(
299
+ { lat: 40.7128, lng: -74.0060 },
300
+ { lat: 34.0522, lng: -118.2437 }
301
+ );
302
+ ```
303
+
304
+ ### 5. Messaging Module
305
+
306
+ **Import:** `@futdevpro/fsm-dynamo/messaging`
307
+
308
+ Unified messaging system for user↔user and user↔AI communication.
309
+
310
+ **Key Features:**
311
+ - Support for direct, group, assistant chat, and channel conversations
312
+ - Message types: text, attachments, reactions, mentions, threads
313
+ - Real-time capabilities with socket integration
314
+ - Agent process visualization for AI reasoning
315
+ - Participant role management
316
+
317
+ **Example:**
318
+ ```typescript
319
+ import {
320
+ DyFM_Msg_Message,
321
+ DyFM_Msg_Type,
322
+ DyFM_Msg_Status
323
+ } from '@futdevpro/fsm-dynamo/messaging';
324
+
325
+ const message = new DyFM_Msg_Message({
326
+ conversationId: 'conv-123',
327
+ senderId: 'user-456',
328
+ content: 'Hello, world!',
329
+ type: DyFM_Msg_Type.text,
330
+ status: DyFM_Msg_Status.sent
331
+ });
332
+ ```
333
+
334
+ ### 6. Socket Module
335
+
336
+ **Import:** `@futdevpro/fsm-dynamo/socket`
337
+
338
+ Real-time bidirectional communication using Socket.IO.
339
+
340
+ **Key Features:**
341
+ - Event management with predefined event keys
342
+ - Client configuration and connection management
343
+ - Automatic reconnection logic
344
+ - Observable properties for connection and subscription states
345
+ - Base service class for custom socket clients
346
+
347
+ **Example:**
348
+ ```typescript
349
+ import {
350
+ DyFM_SocketClient_ServiceBase,
351
+ DyFM_SocketEvent_Key
352
+ } from '@futdevpro/fsm-dynamo/socket';
353
+
354
+ class MySocketClient extends DyFM_SocketClient_ServiceBase {
355
+ // Implementation
356
+ }
357
+ ```
358
+
359
+ ### 7. Pipe Module
360
+
361
+ **Import:** `@futdevpro/fsm-dynamo/pipe`
362
+
363
+ Data transformation utilities for manipulating and formatting data.
364
+
365
+ **Key Features:**
366
+ - Specialized pipes for geographic data, string manipulation, and data formatting
367
+ - UI component support with Angular pipe integration
368
+ - Multi-pipe functionality for complex transformations
369
+ - Country, region, and division formatting
370
+
371
+ **Example:**
372
+ ```typescript
373
+ import { DyFM_pipeTransforms } from '@futdevpro/fsm-dynamo/pipe';
374
+
375
+ const formatted = DyFM_pipeTransforms.country('US'); // "United States"
376
+ ```
377
+
378
+ ### 8. Crypto Module
379
+
380
+ **Import:** `@futdevpro/fsm-dynamo/crypto`
381
+
382
+ Deterministic encryption and decryption utilities using AES-256-CBC.
383
+
384
+ **Key Features:**
385
+ - Deterministic encryption (same input + key = same output)
386
+ - Cross-platform compatibility
387
+ - URL-safe base64 encoding
388
+ - Secure random key generation
389
+ - Cross-runtime ECDSA P-256 artifact signing and public-key verification
390
+ - Strict 64-byte IEEE P1363 signatures with unpadded Base64URL transport
391
+ - Content-free verification codes and canonical public-JWK fingerprints
392
+
393
+ **Important:** This implementation produces identical encrypted output for identical input data and key. Use when consistency across systems is more important than cryptographic security.
394
+
395
+ **Example:**
396
+ ```typescript
397
+ import { DyFM_Crypto } from '@futdevpro/fsm-dynamo/crypto';
398
+
399
+ const encrypted = DyFM_Crypto.encrypt('sensitive data', 'my-secret-key');
400
+ const decrypted = DyFM_Crypto.decrypt(encrypted, 'my-secret-key');
401
+ ```
402
+
403
+ For publication authenticity, `DyFM_ArtifactSignature_ControlService` signs exact caller-provided bytes with a
404
+ PKCS#8 private key and verifies them with a public P-256 JWK. Private material belongs in the consuming server's
405
+ FDP Keystore configuration and is never returned in signature evidence or sent to a browser. The verifier works
406
+ through Web Crypto in secure browser contexts and supported Node.js runtimes.
407
+
408
+ ### Deployment Contract Module
409
+
410
+ **Import:** `@futdevpro/fsm-dynamo/deployment`
411
+
412
+ Shared, content-free deployment target contracts for FDP operational tooling.
413
+
414
+ **Key Features:**
415
+ - Strict `fdp-atomic-rollback-manifest/1` parsing with unknown-field rejection
416
+ - Canonical, order-independent target checksum generation
417
+ - Immutable image reference, digest and mutable promotion-target validation
418
+ - Configuration revision, compatibility-policy and authority-evidence validation
419
+ - Safe post-check endpoint validation and bounded gap-code evidence
420
+
421
+ The module validates only operational metadata. Application data, workbook content, secrets and credentials do not
422
+ belong in the manifest and are rejected when supplied as additional fields.
423
+
424
+ Use `DyFM_AtomicRollbackManifest_Util.validate(value)` for strict parsing and
425
+ `DyFM_AtomicRollbackManifest_Util.computeTargetChecksum(manifest)` for canonical target checksums.
426
+
427
+ ### 9. Custom Data Module
428
+
429
+ **Import:** `@futdevpro/fsm-dynamo/custom-data`
430
+
431
+ Flexible storage and management of custom data with metadata support.
432
+
433
+ **Key Features:**
434
+ - Type-safe data containers with validation rules
435
+ - RESTful API endpoints for data operations
436
+ - Metadata support for tracking and organization
437
+
438
+ **Example:**
439
+ ```typescript
440
+ import { DyFM_CustomData } from '@futdevpro/fsm-dynamo/custom-data';
441
+
442
+ const customData = new DyFM_CustomData({
443
+ key: 'user-preferences',
444
+ value: { theme: 'dark', language: 'en' },
445
+ __createdBy: 'user-123'
446
+ });
447
+ ```
448
+
449
+ ### 10. Test Module
450
+
451
+ **Import:** `@futdevpro/fsm-dynamo/test`
452
+
453
+ Comprehensive testing tools for HTTP endpoints.
454
+
455
+ **Key Features:**
456
+ - Complete suite of HTTP method test endpoints
457
+ - Server status monitoring
458
+ - Structured response handling
459
+
460
+ ### 11. Usage Module
461
+
462
+ **Import:** `@futdevpro/fsm-dynamo/usage`
463
+
464
+ User behavior tracking and analytics tools.
465
+
466
+ **Key Features:**
467
+ - Session management
468
+ - Usage analytics and geographic insights
469
+ - Daily statistics and action tracking
470
+
471
+ **Example:**
472
+ ```typescript
473
+ import { DyFM_UsageSession } from '@futdevpro/fsm-dynamo/usage';
474
+
475
+ const session = new DyFM_UsageSession({
476
+ userId: 'user-123',
477
+ startTime: new Date(),
478
+ __createdBy: 'system'
479
+ });
480
+ ```
481
+
482
+ ### 12. CI Tools Module
483
+
484
+ **Import:** `@futdevpro/fsm-dynamo/ci-tools`
485
+
486
+ Models and enums for tracking CI/CD pipeline results.
487
+
488
+ **Key Features:**
489
+ - Build, test, and deployment pipeline tracking
490
+ - Detailed step-by-step results
491
+ - Result code enums for standardized status reporting
492
+
493
+ **Example:**
494
+ ```typescript
495
+ import {
496
+ DyFM_CIT_CIResultCode,
497
+ DyFM_CIT_CIResultInfo
498
+ } from '@futdevpro/fsm-dynamo/ci-tools';
499
+
500
+ const ciResult: DyFM_CIT_CIResultInfo = {
501
+ resultCode: DyFM_CIT_CIResultCode.success,
502
+ // ... other properties
503
+ };
504
+ ```
505
+
506
+ ## Common Usage Patterns
507
+
508
+ ### Import Patterns
509
+
510
+ All exports use the `DyFM_` prefix (Dynamo Full Stack Module):
511
+
512
+ ```typescript
513
+ // Main module
514
+ import { DyFM_Array, DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
515
+
516
+ // Specific modules
517
+ import { DyFM_DataHandler } from '@futdevpro/fsm-dynamo/data-handler';
518
+ import { DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
519
+ import { DyFM_Crypto } from '@futdevpro/fsm-dynamo/crypto';
520
+ ```
521
+
522
+ ### Type Safety
523
+
524
+ Dynamo FSM provides full TypeScript support with strict typing:
525
+
526
+ ```typescript
527
+ import { DyFM_Metadata, DyFM_Error, DyFM_ErrorLevel } from '@futdevpro/fsm-dynamo';
528
+
529
+ interface User extends DyFM_Metadata {
530
+ name: string;
531
+ email: string;
532
+ }
533
+
534
+ // Type-safe error handling
535
+ const error = new DyFM_Error({
536
+ errorCode: 'VALIDATION_ERROR',
537
+ message: 'Invalid user data',
538
+ level: DyFM_ErrorLevel.warning
539
+ });
540
+ ```
541
+
542
+ ### Error Handling Pattern
543
+
544
+ ```typescript
545
+ import { DyFM_Error, DyFM_ErrorLevel, DyFM_Log } from '@futdevpro/fsm-dynamo';
546
+
547
+ try {
548
+ // Your code
549
+ } catch (err) {
550
+ if (err instanceof DyFM_Error && err.___handled) {
551
+ // Error already handled
552
+ return;
553
+ }
554
+
555
+ const error = new DyFM_Error({
556
+ errorCode: 'OPERATION_FAILED',
557
+ message: err.message,
558
+ userMessage: 'An error occurred',
559
+ level: DyFM_ErrorLevel.error
560
+ });
561
+
562
+ // Use logSimple for formatted error logging
563
+ error.logSimple('Operation failed');
564
+ // Or use static method
565
+ DyFM_Error.logSimple('Operation failed', error);
566
+
567
+ throw error;
568
+ }
569
+ ```
570
+
571
+ ### Special Logging Methods
572
+
573
+ Dynamo FSM provides specialized logging methods for different use cases:
574
+
575
+ ```typescript
576
+ import { DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
577
+
578
+ // Highlighted error - displays error with visual formatting
579
+ DyFM_Log.H_error('Critical error occurred', errorDetails);
580
+ // Alias: DyFM_Log.highlightedError()
581
+
582
+ // Test error - displays error with test-specific formatting
583
+ DyFM_Log.T_error('Test error message', testData);
584
+ // Alias: DyFM_Log.testError()
585
+
586
+ // Simple error logging - formatted error output with error code, message, stack
587
+ const error = new DyFM_Error({
588
+ errorCode: 'VALIDATION_ERROR',
589
+ message: 'Invalid input',
590
+ level: DyFM_ErrorLevel.error
591
+ });
592
+
593
+ // Static method for any error type
594
+ DyFM_Error.logSimple('Operation failed', error);
595
+ // Works with both DyFM_Error instances and regular Error objects
596
+ ```
597
+
598
+ ### Constants Usage
599
+
600
+ ```typescript
601
+ import { DyFM_times, DyFM_data_sizes, DyFM_numbers } from '@futdevpro/fsm-dynamo';
602
+
603
+ // Time constants
604
+ const oneHour = DyFM_times.hour;
605
+ const oneDay = DyFM_times.day;
606
+ const oneWeek = DyFM_times.week;
607
+
608
+ // Data size constants
609
+ const maxStringLength = DyFM_data_sizes.maxStringLength;
610
+
611
+ // Number constants
612
+ const maxSafeInteger = DyFM_numbers.maxSafeInteger;
613
+ ```
614
+
615
+ ## API Reference
616
+
617
+ ### Main Exports
618
+
619
+ The main module exports utilities, constants, enums, and models:
620
+
621
+ **Constants:**
622
+ - `DyFM_error_defaults` - Default error configuration
623
+ - `DyFM_global_settings` - Global framework settings
624
+ - `DyFM_numbers` - Standard numeric constants
625
+ - `DyFM_times` - Time constants (second, minute, hour, day, week, month, year)
626
+ - `DyFM_data_sizes` - Data size constants
627
+
628
+ **Utilities:**
629
+ - `DyFM_Array` - Array manipulation utilities
630
+ - `DyFM_String` - String manipulation utilities
631
+ - `DyFM_Log` - Logging utilities with special methods:
632
+ - `DyFM_Log.H_error` / `DyFM_Log.highlightedError` - Big Highlighted error logging
633
+ - `DyFM_Log.T_error` / `DyFM_Log.testError` - Mdium Highlighted error logging
634
+ - `DyFM_Log.S_error` / `DyFM_Log.smallError` - Small Highlighted error logging
635
+ - `DyFM_Time` - Time manipulation utilities
636
+ - `DyFM_UUID` - UUID generation utilities
637
+ - `DyFM_Data` - Data transformation utilities
638
+ - `DyFM_Math` - Mathematical operations
639
+ - `DyFM_Random` - Random number generation
640
+
641
+ **Enums:**
642
+ - `DyFM_ErrorLevel` - Error severity levels
643
+ - `DyFM_LogStyle` - Text styling options
644
+ - `DyFM_HttpCallType` - HTTP request methods
645
+ - `DyFM_HttpResponseType` - HTTP response data types
646
+ - `DyFM_EnvironmentFlag` - Environment types
647
+
648
+ **Models:**
649
+ - `DyFM_Error` - Error model with methods:
650
+ - `logSimple()` - Formatted error logging with error code, message, stack, and additional content
651
+ - `static logSimple()` - Static method for logging any error type
652
+ - `DyFM_Metadata` - Base metadata model
653
+ - `DyFM_SearchQuery` - Search query interface
654
+ - `DyFM_SearchResult` - Search result interface
655
+ - `DyFM_Paged` - Pagination interface
656
+
657
+ ### Module Export Paths
658
+
659
+ All modules can be imported directly:
660
+
661
+ ```typescript
662
+ // Main module
663
+ import { ... } from '@futdevpro/fsm-dynamo';
664
+
665
+ // Submodules
666
+ import { ... } from '@futdevpro/fsm-dynamo/ai';
667
+ import { ... } from '@futdevpro/fsm-dynamo/ai/open-ai';
668
+ import { ... } from '@futdevpro/fsm-dynamo/ai/anthropic';
669
+ import { ... } from '@futdevpro/fsm-dynamo/data-handler';
670
+ import { ... } from '@futdevpro/fsm-dynamo/location';
671
+ import { ... } from '@futdevpro/fsm-dynamo/messaging';
672
+ import { ... } from '@futdevpro/fsm-dynamo/socket';
673
+ import { ... } from '@futdevpro/fsm-dynamo/pipe';
674
+ import { ... } from '@futdevpro/fsm-dynamo/crypto';
675
+ import { ... } from '@futdevpro/fsm-dynamo/deployment';
676
+ import { ... } from '@futdevpro/fsm-dynamo/custom-data';
677
+ import { ... } from '@futdevpro/fsm-dynamo/test';
678
+ import { ... } from '@futdevpro/fsm-dynamo/usage';
679
+ import { ... } from '@futdevpro/fsm-dynamo/ci-tools';
680
+ ```
681
+
682
+ For detailed API documentation, refer to the [Dynamo FSM Documentation](https://futdevpro.hu/projects/dynamo).
683
+
684
+ ## Requirements
685
+
686
+ - **TypeScript**: 5.9.3 or higher
687
+ - **Node.js**: Compatible with Node.js LTS versions
688
+ - **Peer Dependencies**:
689
+ - `rxjs`: 7.8.2
690
+
691
+ ## Support & Contributing
692
+
693
+ ### Support
694
+
695
+ - **Donations**: [https://futdevpro.hu/support/dynamo](https://futdevpro.hu/support/dynamo) - Support page for project donations
696
+ - **Homepage**: [https://futdevpro.hu/projects/dynamo](https://futdevpro.hu/projects/dynamo)
697
+ - **Feedback & Contact**: For feature requests, bug reports, or questions, please use the feedback page or contact us at:
698
+ - contact@futdevpro.hu
699
+ - support@futdevpro.hu
700
+
701
+ ## License
702
+
703
+ MIT License
704
+
705
+ Copyright (c) Future Development Program Ltd. (HU)
706
+
707
+ Permission is hereby granted, free of charge, to any person obtaining a copy
708
+ of this software and associated documentation files (the "Software"), to deal
709
+ in the Software without restriction, including without limitation the rights
710
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
711
+ copies of the Software, and to permit persons to whom the Software is
712
+ furnished to do so, subject to the following conditions:
713
+
714
+ The above copyright notice and this permission notice shall be included in all
715
+ copies or substantial portions of the Software.
716
+
717
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
718
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
719
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
720
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
721
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
722
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
723
+ SOFTWARE.