@plyaz/core 1.1.1 → 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 (243) 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 +89 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -0
  17. package/dist/backend/featureFlags/config/validation.d.ts +181 -0
  18. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -0
  19. package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts +6 -0
  20. package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts.map +1 -0
  21. package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts +8 -0
  22. package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts.map +1 -0
  23. package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts +11 -0
  24. package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts.map +1 -0
  25. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -56
  26. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  27. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -44
  28. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +33 -0
  30. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -0
  31. package/dist/backend/featureFlags/index.d.ts +14 -41
  32. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  33. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts +16 -0
  34. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -0
  35. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts +18 -0
  36. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -0
  37. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +162 -0
  38. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -0
  39. package/dist/backend/index.d.ts +5 -0
  40. package/dist/backend/index.d.ts.map +1 -1
  41. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  42. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  43. package/dist/base/cache/feature/caching.d.ts +16 -0
  44. package/dist/base/cache/feature/caching.d.ts.map +1 -0
  45. package/dist/base/cache/index.d.ts +2 -0
  46. package/dist/base/cache/index.d.ts.map +1 -1
  47. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  48. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  49. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  50. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  51. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  52. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  53. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  54. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  55. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  56. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  57. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  58. package/dist/base/observability/index.d.ts +17 -0
  59. package/dist/base/observability/index.d.ts.map +1 -0
  60. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  61. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  62. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  63. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  64. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  65. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  66. package/dist/domain/base/BaseMapper.d.ts +100 -0
  67. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  68. package/dist/domain/base/BaseValidator.d.ts +105 -0
  69. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  70. package/dist/domain/base/index.d.ts +10 -0
  71. package/dist/domain/base/index.d.ts.map +1 -0
  72. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  73. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  74. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  75. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  76. package/dist/domain/example/index.d.ts +10 -0
  77. package/dist/domain/example/index.d.ts.map +1 -0
  78. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  79. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  80. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  81. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  82. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  83. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  84. package/dist/domain/featureFlags/index.d.ts +10 -5
  85. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  86. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  87. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  88. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  89. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  90. package/dist/domain/featureFlags/module.d.ts +20 -0
  91. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  92. package/dist/domain/featureFlags/provider.d.ts +40 -1
  93. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  94. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  95. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  96. package/dist/domain/featureFlags/providers/database.d.ts +59 -52
  97. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  98. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  99. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  100. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  101. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  102. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  103. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  104. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  105. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  106. package/dist/domain/featureFlags/service.d.ts +112 -0
  107. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  108. package/dist/domain/index.d.ts +2 -0
  109. package/dist/domain/index.d.ts.map +1 -1
  110. package/dist/engine/featureFlags/engine.d.ts +8 -0
  111. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  112. package/dist/entry-backend.d.ts +24 -0
  113. package/dist/entry-backend.d.ts.map +1 -0
  114. package/dist/entry-backend.js +15635 -0
  115. package/dist/entry-backend.js.map +1 -0
  116. package/dist/entry-backend.mjs +15506 -0
  117. package/dist/entry-backend.mjs.map +1 -0
  118. package/dist/entry-frontend.d.ts +23 -0
  119. package/dist/entry-frontend.d.ts.map +1 -0
  120. package/dist/entry-frontend.js +11152 -0
  121. package/dist/entry-frontend.js.map +1 -0
  122. package/dist/entry-frontend.mjs +11089 -0
  123. package/dist/entry-frontend.mjs.map +1 -0
  124. package/dist/events/CoreEventManager.d.ts +116 -0
  125. package/dist/events/CoreEventManager.d.ts.map +1 -0
  126. package/dist/events/index.d.ts +27 -0
  127. package/dist/events/index.d.ts.map +1 -0
  128. package/dist/frontend/base/index.d.ts +8 -0
  129. package/dist/frontend/base/index.d.ts.map +1 -0
  130. package/dist/frontend/components/InitializationError.d.ts +25 -0
  131. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  132. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  133. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  134. package/dist/frontend/components/index.d.ts +9 -0
  135. package/dist/frontend/components/index.d.ts.map +1 -0
  136. package/dist/frontend/example/index.d.ts +9 -0
  137. package/dist/frontend/example/index.d.ts.map +1 -0
  138. package/dist/frontend/featureFlags/index.d.ts +28 -7
  139. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  140. package/dist/frontend/index.d.ts +5 -0
  141. package/dist/frontend/index.d.ts.map +1 -1
  142. package/dist/frontend/providers/ApiProvider.d.ts +41 -0
  143. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -0
  144. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  145. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  146. package/dist/frontend/providers/index.d.ts +8 -0
  147. package/dist/frontend/providers/index.d.ts.map +1 -0
  148. package/dist/frontend/store/feature-flags.d.ts +63 -0
  149. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  150. package/dist/frontend/store/index.d.ts +14 -0
  151. package/dist/frontend/store/index.d.ts.map +1 -0
  152. package/dist/frontend/store/integrations.d.ts +36 -0
  153. package/dist/frontend/store/integrations.d.ts.map +1 -0
  154. package/dist/frontend/store/service-accessors.d.ts +78 -0
  155. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  156. package/dist/index.d.ts +6 -2
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +15450 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/index.mjs +13461 -2440
  161. package/dist/index.mjs.map +1 -1
  162. package/dist/init/CoreInitializer.d.ts +582 -0
  163. package/dist/init/CoreInitializer.d.ts.map +1 -0
  164. package/dist/init/ServiceRegistry.d.ts +256 -0
  165. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  166. package/dist/init/index.d.ts +14 -0
  167. package/dist/init/index.d.ts.map +1 -0
  168. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  169. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  170. package/dist/init/nestjs/index.d.ts +5 -0
  171. package/dist/init/nestjs/index.d.ts.map +1 -0
  172. package/dist/init/nestjs/index.js +9059 -0
  173. package/dist/init/nestjs/index.js.map +1 -0
  174. package/dist/init/nestjs/index.mjs +9055 -0
  175. package/dist/init/nestjs/index.mjs.map +1 -0
  176. package/dist/init/react.d.ts +33 -0
  177. package/dist/init/react.d.ts.map +1 -0
  178. package/dist/models/example/ExampleRepository.d.ts +124 -0
  179. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  180. package/dist/models/example/index.d.ts +7 -0
  181. package/dist/models/example/index.d.ts.map +1 -0
  182. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +560 -0
  183. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  184. package/dist/models/featureFlags/index.d.ts +7 -0
  185. package/dist/models/featureFlags/index.d.ts.map +1 -0
  186. package/dist/models/index.d.ts +9 -0
  187. package/dist/models/index.d.ts.map +1 -0
  188. package/dist/services/ApiClientService.d.ts +178 -0
  189. package/dist/services/ApiClientService.d.ts.map +1 -0
  190. package/dist/services/CacheService.d.ts +176 -0
  191. package/dist/services/CacheService.d.ts.map +1 -0
  192. package/dist/services/DbService.d.ts +391 -0
  193. package/dist/services/DbService.d.ts.map +1 -0
  194. package/dist/services/NotificationService.d.ts +151 -0
  195. package/dist/services/NotificationService.d.ts.map +1 -0
  196. package/dist/services/StorageService.d.ts +144 -0
  197. package/dist/services/StorageService.d.ts.map +1 -0
  198. package/dist/services/index.d.ts +12 -0
  199. package/dist/services/index.d.ts.map +1 -0
  200. package/dist/utils/common/id.d.ts +83 -0
  201. package/dist/utils/common/id.d.ts.map +1 -0
  202. package/dist/utils/common/index.d.ts +3 -1
  203. package/dist/utils/common/index.d.ts.map +1 -1
  204. package/dist/utils/common/object.d.ts +70 -0
  205. package/dist/utils/common/object.d.ts.map +1 -0
  206. package/dist/utils/common/validation.d.ts +20 -0
  207. package/dist/utils/common/validation.d.ts.map +1 -0
  208. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  209. package/dist/utils/featureFlags/context.d.ts +0 -1
  210. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  211. package/dist/utils/index.d.ts +1 -0
  212. package/dist/utils/index.d.ts.map +1 -1
  213. package/dist/utils/mapperUtils.d.ts +38 -0
  214. package/dist/utils/mapperUtils.d.ts.map +1 -0
  215. package/dist/utils/runtime.d.ts +15 -0
  216. package/dist/utils/runtime.d.ts.map +1 -0
  217. package/dist/version.d.ts +24 -0
  218. package/dist/version.d.ts.map +1 -0
  219. package/dist/web_app/auth/add_user.d.ts +3 -0
  220. package/dist/web_app/auth/add_user.d.ts.map +1 -0
  221. package/dist/web_app/auth/update_user.d.ts +2 -0
  222. package/dist/web_app/auth/update_user.d.ts.map +1 -0
  223. package/package.json +102 -15
  224. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  225. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  226. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -123
  227. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  229. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  230. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  231. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  232. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  233. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  234. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  235. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  236. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  237. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  238. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  239. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  240. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  241. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  242. package/dist/index.cjs +0 -4383
  243. package/dist/index.cjs.map +0 -1
