@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.
Files changed (82) hide show
  1. package/README.md +439 -0
  2. package/dist/backend/featureFlags/feature-flag.controller.d.ts +135 -0
  3. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -0
  4. package/dist/backend/featureFlags/feature-flag.module.d.ts +114 -0
  5. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -0
  6. package/dist/backend/featureFlags/feature-flag.repository.d.ts +85 -0
  7. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +1 -0
  8. package/dist/backend/featureFlags/feature-flag.service.d.ts +123 -0
  9. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +1 -0
  10. package/dist/backend/featureFlags/index.d.ts +49 -0
  11. package/dist/backend/featureFlags/index.d.ts.map +1 -0
  12. package/dist/backend/index.d.ts +5 -0
  13. package/dist/backend/index.d.ts.map +1 -0
  14. package/dist/cache/index.d.ts +98 -0
  15. package/dist/cache/index.d.ts.map +1 -0
  16. package/dist/cache/strategies/memory.d.ts +103 -0
  17. package/dist/cache/strategies/memory.d.ts.map +1 -0
  18. package/dist/cache/strategies/redis.d.ts +105 -0
  19. package/dist/cache/strategies/redis.d.ts.map +1 -0
  20. package/dist/domain/featureFlags/index.d.ts +49 -0
  21. package/dist/domain/featureFlags/index.d.ts.map +1 -0
  22. package/dist/domain/featureFlags/provider.d.ts +166 -0
  23. package/dist/domain/featureFlags/provider.d.ts.map +1 -0
  24. package/dist/domain/featureFlags/providers/api.d.ts +78 -0
  25. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -0
  26. package/dist/domain/featureFlags/providers/database.d.ts +102 -0
  27. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -0
  28. package/dist/domain/featureFlags/providers/factory.d.ts +116 -0
  29. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -0
  30. package/dist/domain/featureFlags/providers/file.d.ts +84 -0
  31. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -0
  32. package/dist/domain/featureFlags/providers/memory.d.ts +179 -0
  33. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -0
  34. package/dist/domain/featureFlags/providers/redis.d.ts +80 -0
  35. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -0
  36. package/dist/domain/index.d.ts +6 -0
  37. package/dist/domain/index.d.ts.map +1 -0
  38. package/dist/domain/types.d.ts +18 -0
  39. package/dist/domain/types.d.ts.map +1 -0
  40. package/dist/engine/featureFlags/engine.d.ts +193 -0
  41. package/dist/engine/featureFlags/engine.d.ts.map +1 -0
  42. package/dist/engine/featureFlags/index.d.ts +10 -0
  43. package/dist/engine/featureFlags/index.d.ts.map +1 -0
  44. package/dist/engine/index.d.ts +5 -0
  45. package/dist/engine/index.d.ts.map +1 -0
  46. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +103 -0
  47. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +1 -0
  48. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +35 -0
  49. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +1 -0
  50. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +55 -0
  51. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +1 -0
  52. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +57 -0
  53. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +1 -0
  54. package/dist/frontend/featureFlags/index.d.ts +14 -0
  55. package/dist/frontend/featureFlags/index.d.ts.map +1 -0
  56. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +99 -0
  57. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +1 -0
  58. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +45 -0
  59. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +1 -0
  60. package/dist/frontend/index.d.ts +2 -0
  61. package/dist/frontend/index.d.ts.map +1 -0
  62. package/dist/index.cjs +3951 -0
  63. package/dist/index.cjs.map +1 -0
  64. package/dist/index.d.ts +7 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.mjs +3902 -0
  67. package/dist/index.mjs.map +1 -0
  68. package/dist/utils/common/hash.d.ts +81 -0
  69. package/dist/utils/common/hash.d.ts.map +1 -0
  70. package/dist/utils/common/index.d.ts +11 -0
  71. package/dist/utils/common/index.d.ts.map +1 -0
  72. package/dist/utils/common/values.d.ts +48 -0
  73. package/dist/utils/common/values.d.ts.map +1 -0
  74. package/dist/utils/featureFlags/conditions.d.ts +114 -0
  75. package/dist/utils/featureFlags/conditions.d.ts.map +1 -0
  76. package/dist/utils/featureFlags/context.d.ts +241 -0
  77. package/dist/utils/featureFlags/context.d.ts.map +1 -0
  78. package/dist/utils/featureFlags/index.d.ts +11 -0
  79. package/dist/utils/featureFlags/index.d.ts.map +1 -0
  80. package/dist/utils/index.d.ts +6 -0
  81. package/dist/utils/index.d.ts.map +1 -0
  82. 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,5 @@
1
+ /**
2
+ * Backend Layer Exports
3
+ */
4
+ export * from './featureFlags';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}