@observa/sdk 2.3.1 → 2.4.5

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 (79) hide show
  1. package/README.md +140 -157
  2. package/dist/apis/ingestApi.d.ts +1 -15
  3. package/dist/apis/ingestApi.d.ts.map +1 -1
  4. package/dist/apis/ingestApi.js +2 -151
  5. package/dist/apis/ingestApi.js.map +1 -1
  6. package/dist/apis/uptimeApi.js +1 -1
  7. package/dist/apis/uptimeApi.js.map +1 -1
  8. package/dist/domain/ingest.d.ts +4 -33
  9. package/dist/domain/ingest.d.ts.map +1 -1
  10. package/dist/http/httpClient.d.ts +5 -2
  11. package/dist/http/httpClient.d.ts.map +1 -1
  12. package/dist/http/httpClient.js +44 -8
  13. package/dist/http/httpClient.js.map +1 -1
  14. package/dist/index.d.ts +18 -494
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +17 -568
  17. package/dist/index.js.map +1 -1
  18. package/dist/sdk.d.ts +4 -9
  19. package/dist/sdk.d.ts.map +1 -1
  20. package/dist/sdk.js +7 -19
  21. package/dist/sdk.js.map +1 -1
  22. package/package.json +9 -16
  23. package/dist/src/apis/ingestApi.d.ts +0 -22
  24. package/dist/src/apis/ingestApi.js +0 -167
  25. package/dist/src/apis/ingestApi.js.map +0 -1
  26. package/dist/src/apis/uptimeApi.d.ts +0 -11
  27. package/dist/src/apis/uptimeApi.js +0 -39
  28. package/dist/src/apis/uptimeApi.js.map +0 -1
  29. package/dist/src/domain/ingest.d.ts +0 -47
  30. package/dist/src/domain/ingest.js +0 -2
  31. package/dist/src/domain/ingest.js.map +0 -1
  32. package/dist/src/domain/uptime.d.ts +0 -23
  33. package/dist/src/domain/uptime.js +0 -2
  34. package/dist/src/domain/uptime.js.map +0 -1
  35. package/dist/src/http/errors.d.ts +0 -33
  36. package/dist/src/http/errors.js +0 -54
  37. package/dist/src/http/errors.js.map +0 -1
  38. package/dist/src/http/httpClient.d.ts +0 -45
  39. package/dist/src/http/httpClient.js +0 -165
  40. package/dist/src/http/httpClient.js.map +0 -1
  41. package/dist/src/index.d.ts +0 -12
  42. package/dist/src/index.js +0 -7
  43. package/dist/src/index.js.map +0 -1
  44. package/dist/src/sdk.d.ts +0 -23
  45. package/dist/src/sdk.js +0 -40
  46. package/dist/src/sdk.js.map +0 -1
  47. package/dist/src/utils/processContext.d.ts +0 -34
  48. package/dist/src/utils/processContext.js +0 -47
  49. package/dist/src/utils/processContext.js.map +0 -1
  50. package/dist/src/utils/validate.d.ts +0 -2
  51. package/dist/src/utils/validate.js +0 -12
  52. package/dist/src/utils/validate.js.map +0 -1
  53. package/dist/tests/httpClient.test.d.ts +0 -1
  54. package/dist/tests/httpClient.test.js +0 -47
  55. package/dist/tests/httpClient.test.js.map +0 -1
  56. package/dist/tests/ingestApi.test.d.ts +0 -1
  57. package/dist/tests/ingestApi.test.js +0 -65
  58. package/dist/tests/ingestApi.test.js.map +0 -1
  59. package/dist/tests/observaSdk.integration.test.d.ts +0 -1
  60. package/dist/tests/observaSdk.integration.test.js +0 -51
  61. package/dist/tests/observaSdk.integration.test.js.map +0 -1
  62. package/dist/tests/sdk.test.d.ts +0 -1
  63. package/dist/tests/sdk.test.js +0 -104
  64. package/dist/tests/sdk.test.js.map +0 -1
  65. package/dist/tsconfig.build.tsbuildinfo +0 -1
  66. package/dist/utils/processContext.d.ts +0 -35
  67. package/dist/utils/processContext.d.ts.map +0 -1
  68. package/dist/utils/processContext.js +0 -47
  69. package/dist/utils/processContext.js.map +0 -1
  70. package/src/apis/ingestApi.ts +0 -185
  71. package/src/apis/uptimeApi.ts +0 -58
  72. package/src/domain/ingest.ts +0 -89
  73. package/src/domain/uptime.ts +0 -86
  74. package/src/http/errors.ts +0 -88
  75. package/src/http/httpClient.ts +0 -277
  76. package/src/index.ts +0 -68
  77. package/src/sdk.ts +0 -103
  78. package/src/utils/processContext.ts +0 -84
  79. package/src/utils/validate.ts +0 -19
