@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,264 +0,0 @@
1
- /**
2
- * Feature Flag Service
3
- *
4
- * NestJS service for feature flag business logic.
5
- * Orchestrates between providers, repositories, and external systems.
6
- *
7
- * @fileoverview NestJS service for feature flags
8
- */
9
- import type { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
10
- import { type FeatureFlagValue, type FeatureFlagContext, type FeatureFlagEvaluation, type FeatureFlag, type FeatureFlagRule, type CreateFlagRequest, type ProviderHealthStatus } from '@plyaz/types';
11
- import type { FeatureFlagRepository } from './feature-flag.repository';
12
- import type { FeatureFlagKey } from '@domain/types';
13
- /**
14
- * Feature Flag Service
15
- *
16
- * **MAIN ORCHESTRATOR** - This service coordinates the entire feature flag system.
17
- *
18
- * **EXECUTION FLOW:**
19
- * 1. NestJS Module System → Instantiates this service
20
- * 2. **onModuleInit()** ← ENTRY POINT - Called automatically by NestJS
21
- * 3. initializeProvider() → Loads configuration and creates provider
22
- * 4. Provider.initialize() → Establishes database connection
23
- * 5. System ready to serve requests
24
- *
25
- * **RUNTIME FLOW:**
26
- * Client Request → Controller → **This Service** → Provider → Database/Cache
27
- *
28
- * @example Basic Usage in Controller
29
- * ```typescript
30
- * @Controller('features')
31
- * export class FeatureController {
32
- * constructor(private readonly featureFlagService: FeatureFlagService) {}
33
- *
34
- * @Get(':key')
35
- * async getFeature(@Param('key') key: string) {
36
- * // This calls the service which orchestrates the entire evaluation
37
- * return this.featureFlagService.evaluateFlag(key);
38
- * }
39
- * }
40
- * ```
41
- *
42
- * @example Advanced Usage with Context
43
- * ```typescript
44
- * // Evaluate flag with user context for targeting rules
45
- * const evaluation = await this.featureFlagService.evaluateFlag('PREMIUM_FEATURE', {
46
- * userId: 'user123',
47
- * userRole: 'premium',
48
- * environment: 'production'
49
- * });
50
- *
51
- * if (evaluation.isEnabled) {
52
- * // Execute premium feature logic
53
- * }
54
- * ```
55
- *
56
- * Provides business logic for feature flag operations.
57
- * Manages provider lifecycle, caching, and data persistence.
58
- */
59
- export declare class FeatureFlagService implements OnModuleInit, OnModuleDestroy {
60
- private readonly featureFlagRepository;
61
- [x: string]: unknown;
62
- private readonly logger;
63
- private provider;
64
- constructor(featureFlagRepository: FeatureFlagRepository<FeatureFlagKey>);
65
- /**
66
- * **FIRST METHOD CALLED** - NestJS lifecycle hook for module initialization
67
- *
68
- * **EXECUTION ORDER:**
69
- * 1. NestJS creates FeatureFlagModule
70
- * 2. NestJS instantiates FeatureFlagService
71
- * 3. **THIS METHOD CALLED AUTOMATICALLY** ← YOU ARE HERE
72
- * 4. → initializeProvider() called
73
- * 5. → Configuration loaded from .env.local
74
- * 6. → Database provider created and initialized
75
- * 7. → Database connection established
76
- * 8. → Initial data loaded from database
77
- * 9. System ready to serve requests
78
- *
79
- * @throws {Error} If provider initialization fails
80
- *
81
- * @example What happens during initialization:
82
- * ```typescript
83
- * // 1. Load config from environment
84
- * const config = FeatureFlagConfigFactory.fromEnvironment();
85
- *
86
- * // 2. Create database provider
87
- * this.provider = FeatureFlagProviderFactory.create(config, FEATURES);
88
- *
89
- * // 3. Initialize database connection
90
- * await this.provider.initialize();
91
- *
92
- * // 4. Load flags and rules from database
93
- * const { flags, rules } = await this.provider.fetchData();
94
- * ```
95
- */
96
- onModuleInit(): Promise<void>;
97
- /**
98
- * Cleans up resources on module shutdown.
99
- */
100
- onModuleDestroy(): Promise<void>;
101
- /**
102
- * **SECOND METHOD CALLED** - Initializes the feature flag provider
103
- *
104
- * **EXECUTION FLOW:**
105
- * 1. onModuleInit() called by NestJS
106
- * 2. **THIS METHOD CALLED** ← YOU ARE HERE
107
- * 3. → FeatureFlagConfigFactory.fromEnvironment() - Loads .env.local
108
- * 4. → FeatureFlagProviderFactory.create() - Creates database provider
109
- * 5. → provider.initialize() - Establishes database connection
110
- *
111
- * @private
112
- * @throws {Error} If configuration is invalid or database connection fails
113
- *
114
- * @example Configuration Loading Process:
115
- * ```typescript
116
- * // Reads from .env.local:
117
- * // SUPABASE_URL=https://your-project.supabase.co
118
- * // FEATURE_FLAG_PROVIDER=database
119
- * // FEATURE_FLAG_CACHE_ENABLED=true
120
- *
121
- * const config = {
122
- * provider: 'database',
123
- * isCacheEnabled: true,
124
- * databaseConfig: {
125
- * connectionString: 'https://your-project.supabase.co',
126
- * tableName: 'feature_flags'
127
- * }
128
- * };
129
- * ```
130
- */
131
- private initializeProvider;
132
- /**
133
- * Gets the current provider instance.
134
- */
135
- private getProvider;
136
- /**
137
- * **MAIN RUNTIME METHOD** - Evaluates a feature flag for the given context
138
- *
139
- * **RUNTIME EXECUTION FLOW:**
140
- * 1. Client makes HTTP request to controller
141
- * 2. Controller calls **THIS METHOD** ← RUNTIME ENTRY POINT
142
- * 3. → getProvider() - Gets initialized provider
143
- * 4. → provider.getFlag() - Evaluates flag with context
144
- * 5. → Provider checks cache, rules, overrides
145
- * 6. → Database query if needed
146
- * 7. ← Returns evaluation result
147
- *
148
- * @param key - Feature flag key (e.g., 'PREMIUM_FEATURE', 'NEW_UI')
149
- * @param context - Evaluation context for targeting rules
150
- * @returns Feature flag evaluation result with value, reason, and metadata
151
- *
152
- * @example Simple Usage:
153
- * ```typescript
154
- * const evaluation = await this.featureFlagService.evaluateFlag('NEW_CHECKOUT');
155
- * console.log(evaluation.isEnabled); // true/false
156
- * console.log(evaluation.reason); // 'default_value' | 'rule_match' | 'override'
157
- * ```
158
- *
159
- * @example With User Context (for targeting rules):
160
- * ```typescript
161
- * const evaluation = await this.featureFlagService.evaluateFlag('BETA_FEATURE', {
162
- * userId: 'user123',
163
- * userRole: 'premium',
164
- * environment: 'production',
165
- * customAttributes: {
166
- * subscriptionTier: 'pro',
167
- * region: 'us-east'
168
- * }
169
- * });
170
- *
171
- * // Provider will:
172
- * // 1. Check for user-specific overrides
173
- * // 2. Evaluate targeting rules against context
174
- * // 3. Return appropriate value with reason
175
- * ```
176
- *
177
- * @example Evaluation Result:
178
- * ```typescript
179
- * {
180
- * key: 'BETA_FEATURE',
181
- * isEnabled: true,
182
- * value: { enabled: true, variant: 'blue' },
183
- * reason: 'rule_match',
184
- * ruleId: 'premium-users-rule',
185
- * evaluatedAt: '2024-01-15T10:30:00Z'
186
- * }
187
- * ```
188
- */
189
- evaluateFlag(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
190
- /**
191
- * Checks if a feature flag is enabled.
192
- *
193
- * @param key - Feature flag key
194
- * @param context - Evaluation context
195
- * @returns Boolean indicating if flag is enabled
196
- */
197
- isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean>;
198
- /**
199
- * Gets all feature flags with their evaluations.
200
- *
201
- * @param context - Evaluation context
202
- * @returns All feature flag evaluations
203
- */
204
- getAllFlags(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
205
- /**
206
- * Creates a new feature flag.
207
- *
208
- * @param createData - Flag creation data
209
- * @returns Created feature flag
210
- */
211
- createFlag(createData: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
212
- /**
213
- * Updates an existing feature flag.
214
- *
215
- * @param key - Feature flag key
216
- * @param updateData - Flag update data
217
- * @returns Updated feature flag
218
- */
219
- updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
220
- /**
221
- * Deletes a feature flag.
222
- *
223
- * @param key - Feature flag key
224
- */
225
- deleteFlag(key: FeatureFlagKey): Promise<void>;
226
- /**
227
- * Sets a manual override for a flag.
228
- *
229
- * @param key - Feature flag key
230
- * @param value - Override value
231
- */
232
- setOverride(key: FeatureFlagKey, value: FeatureFlagValue): Promise<void>;
233
- /**
234
- * Removes a manual override for a flag.
235
- *
236
- * @param key - Feature flag key
237
- */
238
- removeOverride(key: FeatureFlagKey): Promise<void>;
239
- /**
240
- * Gets all available feature flags.
241
- *
242
- * @param environment - Filter by environment
243
- * @returns List of feature flags
244
- */
245
- getAllFeatureFlags(environment?: string): Promise<FeatureFlag<FeatureFlagKey>[]>;
246
- /**
247
- * Gets all rules for a specific flag.
248
- *
249
- * @param key - Feature flag key
250
- * @returns List of rules for the flag
251
- */
252
- getFlagRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
253
- /**
254
- * Forces a refresh of the feature flag cache.
255
- */
256
- refreshCache(): Promise<void>;
257
- /**
258
- * Gets provider health status.
259
- *
260
- * @returns Provider health information
261
- */
262
- getHealthStatus(): Promise<ProviderHealthStatus>;
263
- }
264
- //# sourceMappingURL=feature-flag.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-flag.service.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,eAAe,EAEpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAI1B,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,kBAAmB,YAAW,YAAY,EAAE,eAAe;IAK1D,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAJlD,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAuC;gBAE1B,qBAAqB,EAAE,qBAAqB,CAAC,cAAc,CAAC;IAEzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;YACW,kBAAkB;IAkBhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACG,YAAY,CAChB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAmBjD;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpF;;;;;OAKG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAiBjE;;;;;OAKG;IACG,UAAU,CACd,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAC5C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAevC;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GACrD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAevC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9E;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD;;;;;OAKG;IACG,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;IAStF;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IASnF;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;CAOvD"}
@@ -1,103 +0,0 @@
1
- /**
2
- * useFeatureFlag Hook
3
- *
4
- * React hook for accessing individual feature flags with caching and real-time updates.
5
- * This will be moved to @plyaz/core when the package structure is finalized.
6
- *
7
- * @fileoverview React hook for feature flag access
8
- * @version 1.0.0
9
- */
10
- import type { FeatureFlagValue, FeatureFlagHook, UseFeatureFlagOptions } from '@plyaz/types';
11
- /**
12
- * React hook for accessing a single feature flag.
13
- * Provides real-time updates and automatic caching.
14
- *
15
- * @template T - Expected type of the flag value
16
- * @param key - Feature flag key to evaluate
17
- * @param options - Hook configuration options
18
- * @returns Feature flag hook state
19
- *
20
- * @example
21
- * ```typescript
22
- * // Basic usage
23
- * const { value: isEnabled, isLoading, error } = useFeatureFlag<FeatureFlagKey>('AUTH_GOOGLE');
24
- *
25
- * // With context and type safety
26
- * const { value, isLoading, refresh } = useFeatureFlag<FeatureFlagKey, number>(
27
- * 'ROLLOUT_PERCENTAGE',
28
- * {
29
- * context: { userId: 'user123', environment: 'production' },
30
- * defaultValue: 0
31
- * }
32
- * );
33
- *
34
- * // With auto-refresh disabled
35
- * const { value, refresh } = useFeatureFlag<FeatureFlagKey>('BETA_FEATURE', {
36
- * autoRefresh: false,
37
- * defaultValue: false
38
- * });
39
- * ```
40
- */
41
- export declare function useFeatureFlag<FeatureFlagKey extends string, T extends FeatureFlagValue = boolean>(key: FeatureFlagKey, options?: UseFeatureFlagOptions): FeatureFlagHook<T>;
42
- /**
43
- * Hook for checking if a feature flag is enabled.
44
- * Simplified version of useFeatureFlag that returns only boolean state.
45
- *
46
- * @param key - Feature flag key to check
47
- * @param options - Hook configuration options
48
- * @returns Boolean indicating if flag is enabled
49
- *
50
- * @example
51
- * ```typescript
52
- * const isGoogleAuthEnabled = useFeatureFlagEnabled<FeatureFlagKey>('AUTH_GOOGLE');
53
- * const isBetaEnabled = useFeatureFlagEnabled<FeatureFlagKey>('BETA_FEATURE', {
54
- * context: { userId: 'user123', environment: 'production' }
55
- * });
56
- * ```
57
- */
58
- export declare function useFeatureFlagEnabled<FeatureFlagKey extends string>(key: FeatureFlagKey, options?: UseFeatureFlagOptions): boolean;
59
- /**
60
- * Hook for getting a feature flag value with type safety.
61
- * Provides the raw value without the loading state wrapper.
62
- *
63
- * @template T - Expected type of the flag value
64
- * @param key - Feature flag key to get value for
65
- * @param options - Hook configuration options
66
- * @returns The flag value with type safety
67
- *
68
- * @example
69
- * ```typescript
70
- * const rolloutPercentage = useFeatureFlagValue<FeatureFlagKey, number>('ROLLOUT_PERCENTAGE', {
71
- * defaultValue: 0
72
- * });
73
- *
74
- * const theme = useFeatureFlagValue<FeatureFlagKey, 'light' | 'dark'>('UI_THEME', {
75
- * defaultValue: 'light'
76
- * });
77
- * ```
78
- */
79
- export declare function useFeatureFlagValue<FeatureFlagKey extends string, T extends FeatureFlagValue = FeatureFlagValue>(key: FeatureFlagKey, options?: UseFeatureFlagOptions): T;
80
- /**
81
- * Hook for evaluating multiple feature flags at once.
82
- * Useful for loading multiple flags with a single provider call.
83
- *
84
- * @param keys - Array of feature flag keys to evaluate
85
- * @param options - Hook configuration options
86
- * @returns Map of flag keys to their hook states
87
- *
88
- * @example
89
- * ```typescript
90
- * const flags = useMultipleFeatureFlags<FeatureFlagKey>([
91
- * 'AUTH_GOOGLE',
92
- * 'AUTH_GITHUB',
93
- * 'BETA_FEATURE'
94
- * ], {
95
- * context: { userId: 'user123', environment: 'production' }
96
- * });
97
- *
98
- * const isGoogleEnabled = flags.AUTH_GOOGLE.value;
99
- * const isGithubEnabled = flags.AUTH_GITHUB.value;
100
- * ```
101
- */
102
- export declare function useMultipleFeatureFlags<FeatureFlagKey extends string>(keys: FeatureFlagKey[], options?: UseFeatureFlagOptions): Record<FeatureFlagKey, FeatureFlagHook<FeatureFlagValue>>;
103
- //# sourceMappingURL=useFeatureFlag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFeatureFlag.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlag.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAO7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAAC,cAAc,SAAS,MAAM,EAAE,CAAC,SAAS,gBAAgB,GAAG,OAAO,EAChG,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,qBAA0B,GAClC,eAAe,CAAC,CAAC,CAAC,CA8CpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,SAAS,MAAM,EACjE,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAOT;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAC7C,GAAG,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B,GAAG,CAAC,CAG7D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,SAAS,MAAM,EACnE,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAuB3D"}
@@ -1,35 +0,0 @@
1
- /**
2
- * useFeatureFlagHelpers Hook
3
- *
4
- * React hook providing helper functions for feature flag management.
5
- * This will be moved to @plyaz/core when the package structure is finalized.
6
- *
7
- * @fileoverview Helper functions hook for feature flags
8
- * @version 1.0.0
9
- */
10
- import type { FeatureFlagHelpers } from '@plyaz/types';
11
- /**
12
- * Hook that provides helper functions for feature flag operations.
13
- * Includes override management, bulk operations, and conditional execution.
14
- *
15
- * @returns Object containing helper functions
16
- *
17
- * @example
18
- * ```typescript
19
- * const helpers = useFeatureFlagHelpers<FeatureFlagKey>();
20
- *
21
- * // Set override
22
- * helpers.setOverride('AUTH_GOOGLE', true);
23
- *
24
- * // Check multiple flags
25
- * const anyEnabled = await helpers.isAnyEnabled(['AUTH_GOOGLE', 'AUTH_GITHUB']);
26
- *
27
- * // Conditional execution
28
- * const result = await helpers.whenEnabled('BETA_FEATURE',
29
- * () => console.log('Beta feature is enabled'),
30
- * () => console.log('Beta feature is disabled')
31
- * );
32
- * ```
33
- */
34
- export declare function useFeatureFlagHelpers<FeatureFlagKey extends string>(): FeatureFlagHelpers<FeatureFlagKey>;
35
- //# sourceMappingURL=useFeatureFlagActions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFeatureFlagActions.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlagActions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAwC,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG7F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,SAAS,MAAM,KAC1B,kBAAkB,CAAC,cAAc,CAAC,CAsGtC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Feature Flag Hook Helpers
3
- *
4
- * Helper functions for feature flag hooks to reduce function complexity.
5
- *
6
- * @fileoverview Helper functions for feature flag hooks
7
- * @version 1.0.0
8
- */
9
- import type * as React from 'react';
10
- import type { FeatureFlagValue, FeatureFlagContext, FeatureFlagHook, FeatureFlagProvider, FeatureFlagState } from '@plyaz/types';
11
- /**
12
- * Creates evaluation function for a feature flag.
13
- *
14
- * @template FeatureFlagKey - The type of feature flag keys
15
- * @template T - The expected type of the flag value
16
- * @param params - Evaluation parameters
17
- * @param params.provider - Feature flag provider instance
18
- * @param params.key - Feature flag key to evaluate
19
- * @param params.context - Optional evaluation context
20
- * @param params.defaultValue - Default value if evaluation fails
21
- * @param setState - React state setter for flag state
22
- * @returns Async function that evaluates the flag
23
- */
24
- export declare function createEvaluationFunction<FeatureFlagKey extends string, T extends FeatureFlagValue = string | number | boolean | Record<string, unknown>>(params: {
25
- provider: FeatureFlagProvider<FeatureFlagKey> | null;
26
- key: FeatureFlagKey;
27
- context: FeatureFlagContext | undefined;
28
- defaultValue: T | undefined;
29
- }, setState: React.Dispatch<React.SetStateAction<FeatureFlagState<FeatureFlagKey, T>>>): () => Promise<void>;
30
- /**
31
- * Custom hook for managing feature flag evaluation logic.
32
- * Handles loading state, error management, and automatic evaluation.
33
- *
34
- * @template FeatureFlagKey - The type of feature flag keys
35
- * @template T - The expected type of the flag value
36
- * @param key - Feature flag key to evaluate
37
- * @param context - Optional evaluation context
38
- * @param defaultValue - Default value if evaluation fails
39
- * @param provider - Feature flag provider instance
40
- * @returns Feature flag hook state with value, loading, error, and refresh function
41
- */
42
- export declare function useFeatureFlagEvaluation<FeatureFlagKey extends string, T extends FeatureFlagValue = boolean>(key: FeatureFlagKey, context: FeatureFlagContext | undefined, defaultValue: T | undefined, provider: FeatureFlagProvider<FeatureFlagKey> | null): FeatureFlagHook<T>;
43
- /**
44
- * Custom hook for managing multiple feature flags evaluation.
45
- * Returns a record of flag states for multiple flags.
46
- *
47
- * @template FeatureFlagKey - The type of feature flag keys
48
- * @param keys - Array of feature flag keys to evaluate
49
- * @param context - Optional evaluation context
50
- * @param defaultValue - Default value for all flags if evaluation fails
51
- * @param provider - Feature flag provider instance
52
- * @returns Record mapping flag keys to their hook states
53
- */
54
- export declare function useMultipleFeatureFlagsEvaluation<FeatureFlagKey extends string>(keys: FeatureFlagKey[], context: FeatureFlagContext | undefined, defaultValue: FeatureFlagValue, provider: FeatureFlagProvider<FeatureFlagKey> | null): Record<string, FeatureFlagHook<FeatureFlagValue>>;
55
- //# sourceMappingURL=useFeatureFlagHelpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFeatureFlagHelpers.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlagHelpers.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhF,MAAM,EAAE;IACN,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACrD,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;CAC7B,EACD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,GAClF,MAAM,OAAO,CAAC,IAAI,CAAC,CA0BrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,gBAAgB,GAAG,OAAO,EAEpC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,YAAY,EAAE,CAAC,GAAG,SAAS,EAC3B,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,GACnD,eAAe,CAAC,CAAC,CAAC,CA+BpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,MAAM,EAC7E,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,GACnD,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CA6InD"}
@@ -1,57 +0,0 @@
1
- /**
2
- * useFeatureFlagProvider Hook
3
- *
4
- * React hook for accessing the feature flag provider from context.
5
- * This will be moved to @plyaz/core when the package structure is finalized.
6
- *
7
- * @fileoverview Provider access hook for feature flags
8
- * @version 1.0.0
9
- */
10
- import type { FeatureFlagProvider } from '@plyaz/types';
11
- /**
12
- * Hook for accessing the feature flag provider from React context.
13
- * Must be used within a FeatureFlagProvider component.
14
- *
15
- * @returns Feature flag provider instance
16
- * @throws Error if used outside of FeatureFlagProvider
17
- *
18
- * @example
19
- * ```typescript
20
- * function MyComponent() {
21
- * const provider = useFeatureFlagProvider<FeatureFlagKey>();
22
- *
23
- * const handleRefresh = async () => {
24
- * await provider.refresh();
25
- * };
26
- *
27
- * return <button onClick={handleRefresh}>Refresh Flags</button>;
28
- * }
29
- * ```
30
- */
31
- export declare function useFeatureFlagProvider<FeatureFlagKey extends string>(): FeatureFlagProvider<FeatureFlagKey>;
32
- /**
33
- * Hook for accessing the feature flag provider status.
34
- * Provides information about provider initialization and health.
35
- *
36
- * @returns Provider status information
37
- *
38
- * @example
39
- * ```typescript
40
- * function StatusComponent() {
41
- * const { isInitialized, isLoading, error } = useFeatureFlagProviderStatus<FeatureFlagKey>();
42
- *
43
- * if (isLoading) return <div>Loading feature flags...</div>;
44
- * if (error) return <div>Error: {error.message}</div>;
45
- * if (!isInitialized) return <div>Initializing...</div>;
46
- *
47
- * return <div>Feature flags ready!</div>;
48
- * }
49
- * ```
50
- */
51
- export declare function useFeatureFlagProviderStatus<FeatureFlagKey extends string>(): {
52
- isInitialized: boolean;
53
- isLoading: boolean;
54
- error: Error | null;
55
- lastUpdated: Date | null | undefined;
56
- };
57
- //# sourceMappingURL=useFeatureFlagProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFeatureFlagProvider.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlagProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,cAAc,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,SAAS,MAAM,KAC1B,mBAAmB,CAAC,cAAc,CAAC,CAWvC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,4BAA4B,CAAC,cAAc,SAAS,MAAM,KAAK;IAC7E,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,CAgBA"}
@@ -1,99 +0,0 @@
1
- /**
2
- * Feature Flag Provider Component
3
- *
4
- * React context provider for feature flags system.
5
- * This will be moved to @plyaz/core when the package structure is finalized.
6
- *
7
- * @fileoverview React provider for feature flag context
8
- * @version 1.0.0
9
- */
10
- import React from 'react';
11
- import type { FeatureFlagConfig, FeatureFlagContextValue, FeatureFlagProviderProps, FeatureFlagValue } from '@plyaz/types';
12
- import type { FeatureFlagKey } from '@domain/types';
13
- /**
14
- * React context for feature flag provider.
15
- * Using string as the base type to support any feature flag key.
16
- */
17
- export declare const FeatureFlagContext: React.Context<FeatureFlagContextValue<"AUTH_GOOGLE" | "AUTH_DISCORD" | "AUTH_FACEBOOK" | "AUTH_GITHUB"> | null>;
18
- /**
19
- * Feature Flag Provider component that manages the feature flag system.
20
- * Provides context for accessing feature flags throughout the React component tree.
21
- *
22
- * @param props - Provider configuration and options
23
- * @returns JSX element providing feature flag context
24
- *
25
- * @example
26
- * ```typescript
27
- * // Basic usage
28
- * function App() {
29
- * return (
30
- * <FeatureFlagAppProvider
31
- * config={{
32
- * provider: 'memory',
33
- * isCacheEnabled: true,
34
- * cacheTtl: 300,
35
- * }}
36
- * features={FEATURES}
37
- * >
38
- * <MyApplication />
39
- * </FeatureFlagAppProvider>
40
- * );
41
- * }
42
- *
43
- * // With custom context and callbacks
44
- * function App() {
45
- * const featureFlagConfig = {
46
- * provider: 'api' as const,
47
- * apiEndpoint: 'https://api.example.com',
48
- * apiKey: process.env.REACT_APP_FF_API_KEY,
49
- * isCacheEnabled: true,
50
- * cacheTtl: 300,
51
- * };
52
- *
53
- * const defaultContext = {
54
- * environment: 'production' as const,
55
- * userId: getCurrentUserId(),
56
- * userRole: getCurrentUserRole(),
57
- * };
58
- *
59
- * return (
60
- * <FeatureFlagAppProvider
61
- * config={featureFlagConfig}
62
- * features={FEATURES}
63
- * defaultContext={defaultContext}
64
- * onReady={(provider) => console.log('Feature flags ready!')}
65
- * onError={(error) => console.error('Feature flag error:', error)}
66
- * showLoading
67
- * >
68
- * <MyApplication />
69
- * </FeatureFlagAppProvider>
70
- * );
71
- * }
72
- * ```
73
- */
74
- export declare function FeatureFlagAppProvider<FeatureFlags extends Record<FeatureFlagKey, FeatureFlagValue>>({ config, children, features, onReady, onError, isShowLoading, loadingComponent, errorComponent, }: FeatureFlagProviderProps<FeatureFlagKey, FeatureFlags>): React.ReactElement;
75
- export declare namespace FeatureFlagAppProvider {
76
- var displayName: string;
77
- }
78
- /**
79
- * Higher-order component for providing feature flag context.
80
- * Alternative to using the FeatureFlagAppProvider component directly.
81
- *
82
- * @param config - Feature flag configuration
83
- * @param options - Additional provider options
84
- * @returns HOC function that wraps components with feature flag provider
85
- *
86
- * @example
87
- * ```typescript
88
- * const withFeatureFlags = createFeatureFlagProvider({
89
- * provider: 'memory',
90
- * isCacheEnabled: true,
91
- * }, {
92
- * features: FEATURES
93
- * });
94
- *
95
- * const AppWithFeatureFlags = withFeatureFlags(App);
96
- * ```
97
- */
98
- export declare function createFeatureFlagProvider<FeatureFlags extends Record<FeatureFlagKey, FeatureFlagValue>>(config: FeatureFlagConfig<FeatureFlagKey>, options?: Pick<FeatureFlagProviderProps<FeatureFlagKey, FeatureFlags>, 'defaultContext' | 'onReady' | 'onError' | 'features'>): <P extends object>(component: React.ComponentType<P>) => React.ComponentType<P>;
99
- //# sourceMappingURL=FeatureFlagProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureFlagProvider.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/providers/FeatureFlagProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAEV,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,iHAE9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,wBAAgB,sBAAsB,CACpC,YAAY,SAAS,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAC7D,EACA,MAAM,EAEN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,aAAqB,EACrB,gBAAgB,EAChB,cAAc,GACf,EAAE,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CA0J7E;yBAtKe,sBAAsB;;;AA2KtC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,SAAS,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAE7D,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,OAAO,CAAC,EAAE,IAAI,CACZ,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,EACtD,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CACtD,IAEgC,CAAC,SAAS,MAAM,EAC/C,WAAW,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAChC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAe1B"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Feature Flag Provider Helpers
3
- *
4
- * Helper functions for the FeatureFlagProvider component to reduce complexity.
5
- *
6
- * @fileoverview Helper functions for FeatureFlagProvider
7
- * @version 1.0.0
8
- */
9
- import React from 'react';
10
- import type { FeatureFlagConfig } from '@plyaz/types';
11
- import type { ProviderState, UseFeatureFlagProviderState } from './types';
12
- /**
13
- * Hook for managing feature flag provider state and initialization.
14
- */
15
- export declare function useFeatureFlagProviderState<FeatureFlagKey extends string>(config: FeatureFlagConfig<FeatureFlagKey>, onReady?: () => void, onError?: (error: Error) => void): UseFeatureFlagProviderState<FeatureFlagKey>;
16
- /**
17
- * Hook for setting up provider subscription and cleanup.
18
- */
19
- export declare function useProviderSubscription<FeatureFlagKey extends string>(state: ProviderState<FeatureFlagKey>, setState: React.Dispatch<React.SetStateAction<ProviderState<FeatureFlagKey>>>): void;
20
- /**
21
- * Renders loading state component.
22
- */
23
- export declare function renderLoadingState(isShowLoading: boolean, isLoading: boolean, loadingComponent?: React.ComponentType): React.ReactElement | null;
24
- /**
25
- * Renders error state component.
26
- */
27
- export declare function renderErrorState(error: Error | null, errorComponent?: React.ComponentType<{
28
- error: Error;
29
- retry: () => void;
30
- }>, retry?: () => void): React.ReactElement | null;
31
- //# sourceMappingURL=FeatureFlagProviderHelpers.d.ts.map