@plyaz/core 1.0.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.
- package/README.md +439 -0
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +135 -0
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.module.d.ts +114 -0
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.repository.d.ts +85 -0
- package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.service.d.ts +123 -0
- package/dist/backend/featureFlags/feature-flag.service.d.ts.map +1 -0
- package/dist/backend/featureFlags/index.d.ts +49 -0
- package/dist/backend/featureFlags/index.d.ts.map +1 -0
- package/dist/backend/index.d.ts +5 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/cache/index.d.ts +98 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/strategies/memory.d.ts +103 -0
- package/dist/cache/strategies/memory.d.ts.map +1 -0
- package/dist/cache/strategies/redis.d.ts +105 -0
- package/dist/cache/strategies/redis.d.ts.map +1 -0
- package/dist/domain/featureFlags/index.d.ts +49 -0
- package/dist/domain/featureFlags/index.d.ts.map +1 -0
- package/dist/domain/featureFlags/provider.d.ts +166 -0
- package/dist/domain/featureFlags/provider.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/api.d.ts +78 -0
- package/dist/domain/featureFlags/providers/api.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/database.d.ts +102 -0
- package/dist/domain/featureFlags/providers/database.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/factory.d.ts +116 -0
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/file.d.ts +84 -0
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/memory.d.ts +179 -0
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/redis.d.ts +80 -0
- package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/types.d.ts +18 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/engine/featureFlags/engine.d.ts +193 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -0
- package/dist/engine/featureFlags/index.d.ts +10 -0
- package/dist/engine/featureFlags/index.d.ts.map +1 -0
- package/dist/engine/index.d.ts +5 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +103 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +35 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +55 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +57 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +1 -0
- package/dist/frontend/featureFlags/index.d.ts +14 -0
- package/dist/frontend/featureFlags/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +99 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +1 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +45 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +1 -0
- package/dist/frontend/index.d.ts +2 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/dist/index.cjs +3951 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +3902 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils/common/hash.d.ts +81 -0
- package/dist/utils/common/hash.d.ts.map +1 -0
- package/dist/utils/common/index.d.ts +11 -0
- package/dist/utils/common/index.d.ts.map +1 -0
- package/dist/utils/common/values.d.ts +48 -0
- package/dist/utils/common/values.d.ts.map +1 -0
- package/dist/utils/featureFlags/conditions.d.ts +114 -0
- package/dist/utils/featureFlags/conditions.d.ts.map +1 -0
- package/dist/utils/featureFlags/context.d.ts +241 -0
- package/dist/utils/featureFlags/context.d.ts.map +1 -0
- package/dist/utils/featureFlags/index.d.ts +11 -0
- package/dist/utils/featureFlags/index.d.ts.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/package.json +144 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Provider - Core Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main provider class that orchestrates feature flag evaluation and management.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Core feature flag provider implementation
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureFlagProvider as IFeatureFlagProvider, FeatureFlagConfig, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlagValue, FetchFeatureFlagDataResponse } from '@plyaz/types';
|
|
11
|
+
import { FeatureFlagEngine } from '@engine/featureFlags/engine';
|
|
12
|
+
import { CacheManager } from '@cache/index';
|
|
13
|
+
/**
|
|
14
|
+
* Subscription callback function type
|
|
15
|
+
*/
|
|
16
|
+
export type SubscriptionCallback = () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Core feature flag provider that implements the main business logic.
|
|
19
|
+
* This class orchestrates between the evaluation engine, caching, and data providers.
|
|
20
|
+
*
|
|
21
|
+
* @class FeatureFlagProvider
|
|
22
|
+
* @implements {IFeatureFlagProvider}
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const provider = new MemoryFeatureFlagProvider<MyFeatureFlags>(config, FEATURES);
|
|
27
|
+
* await provider.initialize();
|
|
28
|
+
*
|
|
29
|
+
* const isEnabled = await provider.isEnabled('AUTH_GOOGLE', context);
|
|
30
|
+
* const value = await provider.getValue('ROLLOUT_PERCENTAGE', context);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare abstract class FeatureFlagProvider<FeatureFlagKey extends string> implements IFeatureFlagProvider<FeatureFlagKey> {
|
|
34
|
+
protected config: FeatureFlagConfig<FeatureFlagKey>;
|
|
35
|
+
protected engine: FeatureFlagEngine<FeatureFlagKey>;
|
|
36
|
+
protected cacheManager: CacheManager;
|
|
37
|
+
protected subscribers: Set<SubscriptionCallback>;
|
|
38
|
+
protected refreshTimer?: ReturnType<typeof setInterval>;
|
|
39
|
+
protected isInitialized: boolean;
|
|
40
|
+
protected features: Record<FeatureFlagKey, FeatureFlagValue>;
|
|
41
|
+
protected initializePromise?: Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new feature flag provider.
|
|
44
|
+
*
|
|
45
|
+
* @param config - Provider configuration
|
|
46
|
+
* @param features - Record of feature flag keys to their default values
|
|
47
|
+
*/
|
|
48
|
+
constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
|
|
49
|
+
/**
|
|
50
|
+
* Abstract method to fetch flags and rules from the provider's data source.
|
|
51
|
+
* Must be implemented by concrete provider classes.
|
|
52
|
+
*
|
|
53
|
+
* @protected
|
|
54
|
+
* @abstract
|
|
55
|
+
* @returns Promise resolving to flags and rules
|
|
56
|
+
*/
|
|
57
|
+
protected abstract fetchData(): Promise<FetchFeatureFlagDataResponse<FeatureFlagKey>>;
|
|
58
|
+
/**
|
|
59
|
+
* Initializes the provider by loading initial data.
|
|
60
|
+
*
|
|
61
|
+
* @returns Promise that resolves when initialization is complete
|
|
62
|
+
*/
|
|
63
|
+
initialize(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Performs the actual initialization work.
|
|
66
|
+
*
|
|
67
|
+
* @private
|
|
68
|
+
* @returns Promise that resolves when initialization is complete
|
|
69
|
+
*/
|
|
70
|
+
private doInitialize;
|
|
71
|
+
/**
|
|
72
|
+
* Gets a feature flag evaluation for the specified key and context.
|
|
73
|
+
*
|
|
74
|
+
* @param key - The feature flag key
|
|
75
|
+
* @param context - Optional context for evaluation
|
|
76
|
+
* @returns Promise resolving to the flag evaluation
|
|
77
|
+
*/
|
|
78
|
+
getFlag(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
|
|
79
|
+
/**
|
|
80
|
+
* Checks if a feature flag is enabled.
|
|
81
|
+
*
|
|
82
|
+
* @param key - The feature flag key
|
|
83
|
+
* @param context - Optional context for evaluation
|
|
84
|
+
* @returns Promise resolving to boolean indicating if flag is enabled
|
|
85
|
+
*/
|
|
86
|
+
isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Gets the value of a feature flag.
|
|
89
|
+
*
|
|
90
|
+
* @template T - The expected type of the flag value
|
|
91
|
+
* @param key - The feature flag key
|
|
92
|
+
* @param context - Optional context for evaluation
|
|
93
|
+
* @returns Promise resolving to the flag value
|
|
94
|
+
*/
|
|
95
|
+
getValue<T = FeatureFlagValue>(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<T>;
|
|
96
|
+
/**
|
|
97
|
+
* Gets all feature flag evaluations for the given context.
|
|
98
|
+
*
|
|
99
|
+
* @param context - Optional context for evaluation
|
|
100
|
+
* @returns Promise resolving to record of flag evaluations
|
|
101
|
+
*/
|
|
102
|
+
getAllFlags(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
|
|
103
|
+
/**
|
|
104
|
+
* Refreshes the provider by fetching latest data from the source.
|
|
105
|
+
*
|
|
106
|
+
* @returns Promise that resolves when refresh is complete
|
|
107
|
+
*/
|
|
108
|
+
refresh(): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Subscribes to provider updates.
|
|
111
|
+
*
|
|
112
|
+
* @param callback - Function to call when provider updates
|
|
113
|
+
* @returns Unsubscribe function
|
|
114
|
+
*/
|
|
115
|
+
subscribe(callback: SubscriptionCallback): () => void;
|
|
116
|
+
/**
|
|
117
|
+
* Sets an override for a specific flag key.
|
|
118
|
+
*
|
|
119
|
+
* @param key - The flag key to override
|
|
120
|
+
* @param value - The value to force for this flag
|
|
121
|
+
*/
|
|
122
|
+
setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void;
|
|
123
|
+
/**
|
|
124
|
+
* Removes an override for a specific flag key.
|
|
125
|
+
*
|
|
126
|
+
* @param key - The flag key to remove override for
|
|
127
|
+
*/
|
|
128
|
+
removeOverride(key: FeatureFlagKey): void;
|
|
129
|
+
/**
|
|
130
|
+
* Clears all overrides.
|
|
131
|
+
*/
|
|
132
|
+
clearOverrides(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Disposes of the provider, cleaning up resources.
|
|
135
|
+
*/
|
|
136
|
+
dispose(): void;
|
|
137
|
+
/**
|
|
138
|
+
* Generates a cache key for flag evaluation.
|
|
139
|
+
*
|
|
140
|
+
* @protected
|
|
141
|
+
* @param key - Feature flag key
|
|
142
|
+
* @param context - Evaluation context
|
|
143
|
+
* @returns Cache key string
|
|
144
|
+
*/
|
|
145
|
+
protected generateCacheKey(key: FeatureFlagKey, context?: FeatureFlagContext): string;
|
|
146
|
+
/**
|
|
147
|
+
* Sets up the automatic refresh timer if configured.
|
|
148
|
+
*
|
|
149
|
+
* @protected
|
|
150
|
+
*/
|
|
151
|
+
protected setupRefreshTimer(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Notifies all subscribers of provider updates.
|
|
154
|
+
*
|
|
155
|
+
* @protected
|
|
156
|
+
*/
|
|
157
|
+
protected notifySubscribers(): void;
|
|
158
|
+
/**
|
|
159
|
+
* Logs a message if logging is enabled.
|
|
160
|
+
*
|
|
161
|
+
* @protected
|
|
162
|
+
* @param args - Arguments to log
|
|
163
|
+
*/
|
|
164
|
+
protected log(...args: unknown[]): void;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/domain/featureFlags/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,mBAAmB,IAAI,oBAAoB,EAC3C,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,mBAAmB,CAAC,cAAc,SAAS,MAAM,CACrE,YAAW,oBAAoB,CAAC,cAAc,CAAC;IAiB7C,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAfrD,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,WAAW,4BAAmC;IACxD,SAAS,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IACxD,SAAS,CAAC,aAAa,UAAS;IAChC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC7D,SAAS,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;;;OAKG;gBAES,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnD,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAgBpD;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAErF;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;;;;OAKG;YACW,YAAY;IAa1B;;;;;;OAMG;IACG,OAAO,CACX,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAuBjD;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpF;;;;;;;OAOG;IACG,QAAQ,CAAC,CAAC,GAAG,gBAAgB,EACjC,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;OAKG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAuBjE;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB9B;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAOrD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAM/D;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAMzC;;OAEG;IACH,cAAc,IAAI,IAAI;IAMtB;;OAEG;IACH,OAAO,IAAI,IAAI;IAaf;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAkBrF;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAUnC;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAUnC;;;;;OAKG;IACH,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAKxC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Feature Flag Provider (Stub)
|
|
3
|
+
*
|
|
4
|
+
* API-based provider stub that requires @plyaz/api package implementation.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview API provider stub for feature flags
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
11
|
+
import { FeatureFlagProvider } from '../provider';
|
|
12
|
+
/**
|
|
13
|
+
* API-based feature flag provider requiring @plyaz/api implementation.
|
|
14
|
+
*
|
|
15
|
+
* @class ApiFeatureFlagProvider
|
|
16
|
+
* @extends {FeatureFlagProvider}
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // This will throw an error until @plyaz/api is implemented
|
|
21
|
+
* const provider = new ApiFeatureFlagProvider({
|
|
22
|
+
* provider: 'api',
|
|
23
|
+
* apiEndpoint: 'https://api.plyaz.co.uk',
|
|
24
|
+
* apiKey: process.env.FEATURE_FLAG_API_KEY,
|
|
25
|
+
* isCacheEnabled: true,
|
|
26
|
+
* cacheTtl: 300,
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class ApiFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new API feature flag provider.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Provider configuration with API settings
|
|
35
|
+
* @throws Error indicating that @plyaz/api implementation is required
|
|
36
|
+
*/
|
|
37
|
+
constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
|
|
38
|
+
/**
|
|
39
|
+
* Fetches flags and rules from the API endpoint.
|
|
40
|
+
* Currently throws an error as the API implementation is not ready.
|
|
41
|
+
*
|
|
42
|
+
* @protected
|
|
43
|
+
* @returns Promise that rejects with implementation error
|
|
44
|
+
* @throws Error indicating missing API implementation
|
|
45
|
+
*/
|
|
46
|
+
protected fetchData(): Promise<{
|
|
47
|
+
flags: FeatureFlag<FeatureFlagKey>[];
|
|
48
|
+
rules: FeatureFlagRule<FeatureFlagKey>[];
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Validates the API provider configuration.
|
|
52
|
+
*
|
|
53
|
+
* @private
|
|
54
|
+
* @throws Error if configuration is invalid or incomplete
|
|
55
|
+
*/
|
|
56
|
+
private validateConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Validates URL format.
|
|
59
|
+
*
|
|
60
|
+
* @private
|
|
61
|
+
* @param url - URL to validate
|
|
62
|
+
* @returns True if valid URL
|
|
63
|
+
*/
|
|
64
|
+
private isValidUrl;
|
|
65
|
+
/**
|
|
66
|
+
* Gets API provider status and configuration info.
|
|
67
|
+
*
|
|
68
|
+
* @returns API provider status information
|
|
69
|
+
*/
|
|
70
|
+
getApiInfo(): {
|
|
71
|
+
endpoint?: string;
|
|
72
|
+
hasApiKey: boolean;
|
|
73
|
+
isImplemented: boolean;
|
|
74
|
+
requiredPackages: string[];
|
|
75
|
+
documentationPath: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/api.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;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,sBAAsB,CACjC,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;IA6BF;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IASlB;;;;OAIG;IACH,UAAU,IAAI;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;KAC3B;CASF"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Feature Flag Provider (Stub)
|
|
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.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Database provider stub for feature flags
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
11
|
+
import { FeatureFlagProvider } from '../provider';
|
|
12
|
+
/**
|
|
13
|
+
* Database-based feature flag provider requiring @plyaz/db implementation.
|
|
14
|
+
*
|
|
15
|
+
* @class DatabaseFeatureFlagProvider
|
|
16
|
+
* @extends {FeatureFlagProvider}
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // This will throw an error until @plyaz/db is implemented
|
|
21
|
+
* const provider = new DatabaseFeatureFlagProvider({
|
|
22
|
+
* provider: 'database',
|
|
23
|
+
* databaseConfig: {
|
|
24
|
+
* connectionString: process.env.DATABASE_URL,
|
|
25
|
+
* tableName: 'feature_flags',
|
|
26
|
+
* },
|
|
27
|
+
* isCacheEnabled: true,
|
|
28
|
+
* cacheTtl: 300,
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class DatabaseFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new database feature flag provider.
|
|
35
|
+
*
|
|
36
|
+
* @param config - Provider configuration with database settings
|
|
37
|
+
* @throws Error indicating that @plyaz/db implementation is required
|
|
38
|
+
*/
|
|
39
|
+
constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
|
|
40
|
+
/**
|
|
41
|
+
* Fetches flags and rules from the database.
|
|
42
|
+
* Currently throws an error as the database implementation is not ready.
|
|
43
|
+
*
|
|
44
|
+
* @protected
|
|
45
|
+
* @returns Promise that rejects with implementation error
|
|
46
|
+
* @throws Error indicating missing database implementation
|
|
47
|
+
*/
|
|
48
|
+
protected fetchData(): Promise<{
|
|
49
|
+
flags: FeatureFlag<FeatureFlagKey>[];
|
|
50
|
+
rules: FeatureFlagRule<FeatureFlagKey>[];
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Validates the database provider configuration.
|
|
54
|
+
*
|
|
55
|
+
* @private
|
|
56
|
+
* @throws Error if configuration is invalid or incomplete
|
|
57
|
+
*/
|
|
58
|
+
private validateConfig;
|
|
59
|
+
private validateProviderType;
|
|
60
|
+
private validateDatabaseConfig;
|
|
61
|
+
private validateConnectionString;
|
|
62
|
+
private logConfigurationStatus;
|
|
63
|
+
/**
|
|
64
|
+
* Validates PostgreSQL URL format.
|
|
65
|
+
*
|
|
66
|
+
* @private
|
|
67
|
+
* @param url - URL to validate
|
|
68
|
+
* @returns True if valid PostgreSQL URL
|
|
69
|
+
*/
|
|
70
|
+
private isValidPostgresUrl;
|
|
71
|
+
/**
|
|
72
|
+
* Validates MySQL URL format.
|
|
73
|
+
*
|
|
74
|
+
* @private
|
|
75
|
+
* @param url - URL to validate
|
|
76
|
+
* @returns True if valid MySQL URL
|
|
77
|
+
*/
|
|
78
|
+
private isValidMysqlUrl;
|
|
79
|
+
/**
|
|
80
|
+
* Masks sensitive parts of connection string for logging.
|
|
81
|
+
*
|
|
82
|
+
* @private
|
|
83
|
+
* @param connectionString - Original connection string
|
|
84
|
+
* @returns Masked connection string
|
|
85
|
+
*/
|
|
86
|
+
private maskConnectionString;
|
|
87
|
+
/**
|
|
88
|
+
* Gets database provider status and configuration info.
|
|
89
|
+
*
|
|
90
|
+
* @returns Database provider status information
|
|
91
|
+
*/
|
|
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
|
+
}
|
|
102
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Provider Factory
|
|
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.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Provider factory for feature flag system
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
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';
|
|
16
|
+
/**
|
|
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.
|
|
32
|
+
*
|
|
33
|
+
* @class FeatureFlagProviderFactory
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const provider = FeatureFlagProviderFactory.create({
|
|
38
|
+
* provider: 'memory',
|
|
39
|
+
* isCacheEnabled: true,
|
|
40
|
+
* cacheTtl: 300,
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare class FeatureFlagProviderFactory {
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new feature flag provider instance based on configuration.
|
|
47
|
+
*
|
|
48
|
+
* @param config - Provider configuration
|
|
49
|
+
* @param features - Record of feature flag keys to their default values
|
|
50
|
+
* @returns Configured provider instance
|
|
51
|
+
* @throws Error if provider type is unsupported or configuration is invalid
|
|
52
|
+
*/
|
|
53
|
+
static create<FeatureFlagKey extends string>(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>): FeatureFlagProvider<FeatureFlagKey>;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a provider with automatic initialization.
|
|
56
|
+
*
|
|
57
|
+
* @param config - Provider configuration
|
|
58
|
+
* @param features - Record of feature flag keys to their default values
|
|
59
|
+
* @returns Promise resolving to initialized provider instance
|
|
60
|
+
*/
|
|
61
|
+
static createAndInitialize<FeatureFlagKey extends string>(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>): Promise<FeatureFlagProvider<FeatureFlagKey>>;
|
|
62
|
+
/**
|
|
63
|
+
* Gets a list of all supported provider types.
|
|
64
|
+
*
|
|
65
|
+
* @returns Array of supported provider names
|
|
66
|
+
*/
|
|
67
|
+
static getSupportedProviders(): ProviderType[];
|
|
68
|
+
/**
|
|
69
|
+
* Checks if a provider type is supported.
|
|
70
|
+
*
|
|
71
|
+
* @param providerType - Provider type to check
|
|
72
|
+
* @returns True if provider type is supported
|
|
73
|
+
*/
|
|
74
|
+
static isProviderSupported(providerType: string): providerType is ProviderType;
|
|
75
|
+
/**
|
|
76
|
+
* Gets provider information including implementation status.
|
|
77
|
+
*
|
|
78
|
+
* @returns Record of provider information
|
|
79
|
+
*/
|
|
80
|
+
static getProvidersInfo(): Record<ProviderType, {
|
|
81
|
+
name: string;
|
|
82
|
+
isImplemented: boolean;
|
|
83
|
+
description: string;
|
|
84
|
+
requirements?: string[];
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a default memory provider for testing environments.
|
|
88
|
+
*
|
|
89
|
+
* @param features - Record of feature flag keys to their default values
|
|
90
|
+
* @param overrides - Optional configuration overrides
|
|
91
|
+
* @returns Memory provider instance
|
|
92
|
+
*/
|
|
93
|
+
static createDefault<FeatureFlagKey extends string>(features: Record<FeatureFlagKey, FeatureFlagValue>, overrides?: Partial<FeatureFlagConfig<FeatureFlagKey>>): FeatureFlagProvider<FeatureFlagKey>;
|
|
94
|
+
/**
|
|
95
|
+
* Validates provider configuration before instantiation.
|
|
96
|
+
*
|
|
97
|
+
* @private
|
|
98
|
+
* @param config - Configuration to validate
|
|
99
|
+
* @throws Error if configuration is invalid
|
|
100
|
+
*/
|
|
101
|
+
private static validateConfig;
|
|
102
|
+
/**
|
|
103
|
+
* Validates provider-specific configuration requirements.
|
|
104
|
+
*
|
|
105
|
+
* @private
|
|
106
|
+
* @param config - Configuration to validate
|
|
107
|
+
* @throws Error if provider-specific configuration is invalid
|
|
108
|
+
*/
|
|
109
|
+
private static validateProviderSpecificConfig;
|
|
110
|
+
private static validateFileConfig;
|
|
111
|
+
private static validateRedisConfig;
|
|
112
|
+
private static validateApiConfig;
|
|
113
|
+
private static validateDatabaseConfig;
|
|
114
|
+
}
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,QAAA,MAAM,iBAAiB;;;;;;CAYtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,qBAAa,0BAA0B;IACrC;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,cAAc,SAAS,MAAM,EACzC,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GACjD,mBAAmB,CAAC,cAAc,CAAC;IAsBtC;;;;;;OAMG;WACU,mBAAmB,CAAC,cAAc,SAAS,MAAM,EAC5D,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GACjD,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAM/C;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,IAAI,YAAY,EAAE;IAI9C;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,IAAI,YAAY;IAI9E;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAC/B,YAAY,EACZ;QACE,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CACF;IAyCD;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,cAAc,SAAS,MAAM,EAChD,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAClD,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GACrD,mBAAmB,CAAC,cAAc,CAAC;IActC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAgC7B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAmB7C,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAQjC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAQlC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAQhC,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAOtC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Feature Flag Provider
|
|
3
|
+
*
|
|
4
|
+
* File-based provider implementation supporting JSON and YAML configuration files.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview File provider implementation for feature flags
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
11
|
+
import { FeatureFlagProvider } from '../provider';
|
|
12
|
+
/**
|
|
13
|
+
* File-based feature flag provider supporting JSON and YAML formats.
|
|
14
|
+
*
|
|
15
|
+
* @class FileFeatureFlagProvider
|
|
16
|
+
* @extends {FeatureFlagProvider}
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const provider = new FileFeatureFlagProvider<FeatureFlagKey>({
|
|
21
|
+
* provider: 'file',
|
|
22
|
+
* fileConfig: {
|
|
23
|
+
* filePath: './config/feature-flags.json',
|
|
24
|
+
* format: 'json',
|
|
25
|
+
* shouldWatchForChanges: true,
|
|
26
|
+
* },
|
|
27
|
+
* isCacheEnabled: true,
|
|
28
|
+
* cacheTtl: 60,
|
|
29
|
+
* }, FEATURES);
|
|
30
|
+
*
|
|
31
|
+
* await provider.initialize();
|
|
32
|
+
* const isEnabled = await provider.isEnabled('AUTH_GOOGLE');
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
|
|
36
|
+
private fileWatcher?;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new file feature flag provider.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Provider configuration with file settings
|
|
41
|
+
* @param features - Record of feature flag keys to their default values
|
|
42
|
+
*/
|
|
43
|
+
constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
|
|
44
|
+
/**
|
|
45
|
+
* Fetches flags and rules from the configuration file.
|
|
46
|
+
*
|
|
47
|
+
* @protected
|
|
48
|
+
* @returns Promise resolving to flags and rules from file
|
|
49
|
+
*/
|
|
50
|
+
protected fetchData(): Promise<{
|
|
51
|
+
flags: FeatureFlag<FeatureFlagKey>[];
|
|
52
|
+
rules: FeatureFlagRule<FeatureFlagKey>[];
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Validates the file provider configuration.
|
|
56
|
+
*
|
|
57
|
+
* @private
|
|
58
|
+
* @throws Error if configuration is invalid
|
|
59
|
+
*/
|
|
60
|
+
private validateConfig;
|
|
61
|
+
/**
|
|
62
|
+
* Sets up file watching for hot reload if enabled.
|
|
63
|
+
*
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
private setupFileWatcher;
|
|
67
|
+
/**
|
|
68
|
+
* Disposes of the file provider and stops file watching.
|
|
69
|
+
*/
|
|
70
|
+
dispose(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Gets information about the file provider.
|
|
73
|
+
*
|
|
74
|
+
* @returns File provider information
|
|
75
|
+
*/
|
|
76
|
+
getFileInfo(): {
|
|
77
|
+
filePath?: string;
|
|
78
|
+
format?: string;
|
|
79
|
+
isWatchEnabled: boolean;
|
|
80
|
+
isImplemented: boolean;
|
|
81
|
+
requiredImplementation: string[];
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +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;AAElD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,uBAAuB,CAClC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAiC;IAErD;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAQpD;;;;;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;IAsCF;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,IAAI,IAAI;IAUf;;;;OAIG;IACH,WAAW,IAAI;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;QACvB,sBAAsB,EAAE,MAAM,EAAE,CAAC;KAClC;CAeF"}
|