@plyaz/core 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/dist/adapters/index.d.ts +16 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/nestjs.d.ts +79 -0
  4. package/dist/adapters/nestjs.d.ts.map +1 -0
  5. package/dist/adapters/nextjs.d.ts +28 -0
  6. package/dist/adapters/nextjs.d.ts.map +1 -0
  7. package/dist/backend/example/example.controller.d.ts +121 -0
  8. package/dist/backend/example/example.controller.d.ts.map +1 -0
  9. package/dist/backend/example/example.module.d.ts +29 -0
  10. package/dist/backend/example/example.module.d.ts.map +1 -0
  11. package/dist/backend/example/index.d.ts +8 -0
  12. package/dist/backend/example/index.d.ts.map +1 -0
  13. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  15. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
  17. package/dist/backend/featureFlags/config/validation.d.ts +6 -6
  18. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
  19. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
  20. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  21. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
  22. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  23. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
  24. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
  25. package/dist/backend/featureFlags/index.d.ts +6 -7
  26. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  27. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
  28. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
  30. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
  31. package/dist/backend/index.d.ts +5 -0
  32. package/dist/backend/index.d.ts.map +1 -1
  33. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  34. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  35. package/dist/base/cache/index.d.ts +1 -0
  36. package/dist/base/cache/index.d.ts.map +1 -1
  37. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  38. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  39. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  40. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  41. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  42. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  43. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  44. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  45. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  46. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  47. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  48. package/dist/base/observability/index.d.ts +17 -0
  49. package/dist/base/observability/index.d.ts.map +1 -0
  50. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  51. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  52. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  53. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  54. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  55. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  56. package/dist/domain/base/BaseMapper.d.ts +100 -0
  57. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  58. package/dist/domain/base/BaseValidator.d.ts +105 -0
  59. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  60. package/dist/domain/base/index.d.ts +10 -0
  61. package/dist/domain/base/index.d.ts.map +1 -0
  62. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  63. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  64. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  65. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  66. package/dist/domain/example/index.d.ts +10 -0
  67. package/dist/domain/example/index.d.ts.map +1 -0
  68. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  69. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  70. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  71. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  72. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  73. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  74. package/dist/domain/featureFlags/index.d.ts +10 -5
  75. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  76. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  77. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  78. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  79. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  80. package/dist/domain/featureFlags/module.d.ts +20 -0
  81. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  82. package/dist/domain/featureFlags/provider.d.ts +40 -1
  83. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  84. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  85. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  86. package/dist/domain/featureFlags/providers/database.d.ts +48 -46
  87. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  88. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  89. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  90. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  91. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  92. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  93. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  94. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  95. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  96. package/dist/domain/featureFlags/service.d.ts +112 -0
  97. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  98. package/dist/domain/index.d.ts +2 -0
  99. package/dist/domain/index.d.ts.map +1 -1
  100. package/dist/engine/featureFlags/engine.d.ts +8 -0
  101. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  102. package/dist/entry-backend.d.ts +24 -0
  103. package/dist/entry-backend.d.ts.map +1 -0
  104. package/dist/entry-backend.js +15635 -0
  105. package/dist/entry-backend.js.map +1 -0
  106. package/dist/entry-backend.mjs +15506 -0
  107. package/dist/entry-backend.mjs.map +1 -0
  108. package/dist/entry-frontend.d.ts +23 -0
  109. package/dist/entry-frontend.d.ts.map +1 -0
  110. package/dist/entry-frontend.js +11152 -0
  111. package/dist/entry-frontend.js.map +1 -0
  112. package/dist/entry-frontend.mjs +11089 -0
  113. package/dist/entry-frontend.mjs.map +1 -0
  114. package/dist/events/CoreEventManager.d.ts +116 -0
  115. package/dist/events/CoreEventManager.d.ts.map +1 -0
  116. package/dist/events/index.d.ts +27 -0
  117. package/dist/events/index.d.ts.map +1 -0
  118. package/dist/frontend/base/index.d.ts +8 -0
  119. package/dist/frontend/base/index.d.ts.map +1 -0
  120. package/dist/frontend/components/InitializationError.d.ts +25 -0
  121. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  122. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  123. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  124. package/dist/frontend/components/index.d.ts +9 -0
  125. package/dist/frontend/components/index.d.ts.map +1 -0
  126. package/dist/frontend/example/index.d.ts +9 -0
  127. package/dist/frontend/example/index.d.ts.map +1 -0
  128. package/dist/frontend/featureFlags/index.d.ts +28 -7
  129. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  130. package/dist/frontend/index.d.ts +4 -0
  131. package/dist/frontend/index.d.ts.map +1 -1
  132. package/dist/frontend/providers/ApiProvider.d.ts +2 -2
  133. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
  134. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  135. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  136. package/dist/frontend/providers/index.d.ts +1 -0
  137. package/dist/frontend/providers/index.d.ts.map +1 -1
  138. package/dist/frontend/store/feature-flags.d.ts +63 -0
  139. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  140. package/dist/frontend/store/index.d.ts +14 -0
  141. package/dist/frontend/store/index.d.ts.map +1 -0
  142. package/dist/frontend/store/integrations.d.ts +36 -0
  143. package/dist/frontend/store/integrations.d.ts.map +1 -0
  144. package/dist/frontend/store/service-accessors.d.ts +78 -0
  145. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  146. package/dist/index.d.ts +5 -2
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +15450 -0
  149. package/dist/index.js.map +1 -0
  150. package/dist/index.mjs +13678 -4697
  151. package/dist/index.mjs.map +1 -1
  152. package/dist/init/CoreInitializer.d.ts +582 -0
  153. package/dist/init/CoreInitializer.d.ts.map +1 -0
  154. package/dist/init/ServiceRegistry.d.ts +256 -0
  155. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  156. package/dist/init/index.d.ts +14 -0
  157. package/dist/init/index.d.ts.map +1 -0
  158. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  159. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  160. package/dist/init/nestjs/index.d.ts +5 -0
  161. package/dist/init/nestjs/index.d.ts.map +1 -0
  162. package/dist/init/nestjs/index.js +9059 -0
  163. package/dist/init/nestjs/index.js.map +1 -0
  164. package/dist/init/nestjs/index.mjs +9055 -0
  165. package/dist/init/nestjs/index.mjs.map +1 -0
  166. package/dist/init/react.d.ts +33 -0
  167. package/dist/init/react.d.ts.map +1 -0
  168. package/dist/models/example/ExampleRepository.d.ts +124 -0
  169. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  170. package/dist/models/example/index.d.ts +7 -0
  171. package/dist/models/example/index.d.ts.map +1 -0
  172. package/dist/{backend/featureFlags/database/repository.d.ts → models/featureFlags/FeatureFlagRepository.d.ts} +47 -5
  173. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  174. package/dist/models/featureFlags/index.d.ts +7 -0
  175. package/dist/models/featureFlags/index.d.ts.map +1 -0
  176. package/dist/models/index.d.ts +9 -0
  177. package/dist/models/index.d.ts.map +1 -0
  178. package/dist/services/ApiClientService.d.ts +92 -4
  179. package/dist/services/ApiClientService.d.ts.map +1 -1
  180. package/dist/services/CacheService.d.ts +176 -0
  181. package/dist/services/CacheService.d.ts.map +1 -0
  182. package/dist/services/DbService.d.ts +391 -0
  183. package/dist/services/DbService.d.ts.map +1 -0
  184. package/dist/services/NotificationService.d.ts +151 -0
  185. package/dist/services/NotificationService.d.ts.map +1 -0
  186. package/dist/services/StorageService.d.ts +144 -0
  187. package/dist/services/StorageService.d.ts.map +1 -0
  188. package/dist/services/index.d.ts +4 -0
  189. package/dist/services/index.d.ts.map +1 -1
  190. package/dist/utils/common/id.d.ts +83 -0
  191. package/dist/utils/common/id.d.ts.map +1 -0
  192. package/dist/utils/common/index.d.ts +2 -0
  193. package/dist/utils/common/index.d.ts.map +1 -1
  194. package/dist/utils/common/object.d.ts +70 -0
  195. package/dist/utils/common/object.d.ts.map +1 -0
  196. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  197. package/dist/utils/featureFlags/context.d.ts +0 -1
  198. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  199. package/dist/utils/index.d.ts +1 -0
  200. package/dist/utils/index.d.ts.map +1 -1
  201. package/dist/utils/mapperUtils.d.ts +38 -0
  202. package/dist/utils/mapperUtils.d.ts.map +1 -0
  203. package/dist/utils/runtime.d.ts +15 -0
  204. package/dist/utils/runtime.d.ts.map +1 -0
  205. package/dist/version.d.ts +24 -0
  206. package/dist/version.d.ts.map +1 -0
  207. package/dist/web_app/auth/add_user.d.ts +2 -2
  208. package/dist/web_app/auth/add_user.d.ts.map +1 -1
  209. package/dist/web_app/auth/update_user.d.ts +1 -1
  210. package/dist/web_app/auth/update_user.d.ts.map +1 -1
  211. package/package.json +89 -15
  212. package/dist/backend/featureFlags/database/connection.d.ts +0 -321
  213. package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
  214. package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
  215. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  216. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  217. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
  218. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  219. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  220. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  221. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  222. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  223. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  224. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  225. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  226. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  227. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  228. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  229. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  230. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  231. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  232. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  233. package/dist/index.cjs +0 -6435
  234. package/dist/index.cjs.map +0 -1
  235. package/dist/utils/db/databaseService.d.ts +0 -6
  236. package/dist/utils/db/databaseService.d.ts.map +0 -1
  237. package/dist/utils/db/index.d.ts +0 -2
  238. package/dist/utils/db/index.d.ts.map +0 -1
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Framework Adapters
3
+ *
4
+ * Adapters for different HTTP frameworks and runtimes.
5
+ *
6
+ * Available:
7
+ * - createHandler: Next.js API route handler with service injection
8
+ * - CoreModule: NestJS DI integration
9
+ *
10
+ * Types are available from '@plyaz/types/core':
11
+ * - CoreNextJsHandlerContext, CoreNextJsHandler, etc.
12
+ * - CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions
13
+ */
14
+ export { createHandler, nextHandler } from './nextjs';
15
+ export { CoreModule, CORE_DB_SERVICE, CORE_ENV, CORE_OPTIONS } from './nestjs';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * NestJS Framework Adapter
3
+ *
4
+ * Provides CoreModule for NestJS dependency injection.
5
+ * Initializes core services (db, env) for use across NestJS modules.
6
+ */
7
+ import type { DynamicModule } from '@nestjs/common';
8
+ import type { CoreDbServiceConfig } from '../services/DbService';
9
+ import type { CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions } from '@plyaz/types/core';
10
+ /**
11
+ * Core module options for NestJS
12
+ * Extended with specific DbServiceConfig type
13
+ */
14
+ interface CoreModuleOptions extends Omit<CoreNestJsModuleOptions, 'db'> {
15
+ /** Database configuration */
16
+ db?: CoreDbServiceConfig;
17
+ }
18
+ /**
19
+ * Async options for CoreModule
20
+ * Extended with specific CoreModuleOptions type
21
+ */
22
+ interface CoreModuleAsyncOptions extends Omit<CoreNestJsModuleAsyncOptions, 'useFactory'> {
23
+ useFactory: (...args: unknown[]) => CoreModuleOptions | Promise<CoreModuleOptions>;
24
+ }
25
+ /**
26
+ * Injection tokens for Core services
27
+ */
28
+ export declare const CORE_DB_SERVICE = "CORE_DB_SERVICE";
29
+ export declare const CORE_ENV = "CORE_ENV";
30
+ export declare const CORE_OPTIONS = "CORE_OPTIONS";
31
+ /**
32
+ * CoreModule for NestJS
33
+ *
34
+ * Provides Core services (DbService, etc.) via NestJS dependency injection.
35
+ * Import additional modules (FeatureFlagModule, etc.) separately.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * import { Module } from '@nestjs/common';
40
+ * import { CoreModule } from '@plyaz/core/adapters';
41
+ * import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';
42
+ *
43
+ * @Module({
44
+ * imports: [
45
+ * CoreModule.forRoot({ envPath: '.env' }),
46
+ * FeatureFlagModule.forRoot({ provider: 'database' }), // Auto-receives DbService
47
+ * ],
48
+ * })
49
+ * export class AppModule {}
50
+ * ```
51
+ *
52
+ * @example Async configuration
53
+ * ```typescript
54
+ * CoreModule.forRootAsync({
55
+ * imports: [ConfigModule],
56
+ * inject: [ConfigService],
57
+ * useFactory: (config: ConfigService) => ({
58
+ * db: {
59
+ * adapter: 'drizzle',
60
+ * drizzle: {
61
+ * connectionString: config.get('DATABASE_URL'),
62
+ * },
63
+ * },
64
+ * }),
65
+ * })
66
+ * ```
67
+ */
68
+ export declare const CoreModule: {
69
+ /**
70
+ * Register CoreModule with static configuration
71
+ */
72
+ forRoot(options?: CoreModuleOptions): DynamicModule;
73
+ /**
74
+ * Register CoreModule with async configuration
75
+ */
76
+ forRootAsync(options: CoreModuleAsyncOptions): DynamicModule;
77
+ };
78
+ export {};
79
+ //# sourceMappingURL=nestjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAG/F;;;GAGG;AACH,UAAU,iBAAkB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC;IACrE,6BAA6B;IAC7B,EAAE,CAAC,EAAE,mBAAmB,CAAC;CAC1B;AAED;;;GAGG;AACH,UAAU,sBAAuB,SAAQ,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;IACvF,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpF;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;sBACc,iBAAiB,GAAQ,aAAa;IAsCvD;;OAEG;0BACmB,sBAAsB,GAAG,aAAa;CAyC7D,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Next.js Adapter
3
+ *
4
+ * Provides utilities for Next.js API routes with auto-initialization
5
+ * and service injection.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // app/api/users/route.ts
10
+ * import { createHandler } from '@plyaz/core/adapters';
11
+ *
12
+ * export const GET = createHandler(async ({ db, query }) => {
13
+ * const users = await db.list('users');
14
+ * return { users };
15
+ * });
16
+ *
17
+ * export const POST = createHandler(async ({ db, body }) => {
18
+ * const user = await db.create('users', body);
19
+ * return { user, status: 201 };
20
+ * });
21
+ * ```
22
+ */
23
+ import type { CoreNextJsHandler, CoreNextJsHandlerOptions } from '@plyaz/types/core';
24
+ export declare function createHandler(handler: CoreNextJsHandler, options?: CoreNextJsHandlerOptions): (request: Request, context?: {
25
+ params?: Record<string, string>;
26
+ }) => Promise<Response>;
27
+ export { createHandler as nextHandler };
28
+ //# sourceMappingURL=nextjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEV,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAgI3B,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,GACjC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAcxF;AAGD,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Example Controller
3
+ *
4
+ * Simple NestJS controller demonstrating Core + BackendExampleDomainService integration.
5
+ * Use as reference for building your own backend modules.
6
+ *
7
+ * Demonstrates:
8
+ * - Standard CRUD operations with error handling
9
+ * - Single error throwing (standard pattern)
10
+ * - Array error throwing (multiple validation errors)
11
+ * - Standard API response format using SuccessResponseStandard
12
+ * - How errors are automatically captured and returned as ErrorResponse
13
+ */
14
+ import { BackendExampleDomainService } from '../../domain/example';
15
+ import type { ExampleEntity, CreateExampleDTO, PatchExampleDTO } from '@plyaz/types/examples';
16
+ import type { ReturnResponseType } from '@plyaz/types/errors';
17
+ export declare const BACKEND_EXAMPLE_DOMAIN_SERVICE = "BACKEND_EXAMPLE_DOMAIN_SERVICE";
18
+ /**
19
+ * Example Controller
20
+ *
21
+ * Routes:
22
+ * - GET /example/health - Health check
23
+ * - GET /example/entities/:id - Get entity by ID
24
+ * - POST /example/entities - Create entity
25
+ * - PATCH /example/entities/:id - Update entity
26
+ * - DELETE /example/entities/:id - Delete entity
27
+ * - POST /example/entities/validated - Create with full validation (array errors example)
28
+ * - GET /example/errors/single - Demo: Single error response
29
+ * - GET /example/errors/array - Demo: Array of errors response
30
+ */
31
+ export declare class ExampleController {
32
+ private readonly exampleService;
33
+ constructor(exampleService: BackendExampleDomainService);
34
+ /**
35
+ * Health check endpoint
36
+ * GET /example/health
37
+ */
38
+ health(): ReturnResponseType<{
39
+ service: boolean;
40
+ timestamp: string;
41
+ }>;
42
+ /**
43
+ * Get entity by ID
44
+ * GET /example/entities/:id
45
+ */
46
+ getEntity(id: string): Promise<ReturnResponseType<ExampleEntity | null>>;
47
+ /**
48
+ * Create a new entity
49
+ * POST /example/entities
50
+ *
51
+ * Example success response:
52
+ * ```json
53
+ * {
54
+ * "success": true,
55
+ * "message": "Entity created successfully",
56
+ * "data": { ... },
57
+ * "codeStatus": 201
58
+ * }
59
+ * ```
60
+ */
61
+ createEntity(dto: CreateExampleDTO): Promise<ReturnResponseType<ExampleEntity>>;
62
+ /**
63
+ * Update an entity (partial)
64
+ * PATCH /example/entities/:id
65
+ */
66
+ updateEntity(id: string, dto: PatchExampleDTO): Promise<ReturnResponseType<ExampleEntity>>;
67
+ /**
68
+ * Delete an entity
69
+ * DELETE /example/entities/:id
70
+ */
71
+ deleteEntity(id: string): Promise<ReturnResponseType<null>>;
72
+ /**
73
+ * Create entity with full validation (array errors pattern)
74
+ * POST /example/entities/validated
75
+ *
76
+ * Demonstrates validator throwing validation errors.
77
+ * The validator.validateCreateOrThrow() will automatically throw all validation errors as an array.
78
+ *
79
+ * Example success response:
80
+ * ```json
81
+ * {
82
+ * "success": true,
83
+ * "message": "Entity created successfully",
84
+ * "data": { ... },
85
+ * "codeStatus": 201
86
+ * }
87
+ * ```
88
+ */
89
+ createEntityWithValidation(dto: unknown): Promise<ReturnResponseType<ExampleEntity>>;
90
+ /**
91
+ * Demo: Single validation error response
92
+ * GET /example/errors/single
93
+ *
94
+ * Demonstrates validator throwing a SINGLE validation error.
95
+ * Service uses validateCreateOrThrow() with ONE invalid field.
96
+ *
97
+ * Response: HTTP 400
98
+ * ```json
99
+ * [{ "code": "VALIDATION_FAILED", "message": "Name is required", "field": "name" }]
100
+ * ```
101
+ */
102
+ demoSingleError(): Promise<void>;
103
+ /**
104
+ * Demo: Multiple validation errors response
105
+ * GET /example/errors/array
106
+ *
107
+ * Demonstrates validator throwing MULTIPLE validation errors.
108
+ * Service uses validateCreateOrThrow() with MULTIPLE invalid fields.
109
+ *
110
+ * Response: HTTP 400
111
+ * ```json
112
+ * [
113
+ * { "code": "VALIDATION_FAILED", "message": "Name is required", "field": "name" },
114
+ * { "code": "VALIDATION_FAILED", "message": "Amount must be non-negative", "field": "amount" },
115
+ * { "code": "VALIDATION_FAILED", "message": "Description is required", "field": "description" }
116
+ * ]
117
+ * ```
118
+ */
119
+ demoArrayErrors(): Promise<void>;
120
+ }
121
+ //# sourceMappingURL=example.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/example/example.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,eAAO,MAAM,8BAA8B,mCAAmC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,2BAA2B;IAG9D;;;OAGG;IAEH,MAAM,IAAI,kBAAkB,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAOrE;;;OAGG;IAEG,SAAS,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAK3F;;;;;;;;;;;;;OAaG;IAGG,YAAY,CAAS,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAK7F;;;OAGG;IAEG,YAAY,CACH,EAAE,EAAE,MAAM,EACf,GAAG,EAAE,eAAe,GAC3B,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAK7C;;;OAGG;IAGG,YAAY,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAK9E;;;;;;;;;;;;;;;;OAgBG;IAGG,0BAA0B,CACtB,GAAG,EAAE,OAAO,GACnB,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAW7C;;;;;;;;;;;OAWG;IAEG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC;;;;;;;;;;;;;;;OAeG;IAEG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Example Module
3
+ *
4
+ * NestJS module demonstrating the proper pattern using domain service directly:
5
+ * Module → Controller → BackendExampleService
6
+ *
7
+ * The BackendExampleService is auto-initialized by Core.initialize() and
8
+ * can be injected via ServiceRegistry or provided directly to controllers.
9
+ *
10
+ * @example Usage in app.module.ts
11
+ * ```typescript
12
+ * import { CoreModule } from '@plyaz/core/nestjs';
13
+ * import { ExampleModule } from '@plyaz/core';
14
+ *
15
+ * @Module({
16
+ * imports: [
17
+ * CoreModule.forRoot({ envPath: '.env' }),
18
+ * ExampleModule,
19
+ * ],
20
+ * })
21
+ * export class AppModule {}
22
+ * ```
23
+ */
24
+ import { BACKEND_EXAMPLE_DOMAIN_SERVICE } from './example.controller';
25
+ import { BackendExampleDomainService } from '../../domain/example';
26
+ export declare class ExampleModule {
27
+ }
28
+ export { BackendExampleDomainService, BACKEND_EXAMPLE_DOMAIN_SERVICE };
29
+ //# sourceMappingURL=example.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.module.d.ts","sourceRoot":"","sources":["../../../src/backend/example/example.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAqB,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAA+B,MAAM,sBAAsB,CAAC;AAEhG,qBAYa,aAAa;CAAG;AAG7B,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Example Module Exports
3
+ *
4
+ * Pattern: Module → Controller → BackendExampleDomainService (from domain)
5
+ */
6
+ export { ExampleModule, BACKEND_EXAMPLE_DOMAIN_SERVICE, BackendExampleDomainService, } from './example.module';
7
+ export { ExampleController } from './example.controller';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/example/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Feature Flag Domain Service (Backend)
3
+ *
4
+ * Backend-specific domain service that extends BaseDomainService and
5
+ * uses providers (database, redis, memory, etc.) to manage feature flags.
6
+ *
7
+ * Runtime: Backend only (uses providers, no API calls)
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Create service instance with a provider
12
+ * const provider = new DatabaseFeatureFlagProvider(config, FEATURES);
13
+ * await provider.initialize();
14
+ *
15
+ * const flagService = new FeatureFlagDomainService({
16
+ * enabled: true,
17
+ * provider,
18
+ * });
19
+ *
20
+ * // Use the service
21
+ * const isEnabled = await flagService.isEnabled('new-feature', { userId: 'user-123' });
22
+ * ```
23
+ */
24
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagContext, FeatureFlagValue, FeatureFlagEvaluation, CreateFlagRequest } from '@plyaz/types';
25
+ import { BaseDomainService } from '../../domain/base';
26
+ import type { FeatureFlagDomainServiceConfig as _FeatureFlagDomainServiceConfig, FeatureFlagDomainEventType } from '@plyaz/types/features';
27
+ /**
28
+ * Feature Flag Backend Service
29
+ *
30
+ * Extends BaseDomainService with generics for strong typing.
31
+ * Uses an injected provider (database, redis, memory, etc.) for data access.
32
+ *
33
+ * No mapper/validator as this service handles simple flag values.
34
+ * No API client - uses provider directly for data access.
35
+ */
36
+ export declare class FeatureFlagDomainService extends BaseDomainService<_FeatureFlagDomainServiceConfig> {
37
+ /** The feature flag provider */
38
+ private readonly provider;
39
+ constructor(config: _FeatureFlagDomainServiceConfig);
40
+ /**
41
+ * Check if service is available
42
+ */
43
+ isAvailable(): boolean;
44
+ /**
45
+ * Dispose/cleanup the service
46
+ */
47
+ dispose(): void;
48
+ /**
49
+ * Refresh the provider cache
50
+ */
51
+ refresh(): Promise<void>;
52
+ /**
53
+ * Evaluate a single feature flag
54
+ *
55
+ * @param key - Feature flag key
56
+ * @param context - Evaluation context (user, environment, etc.)
57
+ * @returns Full evaluation result
58
+ */
59
+ evaluate(key: string, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<string>>;
60
+ /**
61
+ * Check if a feature flag is enabled
62
+ *
63
+ * @param key - Feature flag key
64
+ * @param context - Evaluation context
65
+ * @returns Boolean indicating if flag is enabled
66
+ */
67
+ isEnabled(key: string, context?: FeatureFlagContext): Promise<boolean>;
68
+ /**
69
+ * Get the value of a feature flag
70
+ *
71
+ * @param key - Feature flag key
72
+ * @param context - Evaluation context
73
+ * @returns The flag value
74
+ */
75
+ getValue<T = FeatureFlagValue>(key: string, context?: FeatureFlagContext): Promise<T>;
76
+ /**
77
+ * Evaluate all feature flags for a context
78
+ *
79
+ * @param context - Evaluation context
80
+ * @returns Record of all flag evaluations
81
+ */
82
+ evaluateAll(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<string>>>;
83
+ /**
84
+ * Create a new feature flag
85
+ *
86
+ * @param data - Flag creation data
87
+ * @returns The created feature flag
88
+ */
89
+ create(data: CreateFlagRequest<string>): Promise<FeatureFlag<string>>;
90
+ /**
91
+ * Update an existing feature flag
92
+ *
93
+ * @param key - Flag key to update
94
+ * @param data - Partial update data
95
+ * @returns The updated feature flag
96
+ */
97
+ update(key: string, data: Partial<CreateFlagRequest<string>>): Promise<FeatureFlag<string>>;
98
+ /**
99
+ * Delete a feature flag
100
+ *
101
+ * @param key - Flag key to delete
102
+ */
103
+ delete(key: string): Promise<void>;
104
+ /**
105
+ * Get rules for a specific flag
106
+ *
107
+ * @param key - Flag key
108
+ * @returns Array of rules
109
+ */
110
+ getRules(key: string): Promise<FeatureFlagRule<string>[]>;
111
+ /**
112
+ * Get all rules
113
+ *
114
+ * @returns Array of all rules
115
+ */
116
+ getAllRules(): Promise<FeatureFlagRule<string>[]>;
117
+ /**
118
+ * Set a runtime override for a flag (in-memory, not persisted)
119
+ *
120
+ * @param key - Flag key
121
+ * @param value - Override value
122
+ */
123
+ setOverride(key: string, value: FeatureFlagValue): void;
124
+ /**
125
+ * Remove a runtime override for a flag
126
+ *
127
+ * @param key - Flag key
128
+ */
129
+ removeOverride(key: string): void;
130
+ /**
131
+ * Clear all runtime overrides
132
+ */
133
+ clearOverrides(): void;
134
+ /**
135
+ * Subscribe to provider changes
136
+ *
137
+ * @param callback - Callback when flags change
138
+ * @returns Unsubscribe function
139
+ */
140
+ subscribe(callback: () => void): () => void;
141
+ /**
142
+ * Subscribe to feature flag events
143
+ *
144
+ * @param event - Event type to subscribe to
145
+ * @param handler - Event handler
146
+ * @returns Unsubscribe function
147
+ */
148
+ on(event: FeatureFlagDomainEventType, handler: (data: unknown) => void): () => void;
149
+ }
150
+ //# sourceMappingURL=FeatureFlagDomainService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureFlagDomainService.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/FeatureFlagDomainService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAQtD,OAAO,KAAK,EACV,8BAA8B,IAAI,+BAA+B,EACjE,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB,CAAC,+BAA+B,CAAC;IAC9F,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAM3C,MAAM,EAAE,+BAA+B;IA4BnD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;;;;OAMG;IACG,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAgBzC;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5E;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAM3F;;;;;OAKG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAiBzD;;;;;OAKG;IACG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgB3E;;;;;;OAMG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GACvC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgB/B;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAY/D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAgBvD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IASvD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASjC;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAS3C;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAGpF"}
@@ -5,7 +5,8 @@
5
5
  * Imports configuration from .env.local and provides validation.
6
6
  *
7
7
  */
8
- import { type FeatureFlagEnvironmentConfig } from '@plyaz/types';
8
+ import { type CoreFeatureFlagEnvironmentConfig } from '@plyaz/types/core';
9
+ import type { FeatureFlagConfigOptions as _FeatureFlagConfigOptions } from '@plyaz/types/features';
9
10
  /**
10
11
  * Feature flag configuration factory
11
12
  *
@@ -15,7 +16,7 @@ import { type FeatureFlagEnvironmentConfig } from '@plyaz/types';
15
16
  * @example
16
17
  * ```typescript
17
18
  * // Step 1: Called automatically by FeatureFlagService.onModuleInit()
18
- * const config = FeatureFlagConfigFactory.fromEnvironment();
19
+ * const config = FeatureFlagConfigFactory.fromOptions({ environment: Core.env.NODE_ENV });
19
20
  *
20
21
  * // Step 2: Configuration is validated
21
22
  * // Step 3: Provider is created with this config
@@ -48,64 +49,41 @@ export declare class FeatureFlagConfigFactory {
48
49
  * 7. → Database connection established
49
50
  *
50
51
  * @returns Validated configuration object ready for provider creation
51
- * @throws {FeatureFlagConfigError} If environment variables are missing or invalid
52
- *
53
- * @example
54
- * ```typescript
55
- * // This method reads from process.env and creates:
56
- * {
57
- * provider: 'database',
58
- * isCacheEnabled: true,
59
- * cacheTtl: 300,
60
- * databaseConfig: {
61
- * connectionString: 'https://your-project.supabase.co',
62
- * tableName: 'feature_flags',
63
- * poolSize: 10,
64
- * timeout: 30000
65
- * }
66
- * }
67
- * ```
52
+ * @throws {FeatureFlagConfigError} If required options are missing or invalid
68
53
  */
69
- static fromEnvironment(): FeatureFlagEnvironmentConfig;
70
54
  /**
71
- * Determines which provider to use - now uses constants instead of environment variables
55
+ * Creates configuration from explicit options
72
56
  *
73
- * @private
74
- * @returns Provider type from constants
75
- */
76
- private static getProvider;
77
- private static getCacheEnabled;
78
- private static getCacheTtl;
79
- private static getRefreshInterval;
80
- private static getLoggingEnabled;
81
- /**
82
- * Creates database configuration from environment variables
57
+ * All options have sensible defaults - only provide what you need to override.
58
+ * Environment is automatically read from Core.env.NODE_ENV.
83
59
  *
84
- * **CRITICAL**: This method requires SUPABASE_URL to be set in .env.local
60
+ * Note: For 'database' provider, DbService must be initialized first via Core.initialize().
61
+ * The database provider uses the already-configured DbService, no connection string needed here.
85
62
  *
86
- * @private
87
- * @returns Database configuration object
88
- * @throws {FeatureFlagConfigError} If SUPABASE_URL is missing
63
+ * @example Basic usage with defaults (memory provider)
64
+ * ```typescript
65
+ * const config = FeatureFlagConfigFactory.fromOptions();
66
+ * // Uses memory provider, cache enabled, default TTL
67
+ * ```
68
+ *
69
+ * @example Database provider (requires Core.initialize() first)
70
+ * ```typescript
71
+ * // First: Core.initialize() with db config
72
+ * await Core.initialize({ db: { adapter: 'sql', sql: { connectionString: '...' } } });
89
73
  *
90
- * @example Environment Variables Required:
91
- * ```bash
92
- * SUPABASE_URL=https://your-project.supabase.co # REQUIRED
93
- * SUPABASE_ANON_PUBLIC_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Used in connection
94
- * FEATURE_FLAG_TABLE_NAME=feature_flags # Optional, defaults to 'feature_flags'
95
- * DB_POOL_SIZE=10 # Optional, defaults to 10
96
- * DB_TIMEOUT=30000 # Optional, defaults to 30000ms
74
+ * // Then: Use database provider for feature flags
75
+ * const config = FeatureFlagConfigFactory.fromOptions({ provider: 'database' });
97
76
  * ```
98
77
  *
99
- * @example Generated Configuration:
78
+ * @example Custom cache settings
100
79
  * ```typescript
101
- * {
102
- * connectionString: 'https://your-project.supabase.co',
103
- * tableName: 'feature_flags',
104
- * poolSize: 10,
105
- * timeout: 30000
106
- * }
80
+ * const config = FeatureFlagConfigFactory.fromOptions({
81
+ * cacheEnabled: true,
82
+ * cacheTtl: 600, // 10 minutes
83
+ * refreshInterval: 30,
84
+ * });
107
85
  * ```
108
86
  */
109
- private static getDatabaseConfig;
87
+ static fromOptions(options?: _FeatureFlagConfigOptions): CoreFeatureFlagEnvironmentConfig;
110
88
  }
111
89
  //# sourceMappingURL=feature-flag.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag.config.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/feature-flag.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAKL,KAAK,4BAA4B,EAGlC,MAAM,cAAc,CAAC;AAItB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,wBAAwB;IACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,MAAM,CAAC,eAAe,IAAI,4BAA4B;IAmBtD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAgBjC"}
1
+ {"version":3,"file":"feature-flag.config.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/feature-flag.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,wBAAwB;IACnC;;;;;;;;;;;;;;;;OAgBG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IAEH,MAAM,CAAC,WAAW,CAAC,OAAO,GAAE,yBAA8B,GAAG,gCAAgC;CA+B9F"}
@@ -5,7 +5,7 @@
5
5
  * Provides error reporting and environment-specific validation.
6
6
  *
7
7
  */
8
- import { type FeatureFlagEnvironmentConfig, type FeatureFlagValidationResult } from '@plyaz/types';
8
+ import { type CoreFeatureFlagEnvironmentConfig, type CoreFeatureFlagValidationResult } from '@plyaz/types/core';
9
9
  /**
10
10
  * FeatureFlagConfigValidator - Comprehensive configuration validation for feature flags
11
11
  *
@@ -121,7 +121,7 @@ export declare class FeatureFlagConfigValidator {
121
121
  * // ]
122
122
  * ```
123
123
  */
124
- static validate(config: FeatureFlagEnvironmentConfig): FeatureFlagValidationResult;
124
+ static validate(config: CoreFeatureFlagEnvironmentConfig): CoreFeatureFlagValidationResult;
125
125
  private static validateProvider;
126
126
  private static validateCacheSettings;
127
127
  private static validateDatabaseConfig;
@@ -138,13 +138,13 @@ export declare class FeatureFlagConfigValidator {
138
138
  * to ensure the system doesn't start with invalid configuration.
139
139
  *
140
140
  * @param {FeatureFlagEnvironmentConfig} config - Configuration to validate
141
- * @throws {DatabaseError} When validation fails with detailed error messages
141
+ * @throws {DatabasePackageError} When validation fails with detailed error messages
142
142
  *
143
143
  * @example Startup Validation
144
144
  * ```typescript
145
145
  * // In FeatureFlagService.onModuleInit()
146
146
  * try {
147
- * const config = FeatureFlagConfigFactory.fromEnvironment();
147
+ * const config = FeatureFlagConfigFactory.fromOptions();
148
148
  * FeatureFlagConfigValidator.validateOrThrow(config);
149
149
  *
150
150
  * // Configuration is valid, proceed with initialization
@@ -158,7 +158,7 @@ export declare class FeatureFlagConfigValidator {
158
158
  *
159
159
  * @example Error Output
160
160
  * ```typescript
161
- * // When validation fails, throws DatabaseError with message:
161
+ * // When validation fails, throws DatabasePackageError with message:
162
162
  * // "Configuration validation failed:
163
163
  * // provider: Invalid provider: invalid_type. Must be one of: memory, file, redis, api, database
164
164
  * // cacheTtl: Cache TTL must be non-negative
@@ -176,6 +176,6 @@ export declare class FeatureFlagConfigValidator {
176
176
  * # databaseConfig.connectionString: Database connection string is required"
177
177
  * ```
178
178
  */
179
- static validateOrThrow(config: FeatureFlagEnvironmentConfig): void;
179
+ static validateOrThrow(config: CoreFeatureFlagEnvironmentConfig): void;
180
180
  }
181
181
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAGjC,MAAM,cAAc,CAAC;AAKtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,0BAA0B;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,2BAA2B;IAiClF,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAoBvC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,WAAW;IA+B1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;CAYnE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAY3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,0BAA0B;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,GAAG,+BAA+B;IAiC1F,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAoBvC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAqC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gCAAgC,GAAG,IAAI;CAYvE"}