@plyaz/types 1.35.4 → 1.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/api/index.cjs +199 -1
  2. package/dist/api/index.cjs.map +1 -1
  3. package/dist/api/index.js +199 -1
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/auth/index.cjs +1 -2
  6. package/dist/auth/index.cjs.map +1 -1
  7. package/dist/auth/index.js +1 -2
  8. package/dist/auth/index.js.map +1 -1
  9. package/dist/campaign/schemas.d.ts +1 -1
  10. package/dist/core/domain/files/enums.d.ts +36 -0
  11. package/dist/core/domain/files/index.d.ts +6 -1
  12. package/dist/core/domain/files/schemas.d.ts +183 -0
  13. package/dist/core/domain/files/streaming.d.ts +167 -0
  14. package/dist/core/domain/files/types.d.ts +5 -67
  15. package/dist/core/events/index.d.ts +2 -0
  16. package/dist/core/events/streaming/index.d.ts +18 -0
  17. package/dist/core/events/streaming/responses.d.ts +164 -0
  18. package/dist/core/events/streaming/types.d.ts +408 -0
  19. package/dist/core/frontend/index.d.ts +1 -1
  20. package/dist/core/frontend/types.d.ts +179 -5
  21. package/dist/core/index.cjs +221 -0
  22. package/dist/core/index.cjs.map +1 -1
  23. package/dist/core/index.d.ts +1 -1
  24. package/dist/core/index.js +192 -1
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/init/index.d.ts +1 -1
  27. package/dist/core/init/types.d.ts +51 -0
  28. package/dist/errors/codes.d.ts +47 -0
  29. package/dist/errors/enums.d.ts +1 -0
  30. package/dist/errors/index.cjs +231 -1
  31. package/dist/errors/index.cjs.map +1 -1
  32. package/dist/errors/index.js +231 -2
  33. package/dist/errors/index.js.map +1 -1
  34. package/dist/errors/types.d.ts +15 -0
  35. package/dist/examples/schemas.d.ts +1 -1
  36. package/dist/index.cjs +450 -1
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.js +420 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/store/files/index.d.ts +1 -1
  41. package/dist/store/files/types.d.ts +47 -1
  42. package/dist/store/index.d.ts +1 -0
  43. package/dist/store/stream/index.d.ts +9 -0
  44. package/dist/store/stream/types.d.ts +303 -0
  45. package/dist/store/types.d.ts +3 -0
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/modules.ts","../../src/core/tables/enum.ts","../../src/core/featureFlag/enums.ts","../../src/core/featureFlag/constants.ts","../../src/core/events/enums.ts","../../src/core/services/keys.ts"],"names":["TABLES","SORT_DIRECTION","FEATURE_FLAG_TABLE","FEATURE_FLAG_FIELD","FEATURE_FLAG_RULE_FIELD","FEATURE_FLAG_PROVIDERS","NODE_ENVIRONMENTS","DATABASE_FIELDS","SYSTEM_USERS","EVALUATION_REASONS","FEATURE_FLAG_TYPES"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Core Module System Types\n *\n * Framework-agnostic module interface for @plyaz/core.\n * Modules implement this contract to integrate with Core.\n */\n\nimport type { DatabaseServiceInterface } from '../db/databaseService';\nimport type { HttpMethod } from '../api/config/types';\nimport type {\n Type,\n DynamicModule,\n ForwardReference,\n InjectionToken,\n OptionalFactoryDependency,\n ModuleMetadata,\n} from '@nestjs/common';\n\n// Re-export HttpMethod for convenience\nexport type { HttpMethod };\n\n/**\n * Core services available to modules\n */\nexport interface CoreServices {\n db: DatabaseServiceInterface;\n // api: ApiClientService;\n // cache: CacheService;\n // logger: LoggerService;\n env: Record<string, string | undefined>;\n}\n\n/**\n * Route handler context\n */\nexport interface CoreRouteContext {\n params: Record<string, string>;\n query: Record<string, string | string[]>;\n body: unknown;\n headers: Record<string, string>;\n services: CoreServices;\n}\n\n/**\n * Route handler function\n */\nexport type CoreRouteHandler = (ctx: CoreRouteContext) => Promise<{\n status?: number;\n body?: unknown;\n headers?: Record<string, string>;\n}>;\n\n/**\n * Route definition - framework agnostic\n */\nexport interface CoreRouteDefinition {\n method: HttpMethod;\n path: string;\n handler: CoreRouteHandler;\n middleware?: string[];\n description?: string;\n}\n\n/**\n * Module configuration schema (optional)\n */\nexport interface CoreModuleConfigSchema<T = unknown> {\n parse: (config: unknown) => T;\n safeParse: (config: unknown) => { success: boolean; data?: T; error?: Error };\n}\n\n/**\n * Service factory for creating module services\n */\nexport type CoreServiceFactory<T = unknown> = (\n services: CoreServices,\n config?: unknown\n) => T | Promise<T>;\n\n/**\n * Module lifecycle hooks\n */\nexport interface CoreModuleLifecycle {\n /**\n * Called when module is initialized\n * Use for setup, connections, etc.\n */\n onInit?(services: CoreServices): Promise<void>;\n\n /**\n * Called when module is being destroyed\n * Use for cleanup, closing connections, etc.\n */\n onDestroy?(): Promise<void>;\n\n /**\n * Called when Core is fully initialized (all modules loaded)\n */\n onReady?(services: CoreServices): Promise<void>;\n}\n\n/**\n * Core module definition - framework agnostic contract\n *\n * @example\n * ```typescript\n * const FeatureFlagModule: CoreModuleDefinition = {\n * name: 'featureFlags',\n * version: '1.0.0',\n * dependencies: ['db'],\n *\n * routes: [\n * { method: 'GET', path: '/flags', handler: listFlags },\n * { method: 'GET', path: '/flags/:key', handler: getFlag },\n * ],\n *\n * services: {\n * featureFlagService: (core) => new FeatureFlagService(core.db),\n * },\n *\n * async onInit(services) {\n * // Initialize feature flag provider\n * },\n * };\n * ```\n */\nexport interface CoreModuleDefinition<TConfig = unknown> extends CoreModuleLifecycle {\n /**\n * Unique module name (used for registration and access)\n */\n name: string;\n\n /**\n * Module version\n */\n version?: string;\n\n /**\n * Core services this module depends on\n */\n dependencies?: ('db' | 'api' | 'cache' | 'logger')[];\n\n /**\n * HTTP routes provided by this module\n */\n routes?: CoreRouteDefinition[];\n\n /**\n * Services exposed by this module\n */\n services?: Record<string, CoreServiceFactory>;\n\n /**\n * Configuration schema for validation\n */\n configSchema?: CoreModuleConfigSchema<TConfig>;\n\n /**\n * Default configuration\n */\n defaultConfig?: Partial<TConfig>;\n}\n\n/**\n * Registered module instance (after initialization)\n */\nexport interface CoreRegisteredModule<TConfig = unknown> {\n definition: CoreModuleDefinition<TConfig>;\n config: TConfig;\n services: Record<string, unknown>;\n initialized: boolean;\n}\n\n/**\n * Module with configuration (result of .forRoot())\n */\nexport interface CoreConfiguredModule<TConfig = unknown> {\n definition: CoreModuleDefinition<TConfig>;\n config: TConfig;\n}\n\n/**\n * Helper to create a module definition with forRoot pattern\n */\nexport interface CoreModuleFactory<TConfig = unknown> {\n /**\n * Module definition\n */\n definition: CoreModuleDefinition<TConfig>;\n\n /**\n * Configure module with options\n */\n forRoot(config?: Partial<TConfig>): CoreConfiguredModule<TConfig>;\n\n /**\n * Use module with default config\n */\n default: CoreConfiguredModule<TConfig>;\n}\n\n/**\n * Supported HTTP frameworks for server mode\n */\nexport type CoreFrameworkType =\n | 'node' // Plain Node.js http module\n | 'express' // Express.js\n | 'nestjs' // NestJS\n | 'nextjs'; // Next.js API routes (SSR/Edge)\n\n/**\n * Server configuration\n */\nexport interface CoreServerConfig {\n port: number;\n host?: string;\n framework?: CoreFrameworkType;\n prefix?: string; // API prefix like '/api/v1'\n cors?: {\n enabled: boolean;\n origins?: string[];\n };\n}\n\n/**\n * Framework adapter interface\n */\nexport interface CoreFrameworkAdapter {\n /**\n * Framework name\n */\n name: CoreFrameworkType;\n\n /**\n * Register routes from modules\n */\n registerRoutes(\n routes: Array<{ moduleName: string; routes: CoreRouteDefinition[] }>,\n services: CoreServices\n ): void | Promise<void>;\n\n /**\n * Start the server\n */\n start(config: CoreServerConfig): Promise<void>;\n\n /**\n * Stop the server\n */\n stop(): Promise<void>;\n\n /**\n * Get the underlying framework instance (express app, fastify instance, etc.)\n */\n getInstance(): unknown;\n}\n\n/**\n * Adapter factory function\n */\nexport type CoreAdapterFactory = () => CoreFrameworkAdapter;\n\n/**\n * Runtime environment detection\n */\nexport type CoreRuntimeEnvironment =\n | 'node' // Plain Node.js\n | 'nestjs' // NestJS backend\n | 'express' // Express.js\n | 'nuxt' // Nuxt.js (Vue SSR)\n | 'nextjs' // Next.js (React SSR)\n | 'browser' // Browser/SPA\n | 'edge' // Edge runtime (Cloudflare, Vercel Edge)\n | 'deno' // Deno runtime\n | 'bun' // Bun runtime\n | 'unknown';\n\n/**\n * Runtime context type\n */\nexport type CoreRuntimeContext = 'backend' | 'frontend' | 'universal';\n\n/**\n * Backend runtimes - always server-side\n */\nexport const BACKEND_RUNTIMES: readonly CoreRuntimeEnvironment[] = [\n 'node',\n 'nestjs',\n 'express',\n 'deno',\n 'bun',\n] as const;\n\n/**\n * Frontend runtimes - always client-side\n */\nexport const FRONTEND_RUNTIMES: readonly CoreRuntimeEnvironment[] = ['browser'] as const;\n\n/**\n * Universal runtimes - can be either (SSR)\n */\nexport const UNIVERSAL_RUNTIMES: readonly CoreRuntimeEnvironment[] = [\n 'nextjs',\n 'nuxt',\n 'edge',\n] as const;\n\n// ============================================================================\n// Next.js Handler Types\n// ============================================================================\n\n/**\n * Handler context for Next.js API routes\n * Provides services and parsed request data\n */\nexport interface CoreNextJsHandlerContext {\n /** Database service */\n db: unknown; // DbService - imported dynamically to avoid circular deps\n /** URL parameters (from dynamic routes like [id]) */\n params: Record<string, string>;\n /** Query string parameters */\n query: Record<string, string | string[]>;\n /** Request body (parsed JSON) */\n body: unknown;\n /** Request headers */\n headers: Record<string, string>;\n /** Original Request object */\n request: Request;\n}\n\n/**\n * Handler return type for Next.js API routes\n */\nexport interface CoreNextJsHandlerResult {\n /** Response body (will be JSON serialized) */\n [key: string]: unknown;\n /** HTTP status code (default: 200) */\n status?: number;\n /** Response headers */\n headers?: Record<string, string>;\n}\n\n/**\n * Handler function type for Next.js API routes\n */\nexport type CoreNextJsHandler = (\n ctx: CoreNextJsHandlerContext\n) => Promise<CoreNextJsHandlerResult | Response>;\n\n/**\n * Options for Next.js createHandler\n */\nexport interface CoreNextJsHandlerOptions {\n /** Core initialization options (used on first request) */\n coreOptions?: Record<string, unknown>;\n}\n\n// ============================================================================\n// Core Initialization Types\n// ============================================================================\n\n/**\n * Core environment variables\n */\nexport interface CoreEnvVars {\n DATABASE_URL?: string;\n SUPABASE_URL?: string;\n SUPABASE_SERVICE_ROLE_KEY?: string;\n SUPABASE_ANON_PUBLIC_KEY?: string;\n ENCRYPTION_KEY?: string;\n API_BASE_URL?: string;\n API_TIMEOUT?: string;\n NODE_ENV?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Application environment type\n */\nexport type CoreAppEnvironment = 'development' | 'staging' | 'production' | 'test';\n\n/**\n * API client initialization options\n * Extends ApiClientOptions with Core-specific settings\n */\nexport interface CoreApiInitOptions {\n /** Environment for API client configuration */\n env?: CoreAppEnvironment;\n /** Set this client as the default */\n setAsDefault?: boolean;\n /** Base URL for API requests */\n baseURL?: string;\n /** Request timeout in milliseconds */\n timeout?: number;\n /** Additional options passed to ApiClientService */\n [key: string]: unknown;\n}\n\n/**\n * Core initialization options\n */\nexport interface CoreInitOptions<\n TDbConfig = unknown,\n TApiConfig = CoreApiInitOptions,\n TCacheConfig = unknown,\n TStorageConfig = unknown,\n TNotificationsConfig = unknown,\n> {\n /** Path to .env file */\n envPath?: string;\n /** Global application environment */\n environment?: CoreAppEnvironment;\n /** Application context (webapp, backoffice, mobile, etc.) */\n appContext?: CoreAppContext;\n /** Explicit environment variables */\n env?: CoreEnvVars;\n /** Database configuration */\n db?: TDbConfig;\n /** API client configuration */\n api?: TApiConfig;\n /** Cache configuration */\n cache?: TCacheConfig;\n /** Storage configuration (backend only) */\n storage?: TStorageConfig;\n /** Notifications configuration (backend only) */\n notifications?: TNotificationsConfig;\n /** Skip database initialization */\n skipDb?: boolean;\n /** Skip API client initialization */\n skipApi?: boolean;\n /** Skip cache initialization */\n skipCache?: boolean;\n /** Skip storage initialization */\n skipStorage?: boolean;\n /** Skip notifications initialization */\n skipNotifications?: boolean;\n /** Enable verbose logging */\n verbose?: boolean;\n /**\n * Logger configuration for Core's internal PackageLogger.\n * - 'pino': JSON structured logs (default)\n * - 'console': Human-readable output (for development)\n */\n logger?: {\n transport?: 'pino' | 'console';\n };\n}\n\n/**\n * Core initialization result\n */\nexport interface CoreServicesResult<\n TDb = unknown,\n TApi = unknown,\n TCache = unknown,\n TStorage = unknown,\n TNotifications = unknown,\n> {\n db: TDb | null;\n api: TApi | null;\n cache: TCache | null;\n storage: TStorage | null;\n notifications: TNotifications | null;\n env: CoreEnvVars;\n runtime: CoreRuntimeEnvironment;\n appContext: CoreAppContext;\n}\n\n// ============================================================================\n// NestJS Module Types\n// ============================================================================\n\n/**\n * Core module options for NestJS\n */\nexport interface CoreNestJsModuleOptions {\n /** Path to .env file */\n envPath?: string;\n /** Database configuration */\n db?: Record<string, unknown>;\n /** Whether to make Core services globally available */\n isGlobal?: boolean;\n}\n\n/**\n * Async options for NestJS CoreModule (adapters/nestjs.ts pattern)\n * Uses NestJS-specific types for proper DI integration.\n */\nexport interface CoreNestJsModuleAsyncOptions {\n /** Modules to import for dependency resolution */\n imports?: Array<Type<unknown> | DynamicModule | Promise<DynamicModule> | ForwardReference>;\n /** Tokens to inject into the factory */\n inject?: Array<InjectionToken | OptionalFactoryDependency>;\n /** Factory function to create module options */\n useFactory: (...args: unknown[]) => CoreNestJsModuleOptions | Promise<CoreNestJsModuleOptions>;\n /** Whether to make Core services globally available */\n isGlobal?: boolean;\n}\n\n/**\n * Async options for NestJS CoreModule (init/nestjs pattern)\n * Extends ModuleMetadata for full NestJS integration.\n */\nexport interface CoreNestJsCoreModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {\n /** Factory function to create init options */\n useFactory: (...args: unknown[]) => CoreInitOptions | Promise<CoreInitOptions>;\n /** Tokens to inject into the factory */\n inject?: Array<Type<unknown> | string | symbol>;\n}\n\n// ============================================================================\n// App Context Types\n// ============================================================================\n\n/**\n * Application context type\n *\n * Identifies which type of application is running.\n * Different apps may have different feature flags, API endpoints, or UI behaviors.\n */\nexport type CoreAppContext =\n | 'webapp' // Main web application\n | 'backoffice' // Admin/back-office portal\n | 'mobile' // Mobile apps (React Native, Capacitor, etc.)\n | 'microapp' // Embedded micro frontends\n | 'cli'; // CLI tools\n\n/**\n * App context constants for type-safe comparisons\n */\nexport const APP_CONTEXTS: readonly CoreAppContext[] = [\n 'webapp',\n 'backoffice',\n 'mobile',\n 'microapp',\n 'cli',\n] as const;\n\n// ============================================================================\n// Domain Service Types\n// ============================================================================\n\n/**\n * Service runtime compatibility\n *\n * Declares which runtimes a service can execute on.\n * Services can be restricted to specific runtimes for security\n * (e.g., backend-only services should never be bundled for frontend).\n */\nexport type CoreServiceRuntime =\n | 'frontend' // Browser, React, Vue, etc. (no DB access)\n | 'backend' // Node.js, NestJS, Express (has DB access)\n | 'universal'; // Works everywhere (SSR, Edge)\n\n/**\n * Domain service configuration\n *\n * Declares service metadata including runtime compatibility\n * and feature flag requirements.\n *\n * @example\n * ```typescript\n * class CampaignDomainService {\n * static readonly config: CoreDomainServiceConfig = {\n * name: 'CampaignDomainService',\n * runtimes: ['frontend', 'backend'],\n * requiresFeatureFlag: 'campaigns:enabled',\n * };\n * }\n * ```\n */\nexport interface CoreDomainServiceConfig {\n /** Service name for logging and debugging */\n name: string;\n\n /** Runtimes this service can run on */\n runtimes: readonly CoreServiceRuntime[];\n\n /** Feature flag required to use this service (optional) */\n requiresFeatureFlag?: string;\n\n /** App contexts this service is available in (optional, all if not specified) */\n appContexts?: readonly CoreAppContext[];\n}\n","export enum TABLES {\n User = 'users',\n}\n","/**\n * Sort direction for database queries\n */\nexport enum SORT_DIRECTION {\n Asc = 'asc',\n Desc = 'desc',\n}\n\n/**\n * Feature flag database table names enumeration\n */\nexport enum FEATURE_FLAG_TABLE {\n FeatureFlags = 'feature_flags',\n FeatureFlagRules = 'feature_flag_rules',\n FeatureFlagEvaluations = 'feature_flag_evaluations',\n FeatureFlagOverrides = 'feature_flag_overrides',\n}\n\n/**\n * Database field names for feature flags table\n */\nexport enum FEATURE_FLAG_FIELD {\n Key = 'key',\n Name = 'name',\n Value = 'value',\n Type = 'type',\n IsEnabled = 'is_enabled',\n Environments = 'environments',\n Description = 'description',\n CreatedAt = 'created_at',\n UpdatedAt = 'updated_at',\n}\n\n/**\n * Database field names for feature flag rules table\n */\nexport enum FEATURE_FLAG_RULE_FIELD {\n Id = 'id',\n FlagKey = 'flag_key',\n Name = 'name',\n Conditions = 'conditions',\n Value = 'value',\n Priority = 'priority',\n IsEnabled = 'is_enabled',\n}\n\n/**\n * Feature Flag Provider Types\n */\nexport enum FEATURE_FLAG_PROVIDERS {\n MEMORY = 'memory',\n FILE = 'file',\n REDIS = 'redis',\n API = 'api',\n DATABASE = 'database',\n}\n\n/**\n * Node Environment Types\n */\nexport enum NODE_ENVIRONMENTS {\n DEVELOPMENT = 'development',\n PRODUCTION = 'production',\n STAGING = 'staging',\n TEST = 'test',\n}\n\n/**\n * Database Field Names\n */\nexport enum DATABASE_FIELDS {\n Key = 'key',\n FlagKey = 'flag_key',\n UserId = 'user_id',\n IsEnabled = 'is_enabled',\n CreatedAt = 'created_at',\n UpdatedAt = 'updated_at',\n ExpiresAt = 'expires_at',\n EvaluatedAt = 'evaluated_at',\n}\n\n/**\n * System User Constants\n */\nexport enum SYSTEM_USERS {\n SYSTEM = 'system',\n}\n\n/**\n * Evaluation Reasons\n * Must match database enum: evaluation_reason\n * Used when logging feature flag evaluations to audit table\n */\nexport enum EVALUATION_REASONS {\n Default = 'default', // Default flag value used\n RuleMatch = 'rule_match', // Matched a targeting rule\n Rollout = 'rollout', // Matched rollout percentage\n Override = 'override', // User-specific override applied\n Disabled = 'disabled', // Flag is disabled\n}\n\n/**\n * Feature Flag Types\n */\nexport enum FEATURE_FLAG_TYPES {\n BOOLEAN = 'boolean',\n STRING = 'string',\n NUMBER = 'number',\n OBJECT = 'object',\n}\n","/**\n * Default Configuration Values\n */\nexport const FEATURE_FLAG_DEFAULTS = {\n CACHE_TTL: 300,\n REFRESH_INTERVAL: 0,\n POOL_SIZE: 10,\n TIMEOUT: 30000,\n TABLE_NAME: 'feature_flags',\n} as const;\n\n/**\n * Metadata keys used for attaching feature flag information\n * to route handlers via decorators.\n */\nexport const FEATURE_FLAG_METADATA = {\n FLAG_CHECK: 'plyaz:feature_flag_check', // Single feature flag check\n RESOLVE_FLAGS: 'plyaz:resolve_feature_flags', // Multiple flags resolved at once\n};\n","/**\n * Core Event Enums and Constants\n *\n * Type-safe event definitions for the CoreEventManager.\n * All event types follow the pattern: SCOPE:ACTION\n *\n * @example\n * ```typescript\n * import { CoreEventType, CORE_EVENTS } from '@plyaz/types/core';\n *\n * // Use constants for type-safe event emission\n * CoreEventManager.emit(CORE_EVENTS.ENTITY.CREATED, payload);\n *\n * // Subscribe with typed payloads\n * CoreEventManager.on<EntityCreatedPayload>(CORE_EVENTS.ENTITY.CREATED, handler);\n * ```\n */\n\n// ─────────────────────────────────────────────────────────────────\n// Event Scopes\n// ─────────────────────────────────────────────────────────────────\n\n/**\n * Event scope categories\n */\nexport const CoreEventScope = {\n SYSTEM: 'system',\n ENTITY: 'entity',\n VALIDATION: 'validation',\n SANITIZATION: 'sanitization',\n API: 'api',\n CACHE: 'cache',\n AUTH: 'auth',\n DATABASE: 'database',\n FEATURE_FLAG: 'featureFlag',\n STORE: 'store',\n STORAGE: 'storage',\n NOTIFICATION: 'notification',\n} as const;\n\nexport type CoreEventScopeType = (typeof CoreEventScope)[keyof typeof CoreEventScope];\n\n// ─────────────────────────────────────────────────────────────────\n// Event Actions per Scope\n// ─────────────────────────────────────────────────────────────────\n\n/**\n * System event actions\n */\nexport const SystemEventAction = {\n INITIALIZED: 'initialized',\n READY: 'ready',\n SHUTDOWN: 'shutdown',\n ERROR: 'error',\n WARNING: 'warning',\n} as const;\n\n/**\n * Entity CRUD event actions\n */\nexport const EntityEventAction = {\n // Lifecycle (before API call)\n CREATING: 'creating',\n UPDATING: 'updating',\n PATCHING: 'patching',\n DELETING: 'deleting',\n // Completed (after API call)\n CREATED: 'created',\n UPDATED: 'updated',\n PATCHED: 'patched',\n DELETED: 'deleted',\n // Error/Complete\n ERROR: 'error',\n COMPLETE: 'complete',\n // Bulk operations\n BULK_CREATED: 'bulkCreated',\n BULK_DELETED: 'bulkDeleted',\n} as const;\n\n/**\n * Validation event actions\n */\nexport const ValidationEventAction = {\n STARTED: 'started',\n SUCCESS: 'success',\n FAILED: 'failed',\n} as const;\n\n/**\n * Sanitization event actions\n */\nexport const SanitizationEventAction = {\n STARTED: 'started',\n SUCCESS: 'success',\n FAILED: 'failed',\n} as const;\n\n/**\n * API event actions\n */\nexport const ApiEventAction = {\n REQUEST_START: 'requestStart',\n REQUEST_SUCCESS: 'requestSuccess',\n REQUEST_ERROR: 'requestError',\n RETRY: 'retry',\n TIMEOUT: 'timeout',\n} as const;\n\n/**\n * Cache event actions\n */\nexport const CacheEventAction = {\n HIT: 'hit',\n MISS: 'miss',\n SET: 'set',\n DELETE: 'delete',\n CLEAR: 'clear',\n EXPIRED: 'expired',\n ERROR: 'error',\n} as const;\n\n/**\n * Auth event actions\n */\nexport const AuthEventAction = {\n LOGIN: 'login',\n LOGOUT: 'logout',\n TOKEN_REFRESH: 'tokenRefresh',\n SESSION_EXPIRED: 'sessionExpired',\n UNAUTHORIZED: 'unauthorized',\n} as const;\n\n/**\n * Database event actions\n */\nexport const DatabaseEventAction = {\n CONNECTED: 'connected',\n DISCONNECTED: 'disconnected',\n QUERY: 'query',\n ERROR: 'error',\n TRANSACTION_START: 'transactionStart',\n TRANSACTION_COMMIT: 'transactionCommit',\n TRANSACTION_ROLLBACK: 'transactionRollback',\n} as const;\n\n/**\n * Feature flag event actions\n */\nexport const FeatureFlagEventAction = {\n CHANGED: 'changed',\n EVALUATED: 'evaluated',\n REFRESHED: 'refreshed',\n} as const;\n\n/**\n * Store event actions\n */\nexport const StoreEventAction = {\n UPDATED: 'updated',\n RESET: 'reset',\n HYDRATED: 'hydrated',\n} as const;\n\n/**\n * Storage event actions (file uploads, downloads, deletions)\n */\nexport const StorageEventAction = {\n UPLOADED: 'uploaded',\n DOWNLOADED: 'downloaded',\n DELETED: 'deleted',\n ERROR: 'error',\n HEALTH_CHECK: 'healthCheck',\n} as const;\n\n/**\n * Notification event actions (email, sms, push)\n */\nexport const NotificationEventAction = {\n SENT: 'sent',\n FAILED: 'failed',\n DELIVERED: 'delivered',\n OPENED: 'opened',\n CLICKED: 'clicked',\n ERROR: 'error',\n HEALTH_CHECK: 'healthCheck',\n} as const;\n\n// ─────────────────────────────────────────────────────────────────\n// Full Event Types (scope:action constants)\n// ─────────────────────────────────────────────────────────────────\n\n/**\n * All core event type constants\n *\n * @example\n * ```typescript\n * CoreEventManager.emit(CORE_EVENTS.ENTITY.CREATED, { entity, storeState });\n * CoreEventManager.on(CORE_EVENTS.API.REQUEST_ERROR, handleApiError);\n * ```\n */\nexport const CORE_EVENTS = {\n SYSTEM: {\n INITIALIZED: `${CoreEventScope.SYSTEM}:${SystemEventAction.INITIALIZED}`,\n READY: `${CoreEventScope.SYSTEM}:${SystemEventAction.READY}`,\n SHUTDOWN: `${CoreEventScope.SYSTEM}:${SystemEventAction.SHUTDOWN}`,\n ERROR: `${CoreEventScope.SYSTEM}:${SystemEventAction.ERROR}`,\n WARNING: `${CoreEventScope.SYSTEM}:${SystemEventAction.WARNING}`,\n },\n ENTITY: {\n CREATING: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATING}`,\n UPDATING: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATING}`,\n PATCHING: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHING}`,\n DELETING: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETING}`,\n CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATED}`,\n UPDATED: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATED}`,\n PATCHED: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHED}`,\n DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETED}`,\n ERROR: `${CoreEventScope.ENTITY}:${EntityEventAction.ERROR}`,\n COMPLETE: `${CoreEventScope.ENTITY}:${EntityEventAction.COMPLETE}`,\n BULK_CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_CREATED}`,\n BULK_DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_DELETED}`,\n },\n VALIDATION: {\n STARTED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.STARTED}`,\n SUCCESS: `${CoreEventScope.VALIDATION}:${ValidationEventAction.SUCCESS}`,\n FAILED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.FAILED}`,\n },\n SANITIZATION: {\n STARTED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.STARTED}`,\n SUCCESS: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.SUCCESS}`,\n FAILED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.FAILED}`,\n },\n API: {\n REQUEST_START: `${CoreEventScope.API}:${ApiEventAction.REQUEST_START}`,\n REQUEST_SUCCESS: `${CoreEventScope.API}:${ApiEventAction.REQUEST_SUCCESS}`,\n REQUEST_ERROR: `${CoreEventScope.API}:${ApiEventAction.REQUEST_ERROR}`,\n RETRY: `${CoreEventScope.API}:${ApiEventAction.RETRY}`,\n TIMEOUT: `${CoreEventScope.API}:${ApiEventAction.TIMEOUT}`,\n },\n CACHE: {\n HIT: `${CoreEventScope.CACHE}:${CacheEventAction.HIT}`,\n MISS: `${CoreEventScope.CACHE}:${CacheEventAction.MISS}`,\n SET: `${CoreEventScope.CACHE}:${CacheEventAction.SET}`,\n DELETE: `${CoreEventScope.CACHE}:${CacheEventAction.DELETE}`,\n CLEAR: `${CoreEventScope.CACHE}:${CacheEventAction.CLEAR}`,\n EXPIRED: `${CoreEventScope.CACHE}:${CacheEventAction.EXPIRED}`,\n ERROR: `${CoreEventScope.CACHE}:${CacheEventAction.ERROR}`,\n },\n AUTH: {\n LOGIN: `${CoreEventScope.AUTH}:${AuthEventAction.LOGIN}`,\n LOGOUT: `${CoreEventScope.AUTH}:${AuthEventAction.LOGOUT}`,\n TOKEN_REFRESH: `${CoreEventScope.AUTH}:${AuthEventAction.TOKEN_REFRESH}`,\n SESSION_EXPIRED: `${CoreEventScope.AUTH}:${AuthEventAction.SESSION_EXPIRED}`,\n UNAUTHORIZED: `${CoreEventScope.AUTH}:${AuthEventAction.UNAUTHORIZED}`,\n },\n DATABASE: {\n CONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.CONNECTED}`,\n DISCONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.DISCONNECTED}`,\n QUERY: `${CoreEventScope.DATABASE}:${DatabaseEventAction.QUERY}`,\n ERROR: `${CoreEventScope.DATABASE}:${DatabaseEventAction.ERROR}`,\n TRANSACTION_START: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_START}`,\n TRANSACTION_COMMIT: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_COMMIT}`,\n TRANSACTION_ROLLBACK: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_ROLLBACK}`,\n },\n FEATURE_FLAG: {\n CHANGED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.CHANGED}`,\n EVALUATED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.EVALUATED}`,\n REFRESHED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.REFRESHED}`,\n },\n STORE: {\n UPDATED: `${CoreEventScope.STORE}:${StoreEventAction.UPDATED}`,\n RESET: `${CoreEventScope.STORE}:${StoreEventAction.RESET}`,\n HYDRATED: `${CoreEventScope.STORE}:${StoreEventAction.HYDRATED}`,\n },\n STORAGE: {\n UPLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.UPLOADED}`,\n DOWNLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.DOWNLOADED}`,\n DELETED: `${CoreEventScope.STORAGE}:${StorageEventAction.DELETED}`,\n ERROR: `${CoreEventScope.STORAGE}:${StorageEventAction.ERROR}`,\n HEALTH_CHECK: `${CoreEventScope.STORAGE}:${StorageEventAction.HEALTH_CHECK}`,\n },\n NOTIFICATION: {\n SENT: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.SENT}`,\n FAILED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.FAILED}`,\n DELIVERED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.DELIVERED}`,\n OPENED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.OPENED}`,\n CLICKED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.CLICKED}`,\n ERROR: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.ERROR}`,\n HEALTH_CHECK: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.HEALTH_CHECK}`,\n },\n} as const;\n\n// ─────────────────────────────────────────────────────────────────\n// Event Type Union\n// ─────────────────────────────────────────────────────────────────\n\n/** All system event types */\nexport type SystemEventType = (typeof CORE_EVENTS.SYSTEM)[keyof typeof CORE_EVENTS.SYSTEM];\n\n/** All entity event types */\nexport type EntityEventType = (typeof CORE_EVENTS.ENTITY)[keyof typeof CORE_EVENTS.ENTITY];\n\n/** All validation event types */\nexport type ValidationEventType =\n (typeof CORE_EVENTS.VALIDATION)[keyof typeof CORE_EVENTS.VALIDATION];\n\n/** All sanitization event types */\nexport type SanitizationEventType =\n (typeof CORE_EVENTS.SANITIZATION)[keyof typeof CORE_EVENTS.SANITIZATION];\n\n/** All API event types */\nexport type ApiEventType = (typeof CORE_EVENTS.API)[keyof typeof CORE_EVENTS.API];\n\n/** All cache event types */\nexport type CacheEventType = (typeof CORE_EVENTS.CACHE)[keyof typeof CORE_EVENTS.CACHE];\n\n/** All auth event types */\nexport type AuthEventType = (typeof CORE_EVENTS.AUTH)[keyof typeof CORE_EVENTS.AUTH];\n\n/** All database event types */\nexport type DatabaseEventType = (typeof CORE_EVENTS.DATABASE)[keyof typeof CORE_EVENTS.DATABASE];\n\n/** All feature flag event types */\nexport type FeatureFlagEventType =\n (typeof CORE_EVENTS.FEATURE_FLAG)[keyof typeof CORE_EVENTS.FEATURE_FLAG];\n\n/** All store event types */\nexport type StoreEventType = (typeof CORE_EVENTS.STORE)[keyof typeof CORE_EVENTS.STORE];\n\n/**\n * Union of all core event types\n */\nexport type CoreEventType =\n | SystemEventType\n | EntityEventType\n | ValidationEventType\n | SanitizationEventType\n | ApiEventType\n | CacheEventType\n | AuthEventType\n | DatabaseEventType\n | FeatureFlagEventType\n | StoreEventType;\n","/**\n * Service Keys Constants\n *\n * Centralized service key constants for service registry and dependency injection.\n * Use these constants instead of string literals for type safety and consistency.\n *\n * @example\n * ```typescript\n * import { SERVICE_KEYS } from '@plyaz/types/core/services';\n *\n * class MyService {\n * static readonly serviceKey = SERVICE_KEYS.EXAMPLE;\n * }\n *\n * // Use in service registry\n * const service = ServiceRegistry.get(SERVICE_KEYS.EXAMPLE);\n * ```\n */\n\n/**\n * Keys for all available domain services .\n * These keys are used for service registration and lookup in the ServiceRegistry.\n */\nexport const SERVICE_KEYS = {\n /** Example domain service (backend) */\n EXAMPLE: 'example',\n /** Example domain service (frontend) */\n EXAMPLE_FRONTEND: 'example-frontend',\n /** Feature flags service */\n FEATURE_FLAGS: 'featureFlags',\n /** Campaign domain service */\n CAMPAIGN: 'campaign',\n /** Campaign frontend service */\n CAMPAIGN_FRONTEND: 'campaign-frontend',\n} as const;\n\n/**\n * Type for service keys.\n * Ensures only valid service keys can be used.\n */\nexport type ServiceKey = (typeof SERVICE_KEYS)[keyof typeof SERVICE_KEYS];\n\n/**\n * Array of all service keys for iteration.\n * Useful for validating service configurations or iterating over all services.\n */\nexport const ALL_SERVICE_KEYS = Object.values(SERVICE_KEYS) as ServiceKey[];\n"]}
1
+ {"version":3,"sources":["../../src/core/modules.ts","../../src/core/tables/enum.ts","../../src/core/featureFlag/enums.ts","../../src/core/featureFlag/constants.ts","../../src/core/events/enums.ts","../../src/core/domain/files/enums.ts","../../src/core/domain/files/streaming.ts","../../src/core/domain/files/schemas.ts","../../src/core/events/streaming/types.ts","../../src/core/services/keys.ts"],"names":["TABLES","SORT_DIRECTION","FEATURE_FLAG_TABLE","FEATURE_FLAG_FIELD","FEATURE_FLAG_RULE_FIELD","FEATURE_FLAG_PROVIDERS","NODE_ENVIRONMENTS","DATABASE_FIELDS","SYSTEM_USERS","EVALUATION_REASONS","FEATURE_FLAG_TYPES"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Core Module System Types\n *\n * Framework-agnostic module interface for @plyaz/core.\n * Modules implement this contract to integrate with Core.\n */\n\nimport type { DatabaseServiceInterface } from '../db/databaseService';\nimport type { HttpMethod } from '../api/config/types';\nimport type {\n Type,\n DynamicModule,\n ForwardReference,\n InjectionToken,\n OptionalFactoryDependency,\n ModuleMetadata,\n} from '@nestjs/common';\n\n// Re-export HttpMethod for convenience\nexport type { HttpMethod };\n\n/**\n * Core services available to modules\n */\nexport interface CoreServices {\n db: DatabaseServiceInterface;\n // api: ApiClientService;\n // cache: CacheService;\n // logger: LoggerService;\n env: Record<string, string | undefined>;\n}\n\n/**\n * Route handler context\n */\nexport interface CoreRouteContext {\n params: Record<string, string>;\n query: Record<string, string | string[]>;\n body: unknown;\n headers: Record<string, string>;\n services: CoreServices;\n}\n\n/**\n * Route handler function\n */\nexport type CoreRouteHandler = (ctx: CoreRouteContext) => Promise<{\n status?: number;\n body?: unknown;\n headers?: Record<string, string>;\n}>;\n\n/**\n * Route definition - framework agnostic\n */\nexport interface CoreRouteDefinition {\n method: HttpMethod;\n path: string;\n handler: CoreRouteHandler;\n middleware?: string[];\n description?: string;\n}\n\n/**\n * Module configuration schema (optional)\n */\nexport interface CoreModuleConfigSchema<T = unknown> {\n parse: (config: unknown) => T;\n safeParse: (config: unknown) => { success: boolean; data?: T; error?: Error };\n}\n\n/**\n * Service factory for creating module services\n */\nexport type CoreServiceFactory<T = unknown> = (\n services: CoreServices,\n config?: unknown\n) => T | Promise<T>;\n\n/**\n * Module lifecycle hooks\n */\nexport interface CoreModuleLifecycle {\n /**\n * Called when module is initialized\n * Use for setup, connections, etc.\n */\n onInit?(services: CoreServices): Promise<void>;\n\n /**\n * Called when module is being destroyed\n * Use for cleanup, closing connections, etc.\n */\n onDestroy?(): Promise<void>;\n\n /**\n * Called when Core is fully initialized (all modules loaded)\n */\n onReady?(services: CoreServices): Promise<void>;\n}\n\n/**\n * Core module definition - framework agnostic contract\n *\n * @example\n * ```typescript\n * const FeatureFlagModule: CoreModuleDefinition = {\n * name: 'featureFlags',\n * version: '1.0.0',\n * dependencies: ['db'],\n *\n * routes: [\n * { method: 'GET', path: '/flags', handler: listFlags },\n * { method: 'GET', path: '/flags/:key', handler: getFlag },\n * ],\n *\n * services: {\n * featureFlagService: (core) => new FeatureFlagService(core.db),\n * },\n *\n * async onInit(services) {\n * // Initialize feature flag provider\n * },\n * };\n * ```\n */\nexport interface CoreModuleDefinition<TConfig = unknown> extends CoreModuleLifecycle {\n /**\n * Unique module name (used for registration and access)\n */\n name: string;\n\n /**\n * Module version\n */\n version?: string;\n\n /**\n * Core services this module depends on\n */\n dependencies?: ('db' | 'api' | 'cache' | 'logger')[];\n\n /**\n * HTTP routes provided by this module\n */\n routes?: CoreRouteDefinition[];\n\n /**\n * Services exposed by this module\n */\n services?: Record<string, CoreServiceFactory>;\n\n /**\n * Configuration schema for validation\n */\n configSchema?: CoreModuleConfigSchema<TConfig>;\n\n /**\n * Default configuration\n */\n defaultConfig?: Partial<TConfig>;\n}\n\n/**\n * Registered module instance (after initialization)\n */\nexport interface CoreRegisteredModule<TConfig = unknown> {\n definition: CoreModuleDefinition<TConfig>;\n config: TConfig;\n services: Record<string, unknown>;\n initialized: boolean;\n}\n\n/**\n * Module with configuration (result of .forRoot())\n */\nexport interface CoreConfiguredModule<TConfig = unknown> {\n definition: CoreModuleDefinition<TConfig>;\n config: TConfig;\n}\n\n/**\n * Helper to create a module definition with forRoot pattern\n */\nexport interface CoreModuleFactory<TConfig = unknown> {\n /**\n * Module definition\n */\n definition: CoreModuleDefinition<TConfig>;\n\n /**\n * Configure module with options\n */\n forRoot(config?: Partial<TConfig>): CoreConfiguredModule<TConfig>;\n\n /**\n * Use module with default config\n */\n default: CoreConfiguredModule<TConfig>;\n}\n\n/**\n * Supported HTTP frameworks for server mode\n */\nexport type CoreFrameworkType =\n | 'node' // Plain Node.js http module\n | 'express' // Express.js\n | 'nestjs' // NestJS\n | 'nextjs'; // Next.js API routes (SSR/Edge)\n\n/**\n * Server configuration\n */\nexport interface CoreServerConfig {\n port: number;\n host?: string;\n framework?: CoreFrameworkType;\n prefix?: string; // API prefix like '/api/v1'\n cors?: {\n enabled: boolean;\n origins?: string[];\n };\n}\n\n/**\n * Framework adapter interface\n */\nexport interface CoreFrameworkAdapter {\n /**\n * Framework name\n */\n name: CoreFrameworkType;\n\n /**\n * Register routes from modules\n */\n registerRoutes(\n routes: Array<{ moduleName: string; routes: CoreRouteDefinition[] }>,\n services: CoreServices\n ): void | Promise<void>;\n\n /**\n * Start the server\n */\n start(config: CoreServerConfig): Promise<void>;\n\n /**\n * Stop the server\n */\n stop(): Promise<void>;\n\n /**\n * Get the underlying framework instance (express app, fastify instance, etc.)\n */\n getInstance(): unknown;\n}\n\n/**\n * Adapter factory function\n */\nexport type CoreAdapterFactory = () => CoreFrameworkAdapter;\n\n/**\n * Runtime environment detection\n */\nexport type CoreRuntimeEnvironment =\n | 'node' // Plain Node.js\n | 'nestjs' // NestJS backend\n | 'express' // Express.js\n | 'nuxt' // Nuxt.js (Vue SSR)\n | 'nextjs' // Next.js (React SSR)\n | 'browser' // Browser/SPA\n | 'edge' // Edge runtime (Cloudflare, Vercel Edge)\n | 'deno' // Deno runtime\n | 'bun' // Bun runtime\n | 'unknown';\n\n/**\n * Runtime context type\n */\nexport type CoreRuntimeContext = 'backend' | 'frontend' | 'universal';\n\n/**\n * Backend runtimes - always server-side\n */\nexport const BACKEND_RUNTIMES: readonly CoreRuntimeEnvironment[] = [\n 'node',\n 'nestjs',\n 'express',\n 'deno',\n 'bun',\n] as const;\n\n/**\n * Frontend runtimes - always client-side\n */\nexport const FRONTEND_RUNTIMES: readonly CoreRuntimeEnvironment[] = ['browser'] as const;\n\n/**\n * Universal runtimes - can be either (SSR)\n */\nexport const UNIVERSAL_RUNTIMES: readonly CoreRuntimeEnvironment[] = [\n 'nextjs',\n 'nuxt',\n 'edge',\n] as const;\n\n// ============================================================================\n// Next.js Handler Types\n// ============================================================================\n\n/**\n * Handler context for Next.js API routes\n * Provides services and parsed request data\n */\nexport interface CoreNextJsHandlerContext {\n /** Database service */\n db: unknown; // DbService - imported dynamically to avoid circular deps\n /** URL parameters (from dynamic routes like [id]) */\n params: Record<string, string>;\n /** Query string parameters */\n query: Record<string, string | string[]>;\n /** Request body (parsed JSON) */\n body: unknown;\n /** Request headers */\n headers: Record<string, string>;\n /** Original Request object */\n request: Request;\n}\n\n/**\n * Handler return type for Next.js API routes\n */\nexport interface CoreNextJsHandlerResult {\n /** Response body (will be JSON serialized) */\n [key: string]: unknown;\n /** HTTP status code (default: 200) */\n status?: number;\n /** Response headers */\n headers?: Record<string, string>;\n}\n\n/**\n * Handler function type for Next.js API routes\n */\nexport type CoreNextJsHandler = (\n ctx: CoreNextJsHandlerContext\n) => Promise<CoreNextJsHandlerResult | Response>;\n\n/**\n * Options for Next.js createHandler\n */\nexport interface CoreNextJsHandlerOptions {\n /** Core initialization options (used on first request) */\n coreOptions?: Record<string, unknown>;\n}\n\n// ============================================================================\n// Core Initialization Types\n// ============================================================================\n\n/**\n * Core environment variables\n */\nexport interface CoreEnvVars {\n DATABASE_URL?: string;\n SUPABASE_URL?: string;\n SUPABASE_SERVICE_ROLE_KEY?: string;\n SUPABASE_ANON_PUBLIC_KEY?: string;\n ENCRYPTION_KEY?: string;\n API_BASE_URL?: string;\n API_TIMEOUT?: string;\n NODE_ENV?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Application environment type\n */\nexport type CoreAppEnvironment = 'development' | 'staging' | 'production' | 'test';\n\n/**\n * API client initialization options\n * Extends ApiClientOptions with Core-specific settings\n */\nexport interface CoreApiInitOptions {\n /** Environment for API client configuration */\n env?: CoreAppEnvironment;\n /** Set this client as the default */\n setAsDefault?: boolean;\n /** Base URL for API requests */\n baseURL?: string;\n /** Request timeout in milliseconds */\n timeout?: number;\n /** Additional options passed to ApiClientService */\n [key: string]: unknown;\n}\n\n/**\n * Core initialization options\n */\nexport interface CoreInitOptions<\n TDbConfig = unknown,\n TApiConfig = CoreApiInitOptions,\n TCacheConfig = unknown,\n TStorageConfig = unknown,\n TNotificationsConfig = unknown,\n> {\n /** Path to .env file */\n envPath?: string;\n /** Global application environment */\n environment?: CoreAppEnvironment;\n /** Application context (webapp, backoffice, mobile, etc.) */\n appContext?: CoreAppContext;\n /** Explicit environment variables */\n env?: CoreEnvVars;\n /** Database configuration */\n db?: TDbConfig;\n /** API client configuration */\n api?: TApiConfig;\n /** Cache configuration */\n cache?: TCacheConfig;\n /** Storage configuration (backend only) */\n storage?: TStorageConfig;\n /** Notifications configuration (backend only) */\n notifications?: TNotificationsConfig;\n /** Skip database initialization */\n skipDb?: boolean;\n /** Skip API client initialization */\n skipApi?: boolean;\n /** Skip cache initialization */\n skipCache?: boolean;\n /** Skip storage initialization */\n skipStorage?: boolean;\n /** Skip notifications initialization */\n skipNotifications?: boolean;\n /** Enable verbose logging */\n verbose?: boolean;\n /**\n * Logger configuration for Core's internal PackageLogger.\n * - 'pino': JSON structured logs (default)\n * - 'console': Human-readable output (for development)\n */\n logger?: {\n transport?: 'pino' | 'console';\n };\n}\n\n/**\n * Core initialization result\n */\nexport interface CoreServicesResult<\n TDb = unknown,\n TApi = unknown,\n TCache = unknown,\n TStorage = unknown,\n TNotifications = unknown,\n> {\n db: TDb | null;\n api: TApi | null;\n cache: TCache | null;\n storage: TStorage | null;\n notifications: TNotifications | null;\n env: CoreEnvVars;\n runtime: CoreRuntimeEnvironment;\n appContext: CoreAppContext;\n}\n\n// ============================================================================\n// NestJS Module Types\n// ============================================================================\n\n/**\n * Core module options for NestJS\n */\nexport interface CoreNestJsModuleOptions {\n /** Path to .env file */\n envPath?: string;\n /** Database configuration */\n db?: Record<string, unknown>;\n /** Whether to make Core services globally available */\n isGlobal?: boolean;\n}\n\n/**\n * Async options for NestJS CoreModule (adapters/nestjs.ts pattern)\n * Uses NestJS-specific types for proper DI integration.\n */\nexport interface CoreNestJsModuleAsyncOptions {\n /** Modules to import for dependency resolution */\n imports?: Array<Type<unknown> | DynamicModule | Promise<DynamicModule> | ForwardReference>;\n /** Tokens to inject into the factory */\n inject?: Array<InjectionToken | OptionalFactoryDependency>;\n /** Factory function to create module options */\n useFactory: (...args: unknown[]) => CoreNestJsModuleOptions | Promise<CoreNestJsModuleOptions>;\n /** Whether to make Core services globally available */\n isGlobal?: boolean;\n}\n\n/**\n * Async options for NestJS CoreModule (init/nestjs pattern)\n * Extends ModuleMetadata for full NestJS integration.\n */\nexport interface CoreNestJsCoreModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {\n /** Factory function to create init options */\n useFactory: (...args: unknown[]) => CoreInitOptions | Promise<CoreInitOptions>;\n /** Tokens to inject into the factory */\n inject?: Array<Type<unknown> | string | symbol>;\n}\n\n// ============================================================================\n// App Context Types\n// ============================================================================\n\n/**\n * Application context type\n *\n * Identifies which type of application is running.\n * Different apps may have different feature flags, API endpoints, or UI behaviors.\n */\nexport type CoreAppContext =\n | 'webapp' // Main web application\n | 'backoffice' // Admin/back-office portal\n | 'mobile' // Mobile apps (React Native, Capacitor, etc.)\n | 'microapp' // Embedded micro frontends\n | 'cli'; // CLI tools\n\n/**\n * App context constants for type-safe comparisons\n */\nexport const APP_CONTEXTS: readonly CoreAppContext[] = [\n 'webapp',\n 'backoffice',\n 'mobile',\n 'microapp',\n 'cli',\n] as const;\n\n// ============================================================================\n// Domain Service Types\n// ============================================================================\n\n/**\n * Service runtime compatibility\n *\n * Declares which runtimes a service can execute on.\n * Services can be restricted to specific runtimes for security\n * (e.g., backend-only services should never be bundled for frontend).\n */\nexport type CoreServiceRuntime =\n | 'frontend' // Browser, React, Vue, etc. (no DB access)\n | 'backend' // Node.js, NestJS, Express (has DB access)\n | 'universal'; // Works everywhere (SSR, Edge)\n\n/**\n * Domain service configuration\n *\n * Declares service metadata including runtime compatibility\n * and feature flag requirements.\n *\n * @example\n * ```typescript\n * class CampaignDomainService {\n * static readonly config: CoreDomainServiceConfig = {\n * name: 'CampaignDomainService',\n * runtimes: ['frontend', 'backend'],\n * requiresFeatureFlag: 'campaigns:enabled',\n * };\n * }\n * ```\n */\nexport interface CoreDomainServiceConfig {\n /** Service name for logging and debugging */\n name: string;\n\n /** Runtimes this service can run on */\n runtimes: readonly CoreServiceRuntime[];\n\n /** Feature flag required to use this service (optional) */\n requiresFeatureFlag?: string;\n\n /** App contexts this service is available in (optional, all if not specified) */\n appContexts?: readonly CoreAppContext[];\n}\n","export enum TABLES {\n User = 'users',\n}\n","/**\n * Sort direction for database queries\n */\nexport enum SORT_DIRECTION {\n Asc = 'asc',\n Desc = 'desc',\n}\n\n/**\n * Feature flag database table names enumeration\n */\nexport enum FEATURE_FLAG_TABLE {\n FeatureFlags = 'feature_flags',\n FeatureFlagRules = 'feature_flag_rules',\n FeatureFlagEvaluations = 'feature_flag_evaluations',\n FeatureFlagOverrides = 'feature_flag_overrides',\n}\n\n/**\n * Database field names for feature flags table\n */\nexport enum FEATURE_FLAG_FIELD {\n Key = 'key',\n Name = 'name',\n Value = 'value',\n Type = 'type',\n IsEnabled = 'is_enabled',\n Environments = 'environments',\n Description = 'description',\n CreatedAt = 'created_at',\n UpdatedAt = 'updated_at',\n}\n\n/**\n * Database field names for feature flag rules table\n */\nexport enum FEATURE_FLAG_RULE_FIELD {\n Id = 'id',\n FlagKey = 'flag_key',\n Name = 'name',\n Conditions = 'conditions',\n Value = 'value',\n Priority = 'priority',\n IsEnabled = 'is_enabled',\n}\n\n/**\n * Feature Flag Provider Types\n */\nexport enum FEATURE_FLAG_PROVIDERS {\n MEMORY = 'memory',\n FILE = 'file',\n REDIS = 'redis',\n API = 'api',\n DATABASE = 'database',\n}\n\n/**\n * Node Environment Types\n */\nexport enum NODE_ENVIRONMENTS {\n DEVELOPMENT = 'development',\n PRODUCTION = 'production',\n STAGING = 'staging',\n TEST = 'test',\n}\n\n/**\n * Database Field Names\n */\nexport enum DATABASE_FIELDS {\n Key = 'key',\n FlagKey = 'flag_key',\n UserId = 'user_id',\n IsEnabled = 'is_enabled',\n CreatedAt = 'created_at',\n UpdatedAt = 'updated_at',\n ExpiresAt = 'expires_at',\n EvaluatedAt = 'evaluated_at',\n}\n\n/**\n * System User Constants\n */\nexport enum SYSTEM_USERS {\n SYSTEM = 'system',\n}\n\n/**\n * Evaluation Reasons\n * Must match database enum: evaluation_reason\n * Used when logging feature flag evaluations to audit table\n */\nexport enum EVALUATION_REASONS {\n Default = 'default', // Default flag value used\n RuleMatch = 'rule_match', // Matched a targeting rule\n Rollout = 'rollout', // Matched rollout percentage\n Override = 'override', // User-specific override applied\n Disabled = 'disabled', // Flag is disabled\n}\n\n/**\n * Feature Flag Types\n */\nexport enum FEATURE_FLAG_TYPES {\n BOOLEAN = 'boolean',\n STRING = 'string',\n NUMBER = 'number',\n OBJECT = 'object',\n}\n","/**\n * Default Configuration Values\n */\nexport const FEATURE_FLAG_DEFAULTS = {\n CACHE_TTL: 300,\n REFRESH_INTERVAL: 0,\n POOL_SIZE: 10,\n TIMEOUT: 30000,\n TABLE_NAME: 'feature_flags',\n} as const;\n\n/**\n * Metadata keys used for attaching feature flag information\n * to route handlers via decorators.\n */\nexport const FEATURE_FLAG_METADATA = {\n FLAG_CHECK: 'plyaz:feature_flag_check', // Single feature flag check\n RESOLVE_FLAGS: 'plyaz:resolve_feature_flags', // Multiple flags resolved at once\n};\n","/**\n * Core Event Enums and Constants\n *\n * Type-safe event definitions for the CoreEventManager.\n * All event types follow the pattern: SCOPE:ACTION\n *\n * @example\n * ```typescript\n * import { CoreEventType, CORE_EVENTS } from '@plyaz/types/core';\n *\n * // Use constants for type-safe event emission\n * CoreEventManager.emit(CORE_EVENTS.ENTITY.CREATED, payload);\n *\n * // Subscribe with typed payloads\n * CoreEventManager.on<EntityCreatedPayload>(CORE_EVENTS.ENTITY.CREATED, handler);\n * ```\n */\n\n// ─────────────────────────────────────────────────────────────────\n// Event Scopes\n// ─────────────────────────────────────────────────────────────────\n\n/**\n * Event scope categories\n */\nexport const CoreEventScope = {\n SYSTEM: 'system',\n ENTITY: 'entity',\n VALIDATION: 'validation',\n SANITIZATION: 'sanitization',\n API: 'api',\n CACHE: 'cache',\n AUTH: 'auth',\n DATABASE: 'database',\n FEATURE_FLAG: 'featureFlag',\n STORE: 'store',\n STORAGE: 'storage',\n NOTIFICATION: 'notification',\n} as const;\n\nexport type CoreEventScopeType = (typeof CoreEventScope)[keyof typeof CoreEventScope];\n\n// ─────────────────────────────────────────────────────────────────\n// Event Actions per Scope\n// ─────────────────────────────────────────────────────────────────\n\n/**\n * System event actions\n */\nexport const SystemEventAction = {\n INITIALIZED: 'initialized',\n READY: 'ready',\n SHUTDOWN: 'shutdown',\n ERROR: 'error',\n WARNING: 'warning',\n} as const;\n\n/**\n * Entity CRUD event actions\n */\nexport const EntityEventAction = {\n // Lifecycle (before API call)\n CREATING: 'creating',\n UPDATING: 'updating',\n PATCHING: 'patching',\n DELETING: 'deleting',\n // Completed (after API call)\n CREATED: 'created',\n UPDATED: 'updated',\n PATCHED: 'patched',\n DELETED: 'deleted',\n // Error/Complete\n ERROR: 'error',\n COMPLETE: 'complete',\n // Bulk operations\n BULK_CREATED: 'bulkCreated',\n BULK_DELETED: 'bulkDeleted',\n} as const;\n\n/**\n * Validation event actions\n */\nexport const ValidationEventAction = {\n STARTED: 'started',\n SUCCESS: 'success',\n FAILED: 'failed',\n} as const;\n\n/**\n * Sanitization event actions\n */\nexport const SanitizationEventAction = {\n STARTED: 'started',\n SUCCESS: 'success',\n FAILED: 'failed',\n} as const;\n\n/**\n * API event actions\n */\nexport const ApiEventAction = {\n REQUEST_START: 'requestStart',\n REQUEST_SUCCESS: 'requestSuccess',\n REQUEST_ERROR: 'requestError',\n RETRY: 'retry',\n TIMEOUT: 'timeout',\n} as const;\n\n/**\n * Cache event actions\n */\nexport const CacheEventAction = {\n HIT: 'hit',\n MISS: 'miss',\n SET: 'set',\n DELETE: 'delete',\n CLEAR: 'clear',\n EXPIRED: 'expired',\n ERROR: 'error',\n} as const;\n\n/**\n * Auth event actions\n */\nexport const AuthEventAction = {\n LOGIN: 'login',\n LOGOUT: 'logout',\n TOKEN_REFRESH: 'tokenRefresh',\n SESSION_EXPIRED: 'sessionExpired',\n UNAUTHORIZED: 'unauthorized',\n} as const;\n\n/**\n * Database event actions\n */\nexport const DatabaseEventAction = {\n CONNECTED: 'connected',\n DISCONNECTED: 'disconnected',\n QUERY: 'query',\n ERROR: 'error',\n TRANSACTION_START: 'transactionStart',\n TRANSACTION_COMMIT: 'transactionCommit',\n TRANSACTION_ROLLBACK: 'transactionRollback',\n} as const;\n\n/**\n * Feature flag event actions\n */\nexport const FeatureFlagEventAction = {\n CHANGED: 'changed',\n EVALUATED: 'evaluated',\n REFRESHED: 'refreshed',\n} as const;\n\n/**\n * Store event actions\n */\nexport const StoreEventAction = {\n UPDATED: 'updated',\n RESET: 'reset',\n HYDRATED: 'hydrated',\n} as const;\n\n/**\n * Storage event actions (file uploads, downloads, deletions)\n */\nexport const StorageEventAction = {\n UPLOADED: 'uploaded',\n DOWNLOADED: 'downloaded',\n DELETED: 'deleted',\n ERROR: 'error',\n HEALTH_CHECK: 'healthCheck',\n} as const;\n\n/**\n * Notification event actions (email, sms, push)\n */\nexport const NotificationEventAction = {\n SENT: 'sent',\n FAILED: 'failed',\n DELIVERED: 'delivered',\n OPENED: 'opened',\n CLICKED: 'clicked',\n ERROR: 'error',\n HEALTH_CHECK: 'healthCheck',\n} as const;\n\n// ─────────────────────────────────────────────────────────────────\n// Full Event Types (scope:action constants)\n// ─────────────────────────────────────────────────────────────────\n\n/**\n * All core event type constants\n *\n * @example\n * ```typescript\n * CoreEventManager.emit(CORE_EVENTS.ENTITY.CREATED, { entity, storeState });\n * CoreEventManager.on(CORE_EVENTS.API.REQUEST_ERROR, handleApiError);\n * ```\n */\nexport const CORE_EVENTS = {\n SYSTEM: {\n INITIALIZED: `${CoreEventScope.SYSTEM}:${SystemEventAction.INITIALIZED}`,\n READY: `${CoreEventScope.SYSTEM}:${SystemEventAction.READY}`,\n SHUTDOWN: `${CoreEventScope.SYSTEM}:${SystemEventAction.SHUTDOWN}`,\n ERROR: `${CoreEventScope.SYSTEM}:${SystemEventAction.ERROR}`,\n WARNING: `${CoreEventScope.SYSTEM}:${SystemEventAction.WARNING}`,\n },\n ENTITY: {\n CREATING: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATING}`,\n UPDATING: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATING}`,\n PATCHING: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHING}`,\n DELETING: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETING}`,\n CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATED}`,\n UPDATED: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATED}`,\n PATCHED: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHED}`,\n DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETED}`,\n ERROR: `${CoreEventScope.ENTITY}:${EntityEventAction.ERROR}`,\n COMPLETE: `${CoreEventScope.ENTITY}:${EntityEventAction.COMPLETE}`,\n BULK_CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_CREATED}`,\n BULK_DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_DELETED}`,\n },\n VALIDATION: {\n STARTED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.STARTED}`,\n SUCCESS: `${CoreEventScope.VALIDATION}:${ValidationEventAction.SUCCESS}`,\n FAILED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.FAILED}`,\n },\n SANITIZATION: {\n STARTED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.STARTED}`,\n SUCCESS: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.SUCCESS}`,\n FAILED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.FAILED}`,\n },\n API: {\n REQUEST_START: `${CoreEventScope.API}:${ApiEventAction.REQUEST_START}`,\n REQUEST_SUCCESS: `${CoreEventScope.API}:${ApiEventAction.REQUEST_SUCCESS}`,\n REQUEST_ERROR: `${CoreEventScope.API}:${ApiEventAction.REQUEST_ERROR}`,\n RETRY: `${CoreEventScope.API}:${ApiEventAction.RETRY}`,\n TIMEOUT: `${CoreEventScope.API}:${ApiEventAction.TIMEOUT}`,\n },\n CACHE: {\n HIT: `${CoreEventScope.CACHE}:${CacheEventAction.HIT}`,\n MISS: `${CoreEventScope.CACHE}:${CacheEventAction.MISS}`,\n SET: `${CoreEventScope.CACHE}:${CacheEventAction.SET}`,\n DELETE: `${CoreEventScope.CACHE}:${CacheEventAction.DELETE}`,\n CLEAR: `${CoreEventScope.CACHE}:${CacheEventAction.CLEAR}`,\n EXPIRED: `${CoreEventScope.CACHE}:${CacheEventAction.EXPIRED}`,\n ERROR: `${CoreEventScope.CACHE}:${CacheEventAction.ERROR}`,\n },\n AUTH: {\n LOGIN: `${CoreEventScope.AUTH}:${AuthEventAction.LOGIN}`,\n LOGOUT: `${CoreEventScope.AUTH}:${AuthEventAction.LOGOUT}`,\n TOKEN_REFRESH: `${CoreEventScope.AUTH}:${AuthEventAction.TOKEN_REFRESH}`,\n SESSION_EXPIRED: `${CoreEventScope.AUTH}:${AuthEventAction.SESSION_EXPIRED}`,\n UNAUTHORIZED: `${CoreEventScope.AUTH}:${AuthEventAction.UNAUTHORIZED}`,\n },\n DATABASE: {\n CONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.CONNECTED}`,\n DISCONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.DISCONNECTED}`,\n QUERY: `${CoreEventScope.DATABASE}:${DatabaseEventAction.QUERY}`,\n ERROR: `${CoreEventScope.DATABASE}:${DatabaseEventAction.ERROR}`,\n TRANSACTION_START: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_START}`,\n TRANSACTION_COMMIT: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_COMMIT}`,\n TRANSACTION_ROLLBACK: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_ROLLBACK}`,\n },\n FEATURE_FLAG: {\n CHANGED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.CHANGED}`,\n EVALUATED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.EVALUATED}`,\n REFRESHED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.REFRESHED}`,\n },\n STORE: {\n UPDATED: `${CoreEventScope.STORE}:${StoreEventAction.UPDATED}`,\n RESET: `${CoreEventScope.STORE}:${StoreEventAction.RESET}`,\n HYDRATED: `${CoreEventScope.STORE}:${StoreEventAction.HYDRATED}`,\n },\n STORAGE: {\n UPLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.UPLOADED}`,\n DOWNLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.DOWNLOADED}`,\n DELETED: `${CoreEventScope.STORAGE}:${StorageEventAction.DELETED}`,\n ERROR: `${CoreEventScope.STORAGE}:${StorageEventAction.ERROR}`,\n HEALTH_CHECK: `${CoreEventScope.STORAGE}:${StorageEventAction.HEALTH_CHECK}`,\n },\n NOTIFICATION: {\n SENT: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.SENT}`,\n FAILED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.FAILED}`,\n DELIVERED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.DELIVERED}`,\n OPENED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.OPENED}`,\n CLICKED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.CLICKED}`,\n ERROR: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.ERROR}`,\n HEALTH_CHECK: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.HEALTH_CHECK}`,\n },\n} as const;\n\n// ─────────────────────────────────────────────────────────────────\n// Event Type Union\n// ─────────────────────────────────────────────────────────────────\n\n/** All system event types */\nexport type SystemEventType = (typeof CORE_EVENTS.SYSTEM)[keyof typeof CORE_EVENTS.SYSTEM];\n\n/** All entity event types */\nexport type EntityEventType = (typeof CORE_EVENTS.ENTITY)[keyof typeof CORE_EVENTS.ENTITY];\n\n/** All validation event types */\nexport type ValidationEventType =\n (typeof CORE_EVENTS.VALIDATION)[keyof typeof CORE_EVENTS.VALIDATION];\n\n/** All sanitization event types */\nexport type SanitizationEventType =\n (typeof CORE_EVENTS.SANITIZATION)[keyof typeof CORE_EVENTS.SANITIZATION];\n\n/** All API event types */\nexport type ApiEventType = (typeof CORE_EVENTS.API)[keyof typeof CORE_EVENTS.API];\n\n/** All cache event types */\nexport type CacheEventType = (typeof CORE_EVENTS.CACHE)[keyof typeof CORE_EVENTS.CACHE];\n\n/** All auth event types */\nexport type AuthEventType = (typeof CORE_EVENTS.AUTH)[keyof typeof CORE_EVENTS.AUTH];\n\n/** All database event types */\nexport type DatabaseEventType = (typeof CORE_EVENTS.DATABASE)[keyof typeof CORE_EVENTS.DATABASE];\n\n/** All feature flag event types */\nexport type FeatureFlagEventType =\n (typeof CORE_EVENTS.FEATURE_FLAG)[keyof typeof CORE_EVENTS.FEATURE_FLAG];\n\n/** All store event types */\nexport type StoreEventType = (typeof CORE_EVENTS.STORE)[keyof typeof CORE_EVENTS.STORE];\n\n/**\n * Union of all core event types\n */\nexport type CoreEventType =\n | SystemEventType\n | EntityEventType\n | ValidationEventType\n | SanitizationEventType\n | ApiEventType\n | CacheEventType\n | AuthEventType\n | DatabaseEventType\n | FeatureFlagEventType\n | StoreEventType;\n","/**\n * Files Domain Enums and Constants\n *\n * Runtime constants for files/media operations.\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// System Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * System user UUID for uploads without user context.\n * Used for:\n * - Generated documents (no auth context)\n * - System-initiated uploads\n * - Background jobs\n *\n * Must be a valid UUID as media.user_id has FK constraint to users table.\n * This UUID should exist in the users table or FK checks should be disabled.\n */\nexport const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// File Type Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * File types supported by the DB ENUM\n * Use these when creating records - 'OTHER' is NOT in the DB ENUM\n */\nexport const FILE_TYPES = {\n IMAGE: 'IMAGE',\n VIDEO: 'VIDEO',\n AUDIO: 'AUDIO',\n DOCUMENT: 'DOCUMENT',\n} as const;\n\nexport type FileTypeValue = (typeof FILE_TYPES)[keyof typeof FILE_TYPES];\n\n/**\n * Access levels for files\n */\nexport const FILE_ACCESS_LEVELS = {\n PUBLIC: 'public',\n PRIVATE: 'private',\n PROTECTED: 'protected',\n} as const;\n\nexport type FileAccessLevelValue = (typeof FILE_ACCESS_LEVELS)[keyof typeof FILE_ACCESS_LEVELS];\n","/**\n * Files Domain Streaming Types\n *\n * Stream message types specific to the files domain.\n * These extend from existing storage types and are merged into global streaming types.\n *\n * Architecture:\n * - FilesStreamProgressData extends UploadProgressEvent (from storage)\n * - Constants (FILES_STREAM_*) are domain-specific\n * - Global types in @plyaz/types/core/events/streaming merge these with other domains\n */\n\nimport type { UploadProgressEvent } from '../../../storage';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Files Stream Message Types (Constants)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Message type categories specific to files domain.\n * These get merged into global STREAM_MESSAGE_TYPE.\n */\nexport const FILES_STREAM_MESSAGE_TYPE = {\n PROGRESS: 'progress',\n STATUS: 'status',\n ERROR: 'error',\n} as const;\n\nexport type FilesStreamMessageType =\n (typeof FILES_STREAM_MESSAGE_TYPE)[keyof typeof FILES_STREAM_MESSAGE_TYPE];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Files Stream Message Subtypes (Constants)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Stream message subtypes for files domain.\n * Defines the specific operations that can be streamed.\n */\nexport const FILES_STREAM_SUBTYPE = {\n UPLOAD: 'upload',\n DOWNLOAD: 'download',\n GENERATE: 'generate',\n} as const;\n\nexport type FilesStreamSubtype = (typeof FILES_STREAM_SUBTYPE)[keyof typeof FILES_STREAM_SUBTYPE];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Files Stream Progress Status (Constants)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Progress status values for files streaming operations.\n * Aligned with storage UPLOAD_STATUS enum values.\n */\nexport const FILES_STREAM_PROGRESS_STATUS = {\n PENDING: 'pending',\n UPLOADING: 'uploading',\n DOWNLOADING: 'downloading',\n PROCESSING: 'processing',\n GENERATING: 'generating',\n COMPLETED: 'completed',\n FAILED: 'failed',\n CANCELLED: 'cancelled',\n} as const;\n\nexport type FilesStreamProgressStatus =\n (typeof FILES_STREAM_PROGRESS_STATUS)[keyof typeof FILES_STREAM_PROGRESS_STATUS];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Files Stream Event Names (Constants)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * SSE/WebSocket event names for files domain.\n * These map to the `event` field in StreamMessage.\n */\nexport const FILES_STREAM_EVENT = {\n // Upload events\n UPLOAD_PROGRESS: 'upload:progress',\n UPLOAD_COMPLETED: 'upload:completed',\n UPLOAD_FAILED: 'upload:failed',\n UPLOAD_CANCELLED: 'upload:cancelled',\n // Download events\n DOWNLOAD_PROGRESS: 'download:progress',\n DOWNLOAD_COMPLETED: 'download:completed',\n DOWNLOAD_FAILED: 'download:failed',\n DOWNLOAD_CANCELLED: 'download:cancelled',\n // Generation events\n GENERATE_PROGRESS: 'generate:progress',\n GENERATE_COMPLETED: 'generate:completed',\n GENERATE_FAILED: 'generate:failed',\n} as const;\n\nexport type FilesStreamEventName = (typeof FILES_STREAM_EVENT)[keyof typeof FILES_STREAM_EVENT];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Files Stream Channel Patterns (Constants)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Channel prefixes for files domain subscriptions.\n * Used for per-resource channels (upload:fileId, download:fileId, etc.)\n */\nexport const FILES_STREAM_CHANNEL_PREFIX = {\n UPLOAD: 'upload:',\n DOWNLOAD: 'download:',\n GENERATE: 'generate:',\n} as const;\n\nexport type FilesStreamChannelPrefix =\n (typeof FILES_STREAM_CHANNEL_PREFIX)[keyof typeof FILES_STREAM_CHANNEL_PREFIX];\n\n/**\n * Broadcast channels for files domain (user-scoped).\n * Used for subscribing to all events of a type.\n */\nexport const FILES_STREAM_BROADCAST_CHANNEL = {\n UPLOADS: 'uploads',\n DOWNLOADS: 'downloads',\n GENERATIONS: 'generations',\n} as const;\n\nexport type FilesStreamBroadcastChannel =\n (typeof FILES_STREAM_BROADCAST_CHANNEL)[keyof typeof FILES_STREAM_BROADCAST_CHANNEL];\n\n/**\n * All files stream channels (prefixes + broadcast).\n */\nexport const FILES_STREAM_CHANNEL = {\n // Prefixes (for building per-resource channels)\n PREFIX: FILES_STREAM_CHANNEL_PREFIX,\n // Broadcast channels\n BROADCAST: FILES_STREAM_BROADCAST_CHANNEL,\n} as const;\n\n/**\n * Channel patterns for files domain subscriptions.\n *\n * - `upload:{fileId}` - Per-file upload progress\n * - `download:{fileId}` - Per-file download progress\n * - `generate:{templateId}` - Per-template generation progress\n * - `uploads` - All uploads for current user\n * - `downloads` - All downloads for current user\n * - `generations` - All generations for current user\n */\nexport type FilesStreamChannel =\n | `upload:${string}`\n | `download:${string}`\n | `generate:${string}`\n | FilesStreamBroadcastChannel;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Files Stream Progress Data\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Base progress data extending storage's UploadProgressEvent.\n * Used for upload progress streaming.\n */\nexport interface FilesUploadStreamProgress extends UploadProgressEvent {\n /** Current status */\n status: FilesStreamProgressStatus;\n /** Error message (if status is 'failed') */\n error?: string;\n}\n\n/**\n * Download progress data.\n * Similar to upload but for downloads.\n */\nexport interface FilesDownloadStreamProgress {\n /** File ID */\n fileId: string;\n /** Filename */\n filename: string;\n /** Bytes downloaded */\n loaded: number;\n /** Total bytes */\n total: number;\n /** Progress percentage (0-100) */\n percentage: number;\n /** Download speed in bytes/second */\n speed?: number;\n /** Estimated time remaining in seconds */\n estimatedTimeRemaining?: number;\n /** Current status */\n status: FilesStreamProgressStatus;\n /** Error message (if status is 'failed') */\n error?: string;\n}\n\n/**\n * Document generation progress data.\n */\nexport interface FilesGenerateStreamProgress {\n /** Template ID being generated */\n templateId: string;\n /** Progress percentage (0-100) */\n percentage: number;\n /** Current status */\n status: FilesStreamProgressStatus;\n /** Error message (if status is 'failed') */\n error?: string;\n /** Output filename (when completed) */\n outputFilename?: string;\n /** Output file ID (when completed) */\n outputFileId?: string;\n}\n\n/**\n * Union of all files stream progress data types.\n * Use this for generic handling of any files progress message.\n */\nexport type FilesStreamProgressData =\n | FilesUploadStreamProgress\n | FilesDownloadStreamProgress\n | FilesGenerateStreamProgress;\n","/**\n * Files Domain Schemas\n *\n * Zod validation schemas for files/media operations.\n * Single source of truth - types are inferred from schemas.\n *\n * Used by:\n * - FilesValidator in @plyaz/core for validation\n * - FilesRepository for type safety\n * - FilesMapper for transformations\n */\n\nimport { z } from 'zod';\nimport { SYSTEM_USER_ID } from './enums';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// File Type Schemas\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Media type enum - matches media.type DB ENUM\n * Note: DB only has IMAGE, VIDEO, AUDIO, DOCUMENT (no OTHER)\n * Use this for DB operations and validation\n */\nexport const MediaTypeSchema = z.enum(['IMAGE', 'VIDEO', 'AUDIO', 'DOCUMENT']);\nexport type MediaType = z.infer<typeof MediaTypeSchema>;\n\n/**\n * File type enum - for domain layer (includes OTHER for unknown types)\n * Use this for domain entities and frontend display.\n * Note: OTHER is not in the DB ENUM, mapper should convert to DOCUMENT for DB ops.\n */\nexport const FileTypeSchema = z.enum(['IMAGE', 'VIDEO', 'DOCUMENT', 'AUDIO', 'OTHER']);\nexport type FileType = z.infer<typeof FileTypeSchema>;\n\n/**\n * Access level schema - matches DB constraints\n */\nexport const MediaAccessLevelSchema = z.enum(['public', 'private', 'protected']).nullable();\nexport type MediaAccessLevel = z.infer<typeof MediaAccessLevelSchema>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Database Row Schema (Full media table row)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Full media database row schema\n * Includes all fields including auto-generated ones\n * Used by FilesRepository for query results\n */\nexport const FilesDatabaseRowSchema = z.object({\n // Auto-generated fields\n id: z.string().uuid(),\n created_at: z.string(),\n updated_at: z.string(),\n deleted_at: z.string().nullable(),\n\n // Required fields\n user_id: z.string().uuid(),\n type: z.string(), // String in DB, validated as MediaType on create\n filename: z.string(),\n original_filename: z.string(),\n mime_type: z.string(),\n file_size: z.union([z.bigint(), z.number()]),\n storage_path: z.string(),\n\n // Optional fields\n cdn_url: z.string().nullable(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n duration: z.number().nullable(),\n is_virus_scanned: z.boolean(),\n virus_scan_result: z.string().nullable(),\n metadata: z.record(z.string(), z.unknown()).nullable(),\n variants: z.record(z.string(), z.unknown()).nullable(),\n entity_type: z.string().nullable(),\n entity_id: z.string().nullable(),\n access_level: z.string().nullable(),\n});\n\n/**\n * Database row type - inferred from schema\n * Used by FilesRepository, mapped to FilesEntity by FilesMapper\n */\nexport type FilesDatabaseRow = z.infer<typeof FilesDatabaseRowSchema>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Create Media Schema (for DB insert validation)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Schema for creating a file/media record in the database\n * Validates data before repository.create()\n *\n * Auto-generated fields (id, created_at, updated_at, deleted_at)\n * are handled by the repository.\n */\nexport const CreateFilesSchema = z.object({\n // Required fields with defaults for optional scenarios\n user_id: z.string().uuid().default(SYSTEM_USER_ID),\n type: MediaTypeSchema.default('DOCUMENT'),\n filename: z.string().min(1, 'Filename is required'),\n original_filename: z.string().min(1, 'Original filename is required'),\n mime_type: z.string().min(1, 'MIME type is required'),\n file_size: z\n .union([z.bigint(), z.number()])\n .refine(val => Number(val) >= 0, 'File size must be non-negative'),\n storage_path: z.string().min(1, 'Storage path is required'),\n\n // Optional fields with defaults\n cdn_url: z.string().url().nullable().default(null),\n width: z.number().positive().nullable().default(null),\n height: z.number().positive().nullable().default(null),\n duration: z.number().positive().nullable().default(null),\n is_virus_scanned: z.boolean().default(false),\n virus_scan_result: z.string().nullable().default(null),\n metadata: z.record(z.string(), z.unknown()).nullable().default(null),\n variants: z.record(z.string(), z.unknown()).nullable().default(null),\n entity_type: z.string().nullable().default(null),\n entity_id: z.string().nullable().default(null),\n access_level: MediaAccessLevelSchema.default(null),\n});\n\n/** Input type for creating files (before defaults applied) */\nexport type FilesCreateInput = z.input<typeof CreateFilesSchema>;\n/** Output type for creating files (after defaults applied) */\nexport type FilesCreateOutput = z.output<typeof CreateFilesSchema>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Patch Files Schema (for updates)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Schema for partial update of a file/media record\n * All fields optional\n */\nexport const PatchFilesSchema = CreateFilesSchema.partial();\n\nexport type FilesPatchInput = z.input<typeof PatchFilesSchema>;\nexport type FilesPatchOutput = z.output<typeof PatchFilesSchema>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Media Variants Schema\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Full media_variants database row schema\n */\nexport const MediaVariantsDatabaseRowSchema = z.object({\n id: z.string().uuid(),\n media_id: z.string().uuid(),\n variant_name: z.string(),\n file_path: z.string(),\n cdn_url: z.string().nullable(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n file_size: z.number().nullable(),\n created_at: z.string(),\n});\n\nexport type MediaVariantsDatabaseRow = z.infer<typeof MediaVariantsDatabaseRowSchema>;\n\n/**\n * Schema for creating a media variant record\n */\nexport const CreateMediaVariantSchema = MediaVariantsDatabaseRowSchema.omit({\n id: true,\n created_at: true,\n});\n\nexport type MediaVariantsCreateInput = z.input<typeof CreateMediaVariantSchema>;\n","/**\n * Streaming Types\n *\n * Global types for real-time event streaming via SSE/WebSocket.\n *\n * Architecture:\n * - Domain services define their own streaming constants (e.g., FILES_STREAM_SUBTYPE)\n * - Global constants here MERGE domain-specific constants\n * - System constants (heartbeat, connection) are defined here as base\n *\n * To add a new domain:\n * 1. Create streaming constants in the domain folder (e.g., /domain/payments/streaming.ts)\n * 2. Import domain constants here\n * 3. Merge into global constants (STREAM_MESSAGE_TYPE, STREAM_SUBTYPE, etc.)\n */\n\nimport {\n FILES_STREAM_MESSAGE_TYPE,\n FILES_STREAM_SUBTYPE,\n FILES_STREAM_PROGRESS_STATUS,\n FILES_STREAM_EVENT,\n FILES_STREAM_CHANNEL_PREFIX,\n FILES_STREAM_BROADCAST_CHANNEL,\n} from '../../domain/files';\n\nimport type {\n FilesStreamMessageType,\n FilesStreamSubtype,\n FilesStreamProgressStatus,\n FilesUploadStreamProgress,\n FilesDownloadStreamProgress,\n FilesGenerateStreamProgress,\n FilesStreamProgressData,\n FilesStreamChannel,\n} from '../../domain/files';\nimport type { CorePlyazStreamConfig } from '../../frontend';\nimport type { RootStoreHook } from '../../../store';\nimport type { PackageErrorLike } from '../../../errors';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Transport Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Supported transport types for streaming connections\n */\nexport const STREAM_TRANSPORT = {\n SSE: 'sse',\n WEBSOCKET: 'websocket',\n} as const;\n\nexport type StreamTransportType = (typeof STREAM_TRANSPORT)[keyof typeof STREAM_TRANSPORT];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// System Message Types (Base - non-domain)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * System-level message type categories.\n * Used for connection lifecycle and system-wide events.\n */\nexport const SYSTEM_STREAM_MESSAGE_TYPE = {\n SYSTEM: 'system',\n NOTIFICATION: 'notification',\n DATA: 'data',\n} as const;\n\nexport type SystemStreamMessageType =\n (typeof SYSTEM_STREAM_MESSAGE_TYPE)[keyof typeof SYSTEM_STREAM_MESSAGE_TYPE];\n\n/**\n * System-level message subtypes (not domain-specific).\n * Used for connection lifecycle and system events.\n */\nexport const SYSTEM_STREAM_SUBTYPE = {\n HEARTBEAT: 'heartbeat',\n CONNECTED: 'connected',\n DISCONNECTED: 'disconnected',\n RECONNECTING: 'reconnecting',\n} as const;\n\nexport type SystemStreamSubtype =\n (typeof SYSTEM_STREAM_SUBTYPE)[keyof typeof SYSTEM_STREAM_SUBTYPE];\n\n/**\n * System channel for connection-level events.\n */\nexport const SYSTEM_STREAM_CHANNEL = {\n SYSTEM: 'system',\n} as const;\n\nexport type SystemStreamChannel =\n (typeof SYSTEM_STREAM_CHANNEL)[keyof typeof SYSTEM_STREAM_CHANNEL];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Message Types (Merged from all domains)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * All message type categories.\n * Merged from system + all domain-specific types.\n *\n * To add a new domain's message types:\n * 1. Define `{DOMAIN}_STREAM_MESSAGE_TYPE` in the domain's streaming module\n * 2. Import and spread into this object\n */\nexport const STREAM_MESSAGE_TYPE = {\n ...SYSTEM_STREAM_MESSAGE_TYPE,\n ...FILES_STREAM_MESSAGE_TYPE,\n} as const;\n\nexport type StreamMessageType = SystemStreamMessageType | FilesStreamMessageType;\n\n/**\n * All message subtypes.\n * Merged from system + all domain-specific subtypes.\n *\n * To add a new domain's subtypes:\n * 1. Define `{DOMAIN}_STREAM_SUBTYPE` in the domain's streaming module\n * 2. Import and spread into this object\n */\nexport const STREAM_SUBTYPE = {\n ...SYSTEM_STREAM_SUBTYPE,\n ...FILES_STREAM_SUBTYPE,\n} as const;\n\nexport type StreamMessageSubtype = SystemStreamSubtype | FilesStreamSubtype;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Message Scope (Domain Identifier)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Message scope identifies the domain that owns the message.\n * Used for routing messages to the correct domain store.\n *\n * To add a new domain:\n * 1. Add the domain name to this constant\n * 2. Create domain streaming types in the domain's types folder\n */\nexport const STREAM_SCOPE = {\n FILES: 'files',\n SYSTEM: 'system',\n} as const;\n\nexport type StreamMessageScope = (typeof STREAM_SCOPE)[keyof typeof STREAM_SCOPE];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Stream Events (Merged from all domains)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * System stream events.\n */\nexport const SYSTEM_STREAM_EVENT = {\n CONNECTED: 'connected',\n DISCONNECTED: 'disconnected',\n HEARTBEAT: 'heartbeat',\n ERROR: 'error',\n} as const;\n\n/**\n * All stream events.\n * Merged from system + all domain-specific events.\n */\nexport const STREAM_EVENT = {\n ...SYSTEM_STREAM_EVENT,\n ...FILES_STREAM_EVENT,\n} as const;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Channel Constants (Merged from all domains)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * All channel prefixes (for subscription matching).\n */\nexport const STREAM_CHANNEL_PREFIX = {\n ...FILES_STREAM_CHANNEL_PREFIX,\n} as const;\n\n/**\n * All broadcast channels (user-scoped).\n */\nexport const STREAM_BROADCAST_CHANNEL = {\n ...SYSTEM_STREAM_CHANNEL,\n ...FILES_STREAM_BROADCAST_CHANNEL,\n} as const;\n\n/**\n * All possible channel patterns.\n * Union of system channel + all domain-specific channels.\n */\nexport type StreamChannel = SystemStreamChannel | FilesStreamChannel;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Connection Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Represents an active streaming connection\n */\nexport interface StreamConnection {\n /** Unique connection identifier */\n id: string;\n /** Authenticated user ID (undefined for anonymous) */\n userId?: string;\n /** Transport type (SSE or WebSocket) */\n transport: StreamTransportType;\n /** Subscribed channels */\n channels: Set<string>;\n /** Connection creation timestamp */\n createdAt: Date;\n /** Last activity timestamp (for cleanup) */\n lastActivity: Date;\n /** Additional connection metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Serializable version of StreamConnection for storage/transmission\n */\nexport interface StreamConnectionInfo {\n id: string;\n userId?: string;\n transport: StreamTransportType;\n channels: string[];\n createdAt: string;\n lastActivity: string;\n metadata?: Record<string, unknown>;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Stream Message\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Message sent to streaming clients.\n *\n * @typeParam T - Payload data type (defaults to unknown)\n */\nexport interface StreamMessage<T = unknown> {\n /** Event name (e.g., 'upload:progress', 'connected', 'heartbeat') */\n event: string;\n /** Event payload data */\n data: T;\n /** Optional message ID (for SSE reconnection) */\n id?: string;\n /** Optional retry interval in ms (for SSE) */\n retry?: number;\n /** Channel this message was sent to */\n channel?: string;\n\n // ─────────────────────────────────────────────────────────────────────────\n // Metadata for filtering/routing\n // ─────────────────────────────────────────────────────────────────────────\n\n /** Message type category */\n type?: StreamMessageType;\n /** Message subtype for granular filtering */\n subtype?: StreamMessageSubtype;\n /** Domain scope for routing to domain stores */\n scope?: StreamMessageScope;\n /** Transport used (sse or websocket) */\n transport?: StreamTransportType;\n /** Timestamp when message was created */\n timestamp?: number;\n /** Correlation ID for request tracing */\n correlationId?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Progress Types (Re-export from domains)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Progress data union type.\n * Currently files-only, will expand as domains add streaming support.\n */\nexport type StreamProgressData = FilesStreamProgressData;\n\n/**\n * Progress status union type.\n * Currently files-only, will expand as domains add streaming support.\n */\nexport type StreamProgressStatus = FilesStreamProgressStatus;\n\n/**\n * All progress status constants.\n */\nexport const STREAM_PROGRESS_STATUS = {\n ...FILES_STREAM_PROGRESS_STATUS,\n} as const;\n\n// Re-export specific progress types for convenience\nexport type { FilesUploadStreamProgress, FilesDownloadStreamProgress, FilesGenerateStreamProgress };\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Channel Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Channel subscription record\n */\nexport interface ChannelSubscription {\n /** Channel name */\n channel: string;\n /** Connection ID */\n connectionId: string;\n /** Subscription timestamp */\n subscribedAt: Date;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Auth Adapter Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Result of authentication attempt\n */\nexport interface StreamAuthResult {\n /** Whether authentication succeeded */\n authenticated: boolean;\n /** User ID (if authenticated) */\n userId?: string;\n /** Allowed channel patterns (e.g., ['upload:', 'generate:']) */\n scopes?: string[];\n /** Additional auth metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Base configuration for auth adapters\n */\nexport interface StreamAuthAdapterConfig {\n /** Adapter name for logging */\n name: string;\n /** Whether adapter is enabled */\n enabled?: boolean;\n}\n\n/**\n * Configuration for token-based auth adapter\n */\nexport interface TokenAuthAdapterConfig extends StreamAuthAdapterConfig {\n /** Token verification function */\n verifyToken: (token: string) => Promise<{\n valid: boolean;\n userId?: string;\n scopes?: string[];\n }>;\n /** Header name for token (default: 'Authorization') */\n headerName?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Transport Adapter Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Base configuration for transport adapters\n */\nexport interface StreamTransportAdapterConfig {\n /** Adapter name for logging */\n name: string;\n /** Heartbeat interval in ms (default: 30000) */\n heartbeatInterval?: number;\n /** Maximum concurrent connections (default: 1000) */\n maxConnections?: number;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Manager Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Configuration for StreamBroadcaster\n */\nexport interface StreamBroadcasterConfig {\n /** Heartbeat interval in ms */\n heartbeatInterval?: number;\n /** Connection timeout in ms (for cleanup) */\n connectionTimeout?: number;\n /** Maximum stale connection age in ms before cleanup */\n maxStaleAge?: number;\n}\n\n/**\n * Statistics for stream manager\n */\nexport interface StreamManagerStats {\n /** Total active connections */\n totalConnections: number;\n /** Connections by transport type */\n connectionsByTransport: Record<StreamTransportType, number>;\n /** Total channel subscriptions */\n totalSubscriptions: number;\n /** Unique channels with subscribers */\n activeChannels: number;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hook Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Return type for useStreamConnection hook\n *\n * Note: Errors are added to the global error store automatically.\n * Use useErrorStore or error hooks to access connection errors.\n */\nexport interface UseStreamConnectionResult {\n /** Whether connection is established */\n connected: boolean;\n /** Reconnect function */\n reconnect: () => void;\n /** Disconnect function */\n disconnect: () => void;\n}\n\n/**\n * Options for useStreamConnection hook\n *\n * @template T - The expected message data type (defaults to unknown)\n *\n * @example\n * ```typescript\n * // Without generic (message.data is unknown)\n * useStreamConnection({\n * channels: ['uploads'],\n * onMessage: (message) => { ... }\n * });\n *\n * // With generic (message.data is properly typed)\n * useStreamConnection<FilesUploadStreamProgress>({\n * channels: [`upload:${fileId}`],\n * onMessage: (message) => {\n * // message.data is FilesUploadStreamProgress\n * console.log(message.data.percentage);\n * }\n * });\n * ```\n */\nexport interface UseStreamConnectionOptions<T = unknown> {\n /** Channels to subscribe to */\n channels: StreamChannel[];\n /** API endpoint URL (default: '/api/events/stream') */\n endpoint?: string;\n /** Whether to auto-connect on mount (default: true) */\n autoConnect?: boolean;\n /** Reconnect on error (default: true) */\n autoReconnect?: boolean;\n /** Max reconnect attempts (default: 5) */\n maxReconnectAttempts?: number;\n /** Reconnect delay in ms (default: 1000) */\n reconnectDelay?: number;\n /** Callback when connected */\n onConnect?: () => void;\n /** Callback when disconnected */\n onDisconnect?: () => void;\n /** Callback on error */\n onError?: (error: PackageErrorLike) => void;\n /** Callback on message received (message.data is typed as T) */\n onMessage?: (message: StreamMessage<T>) => void;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// useStreamManager Hook Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Options for useStreamManager hook\n *\n * Used by PlyazProvider to manage SSE connection lifecycle.\n */\nexport interface UseStreamManagerOptions {\n /** Streaming configuration (required when enabled) */\n config?: CorePlyazStreamConfig;\n /** Root store hook for accessing stream store */\n store: RootStoreHook;\n /** Enable verbose logging */\n verbose?: boolean;\n /** Whether streaming is enabled (default: false) */\n enabled?: boolean;\n}\n\n/**\n * Result type for useStreamManager hook\n *\n * Note: Errors are added to the global error store automatically.\n * Use useErrorStore or error hooks to access connection errors.\n */\nexport interface UseStreamManagerResult {\n /** Whether connected to SSE */\n connected: boolean;\n /** Subscribed channels */\n channels: StreamChannel[];\n /** Whether streaming is enabled */\n enabled: boolean;\n}\n","/**\n * Service Keys Constants\n *\n * Centralized service key constants for service registry and dependency injection.\n * Use these constants instead of string literals for type safety and consistency.\n *\n * @example\n * ```typescript\n * import { SERVICE_KEYS } from '@plyaz/types/core/services';\n *\n * class MyService {\n * static readonly serviceKey = SERVICE_KEYS.EXAMPLE;\n * }\n *\n * // Use in service registry\n * const service = ServiceRegistry.get(SERVICE_KEYS.EXAMPLE);\n * ```\n */\n\n/**\n * Keys for all available domain services .\n * These keys are used for service registration and lookup in the ServiceRegistry.\n */\nexport const SERVICE_KEYS = {\n /** Example domain service (backend) */\n EXAMPLE: 'example',\n /** Example domain service (frontend) */\n EXAMPLE_FRONTEND: 'example-frontend',\n /** Feature flags service */\n FEATURE_FLAGS: 'featureFlags',\n /** Campaign domain service */\n CAMPAIGN: 'campaign',\n /** Campaign frontend service */\n CAMPAIGN_FRONTEND: 'campaign-frontend',\n} as const;\n\n/**\n * Type for service keys.\n * Ensures only valid service keys can be used.\n */\nexport type ServiceKey = (typeof SERVICE_KEYS)[keyof typeof SERVICE_KEYS];\n\n/**\n * Array of all service keys for iteration.\n * Useful for validating service configurations or iterating over all services.\n */\nexport const ALL_SERVICE_KEYS = Object.values(SERVICE_KEYS) as ServiceKey[];\n"]}
@@ -2,4 +2,4 @@
2
2
  * Core Init Types
3
3
  * Service registry and initialization type definitions
4
4
  */
5
- export type { CoreDomainServiceInstance, CoreServiceInitConfig, CoreServiceCreateOptions, CoreInitializableDomainService, CoreServiceEntry, CoreServiceRegistryConfig, CoreExtractServiceConfig, CoreExtractServiceInstance, CoreFeatureFlagInitConfig, CoreErrorHandlerInitConfig, CoreCacheConfig, CoreStorageConfig, CoreNotificationConfig, CoreObservabilityConfig, CoreInitOptionsBase, CoreServicesResultBase, } from './types';
5
+ export type { CoreDomainServiceInstance, CoreServiceInitConfig, CoreServiceCreateOptions, CoreInitializableDomainService, CoreServiceEntry, CoreServiceRegistryConfig, CoreExtractServiceConfig, CoreExtractServiceInstance, CoreFeatureFlagInitConfig, CoreErrorHandlerInitConfig, CoreCacheConfig, CoreStorageConfig, CoreNotificationConfig, CoreObservabilityConfig, CoreStreamConfig, CoreInitOptionsBase, CoreServicesResultBase, } from './types';
@@ -13,6 +13,7 @@ import type { CoreAppEnvironment, CoreAppContext, CoreRuntimeEnvironment, CoreSe
13
13
  import type { CoreDbServiceConfig, CoreCacheConfig, CoreStorageConfig, CoreNotificationConfig } from '../services';
14
14
  import type { CoreInjectedServices } from '../domain';
15
15
  import type { MonitoringObservabilityAdapter, MonitoringAdapterWithPriority } from '../../observability';
16
+ import type { StreamEndpointEntry } from '../events/streaming';
16
17
  export type { CoreCacheConfig, CoreStorageConfig, CoreNotificationConfig } from '../services';
17
18
  /**
18
19
  * Base interface that all domain service instances must implement.
@@ -740,6 +741,52 @@ export interface CoreObservabilityConfig {
740
741
  */
741
742
  adapters?: (MonitoringObservabilityAdapter | MonitoringAdapterWithPriority)[];
742
743
  }
744
+ /**
745
+ * Streaming configuration for Core.initialize().
746
+ *
747
+ * Configures real-time event streaming via SSE/WebSocket.
748
+ * When enabled, StreamRegistry is initialized with the specified endpoints.
749
+ *
750
+ * @example
751
+ * ```typescript
752
+ * await Core.initialize({
753
+ * streaming: {
754
+ * enabled: true,
755
+ * endpoints: [
756
+ * { endpoint: FilesStreamEndpoint, config: { enabled: true } },
757
+ * { endpoint: SystemStreamEndpoint, config: { enabled: true } },
758
+ * ],
759
+ * server: {
760
+ * heartbeatInterval: 15000,
761
+ * defaultChannels: ['uploads', 'system'],
762
+ * },
763
+ * },
764
+ * });
765
+ * ```
766
+ */
767
+ export interface CoreStreamConfig {
768
+ /** Enable streaming (default: false on backend, true when endpoints provided) */
769
+ enabled?: boolean;
770
+ /**
771
+ * Stream endpoints to register.
772
+ * Each endpoint handles a domain's streaming events.
773
+ *
774
+ * If not provided, uses default endpoints (FilesStreamEndpoint, SystemStreamEndpoint).
775
+ */
776
+ endpoints?: StreamEndpointEntry[];
777
+ /**
778
+ * Stream server configuration.
779
+ * Used when Core creates the StreamServer internally.
780
+ */
781
+ server?: {
782
+ /** Heartbeat interval in ms (default: 30000) */
783
+ heartbeatInterval?: number;
784
+ /** Default channels for new connections */
785
+ defaultChannels?: string[];
786
+ /** Max connections per transport (default: 1000) */
787
+ maxConnections?: number;
788
+ };
789
+ }
743
790
  /**
744
791
  * Base core initialization options
745
792
  * Extended by @plyaz/core's CoreInitOptions with specific types
@@ -777,6 +824,10 @@ export interface CoreInitOptionsBase<TDb = unknown, TApi = unknown, TStorage = u
777
824
  skipStorage?: boolean;
778
825
  /** Skip notifications initialization (backend only) */
779
826
  skipNotifications?: boolean;
827
+ /** Streaming configuration (SSE/WebSocket real-time events) */
828
+ streaming?: CoreStreamConfig;
829
+ /** Skip streaming initialization */
830
+ skipStreaming?: boolean;
780
831
  /** Enable verbose logging */
781
832
  verbose?: boolean;
782
833
  /**
@@ -513,6 +513,26 @@ export declare const ERROR_CODES: {
513
513
  readonly NONCE_ALREADY_USED: "AUTH_NONCE_ALREADY_USED";
514
514
  readonly ACCOUNT_LOCKED: "AUTH_ACCOUNT_LOCKED";
515
515
  readonly ACCOUNT_SUSPENDED: "AUTH_ACCOUNT_SUSPENDED";
516
+ readonly STREAM_CONNECTION_FAILED: "stream.connection.failed";
517
+ readonly STREAM_CONNECTION_TIMEOUT: "stream.connection.timeout";
518
+ readonly STREAM_CONNECTION_CLOSED: "stream.connection.closed";
519
+ readonly STREAM_CHANNEL_NOT_FOUND: "stream.channel.not_found";
520
+ readonly STREAM_CHANNEL_FORBIDDEN: "stream.channel.forbidden";
521
+ readonly STREAM_SUBSCRIPTION_FAILED: "stream.subscription.failed";
522
+ readonly STREAM_UNSUBSCRIBE_FAILED: "stream.unsubscribe.failed";
523
+ readonly STREAM_BROADCAST_FAILED: "stream.broadcast.failed";
524
+ readonly STREAM_INVALID_MESSAGE: "stream.invalid.message";
525
+ readonly STREAM_MESSAGE_TOO_LARGE: "stream.message.too_large";
526
+ readonly STREAM_TRANSPORT_ERROR: "stream.transport.error";
527
+ readonly STREAM_TRANSPORT_NOT_SUPPORTED: "stream.transport.not_supported";
528
+ readonly STREAM_AUTH_REQUIRED: "stream.auth.required";
529
+ readonly STREAM_AUTH_FAILED: "stream.auth.failed";
530
+ readonly STREAM_TOKEN_EXPIRED: "stream.token.expired";
531
+ readonly STREAM_RATE_LIMITED: "stream.rate_limited";
532
+ readonly STREAM_ENDPOINT_NOT_FOUND: "stream.endpoint.not_found";
533
+ readonly STREAM_ENDPOINT_DISABLED: "stream.endpoint.disabled";
534
+ readonly STREAM_UNKNOWN_ERROR: "stream.unknown.error";
535
+ readonly STREAM_INITIALIZATION_FAILED: "stream.initialization.failed";
516
536
  };
517
537
  /**
518
538
  * Type for all error code values
@@ -1056,12 +1076,39 @@ export declare const DATABASE_ERROR_CODES: {
1056
1076
  readonly NOT_FOUND: "db.record_not_found";
1057
1077
  readonly UNKNOWN_ERROR: "db.unknown_error";
1058
1078
  };
1079
+ /**
1080
+ * Streaming-specific error codes
1081
+ * Subset of ERROR_CODES for real-time streaming (SSE/WebSocket)
1082
+ */
1083
+ export declare const STREAM_ERROR_CODES: {
1084
+ readonly CONNECTION_FAILED: "stream.connection.failed";
1085
+ readonly CONNECTION_TIMEOUT: "stream.connection.timeout";
1086
+ readonly CONNECTION_CLOSED: "stream.connection.closed";
1087
+ readonly CHANNEL_NOT_FOUND: "stream.channel.not_found";
1088
+ readonly CHANNEL_FORBIDDEN: "stream.channel.forbidden";
1089
+ readonly SUBSCRIPTION_FAILED: "stream.subscription.failed";
1090
+ readonly UNSUBSCRIBE_FAILED: "stream.unsubscribe.failed";
1091
+ readonly BROADCAST_FAILED: "stream.broadcast.failed";
1092
+ readonly INVALID_MESSAGE: "stream.invalid.message";
1093
+ readonly MESSAGE_TOO_LARGE: "stream.message.too_large";
1094
+ readonly TRANSPORT_ERROR: "stream.transport.error";
1095
+ readonly TRANSPORT_NOT_SUPPORTED: "stream.transport.not_supported";
1096
+ readonly AUTH_REQUIRED: "stream.auth.required";
1097
+ readonly AUTH_FAILED: "stream.auth.failed";
1098
+ readonly TOKEN_EXPIRED: "stream.token.expired";
1099
+ readonly RATE_LIMITED: "stream.rate_limited";
1100
+ readonly ENDPOINT_NOT_FOUND: "stream.endpoint.not_found";
1101
+ readonly ENDPOINT_DISABLED: "stream.endpoint.disabled";
1102
+ readonly UNKNOWN_ERROR: "stream.unknown.error";
1103
+ readonly INITIALIZATION_FAILED: "stream.initialization.failed";
1104
+ };
1059
1105
  export type ApiErrorCodeValue = (typeof API_ERROR_CODES)[keyof typeof API_ERROR_CODES] | `HTTP_${number}`;
1060
1106
  export type NotificationErrorCodeValue = (typeof NOTIFICATION_ERROR_CODES)[keyof typeof NOTIFICATION_ERROR_CODES];
1061
1107
  export type StorageErrorCode = (typeof STORAGE_ERROR_CODES)[keyof typeof STORAGE_ERROR_CODES];
1062
1108
  export type DatabaseErrorCodeValue = (typeof DATABASE_ERROR_CODES)[keyof typeof DATABASE_ERROR_CODES];
1063
1109
  export type CoreErrorCodeValue = (typeof CORE_ERROR_CODES)[keyof typeof CORE_ERROR_CODES];
1064
1110
  export type PaymentErrorCodeValue = (typeof PAYMENT_ERROR_CODES)[keyof typeof PAYMENT_ERROR_CODES];
1111
+ export type StreamErrorCodeValue = (typeof STREAM_ERROR_CODES)[keyof typeof STREAM_ERROR_CODES];
1065
1112
  /**
1066
1113
  * Unified ERROR_DEFINITIONS
1067
1114
  * Single source of truth for ALL error definitions across all @plyaz packages
@@ -356,6 +356,7 @@ export declare const ERROR_EXCEPTIONS_NAMESPACES: {
356
356
  TESTING: string;
357
357
  CORE: string;
358
358
  STORE: string;
359
+ STREAM: string;
359
360
  WEB3: string;
360
361
  MONITORING: string;
361
362
  HOOKS: string;