@plyaz/core 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/index.d.ts +16 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/nestjs.d.ts +79 -0
- package/dist/adapters/nestjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.d.ts +28 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/backend/example/example.controller.d.ts +121 -0
- package/dist/backend/example/example.controller.d.ts.map +1 -0
- package/dist/backend/example/example.module.d.ts +29 -0
- package/dist/backend/example/example.module.d.ts.map +1 -0
- package/dist/backend/example/index.d.ts +8 -0
- package/dist/backend/example/index.d.ts.map +1 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts +89 -0
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -0
- package/dist/backend/featureFlags/config/validation.d.ts +181 -0
- package/dist/backend/featureFlags/config/validation.d.ts.map +1 -0
- package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts +6 -0
- package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts.map +1 -0
- package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts +8 -0
- package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts.map +1 -0
- package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts +11 -0
- package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -56
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -44
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +33 -0
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -0
- package/dist/backend/featureFlags/index.d.ts +14 -41
- package/dist/backend/featureFlags/index.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts +16 -0
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -0
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts +18 -0
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -0
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +162 -0
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -0
- package/dist/backend/index.d.ts +5 -0
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
- package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
- package/dist/base/cache/feature/caching.d.ts +16 -0
- package/dist/base/cache/feature/caching.d.ts.map +1 -0
- package/dist/base/cache/index.d.ts +2 -0
- package/dist/base/cache/index.d.ts.map +1 -1
- package/dist/base/cache/strategies/redis.d.ts.map +1 -1
- package/dist/base/observability/BaseAdapter.d.ts +79 -0
- package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
- package/dist/base/observability/CompositeAdapter.d.ts +72 -0
- package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
- package/dist/base/observability/DatadogAdapter.d.ts +117 -0
- package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
- package/dist/base/observability/LoggerAdapter.d.ts +54 -0
- package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
- package/dist/base/observability/ObservabilityService.d.ts +160 -0
- package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
- package/dist/base/observability/index.d.ts +17 -0
- package/dist/base/observability/index.d.ts.map +1 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseDomainService.d.ts +284 -0
- package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseMapper.d.ts +100 -0
- package/dist/domain/base/BaseMapper.d.ts.map +1 -0
- package/dist/domain/base/BaseValidator.d.ts +105 -0
- package/dist/domain/base/BaseValidator.d.ts.map +1 -0
- package/dist/domain/base/index.d.ts +10 -0
- package/dist/domain/base/index.d.ts.map +1 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/index.d.ts +10 -0
- package/dist/domain/example/index.d.ts.map +1 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
- package/dist/domain/featureFlags/index.d.ts +10 -5
- package/dist/domain/featureFlags/index.d.ts.map +1 -1
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
- package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
- package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
- package/dist/domain/featureFlags/module.d.ts +20 -0
- package/dist/domain/featureFlags/module.d.ts.map +1 -0
- package/dist/domain/featureFlags/provider.d.ts +40 -1
- package/dist/domain/featureFlags/provider.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/api.d.ts +59 -34
- package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/database.d.ts +59 -52
- package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/file.d.ts +48 -1
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
- package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
- package/dist/domain/featureFlags/service.d.ts +112 -0
- package/dist/domain/featureFlags/service.d.ts.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/engine/featureFlags/engine.d.ts +8 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -1
- package/dist/entry-backend.d.ts +24 -0
- package/dist/entry-backend.d.ts.map +1 -0
- package/dist/entry-backend.js +15635 -0
- package/dist/entry-backend.js.map +1 -0
- package/dist/entry-backend.mjs +15506 -0
- package/dist/entry-backend.mjs.map +1 -0
- package/dist/entry-frontend.d.ts +23 -0
- package/dist/entry-frontend.d.ts.map +1 -0
- package/dist/entry-frontend.js +11152 -0
- package/dist/entry-frontend.js.map +1 -0
- package/dist/entry-frontend.mjs +11089 -0
- package/dist/entry-frontend.mjs.map +1 -0
- package/dist/events/CoreEventManager.d.ts +116 -0
- package/dist/events/CoreEventManager.d.ts.map +1 -0
- package/dist/events/index.d.ts +27 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/frontend/base/index.d.ts +8 -0
- package/dist/frontend/base/index.d.ts.map +1 -0
- package/dist/frontend/components/InitializationError.d.ts +25 -0
- package/dist/frontend/components/InitializationError.d.ts.map +1 -0
- package/dist/frontend/components/InitializationLoading.d.ts +22 -0
- package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
- package/dist/frontend/components/index.d.ts +9 -0
- package/dist/frontend/components/index.d.ts.map +1 -0
- package/dist/frontend/example/index.d.ts +9 -0
- package/dist/frontend/example/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/index.d.ts +28 -7
- package/dist/frontend/featureFlags/index.d.ts.map +1 -1
- package/dist/frontend/index.d.ts +5 -0
- package/dist/frontend/index.d.ts.map +1 -1
- package/dist/frontend/providers/ApiProvider.d.ts +41 -0
- package/dist/frontend/providers/ApiProvider.d.ts.map +1 -0
- package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
- package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
- package/dist/frontend/providers/index.d.ts +8 -0
- package/dist/frontend/providers/index.d.ts.map +1 -0
- package/dist/frontend/store/feature-flags.d.ts +63 -0
- package/dist/frontend/store/feature-flags.d.ts.map +1 -0
- package/dist/frontend/store/index.d.ts +14 -0
- package/dist/frontend/store/index.d.ts.map +1 -0
- package/dist/frontend/store/integrations.d.ts +36 -0
- package/dist/frontend/store/integrations.d.ts.map +1 -0
- package/dist/frontend/store/service-accessors.d.ts +78 -0
- package/dist/frontend/store/service-accessors.d.ts.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15450 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +13461 -2440
- package/dist/index.mjs.map +1 -1
- package/dist/init/CoreInitializer.d.ts +582 -0
- package/dist/init/CoreInitializer.d.ts.map +1 -0
- package/dist/init/ServiceRegistry.d.ts +256 -0
- package/dist/init/ServiceRegistry.d.ts.map +1 -0
- package/dist/init/index.d.ts +14 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/nestjs/CoreModule.d.ts +63 -0
- package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
- package/dist/init/nestjs/index.d.ts +5 -0
- package/dist/init/nestjs/index.d.ts.map +1 -0
- package/dist/init/nestjs/index.js +9059 -0
- package/dist/init/nestjs/index.js.map +1 -0
- package/dist/init/nestjs/index.mjs +9055 -0
- package/dist/init/nestjs/index.mjs.map +1 -0
- package/dist/init/react.d.ts +33 -0
- package/dist/init/react.d.ts.map +1 -0
- package/dist/models/example/ExampleRepository.d.ts +124 -0
- package/dist/models/example/ExampleRepository.d.ts.map +1 -0
- package/dist/models/example/index.d.ts +7 -0
- package/dist/models/example/index.d.ts.map +1 -0
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts +560 -0
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
- package/dist/models/featureFlags/index.d.ts +7 -0
- package/dist/models/featureFlags/index.d.ts.map +1 -0
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/services/ApiClientService.d.ts +178 -0
- package/dist/services/ApiClientService.d.ts.map +1 -0
- package/dist/services/CacheService.d.ts +176 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/DbService.d.ts +391 -0
- package/dist/services/DbService.d.ts.map +1 -0
- package/dist/services/NotificationService.d.ts +151 -0
- package/dist/services/NotificationService.d.ts.map +1 -0
- package/dist/services/StorageService.d.ts +144 -0
- package/dist/services/StorageService.d.ts.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/utils/common/id.d.ts +83 -0
- package/dist/utils/common/id.d.ts.map +1 -0
- package/dist/utils/common/index.d.ts +3 -1
- package/dist/utils/common/index.d.ts.map +1 -1
- package/dist/utils/common/object.d.ts +70 -0
- package/dist/utils/common/object.d.ts.map +1 -0
- package/dist/utils/common/validation.d.ts +20 -0
- package/dist/utils/common/validation.d.ts.map +1 -0
- package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
- package/dist/utils/featureFlags/context.d.ts +0 -1
- package/dist/utils/featureFlags/context.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mapperUtils.d.ts +38 -0
- package/dist/utils/mapperUtils.d.ts.map +1 -0
- package/dist/utils/runtime.d.ts +15 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/version.d.ts +24 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/web_app/auth/add_user.d.ts +3 -0
- package/dist/web_app/auth/add_user.d.ts.map +1 -0
- package/dist/web_app/auth/update_user.d.ts +2 -0
- package/dist/web_app/auth/update_user.d.ts.map +1 -0
- package/package.json +102 -15
- package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
- package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
- package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -123
- package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
- package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
- package/dist/index.cjs +0 -4383
- package/dist/index.cjs.map +0 -1
|
@@ -1,102 +1,109 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Database Feature Flag Provider
|
|
2
|
+
* Database Feature Flag Provider
|
|
3
3
|
*
|
|
4
|
-
* Database-based provider
|
|
5
|
-
*
|
|
4
|
+
* Database-based provider using DbService for persistent storage.
|
|
5
|
+
* Requires Core.initialize() to be called first with database config.
|
|
6
6
|
*
|
|
7
|
-
* @fileoverview Database provider
|
|
8
|
-
* @version 1.0.0
|
|
7
|
+
* @fileoverview Database provider for feature flags
|
|
9
8
|
*/
|
|
10
|
-
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
9
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
|
|
11
10
|
import { FeatureFlagProvider } from '../provider';
|
|
12
11
|
/**
|
|
13
|
-
* Database-based feature flag provider
|
|
12
|
+
* Database-based feature flag provider with @plyaz/db integration.
|
|
13
|
+
*
|
|
14
|
+
* Uses DbService (configured via Core.initialize()) for database operations.
|
|
15
|
+
* No connection string needed here - DbService handles all connection details.
|
|
14
16
|
*
|
|
15
17
|
* @class DatabaseFeatureFlagProvider
|
|
16
18
|
* @extends {FeatureFlagProvider}
|
|
17
19
|
*
|
|
18
20
|
* @example
|
|
19
21
|
* ```typescript
|
|
20
|
-
* //
|
|
22
|
+
* // First: Initialize Core with database config
|
|
23
|
+
* await Core.initialize({
|
|
24
|
+
* db: { adapter: 'sql', sql: { connectionString: '...' } }
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Then: Create database provider
|
|
21
28
|
* const provider = new DatabaseFeatureFlagProvider({
|
|
22
29
|
* provider: 'database',
|
|
23
|
-
* databaseConfig: {
|
|
24
|
-
* connectionString: process.env.DATABASE_URL,
|
|
25
|
-
* tableName: 'feature_flags',
|
|
26
|
-
* },
|
|
27
30
|
* isCacheEnabled: true,
|
|
28
31
|
* cacheTtl: 300,
|
|
29
|
-
* });
|
|
32
|
+
* }, FEATURES);
|
|
33
|
+
* await provider.initialize();
|
|
30
34
|
* ```
|
|
31
35
|
*/
|
|
32
36
|
export declare class DatabaseFeatureFlagProvider<FeatureFlagKey extends string> extends FeatureFlagProvider<FeatureFlagKey> {
|
|
37
|
+
private repository;
|
|
38
|
+
private readonly logger;
|
|
33
39
|
/**
|
|
34
40
|
* Creates a new database feature flag provider.
|
|
35
41
|
*
|
|
36
|
-
* @param config - Provider configuration
|
|
37
|
-
* @
|
|
42
|
+
* @param config - Provider configuration
|
|
43
|
+
* @param features - Default feature flag values
|
|
38
44
|
*/
|
|
39
45
|
constructor(config: FeatureFlagConfig<FeatureFlagKey>, features: Record<FeatureFlagKey, FeatureFlagValue>);
|
|
46
|
+
/**
|
|
47
|
+
* Initialize database connection via DbService
|
|
48
|
+
*/
|
|
49
|
+
initialize(): Promise<void>;
|
|
40
50
|
/**
|
|
41
51
|
* Fetches flags and rules from the database.
|
|
42
|
-
* Currently throws an error as the database implementation is not ready.
|
|
43
52
|
*
|
|
44
53
|
* @protected
|
|
45
|
-
* @returns Promise
|
|
46
|
-
* @throws Error indicating missing database implementation
|
|
54
|
+
* @returns Promise with flags and rules from database
|
|
47
55
|
*/
|
|
48
56
|
protected fetchData(): Promise<{
|
|
49
57
|
flags: FeatureFlag<FeatureFlagKey>[];
|
|
50
58
|
rules: FeatureFlagRule<FeatureFlagKey>[];
|
|
51
59
|
}>;
|
|
52
60
|
/**
|
|
53
|
-
*
|
|
61
|
+
* Dispose resources
|
|
62
|
+
*/
|
|
63
|
+
dispose(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Gets database provider status and configuration info.
|
|
54
66
|
*
|
|
55
|
-
* @
|
|
56
|
-
* @throws Error if configuration is invalid or incomplete
|
|
67
|
+
* @returns Database provider status information
|
|
57
68
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
getDatabaseInfo(): {
|
|
70
|
+
tableName: string;
|
|
71
|
+
isImplemented: boolean;
|
|
72
|
+
dbServiceInitialized: boolean;
|
|
73
|
+
};
|
|
63
74
|
/**
|
|
64
|
-
*
|
|
75
|
+
* Creates a new feature flag in the database.
|
|
65
76
|
*
|
|
66
|
-
* @
|
|
67
|
-
* @
|
|
68
|
-
* @returns True if valid PostgreSQL URL
|
|
77
|
+
* @param data - Flag creation data
|
|
78
|
+
* @returns The created feature flag
|
|
69
79
|
*/
|
|
70
|
-
|
|
80
|
+
createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
71
81
|
/**
|
|
72
|
-
*
|
|
82
|
+
* Updates an existing feature flag in the database.
|
|
73
83
|
*
|
|
74
|
-
* @
|
|
75
|
-
* @param
|
|
76
|
-
* @returns
|
|
84
|
+
* @param key - Flag key to update
|
|
85
|
+
* @param data - Partial flag data to update
|
|
86
|
+
* @returns The updated feature flag
|
|
77
87
|
*/
|
|
78
|
-
|
|
88
|
+
updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
79
89
|
/**
|
|
80
|
-
*
|
|
90
|
+
* Deletes a feature flag from the database.
|
|
81
91
|
*
|
|
82
|
-
* @
|
|
83
|
-
* @param connectionString - Original connection string
|
|
84
|
-
* @returns Masked connection string
|
|
92
|
+
* @param key - Flag key to delete
|
|
85
93
|
*/
|
|
86
|
-
|
|
94
|
+
deleteFlag(key: FeatureFlagKey): Promise<void>;
|
|
87
95
|
/**
|
|
88
|
-
* Gets
|
|
96
|
+
* Gets all rules for a specific flag.
|
|
89
97
|
*
|
|
90
|
-
* @
|
|
98
|
+
* @param key - Flag key to get rules for
|
|
99
|
+
* @returns Array of rules for the flag
|
|
91
100
|
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
schemaPath: string;
|
|
100
|
-
};
|
|
101
|
+
getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Gets all enabled rules across all flags.
|
|
104
|
+
*
|
|
105
|
+
* @returns Array of all enabled rules
|
|
106
|
+
*/
|
|
107
|
+
getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
101
108
|
}
|
|
102
109
|
//# sourceMappingURL=database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/database.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,2BAA2B,CACtC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAsBpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAgBF;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;;;OAIG;IACH,eAAe,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,oBAAoB,EAAE,OAAO,CAAC;KAC/B;IAYD;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAQ/F;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAQvC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAK/E;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;CAIhE"}
|
|
@@ -1,46 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Feature Flag
|
|
2
|
+
* Feature Flag Service Factory
|
|
3
3
|
*
|
|
4
|
-
* Factory class for creating
|
|
5
|
-
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
4
|
+
* Factory class for creating feature flag services with configured providers.
|
|
6
5
|
*
|
|
7
|
-
* @fileoverview
|
|
6
|
+
* @fileoverview Service factory for feature flag system
|
|
8
7
|
* @version 1.0.0
|
|
9
8
|
*/
|
|
10
|
-
import type { FeatureFlagConfig, FeatureFlagProvider, FeatureFlagValue } from '@plyaz/types';
|
|
11
|
-
import {
|
|
12
|
-
import { FileFeatureFlagProvider } from './file';
|
|
13
|
-
import { RedisFeatureFlagProvider } from './redis';
|
|
14
|
-
import { ApiFeatureFlagProvider } from './api';
|
|
15
|
-
import { DatabaseFeatureFlagProvider } from './database';
|
|
9
|
+
import type { FeatureFlagConfig, FeatureFlagProvider, FeatureFlagValue, FeatureFlagProviderType } from '@plyaz/types/features';
|
|
10
|
+
import { FeatureFlagService } from '../service';
|
|
16
11
|
/**
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
declare const PROVIDER_REGISTRY: {
|
|
20
|
-
readonly memory: typeof MemoryFeatureFlagProvider;
|
|
21
|
-
readonly file: typeof FileFeatureFlagProvider;
|
|
22
|
-
readonly redis: typeof RedisFeatureFlagProvider;
|
|
23
|
-
readonly api: typeof ApiFeatureFlagProvider;
|
|
24
|
-
readonly database: typeof DatabaseFeatureFlagProvider;
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Type for available provider names.
|
|
28
|
-
*/
|
|
29
|
-
export type ProviderType = keyof typeof PROVIDER_REGISTRY;
|
|
30
|
-
/**
|
|
31
|
-
* Feature flag provider factory for creating provider instances.
|
|
12
|
+
* Feature flag service factory for creating service instances with providers.
|
|
32
13
|
*
|
|
33
|
-
* @class
|
|
14
|
+
* @class FeatureFlagServiceFactory
|
|
34
15
|
*
|
|
35
16
|
* @example
|
|
36
17
|
* ```typescript
|
|
37
|
-
*
|
|
38
|
-
*
|
|
18
|
+
* // Create and initialize service
|
|
19
|
+
* const service = await FeatureFlagServiceFactory.createAndInitialize({
|
|
20
|
+
* provider: 'database',
|
|
39
21
|
* isCacheEnabled: true,
|
|
40
22
|
* cacheTtl: 300,
|
|
41
|
-
* });
|
|
23
|
+
* }, FEATURES);
|
|
24
|
+
*
|
|
25
|
+
* // Use the service
|
|
26
|
+
* const isEnabled = await service.isEnabled('MY_FEATURE');
|
|
27
|
+
* await service.createFlag({ key: 'NEW', value: true, name: 'New Flag' });
|
|
42
28
|
* ```
|
|
43
29
|
*/
|
|
30
|
+
export declare class FeatureFlagServiceFactory {
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new feature flag service with the configured provider.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Provider configuration
|
|
35
|
+
* @param features - Record of feature flag keys to their default values
|
|
36
|
+
* @returns Configured service instance (not yet initialized)
|
|
37
|
+
*/
|
|
38
|
+
static createService<K extends string>(config: FeatureFlagConfig<K>, features: Record<K, FeatureFlagValue>): FeatureFlagService<K>;
|
|
39
|
+
/**
|
|
40
|
+
* Creates and initializes a feature flag service.
|
|
41
|
+
*
|
|
42
|
+
* @param config - Provider configuration
|
|
43
|
+
* @param features - Record of feature flag keys to their default values
|
|
44
|
+
* @returns Promise resolving to initialized service instance
|
|
45
|
+
*/
|
|
46
|
+
static createAndInitialize<K extends string>(config: FeatureFlagConfig<K>, features: Record<K, FeatureFlagValue>): Promise<FeatureFlagService<K>>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a default service with memory provider.
|
|
49
|
+
*
|
|
50
|
+
* @param features - Record of feature flag keys to their default values
|
|
51
|
+
* @param overrides - Optional configuration overrides
|
|
52
|
+
* @returns Service instance
|
|
53
|
+
*/
|
|
54
|
+
static createDefaultService<K extends string>(features: Record<K, FeatureFlagValue>, overrides?: Partial<FeatureFlagConfig<K>>): FeatureFlagService<K>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Feature flag provider factory for creating provider instances directly.
|
|
58
|
+
* For most use cases, use FeatureFlagServiceFactory instead.
|
|
59
|
+
*
|
|
60
|
+
* @class FeatureFlagProviderFactory
|
|
61
|
+
*/
|
|
44
62
|
export declare class FeatureFlagProviderFactory {
|
|
45
63
|
/**
|
|
46
64
|
* Creates a new feature flag provider instance based on configuration.
|
|
@@ -64,20 +82,20 @@ export declare class FeatureFlagProviderFactory {
|
|
|
64
82
|
*
|
|
65
83
|
* @returns Array of supported provider names
|
|
66
84
|
*/
|
|
67
|
-
static getSupportedProviders():
|
|
85
|
+
static getSupportedProviders(): FeatureFlagProviderType[];
|
|
68
86
|
/**
|
|
69
87
|
* Checks if a provider type is supported.
|
|
70
88
|
*
|
|
71
89
|
* @param providerType - Provider type to check
|
|
72
90
|
* @returns True if provider type is supported
|
|
73
91
|
*/
|
|
74
|
-
static isProviderSupported(providerType: string): providerType is
|
|
92
|
+
static isProviderSupported(providerType: string): providerType is FeatureFlagProviderType;
|
|
75
93
|
/**
|
|
76
94
|
* Gets provider information including implementation status.
|
|
77
95
|
*
|
|
78
96
|
* @returns Record of provider information
|
|
79
97
|
*/
|
|
80
|
-
static getProvidersInfo(): Record<
|
|
98
|
+
static getProvidersInfo(): Record<FeatureFlagProviderType, {
|
|
81
99
|
name: string;
|
|
82
100
|
isImplemented: boolean;
|
|
83
101
|
description: string;
|
|
@@ -137,5 +155,4 @@ export declare class FeatureFlagProviderFactory {
|
|
|
137
155
|
private static validateApiConfig;
|
|
138
156
|
private static validateDatabaseConfig;
|
|
139
157
|
}
|
|
140
|
-
export {};
|
|
141
158
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/factory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @fileoverview File provider implementation for feature flags
|
|
8
8
|
* @version 1.0.0
|
|
9
9
|
*/
|
|
10
|
-
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
|
|
11
11
|
import { FeatureFlagProvider } from '../provider';
|
|
12
12
|
/**
|
|
13
13
|
* File-based feature flag provider supporting JSON and YAML formats.
|
|
@@ -36,6 +36,7 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
36
36
|
private fileWatcher?;
|
|
37
37
|
private lastFileContent?;
|
|
38
38
|
private fileCheckInterval?;
|
|
39
|
+
private flags;
|
|
39
40
|
private rules;
|
|
40
41
|
/**
|
|
41
42
|
* Creates a new file feature flag provider.
|
|
@@ -156,6 +157,52 @@ export declare class FileFeatureFlagProvider<FeatureFlagKey extends string> exte
|
|
|
156
157
|
* @returns Promise that resolves when refresh is complete
|
|
157
158
|
*/
|
|
158
159
|
refresh(): Promise<void>;
|
|
160
|
+
/**
|
|
161
|
+
* Creates a new feature flag and persists to file.
|
|
162
|
+
*
|
|
163
|
+
* @param data - Flag creation data
|
|
164
|
+
* @returns The created feature flag
|
|
165
|
+
*/
|
|
166
|
+
createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
167
|
+
/**
|
|
168
|
+
* Updates an existing feature flag and persists to file.
|
|
169
|
+
*
|
|
170
|
+
* @param key - Flag key to update
|
|
171
|
+
* @param data - Partial flag data to update
|
|
172
|
+
* @returns The updated feature flag
|
|
173
|
+
*/
|
|
174
|
+
updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
175
|
+
/**
|
|
176
|
+
* Deletes a feature flag and persists to file.
|
|
177
|
+
*
|
|
178
|
+
* @param key - Flag key to delete
|
|
179
|
+
*/
|
|
180
|
+
deleteFlag(key: FeatureFlagKey): Promise<void>;
|
|
181
|
+
/**
|
|
182
|
+
* Gets all rules for a specific flag.
|
|
183
|
+
*
|
|
184
|
+
* @param key - Flag key to get rules for
|
|
185
|
+
* @returns Array of rules for the flag
|
|
186
|
+
*/
|
|
187
|
+
getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
188
|
+
/**
|
|
189
|
+
* Gets all enabled rules.
|
|
190
|
+
*
|
|
191
|
+
* @returns Array of all enabled rules
|
|
192
|
+
*/
|
|
193
|
+
getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
194
|
+
/**
|
|
195
|
+
* Persists current flags and rules to file.
|
|
196
|
+
*
|
|
197
|
+
* @private
|
|
198
|
+
*/
|
|
199
|
+
private persistToFile;
|
|
200
|
+
/**
|
|
201
|
+
* Infers the flag type from its value.
|
|
202
|
+
*
|
|
203
|
+
* @private
|
|
204
|
+
*/
|
|
205
|
+
private inferFlagType;
|
|
159
206
|
/**
|
|
160
207
|
* Updates the features object and writes to file.
|
|
161
208
|
* This allows updating the FEATURES at runtime and persisting to file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/file.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,
|
|
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,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBlD;;;;;;;;;;;;;;;;;;;;;;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,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;;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;IAwBF;;;;OAIG;YACW,gBAAgB;IAe9B;;;;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;IA6BtB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAWjB;;;;;;OAMG;YACW,SAAS;IAYvB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,aAAa;IA8BrB;;;;;;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;IAS9B;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IA8B/F;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAsBvC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAI/E;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAI/D;;;;OAIG;YACW,aAAa;IA0B3B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CxF;;;;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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @fileoverview Memory provider implementation for feature flags
|
|
8
8
|
* @version 1.0.0
|
|
9
9
|
*/
|
|
10
|
-
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
|
|
11
11
|
import { FeatureFlagProvider } from '../provider';
|
|
12
12
|
/**
|
|
13
13
|
* Memory-based feature flag provider that loads flags from the FEATURES constant.
|
|
@@ -100,13 +100,39 @@ export declare class MemoryFeatureFlagProvider<FeatureFlagKey extends string> ex
|
|
|
100
100
|
*/
|
|
101
101
|
removeRule(ruleId: string): void;
|
|
102
102
|
/**
|
|
103
|
-
*
|
|
103
|
+
* Creates a new feature flag in memory.
|
|
104
104
|
*
|
|
105
|
-
* @param
|
|
106
|
-
* @
|
|
107
|
-
* @param updateProps - Optional properties to update (only used when first param is a key)
|
|
105
|
+
* @param data - Flag creation data
|
|
106
|
+
* @returns The created feature flag
|
|
108
107
|
*/
|
|
109
|
-
|
|
108
|
+
createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
109
|
+
/**
|
|
110
|
+
* Updates an existing feature flag in memory.
|
|
111
|
+
*
|
|
112
|
+
* @param key - Flag key to update
|
|
113
|
+
* @param data - Partial flag data to update
|
|
114
|
+
* @returns The updated feature flag
|
|
115
|
+
*/
|
|
116
|
+
updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
117
|
+
/**
|
|
118
|
+
* Deletes a feature flag from memory.
|
|
119
|
+
*
|
|
120
|
+
* @param key - Flag key to delete
|
|
121
|
+
*/
|
|
122
|
+
deleteFlag(key: FeatureFlagKey): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Gets all rules for a specific flag.
|
|
125
|
+
*
|
|
126
|
+
* @param key - Flag key to get rules for
|
|
127
|
+
* @returns Array of rules for the flag
|
|
128
|
+
*/
|
|
129
|
+
getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
130
|
+
/**
|
|
131
|
+
* Gets all enabled rules.
|
|
132
|
+
*
|
|
133
|
+
* @returns Array of all enabled rules
|
|
134
|
+
*/
|
|
135
|
+
getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
110
136
|
/**
|
|
111
137
|
* Adds a new flag to memory at runtime.
|
|
112
138
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,
|
|
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,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,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;IAgBtB;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,GAAG,IAAI;IAQpD;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBhC;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAiC/F;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAyBvC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAI/E;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAQ/D;;;;;;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;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxF;;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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @fileoverview Redis provider implementation for feature flags
|
|
8
8
|
* @version 1.0.0
|
|
9
9
|
*/
|
|
10
|
-
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue } from '@plyaz/types';
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types';
|
|
11
11
|
import { FeatureFlagProvider } from '../provider';
|
|
12
12
|
/**
|
|
13
13
|
* Redis-based feature flag provider supporting distributed caching and storage.
|
|
@@ -76,5 +76,10 @@ export declare class RedisFeatureFlagProvider<FeatureFlagKey extends string> ext
|
|
|
76
76
|
requiredImplementation: string[];
|
|
77
77
|
recommendedPatterns: string[];
|
|
78
78
|
};
|
|
79
|
+
createFlag(_data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
80
|
+
updateFlag(_key: FeatureFlagKey, _data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
81
|
+
deleteFlag(_key: FeatureFlagKey): Promise<void>;
|
|
82
|
+
getRules(_key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
83
|
+
getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
79
84
|
}
|
|
80
85
|
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/domain/featureFlags/providers/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,wBAAwB,CACnC,cAAc,SAAS,MAAM,CAC7B,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IAC3C;;;;;OAKG;gBAED,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAUpD;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;KAC1C,CAAC;IAOF;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,YAAY,IAAI;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,sBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B;IA0BK,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAO1F,UAAU,CAEd,IAAI,EAAE,cAAc,EAEpB,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAChD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAQjC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAO1E,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;CAMhE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Service
|
|
3
|
+
*
|
|
4
|
+
* Domain service that wraps the provider and provides a unified API
|
|
5
|
+
* for feature flag operations. This is the main entry point for
|
|
6
|
+
* feature flag functionality.
|
|
7
|
+
*
|
|
8
|
+
* @fileoverview Domain service for feature flags
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import type { FeatureFlagProvider, FeatureFlagConfig, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlagValue, FeatureFlag, FeatureFlagRule, CreateFlagRequest } from '@plyaz/types';
|
|
12
|
+
/**
|
|
13
|
+
* Feature Flag Service
|
|
14
|
+
*
|
|
15
|
+
* The main service for feature flag operations. Wraps the provider
|
|
16
|
+
* and adds logging, error handling, and lifecycle management.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Create via factory
|
|
21
|
+
* const service = await FeatureFlagServiceFactory.createAndInitialize(config, FEATURES);
|
|
22
|
+
*
|
|
23
|
+
* // Use directly
|
|
24
|
+
* const isEnabled = await service.isEnabled('MY_FEATURE');
|
|
25
|
+
* const flag = await service.createFlag({ key: 'NEW_FLAG', value: true, name: 'New Flag' });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class FeatureFlagService<FeatureFlagKey extends string> {
|
|
29
|
+
private readonly provider;
|
|
30
|
+
private readonly config;
|
|
31
|
+
private readonly logger;
|
|
32
|
+
private isInitialized;
|
|
33
|
+
constructor(provider: FeatureFlagProvider<FeatureFlagKey>, config: FeatureFlagConfig<FeatureFlagKey>);
|
|
34
|
+
/**
|
|
35
|
+
* Initializes the service and underlying provider.
|
|
36
|
+
*/
|
|
37
|
+
initialize(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Disposes the service and underlying provider.
|
|
40
|
+
*/
|
|
41
|
+
dispose(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Refreshes the provider cache.
|
|
44
|
+
*/
|
|
45
|
+
refresh(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Gets whether the service is initialized.
|
|
48
|
+
*/
|
|
49
|
+
getIsInitialized(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Gets the provider type.
|
|
52
|
+
*/
|
|
53
|
+
getProviderType(): string;
|
|
54
|
+
/**
|
|
55
|
+
* Evaluates a feature flag.
|
|
56
|
+
*/
|
|
57
|
+
getFlag(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
|
|
58
|
+
/**
|
|
59
|
+
* Gets all feature flag evaluations.
|
|
60
|
+
*/
|
|
61
|
+
getAllFlags(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
|
|
62
|
+
/**
|
|
63
|
+
* Checks if a feature flag is enabled.
|
|
64
|
+
*/
|
|
65
|
+
isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Gets the value of a feature flag.
|
|
68
|
+
*/
|
|
69
|
+
getValue<T = FeatureFlagValue>(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<T>;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a new feature flag.
|
|
72
|
+
*/
|
|
73
|
+
createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
74
|
+
/**
|
|
75
|
+
* Updates an existing feature flag.
|
|
76
|
+
*/
|
|
77
|
+
updateFlag(key: FeatureFlagKey, data: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
78
|
+
/**
|
|
79
|
+
* Deletes a feature flag.
|
|
80
|
+
*/
|
|
81
|
+
deleteFlag(key: FeatureFlagKey): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Gets all rules for a specific flag.
|
|
84
|
+
*/
|
|
85
|
+
getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
86
|
+
/**
|
|
87
|
+
* Gets all enabled rules.
|
|
88
|
+
*/
|
|
89
|
+
getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Sets a runtime override for a flag.
|
|
92
|
+
*/
|
|
93
|
+
setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void;
|
|
94
|
+
/**
|
|
95
|
+
* Removes a runtime override for a flag.
|
|
96
|
+
*/
|
|
97
|
+
removeOverride(key: FeatureFlagKey): void;
|
|
98
|
+
/**
|
|
99
|
+
* Clears all runtime overrides.
|
|
100
|
+
*/
|
|
101
|
+
clearOverrides(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Subscribes to flag changes.
|
|
104
|
+
*/
|
|
105
|
+
subscribe(callback: () => void): () => void;
|
|
106
|
+
/**
|
|
107
|
+
* Gets the underlying provider instance.
|
|
108
|
+
* Use with caution - prefer service methods.
|
|
109
|
+
*/
|
|
110
|
+
getProvider(): FeatureFlagProvider<FeatureFlagKey>;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/domain/featureFlags/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAkB,CAAC,cAAc,SAAS,MAAM;IASzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,OAAO,CAAC,aAAa,CAAS;gBAGX,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,EAC7C,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAO5D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,eAAe,IAAI,MAAM;IAQzB;;OAEG;IACG,OAAO,CACX,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAIjD;;OAEG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpF;;OAEG;IACG,QAAQ,CAAC,CAAC,GAAG,gBAAgB,EACjC,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAM/F;;OAEG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAMvC;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAI/E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAQ/D;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAK/D;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAKzC;;OAEG;IACH,cAAc,IAAI,IAAI;IAStB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAQ3C;;;OAGG;IACH,WAAW,IAAI,mBAAmB,CAAC,cAAc,CAAC;CAGnD"}
|
package/dist/domain/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,mBAAmB,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,WAAW,CAAC;AAG1B,mBAAmB,SAAS,CAAC"}
|
|
@@ -27,6 +27,8 @@ import type { FeatureFlag, FeatureFlagRule, FeatureFlagContext, FeatureFlagEvalu
|
|
|
27
27
|
export declare class FeatureFlagEngine<FeatureFlagKey extends string> {
|
|
28
28
|
private defaults;
|
|
29
29
|
private isLoggingEnabled;
|
|
30
|
+
/** Logger instance */
|
|
31
|
+
private readonly logger;
|
|
30
32
|
/** Storage for active feature flags */
|
|
31
33
|
private flags;
|
|
32
34
|
/** Storage for targeting rules, organized by flag key */
|
|
@@ -54,6 +56,12 @@ export declare class FeatureFlagEngine<FeatureFlagKey extends string> {
|
|
|
54
56
|
* @param rules - Array of feature flag rules
|
|
55
57
|
*/
|
|
56
58
|
setRules(rules: FeatureFlagRule<FeatureFlagKey>[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Gets all targeting rules.
|
|
61
|
+
*
|
|
62
|
+
* @returns Array of all feature flag rules
|
|
63
|
+
*/
|
|
64
|
+
getRules(): FeatureFlagRule<FeatureFlagKey>[];
|
|
57
65
|
/**
|
|
58
66
|
* Sets a manual override for a specific flag.
|
|
59
67
|
* Overrides take precedence over all other evaluation logic.
|