@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 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 Available Features
56
-
57
- ### Feature Flag System
58
- - **Providers**: Memory (implemented), Redis/API/Database/File (stubs)
59
- - **Frontend**: React hooks and context providers
60
- - **Backend**: NestJS module with service, controller, and repository
61
- - **Engine**: Rule-based evaluation with targeting and rollouts
62
- - **Testing**: Override capabilities for test scenarios
63
-
64
- ### Cache System
65
- - **Strategies**: Memory with LRU eviction (implemented), Redis (stub)
66
- - **Features**: TTL management, statistics, automatic cleanup
67
- - **Integration**: Used internally by feature flag system
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
- ### Engine Layer
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;AAIH,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
+ {"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;AAE7F;;;;;;;;;;;;;;;;;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;IAiB1C;;;;;;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
+ {"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;AAEH,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"}
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":"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"}
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 memory provider for testing environments.
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 Memory provider instance
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 createDefault<FeatureFlagKey extends string>(features: Record<FeatureFlagKey, FeatureFlagValue>, overrides?: Partial<FeatureFlagConfig<FeatureFlagKey>>): FeatureFlagProvider<FeatureFlagKey>;
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
- private static validateConfig;
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;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"}
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
- requiredImplementation: string[];
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;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"}
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 value in memory.
103
+ * Updates a flag in memory.
104
104
  *
105
- * @param key - The flag key to update
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(key: FeatureFlagKey, value: FeatureFlagValue, updateProps?: Partial<Pick<FeatureFlag<FeatureFlagKey>, 'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'>>): void;
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;IACH,UAAU,CACR,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,gBAAgB,EACvB,WAAW,CAAC,EAAE,OAAO,CACnB,IAAI,CACF,WAAW,CAAC,cAAc,CAAC,EAC3B,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,mBAAmB,GAAG,MAAM,CACpF,CACF,GACA,IAAI;IAyBP;;;;;;OAMG;IACH,OAAO,CACL,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,gBAAgB,EACvB,KAAK,CAAC,EAAE,OAAO,CACb,IAAI,CACF,WAAW,CAAC,cAAc,CAAC,EAC3B,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,mBAAmB,GAAG,MAAM,CACpF,CACF,GACA,IAAI;IASP;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAcrC;;;;OAIG;IACH,eAAe,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE;IAIhD;;;;OAIG;IACH,eAAe,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE;IAIpD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;OAIG;IACH,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;KACxB;IAUD;;;;OAIG;IACH,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAKxC"}
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"}