@plyaz/core 1.0.2 → 1.0.4
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 +69 -16
- package/dist/base/cache/index.d.ts.map +1 -1
- package/dist/base/cache/strategies/memory.d.ts.map +1 -1
- package/dist/base/cache/strategies/redis.d.ts.map +1 -1
- package/dist/domain/featureFlags/provider.d.ts +8 -0
- package/dist/domain/featureFlags/provider.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/factory.d.ts +30 -5
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/file.d.ts +97 -1
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/memory.d.ts +12 -5
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
- package/dist/engine/featureFlags/engine.d.ts +7 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -1
- package/dist/index.cjs +507 -78
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +482 -75
- package/dist/index.mjs.map +1 -1
- package/dist/utils/common/hash.d.ts.map +1 -1
- package/dist/utils/common/values.d.ts.map +1 -1
- package/dist/utils/featureFlags/context.d.ts.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
The `@plyaz/core` package serves as the orchestration layer that combines functionality from specialized packages to provide core business logic, domain models, and SDK foundations.
|
|
6
6
|
|
|
7
|
+
📚 **Full Documentation**:
|
|
8
|
+
- [Core Package Overview](https://plyaz.atlassian.net/wiki/spaces/SD/pages/37257227/Core+Package)
|
|
9
|
+
- [Feature Flag System](https://plyaz.atlassian.net/wiki/spaces/SD/pages/44859395)
|
|
10
|
+
- [Cache System](https://plyaz.atlassian.net/wiki/spaces/SD/pages/44892180)
|
|
11
|
+
|
|
7
12
|
## 🎯 Key Objectives
|
|
8
13
|
|
|
9
14
|
- **Business Logic Orchestration**: Centralize core business logic that coordinates between specialized packages
|
|
@@ -52,23 +57,71 @@ import { createLogger } from '@plyaz/logger';
|
|
|
52
57
|
│ └── contracts/ # External service contracts
|
|
53
58
|
```
|
|
54
59
|
|
|
55
|
-
## 🚀 Currently
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- **
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
- **
|
|
67
|
-
- **
|
|
60
|
+
## 🚀 Currently Implemented Features
|
|
61
|
+
|
|
62
|
+
> **Note**: The @plyaz/core package currently has two main features implemented. Additional providers and backend integrations are in development.
|
|
63
|
+
|
|
64
|
+
### ✅ Feature Flag System (Most Complete)
|
|
65
|
+
- **Implemented Providers**:
|
|
66
|
+
- ✅ Memory Provider - Fully functional with FEATURES constant
|
|
67
|
+
- ✅ File Provider - JSON/YAML support with hot reload capability
|
|
68
|
+
- ⏳ Redis Provider - Stub only (pending implementation)
|
|
69
|
+
- ⏳ API Provider - Stub only (pending implementation)
|
|
70
|
+
- ⏳ Database Provider - Stub only (pending implementation)
|
|
71
|
+
- **Frontend Support**: React hooks and context providers (working)
|
|
72
|
+
- **Backend Support**: NestJS module structure (partial - not fully integrated)
|
|
73
|
+
- **Engine**: Complete rule-based evaluation with targeting and rollouts
|
|
74
|
+
- **Testing**: Full override capabilities for test scenarios
|
|
75
|
+
|
|
76
|
+
### ✅ Cache System (Partially Complete)
|
|
77
|
+
- **Implemented Strategies**:
|
|
78
|
+
- ✅ Memory Strategy - LRU eviction with TTL management
|
|
79
|
+
- ⏳ Redis Strategy - Stub only (pending implementation)
|
|
80
|
+
- **Features**: Statistics tracking, automatic cleanup, TTL management
|
|
81
|
+
- **Integration**: Currently used by feature flag system
|
|
82
|
+
|
|
83
|
+
### 🚧 Pending Implementation
|
|
84
|
+
- **Backend Integration**: Full NestJS module integration
|
|
85
|
+
- **Additional Engines**: Calculation, Incentive, Validation, Insights
|
|
86
|
+
- **SDK Layer**: B2B partner SDK foundation
|
|
87
|
+
- **External Providers**: Redis, API, and Database connections
|
|
88
|
+
|
|
89
|
+
### File Provider Configuration
|
|
90
|
+
|
|
91
|
+
The file provider supports JSON and YAML formats with hot reload:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
// src/config/feature-provider.json
|
|
95
|
+
{
|
|
96
|
+
"flags": [
|
|
97
|
+
{
|
|
98
|
+
"key": "FEATURE_NAME",
|
|
99
|
+
"value": true,
|
|
100
|
+
"isEnabled": true,
|
|
101
|
+
"environments": ["production", "staging"]
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"rules": [
|
|
105
|
+
{
|
|
106
|
+
"id": "rule-id",
|
|
107
|
+
"flagKey": "FEATURE_NAME",
|
|
108
|
+
"name": "Rule Description",
|
|
109
|
+
"conditions": [
|
|
110
|
+
{
|
|
111
|
+
"field": "userRole",
|
|
112
|
+
"operator": "equals",
|
|
113
|
+
"value": "premium"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"value": true,
|
|
117
|
+
"priority": 100,
|
|
118
|
+
"isEnabled": true
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
```
|
|
68
123
|
|
|
69
|
-
|
|
70
|
-
- **Feature Flag Engine**: Complete evaluation logic with rules and conditions
|
|
71
|
-
- **Future Engines**: Calculation, Incentive, Validation, Insights (planned)
|
|
124
|
+
See `src/config/feature-provider.json.example` and `src/config/feature-provider.yaml.example` for complete examples.
|
|
72
125
|
|
|
73
126
|
## 🔧 Key Capabilities
|
|
74
127
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAiB,WAAW,EAAc,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9F;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IAQX,OAAO,CAAC,MAAM;IAP1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;OAIG;gBACiB,MAAM,EAAE,WAAW;IAIvC;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe5C;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAexC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IActB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/strategies/memory.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/strategies/memory.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG7F;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA2C;IAEpE;;;;OAIG;gBACS,MAAM,GAAE,iBAAsB;IAc1C;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAcxD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAcrC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAMpB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAyB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/strategies/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/strategies/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG5F;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAgB1C,OAAO,CAAC,MAAM;IAf1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACiB,MAAM,EAAE,gBAAgB;IAO5C;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAuBxD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBrC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;;;OAKG;YACW,eAAe;IAc7B;;;;;OAKG;YACW,mBAAmB;IA4BjC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -134,6 +134,14 @@ export declare abstract class FeatureFlagProvider<FeatureFlagKey extends string>
|
|
|
134
134
|
* Disposes of the provider, cleaning up resources.
|
|
135
135
|
*/
|
|
136
136
|
dispose(): void;
|
|
137
|
+
/**
|
|
138
|
+
* Optional method to sync features at runtime.
|
|
139
|
+
* This is useful for providers that can update their features dynamically.
|
|
140
|
+
*
|
|
141
|
+
* @param newFeatures - New features to sync
|
|
142
|
+
* @returns Promise that resolves when sync is complete
|
|
143
|
+
*/
|
|
144
|
+
syncFeatures?(newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void>;
|
|
137
145
|
/**
|
|
138
146
|
* Generates a cache key for flag evaluation.
|
|
139
147
|
*
|
|
@@ -1 +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,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/domain/featureFlags/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,13 +84,38 @@ export declare class FeatureFlagProviderFactory {
|
|
|
84
84
|
requirements?: string[];
|
|
85
85
|
}>;
|
|
86
86
|
/**
|
|
87
|
-
* Creates a default
|
|
87
|
+
* Creates a default provider.
|
|
88
|
+
* Uses file provider if features are not provided, memory provider otherwise.
|
|
88
89
|
*
|
|
89
|
-
* @param features - Record of feature flag keys to their default values
|
|
90
|
+
* @param features - Record of feature flag keys to their default values (optional)
|
|
90
91
|
* @param overrides - Optional configuration overrides
|
|
91
|
-
* @returns
|
|
92
|
+
* @returns Provider instance
|
|
93
|
+
*/
|
|
94
|
+
static createDefault<FeatureFlagKey extends string>(features?: Record<FeatureFlagKey, FeatureFlagValue>, overrides?: Partial<FeatureFlagConfig<FeatureFlagKey>>): FeatureFlagProvider<FeatureFlagKey>;
|
|
95
|
+
/**
|
|
96
|
+
* Type guard to check if a provider supports feature syncing.
|
|
97
|
+
*
|
|
98
|
+
* @param provider - The provider instance to check
|
|
99
|
+
* @returns True if provider has syncFeatures method
|
|
100
|
+
*/
|
|
101
|
+
static isSyncableProvider<FeatureFlagKey extends string>(provider: FeatureFlagProvider<FeatureFlagKey>): provider is FeatureFlagProvider<FeatureFlagKey> & Required<Pick<FeatureFlagProvider<FeatureFlagKey>, 'syncFeatures'>>;
|
|
102
|
+
/**
|
|
103
|
+
* Updates features on a provider if it supports the syncFeatures method.
|
|
104
|
+
* This is useful for providers like MemoryProvider that can update their features at runtime.
|
|
105
|
+
*
|
|
106
|
+
* @param provider - The provider instance
|
|
107
|
+
* @param newFeatures - New features to sync
|
|
108
|
+
* @returns Promise that resolves when sync is complete
|
|
109
|
+
* @throws Error if provider doesn't support feature syncing
|
|
110
|
+
*/
|
|
111
|
+
static syncFeatures<FeatureFlagKey extends string>(provider: FeatureFlagProvider<FeatureFlagKey>, newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Checks if a provider supports feature syncing.
|
|
114
|
+
*
|
|
115
|
+
* @param provider - The provider instance to check
|
|
116
|
+
* @returns True if provider supports syncFeatures method
|
|
92
117
|
*/
|
|
93
|
-
static
|
|
118
|
+
static supportsFeaturesSync<FeatureFlagKey extends string>(provider: FeatureFlagProvider<FeatureFlagKey>): boolean;
|
|
94
119
|
/**
|
|
95
120
|
* Validates provider configuration before instantiation.
|
|
96
121
|
*
|
|
@@ -98,7 +123,7 @@ export declare class FeatureFlagProviderFactory {
|
|
|
98
123
|
* @param config - Configuration to validate
|
|
99
124
|
* @throws Error if configuration is invalid
|
|
100
125
|
*/
|
|
101
|
-
|
|
126
|
+
static validateConfig<FeatureFlagKey extends string>(config: FeatureFlagConfig<FeatureFlagKey>): void;
|
|
102
127
|
/**
|
|
103
128
|
* Validates provider-specific configuration requirements.
|
|
104
129
|
*
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,9 @@ import { FeatureFlagProvider } from '../provider';
|
|
|
34
34
|
*/
|
|
35
35
|
export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
|
|
36
36
|
private fileWatcher?;
|
|
37
|
+
private lastFileContent?;
|
|
38
|
+
private fileCheckInterval?;
|
|
39
|
+
private rules;
|
|
37
40
|
/**
|
|
38
41
|
* Creates a new file feature flag provider.
|
|
39
42
|
*
|
|
@@ -41,6 +44,10 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
41
44
|
* @param features - Record of feature flag keys to their default values
|
|
42
45
|
*/
|
|
43
46
|
constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
|
|
47
|
+
/**
|
|
48
|
+
* Initializes the provider and sets up file watching if enabled.
|
|
49
|
+
*/
|
|
50
|
+
initialize(): Promise<void>;
|
|
44
51
|
/**
|
|
45
52
|
* Fetches flags and rules from the configuration file.
|
|
46
53
|
*
|
|
@@ -51,6 +58,30 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
51
58
|
flags: FeatureFlag<FeatureFlagKey>[];
|
|
52
59
|
rules: FeatureFlagRule<FeatureFlagKey>[];
|
|
53
60
|
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Parses file content based on format.
|
|
63
|
+
*
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
private parseFileContent;
|
|
67
|
+
/**
|
|
68
|
+
* Handles errors for fetchData, including file creation and fallback.
|
|
69
|
+
*
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
private handleFetchDataError;
|
|
73
|
+
/**
|
|
74
|
+
* Type guard for NodeJS.ErrnoException.
|
|
75
|
+
*/
|
|
76
|
+
private isFileNotFoundError;
|
|
77
|
+
/**
|
|
78
|
+
* Handles the case when the file is not found and fallback is enabled.
|
|
79
|
+
*/
|
|
80
|
+
private handleFileNotFound;
|
|
81
|
+
/**
|
|
82
|
+
* Handles fallback to default flags and rules.
|
|
83
|
+
*/
|
|
84
|
+
private handleFallbackToDefaults;
|
|
54
85
|
/**
|
|
55
86
|
* Validates the file provider configuration.
|
|
56
87
|
*
|
|
@@ -58,6 +89,56 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
58
89
|
* @throws Error if configuration is invalid
|
|
59
90
|
*/
|
|
60
91
|
private validateConfig;
|
|
92
|
+
/**
|
|
93
|
+
* Resolves the file path, supporting relative and absolute paths.
|
|
94
|
+
*
|
|
95
|
+
* @private
|
|
96
|
+
* @param filePath - The file path from configuration
|
|
97
|
+
* @returns Resolved absolute file path
|
|
98
|
+
*/
|
|
99
|
+
private resolveFilePath;
|
|
100
|
+
/**
|
|
101
|
+
* Parses JSON content.
|
|
102
|
+
*
|
|
103
|
+
* @private
|
|
104
|
+
* @param content - File content
|
|
105
|
+
* @returns Parsed data
|
|
106
|
+
*/
|
|
107
|
+
private parseJSON;
|
|
108
|
+
/**
|
|
109
|
+
* Parses YAML content.
|
|
110
|
+
*
|
|
111
|
+
* @private
|
|
112
|
+
* @param content - File content
|
|
113
|
+
* @returns Parsed data
|
|
114
|
+
*/
|
|
115
|
+
private parseYAML;
|
|
116
|
+
/**
|
|
117
|
+
* Validates the structure of file data.
|
|
118
|
+
*
|
|
119
|
+
* @private
|
|
120
|
+
* @param data - Parsed file data
|
|
121
|
+
*/
|
|
122
|
+
private validateFileData;
|
|
123
|
+
private checkFlagsArray;
|
|
124
|
+
private checkRulesArray;
|
|
125
|
+
private validateFlags;
|
|
126
|
+
private validateRules;
|
|
127
|
+
/**
|
|
128
|
+
* Creates a default configuration file with values from features.
|
|
129
|
+
*
|
|
130
|
+
* @private
|
|
131
|
+
* @param filePath - Path where to create the file
|
|
132
|
+
* @param format - File format (json or yaml)
|
|
133
|
+
*/
|
|
134
|
+
private createDefaultFile;
|
|
135
|
+
/**
|
|
136
|
+
* Creates default flags from the features configuration.
|
|
137
|
+
*
|
|
138
|
+
* @private
|
|
139
|
+
* @returns Array of default flags
|
|
140
|
+
*/
|
|
141
|
+
private createDefaultFlags;
|
|
61
142
|
/**
|
|
62
143
|
* Sets up file watching for hot reload if enabled.
|
|
63
144
|
*
|
|
@@ -68,6 +149,20 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
68
149
|
* Disposes of the file provider and stops file watching.
|
|
69
150
|
*/
|
|
70
151
|
dispose(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Refreshes the provider by fetching latest data from the file.
|
|
154
|
+
* Overrides base class to store rules.
|
|
155
|
+
*
|
|
156
|
+
* @returns Promise that resolves when refresh is complete
|
|
157
|
+
*/
|
|
158
|
+
refresh(): Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* Updates the features object and writes to file.
|
|
161
|
+
* This allows updating the FEATURES at runtime and persisting to file.
|
|
162
|
+
*
|
|
163
|
+
* @param newFeatures - New features object to sync with
|
|
164
|
+
*/
|
|
165
|
+
syncFeatures(newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void>;
|
|
71
166
|
/**
|
|
72
167
|
* Gets information about the file provider.
|
|
73
168
|
*
|
|
@@ -75,10 +170,11 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
75
170
|
*/
|
|
76
171
|
getFileInfo(): {
|
|
77
172
|
filePath?: string;
|
|
173
|
+
resolvedPath?: string;
|
|
78
174
|
format?: string;
|
|
79
175
|
isWatchEnabled: boolean;
|
|
80
176
|
isImplemented: boolean;
|
|
81
|
-
|
|
177
|
+
lastModified?: Date;
|
|
82
178
|
};
|
|
83
179
|
}
|
|
84
180
|
//# sourceMappingURL=file.d.ts.map
|
|
@@ -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;
|
|
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"}
|
|
@@ -100,13 +100,13 @@ export declare class MemoryFeatureFlagProvider<FeatureFlagKey extends string> ex
|
|
|
100
100
|
*/
|
|
101
101
|
removeRule(ruleId: string): void;
|
|
102
102
|
/**
|
|
103
|
-
* Updates a flag
|
|
103
|
+
* Updates a flag in memory.
|
|
104
104
|
*
|
|
105
|
-
* @param
|
|
106
|
-
* @param value - The new value
|
|
107
|
-
* @param updateProps - Optional properties to update
|
|
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)
|
|
108
108
|
*/
|
|
109
|
-
updateFlag(
|
|
109
|
+
updateFlag(flagOrKey: FeatureFlag<FeatureFlagKey> | FeatureFlagKey, value?: FeatureFlagValue, updateProps?: Partial<Pick<FeatureFlag<FeatureFlagKey>, 'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'>>): Promise<void>;
|
|
110
110
|
/**
|
|
111
111
|
* Adds a new flag to memory at runtime.
|
|
112
112
|
*
|
|
@@ -153,6 +153,13 @@ export declare class MemoryFeatureFlagProvider<FeatureFlagKey extends string> ex
|
|
|
153
153
|
* @returns Array of current rules
|
|
154
154
|
*/
|
|
155
155
|
getCurrentRules(): FeatureFlagRule<FeatureFlagKey>[];
|
|
156
|
+
/**
|
|
157
|
+
* Updates the features object and syncs all flags.
|
|
158
|
+
* This allows updating the FEATURES constant at runtime.
|
|
159
|
+
*
|
|
160
|
+
* @param newFeatures - New features object to sync with
|
|
161
|
+
*/
|
|
162
|
+
syncFeatures(newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void>;
|
|
156
163
|
/**
|
|
157
164
|
* Resets the memory provider to its initial state.
|
|
158
165
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/memory.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,yBAAyB,CACpC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,KAAK,CAAyC;IAEtD;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAMpD;;;;;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;IAyBF;;;;;;;;OAQG;IACH,OAAO,CAAC,6BAA6B;IAqBrC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAItB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,GAAG,IAAI;IAQpD;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAchC;;;;;;OAMG;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,6 +68,13 @@ export declare class FeatureFlagEngine<FeatureFlagKey extends string> {
|
|
|
68
68
|
* @param key - The flag key to remove override for
|
|
69
69
|
*/
|
|
70
70
|
removeOverride(key: FeatureFlagKey): void;
|
|
71
|
+
/**
|
|
72
|
+
* Updates the default values for feature flags.
|
|
73
|
+
* This is useful when the FEATURES constant is updated at runtime.
|
|
74
|
+
*
|
|
75
|
+
* @param newDefaults - New default values
|
|
76
|
+
*/
|
|
77
|
+
updateDefaults(newDefaults: Record<FeatureFlagKey, FeatureFlagValue>): void;
|
|
71
78
|
/**
|
|
72
79
|
* Clears all manual overrides.
|
|
73
80
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engine/featureFlags/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAEf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAItB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,iBAAiB,CAAC,cAAc,SAAS,MAAM;IAexD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IAf1B,uCAAuC;IACvC,OAAO,CAAC,KAAK,CAA+D;IAC5E,yDAAyD;IACzD,OAAO,CAAC,KAAK,CAAqE;IAClF,wDAAwD;IACxD,OAAO,CAAC,SAAS,CAAoD;IAErE;;;;;OAKG;gBAEO,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAClD,gBAAgB,UAAQ;IAGlC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAWpD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAcxD;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAK/D;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAKzC;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;;;OAIG;IACH,QAAQ,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE;IAIzC;;;;;;OAMG;IACH,QAAQ,CACN,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,qBAAqB,CAAC,cAAc,CAAC;IAoCxC;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAahC;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;OAKG;IACH,OAAO,CAAC,GAAG;CAKZ"}
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engine/featureFlags/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAEf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAItB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,iBAAiB,CAAC,cAAc,SAAS,MAAM;IAexD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IAf1B,uCAAuC;IACvC,OAAO,CAAC,KAAK,CAA+D;IAC5E,yDAAyD;IACzD,OAAO,CAAC,KAAK,CAAqE;IAClF,wDAAwD;IACxD,OAAO,CAAC,SAAS,CAAoD;IAErE;;;;;OAKG;gBAEO,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAClD,gBAAgB,UAAQ;IAGlC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAWpD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAcxD;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAK/D;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAKzC;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,IAAI;IAK3E;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;;;OAIG;IACH,QAAQ,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE;IAIzC;;;;;;OAMG;IACH,QAAQ,CACN,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,qBAAqB,CAAC,cAAc,CAAC;IAoCxC;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAahC;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;OAKG;IACH,OAAO,CAAC,GAAG;CAKZ"}
|