@plyaz/core 1.2.0 → 1.3.0

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 (240) hide show
  1. package/README.md +248 -183
  2. package/dist/adapters/index.d.ts +16 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/nestjs.d.ts +79 -0
  5. package/dist/adapters/nestjs.d.ts.map +1 -0
  6. package/dist/adapters/nextjs.d.ts +28 -0
  7. package/dist/adapters/nextjs.d.ts.map +1 -0
  8. package/dist/backend/example/example.controller.d.ts +121 -0
  9. package/dist/backend/example/example.controller.d.ts.map +1 -0
  10. package/dist/backend/example/example.module.d.ts +29 -0
  11. package/dist/backend/example/example.module.d.ts.map +1 -0
  12. package/dist/backend/example/index.d.ts +8 -0
  13. package/dist/backend/example/index.d.ts.map +1 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  15. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
  17. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
  18. package/dist/backend/featureFlags/config/validation.d.ts +6 -6
  19. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
  20. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
  21. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  22. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
  23. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  24. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
  25. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
  26. package/dist/backend/featureFlags/index.d.ts +6 -7
  27. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  28. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
  30. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
  31. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
  32. package/dist/backend/index.d.ts +5 -0
  33. package/dist/backend/index.d.ts.map +1 -1
  34. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  35. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  36. package/dist/base/cache/index.d.ts +1 -0
  37. package/dist/base/cache/index.d.ts.map +1 -1
  38. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  39. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  40. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  41. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  42. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  43. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  44. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  45. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  46. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  47. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  48. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  49. package/dist/base/observability/index.d.ts +17 -0
  50. package/dist/base/observability/index.d.ts.map +1 -0
  51. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  52. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  53. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  54. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  55. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  56. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  57. package/dist/domain/base/BaseMapper.d.ts +100 -0
  58. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  59. package/dist/domain/base/BaseValidator.d.ts +105 -0
  60. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  61. package/dist/domain/base/index.d.ts +10 -0
  62. package/dist/domain/base/index.d.ts.map +1 -0
  63. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  64. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  65. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  66. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  67. package/dist/domain/example/index.d.ts +10 -0
  68. package/dist/domain/example/index.d.ts.map +1 -0
  69. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  70. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  71. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  72. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  73. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  74. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  75. package/dist/domain/featureFlags/index.d.ts +10 -5
  76. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  77. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  78. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  79. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  80. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  81. package/dist/domain/featureFlags/module.d.ts +20 -0
  82. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  83. package/dist/domain/featureFlags/provider.d.ts +40 -1
  84. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  85. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  86. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  87. package/dist/domain/featureFlags/providers/database.d.ts +54 -47
  88. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  89. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  90. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  91. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  92. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  93. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  94. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  95. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  96. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  97. package/dist/domain/featureFlags/service.d.ts +112 -0
  98. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  99. package/dist/domain/index.d.ts +2 -0
  100. package/dist/domain/index.d.ts.map +1 -1
  101. package/dist/engine/featureFlags/engine.d.ts +8 -0
  102. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  103. package/dist/entry-backend.d.ts +26 -0
  104. package/dist/entry-backend.d.ts.map +1 -0
  105. package/dist/entry-backend.js +15455 -0
  106. package/dist/entry-backend.js.map +1 -0
  107. package/dist/entry-backend.mjs +15339 -0
  108. package/dist/entry-backend.mjs.map +1 -0
  109. package/dist/entry-frontend.d.ts +23 -0
  110. package/dist/entry-frontend.d.ts.map +1 -0
  111. package/dist/entry-frontend.js +11340 -0
  112. package/dist/entry-frontend.js.map +1 -0
  113. package/dist/entry-frontend.mjs +11278 -0
  114. package/dist/entry-frontend.mjs.map +1 -0
  115. package/dist/events/CoreEventManager.d.ts +116 -0
  116. package/dist/events/CoreEventManager.d.ts.map +1 -0
  117. package/dist/events/index.d.ts +27 -0
  118. package/dist/events/index.d.ts.map +1 -0
  119. package/dist/frontend/base/index.d.ts +8 -0
  120. package/dist/frontend/base/index.d.ts.map +1 -0
  121. package/dist/frontend/components/InitializationError.d.ts +25 -0
  122. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  123. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  124. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  125. package/dist/frontend/components/index.d.ts +9 -0
  126. package/dist/frontend/components/index.d.ts.map +1 -0
  127. package/dist/frontend/example/index.d.ts +9 -0
  128. package/dist/frontend/example/index.d.ts.map +1 -0
  129. package/dist/frontend/featureFlags/index.d.ts +28 -7
  130. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  131. package/dist/frontend/index.d.ts +4 -0
  132. package/dist/frontend/index.d.ts.map +1 -1
  133. package/dist/frontend/providers/ApiProvider.d.ts +2 -2
  134. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
  135. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  136. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  137. package/dist/frontend/providers/index.d.ts +1 -0
  138. package/dist/frontend/providers/index.d.ts.map +1 -1
  139. package/dist/frontend/store/feature-flags.d.ts +63 -0
  140. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  141. package/dist/frontend/store/index.d.ts +14 -0
  142. package/dist/frontend/store/index.d.ts.map +1 -0
  143. package/dist/frontend/store/integrations.d.ts +36 -0
  144. package/dist/frontend/store/integrations.d.ts.map +1 -0
  145. package/dist/frontend/store/service-accessors.d.ts +78 -0
  146. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  147. package/dist/index.d.ts +5 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +15262 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/index.mjs +13667 -4861
  152. package/dist/index.mjs.map +1 -1
  153. package/dist/init/CoreInitializer.d.ts +583 -0
  154. package/dist/init/CoreInitializer.d.ts.map +1 -0
  155. package/dist/init/ServiceRegistry.d.ts +256 -0
  156. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  157. package/dist/init/index.d.ts +14 -0
  158. package/dist/init/index.d.ts.map +1 -0
  159. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  160. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  161. package/dist/init/nestjs/index.d.ts +5 -0
  162. package/dist/init/nestjs/index.d.ts.map +1 -0
  163. package/dist/init/nestjs/index.js +9234 -0
  164. package/dist/init/nestjs/index.js.map +1 -0
  165. package/dist/init/nestjs/index.mjs +9230 -0
  166. package/dist/init/nestjs/index.mjs.map +1 -0
  167. package/dist/init/react.d.ts +33 -0
  168. package/dist/init/react.d.ts.map +1 -0
  169. package/dist/models/example/ExampleRepository.d.ts +166 -0
  170. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  171. package/dist/models/example/index.d.ts +7 -0
  172. package/dist/models/example/index.d.ts.map +1 -0
  173. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +161 -0
  174. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  175. package/dist/models/featureFlags/index.d.ts +7 -0
  176. package/dist/models/featureFlags/index.d.ts.map +1 -0
  177. package/dist/models/index.d.ts +9 -0
  178. package/dist/models/index.d.ts.map +1 -0
  179. package/dist/services/ApiClientService.d.ts +92 -4
  180. package/dist/services/ApiClientService.d.ts.map +1 -1
  181. package/dist/services/CacheService.d.ts +176 -0
  182. package/dist/services/CacheService.d.ts.map +1 -0
  183. package/dist/services/DbService.d.ts +393 -0
  184. package/dist/services/DbService.d.ts.map +1 -0
  185. package/dist/services/NotificationService.d.ts +153 -0
  186. package/dist/services/NotificationService.d.ts.map +1 -0
  187. package/dist/services/StorageService.d.ts +146 -0
  188. package/dist/services/StorageService.d.ts.map +1 -0
  189. package/dist/services/index.d.ts +4 -0
  190. package/dist/services/index.d.ts.map +1 -1
  191. package/dist/utils/common/id.d.ts +83 -0
  192. package/dist/utils/common/id.d.ts.map +1 -0
  193. package/dist/utils/common/index.d.ts +2 -0
  194. package/dist/utils/common/index.d.ts.map +1 -1
  195. package/dist/utils/common/object.d.ts +70 -0
  196. package/dist/utils/common/object.d.ts.map +1 -0
  197. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  198. package/dist/utils/featureFlags/context.d.ts +0 -1
  199. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  200. package/dist/utils/index.d.ts +1 -0
  201. package/dist/utils/index.d.ts.map +1 -1
  202. package/dist/utils/mapperUtils.d.ts +38 -0
  203. package/dist/utils/mapperUtils.d.ts.map +1 -0
  204. package/dist/utils/runtime.d.ts +15 -0
  205. package/dist/utils/runtime.d.ts.map +1 -0
  206. package/dist/version.d.ts +24 -0
  207. package/dist/version.d.ts.map +1 -0
  208. package/dist/web_app/auth/add_user.d.ts +2 -2
  209. package/dist/web_app/auth/add_user.d.ts.map +1 -1
  210. package/dist/web_app/auth/update_user.d.ts +1 -1
  211. package/dist/web_app/auth/update_user.d.ts.map +1 -1
  212. package/package.json +89 -15
  213. package/dist/backend/featureFlags/database/connection.d.ts +0 -321
  214. package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
  215. package/dist/backend/featureFlags/database/repository.d.ts +0 -518
  216. package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
  217. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  218. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  219. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
  220. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  221. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  222. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  223. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  224. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  225. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  226. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  227. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  229. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  230. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  231. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  232. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  233. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  234. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  235. package/dist/index.cjs +0 -6435
  236. package/dist/index.cjs.map +0 -1
  237. package/dist/utils/db/databaseService.d.ts +0 -6
  238. package/dist/utils/db/databaseService.d.ts.map +0 -1
  239. package/dist/utils/db/index.d.ts +0 -2
  240. package/dist/utils/db/index.d.ts.map +0 -1
