@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
|
@@ -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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flag Configuration
|
|
3
|
+
*
|
|
4
|
+
* Configuration integration for feature flags with environment variable support.
|
|
5
|
+
* Imports configuration from .env.local and provides validation.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
import { type CoreFeatureFlagEnvironmentConfig } from '@plyaz/types/core';
|
|
9
|
+
import type { FeatureFlagConfigOptions as _FeatureFlagConfigOptions } from '@plyaz/types/features';
|
|
10
|
+
/**
|
|
11
|
+
* Feature flag configuration factory
|
|
12
|
+
*
|
|
13
|
+
* This factory is the FIRST component called during application startup.
|
|
14
|
+
* It reads environment variables from .env.local and creates a validated configuration object.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Step 1: Called automatically by FeatureFlagService.onModuleInit()
|
|
19
|
+
* const config = FeatureFlagConfigFactory.fromOptions({ environment: Core.env.NODE_ENV });
|
|
20
|
+
*
|
|
21
|
+
* // Step 2: Configuration is validated
|
|
22
|
+
* // Step 3: Provider is created with this config
|
|
23
|
+
* const provider = FeatureFlagProviderFactory.create(config, FEATURES);
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example Environment Variables (.env.local)
|
|
27
|
+
* ```bash
|
|
28
|
+
* SUPABASE_URL=https://your-project.supabase.co
|
|
29
|
+
* SUPABASE_ANON_PUBLIC_KEY=your-anon-key
|
|
30
|
+
* FEATURE_FLAG_PROVIDER=database
|
|
31
|
+
* FEATURE_FLAG_CACHE_ENABLED=true
|
|
32
|
+
* FEATURE_FLAG_CACHE_TTL=300
|
|
33
|
+
* FEATURE_FLAG_TABLE_NAME=feature_flags
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare class FeatureFlagConfigFactory {
|
|
37
|
+
/**
|
|
38
|
+
* Creates configuration from environment variables
|
|
39
|
+
*
|
|
40
|
+
* **EXECUTION ORDER: This is called FIRST in the initialization chain**
|
|
41
|
+
*
|
|
42
|
+
* Flow:
|
|
43
|
+
* 1. NestJS starts → FeatureFlagModule loads
|
|
44
|
+
* 2. FeatureFlagService.onModuleInit() called
|
|
45
|
+
* 3. → initializeProvider() called
|
|
46
|
+
* 4. → **THIS METHOD CALLED** ← YOU ARE HERE
|
|
47
|
+
* 5. → Configuration validated
|
|
48
|
+
* 6. → Provider created and initialized
|
|
49
|
+
* 7. → Database connection established
|
|
50
|
+
*
|
|
51
|
+
* @returns Validated configuration object ready for provider creation
|
|
52
|
+
* @throws {FeatureFlagConfigError} If required options are missing or invalid
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* Creates configuration from explicit options
|
|
56
|
+
*
|
|
57
|
+
* All options have sensible defaults - only provide what you need to override.
|
|
58
|
+
* Environment is automatically read from Core.env.NODE_ENV.
|
|
59
|
+
*
|
|
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.
|
|
62
|
+
*
|
|
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: '...' } } });
|
|
73
|
+
*
|
|
74
|
+
* // Then: Use database provider for feature flags
|
|
75
|
+
* const config = FeatureFlagConfigFactory.fromOptions({ provider: 'database' });
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* @example Custom cache settings
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const config = FeatureFlagConfigFactory.fromOptions({
|
|
81
|
+
* cacheEnabled: true,
|
|
82
|
+
* cacheTtl: 600, // 10 minutes
|
|
83
|
+
* refreshInterval: 30,
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
static fromOptions(options?: _FeatureFlagConfigOptions): CoreFeatureFlagEnvironmentConfig;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=feature-flag.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|