@plyaz/core 1.2.0 → 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 +28 -50
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
- package/dist/backend/featureFlags/config/validation.d.ts +6 -6
- package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
- package/dist/backend/featureFlags/index.d.ts +6 -7
- package/dist/backend/featureFlags/index.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
- 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/index.d.ts +1 -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 +48 -46
- 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 +4 -0
- package/dist/frontend/index.d.ts.map +1 -1
- package/dist/frontend/providers/ApiProvider.d.ts +2 -2
- package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
- 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 +1 -0
- package/dist/frontend/providers/index.d.ts.map +1 -1
- 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 +5 -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 +13678 -4697
- 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/{backend/featureFlags/database/repository.d.ts → models/featureFlags/FeatureFlagRepository.d.ts} +47 -5
- 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 +92 -4
- package/dist/services/ApiClientService.d.ts.map +1 -1
- 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 +4 -0
- package/dist/services/index.d.ts.map +1 -1
- 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 +2 -0
- 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/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 +2 -2
- package/dist/web_app/auth/add_user.d.ts.map +1 -1
- package/dist/web_app/auth/update_user.d.ts +1 -1
- package/dist/web_app/auth/update_user.d.ts.map +1 -1
- package/package.json +89 -15
- package/dist/backend/featureFlags/database/connection.d.ts +0 -321
- package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
- package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
- 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 -264
- 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 -6435
- package/dist/index.cjs.map +0 -1
- package/dist/utils/db/databaseService.d.ts +0 -6
- package/dist/utils/db/databaseService.d.ts.map +0 -1
- package/dist/utils/db/index.d.ts +0 -2
- package/dist/utils/db/index.d.ts.map +0 -1
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Feature Flag Controller
|
|
3
3
|
*
|
|
4
4
|
* NestJS controller for feature flag management.
|
|
5
|
-
*
|
|
5
|
+
* Uses the domain FeatureFlagService directly.
|
|
6
6
|
*
|
|
7
7
|
* @fileoverview NestJS controller for feature flags
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
9
|
+
import type { FeatureFlagValue, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlag, FeatureFlagRule, CreateFlagRequest } from '@plyaz/types';
|
|
10
|
+
import { FeatureFlagService } from '@domain/featureFlags';
|
|
11
11
|
import type { FeatureFlagKey } from '@domain/types';
|
|
12
12
|
/**
|
|
13
13
|
* Request DTO for flag evaluation.
|
|
@@ -15,21 +15,11 @@ import type { FeatureFlagKey } from '@domain/types';
|
|
|
15
15
|
interface EvaluateFlagRequest {
|
|
16
16
|
context?: FeatureFlagContext;
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Request DTO for creating/updating flags.
|
|
20
|
-
*/
|
|
21
|
-
interface CreateFlagRequest {
|
|
22
|
-
name: string;
|
|
23
|
-
description?: string;
|
|
24
|
-
value: FeatureFlagValue;
|
|
25
|
-
isEnabled?: boolean;
|
|
26
|
-
environment?: 'all' | 'development' | 'staging' | 'production';
|
|
27
|
-
rolloutPercentage?: number;
|
|
28
|
-
}
|
|
29
18
|
/**
|
|
30
19
|
* Feature Flag Controller
|
|
31
20
|
*
|
|
32
21
|
* Provides REST endpoints for feature flag management and evaluation.
|
|
22
|
+
* Uses the domain FeatureFlagService directly.
|
|
33
23
|
*
|
|
34
24
|
* @example
|
|
35
25
|
* ```typescript
|
|
@@ -40,87 +30,49 @@ interface CreateFlagRequest {
|
|
|
40
30
|
*/
|
|
41
31
|
export declare class FeatureFlagController {
|
|
42
32
|
private readonly featureFlagService;
|
|
43
|
-
constructor(featureFlagService: FeatureFlagService);
|
|
33
|
+
constructor(featureFlagService: FeatureFlagService<FeatureFlagKey>);
|
|
44
34
|
/**
|
|
45
35
|
* Evaluates a feature flag for the given context.
|
|
46
|
-
*
|
|
47
|
-
* @param key - Feature flag key
|
|
48
|
-
* @param body - Evaluation context
|
|
49
|
-
* @returns Feature flag evaluation result
|
|
50
36
|
*/
|
|
51
37
|
evaluateFlag(key: FeatureFlagKey, body?: EvaluateFlagRequest): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
|
|
52
38
|
/**
|
|
53
39
|
* Checks if a feature flag is enabled.
|
|
54
|
-
*
|
|
55
|
-
* @param key - Feature flag key
|
|
56
|
-
* @param body - Evaluation context
|
|
57
|
-
* @returns Boolean indicating if flag is enabled
|
|
58
40
|
*/
|
|
59
41
|
isEnabled(key: FeatureFlagKey, body?: EvaluateFlagRequest): Promise<{
|
|
60
42
|
isEnabled: boolean;
|
|
61
43
|
}>;
|
|
62
44
|
/**
|
|
63
45
|
* Gets all feature flags with their evaluations.
|
|
64
|
-
*
|
|
65
|
-
* @param body - Evaluation context
|
|
66
|
-
* @returns All feature flag evaluations
|
|
67
46
|
*/
|
|
68
47
|
evaluateAllFlags(body?: EvaluateFlagRequest): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
|
|
69
48
|
/**
|
|
70
49
|
* Creates a new feature flag.
|
|
71
|
-
*
|
|
72
|
-
* @param key - Feature flag key
|
|
73
|
-
* @param createData - Flag creation data
|
|
74
|
-
* @returns Created feature flag
|
|
75
50
|
*/
|
|
76
|
-
createFlag(createData: CreateFlagRequest
|
|
77
|
-
key: FeatureFlagKey;
|
|
78
|
-
}): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
51
|
+
createFlag(createData: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
79
52
|
/**
|
|
80
53
|
* Updates an existing feature flag.
|
|
81
|
-
*
|
|
82
|
-
* @param key - Feature flag key
|
|
83
|
-
* @param updateData - Flag update data
|
|
84
|
-
* @returns Updated feature flag
|
|
85
54
|
*/
|
|
86
|
-
updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest
|
|
55
|
+
updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
87
56
|
/**
|
|
88
57
|
* Deletes a feature flag.
|
|
89
|
-
*
|
|
90
|
-
* @param key - Feature flag key
|
|
91
58
|
*/
|
|
92
59
|
deleteFlag(key: FeatureFlagKey): Promise<{
|
|
93
60
|
isSuccessful: boolean;
|
|
94
61
|
}>;
|
|
95
62
|
/**
|
|
96
63
|
* Sets a manual override for a flag.
|
|
97
|
-
*
|
|
98
|
-
* @param key - Feature flag key
|
|
99
|
-
* @param value - Override value
|
|
100
64
|
*/
|
|
101
65
|
setOverride(key: FeatureFlagKey, value: FeatureFlagValue): Promise<{
|
|
102
66
|
isSuccessful: boolean;
|
|
103
67
|
}>;
|
|
104
68
|
/**
|
|
105
69
|
* Removes a manual override for a flag.
|
|
106
|
-
*
|
|
107
|
-
* @param key - Feature flag key
|
|
108
70
|
*/
|
|
109
71
|
removeOverride(key: FeatureFlagKey): Promise<{
|
|
110
72
|
isSuccessful: boolean;
|
|
111
73
|
}>;
|
|
112
|
-
/**
|
|
113
|
-
* Gets all available feature flags.
|
|
114
|
-
*
|
|
115
|
-
* @param environment - Filter by environment
|
|
116
|
-
* @returns List of feature flags
|
|
117
|
-
*/
|
|
118
|
-
getAllFeatureFlags(environment?: string): Promise<FeatureFlag<FeatureFlagKey>[]>;
|
|
119
74
|
/**
|
|
120
75
|
* Gets all rules for a specific flag.
|
|
121
|
-
*
|
|
122
|
-
* @param key - Feature flag key
|
|
123
|
-
* @returns List of rules for the flag
|
|
124
76
|
*/
|
|
125
77
|
getFlagRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
126
78
|
/**
|
|
@@ -129,6 +81,13 @@ export declare class FeatureFlagController {
|
|
|
129
81
|
refreshCache(): Promise<{
|
|
130
82
|
isSuccessful: boolean;
|
|
131
83
|
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Gets service health status.
|
|
86
|
+
*/
|
|
87
|
+
getHealth(): Promise<{
|
|
88
|
+
isInitialized: boolean;
|
|
89
|
+
provider: string;
|
|
90
|
+
}>;
|
|
132
91
|
}
|
|
133
92
|
export {};
|
|
134
93
|
//# sourceMappingURL=feature-flag.controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"feature-flag.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAwB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB,CAAC,cAAc,CAAC;IAGzE;;OAEG;IAEG,YAAY,CACF,GAAG,EAAE,cAAc,EACzB,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAYjD;;OAEG;IAEG,SAAS,CACC,GAAG,EAAE,cAAc,EACzB,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAalC;;OAEG;IAEG,gBAAgB,CACZ,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAYjE;;OAEG;IAEG,UAAU,CACN,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC,GACpD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAYvC;;OAEG;IAEG,UAAU,CACA,GAAG,EAAE,cAAc,EACzB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC7D,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAYvC;;OAEG;IAEG,UAAU,CAAe,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAavF;;OAEG;IAEG,WAAW,CACD,GAAG,EAAE,cAAc,EAClB,KAAK,EAAE,gBAAgB,GACrC,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAarC;;OAEG;IAEG,cAAc,CAAe,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAa3F;;OAEG;IAEG,YAAY,CACF,GAAG,EAAE,cAAc,GAChC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAY7C;;OAEG;IAEG,YAAY,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAaxD;;OAEG;IAEG,SAAS,IAAI,OAAO,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CAMH"}
|
|
@@ -1,54 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Feature Flag Module
|
|
2
|
+
* Feature Flag NestJS Module
|
|
3
3
|
*
|
|
4
|
-
* NestJS
|
|
5
|
-
*
|
|
4
|
+
* NestJS wrapper around the unified FeatureFlagModule.
|
|
5
|
+
* Adds the controller for REST API endpoints.
|
|
6
6
|
*
|
|
7
|
-
* @
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';
|
|
10
|
+
*
|
|
11
|
+
* @Module({
|
|
12
|
+
* imports: [FeatureFlagModule.forRoot({ provider: 'database' })],
|
|
13
|
+
* })
|
|
14
|
+
* export class AppModule {}
|
|
15
|
+
* ```
|
|
8
16
|
*/
|
|
17
|
+
import { type DynamicModule, type OnModuleDestroy, type Type, type ForwardReference, type InjectionToken } from '@nestjs/common';
|
|
18
|
+
import { CoreFeatureFlagModuleConfig } from '@plyaz/types/core';
|
|
9
19
|
/**
|
|
10
20
|
* Feature Flag Module
|
|
11
21
|
*
|
|
12
22
|
* Provides feature flag functionality as a NestJS module.
|
|
13
|
-
*
|
|
23
|
+
* Uses the domain FeatureFlagService directly - no NestJS wrapper needed.
|
|
14
24
|
*
|
|
15
25
|
* @example
|
|
16
26
|
* ```typescript
|
|
17
27
|
* // In your app.module.ts
|
|
18
|
-
* import { FeatureFlagModule } from '@plyaz/config/backend/featureFlags';
|
|
19
|
-
*
|
|
20
28
|
* @Module({
|
|
21
|
-
* imports: [
|
|
22
|
-
*
|
|
29
|
+
* imports: [
|
|
30
|
+
* FeatureFlagModule.forRoot({ provider: 'database' })
|
|
31
|
+
* ],
|
|
23
32
|
* })
|
|
24
33
|
* export class AppModule {}
|
|
25
34
|
* ```
|
|
26
35
|
*
|
|
27
36
|
* @example
|
|
28
37
|
* ```typescript
|
|
29
|
-
* // In your service
|
|
30
|
-
* import { FeatureFlagService } from '@plyaz/config/backend/featureFlags';
|
|
31
|
-
*
|
|
38
|
+
* // In your service - inject the domain service
|
|
32
39
|
* @Injectable()
|
|
33
40
|
* export class MyService {
|
|
34
|
-
* constructor(
|
|
41
|
+
* constructor(
|
|
42
|
+
* @Inject(FEATURE_FLAG_SERVICE)
|
|
43
|
+
* private readonly featureFlagService: FeatureFlagService<FeatureFlagKey>
|
|
44
|
+
* ) {}
|
|
35
45
|
*
|
|
36
46
|
* async doSomething() {
|
|
37
47
|
* const isEnabled = await this.featureFlagService.isEnabled('MY_FEATURE');
|
|
38
|
-
* if (isEnabled) {
|
|
39
|
-
* // Execute new feature logic
|
|
40
|
-
* }
|
|
41
48
|
* }
|
|
42
49
|
* }
|
|
43
50
|
* ```
|
|
44
51
|
*/
|
|
45
|
-
export declare class FeatureFlagModule {
|
|
52
|
+
export declare class FeatureFlagModule implements OnModuleDestroy {
|
|
53
|
+
private static serviceInstance;
|
|
54
|
+
onModuleDestroy(): void;
|
|
46
55
|
/**
|
|
47
|
-
*
|
|
48
|
-
* This allows customization of the feature flag system.
|
|
56
|
+
* Creates the module with configuration.
|
|
49
57
|
*
|
|
50
58
|
* @param options - Module configuration options
|
|
51
|
-
* @returns Configured module
|
|
59
|
+
* @returns Configured dynamic module
|
|
52
60
|
*
|
|
53
61
|
* @example
|
|
54
62
|
* ```typescript
|
|
@@ -56,7 +64,7 @@ export declare class FeatureFlagModule {
|
|
|
56
64
|
* imports: [
|
|
57
65
|
* FeatureFlagModule.forRoot({
|
|
58
66
|
* provider: 'database',
|
|
59
|
-
*
|
|
67
|
+
* cacheEnabled: true,
|
|
60
68
|
* cacheTtl: 600,
|
|
61
69
|
* })
|
|
62
70
|
* ],
|
|
@@ -64,23 +72,13 @@ export declare class FeatureFlagModule {
|
|
|
64
72
|
* export class AppModule {}
|
|
65
73
|
* ```
|
|
66
74
|
*/
|
|
67
|
-
static forRoot(options?:
|
|
68
|
-
provider?: 'memory' | 'database' | 'redis' | 'api' | 'file';
|
|
69
|
-
isCacheEnabled?: boolean;
|
|
70
|
-
cacheTtl?: number;
|
|
71
|
-
refreshInterval?: number;
|
|
72
|
-
isLoggingEnabled?: boolean;
|
|
73
|
-
}): {
|
|
74
|
-
module: typeof FeatureFlagModule;
|
|
75
|
-
providers: unknown[];
|
|
76
|
-
exports: unknown[];
|
|
77
|
-
};
|
|
75
|
+
static forRoot(options?: CoreFeatureFlagModuleConfig): DynamicModule;
|
|
78
76
|
/**
|
|
79
|
-
*
|
|
77
|
+
* Creates the module with async configuration.
|
|
80
78
|
* Useful when configuration depends on other services.
|
|
81
79
|
*
|
|
82
80
|
* @param options - Async module configuration options
|
|
83
|
-
* @returns Configured async module
|
|
81
|
+
* @returns Configured async dynamic module
|
|
84
82
|
*
|
|
85
83
|
* @example
|
|
86
84
|
* ```typescript
|
|
@@ -100,14 +98,9 @@ export declare class FeatureFlagModule {
|
|
|
100
98
|
* ```
|
|
101
99
|
*/
|
|
102
100
|
static forRootAsync(options: {
|
|
103
|
-
imports?: unknown
|
|
104
|
-
inject?:
|
|
105
|
-
useFactory
|
|
106
|
-
}):
|
|
107
|
-
module: typeof FeatureFlagModule;
|
|
108
|
-
imports: unknown[];
|
|
109
|
-
providers: unknown[];
|
|
110
|
-
exports: unknown[];
|
|
111
|
-
};
|
|
101
|
+
imports?: Array<Type<unknown> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
|
|
102
|
+
inject?: InjectionToken[];
|
|
103
|
+
useFactory: (...args: unknown[]) => CoreFeatureFlagModuleConfig | Promise<CoreFeatureFlagModuleConfig>;
|
|
104
|
+
}): DynamicModule;
|
|
112
105
|
}
|
|
113
106
|
//# sourceMappingURL=feature-flag.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag.module.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.module.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"feature-flag.module.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAIa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAmD;IAEjF,eAAe,IAAI,IAAI;IAOvB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,2BAAgC,GAAG,aAAa;IAgBxE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;QAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC3F,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;QAC1B,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;KACzE,GAAG,aAAa;CAkBlB"}
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
2
|
import { Reflector } from '@nestjs/core';
|
|
3
|
-
import {
|
|
3
|
+
import type { FeatureFlagKey } from '@domain/types';
|
|
4
|
+
import { FeatureFlagService } from '@domain/featureFlags';
|
|
4
5
|
/**
|
|
5
6
|
* Guard that ensures a feature flag is in the expected state
|
|
6
7
|
* before allowing access to a route handler.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* @Controller('premium')
|
|
12
|
+
* @UseGuards(FeatureFlagGuard)
|
|
13
|
+
* export class PremiumController {
|
|
14
|
+
* @Get()
|
|
15
|
+
* @FeatureEnabled('PREMIUM_FEATURE')
|
|
16
|
+
* getPremiumData() {
|
|
17
|
+
* // Only accessible if PREMIUM_FEATURE is enabled
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
7
21
|
*/
|
|
8
22
|
export declare class FeatureFlagGuard implements CanActivate {
|
|
9
23
|
private readonly reflector;
|
|
10
24
|
private readonly featureFlagService;
|
|
11
25
|
private readonly logger;
|
|
12
|
-
constructor(reflector: Reflector, featureFlagService: FeatureFlagService);
|
|
26
|
+
constructor(reflector: Reflector, featureFlagService: FeatureFlagService<FeatureFlagKey>);
|
|
13
27
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
14
28
|
/**
|
|
15
29
|
* Compare expected vs actual values.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag.guard.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/guards/feature-flag.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,gBAAgB,EAAU,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-flag.guard.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/guards/feature-flag.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,gBAAgB,EAAU,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAwB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGhF;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,gBAAiB,YAAW,WAAW;IAOhD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IARrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;gBAGgB,SAAS,EAAE,SAAS,EAEpB,kBAAkB,EAAE,kBAAkB,CAAC,cAAc,CAAC;IAGnE,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+B9D;;OAEG;IACH,OAAO,CAAC,OAAO;CAUhB"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Feature Flag Backend -
|
|
2
|
+
* Feature Flag Backend - NestJS Exports
|
|
3
3
|
*
|
|
4
|
-
* NestJS
|
|
5
|
-
*
|
|
4
|
+
* NestJS module with controller, guards, decorators, and interceptors.
|
|
5
|
+
* Uses shared service factory from domain.
|
|
6
6
|
*
|
|
7
7
|
* @fileoverview Backend feature flags exports
|
|
8
8
|
*/
|
|
9
|
+
export { FeatureFlagDomainService } from './FeatureFlagDomainService';
|
|
9
10
|
export { FeatureFlagModule } from './feature-flag.module';
|
|
10
|
-
export { FeatureFlagService } from './feature-flag.service';
|
|
11
|
-
export { FeatureFlagRepository } from './feature-flag.repository';
|
|
12
11
|
export { FeatureFlagController } from './feature-flag.controller';
|
|
12
|
+
export { FeatureFlagService, FeatureFlagServiceFactory } from '@domain/featureFlags';
|
|
13
13
|
export { FeatureDisabled } from './decorators/feature-disabled.decorator';
|
|
14
14
|
export { FeatureEnabled } from './decorators/feature-enabled.decorator';
|
|
15
15
|
export { FeatureFlagGuard } from './guards/feature-flag.guard';
|
|
@@ -18,6 +18,5 @@ export { FeatureFlagLoggingInterceptor } from './interceptors/feature-flag-loggi
|
|
|
18
18
|
export { ErrorHandlingInterceptor } from './interceptors/error-handling-interceptor';
|
|
19
19
|
export { FeatureFlagConfigFactory } from './config/feature-flag.config';
|
|
20
20
|
export { FeatureFlagConfigValidator } from './config/validation';
|
|
21
|
-
export {
|
|
22
|
-
export { FeatureFlagDatabaseRepository } from './database/repository';
|
|
21
|
+
export { FeatureFlagDatabaseRepository } from '@models/featureFlags';
|
|
23
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAGrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handling-interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/interceptors/error-handling-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"error-handling-interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/interceptors/error-handling-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK5F,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC;;;;;;;;GAQG;AACH,qBACa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CAwB7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag-logging-interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/interceptors/feature-flag-logging-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"feature-flag-logging-interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/interceptors/feature-flag-logging-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAO,MAAM,MAAM,CAAC;AAEvC;;;;;;;;;GASG;AAEH,qBACa,6BAA8B,YAAW,eAAe;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;IA0B5E,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { NestMiddleware } from '@nestjs/common';
|
|
2
|
-
import { FeatureFlagService } from '
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
query?: Record<string, unknown> | URLSearchParams;
|
|
6
|
-
headers?: Record<string, string | string[] | undefined>;
|
|
7
|
-
url?: string;
|
|
8
|
-
};
|
|
2
|
+
import { FeatureFlagService } from '@domain/featureFlags';
|
|
3
|
+
import type { FeatureFlagKey } from '@domain/types';
|
|
4
|
+
import type { CoreFeatureFlagRequest } from '@plyaz/types/core';
|
|
9
5
|
/**
|
|
10
6
|
* FeatureFlagMiddleware - Evaluates and attaches feature flags to every request
|
|
11
7
|
*
|
|
@@ -128,14 +124,14 @@ type FeatureFlagRequest = {
|
|
|
128
124
|
export declare class FeatureFlagMiddleware implements NestMiddleware {
|
|
129
125
|
private readonly featureFlagService;
|
|
130
126
|
private readonly logger;
|
|
131
|
-
constructor(featureFlagService: FeatureFlagService);
|
|
127
|
+
constructor(featureFlagService: FeatureFlagService<FeatureFlagKey>);
|
|
132
128
|
/**
|
|
133
129
|
* Main middleware execution method
|
|
134
130
|
*
|
|
135
131
|
* @description Processes incoming requests to evaluate and attach feature flags.
|
|
136
132
|
* Handles flag key extraction from multiple sources and graceful error handling.
|
|
137
133
|
*
|
|
138
|
-
* @param {
|
|
134
|
+
* @param {CoreFeatureFlagRequest} req - Express request object with feature flag extensions
|
|
139
135
|
* @param {unknown} res - Express response object (not used in this middleware)
|
|
140
136
|
* @param {Function} next - Next middleware function in the chain
|
|
141
137
|
*
|
|
@@ -161,7 +157,6 @@ export declare class FeatureFlagMiddleware implements NestMiddleware {
|
|
|
161
157
|
* next();
|
|
162
158
|
* ```
|
|
163
159
|
*/
|
|
164
|
-
use(req:
|
|
160
|
+
use(req: CoreFeatureFlagRequest, res: unknown, next: (...args: unknown[]) => void): Promise<void>;
|
|
165
161
|
}
|
|
166
|
-
export {};
|
|
167
162
|
//# sourceMappingURL=feature-flag-middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag-middleware.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/middleware/feature-flag-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAU,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-flag-middleware.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/middleware/feature-flag-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAU,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAwB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAShE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AACH,qBACa,qBAAsB,YAAW,cAAc;IAQxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAPrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;gBAIgB,kBAAkB,EAAE,kBAAkB,CAAC,cAAc,CAAC;IAGzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IAEG,GAAG,CACP,GAAG,EAAE,sBAAsB,EAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC;CAoCjB"}
|
package/dist/backend/index.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Backend Layer Exports
|
|
3
|
+
*
|
|
4
|
+
* NestJS-specific implementations.
|
|
5
|
+
* For framework-agnostic modules, use domain exports:
|
|
6
|
+
* - import { FeatureFlagModule } from '@plyaz/core/domain/featureFlags';
|
|
3
7
|
*/
|
|
8
|
+
export * from './example';
|
|
4
9
|
export * from './featureFlags';
|
|
5
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Key Builder Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides standardized methods for building cache keys with consistent patterns.
|
|
5
|
+
* All keys are designed to be prefixed by the service (handled by service layer).
|
|
6
|
+
*
|
|
7
|
+
* Key pattern: {prefix}:{type}:{identifier}:{params}
|
|
8
|
+
* Example: "example:entity:123" or "user:list:page:1"
|
|
9
|
+
*
|
|
10
|
+
* @fileoverview Cache key building utilities
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Cache key builder for standardized cache key generation.
|
|
14
|
+
*
|
|
15
|
+
* All methods return un-prefixed keys that should be prefixed by the service layer.
|
|
16
|
+
* This allows each service to namespace their cache keys.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // In a service with cachePrefix = 'user'
|
|
21
|
+
* const key = CacheKeyBuilder.entity('123');
|
|
22
|
+
* // Returns: "entity:123"
|
|
23
|
+
* // After service prefixing: "user:entity:123"
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class CacheKeyBuilder {
|
|
27
|
+
/**
|
|
28
|
+
* Build cache key for a single entity by ID
|
|
29
|
+
*
|
|
30
|
+
* @param id - Entity ID
|
|
31
|
+
* @returns Cache key (unprefixed)
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* CacheKeyBuilder.entity('123')
|
|
36
|
+
* // Returns: "entity:123"
|
|
37
|
+
* // With prefix "user": "user:entity:123"
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
static entity(id: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Build cache key for a list/collection query
|
|
43
|
+
*
|
|
44
|
+
* @param params - Query parameters (page, limit, filters, etc.)
|
|
45
|
+
* @returns Cache key (unprefixed)
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* CacheKeyBuilder.list({ page: 1, limit: 10 })
|
|
50
|
+
* // Returns: "list:limit:10:page:1"
|
|
51
|
+
* // With prefix: "user:list:limit:10:page:1"
|
|
52
|
+
*
|
|
53
|
+
* CacheKeyBuilder.list() // No params
|
|
54
|
+
* // Returns: "list:all"
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
static list(params?: Record<string, unknown>): string;
|
|
58
|
+
/**
|
|
59
|
+
* Build cache key for a named query/filter
|
|
60
|
+
*
|
|
61
|
+
* @param queryName - Name of the query (e.g., 'active', 'byStatus', 'search')
|
|
62
|
+
* @param params - Query parameters
|
|
63
|
+
* @returns Cache key (unprefixed)
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* CacheKeyBuilder.query('active', { status: 'published' })
|
|
68
|
+
* // Returns: "query:active:status:\"published\""
|
|
69
|
+
*
|
|
70
|
+
* CacheKeyBuilder.query('search', { q: 'hello', limit: 10 })
|
|
71
|
+
* // Returns: "query:search:limit:10:q:\"hello\""
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
static query(queryName: string, params?: Record<string, unknown>): string;
|
|
75
|
+
/**
|
|
76
|
+
* Build cache key for aggregate/count operations
|
|
77
|
+
*
|
|
78
|
+
* @param operation - Operation name (e.g., 'count', 'sum', 'avg')
|
|
79
|
+
* @param field - Field name (optional)
|
|
80
|
+
* @param params - Additional parameters (optional)
|
|
81
|
+
* @returns Cache key (unprefixed)
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* CacheKeyBuilder.aggregate('count')
|
|
86
|
+
* // Returns: "aggregate:count"
|
|
87
|
+
*
|
|
88
|
+
* CacheKeyBuilder.aggregate('sum', 'amount')
|
|
89
|
+
* // Returns: "aggregate:sum:amount"
|
|
90
|
+
*
|
|
91
|
+
* CacheKeyBuilder.aggregate('count', 'users', { status: 'active' })
|
|
92
|
+
* // Returns: "aggregate:count:users:status:\"active\""
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
static aggregate(operation: string, field?: string, params?: Record<string, unknown>): string;
|
|
96
|
+
/**
|
|
97
|
+
* Build a custom cache key with type and identifier
|
|
98
|
+
*
|
|
99
|
+
* @param type - Cache key type
|
|
100
|
+
* @param identifier - Unique identifier for this cache entry
|
|
101
|
+
* @param params - Additional parameters (optional)
|
|
102
|
+
* @returns Cache key (unprefixed)
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* CacheKeyBuilder.custom('session', 'abc123')
|
|
107
|
+
* // Returns: "session:abc123"
|
|
108
|
+
*
|
|
109
|
+
* CacheKeyBuilder.custom('report', 'monthly', { year: 2025, month: 1 })
|
|
110
|
+
* // Returns: "report:monthly:month:1:year:2025"
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
static custom(type: string, identifier: string, params?: Record<string, unknown>): string;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=CacheKeyBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheKeyBuilder.d.ts","sourceRoot":"","sources":["../../../src/base/cache/CacheKeyBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIjC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAWrD;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAUzE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAY7F;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAS1F"}
|
|
@@ -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;AAOH,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;IAiBtB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAK5F;;;;;;;;;;;;;;;;;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"}
|