@@ -1,43 +1,55 @@
1
1
  /**
2
2
  * Database Feature Flag Provider
3
3
  *
4
- * Database-based provider with Drizzle ORM and Supabase integration.
5
- * Provides persistent storage with caching and transaction support.
4
+ * Database-based provider using DbService for persistent storage.
5
+ * Requires Core.initialize() to be called first with database config.
6
6
  *
7
7
  * @fileoverview Database provider for feature flags
8
8
  */
9
- import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
9
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
10
10
  import { FeatureFlagProvider } from '../provider';
11
11
  /**
12
- * Database-based feature flag provider with Drizzle ORM integration.
12
+ * Database-based feature flag provider with @plyaz/db integration.
13
+ *
14
+ * Uses DbService (configured via Core.initialize()) for database operations.
15
+ * No connection string needed here - DbService handles all connection details.
13
16
  *
14
17
  * @class DatabaseFeatureFlagProvider
15
18
  * @extends {FeatureFlagProvider}
16
19
  *
17
20
  * @example
18
21
  * ```typescript
22
+ * // First: Initialize Core with database config
23
+ * await Core.initialize({
24
+ * db: { adapter: 'sql', sql: { connectionString: '...' } }
25
+ * });
26
+ *
27
+ * // Then: Create database provider
19
28
  * const provider = new DatabaseFeatureFlagProvider({
20
29
  * provider: 'database',
21
- * databaseConfig: {
22
- * connectionString: process.env.SUPABASE_URL,
23
- * tableName: 'feature_flags',
24
- * },
25
30
  * isCacheEnabled: true,
26
31
  * cacheTtl: 300,
27
- * });
32
+ * }, FEATURES);
33
+ * await provider.initialize();
28
34
  * ```
29
35
  */
