@cratis/chronicle 6.33.0 → 6.34.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 (162) hide show
  1. package/ChronicleClient.ts +35 -33
  2. package/ChronicleOptions.ts +27 -1
  3. package/EventStore.ts +14 -12
  4. package/Metrics.ts +70 -96
  5. package/Tracing.ts +4 -2
  6. package/WellKnownTelemetryNames.ts +67 -0
  7. package/artifacts/validateArtifactSchemas.spec.ts +1 -1
  8. package/artifacts/withActivatedArtifact.ts +7 -5
  9. package/connection/ChronicleConnection.ts +18 -6
  10. package/connection/CompatibilityPreflight.ts +2 -1
  11. package/connection/KernelKeepAlive.ts +13 -7
  12. package/connection/TokenProvider.ts +3 -1
  13. package/connection/TraceContextMiddleware.ts +30 -0
  14. package/connection/for_ChronicleConnection/when_creating_clients/with_correlated_multi_host_callers.spec.ts +73 -0
  15. package/connection/for_OAuthTokenProvider/when_acquiring_tokens/with_http_instrumentation.spec.ts +102 -0
  16. package/connection/for_TraceContextMiddleware/when_calling/with_active_context.spec.ts +235 -0
  17. package/connection/for_TraceContextMiddleware/when_calling/with_grpc_instrumentation.spec.ts +102 -0
  18. package/correlation/CorrelationIdManager.ts +10 -0
  19. package/dist/ChronicleClient.d.ts.map +1 -1
  20. package/dist/ChronicleClient.js +35 -33
  21. package/dist/ChronicleClient.js.map +1 -1
  22. package/dist/ChronicleOptions.d.ts +8 -0
  23. package/dist/ChronicleOptions.d.ts.map +1 -1
  24. package/dist/ChronicleOptions.js +19 -1
  25. package/dist/ChronicleOptions.js.map +1 -1
  26. package/dist/EventStore.d.ts +3 -1
  27. package/dist/EventStore.d.ts.map +1 -1
  28. package/dist/EventStore.js +14 -12
  29. package/dist/EventStore.js.map +1 -1
  30. package/dist/Metrics.d.ts +23 -64
  31. package/dist/Metrics.d.ts.map +1 -1
  32. package/dist/Metrics.js +62 -92
  33. package/dist/Metrics.js.map +1 -1
  34. package/dist/Tracing.d.ts +1 -1
  35. package/dist/Tracing.d.ts.map +1 -1
  36. package/dist/Tracing.js +4 -2
  37. package/dist/Tracing.js.map +1 -1
  38. package/dist/WellKnownTelemetryNames.d.ts +65 -0
  39. package/dist/WellKnownTelemetryNames.d.ts.map +1 -0
  40. package/dist/WellKnownTelemetryNames.js +67 -0
  41. package/dist/WellKnownTelemetryNames.js.map +1 -0
  42. package/dist/artifacts/withActivatedArtifact.d.ts +2 -1
  43. package/dist/artifacts/withActivatedArtifact.d.ts.map +1 -1
  44. package/dist/artifacts/withActivatedArtifact.js +5 -4
  45. package/dist/artifacts/withActivatedArtifact.js.map +1 -1
  46. package/dist/connection/ChronicleConnection.d.ts +5 -0
  47. package/dist/connection/ChronicleConnection.d.ts.map +1 -1
  48. package/dist/connection/ChronicleConnection.js +13 -6
  49. package/dist/connection/ChronicleConnection.js.map +1 -1
  50. package/dist/connection/CompatibilityPreflight.d.ts.map +1 -1
  51. package/dist/connection/CompatibilityPreflight.js +2 -1
  52. package/dist/connection/CompatibilityPreflight.js.map +1 -1
  53. package/dist/connection/KernelKeepAlive.d.ts +3 -1
  54. package/dist/connection/KernelKeepAlive.d.ts.map +1 -1
  55. package/dist/connection/KernelKeepAlive.js +10 -7
  56. package/dist/connection/KernelKeepAlive.js.map +1 -1
  57. package/dist/connection/TokenProvider.d.ts.map +1 -1
  58. package/dist/connection/TokenProvider.js +3 -1
  59. package/dist/connection/TokenProvider.js.map +1 -1
  60. package/dist/connection/TraceContextMiddleware.d.ts +4 -0
  61. package/dist/connection/TraceContextMiddleware.d.ts.map +1 -0
  62. package/dist/connection/TraceContextMiddleware.js +30 -0
  63. package/dist/connection/TraceContextMiddleware.js.map +1 -0
  64. package/dist/correlation/CorrelationIdManager.d.ts +4 -0
  65. package/dist/correlation/CorrelationIdManager.d.ts.map +1 -1
  66. package/dist/correlation/CorrelationIdManager.js +8 -0
  67. package/dist/correlation/CorrelationIdManager.js.map +1 -1
  68. package/dist/eventSequences/EventLog.d.ts +2 -1
  69. package/dist/eventSequences/EventLog.d.ts.map +1 -1
  70. package/dist/eventSequences/EventLog.js +2 -2
  71. package/dist/eventSequences/EventLog.js.map +1 -1
  72. package/dist/eventSequences/EventSequence.d.ts +4 -1
  73. package/dist/eventSequences/EventSequence.d.ts.map +1 -1
  74. package/dist/eventSequences/EventSequence.js +63 -80
  75. package/dist/eventSequences/EventSequence.js.map +1 -1
  76. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts.map +1 -1
  77. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js +3 -4
  78. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js.map +1 -1
  79. package/dist/index.d.ts +7 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +4 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/logging/ChronicleLogEntry.d.ts +11 -0
  84. package/dist/logging/ChronicleLogEntry.d.ts.map +1 -0
  85. package/dist/logging/ChronicleLogEntry.js +4 -0
  86. package/dist/logging/ChronicleLogEntry.js.map +1 -0
  87. package/dist/logging/ChronicleLogLevel.d.ts +9 -0
  88. package/dist/logging/ChronicleLogLevel.d.ts.map +1 -0
  89. package/dist/logging/ChronicleLogLevel.js +12 -0
  90. package/dist/logging/ChronicleLogLevel.js.map +1 -0
  91. package/dist/logging/DiagChronicleLogger.d.ts +7 -0
  92. package/dist/logging/DiagChronicleLogger.d.ts.map +1 -0
  93. package/dist/logging/DiagChronicleLogger.js +10 -0
  94. package/dist/logging/DiagChronicleLogger.js.map +1 -0
  95. package/dist/logging/IChronicleLogger.d.ts +7 -0
  96. package/dist/logging/IChronicleLogger.d.ts.map +1 -0
  97. package/dist/logging/IChronicleLogger.js +4 -0
  98. package/dist/logging/IChronicleLogger.js.map +1 -0
  99. package/dist/logging/createLogger.d.ts +10 -0
  100. package/dist/logging/createLogger.d.ts.map +1 -0
  101. package/dist/logging/createLogger.js +55 -0
  102. package/dist/logging/createLogger.js.map +1 -0
  103. package/dist/projections/Projections.d.ts.map +1 -1
  104. package/dist/projections/Projections.js +4 -3
  105. package/dist/projections/Projections.js.map +1 -1
  106. package/dist/reactors/Reactors.d.ts.map +1 -1
  107. package/dist/reactors/Reactors.js +26 -24
  108. package/dist/reactors/Reactors.js.map +1 -1
  109. package/dist/reducers/Reducers.d.ts.map +1 -1
  110. package/dist/reducers/Reducers.js +28 -25
  111. package/dist/reducers/Reducers.js.map +1 -1
  112. package/dist/seeding/EventSeeding.d.ts.map +1 -1
  113. package/dist/seeding/EventSeeding.js +4 -3
  114. package/dist/seeding/EventSeeding.js.map +1 -1
  115. package/dist/telemetry/ChronicleTelemetryOptions.d.ts +11 -0
  116. package/dist/telemetry/ChronicleTelemetryOptions.d.ts.map +1 -0
  117. package/dist/telemetry/ChronicleTelemetryOptions.js +4 -0
  118. package/dist/telemetry/ChronicleTelemetryOptions.js.map +1 -0
  119. package/dist/telemetry/observeOperation.d.ts +6 -0
  120. package/dist/telemetry/observeOperation.d.ts.map +1 -0
  121. package/dist/telemetry/observeOperation.js +23 -0
  122. package/dist/telemetry/observeOperation.js.map +1 -0
  123. package/dist/telemetry/runInBackgroundContext.d.ts +3 -0
  124. package/dist/telemetry/runInBackgroundContext.d.ts.map +1 -0
  125. package/dist/telemetry/runInBackgroundContext.js +9 -0
  126. package/dist/telemetry/runInBackgroundContext.js.map +1 -0
  127. package/dist/telemetry/spanAttributes.d.ts +14 -0
  128. package/dist/telemetry/spanAttributes.d.ts.map +1 -0
  129. package/dist/telemetry/spanAttributes.js +47 -0
  130. package/dist/telemetry/spanAttributes.js.map +1 -0
  131. package/dist/tsconfig.tsbuildinfo +1 -1
  132. package/eventSequences/EventLog.ts +4 -2
  133. package/eventSequences/EventSequence.ts +64 -81
  134. package/eventStoreSubscriptions/EventStoreSubscriptions.ts +5 -5
  135. package/for_ChronicleClient/when_starting_background_work/with_a_correlated_caller.spec.ts +150 -0
  136. package/for_ChronicleOptions/when_configuring_telemetry/with_event_source_identifiers.spec.ts +44 -0
  137. package/index.ts +7 -1
  138. package/logging/ChronicleLogEntry.ts +14 -0
  139. package/logging/ChronicleLogLevel.ts +11 -0
  140. package/logging/DiagChronicleLogger.ts +13 -0
  141. package/logging/IChronicleLogger.ts +10 -0
  142. package/logging/createLogger.ts +50 -0
  143. package/logging/for_ChronicleLogger/when_logging/with_client_owned_sinks.spec.ts +96 -0
  144. package/package.json +7 -1
  145. package/projections/Projections.ts +4 -3
  146. package/reactors/Reactors.ts +27 -25
  147. package/reactors/for_Reactors/when_delivering/with_activation.spec.ts +14 -14
  148. package/reducers/Reducers.ts +29 -26
  149. package/seeding/EventSeeding.ts +6 -4
  150. package/telemetry/ChronicleTelemetryOptions.ts +8 -0
  151. package/telemetry/for_ChronicleTelemetry/given/a_telemetry_session.fixture.ts +36 -0
  152. package/telemetry/for_ChronicleTelemetry/given/an_event_sequence.fixture.ts +29 -0
  153. package/telemetry/for_ChronicleTelemetry/when_appending/with_shared_and_legacy_attributes.spec.ts +58 -0
  154. package/telemetry/for_ChronicleTelemetry/when_appending/without_an_sdk.spec.ts +15 -0
  155. package/telemetry/for_ChronicleTelemetry/when_documenting/with_public_names.spec.ts +15 -0
  156. package/telemetry/for_ChronicleTelemetry/when_recording_failures/with_sensitive_exception_details.spec.ts +34 -0
  157. package/telemetry/for_ChronicleTelemetry/when_recording_identifiers/with_per_client_privacy.spec.ts +92 -0
  158. package/telemetry/for_ChronicleTelemetry/when_recording_metrics/with_legacy_overlap.spec.ts +40 -0
  159. package/telemetry/for_ChronicleTelemetry/when_recording_sequence_numbers/with_integer_precision.spec.ts +23 -0
  160. package/telemetry/observeOperation.ts +25 -0
  161. package/telemetry/runInBackgroundContext.ts +10 -0
  162. package/telemetry/spanAttributes.ts +49 -0
