
Security News
pnpm 11.5 Adds Support for Recognizing npm Staged Publishes
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.
@futdevpro/fsm-dynamo
Advanced tools
Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.
Full Stack Model Collection for Dynamic (NodeJS-TypeScript) Framework
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.
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.
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.
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.
Dynamo FSM is the foundational package used by all other Dynamo packages:
All these packages build upon Dynamo FSM's core interfaces, types, and utilities, ensuring consistency and type safety across the entire Dynamo ecosystem.
DyFM_Array)DyFM_String)DyFM_Time)DyFM_UUID)DyFM_Log)DyFM_Error)npm install @futdevpro/fsm-dynamo
or
pnpm add @futdevpro/fsm-dynamo
import { DyFM_Array, DyFM_String, DyFM_Log, DyFM_Error, DyFM_ErrorLevel } from '@futdevpro/fsm-dynamo';
// Array operations
const numbers = [1, 2, 3, 4, 5];
const doubled = DyFM_Array.map(numbers, (n) => n * 2);
// String operations
const formatted = DyFM_String.capitalize('hello world'); // "Hello World"
// Logging
DyFM_Log.info('Application started');
DyFM_Log.warn('This is a warning');
DyFM_Log.error('An error occurred');
// Special logging methods
DyFM_Log.H_error('Highlighted error message'); // Highlighted error with visual formatting
DyFM_Log.T_error('Test error message'); // Test error with special formatting
// Error handling
const error = new DyFM_Error({
errorCode: 'USER_NOT_FOUND',
message: 'User with ID 123 not found',
userMessage: 'User not found',
level: DyFM_ErrorLevel.error
});
// Or use static method for any error type
DyFM_Error.logSimple('Operation failed', error);
import { DyFM_DataHandler } from '@futdevpro/fsm-dynamo/data-handler';
import { DyFM_Metadata } from '@futdevpro/fsm-dynamo';
interface User extends DyFM_Metadata {
name: string;
email: string;
}
class UserHandler extends DyFM_DataHandler<User> {
constructor(apiService: any) {
super({
name: 'UserHandler',
get: async (userId: string) => {
return await apiService.getUser(userId);
},
set: async (user: User) => {
return await apiService.updateUser(user);
}
});
}
}
// Usage
const userHandler = new UserHandler(apiService);
await userHandler.reload('user-123');
userHandler.data$.subscribe(user => {
console.log('User loaded:', user);
});
import { DyFM_AI_Provider, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
import { DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
// Configure AI provider
const aiConfig = {
provider: DyFM_AI_Provider.OpenAI,
apiKey: process.env.OPENAI_API_KEY,
model: DyFM_OAI_Model.gpt_4o_latest
};
// Create AI request
const aiRequest = {
messages: [
{
role: DyFM_AI_MessageRole.user,
content: 'Hello, how are you?'
}
],
settings: aiConfig
};
Dynamo FSM is organized into 12 specialized modules, each providing focused functionality for specific use cases.
Import: @futdevpro/fsm-dynamo
The core foundation providing essential utilities, constants, enums, and models for state management and data handling.
Key Features:
Example:
import {
DyFM_Array,
DyFM_Log,
DyFM_Error,
DyFM_times,
DyFM_ErrorLevel
} from '@futdevpro/fsm-dynamo';
// Use time constants
const oneDay = DyFM_times.day; // 86400000 milliseconds
// Array operations
const result = DyFM_Array.filter([1, 2, 3, 4], n => n > 2);
Import: @futdevpro/fsm-dynamo/ai
Unified interface for interacting with multiple AI providers (OpenAI, Anthropic, Google, Local AI).
Key Features:
Submodules:
@futdevpro/fsm-dynamo/ai/open-ai - OpenAI-specific implementations@futdevpro/fsm-dynamo/ai/anthropic - Anthropic (Claude) implementations@futdevpro/fsm-dynamo/ai/google - Google AI implementations@futdevpro/fsm-dynamo/ai/local - Local AI implementationsExample:
import { DyFM_AI_Provider, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
import { DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
const config = {
provider: DyFM_AI_Provider.OpenAI,
model: DyFM_OAI_Model.gpt_4o_latest
};
See also:
DyFM_OAI_ClientOptions.baseURL-override mintázattal lokál és self-hosted LLM-ekImport: @futdevpro/fsm-dynamo/data-handler
Reactive data management utilities using RxJS BehaviorSubjects and Observables.
Key Features:
Classes:
DyFM_DataHandler - Base handler for single data itemsDyFM_DataListHandler - Handler for array dataDyFM_DataSearchHandler - Handler for searchable data with paginationDyFM_ListCollectorDataHandler - Handler for list collections within parent objectsExample:
import { DyFM_DataListHandler } from '@futdevpro/fsm-dynamo/data-handler';
const listHandler = new DyFM_DataListHandler({
name: 'UsersList',
get: async () => await apiService.getUsers(),
setItem: async (user) => await apiService.updateUser(user),
deleteItem: async (userId) => await apiService.deleteUser(userId)
});
listHandler.dataList$.subscribe(users => {
console.log('Users updated:', users);
});
Import: @futdevpro/fsm-dynamo/location
Comprehensive suite for handling geographical data and location-based functionality.
Key Features:
Example:
import {
DyFM_CountryISOs,
DyFM_LocationUtils,
DyFM_RegionsUtils
} from '@futdevpro/fsm-dynamo/location';
const country = DyFM_CountryISOs.getByISO('US');
const distance = DyFM_LocationUtils.calculateDistance(
{ lat: 40.7128, lng: -74.0060 },
{ lat: 34.0522, lng: -118.2437 }
);
Import: @futdevpro/fsm-dynamo/messaging
Unified messaging system for user↔user and user↔AI communication.
Key Features:
Example:
import {
DyFM_Msg_Message,
DyFM_Msg_Type,
DyFM_Msg_Status
} from '@futdevpro/fsm-dynamo/messaging';
const message = new DyFM_Msg_Message({
conversationId: 'conv-123',
senderId: 'user-456',
content: 'Hello, world!',
type: DyFM_Msg_Type.text,
status: DyFM_Msg_Status.sent
});
Import: @futdevpro/fsm-dynamo/socket
Real-time bidirectional communication using Socket.IO.
Key Features:
Example:
import {
DyFM_SocketClient_ServiceBase,
DyFM_SocketEvent_Key
} from '@futdevpro/fsm-dynamo/socket';
class MySocketClient extends DyFM_SocketClient_ServiceBase {
// Implementation
}
Import: @futdevpro/fsm-dynamo/pipe
Data transformation utilities for manipulating and formatting data.
Key Features:
Example:
import { DyFM_pipeTransforms } from '@futdevpro/fsm-dynamo/pipe';
const formatted = DyFM_pipeTransforms.country('US'); // "United States"
Import: @futdevpro/fsm-dynamo/crypto
Deterministic encryption and decryption utilities using AES-256-CBC.
Key Features:
Important: This implementation produces identical encrypted output for identical input data and key. Use when consistency across systems is more important than cryptographic security.
Example:
import { DyFM_Crypto } from '@futdevpro/fsm-dynamo/crypto';
const encrypted = DyFM_Crypto.encrypt('sensitive data', 'my-secret-key');
const decrypted = DyFM_Crypto.decrypt(encrypted, 'my-secret-key');
Import: @futdevpro/fsm-dynamo/custom-data
Flexible storage and management of custom data with metadata support.
Key Features:
Example:
import { DyFM_CustomData } from '@futdevpro/fsm-dynamo/custom-data';
const customData = new DyFM_CustomData({
key: 'user-preferences',
value: { theme: 'dark', language: 'en' },
__createdBy: 'user-123'
});
Import: @futdevpro/fsm-dynamo/test
Comprehensive testing tools for HTTP endpoints.
Key Features:
Import: @futdevpro/fsm-dynamo/usage
User behavior tracking and analytics tools.
Key Features:
Example:
import { DyFM_UsageSession } from '@futdevpro/fsm-dynamo/usage';
const session = new DyFM_UsageSession({
userId: 'user-123',
startTime: new Date(),
__createdBy: 'system'
});
Import: @futdevpro/fsm-dynamo/ci-tools
Models and enums for tracking CI/CD pipeline results.
Key Features:
Example:
import {
DyFM_CIT_CIResultCode,
DyFM_CIT_CIResultInfo
} from '@futdevpro/fsm-dynamo/ci-tools';
const ciResult: DyFM_CIT_CIResultInfo = {
resultCode: DyFM_CIT_CIResultCode.success,
// ... other properties
};
All exports use the DyFM_ prefix (Dynamo Full Stack Module):
// Main module
import { DyFM_Array, DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
// Specific modules
import { DyFM_DataHandler } from '@futdevpro/fsm-dynamo/data-handler';
import { DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
import { DyFM_Crypto } from '@futdevpro/fsm-dynamo/crypto';
Dynamo FSM provides full TypeScript support with strict typing:
import { DyFM_Metadata, DyFM_Error, DyFM_ErrorLevel } from '@futdevpro/fsm-dynamo';
interface User extends DyFM_Metadata {
name: string;
email: string;
}
// Type-safe error handling
const error = new DyFM_Error({
errorCode: 'VALIDATION_ERROR',
message: 'Invalid user data',
level: DyFM_ErrorLevel.warning
});
import { DyFM_Error, DyFM_ErrorLevel, DyFM_Log } from '@futdevpro/fsm-dynamo';
try {
// Your code
} catch (err) {
if (err instanceof DyFM_Error && err.___handled) {
// Error already handled
return;
}
const error = new DyFM_Error({
errorCode: 'OPERATION_FAILED',
message: err.message,
userMessage: 'An error occurred',
level: DyFM_ErrorLevel.error
});
// Use logSimple for formatted error logging
error.logSimple('Operation failed');
// Or use static method
DyFM_Error.logSimple('Operation failed', error);
throw error;
}
Dynamo FSM provides specialized logging methods for different use cases:
import { DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
// Highlighted error - displays error with visual formatting
DyFM_Log.H_error('Critical error occurred', errorDetails);
// Alias: DyFM_Log.highlightedError()
// Test error - displays error with test-specific formatting
DyFM_Log.T_error('Test error message', testData);
// Alias: DyFM_Log.testError()
// Simple error logging - formatted error output with error code, message, stack
const error = new DyFM_Error({
errorCode: 'VALIDATION_ERROR',
message: 'Invalid input',
level: DyFM_ErrorLevel.error
});
// Static method for any error type
DyFM_Error.logSimple('Operation failed', error);
// Works with both DyFM_Error instances and regular Error objects
import { DyFM_times, DyFM_data_sizes, DyFM_numbers } from '@futdevpro/fsm-dynamo';
// Time constants
const oneHour = DyFM_times.hour;
const oneDay = DyFM_times.day;
const oneWeek = DyFM_times.week;
// Data size constants
const maxStringLength = DyFM_data_sizes.maxStringLength;
// Number constants
const maxSafeInteger = DyFM_numbers.maxSafeInteger;
The main module exports utilities, constants, enums, and models:
Constants:
DyFM_error_defaults - Default error configurationDyFM_global_settings - Global framework settingsDyFM_numbers - Standard numeric constantsDyFM_times - Time constants (second, minute, hour, day, week, month, year)DyFM_data_sizes - Data size constantsUtilities:
DyFM_Array - Array manipulation utilitiesDyFM_String - String manipulation utilitiesDyFM_Log - Logging utilities with special methods:
DyFM_Log.H_error / DyFM_Log.highlightedError - Big Highlighted error loggingDyFM_Log.T_error / DyFM_Log.testError - Mdium Highlighted error loggingDyFM_Log.S_error / DyFM_Log.smallError - Small Highlighted error loggingDyFM_Time - Time manipulation utilitiesDyFM_UUID - UUID generation utilitiesDyFM_Data - Data transformation utilitiesDyFM_Math - Mathematical operationsDyFM_Random - Random number generationEnums:
DyFM_ErrorLevel - Error severity levelsDyFM_LogStyle - Text styling optionsDyFM_HttpCallType - HTTP request methodsDyFM_HttpResponseType - HTTP response data typesDyFM_EnvironmentFlag - Environment typesModels:
DyFM_Error - Error model with methods:
logSimple() - Formatted error logging with error code, message, stack, and additional contentstatic logSimple() - Static method for logging any error typeDyFM_Metadata - Base metadata modelDyFM_SearchQuery - Search query interfaceDyFM_SearchResult - Search result interfaceDyFM_Paged - Pagination interfaceAll modules can be imported directly:
// Main module
import { ... } from '@futdevpro/fsm-dynamo';
// Submodules
import { ... } from '@futdevpro/fsm-dynamo/ai';
import { ... } from '@futdevpro/fsm-dynamo/ai/open-ai';
import { ... } from '@futdevpro/fsm-dynamo/ai/anthropic';
import { ... } from '@futdevpro/fsm-dynamo/data-handler';
import { ... } from '@futdevpro/fsm-dynamo/location';
import { ... } from '@futdevpro/fsm-dynamo/messaging';
import { ... } from '@futdevpro/fsm-dynamo/socket';
import { ... } from '@futdevpro/fsm-dynamo/pipe';
import { ... } from '@futdevpro/fsm-dynamo/crypto';
import { ... } from '@futdevpro/fsm-dynamo/custom-data';
import { ... } from '@futdevpro/fsm-dynamo/test';
import { ... } from '@futdevpro/fsm-dynamo/usage';
import { ... } from '@futdevpro/fsm-dynamo/ci-tools';
For detailed API documentation, refer to the Dynamo FSM Documentation.
rxjs: 7.8.1MIT License
Copyright (c) Future Development Program Ltd. (HU)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
FAQs
Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.
We found that @futdevpro/fsm-dynamo demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.