30
36
  export declare class DatabaseFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
31
- private connectionManager;
32
- private repository;
37
+ private _repository?;
38
+ private _tableConfig?;
39
+ private readonly logger;
40
+ /**
41
+ * Lazily get the repository, creating it on first access after DbService is initialized.
42
+ */
43
+ private get repository();
33
44
  /**
34
45
  * Creates a new database feature flag provider.
35
46
  *
36
- * @param config - Provider configuration with database settings
47
+ * @param config - Provider configuration
48
+ * @param features - Default feature flag values
37
49
  */
38
50
  constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
39
51
  /**
40
- * Initialize database connection
52
+ * Initialize database connection via DbService
41
53
  */
42
54
  initialize(): Promise<void>;
43
55
  /**
@@ -55,53 +67,48 @@ export declare class DatabaseFeatureFlagProvider<FeatureFlagKey extends string>
55
67
  */
56
68
  dispose(): void;
57
69
  /**
58
- * Validates the database provider configuration.
70
+ * Gets database provider status and configuration info.
59
71
  *
60
- * @private
61
- * @throws Error if configuration is invalid or incomplete
72
+ * @returns Database provider status information
62
73
  */
63
- private validateConfig;
64
- private validateProviderType;
65
- private validateDatabaseConfig;
66
- private validateConnectionString;
67
- private logConfigurationStatus;
74
+ getDatabaseInfo(): {
75
+ tableName: string;
76
+ isImplemented: boolean;
77
+ dbServiceInitialized: boolean;
78
+ };
68
79
  /**
69
- * Validates PostgreSQL URL format.
80
+ * Creates a new feature flag in the database.
70
81
  *
71
- * @private
72
- * @param url - URL to validate
73
- * @returns True if valid PostgreSQL URL
82
+ * @param data - Flag creation data
83
+ * @returns The created feature flag
74
84
  */
