@plyaz/types 1.27.13 → 1.27.15

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.
@@ -0,0 +1,372 @@
1
+ 'use strict';
2
+
3
+ // @plyaz package - Built with tsup
4
+
5
+ // src/core/modules.ts
6
+ var BACKEND_RUNTIMES = [
7
+ "node",
8
+ "nestjs",
9
+ "express",
10
+ "deno",
11
+ "bun"
12
+ ];
13
+ var FRONTEND_RUNTIMES = ["browser"];
14
+ var UNIVERSAL_RUNTIMES = [
15
+ "nextjs",
16
+ "nuxt",
17
+ "edge"
18
+ ];
19
+ var APP_CONTEXTS = [
20
+ "webapp",
21
+ "backoffice",
22
+ "mobile",
23
+ "microapp",
24
+ "cli"
25
+ ];
26
+
27
+ // src/core/tables/enum.ts
28
+ var TABLES = /* @__PURE__ */ ((TABLES2) => {
29
+ TABLES2["User"] = "users";
30
+ return TABLES2;
31
+ })(TABLES || {});
32
+
33
+ // src/core/featureFlag/enums.ts
34
+ var SORT_DIRECTION = /* @__PURE__ */ ((SORT_DIRECTION2) => {
35
+ SORT_DIRECTION2["Asc"] = "asc";
36
+ SORT_DIRECTION2["Desc"] = "desc";
37
+ return SORT_DIRECTION2;
38
+ })(SORT_DIRECTION || {});
39
+ var FEATURE_FLAG_TABLE = /* @__PURE__ */ ((FEATURE_FLAG_TABLE2) => {
40
+ FEATURE_FLAG_TABLE2["FeatureFlags"] = "feature_flags";
41
+ FEATURE_FLAG_TABLE2["FeatureFlagRules"] = "feature_flag_rules";
42
+ FEATURE_FLAG_TABLE2["FeatureFlagEvaluations"] = "feature_flag_evaluations";
43
+ FEATURE_FLAG_TABLE2["FeatureFlagOverrides"] = "feature_flag_overrides";
44
+ return FEATURE_FLAG_TABLE2;
45
+ })(FEATURE_FLAG_TABLE || {});
46
+ var FEATURE_FLAG_FIELD = /* @__PURE__ */ ((FEATURE_FLAG_FIELD2) => {
47
+ FEATURE_FLAG_FIELD2["Key"] = "key";
48
+ FEATURE_FLAG_FIELD2["Name"] = "name";
49
+ FEATURE_FLAG_FIELD2["Value"] = "value";
50
+ FEATURE_FLAG_FIELD2["Type"] = "type";
51
+ FEATURE_FLAG_FIELD2["IsEnabled"] = "is_enabled";
52
+ FEATURE_FLAG_FIELD2["Environments"] = "environments";
53
+ FEATURE_FLAG_FIELD2["Description"] = "description";
54
+ FEATURE_FLAG_FIELD2["CreatedAt"] = "created_at";
55
+ FEATURE_FLAG_FIELD2["UpdatedAt"] = "updated_at";
56
+ return FEATURE_FLAG_FIELD2;
57
+ })(FEATURE_FLAG_FIELD || {});
58
+ var FEATURE_FLAG_RULE_FIELD = /* @__PURE__ */ ((FEATURE_FLAG_RULE_FIELD2) => {
59
+ FEATURE_FLAG_RULE_FIELD2["Id"] = "id";
60
+ FEATURE_FLAG_RULE_FIELD2["FlagKey"] = "flag_key";
61
+ FEATURE_FLAG_RULE_FIELD2["Name"] = "name";
62
+ FEATURE_FLAG_RULE_FIELD2["Conditions"] = "conditions";
63
+ FEATURE_FLAG_RULE_FIELD2["Value"] = "value";
64
+ FEATURE_FLAG_RULE_FIELD2["Priority"] = "priority";
65
+ FEATURE_FLAG_RULE_FIELD2["IsEnabled"] = "is_enabled";
66
+ return FEATURE_FLAG_RULE_FIELD2;
67
+ })(FEATURE_FLAG_RULE_FIELD || {});
68
+ var FEATURE_FLAG_PROVIDERS = /* @__PURE__ */ ((FEATURE_FLAG_PROVIDERS2) => {
69
+ FEATURE_FLAG_PROVIDERS2["MEMORY"] = "memory";
70
+ FEATURE_FLAG_PROVIDERS2["FILE"] = "file";
71
+ FEATURE_FLAG_PROVIDERS2["REDIS"] = "redis";
72
+ FEATURE_FLAG_PROVIDERS2["API"] = "api";
73
+ FEATURE_FLAG_PROVIDERS2["DATABASE"] = "database";
74
+ return FEATURE_FLAG_PROVIDERS2;
75
+ })(FEATURE_FLAG_PROVIDERS || {});
76
+ var NODE_ENVIRONMENTS = /* @__PURE__ */ ((NODE_ENVIRONMENTS2) => {
77
+ NODE_ENVIRONMENTS2["DEVELOPMENT"] = "development";
78
+ NODE_ENVIRONMENTS2["PRODUCTION"] = "production";
79
+ NODE_ENVIRONMENTS2["STAGING"] = "staging";
80
+ NODE_ENVIRONMENTS2["TEST"] = "test";
81
+ return NODE_ENVIRONMENTS2;
82
+ })(NODE_ENVIRONMENTS || {});
83
+ var DATABASE_FIELDS = /* @__PURE__ */ ((DATABASE_FIELDS2) => {
84
+ DATABASE_FIELDS2["Key"] = "key";
85
+ DATABASE_FIELDS2["FlagKey"] = "flag_key";
86
+ DATABASE_FIELDS2["UserId"] = "user_id";
87
+ DATABASE_FIELDS2["IsEnabled"] = "is_enabled";
88
+ DATABASE_FIELDS2["CreatedAt"] = "created_at";
89
+ DATABASE_FIELDS2["UpdatedAt"] = "updated_at";
90
+ DATABASE_FIELDS2["ExpiresAt"] = "expires_at";
91
+ DATABASE_FIELDS2["EvaluatedAt"] = "evaluated_at";
92
+ return DATABASE_FIELDS2;
93
+ })(DATABASE_FIELDS || {});
94
+ var SYSTEM_USERS = /* @__PURE__ */ ((SYSTEM_USERS2) => {
95
+ SYSTEM_USERS2["SYSTEM"] = "system";
96
+ return SYSTEM_USERS2;
97
+ })(SYSTEM_USERS || {});
98
+ var EVALUATION_REASONS = /* @__PURE__ */ ((EVALUATION_REASONS2) => {
99
+ EVALUATION_REASONS2["Default"] = "default";
100
+ EVALUATION_REASONS2["RuleMatch"] = "rule_match";
101
+ EVALUATION_REASONS2["Rollout"] = "rollout";
102
+ EVALUATION_REASONS2["Override"] = "override";
103
+ EVALUATION_REASONS2["Disabled"] = "disabled";
104
+ return EVALUATION_REASONS2;
105
+ })(EVALUATION_REASONS || {});
106
+ var FEATURE_FLAG_TYPES = /* @__PURE__ */ ((FEATURE_FLAG_TYPES2) => {
107
+ FEATURE_FLAG_TYPES2["BOOLEAN"] = "boolean";
108
+ FEATURE_FLAG_TYPES2["STRING"] = "string";
109
+ FEATURE_FLAG_TYPES2["NUMBER"] = "number";
110
+ FEATURE_FLAG_TYPES2["OBJECT"] = "object";
111
+ return FEATURE_FLAG_TYPES2;
112
+ })(FEATURE_FLAG_TYPES || {});
113
+
114
+ // src/core/featureFlag/constants.ts
115
+ var FEATURE_FLAG_DEFAULTS = {
116
+ CACHE_TTL: 300,
117
+ REFRESH_INTERVAL: 0,
118
+ POOL_SIZE: 10,
119
+ TIMEOUT: 3e4,
120
+ TABLE_NAME: "feature_flags"
121
+ };
122
+ var FEATURE_FLAG_METADATA = {
123
+ FLAG_CHECK: "plyaz:feature_flag_check",
124
+ // Single feature flag check
125
+ RESOLVE_FLAGS: "plyaz:resolve_feature_flags"
126
+ // Multiple flags resolved at once
127
+ };
128
+
129
+ // src/core/events/enums.ts
130
+ var CoreEventScope = {
131
+ SYSTEM: "system",
132
+ ENTITY: "entity",
133
+ VALIDATION: "validation",
134
+ SANITIZATION: "sanitization",
135
+ API: "api",
136
+ CACHE: "cache",
137
+ AUTH: "auth",
138
+ DATABASE: "database",
139
+ FEATURE_FLAG: "featureFlag",
140
+ STORE: "store",
141
+ STORAGE: "storage",
142
+ NOTIFICATION: "notification"
143
+ };
144
+ var SystemEventAction = {
145
+ INITIALIZED: "initialized",
146
+ READY: "ready",
147
+ SHUTDOWN: "shutdown",
148
+ ERROR: "error",
149
+ WARNING: "warning"
150
+ };
151
+ var EntityEventAction = {
152
+ // Lifecycle (before API call)
153
+ CREATING: "creating",
154
+ UPDATING: "updating",
155
+ PATCHING: "patching",
156
+ DELETING: "deleting",
157
+ // Completed (after API call)
158
+ CREATED: "created",
159
+ UPDATED: "updated",
160
+ PATCHED: "patched",
161
+ DELETED: "deleted",
162
+ // Error/Complete
163
+ ERROR: "error",
164
+ COMPLETE: "complete",
165
+ // Bulk operations
166
+ BULK_CREATED: "bulkCreated",
167
+ BULK_DELETED: "bulkDeleted"
168
+ };
169
+ var ValidationEventAction = {
170
+ STARTED: "started",
171
+ SUCCESS: "success",
172
+ FAILED: "failed"
173
+ };
174
+ var SanitizationEventAction = {
175
+ STARTED: "started",
176
+ SUCCESS: "success",
177
+ FAILED: "failed"
178
+ };
179
+ var ApiEventAction = {
180
+ REQUEST_START: "requestStart",
181
+ REQUEST_SUCCESS: "requestSuccess",
182
+ REQUEST_ERROR: "requestError",
183
+ RETRY: "retry",
184
+ TIMEOUT: "timeout"
185
+ };
186
+ var CacheEventAction = {
187
+ HIT: "hit",
188
+ MISS: "miss",
189
+ SET: "set",
190
+ DELETE: "delete",
191
+ CLEAR: "clear",
192
+ EXPIRED: "expired"
193
+ };
194
+ var AuthEventAction = {
195
+ LOGIN: "login",
196
+ LOGOUT: "logout",
197
+ TOKEN_REFRESH: "tokenRefresh",
198
+ SESSION_EXPIRED: "sessionExpired",
199
+ UNAUTHORIZED: "unauthorized"
200
+ };
201
+ var DatabaseEventAction = {
202
+ CONNECTED: "connected",
203
+ DISCONNECTED: "disconnected",
204
+ QUERY: "query",
205
+ ERROR: "error",
206
+ TRANSACTION_START: "transactionStart",
207
+ TRANSACTION_COMMIT: "transactionCommit",
208
+ TRANSACTION_ROLLBACK: "transactionRollback"
209
+ };
210
+ var FeatureFlagEventAction = {
211
+ CHANGED: "changed",
212
+ EVALUATED: "evaluated",
213
+ REFRESHED: "refreshed"
214
+ };
215
+ var StoreEventAction = {
216
+ UPDATED: "updated",
217
+ RESET: "reset",
218
+ HYDRATED: "hydrated"
219
+ };
220
+ var StorageEventAction = {
221
+ UPLOADED: "uploaded",
222
+ DOWNLOADED: "downloaded",
223
+ DELETED: "deleted",
224
+ ERROR: "error",
225
+ HEALTH_CHECK: "healthCheck"
226
+ };
227
+ var NotificationEventAction = {
228
+ SENT: "sent",
229
+ FAILED: "failed",
230
+ DELIVERED: "delivered",
231
+ OPENED: "opened",
232
+ CLICKED: "clicked",
233
+ ERROR: "error",
234
+ HEALTH_CHECK: "healthCheck"
235
+ };
236
+ var CORE_EVENTS = {
237
+ SYSTEM: {
238
+ INITIALIZED: `${CoreEventScope.SYSTEM}:${SystemEventAction.INITIALIZED}`,
239
+ READY: `${CoreEventScope.SYSTEM}:${SystemEventAction.READY}`,
240
+ SHUTDOWN: `${CoreEventScope.SYSTEM}:${SystemEventAction.SHUTDOWN}`,
241
+ ERROR: `${CoreEventScope.SYSTEM}:${SystemEventAction.ERROR}`,
242
+ WARNING: `${CoreEventScope.SYSTEM}:${SystemEventAction.WARNING}`
243
+ },
244
+ ENTITY: {
245
+ CREATING: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATING}`,
246
+ UPDATING: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATING}`,
247
+ PATCHING: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHING}`,
248
+ DELETING: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETING}`,
249
+ CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATED}`,
250
+ UPDATED: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATED}`,
251
+ PATCHED: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHED}`,
252
+ DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETED}`,
253
+ ERROR: `${CoreEventScope.ENTITY}:${EntityEventAction.ERROR}`,
254
+ COMPLETE: `${CoreEventScope.ENTITY}:${EntityEventAction.COMPLETE}`,
255
+ BULK_CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_CREATED}`,
256
+ BULK_DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_DELETED}`
257
+ },
258
+ VALIDATION: {
259
+ STARTED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.STARTED}`,
260
+ SUCCESS: `${CoreEventScope.VALIDATION}:${ValidationEventAction.SUCCESS}`,
261
+ FAILED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.FAILED}`
262
+ },
263
+ SANITIZATION: {
264
+ STARTED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.STARTED}`,
265
+ SUCCESS: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.SUCCESS}`,
266
+ FAILED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.FAILED}`
267
+ },
268
+ API: {
269
+ REQUEST_START: `${CoreEventScope.API}:${ApiEventAction.REQUEST_START}`,
270
+ REQUEST_SUCCESS: `${CoreEventScope.API}:${ApiEventAction.REQUEST_SUCCESS}`,
271
+ REQUEST_ERROR: `${CoreEventScope.API}:${ApiEventAction.REQUEST_ERROR}`,
272
+ RETRY: `${CoreEventScope.API}:${ApiEventAction.RETRY}`,
273
+ TIMEOUT: `${CoreEventScope.API}:${ApiEventAction.TIMEOUT}`
274
+ },
275
+ CACHE: {
276
+ HIT: `${CoreEventScope.CACHE}:${CacheEventAction.HIT}`,
277
+ MISS: `${CoreEventScope.CACHE}:${CacheEventAction.MISS}`,
278
+ SET: `${CoreEventScope.CACHE}:${CacheEventAction.SET}`,
279
+ DELETE: `${CoreEventScope.CACHE}:${CacheEventAction.DELETE}`,
280
+ CLEAR: `${CoreEventScope.CACHE}:${CacheEventAction.CLEAR}`,
281
+ EXPIRED: `${CoreEventScope.CACHE}:${CacheEventAction.EXPIRED}`
282
+ },
283
+ AUTH: {
284
+ LOGIN: `${CoreEventScope.AUTH}:${AuthEventAction.LOGIN}`,
285
+ LOGOUT: `${CoreEventScope.AUTH}:${AuthEventAction.LOGOUT}`,
286
+ TOKEN_REFRESH: `${CoreEventScope.AUTH}:${AuthEventAction.TOKEN_REFRESH}`,
287
+ SESSION_EXPIRED: `${CoreEventScope.AUTH}:${AuthEventAction.SESSION_EXPIRED}`,
288
+ UNAUTHORIZED: `${CoreEventScope.AUTH}:${AuthEventAction.UNAUTHORIZED}`
289
+ },
290
+ DATABASE: {
291
+ CONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.CONNECTED}`,
292
+ DISCONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.DISCONNECTED}`,
293
+ QUERY: `${CoreEventScope.DATABASE}:${DatabaseEventAction.QUERY}`,
294
+ ERROR: `${CoreEventScope.DATABASE}:${DatabaseEventAction.ERROR}`,
295
+ TRANSACTION_START: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_START}`,
296
+ TRANSACTION_COMMIT: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_COMMIT}`,
297
+ TRANSACTION_ROLLBACK: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_ROLLBACK}`
298
+ },
299
+ FEATURE_FLAG: {
300
+ CHANGED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.CHANGED}`,
301
+ EVALUATED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.EVALUATED}`,
302
+ REFRESHED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.REFRESHED}`
303
+ },
304
+ STORE: {
305
+ UPDATED: `${CoreEventScope.STORE}:${StoreEventAction.UPDATED}`,
306
+ RESET: `${CoreEventScope.STORE}:${StoreEventAction.RESET}`,
307
+ HYDRATED: `${CoreEventScope.STORE}:${StoreEventAction.HYDRATED}`
308
+ },
309
+ STORAGE: {
310
+ UPLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.UPLOADED}`,
311
+ DOWNLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.DOWNLOADED}`,
312
+ DELETED: `${CoreEventScope.STORAGE}:${StorageEventAction.DELETED}`,
313
+ ERROR: `${CoreEventScope.STORAGE}:${StorageEventAction.ERROR}`,
314
+ HEALTH_CHECK: `${CoreEventScope.STORAGE}:${StorageEventAction.HEALTH_CHECK}`
315
+ },
316
+ NOTIFICATION: {
317
+ SENT: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.SENT}`,
318
+ FAILED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.FAILED}`,
319
+ DELIVERED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.DELIVERED}`,
320
+ OPENED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.OPENED}`,
321
+ CLICKED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.CLICKED}`,
322
+ ERROR: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.ERROR}`,
323
+ HEALTH_CHECK: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.HEALTH_CHECK}`
324
+ }
325
+ };
326
+
327
+ // src/core/services/keys.ts
328
+ var SERVICE_KEYS = {
329
+ /** Example domain service (backend) */
330
+ EXAMPLE: "example",
331
+ /** Example domain service (frontend) */
332
+ EXAMPLE_FRONTEND: "example-frontend",
333
+ /** Feature flags service */
334
+ FEATURE_FLAGS: "featureFlags"
335
+ };
336
+ var ALL_SERVICE_KEYS = Object.values(SERVICE_KEYS);
337
+
338
+ exports.ALL_SERVICE_KEYS = ALL_SERVICE_KEYS;
339
+ exports.APP_CONTEXTS = APP_CONTEXTS;
340
+ exports.ApiEventAction = ApiEventAction;
341
+ exports.AuthEventAction = AuthEventAction;
342
+ exports.BACKEND_RUNTIMES = BACKEND_RUNTIMES;
343
+ exports.CORE_EVENTS = CORE_EVENTS;
344
+ exports.CacheEventAction = CacheEventAction;
345
+ exports.CoreEventScope = CoreEventScope;
346
+ exports.DATABASE_FIELDS = DATABASE_FIELDS;
347
+ exports.DatabaseEventAction = DatabaseEventAction;
348
+ exports.EVALUATION_REASONS = EVALUATION_REASONS;
349
+ exports.EntityEventAction = EntityEventAction;
350
+ exports.FEATURE_FLAG_DEFAULTS = FEATURE_FLAG_DEFAULTS;
351
+ exports.FEATURE_FLAG_FIELD = FEATURE_FLAG_FIELD;
352
+ exports.FEATURE_FLAG_METADATA = FEATURE_FLAG_METADATA;
353
+ exports.FEATURE_FLAG_PROVIDERS = FEATURE_FLAG_PROVIDERS;
354
+ exports.FEATURE_FLAG_RULE_FIELD = FEATURE_FLAG_RULE_FIELD;
355
+ exports.FEATURE_FLAG_TABLE = FEATURE_FLAG_TABLE;
356
+ exports.FEATURE_FLAG_TYPES = FEATURE_FLAG_TYPES;
357
+ exports.FRONTEND_RUNTIMES = FRONTEND_RUNTIMES;
358
+ exports.FeatureFlagEventAction = FeatureFlagEventAction;
359
+ exports.NODE_ENVIRONMENTS = NODE_ENVIRONMENTS;
360
+ exports.NotificationEventAction = NotificationEventAction;
361
+ exports.SERVICE_KEYS = SERVICE_KEYS;
362
+ exports.SORT_DIRECTION = SORT_DIRECTION;
363
+ exports.SYSTEM_USERS = SYSTEM_USERS;
364
+ exports.SanitizationEventAction = SanitizationEventAction;
365
+ exports.StorageEventAction = StorageEventAction;
366
+ exports.StoreEventAction = StoreEventAction;
367
+ exports.SystemEventAction = SystemEventAction;
368
+ exports.TABLES = TABLES;
369
+ exports.UNIVERSAL_RUNTIMES = UNIVERSAL_RUNTIMES;
370
+ exports.ValidationEventAction = ValidationEventAction;
371
+ //# sourceMappingURL=index.cjs.map
372
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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.cjs","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\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} 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 },\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} 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"]}
@@ -0,0 +1,338 @@
1
+ // @plyaz package - Built with tsup
2
+
3
+ // src/core/modules.ts
4
+ var BACKEND_RUNTIMES = [
5
+ "node",
6
+ "nestjs",
7
+ "express",
8
+ "deno",
9
+ "bun"
10
+ ];
11
+ var FRONTEND_RUNTIMES = ["browser"];
12
+ var UNIVERSAL_RUNTIMES = [
13
+ "nextjs",
14
+ "nuxt",
15
+ "edge"
16
+ ];
17
+ var APP_CONTEXTS = [
18
+ "webapp",
19
+ "backoffice",
20
+ "mobile",
21
+ "microapp",
22
+ "cli"
23
+ ];
24
+
25
+ // src/core/tables/enum.ts
26
+ var TABLES = /* @__PURE__ */ ((TABLES2) => {
27
+ TABLES2["User"] = "users";
28
+ return TABLES2;
29
+ })(TABLES || {});
30
+
31
+ // src/core/featureFlag/enums.ts
32
+ var SORT_DIRECTION = /* @__PURE__ */ ((SORT_DIRECTION2) => {
33
+ SORT_DIRECTION2["Asc"] = "asc";
34
+ SORT_DIRECTION2["Desc"] = "desc";
35
+ return SORT_DIRECTION2;
36
+ })(SORT_DIRECTION || {});
37
+ var FEATURE_FLAG_TABLE = /* @__PURE__ */ ((FEATURE_FLAG_TABLE2) => {
38
+ FEATURE_FLAG_TABLE2["FeatureFlags"] = "feature_flags";
39
+ FEATURE_FLAG_TABLE2["FeatureFlagRules"] = "feature_flag_rules";
40
+ FEATURE_FLAG_TABLE2["FeatureFlagEvaluations"] = "feature_flag_evaluations";
41
+ FEATURE_FLAG_TABLE2["FeatureFlagOverrides"] = "feature_flag_overrides";
42
+ return FEATURE_FLAG_TABLE2;
43
+ })(FEATURE_FLAG_TABLE || {});
44
+ var FEATURE_FLAG_FIELD = /* @__PURE__ */ ((FEATURE_FLAG_FIELD2) => {
45
+ FEATURE_FLAG_FIELD2["Key"] = "key";
46
+ FEATURE_FLAG_FIELD2["Name"] = "name";
47
+ FEATURE_FLAG_FIELD2["Value"] = "value";
48
+ FEATURE_FLAG_FIELD2["Type"] = "type";
49
+ FEATURE_FLAG_FIELD2["IsEnabled"] = "is_enabled";
50
+ FEATURE_FLAG_FIELD2["Environments"] = "environments";
51
+ FEATURE_FLAG_FIELD2["Description"] = "description";
52
+ FEATURE_FLAG_FIELD2["CreatedAt"] = "created_at";
53
+ FEATURE_FLAG_FIELD2["UpdatedAt"] = "updated_at";
54
+ return FEATURE_FLAG_FIELD2;
55
+ })(FEATURE_FLAG_FIELD || {});
56
+ var FEATURE_FLAG_RULE_FIELD = /* @__PURE__ */ ((FEATURE_FLAG_RULE_FIELD2) => {
57
+ FEATURE_FLAG_RULE_FIELD2["Id"] = "id";
58
+ FEATURE_FLAG_RULE_FIELD2["FlagKey"] = "flag_key";
59
+ FEATURE_FLAG_RULE_FIELD2["Name"] = "name";
60
+ FEATURE_FLAG_RULE_FIELD2["Conditions"] = "conditions";
61
+ FEATURE_FLAG_RULE_FIELD2["Value"] = "value";
62
+ FEATURE_FLAG_RULE_FIELD2["Priority"] = "priority";
63
+ FEATURE_FLAG_RULE_FIELD2["IsEnabled"] = "is_enabled";
64
+ return FEATURE_FLAG_RULE_FIELD2;
65
+ })(FEATURE_FLAG_RULE_FIELD || {});
66
+ var FEATURE_FLAG_PROVIDERS = /* @__PURE__ */ ((FEATURE_FLAG_PROVIDERS2) => {
67
+ FEATURE_FLAG_PROVIDERS2["MEMORY"] = "memory";
68
+ FEATURE_FLAG_PROVIDERS2["FILE"] = "file";
69
+ FEATURE_FLAG_PROVIDERS2["REDIS"] = "redis";
70
+ FEATURE_FLAG_PROVIDERS2["API"] = "api";
71
+ FEATURE_FLAG_PROVIDERS2["DATABASE"] = "database";
72
+ return FEATURE_FLAG_PROVIDERS2;
73
+ })(FEATURE_FLAG_PROVIDERS || {});
74
+ var NODE_ENVIRONMENTS = /* @__PURE__ */ ((NODE_ENVIRONMENTS2) => {
75
+ NODE_ENVIRONMENTS2["DEVELOPMENT"] = "development";
76
+ NODE_ENVIRONMENTS2["PRODUCTION"] = "production";
77
+ NODE_ENVIRONMENTS2["STAGING"] = "staging";
78
+ NODE_ENVIRONMENTS2["TEST"] = "test";
79
+ return NODE_ENVIRONMENTS2;
80
+ })(NODE_ENVIRONMENTS || {});
81
+ var DATABASE_FIELDS = /* @__PURE__ */ ((DATABASE_FIELDS2) => {
82
+ DATABASE_FIELDS2["Key"] = "key";
83
+ DATABASE_FIELDS2["FlagKey"] = "flag_key";
84
+ DATABASE_FIELDS2["UserId"] = "user_id";
85
+ DATABASE_FIELDS2["IsEnabled"] = "is_enabled";
86
+ DATABASE_FIELDS2["CreatedAt"] = "created_at";
87
+ DATABASE_FIELDS2["UpdatedAt"] = "updated_at";
88
+ DATABASE_FIELDS2["ExpiresAt"] = "expires_at";
89
+ DATABASE_FIELDS2["EvaluatedAt"] = "evaluated_at";
90
+ return DATABASE_FIELDS2;
91
+ })(DATABASE_FIELDS || {});
92
+ var SYSTEM_USERS = /* @__PURE__ */ ((SYSTEM_USERS2) => {
93
+ SYSTEM_USERS2["SYSTEM"] = "system";
94
+ return SYSTEM_USERS2;
95
+ })(SYSTEM_USERS || {});
96
+ var EVALUATION_REASONS = /* @__PURE__ */ ((EVALUATION_REASONS2) => {
97
+ EVALUATION_REASONS2["Default"] = "default";
98
+ EVALUATION_REASONS2["RuleMatch"] = "rule_match";
99
+ EVALUATION_REASONS2["Rollout"] = "rollout";
100
+ EVALUATION_REASONS2["Override"] = "override";
101
+ EVALUATION_REASONS2["Disabled"] = "disabled";
102
+ return EVALUATION_REASONS2;
103
+ })(EVALUATION_REASONS || {});
104
+ var FEATURE_FLAG_TYPES = /* @__PURE__ */ ((FEATURE_FLAG_TYPES2) => {
105
+ FEATURE_FLAG_TYPES2["BOOLEAN"] = "boolean";
106
+ FEATURE_FLAG_TYPES2["STRING"] = "string";
107
+ FEATURE_FLAG_TYPES2["NUMBER"] = "number";
108
+ FEATURE_FLAG_TYPES2["OBJECT"] = "object";
109
+ return FEATURE_FLAG_TYPES2;
110
+ })(FEATURE_FLAG_TYPES || {});
111
+
112
+ // src/core/featureFlag/constants.ts
113
+ var FEATURE_FLAG_DEFAULTS = {
114
+ CACHE_TTL: 300,
115
+ REFRESH_INTERVAL: 0,
116
+ POOL_SIZE: 10,
117
+ TIMEOUT: 3e4,
118
+ TABLE_NAME: "feature_flags"
119
+ };
120
+ var FEATURE_FLAG_METADATA = {
121
+ FLAG_CHECK: "plyaz:feature_flag_check",
122
+ // Single feature flag check
123
+ RESOLVE_FLAGS: "plyaz:resolve_feature_flags"
124
+ // Multiple flags resolved at once
125
+ };
126
+
127
+ // src/core/events/enums.ts
128
+ var CoreEventScope = {
129
+ SYSTEM: "system",
130
+ ENTITY: "entity",
131
+ VALIDATION: "validation",
132
+ SANITIZATION: "sanitization",
133
+ API: "api",
134
+ CACHE: "cache",
135
+ AUTH: "auth",
136
+ DATABASE: "database",
137
+ FEATURE_FLAG: "featureFlag",
138
+ STORE: "store",
139
+ STORAGE: "storage",
140
+ NOTIFICATION: "notification"
141
+ };
142
+ var SystemEventAction = {
143
+ INITIALIZED: "initialized",
144
+ READY: "ready",
145
+ SHUTDOWN: "shutdown",
146
+ ERROR: "error",
147
+ WARNING: "warning"
148
+ };
149
+ var EntityEventAction = {
150
+ // Lifecycle (before API call)
151
+ CREATING: "creating",
152
+ UPDATING: "updating",
153
+ PATCHING: "patching",
154
+ DELETING: "deleting",
155
+ // Completed (after API call)
156
+ CREATED: "created",
157
+ UPDATED: "updated",
158
+ PATCHED: "patched",
159
+ DELETED: "deleted",
160
+ // Error/Complete
161
+ ERROR: "error",
162
+ COMPLETE: "complete",
163
+ // Bulk operations
164
+ BULK_CREATED: "bulkCreated",
165
+ BULK_DELETED: "bulkDeleted"
166
+ };
167
+ var ValidationEventAction = {
168
+ STARTED: "started",
169
+ SUCCESS: "success",
170
+ FAILED: "failed"
171
+ };
172
+ var SanitizationEventAction = {
173
+ STARTED: "started",
174
+ SUCCESS: "success",
175
+ FAILED: "failed"
176
+ };
177
+ var ApiEventAction = {
178
+ REQUEST_START: "requestStart",
179
+ REQUEST_SUCCESS: "requestSuccess",
180
+ REQUEST_ERROR: "requestError",
181
+ RETRY: "retry",
182
+ TIMEOUT: "timeout"
183
+ };
184
+ var CacheEventAction = {
185
+ HIT: "hit",
186
+ MISS: "miss",
187
+ SET: "set",
188
+ DELETE: "delete",
189
+ CLEAR: "clear",
190
+ EXPIRED: "expired"
191
+ };
192
+ var AuthEventAction = {
193
+ LOGIN: "login",
194
+ LOGOUT: "logout",
195
+ TOKEN_REFRESH: "tokenRefresh",
196
+ SESSION_EXPIRED: "sessionExpired",
197
+ UNAUTHORIZED: "unauthorized"
198
+ };
199
+ var DatabaseEventAction = {
200
+ CONNECTED: "connected",
201
+ DISCONNECTED: "disconnected",
202
+ QUERY: "query",
203
+ ERROR: "error",
204
+ TRANSACTION_START: "transactionStart",
205
+ TRANSACTION_COMMIT: "transactionCommit",
206
+ TRANSACTION_ROLLBACK: "transactionRollback"
207
+ };
208
+ var FeatureFlagEventAction = {
209
+ CHANGED: "changed",
210
+ EVALUATED: "evaluated",
211
+ REFRESHED: "refreshed"
212
+ };
213
+ var StoreEventAction = {
214
+ UPDATED: "updated",
215
+ RESET: "reset",
216
+ HYDRATED: "hydrated"
217
+ };
218
+ var StorageEventAction = {
219
+ UPLOADED: "uploaded",
220
+ DOWNLOADED: "downloaded",
221
+ DELETED: "deleted",
222
+ ERROR: "error",
223
+ HEALTH_CHECK: "healthCheck"
224
+ };
225
+ var NotificationEventAction = {
226
+ SENT: "sent",
227
+ FAILED: "failed",
228
+ DELIVERED: "delivered",
229
+ OPENED: "opened",
230
+ CLICKED: "clicked",
231
+ ERROR: "error",
232
+ HEALTH_CHECK: "healthCheck"
233
+ };
234
+ var CORE_EVENTS = {
235
+ SYSTEM: {
236
+ INITIALIZED: `${CoreEventScope.SYSTEM}:${SystemEventAction.INITIALIZED}`,
237
+ READY: `${CoreEventScope.SYSTEM}:${SystemEventAction.READY}`,
238
+ SHUTDOWN: `${CoreEventScope.SYSTEM}:${SystemEventAction.SHUTDOWN}`,
239
+ ERROR: `${CoreEventScope.SYSTEM}:${SystemEventAction.ERROR}`,
240
+ WARNING: `${CoreEventScope.SYSTEM}:${SystemEventAction.WARNING}`
241
+ },
242
+ ENTITY: {
243
+ CREATING: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATING}`,
244
+ UPDATING: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATING}`,
245
+ PATCHING: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHING}`,
246
+ DELETING: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETING}`,
247
+ CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.CREATED}`,
248
+ UPDATED: `${CoreEventScope.ENTITY}:${EntityEventAction.UPDATED}`,
249
+ PATCHED: `${CoreEventScope.ENTITY}:${EntityEventAction.PATCHED}`,
250
+ DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.DELETED}`,
251
+ ERROR: `${CoreEventScope.ENTITY}:${EntityEventAction.ERROR}`,
252
+ COMPLETE: `${CoreEventScope.ENTITY}:${EntityEventAction.COMPLETE}`,
253
+ BULK_CREATED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_CREATED}`,
254
+ BULK_DELETED: `${CoreEventScope.ENTITY}:${EntityEventAction.BULK_DELETED}`
255
+ },
256
+ VALIDATION: {
257
+ STARTED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.STARTED}`,
258
+ SUCCESS: `${CoreEventScope.VALIDATION}:${ValidationEventAction.SUCCESS}`,
259
+ FAILED: `${CoreEventScope.VALIDATION}:${ValidationEventAction.FAILED}`
260
+ },
261
+ SANITIZATION: {
262
+ STARTED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.STARTED}`,
263
+ SUCCESS: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.SUCCESS}`,
264
+ FAILED: `${CoreEventScope.SANITIZATION}:${SanitizationEventAction.FAILED}`
265
+ },
266
+ API: {
267
+ REQUEST_START: `${CoreEventScope.API}:${ApiEventAction.REQUEST_START}`,
268
+ REQUEST_SUCCESS: `${CoreEventScope.API}:${ApiEventAction.REQUEST_SUCCESS}`,
269
+ REQUEST_ERROR: `${CoreEventScope.API}:${ApiEventAction.REQUEST_ERROR}`,
270
+ RETRY: `${CoreEventScope.API}:${ApiEventAction.RETRY}`,
271
+ TIMEOUT: `${CoreEventScope.API}:${ApiEventAction.TIMEOUT}`
272
+ },
273
+ CACHE: {
274
+ HIT: `${CoreEventScope.CACHE}:${CacheEventAction.HIT}`,
275
+ MISS: `${CoreEventScope.CACHE}:${CacheEventAction.MISS}`,
276
+ SET: `${CoreEventScope.CACHE}:${CacheEventAction.SET}`,
277
+ DELETE: `${CoreEventScope.CACHE}:${CacheEventAction.DELETE}`,
278
+ CLEAR: `${CoreEventScope.CACHE}:${CacheEventAction.CLEAR}`,
279
+ EXPIRED: `${CoreEventScope.CACHE}:${CacheEventAction.EXPIRED}`
280
+ },
281
+ AUTH: {
282
+ LOGIN: `${CoreEventScope.AUTH}:${AuthEventAction.LOGIN}`,
283
+ LOGOUT: `${CoreEventScope.AUTH}:${AuthEventAction.LOGOUT}`,
284
+ TOKEN_REFRESH: `${CoreEventScope.AUTH}:${AuthEventAction.TOKEN_REFRESH}`,
285
+ SESSION_EXPIRED: `${CoreEventScope.AUTH}:${AuthEventAction.SESSION_EXPIRED}`,
286
+ UNAUTHORIZED: `${CoreEventScope.AUTH}:${AuthEventAction.UNAUTHORIZED}`
287
+ },
288
+ DATABASE: {
289
+ CONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.CONNECTED}`,
290
+ DISCONNECTED: `${CoreEventScope.DATABASE}:${DatabaseEventAction.DISCONNECTED}`,
291
+ QUERY: `${CoreEventScope.DATABASE}:${DatabaseEventAction.QUERY}`,
292
+ ERROR: `${CoreEventScope.DATABASE}:${DatabaseEventAction.ERROR}`,
293
+ TRANSACTION_START: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_START}`,
294
+ TRANSACTION_COMMIT: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_COMMIT}`,
295
+ TRANSACTION_ROLLBACK: `${CoreEventScope.DATABASE}:${DatabaseEventAction.TRANSACTION_ROLLBACK}`
296
+ },
297
+ FEATURE_FLAG: {
298
+ CHANGED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.CHANGED}`,
299
+ EVALUATED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.EVALUATED}`,
300
+ REFRESHED: `${CoreEventScope.FEATURE_FLAG}:${FeatureFlagEventAction.REFRESHED}`
301
+ },
302
+ STORE: {
303
+ UPDATED: `${CoreEventScope.STORE}:${StoreEventAction.UPDATED}`,
304
+ RESET: `${CoreEventScope.STORE}:${StoreEventAction.RESET}`,
305
+ HYDRATED: `${CoreEventScope.STORE}:${StoreEventAction.HYDRATED}`
306
+ },
307
+ STORAGE: {
308
+ UPLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.UPLOADED}`,
309
+ DOWNLOADED: `${CoreEventScope.STORAGE}:${StorageEventAction.DOWNLOADED}`,
310
+ DELETED: `${CoreEventScope.STORAGE}:${StorageEventAction.DELETED}`,
311
+ ERROR: `${CoreEventScope.STORAGE}:${StorageEventAction.ERROR}`,
312
+ HEALTH_CHECK: `${CoreEventScope.STORAGE}:${StorageEventAction.HEALTH_CHECK}`
313
+ },
314
+ NOTIFICATION: {
315
+ SENT: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.SENT}`,
316
+ FAILED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.FAILED}`,
317
+ DELIVERED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.DELIVERED}`,
318
+ OPENED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.OPENED}`,
319
+ CLICKED: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.CLICKED}`,
320
+ ERROR: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.ERROR}`,
321
+ HEALTH_CHECK: `${CoreEventScope.NOTIFICATION}:${NotificationEventAction.HEALTH_CHECK}`
322
+ }
323
+ };
324
+
325
+ // src/core/services/keys.ts
326
+ var SERVICE_KEYS = {
327
+ /** Example domain service (backend) */
328
+ EXAMPLE: "example",
329
+ /** Example domain service (frontend) */
330
+ EXAMPLE_FRONTEND: "example-frontend",
331
+ /** Feature flags service */
332
+ FEATURE_FLAGS: "featureFlags"
333
+ };
334
+ var ALL_SERVICE_KEYS = Object.values(SERVICE_KEYS);
335
+
336
+ export { ALL_SERVICE_KEYS, APP_CONTEXTS, ApiEventAction, AuthEventAction, BACKEND_RUNTIMES, CORE_EVENTS, CacheEventAction, CoreEventScope, DATABASE_FIELDS, DatabaseEventAction, EVALUATION_REASONS, EntityEventAction, FEATURE_FLAG_DEFAULTS, FEATURE_FLAG_FIELD, FEATURE_FLAG_METADATA, FEATURE_FLAG_PROVIDERS, FEATURE_FLAG_RULE_FIELD, FEATURE_FLAG_TABLE, FEATURE_FLAG_TYPES, FRONTEND_RUNTIMES, FeatureFlagEventAction, NODE_ENVIRONMENTS, NotificationEventAction, SERVICE_KEYS, SORT_DIRECTION, SYSTEM_USERS, SanitizationEventAction, StorageEventAction, StoreEventAction, SystemEventAction, TABLES, UNIVERSAL_RUNTIMES, ValidationEventAction };
337
+ //# sourceMappingURL=index.js.map
338
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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\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} 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 },\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} 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"]}
@@ -5,28 +5,15 @@
5
5
  * Services must implement these interfaces to be auto-initialized.
