@plyaz/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +439 -0
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +135 -0
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.module.d.ts +114 -0
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.repository.d.ts +85 -0
- package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.service.d.ts +123 -0
- package/dist/backend/featureFlags/feature-flag.service.d.ts.map +1 -0
- package/dist/backend/featureFlags/index.d.ts +49 -0
- package/dist/backend/featureFlags/index.d.ts.map +1 -0
- package/dist/backend/index.d.ts +5 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/cache/index.d.ts +98 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/strategies/memory.d.ts +103 -0
- package/dist/cache/strategies/memory.d.ts.map +1 -0
- package/dist/cache/strategies/redis.d.ts +105 -0
- package/dist/cache/strategies/redis.d.ts.map +1 -0
- package/dist/domain/featureFlags/index.d.ts +49 -0
- package/dist/domain/featureFlags/index.d.ts.map +1 -0
- package/dist/domain/featureFlags/provider.d.ts +166 -0
- package/dist/domain/featureFlags/provider.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/api.d.ts +78 -0
- package/dist/domain/featureFlags/providers/api.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/database.d.ts +102 -0
- package/dist/domain/featureFlags/providers/database.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/factory.d.ts +116 -0
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/file.d.ts +84 -0
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/memory.d.ts +179 -0
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -0
- package/dist/domain/featureFlags/providers/redis.d.ts +80 -0
- package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/types.d.ts +18 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/engine/featureFlags/engine.d.ts +193 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -0
- package/dist/engine/featureFlags/index.d.ts +10 -0
- package/dist/engine/featureFlags/index.d.ts.map +1 -0
- package/dist/engine/index.d.ts +5 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +103 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +35 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +55 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +1 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +57 -0
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +1 -0
- package/dist/frontend/featureFlags/index.d.ts +14 -0
- package/dist/frontend/featureFlags/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +99 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +1 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +45 -0
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +1 -0
- package/dist/frontend/index.d.ts +2 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/dist/index.cjs +3951 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +3902 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils/common/hash.d.ts +81 -0
- package/dist/utils/common/hash.d.ts.map +1 -0
- package/dist/utils/common/index.d.ts +11 -0
- package/dist/utils/common/index.d.ts.map +1 -0
- package/dist/utils/common/values.d.ts +48 -0
- package/dist/utils/common/values.d.ts.map +1 -0
- package/dist/utils/featureFlags/conditions.d.ts +114 -0
- package/dist/utils/featureFlags/conditions.d.ts.map +1 -0
- package/dist/utils/featureFlags/context.d.ts +241 -0
- package/dist/utils/featureFlags/context.d.ts.map +1 -0
- package/dist/utils/featureFlags/index.d.ts +11 -0
- package/dist/utils/featureFlags/index.d.ts.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/package.json +144 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Repository
|
|
3
|
+
*
|
|
4
|
+
* NestJS repository for feature flag data persistence.
|
|
5
|
+
* Handles database operations and data mapping.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview NestJS repository for feature flags
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureFlag, FeatureFlagRule, CreateFlagRequest } from '@plyaz/types';
|
|
11
|
+
/**
|
|
12
|
+
* Feature Flag Repository
|
|
13
|
+
*
|
|
14
|
+
* Handles all database operations for feature flags.
|
|
15
|
+
* This is a stub implementation that provides the interface
|
|
16
|
+
* for integration with @plyaz/db when available.
|
|
17
|
+
*/
|
|
18
|
+
export declare class FeatureFlagRepository<FeatureFlagKey extends string> {
|
|
19
|
+
private readonly logger;
|
|
20
|
+
private static readonly ONE_DAY_MS;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new feature flag in the database.
|
|
23
|
+
*
|
|
24
|
+
* @param createData - Flag creation data
|
|
25
|
+
* @returns Created feature flag
|
|
26
|
+
*/
|
|
27
|
+
createFlag(createData: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
28
|
+
/**
|
|
29
|
+
* Updates an existing feature flag.
|
|
30
|
+
*
|
|
31
|
+
* @param key - Feature flag key
|
|
32
|
+
* @param updateData - Flag update data
|
|
33
|
+
* @returns Updated feature flag
|
|
34
|
+
*/
|
|
35
|
+
updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
36
|
+
/**
|
|
37
|
+
* Deletes a feature flag from the database.
|
|
38
|
+
*
|
|
39
|
+
* @param key - Feature flag key
|
|
40
|
+
*/
|
|
41
|
+
deleteFlag(key: FeatureFlagKey): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Gets all feature flags from the database.
|
|
44
|
+
*
|
|
45
|
+
* @param environment - Filter by environment
|
|
46
|
+
* @returns List of feature flags
|
|
47
|
+
*/
|
|
48
|
+
getAllFlags(environment?: string): Promise<FeatureFlag<FeatureFlagKey>[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Creates sample flags for stub implementation.
|
|
51
|
+
*
|
|
52
|
+
* @returns Array of sample feature flags
|
|
53
|
+
*/
|
|
54
|
+
private createSampleFlags;
|
|
55
|
+
/**
|
|
56
|
+
* Filters flags by environment.
|
|
57
|
+
*
|
|
58
|
+
* @param flags - Array of flags to filter
|
|
59
|
+
* @param environment - Environment to filter by
|
|
60
|
+
* @returns Filtered flags
|
|
61
|
+
*/
|
|
62
|
+
private filterFlagsByEnvironment;
|
|
63
|
+
/**
|
|
64
|
+
* Gets all rules for a specific flag.
|
|
65
|
+
*
|
|
66
|
+
* @param key - Feature flag key
|
|
67
|
+
* @returns List of rules for the flag
|
|
68
|
+
*/
|
|
69
|
+
getFlagRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Gets a single feature flag by key.
|
|
72
|
+
*
|
|
73
|
+
* @param key - Feature flag key
|
|
74
|
+
* @returns Feature flag or null if not found
|
|
75
|
+
*/
|
|
76
|
+
getFlagByKey(key: FeatureFlagKey): Promise<FeatureFlag<FeatureFlagKey> | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Infers the type of a feature flag value.
|
|
79
|
+
*
|
|
80
|
+
* @param value - The flag value
|
|
81
|
+
* @returns Inferred type string
|
|
82
|
+
*/
|
|
83
|
+
private inferFlagType;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=feature-flag.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flag.repository.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAEV,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB;;;;;;GAMG;AACH,qBACa,qBAAqB,CAAC,cAAc,SAAS,MAAM;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IAGjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAc;IAKhD;;;;;OAKG;IACG,UAAU,CACd,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAC5C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAgCvC;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GACrD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IA0CvC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpD;;;;;OAKG;IACG,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;IAW/E;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAmBnF;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAepF;;;;;OAKG;IACH,OAAO,CAAC,aAAa;CAwDtB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Service
|
|
3
|
+
*
|
|
4
|
+
* NestJS service for feature flag business logic.
|
|
5
|
+
* Orchestrates between providers, repositories, and external systems.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview NestJS service for feature flags
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
11
|
+
import type { FeatureFlagValue, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlag, FeatureFlagRule, CreateFlagRequest, ProviderHealthStatus } from '@plyaz/types';
|
|
12
|
+
import type { FeatureFlagRepository } from './feature-flag.repository';
|
|
13
|
+
import type { FeatureFlagKey } from '@domain/types';
|
|
14
|
+
/**
|
|
15
|
+
* Feature Flag Service
|
|
16
|
+
*
|
|
17
|
+
* Provides business logic for feature flag operations.
|
|
18
|
+
* Manages provider lifecycle, caching, and data persistence.
|
|
19
|
+
*/
|
|
20
|
+
export declare class FeatureFlagService implements OnModuleInit, OnModuleDestroy {
|
|
21
|
+
private readonly featureFlagRepository;
|
|
22
|
+
private readonly logger;
|
|
23
|
+
private provider;
|
|
24
|
+
constructor(featureFlagRepository: FeatureFlagRepository<FeatureFlagKey>);
|
|
25
|
+
/**
|
|
26
|
+
* Initializes the service on module startup.
|
|
27
|
+
*/
|
|
28
|
+
onModuleInit(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Cleans up resources on module shutdown.
|
|
31
|
+
*/
|
|
32
|
+
onModuleDestroy(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Initializes the feature flag provider.
|
|
35
|
+
*/
|
|
36
|
+
private initializeProvider;
|
|
37
|
+
/**
|
|
38
|
+
* Gets the current provider instance.
|
|
39
|
+
*/
|
|
40
|
+
private getProvider;
|
|
41
|
+
/**
|
|
42
|
+
* Evaluates a feature flag for the given context.
|
|
43
|
+
*
|
|
44
|
+
* @param key - Feature flag key
|
|
45
|
+
* @param context - Evaluation context
|
|
46
|
+
* @returns Feature flag evaluation result
|
|
47
|
+
*/
|
|
48
|
+
evaluateFlag(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
|
|
49
|
+
/**
|
|
50
|
+
* Checks if a feature flag is enabled.
|
|
51
|
+
*
|
|
52
|
+
* @param key - Feature flag key
|
|
53
|
+
* @param context - Evaluation context
|
|
54
|
+
* @returns Boolean indicating if flag is enabled
|
|
55
|
+
*/
|
|
56
|
+
isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Gets all feature flags with their evaluations.
|
|
59
|
+
*
|
|
60
|
+
* @param context - Evaluation context
|
|
61
|
+
* @returns All feature flag evaluations
|
|
62
|
+
*/
|
|
63
|
+
getAllFlags(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
|
|
64
|
+
/**
|
|
65
|
+
* Creates a new feature flag.
|
|
66
|
+
*
|
|
67
|
+
* @param createData - Flag creation data
|
|
68
|
+
* @returns Created feature flag
|
|
69
|
+
*/
|
|
70
|
+
createFlag(createData: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
71
|
+
/**
|
|
72
|
+
* Updates an existing feature flag.
|
|
73
|
+
*
|
|
74
|
+
* @param key - Feature flag key
|
|
75
|
+
* @param updateData - Flag update data
|
|
76
|
+
* @returns Updated feature flag
|
|
77
|
+
*/
|
|
78
|
+
updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
|
|
79
|
+
/**
|
|
80
|
+
* Deletes a feature flag.
|
|
81
|
+
*
|
|
82
|
+
* @param key - Feature flag key
|
|
83
|
+
*/
|
|
84
|
+
deleteFlag(key: FeatureFlagKey): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Sets a manual override for a flag.
|
|
87
|
+
*
|
|
88
|
+
* @param key - Feature flag key
|
|
89
|
+
* @param value - Override value
|
|
90
|
+
*/
|
|
91
|
+
setOverride(key: FeatureFlagKey, value: FeatureFlagValue): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Removes a manual override for a flag.
|
|
94
|
+
*
|
|
95
|
+
* @param key - Feature flag key
|
|
96
|
+
*/
|
|
97
|
+
removeOverride(key: FeatureFlagKey): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Gets all available feature flags.
|
|
100
|
+
*
|
|
101
|
+
* @param environment - Filter by environment
|
|
102
|
+
* @returns List of feature flags
|
|
103
|
+
*/
|
|
104
|
+
getAllFeatureFlags(environment?: string): Promise<FeatureFlag<FeatureFlagKey>[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Gets all rules for a specific flag.
|
|
107
|
+
*
|
|
108
|
+
* @param key - Feature flag key
|
|
109
|
+
* @returns List of rules for the flag
|
|
110
|
+
*/
|
|
111
|
+
getFlagRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Forces a refresh of the feature flag cache.
|
|
114
|
+
*/
|
|
115
|
+
refreshCache(): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Gets provider health status.
|
|
118
|
+
*
|
|
119
|
+
* @returns Provider health information
|
|
120
|
+
*/
|
|
121
|
+
getHealthStatus(): Promise<ProviderHealthStatus>;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=feature-flag.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flag.service.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,eAAe,EAGf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD;;;;;GAKG;AACH,qBACa,kBAAmB,YAAW,YAAY,EAAE,eAAe;IAI1D,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAHlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAuC;gBAE1B,qBAAqB,EAAE,qBAAqB,CAAC,cAAc,CAAC;IAEzF;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;OAMG;IACG,YAAY,CAChB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAmBjD;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpF;;;;;OAKG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAiBjE;;;;;OAKG;IACG,UAAU,CACd,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAC5C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAevC;;;;;;OAMG;IACG,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GACrD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAevC;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9E;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD;;;;;OAKG;IACG,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;IAStF;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IASnF;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;CAOvD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Backend - Main Exports
|
|
3
|
+
*
|
|
4
|
+
* NestJS backend exports for feature flag functionality.
|
|
5
|
+
* Provides controllers, services, repositories, and module for easy integration.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Backend feature flags exports
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
export { FeatureFlagModule } from './feature-flag.module';
|
|
11
|
+
export { FeatureFlagService } from './feature-flag.service';
|
|
12
|
+
export { FeatureFlagRepository } from './feature-flag.repository';
|
|
13
|
+
export { FeatureFlagController } from './feature-flag.controller';
|
|
14
|
+
/**
|
|
15
|
+
* NestJS Guard for feature flag protection.
|
|
16
|
+
* Use this to protect routes based on feature flag status.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { UseGuards } from '@nestjs/common';
|
|
21
|
+
* import { FeatureFlagGuard } from '@plyaz/config/backend/featureFlags';
|
|
22
|
+
*
|
|
23
|
+
* @UseGuards(FeatureFlagGuard('BETA_API'))
|
|
24
|
+
* @Get('beta-endpoint')
|
|
25
|
+
* async betaEndpoint() {
|
|
26
|
+
* // This endpoint is only accessible when BETA_API flag is enabled
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function FeatureFlagGuard(): (_target: object, _propertyName: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
31
|
+
/**
|
|
32
|
+
* NestJS Decorator for feature flag checking.
|
|
33
|
+
* Use this to check feature flags within methods.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { FeatureFlag } from '@plyaz/config/backend/featureFlags';
|
|
38
|
+
*
|
|
39
|
+
* @Injectable()
|
|
40
|
+
* export class MyService {
|
|
41
|
+
* @FeatureFlag('NEW_ALGORITHM')
|
|
42
|
+
* async processData(data: any) {
|
|
43
|
+
* // This method behavior can be controlled by the NEW_ALGORITHM flag
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function FeatureFlag(): (_target: object, _propertyName: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,KAI5B,SAAS,MAAM,EACf,eAAe,MAAM,EACrB,YAAY,kBAAkB,KAC7B,kBAAkB,CAKtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,KAIvB,SAAS,MAAM,EACf,eAAe,MAAM,EACrB,YAAY,kBAAkB,KAC7B,kBAAkB,CAKtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Manager - Core Caching Layer
|
|
3
|
+
*
|
|
4
|
+
* Main cache orchestration service that manages different caching strategies.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Core caching infrastructure
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { CacheConfig, CacheManagerStats } from '@plyaz/types';
|
|
11
|
+
/**
|
|
12
|
+
* Cache manager that orchestrates different caching strategies.
|
|
13
|
+
* Provides a unified interface for caching across the application.
|
|
14
|
+
*
|
|
15
|
+
* @class CacheManager
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const cache = new CacheManager({
|
|
20
|
+
* isEnabled: true,
|
|
21
|
+
* ttl: 300,
|
|
22
|
+
* strategy: 'redis',
|
|
23
|
+
* redisConfig: { url: 'redis://localhost:6379' }
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* await cache.set('key', value);
|
|
27
|
+
* const cached = await cache.get('key');
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class CacheManager {
|
|
31
|
+
private config;
|
|
32
|
+
private strategy;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new cache manager with the specified configuration.
|
|
35
|
+
*
|
|
36
|
+
* @param config - Cache configuration
|
|
37
|
+
*/
|
|
38
|
+
constructor(config: CacheConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Stores a value in the cache.
|
|
41
|
+
*
|
|
42
|
+
* @template T - Type of the value to cache
|
|
43
|
+
* @param key - Cache key
|
|
44
|
+
* @param value - Value to cache
|
|
45
|
+
* @param ttl - Optional TTL override in seconds
|
|
46
|
+
* @returns Promise that resolves when value is cached
|
|
47
|
+
*/
|
|
48
|
+
set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves a value from the cache.
|
|
51
|
+
*
|
|
52
|
+
* @template T - Expected type of the cached value
|
|
53
|
+
* @param key - Cache key
|
|
54
|
+
* @returns Promise that resolves to cached value or null if not found/expired
|
|
55
|
+
*/
|
|
56
|
+
get<T>(key: string): Promise<T | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Removes a value from the cache.
|
|
59
|
+
*
|
|
60
|
+
* @param key - Cache key to remove
|
|
61
|
+
* @returns Promise that resolves when value is removed
|
|
62
|
+
*/
|
|
63
|
+
delete(key: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Clears all cached values.
|
|
66
|
+
*
|
|
67
|
+
* @returns Promise that resolves when cache is cleared
|
|
68
|
+
*/
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Checks if a key exists in the cache.
|
|
72
|
+
*
|
|
73
|
+
* @param key - Cache key to check
|
|
74
|
+
* @returns Promise that resolves to true if key exists and is not expired
|
|
75
|
+
*/
|
|
76
|
+
has(key: string): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Gets cache statistics.
|
|
79
|
+
*
|
|
80
|
+
* @returns Promise that resolves to cache statistics
|
|
81
|
+
*/
|
|
82
|
+
getStats(): Promise<CacheManagerStats>;
|
|
83
|
+
/**
|
|
84
|
+
* Creates the appropriate cache strategy based on configuration.
|
|
85
|
+
*
|
|
86
|
+
* @private
|
|
87
|
+
* @param config - Cache configuration
|
|
88
|
+
* @returns Cache strategy instance
|
|
89
|
+
*/
|
|
90
|
+
private createStrategy;
|
|
91
|
+
/**
|
|
92
|
+
* Disposes of the cache manager and cleans up resources.
|
|
93
|
+
*
|
|
94
|
+
* @returns Promise that resolves when cleanup is complete
|
|
95
|
+
*/
|
|
96
|
+
dispose(): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAiB,WAAW,EAAc,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9F;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IAQX,OAAO,CAAC,MAAM;IAP1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;OAIG;gBACiB,MAAM,EAAE,WAAW;IAIvC;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe5C;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAexC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IActB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Cache Strategy
|
|
3
|
+
*
|
|
4
|
+
* In-memory cache implementation for fast local caching.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Memory cache strategy implementation
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { CacheStrategy, CacheEntry, CacheStats, MemoryCacheConfig } from '@plyaz/types';
|
|
11
|
+
/**
|
|
12
|
+
* In-memory cache strategy implementation.
|
|
13
|
+
* Provides fast caching for single-instance applications.
|
|
14
|
+
*
|
|
15
|
+
* @class MemoryCacheStrategy
|
|
16
|
+
* @implements {CacheStrategy}
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const cache = new MemoryCacheStrategy({
|
|
21
|
+
* maxEntries: 500,
|
|
22
|
+
* cleanupInterval: 30000
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* await cache.set('key', entry);
|
|
26
|
+
* const cached = await cache.get('key');
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class MemoryCacheStrategy implements CacheStrategy {
|
|
30
|
+
private cache;
|
|
31
|
+
private accessOrder;
|
|
32
|
+
private stats;
|
|
33
|
+
private cleanupTimer?;
|
|
34
|
+
private readonly maxSize;
|
|
35
|
+
private readonly cleanupInterval;
|
|
36
|
+
private readonly onEvict?;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new memory cache strategy.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Memory cache configuration
|
|
41
|
+
*/
|
|
42
|
+
constructor(config?: MemoryCacheConfig);
|
|
43
|
+
/**
|
|
44
|
+
* Stores a cache entry in memory.
|
|
45
|
+
*
|
|
46
|
+
* @param key - Cache key
|
|
47
|
+
* @param entry - Cache entry to store
|
|
48
|
+
* @returns Promise that resolves when entry is stored
|
|
49
|
+
*/
|
|
50
|
+
set<T>(key: string, entry: CacheEntry<T>): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Retrieves a cache entry from memory.
|
|
53
|
+
*
|
|
54
|
+
* @param key - Cache key
|
|
55
|
+
* @returns Promise that resolves to cache entry or null if not found
|
|
56
|
+
*/
|
|
57
|
+
get<T>(key: string): Promise<CacheEntry<T> | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Removes a cache entry from memory.
|
|
60
|
+
*
|
|
61
|
+
* @param key - Cache key to remove
|
|
62
|
+
* @returns Promise that resolves when entry is removed
|
|
63
|
+
*/
|
|
64
|
+
delete(key: string): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Clears all cache entries from memory.
|
|
67
|
+
*
|
|
68
|
+
* @returns Promise that resolves when cache is cleared
|
|
69
|
+
*/
|
|
70
|
+
clear(): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Gets cache statistics.
|
|
73
|
+
*
|
|
74
|
+
* @returns Promise that resolves to cache statistics
|
|
75
|
+
*/
|
|
76
|
+
getStats(): Promise<CacheStats>;
|
|
77
|
+
/**
|
|
78
|
+
* Disposes of the memory cache and cleans up resources.
|
|
79
|
+
*
|
|
80
|
+
* @returns Promise that resolves when cleanup is complete
|
|
81
|
+
*/
|
|
82
|
+
dispose(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Starts the periodic cleanup of expired entries.
|
|
85
|
+
*
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
private startCleanup;
|
|
89
|
+
/**
|
|
90
|
+
* Removes expired entries from the cache.
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
private cleanupExpiredEntries;
|
|
95
|
+
/**
|
|
96
|
+
* Evicts the oldest entries when cache is full.
|
|
97
|
+
* Uses LRU-like eviction by removing the oldest entries by creation time.
|
|
98
|
+
*
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
private evictOldestEntries;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cache/strategies/memory.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7F;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA2C;IAEpE;;;;OAIG;gBACS,MAAM,GAAE,iBAAsB;IAiB1C;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAcxD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAcrC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAMpB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAyB3B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Cache Strategy
|
|
3
|
+
*
|
|
4
|
+
* Redis-based cache implementation for distributed caching.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Redis cache strategy implementation
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { CacheStrategy, CacheEntry, CacheStats, RedisCacheConfig } from '@plyaz/types';
|
|
11
|
+
/**
|
|
12
|
+
* Redis cache strategy implementation.
|
|
13
|
+
* Provides distributed caching for multi-instance applications.
|
|
14
|
+
*
|
|
15
|
+
* @class RedisCacheStrategy
|
|
16
|
+
* @implements {CacheStrategy}
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const cache = new RedisCacheStrategy({
|
|
21
|
+
* url: 'redis://localhost:6379',
|
|
22
|
+
* keyPrefix: 'app:cache:'
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* await cache.set('key', entry);
|
|
26
|
+
* const cached = await cache.get('key');
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class RedisCacheStrategy implements CacheStrategy {
|
|
30
|
+
private config;
|
|
31
|
+
private client;
|
|
32
|
+
private stats;
|
|
33
|
+
private isConnected;
|
|
34
|
+
private readonly keyPrefix;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new Redis cache strategy.
|
|
37
|
+
*
|
|
38
|
+
* @param config - Redis cache configuration
|
|
39
|
+
*/
|
|
40
|
+
constructor(config: RedisCacheConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Stores a cache entry in Redis.
|
|
43
|
+
*
|
|
44
|
+
* @param key - Cache key
|
|
45
|
+
* @param entry - Cache entry to store
|
|
46
|
+
* @returns Promise that resolves when entry is stored
|
|
47
|
+
*/
|
|
48
|
+
set<T>(key: string, entry: CacheEntry<T>): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves a cache entry from Redis.
|
|
51
|
+
*
|
|
52
|
+
* @param key - Cache key
|
|
53
|
+
* @returns Promise that resolves to cache entry or null if not found
|
|
54
|
+
*/
|
|
55
|
+
get<T>(key: string): Promise<CacheEntry<T> | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Removes a cache entry from Redis.
|
|
58
|
+
*
|
|
59
|
+
* @param key - Cache key to remove
|
|
60
|
+
* @returns Promise that resolves when entry is removed
|
|
61
|
+
*/
|
|
62
|
+
delete(key: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Clears all cache entries from Redis.
|
|
65
|
+
* This removes all keys with the configured prefix.
|
|
66
|
+
*
|
|
67
|
+
* @returns Promise that resolves when cache is cleared
|
|
68
|
+
*/
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Gets cache statistics.
|
|
72
|
+
*
|
|
73
|
+
* @returns Promise that resolves to cache statistics
|
|
74
|
+
*/
|
|
75
|
+
getStats(): Promise<CacheStats>;
|
|
76
|
+
/**
|
|
77
|
+
* Disposes of the Redis cache and cleans up resources.
|
|
78
|
+
*
|
|
79
|
+
* @returns Promise that resolves when cleanup is complete
|
|
80
|
+
*/
|
|
81
|
+
dispose(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Ensures Redis connection is established.
|
|
84
|
+
*
|
|
85
|
+
* @private
|
|
86
|
+
* @returns Promise that resolves when connected
|
|
87
|
+
*/
|
|
88
|
+
private ensureConnected;
|
|
89
|
+
/**
|
|
90
|
+
* Creates an ioredis client.
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
* @returns Promise that resolves to ioredis client
|
|
94
|
+
*/
|
|
95
|
+
private createIoRedisClient;
|
|
96
|
+
/**
|
|
97
|
+
* Builds a Redis key with the configured prefix.
|
|
98
|
+
*
|
|
99
|
+
* @private
|
|
100
|
+
* @param key - Base cache key
|
|
101
|
+
* @returns Redis key with prefix
|
|
102
|
+
*/
|
|
103
|
+
private buildRedisKey;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/cache/strategies/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG5F;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAgB1C,OAAO,CAAC,MAAM;IAf1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACiB,MAAM,EAAE,gBAAgB;IAO5C;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAuBxD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBrC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;;;OAKG;YACW,eAAe;IAc7B;;;;;OAKG;YACW,mBAAmB;IA4BjC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flags Domain - Main Exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides the main exports for the feature flags domain logic.
|
|
5
|
+
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview Main feature flags domain exports
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureFlagConfig, FeatureFlagOverrides } from '@plyaz/types';
|
|
11
|
+
import type { FeatureFlagKey } from '../types';
|
|
12
|
+
export { FeatureFlagProvider } from './provider';
|
|
13
|
+
export { FeatureFlagProviderFactory } from './providers/factory';
|
|
14
|
+
export type { ProviderType } from './providers/factory';
|
|
15
|
+
export { MemoryFeatureFlagProvider } from './providers/memory';
|
|
16
|
+
export { FileFeatureFlagProvider } from './providers/file';
|
|
17
|
+
export { RedisFeatureFlagProvider } from './providers/redis';
|
|
18
|
+
export { ApiFeatureFlagProvider } from './providers/api';
|
|
19
|
+
export { DatabaseFeatureFlagProvider } from './providers/database';
|
|
20
|
+
/**
|
|
21
|
+
* Default configuration for feature flags.
|
|
22
|
+
* Provides sensible defaults for most use cases.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_FEATURE_FLAG_CONFIG: {
|
|
25
|
+
readonly provider: "memory";
|
|
26
|
+
readonly isCacheEnabled: true;
|
|
27
|
+
readonly cacheTtl: 300;
|
|
28
|
+
readonly refreshInterval: 0;
|
|
29
|
+
readonly shouldFallbackToDefaults: true;
|
|
30
|
+
readonly isLoggingEnabled: false;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Feature flag system initialization for different environments.
|
|
34
|
+
*/
|
|
35
|
+
export declare const FeatureFlagSystem: {
|
|
36
|
+
/**
|
|
37
|
+
* Initialize for frontend/client applications.
|
|
38
|
+
*/
|
|
39
|
+
readonly initializeForFrontend: (config?: Partial<FeatureFlagConfig<FeatureFlagKey>>) => Promise<import("@plyaz/types").FeatureFlagProvider<"AUTH_GOOGLE" | "AUTH_DISCORD" | "AUTH_FACEBOOK" | "AUTH_GITHUB">>;
|
|
40
|
+
/**
|
|
41
|
+
* Initialize for backend/server applications.
|
|
42
|
+
*/
|
|
43
|
+
readonly initializeForBackend: (config?: Partial<FeatureFlagConfig<FeatureFlagKey>>) => Promise<import("@plyaz/types").FeatureFlagProvider<"AUTH_GOOGLE" | "AUTH_DISCORD" | "AUTH_FACEBOOK" | "AUTH_GITHUB">>;
|
|
44
|
+
/**
|
|
45
|
+
* Initialize for testing environments.
|
|
46
|
+
*/
|
|
47
|
+
readonly initializeForTesting: (overrides?: FeatureFlagOverrides<FeatureFlagKey>) => Promise<import("@plyaz/types").FeatureFlagProvider<"AUTH_GOOGLE" | "AUTH_DISCORD" | "AUTH_FACEBOOK" | "AUTH_GITHUB">>;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/featureFlags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;CAOuB,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;8CACmC,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAUhF;;OAEG;6CACkC,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAU/E;;OAEG;gDACqC,oBAAoB,CAAC,cAAc,CAAC;CAepE,CAAC"}
|