75
- private isValidPostgresUrl;
85
+ createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
76
86
  /**
77
- * Validates MySQL URL format.
87
+ * Updates an existing feature flag in the database.
78
88
  *
79
- * @private
80
- * @param url - URL to validate
81
- * @returns True if valid MySQL URL
89
+ * @param key - Flag key to update
90
+ * @param data - Partial flag data to update
91
+ * @returns The updated feature flag
82
92
  */
83
- private isValidMysqlUrl;
93
+ updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
84
94
  /**
85
- * Masks sensitive parts of connection string for logging.
95
+ * Deletes a feature flag from the database.
86
96
  *
87
- * @private
88
- * @param connectionString - Original connection string
89
- * @returns Masked connection string
97
+ * @param key - Flag key to delete
90
98
  */
91
- private maskConnectionString;
99
+ deleteFlag(key: FeatureFlagKey): Promise<void>;
92
100
  /**
93
- * Gets database provider status and configuration info.
101
+ * Gets all rules for a specific flag.
94
102
  *
95
- * @returns Database provider status information
103
+ * @param key - Flag key to get rules for
104
+ * @returns Array of rules for the flag
96
105
  */
97
- getDatabaseInfo(): {
98
- connectionString?: string;
99
- tableName?: string;
100
- isImplemented: boolean;
101
- requiredPackages: string[];
102
- recommendedORM: string[];
103
- documentationPath: string;
104
- schemaPath: string;
105
- };
106
+ getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
107
+ /**
108
+ * Gets all enabled rules across all flags.
109
+ *
110
+ * @returns Array of all enabled rules
111
+ */
112
+ getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
106
113
  }
107
114
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,2BAA2B,CACtC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C,OAAO,CAAC,iBAAiB,CAA2C;IACpE,OAAO,CAAC,UAAU,CAAuD;IAEzE;;;;OAIG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAQpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAeF;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,sBAAsB;IAQ9B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;;;OAIG;IACH,eAAe,IAAI;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;KACpB;CAaF"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,2BAA2B,CACtC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAgD;IACpE,OAAO,CAAC,YAAY,CAAC,CAAsC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH;;OAEG;IACH,OAAO,KAAK,UAAU,GAYrB;IAED;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAsBpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAgBF;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;;;OAIG;IACH,eAAe,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,oBAAoB,EAAE,OAAO,CAAC;KAC/B;IAYD;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAQ/F;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAQvC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAK/E;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;CAIhE"}
@@ -1,46 +1,64 @@
1
1
  /**
2
- * Feature Flag Provider Factory
2
+ * Feature Flag Service Factory
3
3
  *
4
- * Factory class for creating and managing feature flag providers.
5
- * This will be moved to @plyaz/core when the package structure is finalized.
4
+ * Factory class for creating feature flag services with configured providers.
6
5
  *
7
- * @fileoverview Provider factory for feature flag system
6
+ * @fileoverview Service factory for feature flag system
8
7
  * @version 1.0.0
9
8
  */