6
6
  */
7
7
  import type { ApiClientOptions } from '../../api';
8
- import type { FeatureFlagValue, FeatureFlagPollingConfig, CacheStrategyType } from '../../features';
8
+ import type { FeatureFlagValue, FeatureFlagPollingConfig } from '../../features';
9
9
  import type { PackageErrorLike, MessageCatalog } from '../../errors';
10
10
  import type { GlobalErrorHandlerConfig, ErrorHandlerLogger } from '../../errors/middleware';
11
11
  import type { RootStoreSlice } from '../../store';
12
12
  import type { CoreAppEnvironment, CoreAppContext, CoreRuntimeEnvironment, CoreServiceRuntime } from '../modules';
13
- import type { CoreDbServiceConfig } from '../services';
13
+ import type { CoreDbServiceConfig, CoreCacheConfig, CoreStorageConfig, CoreNotificationConfig } from '../services';
14
14
  import type { CoreInjectedServices } from '../domain';
15
- import type { StorageServiceConfig } from '../../storage';
16
- import type { NotificationServiceConfig } from '../../notifications';
17
15
  import type { MonitoringObservabilityAdapter, MonitoringAdapterWithPriority } from '../../observability';
18
- /**
19
- * Storage service configuration for Core initialization.
20
- * Uses the StorageServiceConfig from @plyaz/storage.
21
- * Backend-only - not available in browser/frontend runtimes.
22
- */
23
- export type CoreStorageConfig = StorageServiceConfig;
24
- /**
25
- * Notification service configuration for Core initialization.
26
- * Uses the NotificationServiceConfig from @plyaz/notifications.
27
- * Backend-only - not available in browser/frontend runtimes.
28
- */
29
- export type CoreNotificationConfig = NotificationServiceConfig;
16
+ export type { CoreCacheConfig, CoreStorageConfig, CoreNotificationConfig } from '../services';
30
17
  /**
31
18
  * Base interface that all domain service instances must implement.
32
19
  * This allows the registry to manage services generically.
@@ -676,36 +663,6 @@ export interface CoreErrorHandlerInitConfig extends Omit<GlobalErrorHandlerConfi
676
663
  replaceBuiltIn?: boolean;
677
664
  };
678
665
  }
679
- /**
680
- * Cache initialization configuration
681
- */
682
- export interface CoreCacheConfig {
683
- /** Cache strategy to use */
684
- strategy: CacheStrategyType;
685
- /** Whether caching is enabled (default: true) */
686
- isEnabled: boolean;
687
- /** Default TTL in seconds (default: 300 - 5 minutes) */
688
- ttl?: number;
689
- /** Key prefix for all cache entries (default: 'app') */
690
- prefix?: string;
691
- /** Redis-specific configuration (required when strategy is 'redis') */
692
- redis?: {
693
- /** Redis connection URL (e.g., redis://localhost:6379) */
694
- url?: string;
695
- /** Redis host (alternative to url) */
696
- host?: string;
697
- /** Redis port (default: 6379) */
698
- port?: number;
699
- /** Redis password */
700
- password?: string;
701
- /** Redis database number (default: 0) */
702
- db?: number;
703
- /** Connection timeout in milliseconds */
704
- connectTimeout?: number;
705
- /** Key prefix for Redis keys */
706
- keyPrefix?: string;
707
- };
708
- }
709
666
  /**
710
667
  * Observability initialization configuration
711
668
  */