@@ -1,102 +1,109 @@
1
1
  /**
2
- * Database Feature Flag Provider (Stub)
2
+ * Database Feature Flag Provider
3
3
  *
4
- * Database-based provider stub that requires @plyaz/db package implementation.
5
- * This will be moved to @plyaz/core when the package structure is finalized.
4
+ * Database-based provider using DbService for persistent storage.
5
+ * Requires Core.initialize() to be called first with database config.
6
6
  *
7
- * @fileoverview Database provider stub for feature flags
8
- * @version 1.0.0
7
+ * @fileoverview Database provider for feature flags
9
8
  */
10
- import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
9
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
11
10
  import { FeatureFlagProvider } from '../provider';
12
11
  /**
13
- * Database-based feature flag provider requiring @plyaz/db implementation.
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.
14
16
  *
15
17
  * @class DatabaseFeatureFlagProvider
16
18
  * @extends {FeatureFlagProvider}
17
19
  *
18
20
  * @example
19
21
  * ```typescript
20
- * // This will throw an error until @plyaz/db is implemented
22
+ * // First: Initialize Core with database config
23
+ * await Core.initialize({
24
+ * db: { adapter: 'sql', sql: { connectionString: '...' } }
25
+ * });
26
+ *
27
+ * // Then: Create database provider
21
28
  * const provider = new DatabaseFeatureFlagProvider({
22
29
  * provider: 'database',
23
- * databaseConfig: {
24
- * connectionString: process.env.DATABASE_URL,
25
- * tableName: 'feature_flags',
26
- * },
27
30
  * isCacheEnabled: true,
28
31
  * cacheTtl: 300,
29
- * });
32
+ * }, FEATURES);
33
+ * await provider.initialize();
30
34
  * ```
31
35
  */
