@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,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Adapters
|
|
3
|
+
*
|
|
4
|
+
* Adapters for different HTTP frameworks and runtimes.
|
|
5
|
+
*
|
|
6
|
+
* Available:
|
|
7
|
+
* - createHandler: Next.js API route handler with service injection
|
|
8
|
+
* - CoreModule: NestJS DI integration
|
|
9
|
+
*
|
|
10
|
+
* Types are available from '@plyaz/types/core':
|
|
11
|
+
* - CoreNextJsHandlerContext, CoreNextJsHandler, etc.
|
|
12
|
+
* - CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions
|
|
13
|
+
*/
|
|
14
|
+
export { createHandler, nextHandler } from './nextjs';
|
|
15
|
+
export { CoreModule, CORE_DB_SERVICE, CORE_ENV, CORE_OPTIONS } from './nestjs';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NestJS Framework Adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides CoreModule for NestJS dependency injection.
|
|
5
|
+
* Initializes core services (db, env) for use across NestJS modules.
|
|
6
|
+
*/
|
|
7
|
+
import type { DynamicModule } from '@nestjs/common';
|
|
8
|
+
import type { CoreDbServiceConfig } from '../services/DbService';
|
|
9
|
+
import type { CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions } from '@plyaz/types/core';
|
|
10
|
+
/**
|
|
11
|
+
* Core module options for NestJS
|
|
12
|
+
* Extended with specific DbServiceConfig type
|
|
13
|
+
*/
|
|
14
|
+
interface CoreModuleOptions extends Omit<CoreNestJsModuleOptions, 'db'> {
|
|
15
|
+
/** Database configuration */
|
|
16
|
+
db?: CoreDbServiceConfig;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Async options for CoreModule
|
|
20
|
+
* Extended with specific CoreModuleOptions type
|
|
21
|
+
*/
|
|
22
|
+
interface CoreModuleAsyncOptions extends Omit<CoreNestJsModuleAsyncOptions, 'useFactory'> {
|
|
23
|
+
useFactory: (...args: unknown[]) => CoreModuleOptions | Promise<CoreModuleOptions>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Injection tokens for Core services
|
|
27
|
+
*/
|
|
28
|
+
export declare const CORE_DB_SERVICE = "CORE_DB_SERVICE";
|
|
29
|
+
export declare const CORE_ENV = "CORE_ENV";
|
|
30
|
+
export declare const CORE_OPTIONS = "CORE_OPTIONS";
|
|
31
|
+
/**
|
|
32
|
+
* CoreModule for NestJS
|
|
33
|
+
*
|
|
34
|
+
* Provides Core services (DbService, etc.) via NestJS dependency injection.
|
|
35
|
+
* Import additional modules (FeatureFlagModule, etc.) separately.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { Module } from '@nestjs/common';
|
|
40
|
+
* import { CoreModule } from '@plyaz/core/adapters';
|
|
41
|
+
* import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';
|
|
42
|
+
*
|
|
43
|
+
* @Module({
|
|
44
|
+
* imports: [
|
|
45
|
+
* CoreModule.forRoot({ envPath: '.env' }),
|
|
46
|
+
* FeatureFlagModule.forRoot({ provider: 'database' }), // Auto-receives DbService
|
|
47
|
+
* ],
|
|
48
|
+
* })
|
|
49
|
+
* export class AppModule {}
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @example Async configuration
|
|
53
|
+
* ```typescript
|
|
54
|
+
* CoreModule.forRootAsync({
|
|
55
|
+
* imports: [ConfigModule],
|
|
56
|
+
* inject: [ConfigService],
|
|
57
|
+
* useFactory: (config: ConfigService) => ({
|
|
58
|
+
* db: {
|
|
59
|
+
* adapter: 'drizzle',
|
|
60
|
+
* drizzle: {
|
|
61
|
+
* connectionString: config.get('DATABASE_URL'),
|
|
62
|
+
* },
|
|
63
|
+
* },
|
|
64
|
+
* }),
|
|
65
|
+
* })
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare const CoreModule: {
|
|
69
|
+
/**
|
|
70
|
+
* Register CoreModule with static configuration
|
|
71
|
+
*/
|
|
72
|
+
forRoot(options?: CoreModuleOptions): DynamicModule;
|
|
73
|
+
/**
|
|
74
|
+
* Register CoreModule with async configuration
|
|
75
|
+
*/
|
|
76
|
+
forRootAsync(options: CoreModuleAsyncOptions): DynamicModule;
|
|
77
|
+
};
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=nestjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAG/F;;;GAGG;AACH,UAAU,iBAAkB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC;IACrE,6BAA6B;IAC7B,EAAE,CAAC,EAAE,mBAAmB,CAAC;CAC1B;AAED;;;GAGG;AACH,UAAU,sBAAuB,SAAQ,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;IACvF,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpF;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;sBACc,iBAAiB,GAAQ,aAAa;IAsCvD;;OAEG;0BACmB,sBAAsB,GAAG,aAAa;CAyC7D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js Adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for Next.js API routes with auto-initialization
|
|
5
|
+
* and service injection.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/users/route.ts
|
|
10
|
+
* import { createHandler } from '@plyaz/core/adapters';
|
|
11
|
+
*
|
|
12
|
+
* export const GET = createHandler(async ({ db, query }) => {
|
|
13
|
+
* const users = await db.list('users');
|
|
14
|
+
* return { users };
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* export const POST = createHandler(async ({ db, body }) => {
|
|
18
|
+
* const user = await db.create('users', body);
|
|
19
|
+
* return { user, status: 201 };
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import type { CoreNextJsHandler, CoreNextJsHandlerOptions } from '@plyaz/types/core';
|
|
24
|
+
export declare function createHandler(handler: CoreNextJsHandler, options?: CoreNextJsHandlerOptions): (request: Request, context?: {
|
|
25
|
+
params?: Record<string, string>;
|
|
26
|
+
}) => Promise<Response>;
|
|
27
|
+
export { createHandler as nextHandler };
|
|
28
|
+
//# sourceMappingURL=nextjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEV,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAgI3B,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,GACjC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAcxF;AAGD,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Controller
|
|
3
|
+
*
|
|
4
|
+
* Simple NestJS controller demonstrating Core + BackendExampleDomainService integration.
|
|
5
|
+
* Use as reference for building your own backend modules.
|
|
6
|
+
*
|
|
7
|
+
* Demonstrates:
|
|
8
|
+
* - Standard CRUD operations with error handling
|
|
9
|
+
* - Single error throwing (standard pattern)
|
|
10
|
+
* - Array error throwing (multiple validation errors)
|
|
11
|
+
* - Standard API response format using SuccessResponseStandard
|
|
12
|
+
* - How errors are automatically captured and returned as ErrorResponse
|
|
13
|
+
*/
|
|
14
|
+
import { BackendExampleDomainService } from '../../domain/example';
|
|
15
|
+
import type { ExampleEntity, CreateExampleDTO, PatchExampleDTO } from '@plyaz/types/examples';
|
|
16
|
+
import type { ReturnResponseType } from '@plyaz/types/errors';
|
|
17
|
+
export declare const BACKEND_EXAMPLE_DOMAIN_SERVICE = "BACKEND_EXAMPLE_DOMAIN_SERVICE";
|
|
18
|
+
/**
|
|
19
|
+
* Example Controller
|
|
20
|
+
*
|
|
21
|
+
* Routes:
|
|
22
|
+
* - GET /example/health - Health check
|
|
23
|
+
* - GET /example/entities/:id - Get entity by ID
|
|
24
|
+
* - POST /example/entities - Create entity
|
|
25
|
+
* - PATCH /example/entities/:id - Update entity
|
|
26
|
+
* - DELETE /example/entities/:id - Delete entity
|
|
27
|
+
* - POST /example/entities/validated - Create with full validation (array errors example)
|
|
28
|
+
* - GET /example/errors/single - Demo: Single error response
|
|
29
|
+
* - GET /example/errors/array - Demo: Array of errors response
|
|
30
|
+
*/
|
|
31
|
+
export declare class ExampleController {
|
|
32
|
+
private readonly exampleService;
|
|
33
|
+
constructor(exampleService: BackendExampleDomainService);
|
|
34
|
+
/**
|
|
35
|
+
* Health check endpoint
|
|
36
|
+
* GET /example/health
|
|
37
|
+
*/
|
|
38
|
+
health(): ReturnResponseType<{
|
|
39
|
+
service: boolean;
|
|
40
|
+
timestamp: string;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Get entity by ID
|
|
44
|
+
* GET /example/entities/:id
|
|
45
|
+
*/
|
|
46
|
+
getEntity(id: string): Promise<ReturnResponseType<ExampleEntity | null>>;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new entity
|
|
49
|
+
* POST /example/entities
|
|
50
|
+
*
|
|
51
|
+
* Example success response:
|
|
52
|
+
* ```json
|
|
53
|
+
* {
|
|
54
|
+
* "success": true,
|
|
55
|
+
* "message": "Entity created successfully",
|
|
56
|
+
* "data": { ... },
|
|
57
|
+
* "codeStatus": 201
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
createEntity(dto: CreateExampleDTO): Promise<ReturnResponseType<ExampleEntity>>;
|
|
62
|
+
/**
|
|
63
|
+
* Update an entity (partial)
|
|
64
|
+
* PATCH /example/entities/:id
|
|
65
|
+
*/
|
|
66
|
+
updateEntity(id: string, dto: PatchExampleDTO): Promise<ReturnResponseType<ExampleEntity>>;
|
|
67
|
+
/**
|
|
68
|
+
* Delete an entity
|
|
69
|
+
* DELETE /example/entities/:id
|
|
70
|
+
*/
|
|
71
|
+
deleteEntity(id: string): Promise<ReturnResponseType<null>>;
|
|
72
|
+
/**
|
|
73
|
+
* Create entity with full validation (array errors pattern)
|
|
74
|
+
* POST /example/entities/validated
|
|
75
|
+
*
|
|
76
|
+
* Demonstrates validator throwing validation errors.
|
|
77
|
+
* The validator.validateCreateOrThrow() will automatically throw all validation errors as an array.
|
|
78
|
+
*
|
|
79
|
+
* Example success response:
|
|
80
|
+
* ```json
|
|
81
|
+
* {
|
|
82
|
+
* "success": true,
|
|
83
|
+
* "message": "Entity created successfully",
|
|
84
|
+
* "data": { ... },
|
|
85
|
+
* "codeStatus": 201
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
createEntityWithValidation(dto: unknown): Promise<ReturnResponseType<ExampleEntity>>;
|
|
90
|
+
/**
|
|
91
|
+
* Demo: Single validation error response
|
|
92
|
+
* GET /example/errors/single
|
|
93
|
+
*
|
|
94
|
+
* Demonstrates validator throwing a SINGLE validation error.
|
|
95
|
+
* Service uses validateCreateOrThrow() with ONE invalid field.
|
|
96
|
+
*
|
|
97
|
+
* Response: HTTP 400
|
|
98
|
+
* ```json
|
|
99
|
+
* [{ "code": "VALIDATION_FAILED", "message": "Name is required", "field": "name" }]
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
demoSingleError(): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Demo: Multiple validation errors response
|
|
105
|
+
* GET /example/errors/array
|
|
106
|
+
*
|
|
107
|
+
* Demonstrates validator throwing MULTIPLE validation errors.
|
|
108
|
+
* Service uses validateCreateOrThrow() with MULTIPLE invalid fields.
|
|
109
|
+
*
|
|
110
|
+
* Response: HTTP 400
|
|
111
|
+
* ```json
|
|
112
|
+
* [
|
|
113
|
+
* { "code": "VALIDATION_FAILED", "message": "Name is required", "field": "name" },
|
|
114
|
+
* { "code": "VALIDATION_FAILED", "message": "Amount must be non-negative", "field": "amount" },
|
|
115
|
+
* { "code": "VALIDATION_FAILED", "message": "Description is required", "field": "description" }
|
|
116
|
+
* ]
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
demoArrayErrors(): Promise<void>;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=example.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/example/example.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,eAAO,MAAM,8BAA8B,mCAAmC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,2BAA2B;IAG9D;;;OAGG;IAEH,MAAM,IAAI,kBAAkB,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAOrE;;;OAGG;IAEG,SAAS,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAK3F;;;;;;;;;;;;;OAaG;IAGG,YAAY,CAAS,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAK7F;;;OAGG;IAEG,YAAY,CACH,EAAE,EAAE,MAAM,EACf,GAAG,EAAE,eAAe,GAC3B,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAK7C;;;OAGG;IAGG,YAAY,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAK9E;;;;;;;;;;;;;;;;OAgBG;IAGG,0BAA0B,CACtB,GAAG,EAAE,OAAO,GACnB,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAW7C;;;;;;;;;;;OAWG;IAEG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC;;;;;;;;;;;;;;;OAeG;IAEG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Module
|
|
3
|
+
*
|
|
4
|
+
* NestJS module demonstrating the proper pattern using domain service directly:
|
|
5
|
+
* Module → Controller → BackendExampleService
|
|
6
|
+
*
|
|
7
|
+
* The BackendExampleService is auto-initialized by Core.initialize() and
|
|
8
|
+
* can be injected via ServiceRegistry or provided directly to controllers.
|
|
9
|
+
*
|
|
10
|
+
* @example Usage in app.module.ts
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { CoreModule } from '@plyaz/core/nestjs';
|
|
13
|
+
* import { ExampleModule } from '@plyaz/core';
|
|
14
|
+
*
|
|
15
|
+
* @Module({
|
|
16
|
+
* imports: [
|
|
17
|
+
* CoreModule.forRoot({ envPath: '.env' }),
|
|
18
|
+
* ExampleModule,
|
|
19
|
+
* ],
|
|
20
|
+
* })
|
|
21
|
+
* export class AppModule {}
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { BACKEND_EXAMPLE_DOMAIN_SERVICE } from './example.controller';
|
|
25
|
+
import { BackendExampleDomainService } from '../../domain/example';
|
|
26
|
+
export declare class ExampleModule {
|
|
27
|
+
}
|
|
28
|
+
export { BackendExampleDomainService, BACKEND_EXAMPLE_DOMAIN_SERVICE };
|
|
29
|
+
//# sourceMappingURL=example.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.module.d.ts","sourceRoot":"","sources":["../../../src/backend/example/example.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAqB,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAA+B,MAAM,sBAAsB,CAAC;AAEhG,qBAYa,aAAa;CAAG;AAG7B,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Module Exports
|
|
3
|
+
*
|
|
4
|
+
* Pattern: Module → Controller → BackendExampleDomainService (from domain)
|
|
5
|
+
*/
|
|
6
|
+
export { ExampleModule, BACKEND_EXAMPLE_DOMAIN_SERVICE, BackendExampleDomainService, } from './example.module';
|
|
7
|
+
export { ExampleController } from './example.controller';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/example/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Domain Service (Backend)
|
|
3
|
+
*
|
|
4
|
+
* Backend-specific domain service that extends BaseDomainService and
|
|
5
|
+
* uses providers (database, redis, memory, etc.) to manage feature flags.
|
|
6
|
+
*
|
|
7
|
+
* Runtime: Backend only (uses providers, no API calls)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // Create service instance with a provider
|
|
12
|
+
* const provider = new DatabaseFeatureFlagProvider(config, FEATURES);
|
|
13
|
+
* await provider.initialize();
|
|
14
|
+
*
|
|
15
|
+
* const flagService = new FeatureFlagDomainService({
|
|
16
|
+
* enabled: true,
|
|
17
|
+
* provider,
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Use the service
|
|
21
|
+
* const isEnabled = await flagService.isEnabled('new-feature', { userId: 'user-123' });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import type { FeatureFlag, FeatureFlagRule, FeatureFlagContext, FeatureFlagValue, FeatureFlagEvaluation, CreateFlagRequest } from '@plyaz/types';
|
|
25
|
+
import { BaseDomainService } from '../../domain/base';
|
|
26
|
+
import type { FeatureFlagDomainServiceConfig as _FeatureFlagDomainServiceConfig, FeatureFlagDomainEventType } from '@plyaz/types/features';
|
|
27
|
+
/**
|
|
28
|
+
* Feature Flag Backend Service
|
|
29
|
+
*
|
|
30
|
+
* Extends BaseDomainService with generics for strong typing.
|
|
31
|
+
* Uses an injected provider (database, redis, memory, etc.) for data access.
|
|
32
|
+
*
|
|
33
|
+
* No mapper/validator as this service handles simple flag values.
|
|
34
|
+
* No API client - uses provider directly for data access.
|
|
35
|
+
*/
|
|
36
|
+
export declare class FeatureFlagDomainService extends BaseDomainService<_FeatureFlagDomainServiceConfig> {
|
|
37
|
+
/** The feature flag provider */
|
|
38
|
+
private readonly provider;
|
|
39
|
+
constructor(config: _FeatureFlagDomainServiceConfig);
|
|
40
|
+
/**
|
|
41
|
+
* Check if service is available
|
|
42
|
+
*/
|
|
43
|
+
isAvailable(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Dispose/cleanup the service
|
|
46
|
+
*/
|
|
47
|
+
dispose(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Refresh the provider cache
|
|
50
|
+
*/
|
|
51
|
+
refresh(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Evaluate a single feature flag
|
|
54
|
+
*
|
|
55
|
+
* @param key - Feature flag key
|
|
56
|
+
* @param context - Evaluation context (user, environment, etc.)
|
|
57
|
+
* @returns Full evaluation result
|
|
58
|
+
*/
|
|
59
|
+
evaluate(key: string, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<string>>;
|
|
60
|
+
/**
|
|
61
|
+
* Check if a feature flag is enabled
|
|
62
|
+
*
|
|
63
|
+
* @param key - Feature flag key
|
|
64
|
+
* @param context - Evaluation context
|
|
65
|
+
* @returns Boolean indicating if flag is enabled
|
|
66
|
+
*/
|
|
67
|
+
isEnabled(key: string, context?: FeatureFlagContext): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Get the value of a feature flag
|
|
70
|
+
*
|
|
71
|
+
* @param key - Feature flag key
|
|
72
|
+
* @param context - Evaluation context
|
|
73
|
+
* @returns The flag value
|
|
74
|
+
*/
|
|
75
|
+
getValue<T = FeatureFlagValue>(key: string, context?: FeatureFlagContext): Promise<T>;
|
|
76
|
+
/**
|
|
77
|
+
* Evaluate all feature flags for a context
|
|
78
|
+
*
|
|
79
|
+
* @param context - Evaluation context
|
|
80
|
+
* @returns Record of all flag evaluations
|
|
81
|
+
*/
|
|
82
|
+
evaluateAll(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<string>>>;
|
|
83
|
+
/**
|
|
84
|
+
* Create a new feature flag
|
|
85
|
+
*
|
|
86
|
+
* @param data - Flag creation data
|
|
87
|
+
* @returns The created feature flag
|
|
88
|
+
*/
|
|
89
|
+
create(data: CreateFlagRequest<string>): Promise<FeatureFlag<string>>;
|
|
90
|
+
/**
|
|
91
|
+
* Update an existing feature flag
|
|
92
|
+
*
|
|
93
|
+
* @param key - Flag key to update
|
|
94
|
+
* @param data - Partial update data
|
|
95
|
+
* @returns The updated feature flag
|
|
96
|
+
*/
|
|
97
|
+
update(key: string, data: Partial<CreateFlagRequest<string>>): Promise<FeatureFlag<string>>;
|
|
98
|
+
/**
|
|
99
|
+
* Delete a feature flag
|
|
100
|
+
*
|
|
101
|
+
* @param key - Flag key to delete
|
|
102
|
+
*/
|
|
103
|
+
delete(key: string): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Get rules for a specific flag
|
|
106
|
+
*
|
|
107
|
+
* @param key - Flag key
|
|
108
|
+
* @returns Array of rules
|
|
109
|
+
*/
|
|
110
|
+
getRules(key: string): Promise<FeatureFlagRule<string>[]>;
|
|
111
|
+
/**
|
|
112
|
+
* Get all rules
|
|
113
|
+
*
|
|
114
|
+
* @returns Array of all rules
|
|
115
|
+
*/
|
|
116
|
+
getAllRules(): Promise<FeatureFlagRule<string>[]>;
|
|
117
|
+
/**
|
|
118
|
+
* Set a runtime override for a flag (in-memory, not persisted)
|
|
119
|
+
*
|
|
120
|
+
* @param key - Flag key
|
|
121
|
+
* @param value - Override value
|
|
122
|
+
*/
|
|
123
|
+
setOverride(key: string, value: FeatureFlagValue): void;
|
|
124
|
+
/**
|
|
125
|
+
* Remove a runtime override for a flag
|
|
126
|
+
*
|
|
127
|
+
* @param key - Flag key
|
|
128
|
+
*/
|
|
129
|
+
removeOverride(key: string): void;
|
|
130
|
+
/**
|
|
131
|
+
* Clear all runtime overrides
|
|
132
|
+
*/
|
|
133
|
+
clearOverrides(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Subscribe to provider changes
|
|
136
|
+
*
|
|
137
|
+
* @param callback - Callback when flags change
|
|
138
|
+
* @returns Unsubscribe function
|
|
139
|
+
*/
|
|
140
|
+
subscribe(callback: () => void): () => void;
|
|
141
|
+
/**
|
|
142
|
+
* Subscribe to feature flag events
|
|
143
|
+
*
|
|
144
|
+
* @param event - Event type to subscribe to
|
|
145
|
+
* @param handler - Event handler
|
|
146
|
+
* @returns Unsubscribe function
|
|
147
|
+
*/
|
|
148
|
+
on(event: FeatureFlagDomainEventType, handler: (data: unknown) => void): () => void;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=FeatureFlagDomainService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureFlagDomainService.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/FeatureFlagDomainService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAQtD,OAAO,KAAK,EACV,8BAA8B,IAAI,+BAA+B,EACjE,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB,CAAC,+BAA+B,CAAC;IAC9F,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAM3C,MAAM,EAAE,+BAA+B;IA4BnD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;;;;OAMG;IACG,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAgBzC;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5E;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAM3F;;;;;OAKG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAiBzD;;;;;OAKG;IACG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgB3E;;;;;;OAMG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GACvC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgB/B;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAY/D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAgBvD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IASvD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASjC;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAS3C;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAGpF"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* Imports configuration from .env.local and provides validation.
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
import { type
|
|
8
|
+
import { type CoreFeatureFlagEnvironmentConfig } from '@plyaz/types/core';
|
|
9
|
+
import type { FeatureFlagConfigOptions as _FeatureFlagConfigOptions } from '@plyaz/types/features';
|
|
9
10
|
/**
|
|
10
11
|
* Feature flag configuration factory
|
|
11
12
|
*
|
|
@@ -15,7 +16,7 @@ import { type FeatureFlagEnvironmentConfig } from '@plyaz/types';
|
|
|
15
16
|
* @example
|
|
16
17
|
* ```typescript
|
|
17
18
|
* // Step 1: Called automatically by FeatureFlagService.onModuleInit()
|
|
18
|
-
* const config = FeatureFlagConfigFactory.
|
|
19
|
+
* const config = FeatureFlagConfigFactory.fromOptions({ environment: Core.env.NODE_ENV });
|
|
19
20
|
*
|
|
20
21
|
* // Step 2: Configuration is validated
|
|
21
22
|
* // Step 3: Provider is created with this config
|
|
@@ -48,64 +49,41 @@ export declare class FeatureFlagConfigFactory {
|
|
|
48
49
|
* 7. → Database connection established
|
|
49
50
|
*
|
|
50
51
|
* @returns Validated configuration object ready for provider creation
|
|
51
|
-
* @throws {FeatureFlagConfigError} If
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* ```typescript
|
|
55
|
-
* // This method reads from process.env and creates:
|
|
56
|
-
* {
|
|
57
|
-
* provider: 'database',
|
|
58
|
-
* isCacheEnabled: true,
|
|
59
|
-
* cacheTtl: 300,
|
|
60
|
-
* databaseConfig: {
|
|
61
|
-
* connectionString: 'https://your-project.supabase.co',
|
|
62
|
-
* tableName: 'feature_flags',
|
|
63
|
-
* poolSize: 10,
|
|
64
|
-
* timeout: 30000
|
|
65
|
-
* }
|
|
66
|
-
* }
|
|
67
|
-
* ```
|
|
52
|
+
* @throws {FeatureFlagConfigError} If required options are missing or invalid
|
|
68
53
|
*/
|
|
69
|
-
static fromEnvironment(): FeatureFlagEnvironmentConfig;
|
|
70
54
|
/**
|
|
71
|
-
*
|
|
55
|
+
* Creates configuration from explicit options
|
|
72
56
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*/
|
|
76
|
-
private static getProvider;
|
|
77
|
-
private static getCacheEnabled;
|
|
78
|
-
private static getCacheTtl;
|
|
79
|
-
private static getRefreshInterval;
|
|
80
|
-
private static getLoggingEnabled;
|
|
81
|
-
/**
|
|
82
|
-
* Creates database configuration from environment variables
|
|
57
|
+
* All options have sensible defaults - only provide what you need to override.
|
|
58
|
+
* Environment is automatically read from Core.env.NODE_ENV.
|
|
83
59
|
*
|
|
84
|
-
*
|
|
60
|
+
* Note: For 'database' provider, DbService must be initialized first via Core.initialize().
|
|
61
|
+
* The database provider uses the already-configured DbService, no connection string needed here.
|
|
85
62
|
*
|
|
86
|
-
* @
|
|
87
|
-
*
|
|
88
|
-
*
|
|
63
|
+
* @example Basic usage with defaults (memory provider)
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const config = FeatureFlagConfigFactory.fromOptions();
|
|
66
|
+
* // Uses memory provider, cache enabled, default TTL
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @example Database provider (requires Core.initialize() first)
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // First: Core.initialize() with db config
|
|
72
|
+
* await Core.initialize({ db: { adapter: 'sql', sql: { connectionString: '...' } } });
|
|
89
73
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* SUPABASE_URL=https://your-project.supabase.co # REQUIRED
|
|
93
|
-
* SUPABASE_ANON_PUBLIC_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Used in connection
|
|
94
|
-
* FEATURE_FLAG_TABLE_NAME=feature_flags # Optional, defaults to 'feature_flags'
|
|
95
|
-
* DB_POOL_SIZE=10 # Optional, defaults to 10
|
|
96
|
-
* DB_TIMEOUT=30000 # Optional, defaults to 30000ms
|
|
74
|
+
* // Then: Use database provider for feature flags
|
|
75
|
+
* const config = FeatureFlagConfigFactory.fromOptions({ provider: 'database' });
|
|
97
76
|
* ```
|
|
98
77
|
*
|
|
99
|
-
* @example
|
|
78
|
+
* @example Custom cache settings
|
|
100
79
|
* ```typescript
|
|
101
|
-
* {
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* }
|
|
80
|
+
* const config = FeatureFlagConfigFactory.fromOptions({
|
|
81
|
+
* cacheEnabled: true,
|
|
82
|
+
* cacheTtl: 600, // 10 minutes
|
|
83
|
+
* refreshInterval: 30,
|
|
84
|
+
* });
|
|
107
85
|
* ```
|
|
108
86
|
*/
|
|
109
|
-
|
|
87
|
+
static fromOptions(options?: _FeatureFlagConfigOptions): CoreFeatureFlagEnvironmentConfig;
|
|
110
88
|
}
|
|
111
89
|
//# sourceMappingURL=feature-flag.config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag.config.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/feature-flag.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"feature-flag.config.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/feature-flag.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,wBAAwB;IACnC;;;;;;;;;;;;;;;;OAgBG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IAEH,MAAM,CAAC,WAAW,CAAC,OAAO,GAAE,yBAA8B,GAAG,gCAAgC;CA+B9F"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Provides error reporting and environment-specific validation.
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
import { type
|
|
8
|
+
import { type CoreFeatureFlagEnvironmentConfig, type CoreFeatureFlagValidationResult } from '@plyaz/types/core';
|
|
9
9
|
/**
|
|
10
10
|
* FeatureFlagConfigValidator - Comprehensive configuration validation for feature flags
|
|
11
11
|
*
|
|
@@ -121,7 +121,7 @@ export declare class FeatureFlagConfigValidator {
|
|
|
121
121
|
* // ]
|
|
122
122
|
* ```
|
|
123
123
|
*/
|
|
124
|
-
static validate(config:
|
|
124
|
+
static validate(config: CoreFeatureFlagEnvironmentConfig): CoreFeatureFlagValidationResult;
|
|
125
125
|
private static validateProvider;
|
|
126
126
|
private static validateCacheSettings;
|
|
127
127
|
private static validateDatabaseConfig;
|
|
@@ -138,13 +138,13 @@ export declare class FeatureFlagConfigValidator {
|
|
|
138
138
|
* to ensure the system doesn't start with invalid configuration.
|
|
139
139
|
*
|
|
140
140
|
* @param {FeatureFlagEnvironmentConfig} config - Configuration to validate
|
|
141
|
-
* @throws {
|
|
141
|
+
* @throws {DatabasePackageError} When validation fails with detailed error messages
|
|
142
142
|
*
|
|
143
143
|
* @example Startup Validation
|
|
144
144
|
* ```typescript
|
|
145
145
|
* // In FeatureFlagService.onModuleInit()
|
|
146
146
|
* try {
|
|
147
|
-
* const config = FeatureFlagConfigFactory.
|
|
147
|
+
* const config = FeatureFlagConfigFactory.fromOptions();
|
|
148
148
|
* FeatureFlagConfigValidator.validateOrThrow(config);
|
|
149
149
|
*
|
|
150
150
|
* // Configuration is valid, proceed with initialization
|
|
@@ -158,7 +158,7 @@ export declare class FeatureFlagConfigValidator {
|
|
|
158
158
|
*
|
|
159
159
|
* @example Error Output
|
|
160
160
|
* ```typescript
|
|
161
|
-
* // When validation fails, throws
|
|
161
|
+
* // When validation fails, throws DatabasePackageError with message:
|
|
162
162
|
* // "Configuration validation failed:
|
|
163
163
|
* // provider: Invalid provider: invalid_type. Must be one of: memory, file, redis, api, database
|
|
164
164
|
* // cacheTtl: Cache TTL must be non-negative
|
|
@@ -176,6 +176,6 @@ export declare class FeatureFlagConfigValidator {
|
|
|
176
176
|
* # databaseConfig.connectionString: Database connection string is required"
|
|
177
177
|
* ```
|
|
178
178
|
*/
|
|
179
|
-
static validateOrThrow(config:
|
|
179
|
+
static validateOrThrow(config: CoreFeatureFlagEnvironmentConfig): void;
|
|
180
180
|
}
|
|
181
181
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAY3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,0BAA0B;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,GAAG,+BAA+B;IAiC1F,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAoBvC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAqC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gCAAgC,GAAG,IAAI;CAYvE"}
|