@@ -5,6 +5,27 @@
5
5
  import type { DrizzleConfig, SupabaseConfig, SqlConfig, SoftDeleteConfig, DBCacheConfig, AuditConfig, DBEncryptionConfig } from '../../db';
6
6
  import type { ReactNode } from 'react';
7
7
  import type { ApiClientOptions } from '../../api/client';
8
+ import type { StorageServiceConfig } from '../../storage';
9
+ import type { NotificationServiceConfig } from '../../notifications';
10
+ import type { CacheStrategyType } from '../../features';
11
+ import type { BackendErrorStore, BackendErrorStoreConfig, HttpErrorHandlerConfig } from '../../errors/middleware';
12
+ export interface CoreCacheConfig {
13
+ strategy: CacheStrategyType;
14
+ isEnabled: boolean;
15
+ ttl?: number;
16
+ prefix?: string;
17
+ redis?: {
18
+ url?: string;
19
+ host?: string;
20
+ port?: number;
21
+ password?: string;
22
+ db?: number;
23
+ connectTimeout?: number;
24
+ keyPrefix?: string;
25
+ };
26
+ }
27
+ export type CoreStorageConfig = StorageServiceConfig;
28
+ export type CoreNotificationConfig = NotificationServiceConfig;
8
29
  /**
9
30
 
10
31
  /**
@@ -518,11 +539,9 @@ export interface CoreDbServiceConfig {
518
539
  */