10
- import type { FeatureFlagConfig, FeatureFlagProvider, FeatureFlagValue } from '@plyaz/types';
11
- import { MemoryFeatureFlagProvider } from './memory';
12
- import { FileFeatureFlagProvider } from './file';
13
- import { RedisFeatureFlagProvider } from './redis';
14
- import { ApiFeatureFlagProvider } from './api';
15
- import { DatabaseFeatureFlagProvider } from './database';
9
+ import type { FeatureFlagConfig, FeatureFlagProvider, FeatureFlagValue, FeatureFlagProviderType } from '@plyaz/types/features';
10
+ import { FeatureFlagService } from '../service';
16
11
  /**
17
- * Registry of available provider classes.
18
- */
19
- declare const PROVIDER_REGISTRY: {
20
- readonly memory: typeof MemoryFeatureFlagProvider;
21
- readonly file: typeof FileFeatureFlagProvider;
22
- readonly redis: typeof RedisFeatureFlagProvider;
23
- readonly api: typeof ApiFeatureFlagProvider;
24
- readonly database: typeof DatabaseFeatureFlagProvider;
25
- };
26
- /**
27
- * Type for available provider names.
28
- */
29
- export type ProviderType = keyof typeof PROVIDER_REGISTRY;
30
- /**
31
- * Feature flag provider factory for creating provider instances.
12
+ * Feature flag service factory for creating service instances with providers.
32
13
  *
33
- * @class FeatureFlagProviderFactory
14
+ * @class FeatureFlagServiceFactory
34
15
  *
35
16
  * @example
36
17
  * ```typescript
37
- * const provider = FeatureFlagProviderFactory.create({
38
- * provider: 'memory',
18
+ * // Create and initialize service
19
+ * const service = await FeatureFlagServiceFactory.createAndInitialize({
20
+ * provider: 'database',
39
21
  * isCacheEnabled: true,
40
22
  * cacheTtl: 300,
41
- * });
23
+ * }, FEATURES);
24
+ *
25
+ * // Use the service
26
+ * const isEnabled = await service.isEnabled('MY_FEATURE');
27
+ * await service.createFlag({ key: 'NEW', value: true, name: 'New Flag' });
42
28
  * ```
43
29
  */
