@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,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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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Adapter
|
|
3
|
+
*
|
|
4
|
+
* Uses @plyaz/logger for observability output.
|
|
5
|
+
* Can be used standalone OR alongside other adapters (Datadog, Grafana)
|
|
6
|
+
* to always have console/file logging regardless of external providers.
|
|
7
|
+
*
|
|
8
|
+
* @example Standalone usage
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const logger = new LoggerAdapter();
|
|
11
|
+
* await logger.initialize({ serviceName: 'my-service' });
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @example As console fallback with Datadog
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const observability = new ObservabilityService({
|
|
17
|
+
* mode: 'parallel',
|
|
18
|
+
* adapters: [datadogAdapter, loggerAdapter], // Both receive all events
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @module base/observability
|
|
23
|
+
*/
|
|
24
|
+
import type { ObservabilityAdapterConfig, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent } from '@plyaz/types/observability';
|
|
25
|
+
import { BaseAdapter } from './BaseAdapter';
|
|
26
|
+
/**
|
|
27
|
+
* Logger adapter that uses @plyaz/logger for output.
|
|
28
|
+
*
|
|
29
|
+
* This adapter integrates observability with the existing logging infrastructure,
|
|
30
|
+
* providing structured logging for metrics, spans, and events through PackageLogger.
|
|
31
|
+
*
|
|
32
|
+
* Use this adapter:
|
|
33
|
+
* - As standalone for development/debugging
|
|
34
|
+
* - Alongside Datadog/Grafana to always have local console output
|
|
35
|
+
* - As a fallback in priority mode when external providers fail
|
|
36
|
+
*/
|
|
37
|
+
export declare class LoggerAdapter extends BaseAdapter {
|
|
38
|
+
readonly provider: "console";
|
|
39
|
+
readonly name = "LoggerAdapter";
|
|
40
|
+
private observabilityLogger;
|
|
41
|
+
private logMetrics;
|
|
42
|
+
private logSpans;
|
|
43
|
+
private logEvents;
|
|
44
|
+
protected doInitialize(config: ObservabilityAdapterConfig): Promise<void>;
|
|
45
|
+
protected doShutdown(): Promise<void>;
|
|
46
|
+
protected doHealthCheck(): Promise<boolean>;
|
|
47
|
+
protected doRecordMetric(metric: Metric): Promise<void>;
|
|
48
|
+
protected doStartSpan(options: SpanOptions): Span;
|
|
49
|
+
protected doGetActiveSpan(): Span | null;
|
|
50
|
+
protected doLog(entry: LogEntry): Promise<void>;
|
|
51
|
+
protected doSendEvent(event: ObservabilityEvent): Promise<void>;
|
|
52
|
+
protected doFlush(): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=LoggerAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerAdapter.d.ts","sourceRoot":"","sources":["../../../src/base/observability/LoggerAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EACV,0BAA0B,EAC1B,MAAM,EACN,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAMnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IACvC,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAQ;cAET,YAAY,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;cAiB/D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;cAI3B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;cAIjC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7D,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IA6EjD,SAAS,CAAC,eAAe,IAAI,IAAI,GAAG,IAAI;cAIxB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cA4BrC,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;cAUrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGzC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability Service
|
|
3
|
+
*
|
|
4
|
+
* Injectable service for observability (metrics, tracing, logging).
|
|
5
|
+
* Works like CacheManager, DatabaseService, and ApiClient - can be injected into domain services.
|
|
6
|
+
*
|
|
7
|
+
* Adapters are initialized separately with their own configs.
|
|
8
|
+
* This service only orchestrates - it doesn't know about adapter-specific configs.
|
|
9
|
+
*
|
|
10
|
+
* @module base/observability
|
|
11
|
+
*/
|
|
12
|
+
import type { ObservabilityAdapter, ObservabilityAdapterConfig, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent, OperationContext, MonitoringOperationResult, ObservabilityServiceConfig, ObservabilityServiceInterface } from '@plyaz/types/observability';
|
|
13
|
+
/**
|
|
14
|
+
* ObservabilityService - Main observability service that implements ObservabilityAdapter.
|
|
15
|
+
*
|
|
16
|
+
* This service orchestrates multiple adapters and can be injected into domain services.
|
|
17
|
+
* Logger adapter is always included by default for console output.
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // 1. Initialize adapters separately
|
|
21
|
+
* const datadogAdapter = new DatadogAdapter();
|
|
22
|
+
* await datadogAdapter.initialize({ apiKey: '...', serviceName: 'my-service' });
|
|
23
|
+
*
|
|
24
|
+
* // 2. Create service - logger is auto-added by default
|
|
25
|
+
* const observability = new ObservabilityService();
|
|
26
|
+
* await observability.initialize({
|
|
27
|
+
* mode: 'parallel',
|
|
28
|
+
* adapters: [datadogAdapter], // Logger added automatically
|
|
29
|
+
* serviceName: 'my-service',
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // 3. Use in domain services (implements ObservabilityAdapter)
|
|
33
|
+
* await observability.incrementCounter('api.requests', 1);
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare class ObservabilityService implements ObservabilityAdapter, ObservabilityServiceInterface {
|
|
37
|
+
readonly provider: "custom";
|
|
38
|
+
readonly name = "ObservabilityService";
|
|
39
|
+
private _isInitialized;
|
|
40
|
+
private _config;
|
|
41
|
+
private readonly logger;
|
|
42
|
+
private readonly adapterEntries;
|
|
43
|
+
private mode;
|
|
44
|
+
private readonly noopAdapter;
|
|
45
|
+
private loggerAdapter;
|
|
46
|
+
constructor();
|
|
47
|
+
get isInitialized(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if service has at least one working adapter
|
|
50
|
+
*/
|
|
51
|
+
get isReady(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Get all adapters (for compatibility)
|
|
54
|
+
*/
|
|
55
|
+
private get adapters();
|
|
56
|
+
/**
|
|
57
|
+
* Get initialized adapter entries
|
|
58
|
+
*/
|
|
59
|
+
private get initializedEntries();
|
|
60
|
+
/**
|
|
61
|
+
* Get primary (non-failover) initialized adapters
|
|
62
|
+
*/
|
|
63
|
+
private get primaryEntries();
|
|
64
|
+
/**
|
|
65
|
+
* Get failover initialized adapters
|
|
66
|
+
*/
|
|
67
|
+
private get failoverEntries();
|
|
68
|
+
/**
|
|
69
|
+
* Check if input is an adapter with priority config
|
|
70
|
+
*/
|
|
71
|
+
private isAdapterWithPriority;
|
|
72
|
+
/**
|
|
73
|
+
* Normalize adapter input to adapter with priority and failover config
|
|
74
|
+
*/
|
|
75
|
+
private normalizeAdapter;
|
|
76
|
+
/**
|
|
77
|
+
* Initialize the observability service.
|
|
78
|
+
* Logger adapter is always added by default unless explicitly disabled.
|
|
79
|
+
* Adapters are sorted by priority (higher = first), with failover adapters after primary.
|
|
80
|
+
*/
|
|
81
|
+
initialize(config: ObservabilityAdapterConfig & ObservabilityServiceConfig): Promise<void>;
|
|
82
|
+
shutdown(): Promise<void>;
|
|
83
|
+
isHealthy(): Promise<boolean>;
|
|
84
|
+
flush(): Promise<void>;
|
|
85
|
+
private get config();
|
|
86
|
+
private executeOnAdapters;
|
|
87
|
+
private executeSingle;
|
|
88
|
+
/**
|
|
89
|
+
* Execute on primary adapters in parallel.
|
|
90
|
+
* If all primary adapters fail, execute on failover adapters.
|
|
91
|
+
*/
|
|
92
|
+
private executeParallelWithFailover;
|
|
93
|
+
private executeParallel;
|
|
94
|
+
/**
|
|
95
|
+
* Execute on primary adapters in priority order.
|
|
96
|
+
* If all primary adapters fail, try failover adapters.
|
|
97
|
+
*/
|
|
98
|
+
private executePriorityWithFailover;
|
|
99
|
+
private withTimeout;
|
|
100
|
+
recordMetric(metric: Metric): Promise<void>;
|
|
101
|
+
incrementCounter(name: string, value?: number, tags?: Record<string, string>): Promise<void>;
|
|
102
|
+
setGauge(name: string, value: number, tags?: Record<string, string>): Promise<void>;
|
|
103
|
+
recordHistogram(name: string, value: number, tags?: Record<string, string>): Promise<void>;
|
|
104
|
+
startSpan(options: SpanOptions): Span;
|
|
105
|
+
withSpan<T>(options: SpanOptions, fn: (span: Span) => Promise<T>): Promise<T>;
|
|
106
|
+
getActiveSpan(): Span | null;
|
|
107
|
+
log(entry: LogEntry): Promise<void>;
|
|
108
|
+
sendEvent(event: ObservabilityEvent): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Track a service operation with automatic metrics and tracing.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const { result, metrics } = await observability.trackOperation(
|
|
115
|
+
* {
|
|
116
|
+
* serviceName: 'UserService',
|
|
117
|
+
* operation: 'create',
|
|
118
|
+
* entityType: 'user',
|
|
119
|
+
* startTime: Date.now(),
|
|
120
|
+
* },
|
|
121
|
+
* async () => {
|
|
122
|
+
* return await this.repository.create(userData);
|
|
123
|
+
* }
|
|
124
|
+
* );
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
trackOperation<T>(context: OperationContext, operation: () => Promise<T>): Promise<{
|
|
128
|
+
result: T;
|
|
129
|
+
metrics: MonitoringOperationResult;
|
|
130
|
+
}>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create an ObservabilityService with pre-initialized adapters.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* // Initialize adapters first
|
|
138
|
+
* const datadogAdapter = new DatadogAdapter();
|
|
139
|
+
* await datadogAdapter.initialize({ apiKey: '...', serviceName: 'my-service' });
|
|
140
|
+
*
|
|
141
|
+
* // Create and initialize service (logger auto-added)
|
|
142
|
+
* const observability = await createObservabilityService({
|
|
143
|
+
* mode: 'parallel',
|
|
144
|
+
* adapters: [datadogAdapter],
|
|
145
|
+
* serviceName: 'my-service',
|
|
146
|
+
* });
|
|
147
|
+
*
|
|
148
|
+
* // Priority mode (fallback chain)
|
|
149
|
+
* const observability = await createObservabilityService({
|
|
150
|
+
* mode: 'priority',
|
|
151
|
+
* adapters: [datadogAdapter, grafanaAdapter],
|
|
152
|
+
* serviceName: 'my-service',
|
|
153
|
+
* });
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export declare function createObservabilityService(config?: ObservabilityServiceConfig & {
|
|
157
|
+
serviceName?: string;
|
|
158
|
+
environment?: string;
|
|
159
|
+
}): Promise<ObservabilityService>;
|
|
160
|
+
//# sourceMappingURL=ObservabilityService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservabilityService.d.ts","sourceRoot":"","sources":["../../../src/base/observability/ObservabilityService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability Module
|
|
3
|
+
*
|
|
4
|
+
* Adapter-based observability system supporting multiple providers
|
|
5
|
+
* (Datadog, Grafana, OpenTelemetry, etc.) with parallel and priority modes.
|
|
6
|
+
*
|
|
7
|
+
* @module base/observability
|
|
8
|
+
*/
|
|
9
|
+
export { BaseAdapter, NoopAdapter } from './BaseAdapter';
|
|
10
|
+
export { LoggerAdapter } from './LoggerAdapter';
|
|
11
|
+
export { CompositeAdapter } from './CompositeAdapter';
|
|
12
|
+
export { DatadogAdapter } from './DatadogAdapter';
|
|
13
|
+
export type { DatadogApiClient, DatadogMetricPayload, DatadogLogPayload, DatadogEventPayload, DatadogAdapterConfigExtended, } from './DatadogAdapter';
|
|
14
|
+
export { ObservabilityService, createObservabilityService } from './ObservabilityService';
|
|
15
|
+
export type { ObservabilityAdapter, ObservabilityAdapterConfig, ObservabilityProvider, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent, SpanContext, SpanAttributes, SpanEvent, SpanStatus, DatadogAdapterConfig, OpenTelemetryAdapterConfig, GrafanaAdapterConfig, ConsoleAdapterConfig, CompositeMode, CompositeAdapterConfig, OperationContext, MonitoringOperationResult, AdapterWithPriority, AdapterEntry, ObservabilityServiceConfig, ObservabilityServiceInterface, } from '@plyaz/types/observability';
|
|
16
|
+
export { OBSERVABILITY_METRICS, OBSERVABILITY_SPANS } from '@plyaz/types/observability';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/observability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAG1F,YAAY,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,MAAM,EACN,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
|