@plyaz/core 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/index.d.ts +16 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/nestjs.d.ts +79 -0
- package/dist/adapters/nestjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.d.ts +28 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/backend/example/example.controller.d.ts +121 -0
- package/dist/backend/example/example.controller.d.ts.map +1 -0
- package/dist/backend/example/example.module.d.ts +29 -0
- package/dist/backend/example/example.module.d.ts.map +1 -0
- package/dist/backend/example/index.d.ts +8 -0
- package/dist/backend/example/index.d.ts.map +1 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
- package/dist/backend/featureFlags/config/validation.d.ts +6 -6
- package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
- package/dist/backend/featureFlags/index.d.ts +6 -7
- package/dist/backend/featureFlags/index.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
- package/dist/backend/index.d.ts +5 -0
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
- package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
- package/dist/base/cache/index.d.ts +1 -0
- package/dist/base/cache/index.d.ts.map +1 -1
- package/dist/base/cache/strategies/redis.d.ts.map +1 -1
- package/dist/base/observability/BaseAdapter.d.ts +79 -0
- package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
- package/dist/base/observability/CompositeAdapter.d.ts +72 -0
- package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
- package/dist/base/observability/DatadogAdapter.d.ts +117 -0
- package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
- package/dist/base/observability/LoggerAdapter.d.ts +54 -0
- package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
- package/dist/base/observability/ObservabilityService.d.ts +160 -0
- package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
- package/dist/base/observability/index.d.ts +17 -0
- package/dist/base/observability/index.d.ts.map +1 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseDomainService.d.ts +284 -0
- package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseMapper.d.ts +100 -0
- package/dist/domain/base/BaseMapper.d.ts.map +1 -0
- package/dist/domain/base/BaseValidator.d.ts +105 -0
- package/dist/domain/base/BaseValidator.d.ts.map +1 -0
- package/dist/domain/base/index.d.ts +10 -0
- package/dist/domain/base/index.d.ts.map +1 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/index.d.ts +10 -0
- package/dist/domain/example/index.d.ts.map +1 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
- package/dist/domain/featureFlags/index.d.ts +10 -5
- package/dist/domain/featureFlags/index.d.ts.map +1 -1
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
- package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
- package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
- package/dist/domain/featureFlags/module.d.ts +20 -0
- package/dist/domain/featureFlags/module.d.ts.map +1 -0
- package/dist/domain/featureFlags/provider.d.ts +40 -1
- package/dist/domain/featureFlags/provider.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/api.d.ts +59 -34
- package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/database.d.ts +48 -46
- package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/file.d.ts +48 -1
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
- package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
- package/dist/domain/featureFlags/service.d.ts +112 -0
- package/dist/domain/featureFlags/service.d.ts.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/engine/featureFlags/engine.d.ts +8 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -1
- package/dist/entry-backend.d.ts +24 -0
- package/dist/entry-backend.d.ts.map +1 -0
- package/dist/entry-backend.js +15635 -0
- package/dist/entry-backend.js.map +1 -0
- package/dist/entry-backend.mjs +15506 -0
- package/dist/entry-backend.mjs.map +1 -0
- package/dist/entry-frontend.d.ts +23 -0
- package/dist/entry-frontend.d.ts.map +1 -0
- package/dist/entry-frontend.js +11152 -0
- package/dist/entry-frontend.js.map +1 -0
- package/dist/entry-frontend.mjs +11089 -0
- package/dist/entry-frontend.mjs.map +1 -0
- package/dist/events/CoreEventManager.d.ts +116 -0
- package/dist/events/CoreEventManager.d.ts.map +1 -0
- package/dist/events/index.d.ts +27 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/frontend/base/index.d.ts +8 -0
- package/dist/frontend/base/index.d.ts.map +1 -0
- package/dist/frontend/components/InitializationError.d.ts +25 -0
- package/dist/frontend/components/InitializationError.d.ts.map +1 -0
- package/dist/frontend/components/InitializationLoading.d.ts +22 -0
- package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
- package/dist/frontend/components/index.d.ts +9 -0
- package/dist/frontend/components/index.d.ts.map +1 -0
- package/dist/frontend/example/index.d.ts +9 -0
- package/dist/frontend/example/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/index.d.ts +28 -7
- package/dist/frontend/featureFlags/index.d.ts.map +1 -1
- package/dist/frontend/index.d.ts +4 -0
- package/dist/frontend/index.d.ts.map +1 -1
- package/dist/frontend/providers/ApiProvider.d.ts +2 -2
- package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
- package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
- package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
- package/dist/frontend/providers/index.d.ts +1 -0
- package/dist/frontend/providers/index.d.ts.map +1 -1
- package/dist/frontend/store/feature-flags.d.ts +63 -0
- package/dist/frontend/store/feature-flags.d.ts.map +1 -0
- package/dist/frontend/store/index.d.ts +14 -0
- package/dist/frontend/store/index.d.ts.map +1 -0
- package/dist/frontend/store/integrations.d.ts +36 -0
- package/dist/frontend/store/integrations.d.ts.map +1 -0
- package/dist/frontend/store/service-accessors.d.ts +78 -0
- package/dist/frontend/store/service-accessors.d.ts.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15450 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +13678 -4697
- package/dist/index.mjs.map +1 -1
- package/dist/init/CoreInitializer.d.ts +582 -0
- package/dist/init/CoreInitializer.d.ts.map +1 -0
- package/dist/init/ServiceRegistry.d.ts +256 -0
- package/dist/init/ServiceRegistry.d.ts.map +1 -0
- package/dist/init/index.d.ts +14 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/nestjs/CoreModule.d.ts +63 -0
- package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
- package/dist/init/nestjs/index.d.ts +5 -0
- package/dist/init/nestjs/index.d.ts.map +1 -0
- package/dist/init/nestjs/index.js +9059 -0
- package/dist/init/nestjs/index.js.map +1 -0
- package/dist/init/nestjs/index.mjs +9055 -0
- package/dist/init/nestjs/index.mjs.map +1 -0
- package/dist/init/react.d.ts +33 -0
- package/dist/init/react.d.ts.map +1 -0
- package/dist/models/example/ExampleRepository.d.ts +124 -0
- package/dist/models/example/ExampleRepository.d.ts.map +1 -0
- package/dist/models/example/index.d.ts +7 -0
- package/dist/models/example/index.d.ts.map +1 -0
- package/dist/{backend/featureFlags/database/repository.d.ts → models/featureFlags/FeatureFlagRepository.d.ts} +47 -5
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
- package/dist/models/featureFlags/index.d.ts +7 -0
- package/dist/models/featureFlags/index.d.ts.map +1 -0
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/services/ApiClientService.d.ts +92 -4
- package/dist/services/ApiClientService.d.ts.map +1 -1
- package/dist/services/CacheService.d.ts +176 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/DbService.d.ts +391 -0
- package/dist/services/DbService.d.ts.map +1 -0
- package/dist/services/NotificationService.d.ts +151 -0
- package/dist/services/NotificationService.d.ts.map +1 -0
- package/dist/services/StorageService.d.ts +144 -0
- package/dist/services/StorageService.d.ts.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/utils/common/id.d.ts +83 -0
- package/dist/utils/common/id.d.ts.map +1 -0
- package/dist/utils/common/index.d.ts +2 -0
- package/dist/utils/common/index.d.ts.map +1 -1
- package/dist/utils/common/object.d.ts +70 -0
- package/dist/utils/common/object.d.ts.map +1 -0
- package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
- package/dist/utils/featureFlags/context.d.ts +0 -1
- package/dist/utils/featureFlags/context.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mapperUtils.d.ts +38 -0
- package/dist/utils/mapperUtils.d.ts.map +1 -0
- package/dist/utils/runtime.d.ts +15 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/version.d.ts +24 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/web_app/auth/add_user.d.ts +2 -2
- package/dist/web_app/auth/add_user.d.ts.map +1 -1
- package/dist/web_app/auth/update_user.d.ts +1 -1
- package/dist/web_app/auth/update_user.d.ts.map +1 -1
- package/package.json +89 -15
- package/dist/backend/featureFlags/database/connection.d.ts +0 -321
- package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
- package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
- package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
- package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
- package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
- package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
- package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
- package/dist/index.cjs +0 -6435
- package/dist/index.cjs.map +0 -1
- package/dist/utils/db/databaseService.d.ts +0 -6
- package/dist/utils/db/databaseService.d.ts.map +0 -1
- package/dist/utils/db/index.d.ts +0 -2
- package/dist/utils/db/index.d.ts.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Integration for ServiceRegistry
|
|
3
|
+
*
|
|
4
|
+
* For full React integration, use PlyazProvider directly.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* import { PlyazProvider, useService } from '@plyaz/core/frontend';
|
|
9
|
+
*
|
|
10
|
+
* function App() {
|
|
11
|
+
* return (
|
|
12
|
+
* <PlyazProvider
|
|
13
|
+
* config={{
|
|
14
|
+
* api: { baseURL: '/api' },
|
|
15
|
+
* services: [
|
|
16
|
+
* { service: FeatureFlagDomainService, config: { enabled: true } },
|
|
17
|
+
* { service: ExampleDomainService, config: { enabled: true } },
|
|
18
|
+
* ],
|
|
19
|
+
* }}
|
|
20
|
+
* >
|
|
21
|
+
* <MyApp />
|
|
22
|
+
* </PlyazProvider>
|
|
23
|
+
* );
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* function MyComponent() {
|
|
27
|
+
* const flagService = useService<FeatureFlagDomainService>('featureFlags');
|
|
28
|
+
* // ...
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export { PlyazProvider, usePlyaz, useApi, useApiSafe, useEvents, useFlag, useFeatureFlags, usePlyazReady, useAppContext, useEnvironment, useService, useServiceAsync, useHasService, useServiceKeys, PlyazContext, } from '../frontend/providers/PlyazProvider';
|
|
33
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/init/react.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Repository
|
|
3
|
+
*
|
|
4
|
+
* Data access layer for Example entities.
|
|
5
|
+
* Extends BaseRepository from @plyaz/db for consistent CRUD operations.
|
|
6
|
+
* Falls back to in-memory dummy data when DbService is not initialized.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // With DbService initialized
|
|
11
|
+
* const db = DbService.getInstance().getDatabase();
|
|
12
|
+
* const repository = new ExampleRepository(db);
|
|
13
|
+
*
|
|
14
|
+
* // Get all entities
|
|
15
|
+
* const result = await repository.findMany();
|
|
16
|
+
* if (result.success) {
|
|
17
|
+
* console.log('Entities:', result.value.data);
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* // Get by ID
|
|
21
|
+
* const entity = await repository.findById('123');
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { BaseRepository } from '@plyaz/db';
|
|
25
|
+
import type { DatabaseResult, PaginatedResult, QueryOptions, DatabaseServiceInterface, OperationConfig } from '@plyaz/types/db';
|
|
26
|
+
/**
|
|
27
|
+
* Database row type for Example entity (snake_case for DB)
|
|
28
|
+
*/
|
|
29
|
+
export interface ExampleDatabaseRow {
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
description: string | null;
|
|
33
|
+
amount: number;
|
|
34
|
+
owner_id: string;
|
|
35
|
+
status: string;
|
|
36
|
+
is_visible: boolean;
|
|
37
|
+
created_at: string;
|
|
38
|
+
updated_at: string;
|
|
39
|
+
deleted_at?: string | null;
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create input for Example entity
|
|
44
|
+
*/
|
|
45
|
+
export type ExampleCreateInput = Omit<ExampleDatabaseRow, 'id' | 'created_at' | 'updated_at' | 'deleted_at'>;
|
|
46
|
+
/**
|
|
47
|
+
* Update input for Example entity
|
|
48
|
+
*/
|
|
49
|
+
export type ExampleUpdateInput = Partial<Omit<ExampleDatabaseRow, 'id' | 'created_at'>>;
|
|
50
|
+
/**
|
|
51
|
+
* Example Repository
|
|
52
|
+
*
|
|
53
|
+
* Extends BaseRepository for consistent data access patterns.
|
|
54
|
+
* When DbService is not initialized, falls back to in-memory dummy data.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* // Create repository (auto-detects DbService availability)
|
|
59
|
+
* const repo = ExampleRepository.create();
|
|
60
|
+
*
|
|
61
|
+
* // Or with explicit database service
|
|
62
|
+
* const db = DbService.getInstance().getDatabase();
|
|
63
|
+
* const repo = new ExampleRepository(db);
|
|
64
|
+
*
|
|
65
|
+
* // Use CRUD operations
|
|
66
|
+
* const result = await repo.findById('example-001');
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare class ExampleRepository extends BaseRepository<ExampleDatabaseRow> {
|
|
70
|
+
private readonly useDummyData;
|
|
71
|
+
private dummyStore;
|
|
72
|
+
constructor(db: DatabaseServiceInterface, useDummyData?: boolean);
|
|
73
|
+
/**
|
|
74
|
+
* Create repository instance.
|
|
75
|
+
* Uses DbService if initialized, otherwise creates a dummy-data repository.
|
|
76
|
+
*/
|
|
77
|
+
static create(): ExampleRepository;
|
|
78
|
+
/**
|
|
79
|
+
* Find entity by ID
|
|
80
|
+
*/
|
|
81
|
+
findById(id: string, config?: OperationConfig): Promise<DatabaseResult<ExampleDatabaseRow | null>>;
|
|
82
|
+
/**
|
|
83
|
+
* Find multiple entities
|
|
84
|
+
*/
|
|
85
|
+
findMany(options?: QueryOptions<ExampleDatabaseRow>, config?: OperationConfig): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>>;
|
|
86
|
+
/**
|
|
87
|
+
* Create new entity
|
|
88
|
+
*/
|
|
89
|
+
create(data: Partial<ExampleDatabaseRow>, config?: OperationConfig): Promise<DatabaseResult<ExampleDatabaseRow>>;
|
|
90
|
+
/**
|
|
91
|
+
* Update entity
|
|
92
|
+
*/
|
|
93
|
+
update(id: string, data: Partial<ExampleDatabaseRow>, config?: OperationConfig): Promise<DatabaseResult<ExampleDatabaseRow>>;
|
|
94
|
+
/**
|
|
95
|
+
* Soft delete entity
|
|
96
|
+
*/
|
|
97
|
+
softDelete(id: string, config?: OperationConfig): Promise<DatabaseResult<void>>;
|
|
98
|
+
/**
|
|
99
|
+
* Hard delete entity
|
|
100
|
+
*/
|
|
101
|
+
delete(id: string, config?: OperationConfig): Promise<DatabaseResult<void>>;
|
|
102
|
+
/**
|
|
103
|
+
* Find entities by status
|
|
104
|
+
*/
|
|
105
|
+
findByStatus(status: string): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>>;
|
|
106
|
+
/**
|
|
107
|
+
* Find entities by owner
|
|
108
|
+
*/
|
|
109
|
+
findByOwner(ownerId: string): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>>;
|
|
110
|
+
/**
|
|
111
|
+
* Find visible entities only
|
|
112
|
+
*/
|
|
113
|
+
findVisible(): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>>;
|
|
114
|
+
/**
|
|
115
|
+
* Check if entity exists by ID
|
|
116
|
+
*/
|
|
117
|
+
exists(id: string, config?: OperationConfig): Promise<DatabaseResult<boolean>>;
|
|
118
|
+
/**
|
|
119
|
+
* Get the table name for this repository
|
|
120
|
+
* Used for transaction operations
|
|
121
|
+
*/
|
|
122
|
+
getTableName(): string;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=ExampleRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExampleRepository.d.ts","sourceRoot":"","sources":["../../../src/models/example/ExampleRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/example/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { type FeatureFlag, type FeatureFlagRule, type FeatureFlagValue, type CreateFlagRequest, type FeatureFlagContext } from '@plyaz/types';
|
|
10
10
|
import type { FeatureFlagKey } from '@domain/types';
|
|
11
|
+
import { type CoreFeatureFlagTableConfig } from '@plyaz/types/core';
|
|
11
12
|
/**
|
|
12
13
|
* Database Repository for Feature Flags
|
|
13
14
|
*
|
|
@@ -15,10 +16,10 @@ import type { FeatureFlagKey } from '@domain/types';
|
|
|
15
16
|
*
|
|
16
17
|
* **EXECUTION ORDER:**
|
|
17
18
|
* 1. FeatureFlagService.onModuleInit()
|
|
18
|
-
* 2. → FeatureFlagConfigFactory.
|
|
19
|
-
* 3. →
|
|
19
|
+
* 2. → FeatureFlagConfigFactory.fromOptions()
|
|
20
|
+
* 3. → DbService.initialize()
|
|
20
21
|
* 4. → **THIS REPOSITORY USED** ← YOU ARE HERE
|
|
21
|
-
* 5. → Database queries executed via
|
|
22
|
+
* 5. → Database queries executed via @plyaz/db
|
|
22
23
|
*
|
|
23
24
|
* **PURPOSE:**
|
|
24
25
|
* - Executes optimized SQL queries using Drizzle ORM
|
|
@@ -61,7 +62,42 @@ import type { FeatureFlagKey } from '@domain/types';
|
|
|
61
62
|
* ```
|
|
62
63
|
*/
|
|
63
64
|
export declare class FeatureFlagDatabaseRepository<TKey extends string = FeatureFlagKey> {
|
|
64
|
-
private
|
|
65
|
+
private readonly tableConfig;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a new repository with optional custom table names.
|
|
68
|
+
*
|
|
69
|
+
* @param tableConfig - Optional custom table configuration
|
|
70
|
+
*
|
|
71
|
+
* @example Default tables
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const repo = new FeatureFlagDatabaseRepository();
|
|
74
|
+
* // Uses: feature_flags, feature_flag_rules, feature_flag_evaluations, feature_flag_overrides
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example Custom test tables
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const repo = new FeatureFlagDatabaseRepository({
|
|
80
|
+
* flagsTable: 'test_feature_flags',
|
|
81
|
+
* rulesTable: 'test_feature_flag_rules',
|
|
82
|
+
* evaluationsTable: 'test_feature_flag_evaluations',
|
|
83
|
+
* overridesTable: 'test_feature_flag_overrides',
|
|
84
|
+
* evaluationsSchema: 'audit',
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
constructor(tableConfig?: Partial<CoreFeatureFlagTableConfig>);
|
|
89
|
+
/**
|
|
90
|
+
* Gets the current table configuration.
|
|
91
|
+
*/
|
|
92
|
+
getTableConfig(): CoreFeatureFlagTableConfig;
|
|
93
|
+
/**
|
|
94
|
+
* Gets the full table name including schema if needed.
|
|
95
|
+
*/
|
|
96
|
+
private getEvaluationsTableName;
|
|
97
|
+
/**
|
|
98
|
+
* Gets the database service from DbService singleton
|
|
99
|
+
*/
|
|
100
|
+
private getDb;
|
|
65
101
|
/**
|
|
66
102
|
* Retrieves all feature flags from the database with optional environment filtering
|
|
67
103
|
*
|
|
@@ -209,6 +245,12 @@ export declare class FeatureFlagDatabaseRepository<TKey extends string = Feature
|
|
|
209
245
|
*
|
|
210
246
|
*/
|
|
211
247
|
updateFlag(key: TKey, data: Partial<CreateFlagRequest<TKey>>): Promise<FeatureFlag<TKey>>;
|
|
248
|
+
/**
|
|
249
|
+
* Infers the type of a given value as a string for the type field
|
|
250
|
+
* @param value Unknown value
|
|
251
|
+
* @returns Inferred type as string
|
|
252
|
+
*/
|
|
253
|
+
private toTypeField;
|
|
212
254
|
/**
|
|
213
255
|
* Deletes a feature flag from the database
|
|
214
256
|
*
|
|
@@ -515,4 +557,4 @@ export declare class FeatureFlagDatabaseRepository<TKey extends string = Feature
|
|
|
515
557
|
*/
|
|
516
558
|
private mapToFeatureFlagRule;
|
|
517
559
|
}
|
|
518
|
-
//# sourceMappingURL=
|
|
560
|
+
//# sourceMappingURL=FeatureFlagRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureFlagRepository.d.ts","sourceRoot":"","sources":["../../../src/models/featureFlags/FeatureFlagRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/featureFlags/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Models/Repositories
|
|
3
|
+
*
|
|
4
|
+
* Centralized data access layer organized by domain.
|
|
5
|
+
* Repositories use DbService when initialized, fall back to dummy data otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export * from './example';
|
|
8
|
+
export * from './featureFlags';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { ApiClientWithEvents, ApiClientOptions } from '@plyaz/types/api';
|
|
11
11
|
import { type ClientEventManager, type EndpointsList } from '@plyaz/api';
|
|
12
|
-
import type {
|
|
12
|
+
import type { CoreApiEnvironmentConfig } from '@plyaz/types/core';
|
|
13
13
|
/**
|
|
14
14
|
* API Client Singleton Service
|
|
15
15
|
* Manages API client instance lifecycle with environment-specific configurations
|
|
@@ -55,7 +55,7 @@ export declare class ApiClientService {
|
|
|
55
55
|
* @param apiConfig - API configuration (baseURL, encryption, timeout, event handlers, etc.)
|
|
56
56
|
* @returns Promise that resolves to the initialized client
|
|
57
57
|
*/
|
|
58
|
-
static init(envConfig:
|
|
58
|
+
static init(envConfig: CoreApiEnvironmentConfig, apiConfig?: Partial<ApiClientOptions>): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>>;
|
|
59
59
|
/**
|
|
60
60
|
* Internal initialization logic
|
|
61
61
|
* Merges environment-specific defaults with API configuration
|
|
@@ -79,12 +79,100 @@ export declare class ApiClientService {
|
|
|
79
79
|
/**
|
|
80
80
|
* Reinitialize with new config and options
|
|
81
81
|
*/
|
|
82
|
-
static reinitialize(envConfig:
|
|
82
|
+
static reinitialize(envConfig: CoreApiEnvironmentConfig, apiConfig?: Partial<ApiClientOptions>): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>>;
|
|
83
83
|
/**
|
|
84
84
|
* Dispose of the client instance
|
|
85
85
|
*/
|
|
86
86
|
static dispose(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Emits an API error event via CoreEventManager.
|
|
89
|
+
* Called when API operations fail to integrate with global error handling.
|
|
90
|
+
*
|
|
91
|
+
* **CRITICAL**: This event emission triggers automatic error state updates.
|
|
92
|
+
* The global error store MUST subscribe to CORE_EVENTS.API.REQUEST_ERROR to:
|
|
93
|
+
* 1. Capture all API errors automatically
|
|
94
|
+
* 2. Update global error state for UI display
|
|
95
|
+
* 3. Ensure individual domain stores remain error-free (only domain data)
|
|
96
|
+
*
|
|
97
|
+
* This is the unified error hook that:
|
|
98
|
+
* - On frontend: Emits event that global error store subscribes to
|
|
99
|
+
* - On backend: Emits event for logging/monitoring (can be configured to rethrow)
|
|
100
|
+
*
|
|
101
|
+
* @param error - The error that occurred
|
|
102
|
+
* @param options - Additional context for the error
|
|
103
|
+
* @param options.method - HTTP method (GET, POST, etc.)
|
|
104
|
+
* @param options.url - Request URL
|
|
105
|
+
* @param options.requestId - Unique request identifier
|
|
106
|
+
* @param options.status - HTTP status code (if available)
|
|
107
|
+
* @param options.duration - Request duration in ms
|
|
108
|
+
* @param options.rethrow - Whether to rethrow the error after emitting (default: false)
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Global error store setup (in @plyaz/store)
|
|
113
|
+
* CoreEventManager.on(CORE_EVENTS.API.REQUEST_ERROR, (payload) => {
|
|
114
|
+
* errorStore.setError({
|
|
115
|
+
* message: payload.error.message,
|
|
116
|
+
* status: payload.status,
|
|
117
|
+
* url: payload.url,
|
|
118
|
+
* requestId: payload.requestId,
|
|
119
|
+
* });
|
|
120
|
+
* });
|
|
121
|
+
*
|
|
122
|
+
* // Frontend usage - emit to store
|
|
123
|
+
* ApiClientService.emitApiError(error, {
|
|
124
|
+
* method: 'GET',
|
|
125
|
+
* url: '/api/users',
|
|
126
|
+
* requestId: '123',
|
|
127
|
+
* duration: 500,
|
|
128
|
+
* });
|
|
129
|
+
*
|
|
130
|
+
* // Backend usage - emit and rethrow
|
|
131
|
+
* ApiClientService.emitApiError(error, {
|
|
132
|
+
* method: 'POST',
|
|
133
|
+
* url: '/api/orders',
|
|
134
|
+
* requestId: '456',
|
|
135
|
+
* duration: 1200,
|
|
136
|
+
* rethrow: true,
|
|
137
|
+
* });
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
static emitApiError(error: unknown, options: {
|
|
141
|
+
method: string;
|
|
142
|
+
url: string;
|
|
143
|
+
requestId: string;
|
|
144
|
+
status?: number;
|
|
145
|
+
duration: number;
|
|
146
|
+
rethrow?: boolean;
|
|
147
|
+
}): void;
|
|
148
|
+
/**
|
|
149
|
+
* Create a dedicated API client instance (NOT the singleton)
|
|
150
|
+
*
|
|
151
|
+
* Use this when you need an isolated client with its own configuration
|
|
152
|
+
* that doesn't affect or get affected by the shared singleton instance.
|
|
153
|
+
*
|
|
154
|
+
* @param envConfig - Environment metadata (env, apiKey)
|
|
155
|
+
* @param apiConfig - API configuration (baseURL, encryption, timeout, etc.)
|
|
156
|
+
* @returns Promise that resolves to a new dedicated client instance
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* // Create a dedicated client for feature flags service
|
|
161
|
+
* const flagsClient = await ApiClientService.createInstance(
|
|
162
|
+
* { env: 'production' },
|
|
163
|
+
* {
|
|
164
|
+
* baseURL: 'https://flags.example.com',
|
|
165
|
+
* timeout: 5000,
|
|
166
|
+
* }
|
|
167
|
+
* );
|
|
168
|
+
*
|
|
169
|
+
* // This client is independent from ApiClientService.getClient()
|
|
170
|
+
* flagsClient.updateConfig({ timeout: 3000 }); // Only affects this instance
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
static createInstance(envConfig: CoreApiEnvironmentConfig, apiConfig?: Partial<ApiClientOptions>): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>>;
|
|
87
174
|
}
|
|
88
175
|
export declare const getApiClient: () => ApiClientWithEvents<ClientEventManager, EndpointsList>;
|
|
89
|
-
export declare const initApiClient: (envConfig:
|
|
176
|
+
export declare const initApiClient: (envConfig: CoreApiEnvironmentConfig, apiConfig?: Partial<ApiClientOptions>) => Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>>;
|
|
177
|
+
export declare const createApiClientInstance: (envConfig: CoreApiEnvironmentConfig, apiConfig?: Partial<ApiClientOptions>) => Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>>;
|
|
90
178
|
//# sourceMappingURL=ApiClientService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiClientService.d.ts","sourceRoot":"","sources":["../../src/services/ApiClientService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAa,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAmB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiClientService.d.ts","sourceRoot":"","sources":["../../src/services/ApiClientService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAa,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAmB,MAAM,YAAY,CAAC;AAW1F,OAAO,KAAK,EAA8B,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AA+c9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuE;IAC9F,OAAO,CAAC,MAAM,CAAC,cAAc,CAAS;IACtC,OAAO,CAAC,MAAM,CAAC,WAAW,CAA8B;IAExD;;;;;;OAMG;WACU,IAAI,CACf,SAAS,EAAE,wBAAwB,EACnC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACpC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IA4BlE;;;;;;;;OAQG;mBAEkB,YAAY;IAuIjC;;;;OAIG;IACH,MAAM,CAAC,SAAS,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC;IAmB1E;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B;;OAEG;WACU,YAAY,CACvB,SAAS,EAAE,wBAAwB,EACnC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACpC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAKlE;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,IAAI;IAStB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,MAAM,CAAC,YAAY,CACjB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GACA,IAAI;IAkBP;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;WACU,cAAc,CACzB,SAAS,EAAE,wBAAwB,EACnC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACpC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;CA2CnE;AAGD,eAAO,MAAM,YAAY,QAAO,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CACvD,CAAC;AAE/B,eAAO,MAAM,aAAa,GACxB,WAAW,wBAAwB,EACnC,YAAY,OAAO,CAAC,gBAAgB,CAAC,KACpC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CACpB,CAAC;AAE9C,eAAO,MAAM,uBAAuB,GAClC,WAAW,wBAAwB,EACnC,YAAY,OAAO,CAAC,gBAAgB,CAAC,KACpC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CACV,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CacheService - Singleton Cache Manager
|
|
3
|
+
*
|
|
4
|
+
* @description Manages cache instance for the entire application using a singleton pattern.
|
|
5
|
+
* This service wraps the CacheManager from @plyaz/core/base/cache and provides a centralized
|
|
6
|
+
* way to initialize and access caching across all backend services.
|
|
7
|
+
*
|
|
8
|
+
* **Architecture:**
|
|
9
|
+
* - Supports multiple strategies: Memory (in-process), Redis (distributed)
|
|
10
|
+
* - Configurable TTL, key prefixing, and strategy-specific options
|
|
11
|
+
* - Singleton pattern ensures single cache instance across application
|
|
12
|
+
*
|
|
13
|
+
* **Strategy Configuration:**
|
|
14
|
+
* - **Memory**: In-process LRU cache, no external dependencies
|
|
15
|
+
* - **Redis**: Distributed cache using ioredis, requires Redis server
|
|
16
|
+
*
|
|
17
|
+
* **Required Environment Variables (Redis):**
|
|
18
|
+
* - REDIS_URL: Redis connection string (e.g., redis://localhost:6379)
|
|
19
|
+
* - Or REDIS_HOST, REDIS_PORT, REDIS_PASSWORD for individual config
|
|
20
|
+
*
|
|
21
|
+
* @example Using with Core.initialize() (Recommended)
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { Core } from '@plyaz/core';
|
|
24
|
+
*
|
|
25
|
+
* await Core.initialize({
|
|
26
|
+
* envPath: '.env',
|
|
27
|
+
* cache: {
|
|
28
|
+
* strategy: 'memory',
|
|
29
|
+
* isEnabled: true,
|
|
30
|
+
* ttl: 300, // 5 minutes default
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Access via Core.cache
|
|
35
|
+
* const cache = Core.cache.getCacheManager();
|
|
36
|
+
* await cache.set('user:123', userData, 600); // 10 minutes TTL
|
|
37
|
+
* const cached = await cache.get('user:123');
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example With Redis Strategy
|
|
41
|
+
* ```typescript
|
|
42
|
+
* await Core.initialize({
|
|
43
|
+
* envPath: '.env',
|
|
44
|
+
* cache: {
|
|
45
|
+
* strategy: 'redis',
|
|
46
|
+
* isEnabled: true,
|
|
47
|
+
* ttl: 300,
|
|
48
|
+
* prefix: 'myapp',
|
|
49
|
+
* redis: {
|
|
50
|
+
* url: process.env.REDIS_URL,
|
|
51
|
+
* // Or individual options:
|
|
52
|
+
* // host: process.env.REDIS_HOST,
|
|
53
|
+
* // port: parseInt(process.env.REDIS_PORT),
|
|
54
|
+
* // password: process.env.REDIS_PASSWORD,
|
|
55
|
+
* },
|
|
56
|
+
* },
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example Direct Usage
|
|
61
|
+
* ```typescript
|
|
62
|
+
* import { CacheService } from '@plyaz/core/services';
|
|
63
|
+
*
|
|
64
|
+
* await CacheService.initialize({
|
|
65
|
+
* strategy: 'memory',
|
|
66
|
+
* isEnabled: true,
|
|
67
|
+
* ttl: 300,
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* const cache = CacheService.getInstance().getCacheManager();
|
|
71
|
+
* await cache.set('key', value);
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @example Skip Cache (Disable Caching)
|
|
75
|
+
* ```typescript
|
|
76
|
+
* await Core.initialize({
|
|
77
|
+
* skipCache: true, // Cache will not be initialized
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @fileoverview Cache service singleton
|
|
82
|
+
* @module services/CacheService
|
|
83
|
+
*/
|
|
84
|
+
import { CacheManager } from '../base/cache';
|
|
85
|
+
import type { CoreCacheConfig } from '@plyaz/types/core';
|
|
86
|
+
/**
|
|
87
|
+
* Singleton service for managing application-wide cache
|
|
88
|
+
*
|
|
89
|
+
* Provides centralized access to cache functionality across all backend services.
|
|
90
|
+
* Automatically integrates with BaseBackendDomainService when initialized.
|
|
91
|
+
*/
|
|
92
|
+
export declare class CacheService {
|
|
93
|
+
/** Singleton instance */
|
|
94
|
+
private static instance;
|
|
95
|
+
/** Cache manager instance */
|
|
96
|
+
private cacheManager;
|
|
97
|
+
/** Configuration used to initialize cache */
|
|
98
|
+
private config;
|
|
99
|
+
/** Logger instance */
|
|
100
|
+
private logger;
|
|
101
|
+
/** Private constructor to enforce singleton */
|
|
102
|
+
private constructor();
|
|
103
|
+
/**
|
|
104
|
+
* Initialize the cache service with configuration
|
|
105
|
+
*
|
|
106
|
+
* @param config - Cache configuration
|
|
107
|
+
* @throws {CorePackageError} If already initialized or config is invalid
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* await CacheService.initialize({
|
|
112
|
+
* strategy: 'redis',
|
|
113
|
+
* isEnabled: true,
|
|
114
|
+
* ttl: 300,
|
|
115
|
+
* prefix: 'app',
|
|
116
|
+
* redis: { url: process.env.REDIS_URL },
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
static initialize(config: CoreCacheConfig): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Get the singleton instance
|
|
123
|
+
*
|
|
124
|
+
* @throws {CorePackageError} If not initialized
|
|
125
|
+
* @returns CacheService singleton instance
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const cacheService = CacheService.getInstance();
|
|
130
|
+
* const cache = cacheService.getCacheManager();
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
static getInstance(): CacheService;
|
|
134
|
+
/**
|
|
135
|
+
* Get the cache manager instance
|
|
136
|
+
*
|
|
137
|
+
* @throws {CorePackageError} If cache not initialized
|
|
138
|
+
* @returns CacheManager instance
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* const cache = CacheService.getInstance().getCacheManager();
|
|
143
|
+
* await cache.set('user:123', userData);
|
|
144
|
+
* const user = await cache.get('user:123');
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
getCacheManager(): CacheManager;
|
|
148
|
+
/**
|
|
149
|
+
* Get current cache configuration
|
|
150
|
+
*
|
|
151
|
+
* @returns Current cache configuration or null if not initialized
|
|
152
|
+
*/
|
|
153
|
+
getConfig(): CoreCacheConfig | null;
|
|
154
|
+
/**
|
|
155
|
+
* Check if cache is initialized and enabled
|
|
156
|
+
*
|
|
157
|
+
* @returns True if cache is ready to use
|
|
158
|
+
*/
|
|
159
|
+
isInitialized(): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Reset the cache service (useful for testing)
|
|
162
|
+
*
|
|
163
|
+
* @internal
|
|
164
|
+
*/
|
|
165
|
+
static reset(): void;
|
|
166
|
+
/**
|
|
167
|
+
* Validate cache configuration
|
|
168
|
+
*
|
|
169
|
+
* @param config - Configuration to validate
|
|
170
|
+
* @throws {CorePackageError} If configuration is invalid
|
|
171
|
+
* @private
|
|
172
|
+
*/
|
|
173
|
+
private validateConfig;
|
|
174
|
+
}
|
|
175
|
+
export declare const getCacheService: () => CacheService;
|
|
176
|
+
//# sourceMappingURL=CacheService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheService.d.ts","sourceRoot":"","sources":["../../src/services/CacheService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,yBAAyB;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAEpD,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAA6B;IAEjD,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAgC;IAE9C,sBAAsB;IACtB,OAAO,CAAC,MAAM,CAA+C;IAE7D,+CAA+C;IAC/C,OAAO;IAEP;;;;;;;;;;;;;;;;OAgBG;WACU,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C/D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,WAAW,IAAI,YAAY;IAUlC;;;;;;;;;;;;OAYG;IACH,eAAe,IAAI,YAAY;IAU/B;;;;OAIG;IACH,SAAS,IAAI,eAAe,GAAG,IAAI;IAInC;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;OAIG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAWpB;;;;;;OAMG;IAEH,OAAO,CAAC,cAAc;CA6BvB;AAGD,eAAO,MAAM,eAAe,QAAO,YAA0C,CAAC"}
|