30
+ export declare class FeatureFlagServiceFactory {
31
+ /**
32
+ * Creates a new feature flag service with the configured provider.
33
+ *
34
+ * @param config - Provider configuration
35
+ * @param features - Record of feature flag keys to their default values
36
+ * @returns Configured service instance (not yet initialized)
37
+ */
38
+ static createService<K extends string>(config: FeatureFlagConfig<K>, features: Record<K, FeatureFlagValue>): FeatureFlagService<K>;
39
+ /**
40
+ * Creates and initializes a feature flag service.
41
+ *
42
+ * @param config - Provider configuration
43
+ * @param features - Record of feature flag keys to their default values
44
+ * @returns Promise resolving to initialized service instance
45
+ */
46
+ static createAndInitialize<K extends string>(config: FeatureFlagConfig<K>, features: Record<K, FeatureFlagValue>): Promise<FeatureFlagService<K>>;
47
+ /**
48
+ * Creates a default service with memory provider.
49
+ *
50
+ * @param features - Record of feature flag keys to their default values
51
+ * @param overrides - Optional configuration overrides
52
+ * @returns Service instance
53
+ */
54
+ static createDefaultService<K extends string>(features: Record<K, FeatureFlagValue>, overrides?: Partial<FeatureFlagConfig<K>>): FeatureFlagService<K>;
55
+ }
56
+ /**
57
+ * Feature flag provider factory for creating provider instances directly.
58
+ * For most use cases, use FeatureFlagServiceFactory instead.
59
+ *
60
+ * @class FeatureFlagProviderFactory
61
+ */
44
62
  export declare class FeatureFlagProviderFactory {
45
63
  /**
46
64
  * Creates a new feature flag provider instance based on configuration.
@@ -64,20 +82,20 @@ export declare class FeatureFlagProviderFactory {
64
82
  *
65
83
  * @returns Array of supported provider names
66
84
  */
67
- static getSupportedProviders(): ProviderType[];
85
+ static getSupportedProviders(): FeatureFlagProviderType[];
68
86
  /**
69
87
  * Checks if a provider type is supported.
70
88
  *
71
89
  * @param providerType - Provider type to check
72
90
  * @returns True if provider type is supported
73
91
  */
74
- static isProviderSupported(providerType: string): providerType is ProviderType;
92
+ static isProviderSupported(providerType: string): providerType is FeatureFlagProviderType;
75
93
  /**
76
94
  * Gets provider information including implementation status.
77
95
  *
78
96
  * @returns Record of provider information
79
97
  */
80
- static getProvidersInfo(): Record<ProviderType, {
98
+ static getProvidersInfo(): Record<FeatureFlagProviderType, {
81
99
  name: string;
82
100
  isImplemented: boolean;
83
101
  description: string;
@@ -137,5 +155,4 @@ export declare class FeatureFlagProviderFactory {
137
155
  private static validateApiConfig;
138
156
  private static validateDatabaseConfig;
139
157
  }
140
- export {};
141
158
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/factory.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @fileoverview File provider implementation for feature flags
8
8
  * @version 1.0.0
9
9
  */
10
- import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
10
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
11
11
  import { FeatureFlagProvider } from '../provider';
12
12
  /**
13
13
  * File-based feature flag provider supporting JSON and YAML formats.
@@ -36,6 +36,7 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
36
36
  private fileWatcher?;
37
37
  private lastFileContent?;
38
38
  private fileCheckInterval?;
39
+ private flags;
39
40
  private rules;
40
41
  /**
41
42
  * Creates a new file feature flag provider.
@@ -156,6 +157,52 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
156
157
  * @returns Promise that resolves when refresh is complete
157
158
  */
158
159
  refresh(): Promise<void>;
160
+ /**
161
+ * Creates a new feature flag and persists to file.
162
+ *
163
+ * @param data - Flag creation data
164
+ * @returns The created feature flag
165
+ */
166
+ createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
167
+ /**
168
+ * Updates an existing feature flag and persists to file.
169
+ *
170
+ * @param key - Flag key to update
171
+ * @param data - Partial flag data to update
172
+ * @returns The updated feature flag
173
+ */
174
+ updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
175
+ /**
176
+ * Deletes a feature flag and persists to file.
177
+ *
178
+ * @param key - Flag key to delete
179
+ */
180
+ deleteFlag(key: FeatureFlagKey): Promise<void>;
181
+ /**
182
+ * Gets all rules for a specific flag.
183
+ *
184
+ * @param key - Flag key to get rules for
185
+ * @returns Array of rules for the flag
186
+ */
187
+ getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
188
+ /**
189
+ * Gets all enabled rules.
190
+ *
191
+ * @returns Array of all enabled rules
192
+ */
193
+ getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
194
+ /**
195
+ * Persists current flags and rules to file.
196
+ *
197
+ * @private
198
+ */
199
+ private persistToFile;
200
+ /**
201
+ * Infers the flag type from its value.
202
+ *
203
+ * @private
204
+ */
205
+ private inferFlagType;
159
206
  /**
160
207
  * Updates the features object and writes to file.
161
208
  * This allows updating the FEATURES at runtime and persisting to file.
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/file.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAkBlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,uBAAuB,CAClC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAiC;IAC3D,OAAO,CAAC,KAAK,CAAyC;IAEtD;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAMpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAuBF;;;;OAIG;YACW,gBAAgB;IAY9B;;;;OAIG;YACW,oBAAoB;IAoBlC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAUjB;;;;;;OAMG;YACW,SAAS;IAWvB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,aAAa;IAkBrB;;;;;;OAMG;YACW,iBAAiB;IAwB/B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAyCxB;;OAEG;IACH,OAAO,IAAI,IAAI;IAef;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CxF;;;;OAIG;IACH,WAAW,IAAI;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,CAAC,EAAE,IAAI,CAAC;KACrB;CAuBF"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/file.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @fileoverview Memory provider implementation for feature flags
8
8
  * @version 1.0.0
9
9
  */
10
- import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
10
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
11
11
  import { FeatureFlagProvider } from '../provider';
12
12
  /**
13
13
  * Memory-based feature flag provider that loads flags from the FEATURES constant.
@@ -100,13 +100,39 @@ export declare class MemoryFeatureFlagProvider<FeatureFlagKey extends string> ex
100
100
  */
101
101
  removeRule(ruleId: string): void;
102
102
  /**
103
- * Updates a flag in memory.
103
+ * Creates a new feature flag in memory.
104
104
  *
105
- * @param flagOrKey - Either a complete flag object or a flag key
106
- * @param value - The new value (only used when first param is a key)
107
- * @param updateProps - Optional properties to update (only used when first param is a key)
105
+ * @param data - Flag creation data
106
+ * @returns The created feature flag
108
107
  */
109
- updateFlag(flagOrKey: FeatureFlag<FeatureFlagKey> | FeatureFlagKey, value?: FeatureFlagValue, updateProps?: Partial<Pick<FeatureFlag<FeatureFlagKey>, 'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'>>): Promise<void>;
108
+ createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
109
+ /**
110
+ * Updates an existing feature flag in memory.
111
+ *
112
+ * @param key - Flag key to update
113
+ * @param data - Partial flag data to update
114
+ * @returns The updated feature flag
115
+ */
116
+ updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
117
+ /**
118
+ * Deletes a feature flag from memory.
119
+ *
120
+ * @param key - Flag key to delete
121
+ */
122
+ deleteFlag(key: FeatureFlagKey): Promise<void>;
123
+ /**
124
+ * Gets all rules for a specific flag.
125
+ *
126
+ * @param key - Flag key to get rules for
127
+ * @returns Array of rules for the flag
128
+ */
129
+ getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
130
+ /**
131
+ * Gets all enabled rules.
132
+ *
133
+ * @returns Array of all enabled rules
134
+ */
135
+ getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
110
136
  /**
111
137
  * Adds a new flag to memory at runtime.
112
138
  *
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/memory.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @fileoverview Redis provider implementation for feature flags
8
8
  * @version 1.0.0
9
9
  */
10
- import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
10
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
11
11
  import { FeatureFlagProvider } from '../provider';
12
12
  /**
13
13
  * Redis-based feature flag provider supporting distributed caching and storage.
@@ -76,5 +76,10 @@ export declare class RedisFeatureFlagProvider<FeatureFlagKey extends string> ext
76
76
  requiredImplementation: string[];
77
77
  recommendedPatterns: string[];
78
78
  };
79
+ createFlag(_data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
80
+ updateFlag(_key: FeatureFlagKey, _data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
81
+ deleteFlag(_key: FeatureFlagKey): Promise<void>;
82
+ getRules(_key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
83
+ getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
79
84
  }
80
85
  //# sourceMappingURL=redis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,wBAAwB,CACnC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAOpD;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAwCF;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,YAAY,IAAI;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,sBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B;CAoBF"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,wBAAwB,CACnC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAUpD;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAOF;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,YAAY,IAAI;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,sBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B;IA0BK,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAO1F,UAAU,CAEd,IAAI,EAAE,cAAc,EAEpB,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAChD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAQjC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAO1E,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;CAMhE"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Feature Flag Service
3
+ *
4
+ * Domain service that wraps the provider and provides a unified API
5
+ * for feature flag operations. This is the main entry point for
6
+ * feature flag functionality.
7
+ *
8
+ * @fileoverview Domain service for feature flags
9
+ * @version 1.0.0
10
+ */
11
+ import type { FeatureFlagProvider, FeatureFlagConfig, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlagValue, FeatureFlag, FeatureFlagRule, CreateFlagRequest } from '@plyaz/types';
12
+ /**
13
+ * Feature Flag Service
14
+ *
15
+ * The main service for feature flag operations. Wraps the provider
16
+ * and adds logging, error handling, and lifecycle management.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Create via factory
21
+ * const service = await FeatureFlagServiceFactory.createAndInitialize(config, FEATURES);
22
+ *
23
+ * // Use directly
24
+ * const isEnabled = await service.isEnabled('MY_FEATURE');
25
+ * const flag = await service.createFlag({ key: 'NEW_FLAG', value: true, name: 'New Flag' });
26
+ * ```
27
+ */
28
+ export declare class FeatureFlagService<FeatureFlagKey extends string> {
29
+ private readonly provider;
30
+ private readonly config;
31
+ private readonly logger;
32
+ private isInitialized;
33
+ constructor(provider: FeatureFlagProvider<FeatureFlagKey>, config: FeatureFlagConfig<FeatureFlagKey>);
34
+ /**
35
+ * Initializes the service and underlying provider.
36
+ */
37
+ initialize(): Promise<void>;
38
+ /**
39
+ * Disposes the service and underlying provider.
40
+ */
41
+ dispose(): void;
42
+ /**
43
+ * Refreshes the provider cache.
44
+ */
45
+ refresh(): Promise<void>;
46
+ /**
47
+ * Gets whether the service is initialized.
48
+ */
49
+ getIsInitialized(): boolean;
50
+ /**
51
+ * Gets the provider type.
52
+ */
53
+ getProviderType(): string;
54
+ /**
55
+ * Evaluates a feature flag.
56
+ */
57
+ getFlag(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
58
+ /**
59
+ * Gets all feature flag evaluations.
60
+ */
61
+ getAllFlags(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
62
+ /**
63
+ * Checks if a feature flag is enabled.
64
+ */
65
+ isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean>;
66
+ /**
67
+ * Gets the value of a feature flag.
68
+ */
69
+ getValue<T = FeatureFlagValue>(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<T>;
70
+ /**
71
+ * Creates a new feature flag.
72
+ */
73
+ createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
74
+ /**
75
+ * Updates an existing feature flag.
76
+ */
77
+ updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
78
+ /**
79
+ * Deletes a feature flag.
80
+ */
81
+ deleteFlag(key: FeatureFlagKey): Promise<void>;
82
+ /**
83
+ * Gets all rules for a specific flag.
84
+ */
85
+ getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
86
+ /**
87
+ * Gets all enabled rules.
88
+ */
89
+ getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
90
+ /**
91
+ * Sets a runtime override for a flag.
92
+ */
93
+ setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void;
94
+ /**
95
+ * Removes a runtime override for a flag.
96
+ */
97
+ removeOverride(key: FeatureFlagKey): void;
98
+ /**
99
+ * Clears all runtime overrides.
100
+ */
101
+ clearOverrides(): void;
102
+ /**
103
+ * Subscribes to flag changes.
104
+ */
105
+ subscribe(callback: () => void): () => void;
106
+ /**
107
+ * Gets the underlying provider instance.
108
+ * Use with caution - prefer service methods.
109
+ */
110
+ getProvider(): FeatureFlagProvider<FeatureFlagKey>;
111
+ }
112
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/domain/featureFlags/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAkB,CAAC,cAAc,SAAS,MAAM;IASzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,OAAO,CAAC,aAAa,CAAS;gBAGX,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,EAC7C,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAO5D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,eAAe,IAAI,MAAM;IAQzB;;OAEG;IACG,OAAO,CACX,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAIjD;;OAEG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpF;;OAEG;IACG,QAAQ,CAAC,CAAC,GAAG,gBAAgB,EACjC,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAM/F;;OAEG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAMvC;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAI/E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAQ/D;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAK/D;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAKzC;;OAEG;IACH,cAAc,IAAI,IAAI;IAStB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAQ3C;;;OAGG;IACH,WAAW,IAAI,mBAAmB,CAAC,cAAc,CAAC;CAGnD"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Domain Layer Exports
3
3
  */
4
+ export * from './base';
4
5
  export * from './featureFlags';
6
+ export * from './example';
5
7
  export type * from './types';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,mBAAmB,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,WAAW,CAAC;AAG1B,mBAAmB,SAAS,CAAC"}
@@ -27,6 +27,8 @@ import type { FeatureFlag, FeatureFlagRule, FeatureFlagContext, FeatureFlagEvalu
27
27
  export declare class FeatureFlagEngine<FeatureFlagKey extends string> {
28
28
  private defaults;
29
29
  private isLoggingEnabled;
30
+ /** Logger instance */
31
+ private readonly logger;
30
32
  /** Storage for active feature flags */
31
33
  private flags;
32
34
  /** Storage for targeting rules, organized by flag key */
@@ -54,6 +56,12 @@ export declare class FeatureFlagEngine<FeatureFlagKey extends string> {
54
56
  * @param rules - Array of feature flag rules
55
57
  */
56
58
  setRules(rules: FeatureFlagRule<FeatureFlagKey>[]): void;
59
+ /**
60
+ * Gets all targeting rules.
61
+ *
62
+ * @returns Array of all feature flag rules
63
+ */
64
+ getRules(): FeatureFlagRule<FeatureFlagKey>[];
57
65
  /**
58
66
  * Sets a manual override for a specific flag.
59
67
  * Overrides take precedence over all other evaluation logic.