@@ -0,0 +1,49 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { createHmac } from 'node:crypto';
5
+ import { SpanStatusCode, type Span, type AttributeValue } from '@opentelemetry/api';
6
+ import { WellKnownTelemetryNames as names } from '../WellKnownTelemetryNames.js';
7
+ import type { ChronicleTelemetryOptions } from './ChronicleTelemetryOptions.js';
8
+
9
+ /** Records a shared attribute and its legacy alias on the same span. */
10
+ export function setTelemetryAttribute(span: Span, name: keyof typeof names.legacyAttributes, value: AttributeValue): void {
11
+ span.setAttribute(names.legacyAttributes[name], value);
12
+ if (name in names.attributes) {
13
+ span.setAttribute(names.attributes[name as keyof typeof names.attributes], value);
14
+ }
15
+ }
16
+
17
+ /** Preserves the legacy string; records the shared integer only when exactly representable. */
18
+ export function setSequenceNumber(span: Span, value: bigint): void {
19
+ span.setAttribute(names.legacyAttributes.sequenceNumber, value.toString());
20
+ const number = Number(value);
21
+ if (Number.isSafeInteger(number)) span.setAttribute(names.attributes.sequenceNumber, number);
22
+ }
23
+
24
+ /** Applies the same privacy policy to both event source identifier names. */
25
+ export function setEventSourceId(span: Span, value: string | undefined, options?: ChronicleTelemetryOptions): void {
26
+ try {
27
+ const policy = options?.eventSourceId;
28
+ if (value === undefined || !policy || !span.isRecording()) return;
29
+ if (policy.mode !== 'raw' && policy.mode !== 'hmac') return;
30
+ const recorded = policy.mode === 'raw' ? value : createHmac('sha256', policy.key).update(value).digest('hex');
31
+ setTelemetryAttribute(span, 'eventSourceId', recorded);
32
+ } catch {
33
+ // Options are validated at construction, but callers can mutate them later.
34
+ // Optional telemetry enrichment must never prevent an RPC or span completion.
35
+ }
36
+ }
37
+
38
+ /** Classifies failures without serializing arbitrary thrown values, messages or stacks. */
39
+ export function exceptionType(error: unknown): string {
40
+ return error instanceof Error ? error.name : typeof error;
41
+ }
42
+
43
+ /** Records failure type only; preserves the original exception for the caller. */
44
+ export function recordSafeException(span: Span, error: unknown): void {
45
+ const type = exceptionType(error);
46
+ span.setStatus({ code: SpanStatusCode.ERROR });
47
+ span.setAttribute(names.attributes.errorType, type);
48
+ span.addEvent('exception', { [names.attributes.exceptionType]: type });
49
+ }