@plyaz/core 1.2.0 → 1.3.0

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.
Files changed (240) hide show
  1. package/README.md +248 -183
  2. package/dist/adapters/index.d.ts +16 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/nestjs.d.ts +79 -0
  5. package/dist/adapters/nestjs.d.ts.map +1 -0
  6. package/dist/adapters/nextjs.d.ts +28 -0
  7. package/dist/adapters/nextjs.d.ts.map +1 -0
  8. package/dist/backend/example/example.controller.d.ts +121 -0
  9. package/dist/backend/example/example.controller.d.ts.map +1 -0
  10. package/dist/backend/example/example.module.d.ts +29 -0
  11. package/dist/backend/example/example.module.d.ts.map +1 -0
  12. package/dist/backend/example/index.d.ts +8 -0
  13. package/dist/backend/example/index.d.ts.map +1 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  15. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
  17. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
  18. package/dist/backend/featureFlags/config/validation.d.ts +6 -6
  19. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
  20. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
  21. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  22. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
  23. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  24. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
  25. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
  26. package/dist/backend/featureFlags/index.d.ts +6 -7
  27. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  28. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
  30. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
  31. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
  32. package/dist/backend/index.d.ts +5 -0
  33. package/dist/backend/index.d.ts.map +1 -1
  34. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  35. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  36. package/dist/base/cache/index.d.ts +1 -0
  37. package/dist/base/cache/index.d.ts.map +1 -1
  38. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  39. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  40. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  41. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  42. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  43. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  44. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  45. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  46. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  47. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  48. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  49. package/dist/base/observability/index.d.ts +17 -0
  50. package/dist/base/observability/index.d.ts.map +1 -0
  51. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  52. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  53. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  54. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  55. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  56. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  57. package/dist/domain/base/BaseMapper.d.ts +100 -0
  58. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  59. package/dist/domain/base/BaseValidator.d.ts +105 -0
  60. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  61. package/dist/domain/base/index.d.ts +10 -0
  62. package/dist/domain/base/index.d.ts.map +1 -0
  63. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  64. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  65. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  66. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  67. package/dist/domain/example/index.d.ts +10 -0
  68. package/dist/domain/example/index.d.ts.map +1 -0
  69. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  70. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  71. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  72. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  73. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  74. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  75. package/dist/domain/featureFlags/index.d.ts +10 -5
  76. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  77. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  78. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  79. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  80. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  81. package/dist/domain/featureFlags/module.d.ts +20 -0
  82. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  83. package/dist/domain/featureFlags/provider.d.ts +40 -1
  84. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  85. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  86. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  87. package/dist/domain/featureFlags/providers/database.d.ts +54 -47
  88. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  89. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  90. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  91. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  92. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  93. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  94. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  95. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  96. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  97. package/dist/domain/featureFlags/service.d.ts +112 -0
  98. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  99. package/dist/domain/index.d.ts +2 -0
  100. package/dist/domain/index.d.ts.map +1 -1
  101. package/dist/engine/featureFlags/engine.d.ts +8 -0
  102. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  103. package/dist/entry-backend.d.ts +26 -0
  104. package/dist/entry-backend.d.ts.map +1 -0
  105. package/dist/entry-backend.js +15455 -0
  106. package/dist/entry-backend.js.map +1 -0
  107. package/dist/entry-backend.mjs +15339 -0
  108. package/dist/entry-backend.mjs.map +1 -0
  109. package/dist/entry-frontend.d.ts +23 -0
  110. package/dist/entry-frontend.d.ts.map +1 -0
  111. package/dist/entry-frontend.js +11340 -0
  112. package/dist/entry-frontend.js.map +1 -0
  113. package/dist/entry-frontend.mjs +11278 -0
  114. package/dist/entry-frontend.mjs.map +1 -0
  115. package/dist/events/CoreEventManager.d.ts +116 -0
  116. package/dist/events/CoreEventManager.d.ts.map +1 -0
  117. package/dist/events/index.d.ts +27 -0
  118. package/dist/events/index.d.ts.map +1 -0
  119. package/dist/frontend/base/index.d.ts +8 -0
  120. package/dist/frontend/base/index.d.ts.map +1 -0
  121. package/dist/frontend/components/InitializationError.d.ts +25 -0
  122. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  123. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  124. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  125. package/dist/frontend/components/index.d.ts +9 -0
  126. package/dist/frontend/components/index.d.ts.map +1 -0
  127. package/dist/frontend/example/index.d.ts +9 -0
  128. package/dist/frontend/example/index.d.ts.map +1 -0
  129. package/dist/frontend/featureFlags/index.d.ts +28 -7
  130. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  131. package/dist/frontend/index.d.ts +4 -0
  132. package/dist/frontend/index.d.ts.map +1 -1
  133. package/dist/frontend/providers/ApiProvider.d.ts +2 -2
  134. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
  135. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  136. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  137. package/dist/frontend/providers/index.d.ts +1 -0
  138. package/dist/frontend/providers/index.d.ts.map +1 -1
  139. package/dist/frontend/store/feature-flags.d.ts +63 -0
  140. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  141. package/dist/frontend/store/index.d.ts +14 -0
  142. package/dist/frontend/store/index.d.ts.map +1 -0
  143. package/dist/frontend/store/integrations.d.ts +36 -0
  144. package/dist/frontend/store/integrations.d.ts.map +1 -0
  145. package/dist/frontend/store/service-accessors.d.ts +78 -0
  146. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  147. package/dist/index.d.ts +5 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +15262 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/index.mjs +13667 -4861
  152. package/dist/index.mjs.map +1 -1
  153. package/dist/init/CoreInitializer.d.ts +583 -0
  154. package/dist/init/CoreInitializer.d.ts.map +1 -0
  155. package/dist/init/ServiceRegistry.d.ts +256 -0
  156. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  157. package/dist/init/index.d.ts +14 -0
  158. package/dist/init/index.d.ts.map +1 -0
  159. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  160. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  161. package/dist/init/nestjs/index.d.ts +5 -0
  162. package/dist/init/nestjs/index.d.ts.map +1 -0
  163. package/dist/init/nestjs/index.js +9234 -0
  164. package/dist/init/nestjs/index.js.map +1 -0
  165. package/dist/init/nestjs/index.mjs +9230 -0
  166. package/dist/init/nestjs/index.mjs.map +1 -0
  167. package/dist/init/react.d.ts +33 -0
  168. package/dist/init/react.d.ts.map +1 -0
  169. package/dist/models/example/ExampleRepository.d.ts +166 -0
  170. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  171. package/dist/models/example/index.d.ts +7 -0
  172. package/dist/models/example/index.d.ts.map +1 -0
  173. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +161 -0
  174. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  175. package/dist/models/featureFlags/index.d.ts +7 -0
  176. package/dist/models/featureFlags/index.d.ts.map +1 -0
  177. package/dist/models/index.d.ts +9 -0
  178. package/dist/models/index.d.ts.map +1 -0
  179. package/dist/services/ApiClientService.d.ts +92 -4
  180. package/dist/services/ApiClientService.d.ts.map +1 -1
  181. package/dist/services/CacheService.d.ts +176 -0
  182. package/dist/services/CacheService.d.ts.map +1 -0
  183. package/dist/services/DbService.d.ts +393 -0
  184. package/dist/services/DbService.d.ts.map +1 -0
  185. package/dist/services/NotificationService.d.ts +153 -0
  186. package/dist/services/NotificationService.d.ts.map +1 -0
  187. package/dist/services/StorageService.d.ts +146 -0
  188. package/dist/services/StorageService.d.ts.map +1 -0
  189. package/dist/services/index.d.ts +4 -0
  190. package/dist/services/index.d.ts.map +1 -1
  191. package/dist/utils/common/id.d.ts +83 -0
  192. package/dist/utils/common/id.d.ts.map +1 -0
  193. package/dist/utils/common/index.d.ts +2 -0
  194. package/dist/utils/common/index.d.ts.map +1 -1
  195. package/dist/utils/common/object.d.ts +70 -0
  196. package/dist/utils/common/object.d.ts.map +1 -0
  197. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  198. package/dist/utils/featureFlags/context.d.ts +0 -1
  199. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  200. package/dist/utils/index.d.ts +1 -0
  201. package/dist/utils/index.d.ts.map +1 -1
  202. package/dist/utils/mapperUtils.d.ts +38 -0
  203. package/dist/utils/mapperUtils.d.ts.map +1 -0
  204. package/dist/utils/runtime.d.ts +15 -0
  205. package/dist/utils/runtime.d.ts.map +1 -0
  206. package/dist/version.d.ts +24 -0
  207. package/dist/version.d.ts.map +1 -0
  208. package/dist/web_app/auth/add_user.d.ts +2 -2
  209. package/dist/web_app/auth/add_user.d.ts.map +1 -1
  210. package/dist/web_app/auth/update_user.d.ts +1 -1
  211. package/dist/web_app/auth/update_user.d.ts.map +1 -1
  212. package/package.json +89 -15
  213. package/dist/backend/featureFlags/database/connection.d.ts +0 -321
  214. package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
  215. package/dist/backend/featureFlags/database/repository.d.ts +0 -518
  216. package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
  217. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  218. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  219. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
  220. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  221. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  222. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  223. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  224. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  225. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  226. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  227. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  229. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  230. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  231. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  232. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  233. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  234. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  235. package/dist/index.cjs +0 -6435
  236. package/dist/index.cjs.map +0 -1
  237. package/dist/utils/db/databaseService.d.ts +0 -6
  238. package/dist/utils/db/databaseService.d.ts.map +0 -1
  239. package/dist/utils/db/index.d.ts +0 -2
  240. package/dist/utils/db/index.d.ts.map +0 -1
@@ -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"}