@plyaz/core 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/index.d.ts +16 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/nestjs.d.ts +79 -0
- package/dist/adapters/nestjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.d.ts +28 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/backend/example/example.controller.d.ts +121 -0
- package/dist/backend/example/example.controller.d.ts.map +1 -0
- package/dist/backend/example/example.module.d.ts +29 -0
- package/dist/backend/example/example.module.d.ts.map +1 -0
- package/dist/backend/example/index.d.ts +8 -0
- package/dist/backend/example/index.d.ts.map +1 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts +89 -0
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -0
- package/dist/backend/featureFlags/config/validation.d.ts +181 -0
- package/dist/backend/featureFlags/config/validation.d.ts.map +1 -0
- package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts +6 -0
- package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts.map +1 -0
- package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts +8 -0
- package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts.map +1 -0
- package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts +11 -0
- package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts.map +1 -0
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -56
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -44
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +33 -0
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -0
- package/dist/backend/featureFlags/index.d.ts +14 -41
- package/dist/backend/featureFlags/index.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts +16 -0
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -0
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts +18 -0
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -0
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +162 -0
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -0
- package/dist/backend/index.d.ts +5 -0
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
- package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
- package/dist/base/cache/feature/caching.d.ts +16 -0
- package/dist/base/cache/feature/caching.d.ts.map +1 -0
- package/dist/base/cache/index.d.ts +2 -0
- package/dist/base/cache/index.d.ts.map +1 -1
- package/dist/base/cache/strategies/redis.d.ts.map +1 -1
- package/dist/base/observability/BaseAdapter.d.ts +79 -0
- package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
- package/dist/base/observability/CompositeAdapter.d.ts +72 -0
- package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
- package/dist/base/observability/DatadogAdapter.d.ts +117 -0
- package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
- package/dist/base/observability/LoggerAdapter.d.ts +54 -0
- package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
- package/dist/base/observability/ObservabilityService.d.ts +160 -0
- package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
- package/dist/base/observability/index.d.ts +17 -0
- package/dist/base/observability/index.d.ts.map +1 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseDomainService.d.ts +284 -0
- package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseMapper.d.ts +100 -0
- package/dist/domain/base/BaseMapper.d.ts.map +1 -0
- package/dist/domain/base/BaseValidator.d.ts +105 -0
- package/dist/domain/base/BaseValidator.d.ts.map +1 -0
- package/dist/domain/base/index.d.ts +10 -0
- package/dist/domain/base/index.d.ts.map +1 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/index.d.ts +10 -0
- package/dist/domain/example/index.d.ts.map +1 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
- package/dist/domain/featureFlags/index.d.ts +10 -5
- package/dist/domain/featureFlags/index.d.ts.map +1 -1
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
- package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
- package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
- package/dist/domain/featureFlags/module.d.ts +20 -0
- package/dist/domain/featureFlags/module.d.ts.map +1 -0
- package/dist/domain/featureFlags/provider.d.ts +40 -1
- package/dist/domain/featureFlags/provider.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/api.d.ts +59 -34
- package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/database.d.ts +59 -52
- package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/file.d.ts +48 -1
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
- package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
- package/dist/domain/featureFlags/service.d.ts +112 -0
- package/dist/domain/featureFlags/service.d.ts.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/engine/featureFlags/engine.d.ts +8 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -1
- package/dist/entry-backend.d.ts +24 -0
- package/dist/entry-backend.d.ts.map +1 -0
- package/dist/entry-backend.js +15635 -0
- package/dist/entry-backend.js.map +1 -0
- package/dist/entry-backend.mjs +15506 -0
- package/dist/entry-backend.mjs.map +1 -0
- package/dist/entry-frontend.d.ts +23 -0
- package/dist/entry-frontend.d.ts.map +1 -0
- package/dist/entry-frontend.js +11152 -0
- package/dist/entry-frontend.js.map +1 -0
- package/dist/entry-frontend.mjs +11089 -0
- package/dist/entry-frontend.mjs.map +1 -0
- package/dist/events/CoreEventManager.d.ts +116 -0
- package/dist/events/CoreEventManager.d.ts.map +1 -0
- package/dist/events/index.d.ts +27 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/frontend/base/index.d.ts +8 -0
- package/dist/frontend/base/index.d.ts.map +1 -0
- package/dist/frontend/components/InitializationError.d.ts +25 -0
- package/dist/frontend/components/InitializationError.d.ts.map +1 -0
- package/dist/frontend/components/InitializationLoading.d.ts +22 -0
- package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
- package/dist/frontend/components/index.d.ts +9 -0
- package/dist/frontend/components/index.d.ts.map +1 -0
- package/dist/frontend/example/index.d.ts +9 -0
- package/dist/frontend/example/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/index.d.ts +28 -7
- package/dist/frontend/featureFlags/index.d.ts.map +1 -1
- package/dist/frontend/index.d.ts +5 -0
- package/dist/frontend/index.d.ts.map +1 -1
- package/dist/frontend/providers/ApiProvider.d.ts +41 -0
- package/dist/frontend/providers/ApiProvider.d.ts.map +1 -0
- package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
- package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
- package/dist/frontend/providers/index.d.ts +8 -0
- package/dist/frontend/providers/index.d.ts.map +1 -0
- package/dist/frontend/store/feature-flags.d.ts +63 -0
- package/dist/frontend/store/feature-flags.d.ts.map +1 -0
- package/dist/frontend/store/index.d.ts +14 -0
- package/dist/frontend/store/index.d.ts.map +1 -0
- package/dist/frontend/store/integrations.d.ts +36 -0
- package/dist/frontend/store/integrations.d.ts.map +1 -0
- package/dist/frontend/store/service-accessors.d.ts +78 -0
- package/dist/frontend/store/service-accessors.d.ts.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15450 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +13461 -2440
- package/dist/index.mjs.map +1 -1
- package/dist/init/CoreInitializer.d.ts +582 -0
- package/dist/init/CoreInitializer.d.ts.map +1 -0
- package/dist/init/ServiceRegistry.d.ts +256 -0
- package/dist/init/ServiceRegistry.d.ts.map +1 -0
- package/dist/init/index.d.ts +14 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/nestjs/CoreModule.d.ts +63 -0
- package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
- package/dist/init/nestjs/index.d.ts +5 -0
- package/dist/init/nestjs/index.d.ts.map +1 -0
- package/dist/init/nestjs/index.js +9059 -0
- package/dist/init/nestjs/index.js.map +1 -0
- package/dist/init/nestjs/index.mjs +9055 -0
- package/dist/init/nestjs/index.mjs.map +1 -0
- package/dist/init/react.d.ts +33 -0
- package/dist/init/react.d.ts.map +1 -0
- package/dist/models/example/ExampleRepository.d.ts +124 -0
- package/dist/models/example/ExampleRepository.d.ts.map +1 -0
- package/dist/models/example/index.d.ts +7 -0
- package/dist/models/example/index.d.ts.map +1 -0
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts +560 -0
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
- package/dist/models/featureFlags/index.d.ts +7 -0
- package/dist/models/featureFlags/index.d.ts.map +1 -0
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/services/ApiClientService.d.ts +178 -0
- package/dist/services/ApiClientService.d.ts.map +1 -0
- package/dist/services/CacheService.d.ts +176 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/DbService.d.ts +391 -0
- package/dist/services/DbService.d.ts.map +1 -0
- package/dist/services/NotificationService.d.ts +151 -0
- package/dist/services/NotificationService.d.ts.map +1 -0
- package/dist/services/StorageService.d.ts +144 -0
- package/dist/services/StorageService.d.ts.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/utils/common/id.d.ts +83 -0
- package/dist/utils/common/id.d.ts.map +1 -0
- package/dist/utils/common/index.d.ts +3 -1
- package/dist/utils/common/index.d.ts.map +1 -1
- package/dist/utils/common/object.d.ts +70 -0
- package/dist/utils/common/object.d.ts.map +1 -0
- package/dist/utils/common/validation.d.ts +20 -0
- package/dist/utils/common/validation.d.ts.map +1 -0
- package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
- package/dist/utils/featureFlags/context.d.ts +0 -1
- package/dist/utils/featureFlags/context.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mapperUtils.d.ts +38 -0
- package/dist/utils/mapperUtils.d.ts.map +1 -0
- package/dist/utils/runtime.d.ts +15 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/version.d.ts +24 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/web_app/auth/add_user.d.ts +3 -0
- package/dist/web_app/auth/add_user.d.ts.map +1 -0
- package/dist/web_app/auth/update_user.d.ts +2 -0
- package/dist/web_app/auth/update_user.d.ts.map +1 -0
- package/package.json +102 -15
- package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
- package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
- package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -123
- package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
- package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
- package/dist/index.cjs +0 -4383
- package/dist/index.cjs.map +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,123 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useFeatureFlag Hook
|
|
3
|
-
*
|
|
4
|
-
* React hook for accessing individual feature flags with caching and real-time updates.
|
|
5
|
-
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
-
*
|
|
7
|
-
* @fileoverview React hook for feature flag access
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
import type { FeatureFlagValue, FeatureFlagHook, UseFeatureFlagOptions } from '@plyaz/types';
|
|
11
|
-
/**
|
|
12
|
-
* React hook for accessing a single feature flag.
|
|
13
|
-
* Provides real-time updates and automatic caching.
|
|
14
|
-
*
|
|
15
|
-
* @template T - Expected type of the flag value
|
|
16
|
-
* @param key - Feature flag key to evaluate
|
|
17
|
-
* @param options - Hook configuration options
|
|
18
|
-
* @returns Feature flag hook state
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* // Basic usage
|
|
23
|
-
* const { value: isEnabled, isLoading, error } = useFeatureFlag<FeatureFlagKey>('AUTH_GOOGLE');
|
|
24
|
-
*
|
|
25
|
-
* // With context and type safety
|
|
26
|
-
* const { value, isLoading, refresh } = useFeatureFlag<FeatureFlagKey, number>(
|
|
27
|
-
* 'ROLLOUT_PERCENTAGE',
|
|
28
|
-
* {
|
|
29
|
-
* context: { userId: 'user123', environment: 'production' },
|
|
30
|
-
* defaultValue: 0
|
|
31
|
-
* }
|
|
32
|
-
* );
|
|
33
|
-
*
|
|
34
|
-
* // With auto-refresh disabled
|
|
35
|
-
* const { value, refresh } = useFeatureFlag<FeatureFlagKey>('BETA_FEATURE', {
|
|
36
|
-
* autoRefresh: false,
|
|
37
|
-
* defaultValue: false
|
|
38
|
-
* });
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export declare function useFeatureFlag<FeatureFlagKey extends string, T extends FeatureFlagValue = boolean>(key: FeatureFlagKey, options?: UseFeatureFlagOptions): FeatureFlagHook<T>;
|
|
42
|
-
/**
|
|
43
|
-
* Hook for checking if a feature flag is enabled.
|
|
44
|
-
* Simplified version of useFeatureFlag that returns only boolean state.
|
|
45
|
-
*
|
|
46
|
-
* @param key - Feature flag key to check
|
|
47
|
-
* @param options - Hook configuration options
|
|
48
|
-
* @returns Boolean indicating if flag is enabled
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```typescript
|
|
52
|
-
* const isGoogleAuthEnabled = useFeatureFlagEnabled<FeatureFlagKey>('AUTH_GOOGLE');
|
|
53
|
-
* const isBetaEnabled = useFeatureFlagEnabled<FeatureFlagKey>('BETA_FEATURE', {
|
|
54
|
-
* context: { userId: 'user123', environment: 'production' }
|
|
55
|
-
* });
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export declare function useFeatureFlagEnabled<FeatureFlagKey extends string>(key: FeatureFlagKey, options?: UseFeatureFlagOptions): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Hook for getting a feature flag value with type safety.
|
|
61
|
-
* Provides the raw value without the loading state wrapper.
|
|
62
|
-
*
|
|
63
|
-
* @template T - Expected type of the flag value
|
|
64
|
-
* @param key - Feature flag key to get value for
|
|
65
|
-
* @param options - Hook configuration options
|
|
66
|
-
* @returns The flag value with type safety
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```typescript
|
|
70
|
-
* const rolloutPercentage = useFeatureFlagValue<FeatureFlagKey, number>('ROLLOUT_PERCENTAGE', {
|
|
71
|
-
* defaultValue: 0
|
|
72
|
-
* });
|
|
73
|
-
*
|
|
74
|
-
* const theme = useFeatureFlagValue<FeatureFlagKey, 'light' | 'dark'>('UI_THEME', {
|
|
75
|
-
* defaultValue: 'light'
|
|
76
|
-
* });
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
export declare function useFeatureFlagValue<FeatureFlagKey extends string, T extends FeatureFlagValue = FeatureFlagValue>(key: FeatureFlagKey, options?: UseFeatureFlagOptions): T;
|
|
80
|
-
/**
|
|
81
|
-
* Hook for evaluating multiple feature flags at once.
|
|
82
|
-
* Useful for loading multiple flags with a single provider call.
|
|
83
|
-
*
|
|
84
|
-
* @param keys - Array of feature flag keys to evaluate
|
|
85
|
-
* @param options - Hook configuration options
|
|
86
|
-
* @returns Map of flag keys to their hook states
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* const flags = useMultipleFeatureFlags<FeatureFlagKey>([
|
|
91
|
-
* 'AUTH_GOOGLE',
|
|
92
|
-
* 'AUTH_GITHUB',
|
|
93
|
-
* 'BETA_FEATURE'
|
|
94
|
-
* ], {
|
|
95
|
-
* context: { userId: 'user123', environment: 'production' }
|
|
96
|
-
* });
|
|
97
|
-
*
|
|
98
|
-
* const isGoogleEnabled = flags.AUTH_GOOGLE.value;
|
|
99
|
-
* const isGithubEnabled = flags.AUTH_GITHUB.value;
|
|
100
|
-
* ```
|
|
101
|
-
*/
|
|
102
|
-
export declare function useMultipleFeatureFlags<FeatureFlagKey extends string>(keys: FeatureFlagKey[], options?: UseFeatureFlagOptions): Record<FeatureFlagKey, FeatureFlagHook<FeatureFlagValue>>;
|
|
103
|
-
//# sourceMappingURL=useFeatureFlag.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFeatureFlag.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlag.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAO7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAAC,cAAc,SAAS,MAAM,EAAE,CAAC,SAAS,gBAAgB,GAAG,OAAO,EAChG,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,qBAA0B,GAClC,eAAe,CAAC,CAAC,CAAC,CA8CpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,SAAS,MAAM,EACjE,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAOT;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAC7C,GAAG,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B,GAAG,CAAC,CAG7D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,SAAS,MAAM,EACnE,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAuB3D"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useFeatureFlagHelpers Hook
|
|
3
|
-
*
|
|
4
|
-
* React hook providing helper functions for feature flag management.
|
|
5
|
-
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
-
*
|
|
7
|
-
* @fileoverview Helper functions hook for feature flags
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
import type { FeatureFlagHelpers } from '@plyaz/types';
|
|
11
|
-
/**
|
|
12
|
-
* Hook that provides helper functions for feature flag operations.
|
|
13
|
-
* Includes override management, bulk operations, and conditional execution.
|
|
14
|
-
*
|
|
15
|
-
* @returns Object containing helper functions
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const helpers = useFeatureFlagHelpers<FeatureFlagKey>();
|
|
20
|
-
*
|
|
21
|
-
* // Set override
|
|
22
|
-
* helpers.setOverride('AUTH_GOOGLE', true);
|
|
23
|
-
*
|
|
24
|
-
* // Check multiple flags
|
|
25
|
-
* const anyEnabled = await helpers.isAnyEnabled(['AUTH_GOOGLE', 'AUTH_GITHUB']);
|
|
26
|
-
*
|
|
27
|
-
* // Conditional execution
|
|
28
|
-
* const result = await helpers.whenEnabled('BETA_FEATURE',
|
|
29
|
-
* () => console.log('Beta feature is enabled'),
|
|
30
|
-
* () => console.log('Beta feature is disabled')
|
|
31
|
-
* );
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export declare function useFeatureFlagHelpers<FeatureFlagKey extends string>(): FeatureFlagHelpers<FeatureFlagKey>;
|
|
35
|
-
//# sourceMappingURL=useFeatureFlagActions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFeatureFlagActions.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlagActions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAwC,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG7F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,SAAS,MAAM,KAC1B,kBAAkB,CAAC,cAAc,CAAC,CAsGtC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Flag Hook Helpers
|
|
3
|
-
*
|
|
4
|
-
* Helper functions for feature flag hooks to reduce function complexity.
|
|
5
|
-
*
|
|
6
|
-
* @fileoverview Helper functions for feature flag hooks
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
*/
|
|
9
|
-
import type * as React from 'react';
|
|
10
|
-
import type { FeatureFlagValue, FeatureFlagContext, FeatureFlagHook, FeatureFlagProvider, FeatureFlagState } from '@plyaz/types';
|
|
11
|
-
/**
|
|
12
|
-
* Creates evaluation function for a feature flag.
|
|
13
|
-
*
|
|
14
|
-
* @template FeatureFlagKey - The type of feature flag keys
|
|
15
|
-
* @template T - The expected type of the flag value
|
|
16
|
-
* @param params - Evaluation parameters
|
|
17
|
-
* @param params.provider - Feature flag provider instance
|
|
18
|
-
* @param params.key - Feature flag key to evaluate
|
|
19
|
-
* @param params.context - Optional evaluation context
|
|
20
|
-
* @param params.defaultValue - Default value if evaluation fails
|
|
21
|
-
* @param setState - React state setter for flag state
|
|
22
|
-
* @returns Async function that evaluates the flag
|
|
23
|
-
*/
|
|
24
|
-
export declare function createEvaluationFunction<FeatureFlagKey extends string, T extends FeatureFlagValue = string | number | boolean | Record<string, unknown>>(params: {
|
|
25
|
-
provider: FeatureFlagProvider<FeatureFlagKey> | null;
|
|
26
|
-
key: FeatureFlagKey;
|
|
27
|
-
context: FeatureFlagContext | undefined;
|
|
28
|
-
defaultValue: T | undefined;
|
|
29
|
-
}, setState: React.Dispatch<React.SetStateAction<FeatureFlagState<FeatureFlagKey, T>>>): () => Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Custom hook for managing feature flag evaluation logic.
|
|
32
|
-
* Handles loading state, error management, and automatic evaluation.
|
|
33
|
-
*
|
|
34
|
-
* @template FeatureFlagKey - The type of feature flag keys
|
|
35
|
-
* @template T - The expected type of the flag value
|
|
36
|
-
* @param key - Feature flag key to evaluate
|
|
37
|
-
* @param context - Optional evaluation context
|
|
38
|
-
* @param defaultValue - Default value if evaluation fails
|
|
39
|
-
* @param provider - Feature flag provider instance
|
|
40
|
-
* @returns Feature flag hook state with value, loading, error, and refresh function
|
|
41
|
-
*/
|
|
42
|
-
export declare function useFeatureFlagEvaluation<FeatureFlagKey extends string, T extends FeatureFlagValue = boolean>(key: FeatureFlagKey, context: FeatureFlagContext | undefined, defaultValue: T | undefined, provider: FeatureFlagProvider<FeatureFlagKey> | null): FeatureFlagHook<T>;
|
|
43
|
-
/**
|
|
44
|
-
* Custom hook for managing multiple feature flags evaluation.
|
|
45
|
-
* Returns a record of flag states for multiple flags.
|
|
46
|
-
*
|
|
47
|
-
* @template FeatureFlagKey - The type of feature flag keys
|
|
48
|
-
* @param keys - Array of feature flag keys to evaluate
|
|
49
|
-
* @param context - Optional evaluation context
|
|
50
|
-
* @param defaultValue - Default value for all flags if evaluation fails
|
|
51
|
-
* @param provider - Feature flag provider instance
|
|
52
|
-
* @returns Record mapping flag keys to their hook states
|
|
53
|
-
*/
|
|
54
|
-
export declare function useMultipleFeatureFlagsEvaluation<FeatureFlagKey extends string>(keys: FeatureFlagKey[], context: FeatureFlagContext | undefined, defaultValue: FeatureFlagValue, provider: FeatureFlagProvider<FeatureFlagKey> | null): Record<string, FeatureFlagHook<FeatureFlagValue>>;
|
|
55
|
-
//# sourceMappingURL=useFeatureFlagHelpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFeatureFlagHelpers.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlagHelpers.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhF,MAAM,EAAE;IACN,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACrD,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;CAC7B,EACD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,GAClF,MAAM,OAAO,CAAC,IAAI,CAAC,CA0BrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,gBAAgB,GAAG,OAAO,EAEpC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,YAAY,EAAE,CAAC,GAAG,SAAS,EAC3B,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,GACnD,eAAe,CAAC,CAAC,CAAC,CA+BpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,MAAM,EAC7E,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,GACnD,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CA6InD"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useFeatureFlagProvider Hook
|
|
3
|
-
*
|
|
4
|
-
* React hook for accessing the feature flag provider from context.
|
|
5
|
-
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
-
*
|
|
7
|
-
* @fileoverview Provider access hook for feature flags
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
import type { FeatureFlagProvider } from '@plyaz/types';
|
|
11
|
-
/**
|
|
12
|
-
* Hook for accessing the feature flag provider from React context.
|
|
13
|
-
* Must be used within a FeatureFlagProvider component.
|
|
14
|
-
*
|
|
15
|
-
* @returns Feature flag provider instance
|
|
16
|
-
* @throws Error if used outside of FeatureFlagProvider
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* function MyComponent() {
|
|
21
|
-
* const provider = useFeatureFlagProvider<FeatureFlagKey>();
|
|
22
|
-
*
|
|
23
|
-
* const handleRefresh = async () => {
|
|
24
|
-
* await provider.refresh();
|
|
25
|
-
* };
|
|
26
|
-
*
|
|
27
|
-
* return <button onClick={handleRefresh}>Refresh Flags</button>;
|
|
28
|
-
* }
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export declare function useFeatureFlagProvider<FeatureFlagKey extends string>(): FeatureFlagProvider<FeatureFlagKey>;
|
|
32
|
-
/**
|
|
33
|
-
* Hook for accessing the feature flag provider status.
|
|
34
|
-
* Provides information about provider initialization and health.
|
|
35
|
-
*
|
|
36
|
-
* @returns Provider status information
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```typescript
|
|
40
|
-
* function StatusComponent() {
|
|
41
|
-
* const { isInitialized, isLoading, error } = useFeatureFlagProviderStatus<FeatureFlagKey>();
|
|
42
|
-
*
|
|
43
|
-
* if (isLoading) return <div>Loading feature flags...</div>;
|
|
44
|
-
* if (error) return <div>Error: {error.message}</div>;
|
|
45
|
-
* if (!isInitialized) return <div>Initializing...</div>;
|
|
46
|
-
*
|
|
47
|
-
* return <div>Feature flags ready!</div>;
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export declare function useFeatureFlagProviderStatus<FeatureFlagKey extends string>(): {
|
|
52
|
-
isInitialized: boolean;
|
|
53
|
-
isLoading: boolean;
|
|
54
|
-
error: Error | null;
|
|
55
|
-
lastUpdated: Date | null | undefined;
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=useFeatureFlagProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFeatureFlagProvider.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/hooks/useFeatureFlagProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,cAAc,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,SAAS,MAAM,KAC1B,mBAAmB,CAAC,cAAc,CAAC,CAWvC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,4BAA4B,CAAC,cAAc,SAAS,MAAM,KAAK;IAC7E,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,CAgBA"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Flag Provider Component
|
|
3
|
-
*
|
|
4
|
-
* React context provider for feature flags system.
|
|
5
|
-
* This will be moved to @plyaz/core when the package structure is finalized.
|
|
6
|
-
*
|
|
7
|
-
* @fileoverview React provider for feature flag context
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
import React from 'react';
|
|
11
|
-
import type { FeatureFlagConfig, FeatureFlagContextValue, FeatureFlagProviderProps, FeatureFlagValue } from '@plyaz/types';
|
|
12
|
-
import type { FeatureFlagKey } from '@domain/types';
|
|
13
|
-
/**
|
|
14
|
-
* React context for feature flag provider.
|
|
15
|
-
* Using string as the base type to support any feature flag key.
|
|
16
|
-
*/
|
|
17
|
-
export declare const FeatureFlagContext: React.Context<FeatureFlagContextValue<"AUTH_GOOGLE" | "AUTH_DISCORD" | "AUTH_FACEBOOK" | "AUTH_GITHUB"> | null>;
|
|
18
|
-
/**
|
|
19
|
-
* Feature Flag Provider component that manages the feature flag system.
|
|
20
|
-
* Provides context for accessing feature flags throughout the React component tree.
|
|
21
|
-
*
|
|
22
|
-
* @param props - Provider configuration and options
|
|
23
|
-
* @returns JSX element providing feature flag context
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```typescript
|
|
27
|
-
* // Basic usage
|
|
28
|
-
* function App() {
|
|
29
|
-
* return (
|
|
30
|
-
* <FeatureFlagAppProvider
|
|
31
|
-
* config={{
|
|
32
|
-
* provider: 'memory',
|
|
33
|
-
* isCacheEnabled: true,
|
|
34
|
-
* cacheTtl: 300,
|
|
35
|
-
* }}
|
|
36
|
-
* features={FEATURES}
|
|
37
|
-
* >
|
|
38
|
-
* <MyApplication />
|
|
39
|
-
* </FeatureFlagAppProvider>
|
|
40
|
-
* );
|
|
41
|
-
* }
|
|
42
|
-
*
|
|
43
|
-
* // With custom context and callbacks
|
|
44
|
-
* function App() {
|
|
45
|
-
* const featureFlagConfig = {
|
|
46
|
-
* provider: 'api' as const,
|
|
47
|
-
* apiEndpoint: 'https://api.example.com',
|
|
48
|
-
* apiKey: process.env.REACT_APP_FF_API_KEY,
|
|
49
|
-
* isCacheEnabled: true,
|
|
50
|
-
* cacheTtl: 300,
|
|
51
|
-
* };
|
|
52
|
-
*
|
|
53
|
-
* const defaultContext = {
|
|
54
|
-
* environment: 'production' as const,
|
|
55
|
-
* userId: getCurrentUserId(),
|
|
56
|
-
* userRole: getCurrentUserRole(),
|
|
57
|
-
* };
|
|
58
|
-
*
|
|
59
|
-
* return (
|
|
60
|
-
* <FeatureFlagAppProvider
|
|
61
|
-
* config={featureFlagConfig}
|
|
62
|
-
* features={FEATURES}
|
|
63
|
-
* defaultContext={defaultContext}
|
|
64
|
-
* onReady={(provider) => console.log('Feature flags ready!')}
|
|
65
|
-
* onError={(error) => console.error('Feature flag error:', error)}
|
|
66
|
-
* showLoading
|
|
67
|
-
* >
|
|
68
|
-
* <MyApplication />
|
|
69
|
-
* </FeatureFlagAppProvider>
|
|
70
|
-
* );
|
|
71
|
-
* }
|
|
72
|
-
* ```
|
|
73
|
-
*/
|
|
74
|
-
export declare function FeatureFlagAppProvider<FeatureFlags extends Record<FeatureFlagKey, FeatureFlagValue>>({ config, children, features, onReady, onError, isShowLoading, loadingComponent, errorComponent, }: FeatureFlagProviderProps<FeatureFlagKey, FeatureFlags>): React.ReactElement;
|
|
75
|
-
export declare namespace FeatureFlagAppProvider {
|
|
76
|
-
var displayName: string;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Higher-order component for providing feature flag context.
|
|
80
|
-
* Alternative to using the FeatureFlagAppProvider component directly.
|
|
81
|
-
*
|
|
82
|
-
* @param config - Feature flag configuration
|
|
83
|
-
* @param options - Additional provider options
|
|
84
|
-
* @returns HOC function that wraps components with feature flag provider
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
* ```typescript
|
|
88
|
-
* const withFeatureFlags = createFeatureFlagProvider({
|
|
89
|
-
* provider: 'memory',
|
|
90
|
-
* isCacheEnabled: true,
|
|
91
|
-
* }, {
|
|
92
|
-
* features: FEATURES
|
|
93
|
-
* });
|
|
94
|
-
*
|
|
95
|
-
* const AppWithFeatureFlags = withFeatureFlags(App);
|
|
96
|
-
* ```
|
|
97
|
-
*/
|
|
98
|
-
export declare function createFeatureFlagProvider<FeatureFlags extends Record<FeatureFlagKey, FeatureFlagValue>>(config: FeatureFlagConfig<FeatureFlagKey>, options?: Pick<FeatureFlagProviderProps<FeatureFlagKey, FeatureFlags>, 'defaultContext' | 'onReady' | 'onError' | 'features'>): <P extends object>(component: React.ComponentType<P>) => React.ComponentType<P>;
|
|
99
|
-
//# sourceMappingURL=FeatureFlagProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureFlagProvider.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/providers/FeatureFlagProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAEV,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,iHAE9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,wBAAgB,sBAAsB,CACpC,YAAY,SAAS,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAC7D,EACA,MAAM,EAEN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,aAAqB,EACrB,gBAAgB,EAChB,cAAc,GACf,EAAE,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CA0J7E;yBAtKe,sBAAsB;;;AA2KtC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,SAAS,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAE7D,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,OAAO,CAAC,EAAE,IAAI,CACZ,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,EACtD,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CACtD,IAEgC,CAAC,SAAS,MAAM,EAC/C,WAAW,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAChC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAe1B"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Flag Provider Helpers
|
|
3
|
-
*
|
|
4
|
-
* Helper functions for the FeatureFlagProvider component to reduce complexity.
|
|
5
|
-
*
|
|
6
|
-
* @fileoverview Helper functions for FeatureFlagProvider
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
*/
|
|
9
|
-
import React from 'react';
|
|
10
|
-
import type { FeatureFlagConfig } from '@plyaz/types';
|
|
11
|
-
import type { ProviderState, UseFeatureFlagProviderState } from './types';
|
|
12
|
-
/**
|
|
13
|
-
* Hook for managing feature flag provider state and initialization.
|
|
14
|
-
*/
|
|
15
|
-
export declare function useFeatureFlagProviderState<FeatureFlagKey extends string>(config: FeatureFlagConfig<FeatureFlagKey>, onReady?: () => void, onError?: (error: Error) => void): UseFeatureFlagProviderState<FeatureFlagKey>;
|
|
16
|
-
/**
|
|
17
|
-
* Hook for setting up provider subscription and cleanup.
|
|
18
|
-
*/
|
|
19
|
-
export declare function useProviderSubscription<FeatureFlagKey extends string>(state: ProviderState<FeatureFlagKey>, setState: React.Dispatch<React.SetStateAction<ProviderState<FeatureFlagKey>>>): void;
|
|
20
|
-
/**
|
|
21
|
-
* Renders loading state component.
|
|
22
|
-
*/
|
|
23
|
-
export declare function renderLoadingState(isShowLoading: boolean, isLoading: boolean, loadingComponent?: React.ComponentType): React.ReactElement | null;
|
|
24
|
-
/**
|
|
25
|
-
* Renders error state component.
|
|
26
|
-
*/
|
|
27
|
-
export declare function renderErrorState(error: Error | null, errorComponent?: React.ComponentType<{
|
|
28
|
-
error: Error;
|
|
29
|
-
retry: () => void;
|
|
30
|
-
}>, retry?: () => void): React.ReactElement | null;
|
|
31
|
-
//# sourceMappingURL=FeatureFlagProviderHelpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureFlagProviderHelpers.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/providers/FeatureFlagProviderHelpers.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAE1E;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,cAAc,SAAS,MAAM,EACvE,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACzC,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,2BAA2B,CAAC,cAAc,CAAC,CA8C7C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,SAAS,MAAM,EACnE,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,GAC5E,IAAI,CAeN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,OAAO,EAClB,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,GACrC,KAAK,CAAC,YAAY,GAAG,IAAI,CAW3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,EACzE,KAAK,CAAC,EAAE,MAAM,IAAI,GACjB,KAAK,CAAC,YAAY,GAAG,IAAI,CAO3B"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { FeatureFlagProvider as IFeatureFlagProvider } from '@plyaz/types';
|
|
3
|
-
/**
|
|
4
|
-
* Provider state interface.
|
|
5
|
-
*/
|
|
6
|
-
export interface ProviderState<FeatureFlagKey extends string> {
|
|
7
|
-
provider: IFeatureFlagProvider<FeatureFlagKey> | null;
|
|
8
|
-
isInitialized: boolean;
|
|
9
|
-
isLoading: boolean;
|
|
10
|
-
error: Error | null;
|
|
11
|
-
lastUpdated: Date | null;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Hook for managing feature flag provider state and initialization.
|
|
15
|
-
*/
|
|
16
|
-
export interface UseFeatureFlagProviderState<FeatureFlagKey extends string> {
|
|
17
|
-
state: ProviderState<FeatureFlagKey>;
|
|
18
|
-
setState: React.Dispatch<React.SetStateAction<ProviderState<FeatureFlagKey>>>;
|
|
19
|
-
initializeProvider: () => Promise<void>;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/frontend/featureFlags/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,cAAc,SAAS,MAAM;IAC1D,QAAQ,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACtD,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,cAAc,SAAS,MAAM;IACxE,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9E,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC"}
|