519
540
  export interface CoreDbServiceInstance {
520
541
  /** Get the underlying database instance */
521
- getDatabase(): CoreDatabaseInstance | undefined;
522
- /** Execute a raw SQL query */
523
- query<T = unknown>(sql: string, params?: unknown[]): Promise<T[]>;
524
- /** Begin a transaction */
525
- transaction<T>(fn: (tx: unknown) => Promise<T>): Promise<T>;
542
+ getDatabase(adapterName?: string): CoreDatabaseInstance | undefined;
543
+ /** Close all database connections */
544
+ close(): Promise<void>;
526
545
  }
527
546
  /** Core's database instance interface (from @plyaz/db) */
528
547
  export interface CoreDatabaseInstance {
@@ -569,60 +588,42 @@ export interface CoreNotificationServiceInstance {
569
588
  /** Close/cleanup the notification service */
570
589
  close(): Promise<void>;
571
590
  }
572
- /**
573
- * DbService class interface (static methods)
574
- * Describes the DbService class, not an instance
575
- */
576
- export interface CoreDbServiceClass {
577
- initialize(config: CoreDbServiceConfig): Promise<CoreDbServiceInstance>;
591
+ export interface CoreDbServiceStatic {
592
+ initialize(config?: CoreDbServiceConfig): Promise<CoreDbServiceInstance>;
578
593
  getInstance(): CoreDbServiceInstance;
579
- createInstance?(config: CoreDbServiceConfig): Promise<CoreDbServiceInstance>;
580
- reset?(): void;
594
+ createInstance?(config?: CoreDbServiceConfig): Promise<CoreDbServiceInstance>;
595
+ reset?(): Promise<void>;
581
596
  }
582
- /**
583
- * CacheService class interface (static methods)
584
- * Describes the CacheService class, not an instance
585
- * Note: config uses unknown to avoid circular imports with init/types.ts
586
- */
587
- export interface CoreCacheServiceClass {
588
- initialize(config: unknown): Promise<void>;
597
+ export interface CoreCacheServiceStatic<TConfig = CoreCacheConfig> {
598
+ initialize(config: TConfig): Promise<void>;
589
599
  getInstance(): CoreCacheServiceInstance;
590
600
  reset?(): void;
591
601
  }
592
- /**
593
- * StorageService class interface (static methods)
594
- * Describes the StorageService class, not an instance
595
- * Note: config uses unknown to avoid circular imports with init/types.ts
596
- */
597
- export interface CoreStorageServiceClass {
598
- initialize(config: unknown): Promise<void>;
602
+ export interface CoreStorageServiceStatic<TConfig = CoreStorageConfig> {
603
+ initialize(config: TConfig): Promise<CoreStorageServiceInstance>;
599
604
  getInstance(): CoreStorageServiceInstance;
600
- createInstance?(config: unknown): Promise<CoreStorageServiceInstance>;
605
+ createInstance?(config: TConfig): Promise<CoreStorageServiceInstance>;
601
606
  reset?(): Promise<void>;
602
607
  }
603
- /**
604
- * NotificationService class interface (static methods)
605
- * Describes the NotificationService class, not an instance
606
- * Note: config uses unknown to avoid circular imports with init/types.ts
607
- */
608
- export interface CoreNotificationServiceClass {
609
- initialize(config: unknown): Promise<void>;
608
+ export interface CoreNotificationServiceStatic<TConfig = CoreNotificationConfig> {
609
+ initialize(config: TConfig): Promise<CoreNotificationServiceInstance>;
610
610
  getInstance(): CoreNotificationServiceInstance;
611
- createInstance?(config: unknown): Promise<CoreNotificationServiceInstance>;
611
+ createInstance?(config: TConfig): Promise<CoreNotificationServiceInstance>;
612
612
  reset?(): Promise<void>;
613
613
  }
614
614
  /**
615
- * ServerErrorMiddleware module interface
616
- * Describes the exports from @plyaz/errors/middleware/backend
615
+ * Minimal interface compatible with Next.js NextRequest
616
+ * Used to type withErrorHandler without importing 'next/server'
617
617
  */
618
- export interface CoreServerErrorMiddlewareModule {
619
- createErrorStore(config: {
620
- packageName: string;
621
- serviceName?: string;
622
- }): unknown;
623
- createHttpErrorHandler(config: unknown): unknown;
624
- createNestJsExceptionFilter(config: unknown): unknown;
625
- withErrorHandler<T extends (...args: unknown[]) => unknown>(handler: T, config?: unknown): T;
626
- createNextApiErrorHandler(config: unknown): unknown;
627
- handleNodeError(error: unknown, req: unknown, res: unknown, config?: unknown): void;
618
+ export interface NextRequestLike extends Request {
619
+ nextUrl: URL;
620
+ }
621
+ export interface CoreServerErrorMiddlewareStatic {
622
+ createErrorStore(config?: BackendErrorStoreConfig): BackendErrorStore;
623
+ createHttpErrorHandler(config?: HttpErrorHandlerConfig): unknown;
624
+ createNestJsExceptionFilter(config?: Record<string, unknown>): unknown;
625
+ withErrorHandler: <TReq extends NextRequestLike>(handler: (req: TReq, context?: unknown) => Promise<Response>, config?: HttpErrorHandlerConfig) => (req: TReq, context?: unknown) => Promise<Response>;
626
+ createNextApiErrorHandler(config?: HttpErrorHandlerConfig): unknown;
627
+ handleNodeError(error: unknown, req: unknown, res: unknown, config?: HttpErrorHandlerConfig): void;
628
628
  }
629
+ export type { BackendErrorStore, BackendErrorStoreConfig, HttpErrorHandlerConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plyaz/types",
3
- "version": "1.27.13",
3
+ "version": "1.27.15",
4
4
  "author": "Redeemer Pace",
5
5
  "license": "ISC",
6
6
  "description": "Provides shared TypeScript types and schema utilities for validation and parsing in the @playz ecosystem.",