@observa/sdk 2.2.1 → 2.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.
package/README.md CHANGED
@@ -49,6 +49,7 @@ The SDK validates credentials through the ingest health endpoint.
49
49
  ```ts
50
50
  const result = await sdk.ingest.event({
51
51
  event: {
52
+ schema_version: 1,
52
53
  level: 'error',
53
54
  message: 'Something went wrong',
54
55
  exception: {
@@ -60,6 +61,11 @@ const result = await sdk.ingest.event({
60
61
  },
61
62
  tags: { service: 'billing' },
62
63
  extra: { requestId: 'req_123' },
64
+ context: {
65
+ system: sdk.getProcessContextDynamic(),
66
+ runtime: sdk.getProcessContextStatic({ includeVersions: false }),
67
+ request: { requestId: 'req_123' },
68
+ },
63
69
  },
64
70
  idempotencyKey: 'req_123',
65
71
  sdkVersion: '2.0.0',
@@ -75,6 +81,12 @@ Required:
75
81
  Optional:
76
82
  - `idempotencyKey` is sent as `x-idempotency-key` header (max 128 chars)
77
83
  - `sdkVersion` is sent as `x-sdk-version` header
84
+
85
+ Event context:
86
+ - `schema_version` identifies the event schema version.
87
+ - `context.system` carries dynamic process info (pid, uptime, memory).
88
+ - `context.runtime` carries static runtime info (node, arch, platform, release).
89
+ - `context.request` carries request-scoped metadata (requestId, userId, etc.).
78
90
 
79
91
  ## Uptime Heartbeats
80
92
 
@@ -1,15 +1,26 @@
1
1
  import type { IngestRequest, IngestResponse } from '../domain/ingest';
2
2
  import type { HttpClient } from '../http/httpClient';
3
+ export type IngestNormalizationOptions = {
4
+ schemaVersion?: number;
5
+ includeContext?: boolean;
6
+ includeSystemContext?: boolean;
7
+ includeRuntimeContext?: boolean;
8
+ maxEventBytes?: number;
9
+ maxFrames?: number;
10
+ maxMessageLength?: number;
11
+ maxExceptionValueLength?: number;
12
+ };
3
13
  /**
4
14
  * Event ingestion API.
5
15
  */
6
16
  export declare class IngestApi {
7
17
  private readonly http;
8
18
  private readonly defaultDsnKey?;
19
+ private readonly normalization?;
9
20
  /**
10
21
  * Creates the ingestion client with an optional default DSN.
11
22
  */
12
- constructor(http: HttpClient, defaultDsnKey?: string | undefined);
23
+ constructor(http: HttpClient, defaultDsnKey?: string | undefined, normalization?: IngestNormalizationOptions | undefined);
13
24
  /**
14
25
  * Sends an event to the ingestion backend.
15
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ingestApi.d.ts","sourceRoot":"","sources":["../../src/apis/ingestApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD;;GAEG;AACH,qBAAa,SAAS;IAIN,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAc,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAH9E;;OAEG;gBAC0B,IAAI,EAAE,UAAU,EAAmB,aAAa,CAAC,EAAE,MAAM,YAAA;IAEtF;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAgBpD,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;CAM1D"}
1
+ {"version":3,"file":"ingestApi.d.ts","sourceRoot":"","sources":["../../src/apis/ingestApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,aAAa,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAA;AAInG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,MAAM,0BAA0B,GAAG;IACrC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACnC,CAAA;AAaD;;GAEG;AACH,qBAAa,SAAS;IAKd,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IANnC;;OAEG;gBAEkB,IAAI,EAAE,UAAU,EAChB,aAAa,CAAC,EAAE,MAAM,YAAA,EACtB,aAAa,CAAC,EAAE,0BAA0B,YAAA;IAG/D;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAiBpD,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;CAM1D"}
@@ -1,17 +1,31 @@
1
+ import { randomUUID } from 'crypto';
1
2
  import { ValidationError } from '../http/errors';
3
+ import { getProcessContextDynamic, getProcessContextStatic } from '../utils/processContext';
2
4
  import { ensureDefined, ensureNonEmpty } from '../utils/validate';
5
+ const DEFAULT_NORMALIZATION = {
6
+ schemaVersion: 1,
7
+ includeContext: true,
8
+ includeSystemContext: true,
9
+ includeRuntimeContext: true,
10
+ maxEventBytes: 64 * 1024,
11
+ maxFrames: 60,
12
+ maxMessageLength: 4000,
13
+ maxExceptionValueLength: 4000,
14
+ };
3
15
  /**
4
16
  * Event ingestion API.
5
17
  */
6
18
  export class IngestApi {
7
19
  http;
8
20
  defaultDsnKey;
21
+ normalization;
9
22
  /**
10
23
  * Creates the ingestion client with an optional default DSN.
11
24
  */
12
- constructor(http, defaultDsnKey) {
25
+ constructor(http, defaultDsnKey, normalization) {
13
26
  this.http = http;
14
27
  this.defaultDsnKey = defaultDsnKey;
28
+ this.normalization = normalization;
15
29
  }
16
30
  /**
17
31
  * Sends an event to the ingestion backend.
@@ -30,8 +44,9 @@ export class IngestApi {
30
44
  headers['x-idempotency-key'] = input.idempotencyKey;
31
45
  if (input.sdkVersion)
32
46
  headers['x-sdk-version'] = input.sdkVersion;
33
- const { idempotencyKey, sdkVersion, ...body } = input;
34
- return this.http.post('/ingest/events', { ...body, dsnKey }, { auth: 'apiKey', headers });
47
+ const { idempotencyKey, sdkVersion, event, ...body } = input;
48
+ const normalizedEvent = normalizeEvent(event, this.normalization);
49
+ return this.http.post('/ingest/events', { ...body, dsnKey, event: normalizedEvent }, { auth: 'apiKey', headers });
35
50
  }
36
51
  async health(dsnKey) {
37
52
  const resolvedDsnKey = dsnKey ?? this.defaultDsnKey;
@@ -40,4 +55,122 @@ export class IngestApi {
40
55
  return this.http.post('/ingest/health', { dsnKey: resolvedDsnKey }, { auth: 'apiKey' });
41
56
  }
42
57
  }
58
+ function normalizeEvent(event, options) {
59
+ const config = { ...DEFAULT_NORMALIZATION, ...options };
60
+ const normalizedTimestamp = normalizeTimestamp(event.timestamp);
61
+ const normalizedLevel = event.level ? event.level.toLowerCase() : undefined;
62
+ const normalizedMessage = event.message ? truncate(event.message, config.maxMessageLength) : undefined;
63
+ const normalizedException = normalizeException(event.exception, config);
64
+ if (!normalizedMessage && !normalizedException) {
65
+ throw new ValidationError('event message or exception is required');
66
+ }
67
+ const normalizedContext = normalizeContext(event.context, config);
68
+ const normalizedEvent = {
69
+ ...event,
70
+ event_id: event.event_id ?? randomUUID(),
71
+ timestamp: normalizedTimestamp,
72
+ schema_version: event.schema_version ?? config.schemaVersion,
73
+ level: normalizedLevel,
74
+ message: normalizedMessage,
75
+ exception: normalizedException,
76
+ context: normalizedContext,
77
+ };
78
+ return enforceSizeLimit(normalizedEvent, config);
79
+ }
80
+ function normalizeTimestamp(timestamp) {
81
+ if (!timestamp)
82
+ return new Date().toISOString();
83
+ const parsed = new Date(timestamp);
84
+ if (Number.isNaN(parsed.getTime())) {
85
+ throw new ValidationError('timestamp must be a valid ISO date');
86
+ }
87
+ return parsed.toISOString();
88
+ }
89
+ function normalizeException(exception, config) {
90
+ if (!exception)
91
+ return undefined;
92
+ if (!exception.type || !exception.value) {
93
+ throw new ValidationError('exception.type and exception.value are required');
94
+ }
95
+ return {
96
+ ...exception,
97
+ value: truncate(exception.value, config.maxExceptionValueLength),
98
+ stacktrace: normalizeStacktrace(exception.stacktrace, config.maxFrames),
99
+ };
100
+ }
101
+ function normalizeStacktrace(stacktrace, maxFrames) {
102
+ if (!stacktrace || !Array.isArray(stacktrace.frames))
103
+ return undefined;
104
+ const frames = stacktrace.frames;
105
+ const normalizedFrames = frames.slice(0, maxFrames).map((frame) => {
106
+ const filename = typeof frame?.filename === 'string' ? frame.filename : undefined;
107
+ const functionName = typeof frame?.function === 'string' ? frame.function : undefined;
108
+ const lineno = typeof frame?.lineno === 'number' ? frame.lineno : undefined;
109
+ const colno = typeof frame?.colno === 'number' ? frame.colno : undefined;
110
+ const inferredInApp = filename ? !filename.includes('node_modules') : false;
111
+ return {
112
+ filename,
113
+ function: functionName,
114
+ lineno,
115
+ colno,
116
+ in_app: typeof frame?.in_app === 'boolean' ? frame.in_app : inferredInApp,
117
+ };
118
+ });
119
+ return { frames: normalizedFrames };
120
+ }
121
+ function normalizeContext(context, config) {
122
+ if (!config.includeContext)
123
+ return context;
124
+ const systemContext = config.includeSystemContext ? getProcessContextDynamic() : undefined;
125
+ const runtimeContext = config.includeRuntimeContext ? getProcessContextStatic({ includeVersions: false }) : undefined;
126
+ const mergedContext = {
127
+ ...context,
128
+ system: context?.system ?? systemContext,
129
+ runtime: context?.runtime ?? runtimeContext,
130
+ };
131
+ return mergedContext;
132
+ }
133
+ function enforceSizeLimit(event, config) {
134
+ let normalized = event;
135
+ if (getSize(normalized) <= config.maxEventBytes)
136
+ return normalized;
137
+ if (normalized.extra) {
138
+ normalized = { ...normalized, extra: undefined };
139
+ }
140
+ if (getSize(normalized) <= config.maxEventBytes)
141
+ return normalized;
142
+ if (normalized.tags) {
143
+ normalized = { ...normalized, tags: undefined };
144
+ }
145
+ if (getSize(normalized) <= config.maxEventBytes)
146
+ return normalized;
147
+ if (normalized.exception?.stacktrace) {
148
+ normalized = {
149
+ ...normalized,
150
+ exception: { ...normalized.exception, stacktrace: undefined },
151
+ };
152
+ }
153
+ if (getSize(normalized) <= config.maxEventBytes)
154
+ return normalized;
155
+ if (normalized.message) {
156
+ normalized = { ...normalized, message: truncate(normalized.message, config.maxMessageLength) };
157
+ }
158
+ if (normalized.exception?.value) {
159
+ normalized = {
160
+ ...normalized,
161
+ exception: { ...normalized.exception, value: truncate(normalized.exception.value, config.maxExceptionValueLength) },
162
+ };
163
+ }
164
+ if (getSize(normalized) <= config.maxEventBytes)
165
+ return normalized;
166
+ throw new ValidationError('event payload exceeds size limit');
167
+ }
168
+ function getSize(value) {
169
+ return Buffer.byteLength(JSON.stringify(value), 'utf8');
170
+ }
171
+ function truncate(value, maxLength) {
172
+ if (value.length <= maxLength)
173
+ return value;
174
+ return value.slice(0, maxLength);
175
+ }
43
176
  //# sourceMappingURL=ingestApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingestApi.js","sourceRoot":"","sources":["../../src/apis/ingestApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGjE;;GAEG;AACH,MAAM,OAAO,SAAS;IAIW;IAAmC;IAHhE;;OAEG;IACH,YAA6B,IAAgB,EAAmB,aAAsB;QAAzD,SAAI,GAAJ,IAAI,CAAY;QAAmB,kBAAa,GAAb,aAAa,CAAS;IAAI,CAAC;IAE3F;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAoB;QAC5B,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAA;QACjD,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAChC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC5D,MAAM,IAAI,eAAe,CAAC,+CAA+C,CAAC,CAAA;QAC9E,CAAC;QACD,MAAM,OAAO,GAA2B,EAAE,CAAA;QAC1C,IAAI,KAAK,CAAC,cAAc;YAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,cAAc,CAAA;QAC7E,IAAI,KAAK,CAAC,UAAU;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,UAAU,CAAA;QACjE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,gBAAgB,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7G,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAe;QACxB,MAAM,cAAc,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAA;QACnD,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QACvC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,gBAAgB,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC5G,CAAC;CACJ"}
1
+ {"version":3,"file":"ingestApi.js","sourceRoot":"","sources":["../../src/apis/ingestApi.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
+ import type { ProcessContextDynamic, ProcessContextStatic } from '../utils/processContext';
1
2
  /**
2
3
  * Severity levels for events.
3
4
  */
4
- export type IngestLevel = 'debug' | 'info' | 'warning' | 'warn' | 'error' | 'fatal';
5
+ export type IngestLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
5
6
  export type StacktraceFrame = {
6
7
  filename?: string;
7
8
  function?: string;
8
9
  lineno?: number;
9
10
  colno?: number;
11
+ in_app?: boolean;
10
12
  };
11
13
  export type Stacktrace = {
12
14
  frames: StacktraceFrame[];
@@ -16,6 +18,16 @@ export type IngestException = {
16
18
  value: string;
17
19
  stacktrace?: Stacktrace;
18
20
  };
21
+ export type RequestContext = {
22
+ requestId?: string;
23
+ userId?: string;
24
+ [key: string]: unknown;
25
+ };
26
+ export type IngestEventContext = {
27
+ system?: ProcessContextDynamic;
28
+ runtime?: ProcessContextStatic;
29
+ request?: RequestContext;
30
+ };
19
31
  /**
20
32
  * Ingestion event.
21
33
  */
@@ -28,6 +40,7 @@ export type IngestEvent = {
28
40
  * Event ISO timestamp.
29
41
  */
30
42
  timestamp?: string;
43
+ schema_version?: number;
31
44
  /**
32
45
  * Severity level.
33
46
  */
@@ -37,6 +50,7 @@ export type IngestEvent = {
37
50
  */
38
51
  message?: string;
39
52
  exception?: IngestException;
53
+ context?: IngestEventContext;
40
54
  tags?: Record<string, string>;
41
55
  extra?: Record<string, unknown>;
42
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/domain/ingest.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAEnF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,eAAe,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,WAAW,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/domain/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAE1F;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAEvE,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,eAAe,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAA;CAC3B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,WAAW,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export { SdkError, ValidationError, AuthError, ForbiddenError, NotFoundError, Co
23
23
  */
24
24
  export { UptimeApi } from './apis/uptimeApi';
25
25
  export { IngestApi } from './apis/ingestApi';
26
+ export type { IngestNormalizationOptions } from './apis/ingestApi';
26
27
  /**
27
28
  * Uptime types.
28
29
  */
@@ -30,7 +31,7 @@ export type { UptimeEvent, UptimeStatus, UptimeHeartbeatInput, UptimeSummary } f
30
31
  /**
31
32
  * Ingestion types.
32
33
  */
33
- export type { IngestEvent, IngestLevel, IngestRequest, IngestResponse, IngestException, Stacktrace, StacktraceFrame } from './domain/ingest';
34
+ export type { IngestEvent, IngestEventContext, IngestException, IngestLevel, IngestRequest, IngestResponse, RequestContext, Stacktrace, StacktraceFrame, } from './domain/ingest';
34
35
  export type { ProcessContext, ProcessContextDynamic, ProcessContextDynamicOptions, ProcessContextOptions, ProcessContextStatic, ProcessContextStaticOptions, } from './utils/processContext';
35
36
  export { getProcessContext, getProcessContextDynamic, getProcessContextStatic } from './utils/processContext';
36
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE9C;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjG;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C;;GAEG;AACH,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACrG;;GAEG;AACH,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5I,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE9C;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjG;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,YAAY,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAElE;;GAEG;AACH,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACrG;;GAEG;AACH,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAMlC;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAM9C;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAkB5C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAMlC;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAM9C;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AA6B5C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA"}
package/dist/sdk.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { IngestApi } from './apis/ingestApi';
1
+ import { IngestApi, type IngestNormalizationOptions } from './apis/ingestApi';
2
2
  import { UptimeApi } from './apis/uptimeApi';
3
3
  import { type RetryPolicy } from './http/httpClient';
4
4
  import { type ProcessContext, type ProcessContextDynamic, type ProcessContextDynamicOptions, type ProcessContextOptions, type ProcessContextStatic, type ProcessContextStaticOptions } from './utils/processContext';
@@ -27,6 +27,7 @@ export type ObservaSDKOptions = {
27
27
  * Additional headers sent with every request.
28
28
  */
29
29
  headers?: Record<string, string>;
30
+ ingest?: IngestNormalizationOptions;
30
31
  };
31
32
  /**
32
33
  * Main SDK for error ingestion and uptime heartbeats.
package/dist/sdk.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAIH,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EACnC,MAAM,wBAAwB,CAAA;AAE/B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC,CAAA;AAOD;;GAEG;AACH,qBAAa,UAAU;IACnB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAE1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IAEjC;;OAEG;gBACS,OAAO,EAAE,iBAAiB;IAkBtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,iBAAiB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc;IAIlE,uBAAuB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,oBAAoB;IAIpF,wBAAwB,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,qBAAqB;CAG1F"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAIH,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EACnC,MAAM,wBAAwB,CAAA;AAE/B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,0BAA0B,CAAA;CACtC,CAAA;AAOD;;GAEG;AACH,qBAAa,UAAU;IACnB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAE1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IAEjC;;OAEG;gBACS,OAAO,EAAE,iBAAiB;IAkBtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,iBAAiB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc;IAIlE,uBAAuB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,oBAAoB;IAIpF,wBAAwB,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,qBAAqB;CAG1F"}
package/dist/sdk.js CHANGED
@@ -35,7 +35,7 @@ export class ObservaSDK {
35
35
  retry: options.retry,
36
36
  headers: options.headers,
37
37
  });
38
- this.ingest = new IngestApi(this.http, options.dsnKey);
38
+ this.ingest = new IngestApi(this.http, options.dsnKey, options.ingest);
39
39
  this.uptime = new UptimeApi(this.http, options.dsnKey);
40
40
  this.http.startHealthCheck(() => this.ingest.health(options.dsnKey));
41
41
  }
package/dist/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAA;AAChE,OAAO,EACH,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,GAO1B,MAAM,wBAAwB,CAAA;AA6B/B;;GAEG;AACH,MAAM,gBAAgB,GAAG,sDAAsD,CAAA;AAE/E;;GAEG;AACH,MAAM,OAAO,UAAU;IACnB;;OAEG;IACM,MAAM,CAAW;IAC1B;;OAEG;IACM,MAAM,CAAW;IAET,IAAI,CAAY;IAEjC;;OAEG;IACH,YAAY,OAA0B;QAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAA;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC;YACvB,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACxE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAED,iBAAiB,CAAC,OAA+B;QAC7C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,uBAAuB,CAAC,OAAqC;QACzD,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,wBAAwB,CAAC,OAAsC;QAC3D,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;CACJ"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmC,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAA;AAChE,OAAO,EACH,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,GAO1B,MAAM,wBAAwB,CAAA;AA8B/B;;GAEG;AACH,MAAM,gBAAgB,GAAG,sDAAsD,CAAA;AAE/E;;GAEG;AACH,MAAM,OAAO,UAAU;IACnB;;OAEG;IACM,MAAM,CAAW;IAC1B;;OAEG;IACM,MAAM,CAAW;IAET,IAAI,CAAY;IAEjC;;OAEG;IACH,YAAY,OAA0B;QAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAA;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC;YACvB,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACtE,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACxE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAED,iBAAiB,CAAC,OAA+B;QAC7C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,uBAAuB,CAAC,OAAqC;QACzD,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,wBAAwB,CAAC,OAAsC;QAC3D,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@observa/sdk",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "description": "Observa SDK for Node.js",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,11 +31,17 @@
31
31
  "@types/bun": "latest",
32
32
  "@types/jest": "^29.5.12",
33
33
  "jest": "^29.7.0",
34
+ "standard-version": "^9.5.0",
34
35
  "ts-jest": "^29.1.2",
35
36
  "typescript": "^5.6.3"
36
37
  },
37
38
  "scripts": {
38
39
  "build": "tsc -p tsconfig.build.json",
40
+ "changelog": "standard-version --skip.bump --skip.commit --skip.tag",
41
+ "release": "standard-version",
42
+ "release:major": "standard-version --release-as major",
43
+ "release:minor": "standard-version --release-as minor",
44
+ "release:patch": "standard-version --release-as patch",
39
45
  "typecheck": "tsc -p tsconfig.json --noEmit",
40
46
  "test": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js --config ./jest.config.mjs",
41
47
  "test:watch": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js --watch --config ./jest.config.mjs",