package/README.md CHANGED
@@ -1,157 +1,140 @@
1
- # Observa SDK for Node.js
2
-
3
- Official SDK for sending ingest events and uptime heartbeats to Observa.
4
-
5
- ## Who is this for?
6
-
7
- This SDK is intended for backend services, workers, and server-side applications.
8
- It is not designed for browser usage.
9
-
10
- ## SDK Contract
11
-
12
- This SDK is an official client for the Observa backend.
13
- You can optionally override the backend `baseUrl`; the SDK ensures the `/v1` prefix.
14
-
15
- ## Concepts
16
-
17
- - **apiKey**: Organization-level credential used for authentication.
18
- - **dsnKey**: Project-level identifier used to route events and heartbeats.
19
-
20
- ## Installation
21
-
22
- ```bash
23
- npm install @observa/sdk
24
- ```
25
-
26
- ## Usage
27
-
28
- ```ts
29
- import { ObservaSDK } from '@observa/sdk'
30
-
31
- const sdk = new ObservaSDK({
32
- apiKey: 'org_api_key',
33
- dsnKey: 'project_dsn',
34
- baseUrl: 'https://backend-observa-production.up.railway.app',
35
- })
36
- ```
37
-
38
- The SDK validates credentials through the ingest health endpoint.
39
-
40
- ## Defaults
41
-
42
- - Timeout: 5 seconds
43
- - Retries: disabled by default
44
- - `baseUrl` defaults to the Observa backend and is normalized to `/v1`
45
- - `dsnKey` is required for ingest and uptime writes
46
-
47
- ## Ingest Events
48
-
49
- ```ts
50
- const result = await sdk.ingest.event({
51
- event: {
52
- schema_version: 1,
53
- level: 'error',
54
- message: 'Something went wrong',
55
- exception: {
56
- type: 'Error',
57
- value: 'Timeout',
58
- stacktrace: {
59
- frames: [{ filename: 'src/service.ts', function: 'doWork', lineno: 42, colno: 13 }],
60
- },
61
- },
62
- tags: { service: 'billing' },
63
- extra: { requestId: 'req_123' },
64
- context: {
65
- system: sdk.getProcessContextDynamic(),
66
- runtime: sdk.getProcessContextStatic({ includeVersions: false }),
67
- request: { requestId: 'req_123' },
68
- },
69
- },
70
- idempotencyKey: 'req_123',
71
- sdkVersion: '2.0.0',
72
- })
73
-
74
- console.log(result.event_id)
75
- ```
76
-
77
- Required:
78
- - `apiKey` is sent as `x-api-key` header
79
- - `dsnKey` is sent in the body as `dsnKey`
80
-
81
- Optional:
82
- - `idempotencyKey` is sent as `x-idempotency-key` header (max 128 chars)
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.).
90
-
91
- ## Uptime Heartbeats
92
-
93
- ```ts
94
- const heartbeat = await sdk.uptime.recordHeartbeat({
95
- status: 'up',
96
- responseTimeMs: 120,
97
- checkedAt: new Date().toISOString(),
98
- message: 'Service healthy',
99
- })
100
-
101
- console.log(heartbeat.id)
102
- ```
103
-
104
- ## Ingest Health
105
-
106
- ```ts
107
- const health = await sdk.ingest.health()
108
- console.log(health.ok)
109
- ```
110
-
111
- ## Uptime Queries
112
-
113
- ```ts
114
- const history = await sdk.uptime.history('project_id', '2026-02-08')
115
- const latest = await sdk.uptime.latest('project_id')
116
- const summary = await sdk.uptime.summary('project_id', 30)
117
- ```
118
-
119
- These endpoints are public and do not require authentication.
120
-
121
- ## Updating Credentials
122
-
123
- ```ts
124
- sdk.setApiKey('new_api_key')
125
- ```
126
-
127
- ## Error Handling
128
-
129
- The SDK throws typed errors you can catch explicitly:
130
-
131
- ```ts
132
- import { RateLimitError, AuthError } from '@observa/sdk'
133
-
134
- try {
135
- await sdk.ingest.event({ event: { level: 'error', message: 'boom' } })
136
- } catch (error) {
137
- if (error instanceof RateLimitError) {
138
- console.log('Retry after seconds:', error.retryAfter)
139
- }
140
- if (error instanceof AuthError) {
141
- console.log('Authentication failed')
142
- }
143
- }
144
- ```
145
-
146
- ## Requirements
147
-
148
- - Node.js >= 18
149
-
150
- ## License
151
-
152
- MIT
153
-
154
- ## Links
155
-
156
- - Documentation: ...
157
- - GitHub: https://github.com/ObservaSolutions/sdk-observa
1
+ # Observa SDK for Node.js
2
+
3
+ Official SDK for sending ingest events and uptime heartbeats to Observa.
4
+
5
+ ## Who is this for?
6
+
7
+ This SDK supports both server-side and browser usage:
8
+
9
+ - **Server-side** (Node.js workers, backend services): initialize with `apiKey` + `dsnKey` for full privileged access.
10
+ - **Browser / frontend**: initialize with `dsnKey` only — your org-level `apiKey` stays on the server.
11
+
12
+ ## SDK Contract
13
+
14
+ This SDK is an official client for the Observa backend.
15
+ It targets a fixed API and does not support custom base URLs.
16
+
17
+ ## Concepts
18
+
19
+ - **dsnKey**: Project-level identifier used to route events and heartbeats. Required for all write operations.
20
+ - **apiKey**: Organization-level credential for privileged server-side access. Optional — omit it for browser/public usage.
21
+
22
+ ## Installation
23
+
24
+ ```bash
25
+ npm install @observa/sdk
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ ### Browser / Frontend (DSN-only)
31
+
32
+ ```ts
33
+ import { ObservaSDK } from '@observa/sdk'
34
+
35
+ const sdk = new ObservaSDK({ dsnKey: 'dsn_your_key' })
36
+ ```
37
+
38
+ The DSN is a project-scoped key safe to use in browser environments.
39
+
40
+ ### Server-side (apiKey + dsnKey)
41
+
42
+ ```ts
43
+ import { ObservaSDK } from '@observa/sdk'
44
+
45
+ const sdk = new ObservaSDK({
46
+ apiKey: 'org_api_key',
47
+ dsnKey: 'project_dsn',
48
+ })
49
+ ```
50
+
51
+ Use the `apiKey` in privileged server-side contexts (workers, backend services). Never expose your `apiKey` to the browser.
52
+
53
+ The SDK triggers a startup health check (`/health`) as a best-effort diagnostic.
54
+ This check is non-blocking: if it fails, normal SDK API calls still run with their regular timeout/retry/error behavior.
55
+
56
+ ## Defaults
57
+
58
+ - Timeout: 5 seconds
59
+ - Retries: disabled by default
60
+ - `dsnKey` is required
61
+ - `apiKey` is optional (server-side only)
62
+
63
+ ## Ingest Events
64
+
65
+ ```ts
66
+ const result = await sdk.ingest.event({
67
+ event: {
68
+ level: 'error',
69
+ message: 'Something went wrong',
70
+ payload: { requestId: 'req_123' },
71
+ },
72
+ })
73
+
74
+ console.log(result.event_id)
75
+ ```
76
+
77
+ Required:
78
+ - `dsnKey` is sent in the body as `dsnKey` (always)
79
+ - `apiKey` is sent as `x-api-key` header (only when provided)
80
+
81
+ ## Uptime Heartbeats
82
+
83
+ ```ts
84
+ const heartbeat = await sdk.uptime.recordHeartbeat({
85
+ status: 'up',
86
+ responseTimeMs: 120,
87
+ checkedAt: new Date().toISOString(),
88
+ message: 'Service healthy',
89
+ })
90
+
91
+ console.log(heartbeat.id)
92
+ ```
93
+
94
+ ## Uptime Queries
95
+
96
+ ```ts
97
+ const history = await sdk.uptime.history('project_id', '2026-02-08')
98
+ const latest = await sdk.uptime.latest('project_id')
99
+ const summary = await sdk.uptime.summary('project_id', 30)
100
+ ```
101
+
102
+ These endpoints are public and do not require authentication.
103
+
104
+ ## Updating Credentials
105
+
106
+ ```ts
107
+ sdk.setApiKey('new_api_key')
108
+ ```
109
+
110
+ ## Error Handling
111
+
112
+ The SDK throws typed errors you can catch explicitly:
113
+
114
+ ```ts
115
+ import { RateLimitError, AuthError } from '@observa/sdk'
116
+
117
+ try {
118
+ await sdk.ingest.event({ event: { level: 'error', message: 'boom' } })
119
+ } catch (error) {
120
+ if (error instanceof RateLimitError) {
121
+ console.log('Retry after seconds:', error.retryAfter)
122
+ }
123
+ if (error instanceof AuthError) {
124
+ console.log('Authentication failed')
125
+ }
126
+ }
127
+ ```
128
+
129
+ ## Requirements
130
+
131
+ - Node.js >= 18
132
+
133
+ ## License
134
+
135
+ MIT
136
+
137
+ ## Links
138
+
139
+ - Documentation: ...
140
+ - GitHub: https://github.com/ObservaSolutions/sdk-observa
@@ -1,32 +1,18 @@
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
- };
13
3
  /**
14
4
  * Event ingestion API.
15
5
  */
16
6
  export declare class IngestApi {
17
7
  private readonly http;
18
8
  private readonly defaultDsnKey?;
19
- private readonly normalization?;
20
9
  /**
21
10
  * Creates the ingestion client with an optional default DSN.
22
11
  */
23
- constructor(http: HttpClient, defaultDsnKey?: string | undefined, normalization?: IngestNormalizationOptions | undefined);
12
+ constructor(http: HttpClient, defaultDsnKey?: string | undefined);
24
13
  /**
25
14
  * Sends an event to the ingestion backend.
26
15
  */
27
16
  event(input: IngestRequest): Promise<IngestResponse>;
28
- health(dsnKey?: string): Promise<{
29
- ok: boolean;
30
- }>;
31
17
  }
32
18
  //# sourceMappingURL=ingestApi.d.ts.map
@@ -1 +1 @@
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
+ {"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;AAErE,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;CAQ7D"}
@@ -1,31 +1,16 @@
1
- import { randomUUID } from 'crypto';
2
- import { ValidationError } from '../http/errors';
3
- import { getProcessContextDynamic, getProcessContextStatic } from '../utils/processContext';
4
1
  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
- };
15
2
  /**
16
3
  * Event ingestion API.
17
4
  */
18
5
  export class IngestApi {
19
6
  http;
20
7
  defaultDsnKey;
21
- normalization;
22
8
  /**
23
9
  * Creates the ingestion client with an optional default DSN.
24
10
  */
25
- constructor(http, defaultDsnKey, normalization) {
11
+ constructor(http, defaultDsnKey) {
26
12
  this.http = http;
27
13
  this.defaultDsnKey = defaultDsnKey;
28
- this.normalization = normalization;
29
14
  }
30
15
  /**
31
16
  * Sends an event to the ingestion backend.
@@ -36,141 +21,7 @@ export class IngestApi {
36
21
  ensureDefined(dsnKey, 'dsnKey');
37
22
  ensureNonEmpty(dsnKey, 'dsnKey');
38
23
  ensureDefined(input.event, 'event');
39
- if (input.idempotencyKey && input.idempotencyKey.length > 128) {
40
- throw new ValidationError('idempotencyKey must be at most 128 characters');
41
- }
42
- const headers = {};
43
- if (input.idempotencyKey)
44
- headers['x-idempotency-key'] = input.idempotencyKey;
45
- if (input.sdkVersion)
46
- headers['x-sdk-version'] = input.sdkVersion;
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 });
24
+ return this.http.post('/ingest/events', { ...input, dsnKey }, { auth: 'dsn' });
50
25
  }
51
- async health(dsnKey) {
52
- const resolvedDsnKey = dsnKey ?? this.defaultDsnKey;
53
- ensureDefined(resolvedDsnKey, 'dsnKey');
54
- ensureNonEmpty(resolvedDsnKey, 'dsnKey');
55
- return this.http.post('/ingest/health', { dsnKey: resolvedDsnKey }, { auth: 'apiKey' });
56
- }
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
26
  }
176
27
  //# sourceMappingURL=ingestApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingestApi.js","sourceRoot":"","sources":["../../src/apis/ingestApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingestApi.js","sourceRoot":"","sources":["../../src/apis/ingestApi.ts"],"names":[],"mappings":"AACA,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,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,gBAAgB,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAClG,CAAC;CACJ"}
@@ -21,7 +21,7 @@ export class UptimeApi {
21
21
  ensureDefined(dsnKey, 'dsnKey');
22
22
  ensureNonEmpty(dsnKey, 'dsnKey');
23
23
  ensureNonEmpty(input.status, 'status');
24
- return this.http.post('/uptime/heartbeats', { ...input, dsnKey }, { auth: 'apiKey' });
24
+ return this.http.post('/uptime/heartbeats', { ...input, dsnKey }, { auth: 'dsn' });
25
25
  }
26
26
  /**
27
27
  * Lists a project's daily uptime history.
@@ -1 +1 @@
1
- {"version":3,"file":"uptimeApi.js","sourceRoot":"","sources":["../../src/apis/uptimeApi.ts"],"names":[],"mappings":"AACA,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,eAAe,CAAC,KAA2B;QAC7C,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,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,oBAAoB,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACtG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,IAAY;QACzC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACtC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,aAAa,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7F,KAAK,EAAE,EAAE,IAAI,EAAE;YACf,IAAI,EAAE,MAAM;SACf,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC1B,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,aAAa,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjG,IAAI,EAAE,MAAM;SACf,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,IAAa,EAAE,qBAA8B;QAC1E,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,aAAa,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC/F,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtC,IAAI,EAAE,MAAM;SACf,CAAC,CAAA;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"uptimeApi.js","sourceRoot":"","sources":["../../src/apis/uptimeApi.ts"],"names":[],"mappings":"AACA,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,eAAe,CAAC,KAA2B;QAC7C,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,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,oBAAoB,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACnG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,IAAY;QACzC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACtC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,aAAa,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7F,KAAK,EAAE,EAAE,IAAI,EAAE;YACf,IAAI,EAAE,MAAM;SACf,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC1B,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,aAAa,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjG,IAAI,EAAE,MAAM;SACf,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,IAAa,EAAE,qBAA8B;QAC1E,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,aAAa,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC/F,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtC,IAAI,EAAE,MAAM;SACf,CAAC,CAAA;IACN,CAAC;CACJ"}
@@ -1,33 +1,7 @@
1
- import type { ProcessContextDynamic, ProcessContextStatic } from '../utils/processContext';
2
1
  /**
3
2
  * Severity levels for events.
4
3
  */
5
4
  export type IngestLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
6
- export type StacktraceFrame = {
7
- filename?: string;
8
- function?: string;
9
- lineno?: number;
10
- colno?: number;
11
- in_app?: boolean;
12
- };
13
- export type Stacktrace = {
14
- frames: StacktraceFrame[];
15
- };
16
- export type IngestException = {
17
- type: string;
18
- value: string;
19
- stacktrace?: Stacktrace;
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
- };
31
5
  /**
32
6
  * Ingestion event.
33
7
  */
@@ -40,7 +14,6 @@ export type IngestEvent = {
40
14
  * Event ISO timestamp.
41
15
  */
42
16
  timestamp?: string;
43
- schema_version?: number;
44
17
  /**
45
18
  * Severity level.
46
19
  */
@@ -49,10 +22,10 @@ export type IngestEvent = {
49
22
  * Main message.
50
23
  */
51
24
  message?: string;
52
- exception?: IngestException;
53
- context?: IngestEventContext;
54
- tags?: Record<string, string>;
55
- extra?: Record<string, unknown>;
25
+ /**
26
+ * Free-form context payload.
27
+ */
28
+ payload?: unknown;
56
29
  };
57
30
  /**
58
31
  * Payload for sending an event to the backend.
@@ -66,8 +39,6 @@ export type IngestRequest = {
66
39
  * Event to record.
67
40
  */
68
41
  event: IngestEvent;
69
- idempotencyKey?: string;
70
- sdkVersion?: string;
71
42
  };
72
43
  /**
73
44
  * Response after sending an event.
@@ -1 +1 @@
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"}
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,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAEvE;;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;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,WAAW,CAAA;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Authentication mode per request.
3
3
  */
4
- export type AuthMode = 'apiKey' | 'none';
4
+ export type AuthMode = 'apiKey' | 'dsn' | 'none';
5
5
  /**
6
6
  * Supported HTTP methods.
7
7
  */
@@ -84,7 +84,7 @@ export declare class HttpClient {
84
84
  * Updates the API key at runtime.
85
85
  */
86
86
  setApiKey(apiKey?: string): void;
87
- startHealthCheck(healthCheck: () => Promise<unknown>): void;
87
+ startHealthCheck(): void;
88
88
  /**
89
89
  * GET request.
90
90
  */
@@ -107,6 +107,8 @@ export declare class HttpClient {
107
107
  delete<T>(path: string, options?: Omit<RequestOptions, 'method' | 'path'>): Promise<T>;
108
108
  /**
109
109
  * Executes a request with retry logic.
110
+ * Request outcome depends only on request execution/retry/timeout,
111
+ * never on startup healthcheck state.
110
112
  */
111
113
  request<T>(options: RequestOptions): Promise<T>;
112
114
  /**
@@ -121,6 +123,7 @@ export declare class HttpClient {
121
123
  * Parses the body as JSON when possible.
122
124
  */
123
125
  private readBody;
126
+ private checkHealth;
124
127
  private parseRetryAfter;
125
128
  /**
126
129
  * Simple delay for retries.