32
36
  export declare class DatabaseFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
37
+ private repository;
38
+ private readonly logger;
33
39
  /**
34
40
  * Creates a new database feature flag provider.
35
41
  *
36
- * @param config - Provider configuration with database settings
37
- * @throws Error indicating that @plyaz/db implementation is required
42
+ * @param config - Provider configuration
43
+ * @param features - Default feature flag values
38
44
  */
39
45
  constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
46
+ /**
47
+ * Initialize database connection via DbService
48
+ */
49
+ initialize(): Promise<void>;
40
50
  /**
41
51
  * Fetches flags and rules from the database.
42
- * Currently throws an error as the database implementation is not ready.
43
52
  *
44
53
  * @protected
45
- * @returns Promise that rejects with implementation error
46
- * @throws Error indicating missing database implementation
54
+ * @returns Promise with flags and rules from database
47
55
  */
48
56
  protected fetchData(): Promise<{
49
57
  flags: FeatureFlag<FeatureFlagKey>[];
50
58
  rules: FeatureFlagRule<FeatureFlagKey>[];
51
59
  }>;
52
60
  /**
53
- * Validates the database provider configuration.
61
+ * Dispose resources
62
+ */
63
+ dispose(): void;
64
+ /**
65
+ * Gets database provider status and configuration info.
54
66
  *
55
- * @private
56
- * @throws Error if configuration is invalid or incomplete
67
+ * @returns Database provider status information
57
68
  */
58
- private validateConfig;
59
- private validateProviderType;
60
- private validateDatabaseConfig;
61
- private validateConnectionString;
62
- private logConfigurationStatus;
69
+ getDatabaseInfo(): {
70
+ tableName: string;
71
+ isImplemented: boolean;
72
+ dbServiceInitialized: boolean;
73
+ };
63
74
  /**
64
- * Validates PostgreSQL URL format.
75
+ * Creates a new feature flag in the database.
65
76
  *
66
- * @private
67
- * @param url - URL to validate
68
- * @returns True if valid PostgreSQL URL
77
+ * @param data - Flag creation data
78
+ * @returns The created feature flag
69
79
  */
70
- private isValidPostgresUrl;
80
+ createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
71
81
  /**
72
- * Validates MySQL URL format.
82
+ * Updates an existing feature flag in the database.
73
83
  *
74
- * @private
75
- * @param url - URL to validate
76
- * @returns True if valid MySQL URL
84
+ * @param key - Flag key to update
85
+ * @param data - Partial flag data to update
86
+ * @returns The updated feature flag
77
87
  */
78
- private isValidMysqlUrl;
88
+ updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
79
89
  /**
80
- * Masks sensitive parts of connection string for logging.
90
+ * Deletes a feature flag from the database.
81
91
  *
82
- * @private
83
- * @param connectionString - Original connection string
84
- * @returns Masked connection string
92
+ * @param key - Flag key to delete
85
93
  */
86
- private maskConnectionString;
94
+ deleteFlag(key: FeatureFlagKey): Promise<void>;
87
95
  /**
88
- * Gets database provider status and configuration info.
96
+ * Gets all rules for a specific flag.
89
97
  *
90
- * @returns Database provider status information
98
+ * @param key - Flag key to get rules for
99
+ * @returns Array of rules for the flag
91
100
  */
92
- getDatabaseInfo(): {
93
- connectionString?: string;
94
- tableName?: string;
95
- isImplemented: boolean;
96
- requiredPackages: string[];
97
- recommendedORM: string[];
98
- documentationPath: string;
99
- schemaPath: string;
100
- };
101
+ getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
102
+ /**
103
+ * Gets all enabled rules across all flags.
104
+ *
105
+ * @returns Array of all enabled rules
106
+ */
107
+ getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
101
108
  }
102
109
  //# 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;;;;;;;;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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,2BAA2B,CACtC,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;;;;;;;OAOG;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;IAyCF;;;;;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,UAAU,CAAgD;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH;;;;;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.