@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 @@
|
|
|
1
|
+
{"version":3,"file":"error-handling-interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/interceptors/error-handling-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK5F,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC;;;;;;;;GAQG;AACH,qBACa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CAwB7E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* Interceptor for feature flag usage analytics.
|
|
5
|
+
*
|
|
6
|
+
* FLOW:
|
|
7
|
+
* 1. Runs AFTER middleware attaches feature flags.
|
|
8
|
+
* 2. Dynamically tracks which feature flags are enabled for this request.
|
|
9
|
+
* 3. Can send metrics to analytics service or database.
|
|
10
|
+
* 4. Calls the next handler (controller/service).
|
|
11
|
+
* 5. After controller/service finishes, optionally track request completion.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FeatureFlagLoggingInterceptor implements NestInterceptor {
|
|
14
|
+
private readonly logger;
|
|
15
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
16
|
+
private trackFeatureUsage;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=feature-flag-logging-interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flag-logging-interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/interceptors/feature-flag-logging-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAO,MAAM,MAAM,CAAC;AAEvC;;;;;;;;;GASG;AAEH,qBACa,6BAA8B,YAAW,eAAe;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;IA0B5E,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { NestMiddleware } from '@nestjs/common';
|
|
2
|
+
import { FeatureFlagService } from '@domain/featureFlags';
|
|
3
|
+
import type { FeatureFlagKey } from '@domain/types';
|
|
4
|
+
import type { CoreFeatureFlagRequest } from '@plyaz/types/core';
|
|
5
|
+
/**
|
|
6
|
+
* FeatureFlagMiddleware - Evaluates and attaches feature flags to every request
|
|
7
|
+
*
|
|
8
|
+
* @description This middleware runs early in the request lifecycle to evaluate feature flags
|
|
9
|
+
* and attach them to the request object. It allows controllers and services to access
|
|
10
|
+
* pre-evaluated flags without making additional service calls, improving performance.
|
|
11
|
+
*
|
|
12
|
+
* **Execution Flow:**
|
|
13
|
+
* 1. Middleware executes first for every incoming HTTP request
|
|
14
|
+
* 2. Extracts flag key from query params, headers, or uses default
|
|
15
|
+
* 3. Calls FeatureFlagService to evaluate the specified flag
|
|
16
|
+
* 4. Attaches evaluated flags to `req.featureFlags` object
|
|
17
|
+
* 5. Passes control to next middleware/interceptor/controller
|
|
18
|
+
*
|
|
19
|
+
* **Flag Key Priority:**
|
|
20
|
+
* 1. Query parameter: `?flag=FEATURE_NAME`
|
|
21
|
+
* 2. HTTP header: `X-Feature-Flag: FEATURE_NAME`
|
|
22
|
+
* 3. Default: `AUTH_GOOGLE`
|
|
23
|
+
*
|
|
24
|
+
* **Use Cases:**
|
|
25
|
+
* - Global feature flag evaluation for all requests
|
|
26
|
+
* - Performance optimization (evaluate once, use many times)
|
|
27
|
+
* - Request-scoped feature flag context
|
|
28
|
+
* - Dynamic flag selection via client parameters
|
|
29
|
+
*
|
|
30
|
+
* @example Setup - Register middleware globally
|
|
31
|
+
* ```typescript
|
|
32
|
+
* // app.module.ts
|
|
33
|
+
* import { MiddlewareConsumer, Module } from '@nestjs/common';
|
|
34
|
+
* import { FeatureFlagMiddleware } from './middleware/feature-flag-middleware';
|
|
35
|
+
*
|
|
36
|
+
* @Module({
|
|
37
|
+
* // ... other config
|
|
38
|
+
* })
|
|
39
|
+
* export class AppModule {
|
|
40
|
+
* configure(consumer: MiddlewareConsumer) {
|
|
41
|
+
* consumer
|
|
42
|
+
* .apply(FeatureFlagMiddleware)
|
|
43
|
+
* .forRoutes('*'); // Apply to all routes
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @example Client Usage - Query Parameter
|
|
49
|
+
* ```bash
|
|
50
|
+
* # Client specifies which flag to evaluate
|
|
51
|
+
* curl "https://api.example.com/users?flag=PREMIUM_FEATURES"
|
|
52
|
+
*
|
|
53
|
+
* # Middleware evaluates PREMIUM_FEATURES and attaches to request
|
|
54
|
+
* # req.featureFlags = { PREMIUM_FEATURES: true }
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example Client Usage - HTTP Header
|
|
58
|
+
* ```bash
|
|
59
|
+
* # Alternative: Use HTTP header
|
|
60
|
+
* curl -H "X-Feature-Flag: NEW_DASHBOARD" "https://api.example.com/dashboard"
|
|
61
|
+
*
|
|
62
|
+
* # Middleware evaluates NEW_DASHBOARD
|
|
63
|
+
* # req.featureFlags = { NEW_DASHBOARD: false }
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @example Controller Access - Use pre-evaluated flags
|
|
67
|
+
* ```typescript
|
|
68
|
+
* @Controller('api')
|
|
69
|
+
* export class ApiController {
|
|
70
|
+
* @Get('dashboard')
|
|
71
|
+
* async getDashboard(@Req() req: Request) {
|
|
72
|
+
* // Access pre-evaluated flags (no service call needed)
|
|
73
|
+
* const flags = req.featureFlags;
|
|
74
|
+
*
|
|
75
|
+
* if (flags?.NEW_DASHBOARD) {
|
|
76
|
+
* return this.dashboardService.getNewDashboard();
|
|
77
|
+
* } else {
|
|
78
|
+
* return this.dashboardService.getLegacyDashboard();
|
|
79
|
+
* }
|
|
80
|
+
* }
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example Service Access - Inject flags into services
|
|
85
|
+
* ```typescript
|
|
86
|
+
* @Injectable()
|
|
87
|
+
* export class UserService {
|
|
88
|
+
* async getUsers(@Req() req: Request) {
|
|
89
|
+
* const flags = req.featureFlags;
|
|
90
|
+
*
|
|
91
|
+
* // Use flags to modify service behavior
|
|
92
|
+
* if (flags?.ENHANCED_USER_DATA) {
|
|
93
|
+
* return this.getUsersWithEnhancedData();
|
|
94
|
+
* }
|
|
95
|
+
*
|
|
96
|
+
* return this.getBasicUsers();
|
|
97
|
+
* }
|
|
98
|
+
* }
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @example Error Handling - Invalid flag keys
|
|
102
|
+
* ```typescript
|
|
103
|
+
* // Request with invalid flag:
|
|
104
|
+
* // GET /api/users?flag=INVALID_FLAG
|
|
105
|
+
* //
|
|
106
|
+
* // Response:
|
|
107
|
+
* // HTTP 404 Not Found
|
|
108
|
+
* // {
|
|
109
|
+
* // "error": "Invalid feature flag key: INVALID_FLAG",
|
|
110
|
+
* // "statusCode": 404
|
|
111
|
+
* // }
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @example Multiple Flags - Accumulate flags across requests
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // First request adds AUTH_GOOGLE: true
|
|
117
|
+
* // Second request adds PREMIUM_FEATURES: false
|
|
118
|
+
* // req.featureFlags = {
|
|
119
|
+
* // AUTH_GOOGLE: true,
|
|
120
|
+
* // PREMIUM_FEATURES: false
|
|
121
|
+
* // }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare class FeatureFlagMiddleware implements NestMiddleware {
|
|
125
|
+
private readonly featureFlagService;
|
|
126
|
+
private readonly logger;
|
|
127
|
+
constructor(featureFlagService: FeatureFlagService<FeatureFlagKey>);
|
|
128
|
+
/**
|
|
129
|
+
* Main middleware execution method
|
|
130
|
+
*
|
|
131
|
+
* @description Processes incoming requests to evaluate and attach feature flags.
|
|
132
|
+
* Handles flag key extraction from multiple sources and graceful error handling.
|
|
133
|
+
*
|
|
134
|
+
* @param {CoreFeatureFlagRequest} req - Express request object with feature flag extensions
|
|
135
|
+
* @param {unknown} res - Express response object (not used in this middleware)
|
|
136
|
+
* @param {Function} next - Next middleware function in the chain
|
|
137
|
+
*
|
|
138
|
+
* @throws {BaseError} When flag key is invalid or evaluation fails
|
|
139
|
+
*
|
|
140
|
+
* @example Request Processing Flow
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // 1. Extract flag key from request
|
|
143
|
+
* const flagKey = req.query.flag || req.headers['x-feature-flag'] || 'AUTH_GOOGLE';
|
|
144
|
+
*
|
|
145
|
+
* // 2. Validate flag key exists in system
|
|
146
|
+
* if (!isFeatureFlagKey(flagKey)) {
|
|
147
|
+
* throw new Error('Invalid flag key');
|
|
148
|
+
* }
|
|
149
|
+
*
|
|
150
|
+
* // 3. Evaluate flag using service
|
|
151
|
+
* const evaluation = await this.featureFlagService.evaluateFlag(flagKey);
|
|
152
|
+
*
|
|
153
|
+
* // 4. Attach to request object
|
|
154
|
+
* req.featureFlags = { [flagKey]: evaluation.isEnabled };
|
|
155
|
+
*
|
|
156
|
+
* // 5. Continue to next middleware
|
|
157
|
+
* next();
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
use(req: CoreFeatureFlagRequest, res: unknown, next: (...args: unknown[]) => void): Promise<void>;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=feature-flag-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flag-middleware.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/middleware/feature-flag-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAU,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAwB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAShE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AACH,qBACa,qBAAsB,YAAW,cAAc;IAQxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAPrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;gBAIgB,kBAAkB,EAAE,kBAAkB,CAAC,cAAc,CAAC;IAGzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IAEG,GAAG,CACP,GAAG,EAAE,sBAAsB,EAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC;CAoCjB"}
|
package/dist/backend/index.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Backend Layer Exports
|
|
3
|
+
*
|
|
4
|
+
* NestJS-specific implementations.
|
|
5
|
+
* For framework-agnostic modules, use domain exports:
|
|
6
|
+
* - import { FeatureFlagModule } from '@plyaz/core/domain/featureFlags';
|
|
3
7
|
*/
|
|
8
|
+
export * from './example';
|
|
4
9
|
export * from './featureFlags';
|
|
5
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Key Builder Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides standardized methods for building cache keys with consistent patterns.
|
|
5
|
+
* All keys are designed to be prefixed by the service (handled by service layer).
|
|
6
|
+
*
|
|
7
|
+
* Key pattern: {prefix}:{type}:{identifier}:{params}
|
|
8
|
+
* Example: "example:entity:123" or "user:list:page:1"
|
|
9
|
+
*
|
|
10
|
+
* @fileoverview Cache key building utilities
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Cache key builder for standardized cache key generation.
|
|
14
|
+
*
|
|
15
|
+
* All methods return un-prefixed keys that should be prefixed by the service layer.
|
|
16
|
+
* This allows each service to namespace their cache keys.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // In a service with cachePrefix = 'user'
|
|
21
|
+
* const key = CacheKeyBuilder.entity('123');
|
|
22
|
+
* // Returns: "entity:123"
|
|
23
|
+
* // After service prefixing: "user:entity:123"
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class CacheKeyBuilder {
|
|
27
|
+
/**
|
|
28
|
+
* Build cache key for a single entity by ID
|
|
29
|
+
*
|
|
30
|
+
* @param id - Entity ID
|
|
31
|
+
* @returns Cache key (unprefixed)
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* CacheKeyBuilder.entity('123')
|
|
36
|
+
* // Returns: "entity:123"
|
|
37
|
+
* // With prefix "user": "user:entity:123"
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
static entity(id: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Build cache key for a list/collection query
|
|
43
|
+
*
|
|
44
|
+
* @param params - Query parameters (page, limit, filters, etc.)
|
|
45
|
+
* @returns Cache key (unprefixed)
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* CacheKeyBuilder.list({ page: 1, limit: 10 })
|
|
50
|
+
* // Returns: "list:limit:10:page:1"
|
|
51
|
+
* // With prefix: "user:list:limit:10:page:1"
|
|
52
|
+
*
|
|
53
|
+
* CacheKeyBuilder.list() // No params
|
|
54
|
+
* // Returns: "list:all"
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
static list(params?: Record<string, unknown>): string;
|
|
58
|
+
/**
|
|
59
|
+
* Build cache key for a named query/filter
|
|
60
|
+
*
|
|
61
|
+
* @param queryName - Name of the query (e.g., 'active', 'byStatus', 'search')
|
|
62
|
+
* @param params - Query parameters
|
|
63
|
+
* @returns Cache key (unprefixed)
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* CacheKeyBuilder.query('active', { status: 'published' })
|
|
68
|
+
* // Returns: "query:active:status:\"published\""
|
|
69
|
+
*
|
|
70
|
+
* CacheKeyBuilder.query('search', { q: 'hello', limit: 10 })
|
|
71
|
+
* // Returns: "query:search:limit:10:q:\"hello\""
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
static query(queryName: string, params?: Record<string, unknown>): string;
|
|
75
|
+
/**
|
|
76
|
+
* Build cache key for aggregate/count operations
|
|
77
|
+
*
|
|
78
|
+
* @param operation - Operation name (e.g., 'count', 'sum', 'avg')
|
|
79
|
+
* @param field - Field name (optional)
|
|
80
|
+
* @param params - Additional parameters (optional)
|
|
81
|
+
* @returns Cache key (unprefixed)
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* CacheKeyBuilder.aggregate('count')
|
|
86
|
+
* // Returns: "aggregate:count"
|
|
87
|
+
*
|
|
88
|
+
* CacheKeyBuilder.aggregate('sum', 'amount')
|
|
89
|
+
* // Returns: "aggregate:sum:amount"
|
|
90
|
+
*
|
|
91
|
+
* CacheKeyBuilder.aggregate('count', 'users', { status: 'active' })
|
|
92
|
+
* // Returns: "aggregate:count:users:status:\"active\""
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
static aggregate(operation: string, field?: string, params?: Record<string, unknown>): string;
|
|
96
|
+
/**
|
|
97
|
+
* Build a custom cache key with type and identifier
|
|
98
|
+
*
|
|
99
|
+
* @param type - Cache key type
|
|
100
|
+
* @param identifier - Unique identifier for this cache entry
|
|
101
|
+
* @param params - Additional parameters (optional)
|
|
102
|
+
* @returns Cache key (unprefixed)
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* CacheKeyBuilder.custom('session', 'abc123')
|
|
107
|
+
* // Returns: "session:abc123"
|
|
108
|
+
*
|
|
109
|
+
* CacheKeyBuilder.custom('report', 'monthly', { year: 2025, month: 1 })
|
|
110
|
+
* // Returns: "report:monthly:month:1:year:2025"
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
static custom(type: string, identifier: string, params?: Record<string, unknown>): string;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=CacheKeyBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheKeyBuilder.d.ts","sourceRoot":"","sources":["../../../src/base/cache/CacheKeyBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIjC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAWrD;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAUzE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAY7F;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAS1F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* Caching interceptor for feature flag responses.
|
|
5
|
+
*
|
|
6
|
+
* FLOW:
|
|
7
|
+
* 1. Runs AFTER middleware attaches dynamic feature flags.
|
|
8
|
+
* 2. Generates a cache key based on request URL and enabled flags.
|
|
9
|
+
* 3. If a cached response exists for this combination, returns it immediately.
|
|
10
|
+
* 4. Otherwise, calls the next handler and caches the response.
|
|
11
|
+
*/
|
|
12
|
+
export declare class Caching implements NestInterceptor {
|
|
13
|
+
private cache;
|
|
14
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=caching.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caching.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/feature/caching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAE3C;;;;;;;;GAQG;AACH,qBACa,OAAQ,YAAW,eAAe;IAE7C,OAAO,CAAC,KAAK,CAA8B;IAE3C,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CAmB7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAiB,WAAW,EAAc,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9F;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IAQX,OAAO,CAAC,MAAM;IAP1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;OAIG;gBACiB,MAAM,EAAE,WAAW;IAIvC;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe5C;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAexC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/strategies/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/base/cache/strategies/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAK5F;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAgB1C,OAAO,CAAC,MAAM;IAf1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACiB,MAAM,EAAE,gBAAgB;IAO5C;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAuBxD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBrC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;;;OAKG;YACW,eAAe;IAc7B;;;;;OAKG;YACW,mBAAmB;IA4BjC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Observability Adapter
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for all observability adapters.
|
|
5
|
+
* Provides common functionality and enforces the adapter interface.
|
|
6
|
+
*
|
|
7
|
+
* @module base/observability
|
|
8
|
+
*/
|
|
9
|
+
import { PackageLogger } from '@plyaz/logger';
|
|
10
|
+
import type { ObservabilityAdapter, ObservabilityAdapterConfig, ObservabilityProvider, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent } from '@plyaz/types/observability';
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for observability adapters.
|
|
13
|
+
*
|
|
14
|
+
* Provides common functionality:
|
|
15
|
+
* - Initialization lifecycle
|
|
16
|
+
* - Default tag management
|
|
17
|
+
* - Error handling
|
|
18
|
+
* - Logging
|
|
19
|
+
*
|
|
20
|
+
* Subclasses must implement provider-specific methods.
|
|
21
|
+
*/
|
|
22
|
+
export declare abstract class BaseAdapter implements ObservabilityAdapter {
|
|
23
|
+
abstract readonly provider: ObservabilityProvider;
|
|
24
|
+
abstract readonly name: string;
|
|
25
|
+
protected _isInitialized: boolean;
|
|
26
|
+
protected _config: ObservabilityAdapterConfig | null;
|
|
27
|
+
protected readonly logger: PackageLogger;
|
|
28
|
+
constructor();
|
|
29
|
+
get isInitialized(): boolean;
|
|
30
|
+
get config(): ObservabilityAdapterConfig | null;
|
|
31
|
+
initialize(config: ObservabilityAdapterConfig): Promise<void>;
|
|
32
|
+
shutdown(): Promise<void>;
|
|
33
|
+
isHealthy(): Promise<boolean>;
|
|
34
|
+
protected abstract doInitialize(config: ObservabilityAdapterConfig): Promise<void>;
|
|
35
|
+
protected abstract doShutdown(): Promise<void>;
|
|
36
|
+
protected abstract doHealthCheck(): Promise<boolean>;
|
|
37
|
+
recordMetric(metric: Metric): Promise<void>;
|
|
38
|
+
incrementCounter(name: string, value?: number, tags?: Record<string, string>): Promise<void>;
|
|
39
|
+
setGauge(name: string, value: number, tags?: Record<string, string>): Promise<void>;
|
|
40
|
+
recordHistogram(name: string, value: number, tags?: Record<string, string>): Promise<void>;
|
|
41
|
+
protected abstract doRecordMetric(metric: Metric): Promise<void>;
|
|
42
|
+
startSpan(options: SpanOptions): Span;
|
|
43
|
+
getActiveSpan(): Span | null;
|
|
44
|
+
withSpan<T>(options: SpanOptions, fn: (span: Span) => Promise<T>): Promise<T>;
|
|
45
|
+
protected abstract doStartSpan(options: SpanOptions): Span;
|
|
46
|
+
protected abstract doGetActiveSpan(): Span | null;
|
|
47
|
+
log(entry: LogEntry): Promise<void>;
|
|
48
|
+
protected abstract doLog(entry: LogEntry): Promise<void>;
|
|
49
|
+
sendEvent(event: ObservabilityEvent): Promise<void>;
|
|
50
|
+
protected abstract doSendEvent(event: ObservabilityEvent): Promise<void>;
|
|
51
|
+
flush(): Promise<void>;
|
|
52
|
+
protected abstract doFlush(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Apply default tags to a metric
|
|
55
|
+
*/
|
|
56
|
+
protected applyDefaultTags(metric: Metric): Metric;
|
|
57
|
+
/**
|
|
58
|
+
* Create a no-op span (for disabled/sampled-out traces)
|
|
59
|
+
*/
|
|
60
|
+
protected createNoopSpan(_options: SpanOptions): Span;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* No-op adapter that does nothing.
|
|
64
|
+
* Use when observability is disabled.
|
|
65
|
+
*/
|
|
66
|
+
export declare class NoopAdapter extends BaseAdapter {
|
|
67
|
+
readonly provider: "noop";
|
|
68
|
+
readonly name = "NoopAdapter";
|
|
69
|
+
protected doInitialize(): Promise<void>;
|
|
70
|
+
protected doShutdown(): Promise<void>;
|
|
71
|
+
protected doHealthCheck(): Promise<boolean>;
|
|
72
|
+
protected doRecordMetric(): Promise<void>;
|
|
73
|
+
protected doStartSpan(options: SpanOptions): Span;
|
|
74
|
+
protected doGetActiveSpan(): Span | null;
|
|
75
|
+
protected doLog(): Promise<void>;
|
|
76
|
+
protected doSendEvent(): Promise<void>;
|
|
77
|
+
protected doFlush(): Promise<void>;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=BaseAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAdapter.d.ts","sourceRoot":"","sources":["../../../src/base/observability/BaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite Adapter
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple observability providers running in parallel or priority (fallback) modes.
|
|
5
|
+
*
|
|
6
|
+
* - **Parallel mode**: Sends data to all adapters simultaneously
|
|
7
|
+
* - **Priority mode**: Tries first adapter, falls back to next on failure
|
|
8
|
+
*
|
|
9
|
+
* @module base/observability
|
|
10
|
+
*/
|
|
11
|
+
import type { ObservabilityAdapter, ObservabilityAdapterConfig, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent } from '@plyaz/types/observability';
|
|
12
|
+
/**
|
|
13
|
+
* Composite adapter that delegates to multiple child adapters.
|
|
14
|
+
*
|
|
15
|
+
* @example Parallel mode (send to all - e.g., Datadog + Console)
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const composite = new CompositeAdapter();
|
|
18
|
+
* await composite.initialize({
|
|
19
|
+
* mode: 'parallel',
|
|
20
|
+
* adapters: [datadogAdapter, loggerAdapter],
|
|
21
|
+
* failOnAnyError: false,
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example Priority mode (fallback chain)
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const composite = new CompositeAdapter();
|
|
28
|
+
* await composite.initialize({
|
|
29
|
+
* mode: 'priority',
|
|
30
|
+
* adapters: [datadogAdapter, grafanaAdapter, loggerAdapter],
|
|
31
|
+
* adapterTimeout: 5000,
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class CompositeAdapter implements ObservabilityAdapter {
|
|
36
|
+
readonly provider: "custom";
|
|
37
|
+
readonly name = "CompositeAdapter";
|
|
38
|
+
private _isInitialized;
|
|
39
|
+
private _config;
|
|
40
|
+
private adapters;
|
|
41
|
+
private mode;
|
|
42
|
+
private adapterTimeout;
|
|
43
|
+
private failOnAnyError;
|
|
44
|
+
private fallbackOnErrors;
|
|
45
|
+
private readonly logger;
|
|
46
|
+
constructor();
|
|
47
|
+
get isInitialized(): boolean;
|
|
48
|
+
initialize(config: ObservabilityAdapterConfig): Promise<void>;
|
|
49
|
+
shutdown(): Promise<void>;
|
|
50
|
+
isHealthy(): Promise<boolean>;
|
|
51
|
+
recordMetric(metric: Metric): Promise<void>;
|
|
52
|
+
incrementCounter(name: string, value?: number, tags?: Record<string, string>): Promise<void>;
|
|
53
|
+
setGauge(name: string, value: number, tags?: Record<string, string>): Promise<void>;
|
|
54
|
+
recordHistogram(name: string, value: number, tags?: Record<string, string>): Promise<void>;
|
|
55
|
+
startSpan(options: SpanOptions): Span;
|
|
56
|
+
getActiveSpan(): Span | null;
|
|
57
|
+
withSpan<T>(options: SpanOptions, fn: (span: Span) => Promise<T>): Promise<T>;
|
|
58
|
+
log(entry: LogEntry): Promise<void>;
|
|
59
|
+
sendEvent(event: ObservabilityEvent): Promise<void>;
|
|
60
|
+
flush(): Promise<void>;
|
|
61
|
+
private executeOnAdapters;
|
|
62
|
+
private executeParallel;
|
|
63
|
+
private executePriority;
|
|
64
|
+
private withTimeout;
|
|
65
|
+
/**
|
|
66
|
+
* Check if we should fallback on this error type
|
|
67
|
+
*/
|
|
68
|
+
private shouldFallbackOnError;
|
|
69
|
+
private createCompositeSpan;
|
|
70
|
+
private createNoopSpan;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=CompositeAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeAdapter.d.ts","sourceRoot":"","sources":["../../../src/base/observability/CompositeAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,MAAM,EACN,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAInB,MAAM,4BAA4B,CAAC;AAUpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,gBAAiB,YAAW,oBAAoB;IAC3D,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,QAAQ,CAAC,IAAI,sBAAsB;IAEnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;;IASvC,IAAI,aAAa,IAAI,OAAO,CAE3B;IAIK,UAAU,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C7D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAazB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB7B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAU,EACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC;IAMV,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhG,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IA2BrC,aAAa,IAAI,IAAI,GAAG,IAAI;IAUtB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmB7E,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnC,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,iBAAiB;YAoBjB,eAAe;YAyBf,eAAe;YAgCf,WAAW;IAgBzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;CAiBvB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Datadog Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapter for sending metrics, traces, and logs to Datadog.
|
|
5
|
+
*
|
|
6
|
+
* Automatically uses:
|
|
7
|
+
* 1. **SDK** (dd-trace, hot-shots) when available
|
|
8
|
+
* 2. **API Client** (from @plyaz/api) as fallback
|
|
9
|
+
* 3. **Logger** for local debugging when neither is available
|
|
10
|
+
*
|
|
11
|
+
* @module base/observability
|
|
12
|
+
*/
|
|
13
|
+
import type { ObservabilityAdapterConfig, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent, DatadogAdapterConfig } from '@plyaz/types/observability';
|
|
14
|
+
import { BaseAdapter } from './BaseAdapter';
|
|
15
|
+
/**
|
|
16
|
+
* Interface for Datadog API client.
|
|
17
|
+
* Implemented in @plyaz/api package with proper endpoint definitions.
|
|
18
|
+
*/
|
|
19
|
+
export interface DatadogApiClient {
|
|
20
|
+
submitMetrics(metrics: DatadogMetricPayload[]): Promise<void>;
|
|
21
|
+
submitLogs(logs: DatadogLogPayload[]): Promise<void>;
|
|
22
|
+
submitEvent(event: DatadogEventPayload): Promise<void>;
|
|
23
|
+
isHealthy?(): Promise<boolean>;
|
|
24
|
+
}
|
|
25
|
+
export interface DatadogMetricPayload {
|
|
26
|
+
metric: string;
|
|
27
|
+
type: 'count' | 'gauge' | 'rate';
|
|
28
|
+
points: Array<[number, number]>;
|
|
29
|
+
tags?: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface DatadogLogPayload {
|
|
32
|
+
ddsource?: string;
|
|
33
|
+
ddtags?: string;
|
|
34
|
+
service?: string;
|
|
35
|
+
message: string;
|
|
36
|
+
status: string;
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
export interface DatadogEventPayload {
|
|
40
|
+
title: string;
|
|
41
|
+
text: string;
|
|
42
|
+
tags?: string[];
|
|
43
|
+
date_happened?: number;
|
|
44
|
+
priority?: 'normal' | 'low';
|
|
45
|
+
alert_type?: 'error' | 'warning' | 'info' | 'success';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extended Datadog adapter configuration
|
|
49
|
+
*/
|
|
50
|
+
export interface DatadogAdapterConfigExtended extends DatadogAdapterConfig {
|
|
51
|
+
/**
|
|
52
|
+
* Datadog API client instance (from @plyaz/api).
|
|
53
|
+
* Used as fallback when SDK packages are not available.
|
|
54
|
+
*/
|
|
55
|
+
apiClient?: DatadogApiClient;
|
|
56
|
+
/**
|
|
57
|
+
* DogStatsD host for metrics (when using SDK)
|
|
58
|
+
* @default 'localhost'
|
|
59
|
+
*/
|
|
60
|
+
statsdHost?: string;
|
|
61
|
+
/**
|
|
62
|
+
* DogStatsD port for metrics (when using SDK)
|
|
63
|
+
* @default 8125
|
|
64
|
+
*/
|
|
65
|
+
statsdPort?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Datadog adapter for metrics, tracing, and logging.
|
|
69
|
+
*
|
|
70
|
+
* Automatically detects available integrations:
|
|
71
|
+
* - Uses dd-trace/hot-shots SDK when installed
|
|
72
|
+
* - Falls back to API client when SDK not available
|
|
73
|
+
* - Uses logger for debugging when neither is available
|
|
74
|
+
*
|
|
75
|
+
* @example Basic usage
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const datadog = new DatadogAdapter();
|
|
78
|
+
* await datadog.initialize({
|
|
79
|
+
* apiKey: process.env.DD_API_KEY,
|
|
80
|
+
* site: 'datadoghq.com',
|
|
81
|
+
* serviceName: 'my-service',
|
|
82
|
+
* environment: 'production',
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @example With API client fallback
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import { createDatadogClient } from '@plyaz/api/datadog';
|
|
89
|
+
*
|
|
90
|
+
* const datadog = new DatadogAdapter();
|
|
91
|
+
* await datadog.initialize({
|
|
92
|
+
* apiKey: process.env.DD_API_KEY,
|
|
93
|
+
* apiClient: createDatadogClient({ ... }),
|
|
94
|
+
* serviceName: 'my-service',
|
|
95
|
+
* });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare class DatadogAdapter extends BaseAdapter {
|
|
99
|
+
readonly provider: "datadog";
|
|
100
|
+
readonly name = "DatadogAdapter";
|
|
101
|
+
private datadogConfig;
|
|
102
|
+
private apiClient?;
|
|
103
|
+
private metricsClient;
|
|
104
|
+
private tracer;
|
|
105
|
+
protected doInitialize(config: ObservabilityAdapterConfig): Promise<void>;
|
|
106
|
+
private initializeSdk;
|
|
107
|
+
protected doShutdown(): Promise<void>;
|
|
108
|
+
protected doHealthCheck(): Promise<boolean>;
|
|
109
|
+
protected doRecordMetric(metric: Metric): Promise<void>;
|
|
110
|
+
protected doStartSpan(options: SpanOptions): Span;
|
|
111
|
+
private createStubSpan;
|
|
112
|
+
protected doGetActiveSpan(): Span | null;
|
|
113
|
+
protected doLog(entry: LogEntry): Promise<void>;
|
|
114
|
+
protected doSendEvent(event: ObservabilityEvent): Promise<void>;
|
|
115
|
+
protected doFlush(): Promise<void>;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=DatadogAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatadogAdapter.d.ts","sourceRoot":"","sources":["../../../src/base/observability/DatadogAdapter.ts"],"names":[],"mappings":"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"}
|