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