@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.
- package/README.md +140 -157
- package/dist/apis/ingestApi.d.ts +1 -15
- package/dist/apis/ingestApi.d.ts.map +1 -1
- package/dist/apis/ingestApi.js +2 -151
- package/dist/apis/ingestApi.js.map +1 -1
- package/dist/apis/uptimeApi.js +1 -1
- package/dist/apis/uptimeApi.js.map +1 -1
- package/dist/domain/ingest.d.ts +4 -33
- package/dist/domain/ingest.d.ts.map +1 -1
- package/dist/http/httpClient.d.ts +5 -2
- package/dist/http/httpClient.d.ts.map +1 -1
- package/dist/http/httpClient.js +44 -8
- package/dist/http/httpClient.js.map +1 -1
- package/dist/index.d.ts +18 -494
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -568
- package/dist/index.js.map +1 -1
- package/dist/sdk.d.ts +4 -9
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +7 -19
- package/dist/sdk.js.map +1 -1
- package/package.json +9 -16
- package/dist/src/apis/ingestApi.d.ts +0 -22
- package/dist/src/apis/ingestApi.js +0 -167
- package/dist/src/apis/ingestApi.js.map +0 -1
- package/dist/src/apis/uptimeApi.d.ts +0 -11
- package/dist/src/apis/uptimeApi.js +0 -39
- package/dist/src/apis/uptimeApi.js.map +0 -1
- package/dist/src/domain/ingest.d.ts +0 -47
- package/dist/src/domain/ingest.js +0 -2
- package/dist/src/domain/ingest.js.map +0 -1
- package/dist/src/domain/uptime.d.ts +0 -23
- package/dist/src/domain/uptime.js +0 -2
- package/dist/src/domain/uptime.js.map +0 -1
- package/dist/src/http/errors.d.ts +0 -33
- package/dist/src/http/errors.js +0 -54
- package/dist/src/http/errors.js.map +0 -1
- package/dist/src/http/httpClient.d.ts +0 -45
- package/dist/src/http/httpClient.js +0 -165
- package/dist/src/http/httpClient.js.map +0 -1
- package/dist/src/index.d.ts +0 -12
- package/dist/src/index.js +0 -7
- package/dist/src/index.js.map +0 -1
- package/dist/src/sdk.d.ts +0 -23
- package/dist/src/sdk.js +0 -40
- package/dist/src/sdk.js.map +0 -1
- package/dist/src/utils/processContext.d.ts +0 -34
- package/dist/src/utils/processContext.js +0 -47
- package/dist/src/utils/processContext.js.map +0 -1
- package/dist/src/utils/validate.d.ts +0 -2
- package/dist/src/utils/validate.js +0 -12
- package/dist/src/utils/validate.js.map +0 -1
- package/dist/tests/httpClient.test.d.ts +0 -1
- package/dist/tests/httpClient.test.js +0 -47
- package/dist/tests/httpClient.test.js.map +0 -1
- package/dist/tests/ingestApi.test.d.ts +0 -1
- package/dist/tests/ingestApi.test.js +0 -65
- package/dist/tests/ingestApi.test.js.map +0 -1
- package/dist/tests/observaSdk.integration.test.d.ts +0 -1
- package/dist/tests/observaSdk.integration.test.js +0 -51
- package/dist/tests/observaSdk.integration.test.js.map +0 -1
- package/dist/tests/sdk.test.d.ts +0 -1
- package/dist/tests/sdk.test.js +0 -104
- package/dist/tests/sdk.test.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/utils/processContext.d.ts +0 -35
- package/dist/utils/processContext.d.ts.map +0 -1
- package/dist/utils/processContext.js +0 -47
- package/dist/utils/processContext.js.map +0 -1
- package/src/apis/ingestApi.ts +0 -185
- package/src/apis/uptimeApi.ts +0 -58
- package/src/domain/ingest.ts +0 -89
- package/src/domain/uptime.ts +0 -86
- package/src/http/errors.ts +0 -88
- package/src/http/httpClient.ts +0 -277
- package/src/index.ts +0 -68
- package/src/sdk.ts +0 -103
- package/src/utils/processContext.ts +0 -84
- package/src/utils/validate.ts +0 -19
package/dist/sdk.d.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { IngestApi
|
|
1
|
+
import { IngestApi } from './apis/ingestApi';
|
|
2
2
|
import { UptimeApi } from './apis/uptimeApi';
|
|
3
3
|
import { type RetryPolicy } from './http/httpClient';
|
|
4
|
-
import { type ProcessContext, type ProcessContextDynamic, type ProcessContextDynamicOptions, type ProcessContextOptions, type ProcessContextStatic, type ProcessContextStaticOptions } from './utils/processContext';
|
|
5
4
|
/**
|
|
6
5
|
* SDK configuration options.
|
|
7
6
|
*/
|
|
8
7
|
export type ObservaSDKOptions = {
|
|
9
8
|
/**
|
|
10
9
|
* Organization API key used to authenticate SDK requests.
|
|
10
|
+
* Optional — when omitted, write endpoints authenticate via dsnKey only (browser-safe mode).
|
|
11
11
|
*/
|
|
12
|
-
apiKey
|
|
12
|
+
apiKey?: string;
|
|
13
13
|
/**
|
|
14
14
|
* Project DSN used to identify the destination of events and heartbeats.
|
|
15
15
|
*/
|
|
16
16
|
dsnKey: string;
|
|
17
|
-
baseUrl?: string;
|
|
18
17
|
/**
|
|
19
18
|
* HTTP request timeout in milliseconds.
|
|
20
19
|
*/
|
|
@@ -27,7 +26,6 @@ export type ObservaSDKOptions = {
|
|
|
27
26
|
* Additional headers sent with every request.
|
|
28
27
|
*/
|
|
29
28
|
headers?: Record<string, string>;
|
|
30
|
-
ingest?: IngestNormalizationOptions;
|
|
31
29
|
};
|
|
32
30
|
/**
|
|
33
31
|
* Main SDK for error ingestion and uptime heartbeats.
|
|
@@ -43,15 +41,12 @@ export declare class ObservaSDK {
|
|
|
43
41
|
readonly ingest: IngestApi;
|
|
44
42
|
private readonly http;
|
|
45
43
|
/**
|
|
46
|
-
* Creates an SDK instance
|
|
44
|
+
* Creates an SDK instance. dsnKey is required; apiKey is optional (DSN-only mode).
|
|
47
45
|
*/
|
|
48
46
|
constructor(options: ObservaSDKOptions);
|
|
49
47
|
/**
|
|
50
48
|
* Updates the API key used by the SDK at runtime.
|
|
51
49
|
*/
|
|
52
50
|
setApiKey(apiKey: string): void;
|
|
53
|
-
getProcessContext(options?: ProcessContextOptions): ProcessContext;
|
|
54
|
-
getProcessContextStatic(options?: ProcessContextStaticOptions): ProcessContextStatic;
|
|
55
|
-
getProcessContextDynamic(options?: ProcessContextDynamicOptions): ProcessContextDynamic;
|
|
56
51
|
}
|
|
57
52
|
//# sourceMappingURL=sdk.d.ts.map
|
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,
|
|
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;AAEhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;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;IAgBtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;CAG3B"}
|
package/dist/sdk.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { IngestApi } from './apis/ingestApi';
|
|
2
2
|
import { UptimeApi } from './apis/uptimeApi';
|
|
3
3
|
import { HttpClient } from './http/httpClient';
|
|
4
|
-
import { getProcessContext, getProcessContextDynamic, getProcessContextStatic, } from './utils/processContext';
|
|
5
4
|
/**
|
|
6
5
|
* Fixed backend target for the SDK.
|
|
7
6
|
*/
|
|
8
|
-
const DEFAULT_BASE_URL = 'https://backend-observa-production.up.railway.app
|
|
7
|
+
const DEFAULT_BASE_URL = 'https://backend-observa-production.up.railway.app';
|
|
9
8
|
/**
|
|
10
9
|
* Main SDK for error ingestion and uptime heartbeats.
|
|
11
10
|
*/
|
|
@@ -20,24 +19,22 @@ export class ObservaSDK {
|
|
|
20
19
|
ingest;
|
|
21
20
|
http;
|
|
22
21
|
/**
|
|
23
|
-
* Creates an SDK instance
|
|
22
|
+
* Creates an SDK instance. dsnKey is required; apiKey is optional (DSN-only mode).
|
|
24
23
|
*/
|
|
25
24
|
constructor(options) {
|
|
26
|
-
if (!options
|
|
27
|
-
throw new Error('
|
|
25
|
+
if (!options?.dsnKey) {
|
|
26
|
+
throw new Error('dsnKey is required');
|
|
28
27
|
}
|
|
29
|
-
const baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, '');
|
|
30
|
-
const normalizedBaseUrl = baseUrl.endsWith('/v1') ? baseUrl : `${baseUrl}/v1`;
|
|
31
28
|
this.http = new HttpClient({
|
|
32
|
-
baseUrl:
|
|
29
|
+
baseUrl: DEFAULT_BASE_URL,
|
|
33
30
|
apiKey: options.apiKey,
|
|
34
31
|
timeoutMs: options.timeoutMs,
|
|
35
32
|
retry: options.retry,
|
|
36
33
|
headers: options.headers,
|
|
37
34
|
});
|
|
38
|
-
this.
|
|
35
|
+
this.http.startHealthCheck();
|
|
39
36
|
this.uptime = new UptimeApi(this.http, options.dsnKey);
|
|
40
|
-
this.
|
|
37
|
+
this.ingest = new IngestApi(this.http, options.dsnKey);
|
|
41
38
|
}
|
|
42
39
|
/**
|
|
43
40
|
* Updates the API key used by the SDK at runtime.
|
|
@@ -45,14 +42,5 @@ export class ObservaSDK {
|
|
|
45
42
|
setApiKey(apiKey) {
|
|
46
43
|
this.http.setApiKey(apiKey);
|
|
47
44
|
}
|
|
48
|
-
getProcessContext(options) {
|
|
49
|
-
return getProcessContext(options);
|
|
50
|
-
}
|
|
51
|
-
getProcessContextStatic(options) {
|
|
52
|
-
return getProcessContextStatic(options);
|
|
53
|
-
}
|
|
54
|
-
getProcessContextDynamic(options) {
|
|
55
|
-
return getProcessContextDynamic(options);
|
|
56
|
-
}
|
|
57
45
|
}
|
|
58
46
|
//# sourceMappingURL=sdk.js.map
|
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,
|
|
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;AA6BhE;;GAEG;AACH,MAAM,gBAAgB,GAAG,mDAAmD,CAAA;AAE5E;;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,EAAE,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACzC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC;YACvB,OAAO,EAAE,gBAAgB;YACzB,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,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC5B,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;IAC1D,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@observa/sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.5",
|
|
4
4
|
"description": "Observa SDK for Node.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -21,32 +21,25 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
|
-
"
|
|
25
|
-
"dist/"
|
|
24
|
+
"dist"
|
|
26
25
|
],
|
|
27
26
|
"sideEffects": false,
|
|
28
27
|
"engines": {
|
|
29
28
|
"node": ">=18"
|
|
30
29
|
},
|
|
31
30
|
"devDependencies": {
|
|
31
|
+
"@swc/core": "^1.15.18",
|
|
32
|
+
"@swc/jest": "^0.2.39",
|
|
32
33
|
"@types/bun": "latest",
|
|
33
34
|
"@types/jest": "^29.5.12",
|
|
34
|
-
"jest": "^
|
|
35
|
-
"standard-version": "^9.5.0",
|
|
36
|
-
"ts-jest": "^29.1.2",
|
|
37
|
-
"tsup": "^8.0.1",
|
|
35
|
+
"jest": "^30.3.0",
|
|
38
36
|
"typescript": "^5.6.3"
|
|
39
37
|
},
|
|
40
38
|
"scripts": {
|
|
41
|
-
"build": "
|
|
42
|
-
"changelog": "standard-version --skip.bump --skip.commit --skip.tag",
|
|
43
|
-
"release": "standard-version",
|
|
44
|
-
"release:major": "standard-version --release-as major",
|
|
45
|
-
"release:minor": "standard-version --release-as minor",
|
|
46
|
-
"release:patch": "standard-version --release-as patch",
|
|
39
|
+
"build": "tsc -p tsconfig.build.json",
|
|
47
40
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
48
|
-
"test": "node
|
|
49
|
-
"test:watch": "node
|
|
50
|
-
"test:list": "node
|
|
41
|
+
"test": "node ./node_modules/jest/bin/jest.js --config ./jest.config.mjs",
|
|
42
|
+
"test:watch": "node ./node_modules/jest/bin/jest.js --watch --config ./jest.config.mjs",
|
|
43
|
+
"test:list": "node ./node_modules/jest/bin/jest.js --listTests --config ./jest.config.mjs"
|
|
51
44
|
}
|
|
52
45
|
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { IngestRequest, IngestResponse } from '../domain/ingest';
|
|
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
|
-
export declare class IngestApi {
|
|
14
|
-
private readonly http;
|
|
15
|
-
private readonly defaultDsnKey?;
|
|
16
|
-
private readonly normalization?;
|
|
17
|
-
constructor(http: HttpClient, defaultDsnKey?: string | undefined, normalization?: IngestNormalizationOptions | undefined);
|
|
18
|
-
event(input: IngestRequest): Promise<IngestResponse>;
|
|
19
|
-
health(dsnKey?: string): Promise<{
|
|
20
|
-
ok: boolean;
|
|
21
|
-
}>;
|
|
22
|
-
}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'crypto';
|
|
2
|
-
import { ValidationError } from '../http/errors.js';
|
|
3
|
-
import { getProcessContextDynamic, getProcessContextStatic } from '../utils/processContext.js';
|
|
4
|
-
import { ensureDefined, ensureNonEmpty } from '../utils/validate.js';
|
|
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
|
-
export class IngestApi {
|
|
16
|
-
http;
|
|
17
|
-
defaultDsnKey;
|
|
18
|
-
normalization;
|
|
19
|
-
constructor(http, defaultDsnKey, normalization) {
|
|
20
|
-
this.http = http;
|
|
21
|
-
this.defaultDsnKey = defaultDsnKey;
|
|
22
|
-
this.normalization = normalization;
|
|
23
|
-
}
|
|
24
|
-
async event(input) {
|
|
25
|
-
ensureDefined(input, 'input');
|
|
26
|
-
const dsnKey = input.dsnKey ?? this.defaultDsnKey;
|
|
27
|
-
ensureDefined(dsnKey, 'dsnKey');
|
|
28
|
-
ensureNonEmpty(dsnKey, 'dsnKey');
|
|
29
|
-
ensureDefined(input.event, 'event');
|
|
30
|
-
if (input.idempotencyKey && input.idempotencyKey.length > 128) {
|
|
31
|
-
throw new ValidationError('idempotencyKey must be at most 128 characters');
|
|
32
|
-
}
|
|
33
|
-
const headers = {};
|
|
34
|
-
if (input.idempotencyKey)
|
|
35
|
-
headers['x-idempotency-key'] = input.idempotencyKey;
|
|
36
|
-
if (input.sdkVersion)
|
|
37
|
-
headers['x-sdk-version'] = input.sdkVersion;
|
|
38
|
-
const { idempotencyKey, sdkVersion, event, ...body } = input;
|
|
39
|
-
const normalizedEvent = normalizeEvent(event, this.normalization);
|
|
40
|
-
return this.http.post('/ingest/events', { ...body, dsnKey, event: normalizedEvent }, { auth: 'apiKey', headers });
|
|
41
|
-
}
|
|
42
|
-
async health(dsnKey) {
|
|
43
|
-
const resolvedDsnKey = dsnKey ?? this.defaultDsnKey;
|
|
44
|
-
ensureDefined(resolvedDsnKey, 'dsnKey');
|
|
45
|
-
ensureNonEmpty(resolvedDsnKey, 'dsnKey');
|
|
46
|
-
return this.http.post('/ingest/health', { dsnKey: resolvedDsnKey }, { auth: 'apiKey' });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
function normalizeEvent(event, options) {
|
|
50
|
-
const config = { ...DEFAULT_NORMALIZATION, ...options };
|
|
51
|
-
const normalizedTimestamp = normalizeTimestamp(event.timestamp);
|
|
52
|
-
const normalizedLevel = event.level ? event.level.toLowerCase() : undefined;
|
|
53
|
-
const normalizedMessage = event.message ? truncate(event.message, config.maxMessageLength) : undefined;
|
|
54
|
-
const normalizedException = normalizeException(event.exception, config);
|
|
55
|
-
if (!normalizedMessage && !normalizedException) {
|
|
56
|
-
throw new ValidationError('event message or exception is required');
|
|
57
|
-
}
|
|
58
|
-
const normalizedContext = normalizeContext(event.context, config);
|
|
59
|
-
const normalizedEvent = {
|
|
60
|
-
...event,
|
|
61
|
-
event_id: event.event_id ?? randomUUID(),
|
|
62
|
-
timestamp: normalizedTimestamp,
|
|
63
|
-
schema_version: event.schema_version ?? config.schemaVersion,
|
|
64
|
-
level: normalizedLevel,
|
|
65
|
-
message: normalizedMessage,
|
|
66
|
-
exception: normalizedException,
|
|
67
|
-
context: normalizedContext,
|
|
68
|
-
};
|
|
69
|
-
return enforceSizeLimit(normalizedEvent, config);
|
|
70
|
-
}
|
|
71
|
-
function normalizeTimestamp(timestamp) {
|
|
72
|
-
if (!timestamp)
|
|
73
|
-
return new Date().toISOString();
|
|
74
|
-
const parsed = new Date(timestamp);
|
|
75
|
-
if (Number.isNaN(parsed.getTime())) {
|
|
76
|
-
throw new ValidationError('timestamp must be a valid ISO date');
|
|
77
|
-
}
|
|
78
|
-
return parsed.toISOString();
|
|
79
|
-
}
|
|
80
|
-
function normalizeException(exception, config) {
|
|
81
|
-
if (!exception)
|
|
82
|
-
return undefined;
|
|
83
|
-
if (!exception.type || !exception.value) {
|
|
84
|
-
throw new ValidationError('exception.type and exception.value are required');
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
...exception,
|
|
88
|
-
value: truncate(exception.value, config.maxExceptionValueLength),
|
|
89
|
-
stacktrace: normalizeStacktrace(exception.stacktrace, config.maxFrames),
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
function normalizeStacktrace(stacktrace, maxFrames) {
|
|
93
|
-
if (!stacktrace || !Array.isArray(stacktrace.frames))
|
|
94
|
-
return undefined;
|
|
95
|
-
const frames = stacktrace.frames;
|
|
96
|
-
const normalizedFrames = frames.slice(0, maxFrames).map((frame) => {
|
|
97
|
-
const filename = typeof frame?.filename === 'string' ? frame.filename : undefined;
|
|
98
|
-
const functionName = typeof frame?.function === 'string' ? frame.function : undefined;
|
|
99
|
-
const lineno = typeof frame?.lineno === 'number' ? frame.lineno : undefined;
|
|
100
|
-
const colno = typeof frame?.colno === 'number' ? frame.colno : undefined;
|
|
101
|
-
const inferredInApp = filename ? !filename.includes('node_modules') : false;
|
|
102
|
-
return {
|
|
103
|
-
filename,
|
|
104
|
-
function: functionName,
|
|
105
|
-
lineno,
|
|
106
|
-
colno,
|
|
107
|
-
in_app: typeof frame?.in_app === 'boolean' ? frame.in_app : inferredInApp,
|
|
108
|
-
};
|
|
109
|
-
});
|
|
110
|
-
return { frames: normalizedFrames };
|
|
111
|
-
}
|
|
112
|
-
function normalizeContext(context, config) {
|
|
113
|
-
if (!config.includeContext)
|
|
114
|
-
return context;
|
|
115
|
-
const systemContext = config.includeSystemContext ? getProcessContextDynamic() : undefined;
|
|
116
|
-
const runtimeContext = config.includeRuntimeContext ? getProcessContextStatic({ includeVersions: false }) : undefined;
|
|
117
|
-
const mergedContext = {
|
|
118
|
-
...context,
|
|
119
|
-
system: context?.system ?? systemContext,
|
|
120
|
-
runtime: context?.runtime ?? runtimeContext,
|
|
121
|
-
};
|
|
122
|
-
return mergedContext;
|
|
123
|
-
}
|
|
124
|
-
function enforceSizeLimit(event, config) {
|
|
125
|
-
let normalized = event;
|
|
126
|
-
if (getSize(normalized) <= config.maxEventBytes)
|
|
127
|
-
return normalized;
|
|
128
|
-
if (normalized.extra) {
|
|
129
|
-
normalized = { ...normalized, extra: undefined };
|
|
130
|
-
}
|
|
131
|
-
if (getSize(normalized) <= config.maxEventBytes)
|
|
132
|
-
return normalized;
|
|
133
|
-
if (normalized.tags) {
|
|
134
|
-
normalized = { ...normalized, tags: undefined };
|
|
135
|
-
}
|
|
136
|
-
if (getSize(normalized) <= config.maxEventBytes)
|
|
137
|
-
return normalized;
|
|
138
|
-
if (normalized.exception?.stacktrace) {
|
|
139
|
-
normalized = {
|
|
140
|
-
...normalized,
|
|
141
|
-
exception: { ...normalized.exception, stacktrace: undefined },
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
if (getSize(normalized) <= config.maxEventBytes)
|
|
145
|
-
return normalized;
|
|
146
|
-
if (normalized.message) {
|
|
147
|
-
normalized = { ...normalized, message: truncate(normalized.message, config.maxMessageLength) };
|
|
148
|
-
}
|
|
149
|
-
if (normalized.exception?.value) {
|
|
150
|
-
normalized = {
|
|
151
|
-
...normalized,
|
|
152
|
-
exception: { ...normalized.exception, value: truncate(normalized.exception.value, config.maxExceptionValueLength) },
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
if (getSize(normalized) <= config.maxEventBytes)
|
|
156
|
-
return normalized;
|
|
157
|
-
throw new ValidationError('event payload exceeds size limit');
|
|
158
|
-
}
|
|
159
|
-
function getSize(value) {
|
|
160
|
-
return Buffer.byteLength(JSON.stringify(value), 'utf8');
|
|
161
|
-
}
|
|
162
|
-
function truncate(value, maxLength) {
|
|
163
|
-
if (value.length <= maxLength)
|
|
164
|
-
return value;
|
|
165
|
-
return value.slice(0, maxLength);
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=ingestApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ingestApi.js","sourceRoot":"","sources":["../../../src/apis/ingestApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAcjE,MAAM,qBAAqB,GAAyC;IAChE,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,EAAE,GAAG,IAAI;IACxB,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,IAAI;CAChC,CAAA;AAKD,MAAM,OAAO,SAAS;IAKG;IACA;IACA;IAHrB,YACqB,IAAgB,EAChB,aAAsB,EACtB,aAA0C;QAF1C,SAAI,GAAJ,IAAI,CAAY;QAChB,kBAAa,GAAb,aAAa,CAAS;QACtB,kBAAa,GAAb,aAAa,CAA6B;IAC3D,CAAC;IAKL,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,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;QAC5D,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,gBAAgB,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IACrI,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;AAED,SAAS,cAAc,CAAC,KAAkB,EAAE,OAAoC;IAC5E,MAAM,MAAM,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAA;IACvD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3E,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtG,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACvE,IAAI,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7C,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACjE,MAAM,eAAe,GAAgB;QACjC,GAAG,KAAK;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,UAAU,EAAE;QACxC,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,aAAa;QAC5D,KAAK,EAAE,eAAuC;QAC9C,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,mBAAmB;QAC9B,OAAO,EAAE,iBAAiB;KAC7B,CAAA;IACD,OAAO,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAkB;IAC1C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC/C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;IAClC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,eAAe,CAAC,oCAAoC,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAmC,EAAE,MAA4C;IACzG,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAChC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,eAAe,CAAC,iDAAiD,CAAC,CAAA;IAChF,CAAC;IACD,OAAO;QACH,GAAG,SAAS;QACZ,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,uBAAuB,CAAC;QAChE,UAAU,EAAE,mBAAmB,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;KAC1E,CAAA;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAsD,EAAE,SAAiB;IAClG,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,OAAO,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QACjF,MAAM,YAAY,GAAG,OAAO,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QACrF,MAAM,MAAM,GAAG,OAAO,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;QAC3E,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACxE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC3E,OAAO;YACH,QAAQ;YACR,QAAQ,EAAE,YAAY;YACtB,MAAM;YACN,KAAK;YACL,MAAM,EAAE,OAAO,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;SAC5E,CAAA;IACL,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA2C,EAAE,MAA4C;IAC/G,IAAI,CAAC,MAAM,CAAC,cAAc;QAAE,OAAO,OAAO,CAAA;IAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1F,MAAM,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrH,MAAM,aAAa,GAAG;QAClB,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,aAAa;QACxC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,cAAc;KAC9C,CAAA;IACD,OAAO,aAAa,CAAA;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAkB,EAAE,MAA4C;IACtF,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,UAAU,CAAA;IAClE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACpD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,UAAU,CAAA;IAClE,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,UAAU,CAAA;IAClE,IAAI,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;QACnC,UAAU,GAAG;YACT,GAAG,UAAU;YACb,SAAS,EAAE,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;SAChE,CAAA;IACL,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,UAAU,CAAA;IAClE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAA;IAClG,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,UAAU,GAAG;YACT,GAAG,UAAU;YACb,SAAS,EAAE,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE;SACtH,CAAA;IACL,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,UAAU,CAAA;IAClE,MAAM,IAAI,eAAe,CAAC,kCAAkC,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,SAAiB;IAC9C,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAA;IAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { UptimeEvent, UptimeHeartbeatInput, UptimeSummary } from '../domain/uptime';
|
|
2
|
-
import type { HttpClient } from '../http/httpClient';
|
|
3
|
-
export declare class UptimeApi {
|
|
4
|
-
private readonly http;
|
|
5
|
-
private readonly defaultDsnKey?;
|
|
6
|
-
constructor(http: HttpClient, defaultDsnKey?: string | undefined);
|
|
7
|
-
recordHeartbeat(input: UptimeHeartbeatInput): Promise<UptimeEvent>;
|
|
8
|
-
history(projectId: string, date: string): Promise<UptimeEvent[]>;
|
|
9
|
-
latest(projectId: string): Promise<UptimeEvent | null>;
|
|
10
|
-
summary(projectId: string, days?: number, delayThresholdMinutes?: number): Promise<UptimeSummary[]>;
|
|
11
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { ensureDefined, ensureNonEmpty } from '../utils/validate.js';
|
|
2
|
-
export class UptimeApi {
|
|
3
|
-
http;
|
|
4
|
-
defaultDsnKey;
|
|
5
|
-
constructor(http, defaultDsnKey) {
|
|
6
|
-
this.http = http;
|
|
7
|
-
this.defaultDsnKey = defaultDsnKey;
|
|
8
|
-
}
|
|
9
|
-
async recordHeartbeat(input) {
|
|
10
|
-
ensureDefined(input, 'input');
|
|
11
|
-
const dsnKey = input.dsnKey ?? this.defaultDsnKey;
|
|
12
|
-
ensureDefined(dsnKey, 'dsnKey');
|
|
13
|
-
ensureNonEmpty(dsnKey, 'dsnKey');
|
|
14
|
-
ensureNonEmpty(input.status, 'status');
|
|
15
|
-
return this.http.post('/uptime/heartbeats', { ...input, dsnKey }, { auth: 'apiKey' });
|
|
16
|
-
}
|
|
17
|
-
async history(projectId, date) {
|
|
18
|
-
ensureNonEmpty(projectId, 'projectId');
|
|
19
|
-
ensureNonEmpty(date, 'date');
|
|
20
|
-
return this.http.get(`/projects/${encodeURIComponent(projectId)}/uptime/history`, {
|
|
21
|
-
query: { date },
|
|
22
|
-
auth: 'none',
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
async latest(projectId) {
|
|
26
|
-
ensureNonEmpty(projectId, 'projectId');
|
|
27
|
-
return this.http.get(`/projects/${encodeURIComponent(projectId)}/uptime/latest`, {
|
|
28
|
-
auth: 'none',
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
async summary(projectId, days, delayThresholdMinutes) {
|
|
32
|
-
ensureNonEmpty(projectId, 'projectId');
|
|
33
|
-
return this.http.get(`/projects/${encodeURIComponent(projectId)}/uptime/summary`, {
|
|
34
|
-
query: { days, delayThresholdMinutes },
|
|
35
|
-
auth: 'none',
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=uptimeApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uptimeApi.js","sourceRoot":"","sources":["../../../src/apis/uptimeApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMjE,MAAM,OAAO,SAAS;IAIW;IAAmC;IAAhE,YAA6B,IAAgB,EAAmB,aAAsB;QAAzD,SAAI,GAAJ,IAAI,CAAY;QAAmB,kBAAa,GAAb,aAAa,CAAS;IAAI,CAAC;IAK3F,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;IAKD,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;IAKD,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;IAKD,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,47 +0,0 @@
|
|
|
1
|
-
import type { ProcessContextDynamic, ProcessContextStatic } from '../utils/processContext';
|
|
2
|
-
export type IngestLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
3
|
-
export type StacktraceFrame = {
|
|
4
|
-
filename?: string;
|
|
5
|
-
function?: string;
|
|
6
|
-
lineno?: number;
|
|
7
|
-
colno?: number;
|
|
8
|
-
in_app?: boolean;
|
|
9
|
-
};
|
|
10
|
-
export type Stacktrace = {
|
|
11
|
-
frames: StacktraceFrame[];
|
|
12
|
-
};
|
|
13
|
-
export type IngestException = {
|
|
14
|
-
type: string;
|
|
15
|
-
value: string;
|
|
16
|
-
stacktrace?: Stacktrace;
|
|
17
|
-
};
|
|
18
|
-
export type RequestContext = {
|
|
19
|
-
requestId?: string;
|
|
20
|
-
userId?: string;
|
|
21
|
-
[key: string]: unknown;
|
|
22
|
-
};
|
|
23
|
-
export type IngestEventContext = {
|
|
24
|
-
system?: ProcessContextDynamic;
|
|
25
|
-
runtime?: ProcessContextStatic;
|
|
26
|
-
request?: RequestContext;
|
|
27
|
-
};
|
|
28
|
-
export type IngestEvent = {
|
|
29
|
-
event_id?: string;
|
|
30
|
-
timestamp?: string;
|
|
31
|
-
schema_version?: number;
|
|
32
|
-
level?: IngestLevel;
|
|
33
|
-
message?: string;
|
|
34
|
-
exception?: IngestException;
|
|
35
|
-
context?: IngestEventContext;
|
|
36
|
-
tags?: Record<string, string>;
|
|
37
|
-
extra?: Record<string, unknown>;
|
|
38
|
-
};
|
|
39
|
-
export type IngestRequest = {
|
|
40
|
-
dsnKey?: string;
|
|
41
|
-
event: IngestEvent;
|
|
42
|
-
idempotencyKey?: string;
|
|
43
|
-
sdkVersion?: string;
|
|
44
|
-
};
|
|
45
|
-
export type IngestResponse = {
|
|
46
|
-
event_id: string;
|
|
47
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/domain/ingest.ts"],"names":[],"mappings":""}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export type UptimeStatus = 'up' | 'down' | 'degraded';
|
|
2
|
-
export type UptimeEvent = {
|
|
3
|
-
id: string;
|
|
4
|
-
projectId: string;
|
|
5
|
-
status: UptimeStatus;
|
|
6
|
-
message?: string;
|
|
7
|
-
responseTimeMs?: number;
|
|
8
|
-
checkedAt?: string;
|
|
9
|
-
createdAt?: string;
|
|
10
|
-
};
|
|
11
|
-
export type UptimeHeartbeatInput = {
|
|
12
|
-
dsnKey?: string;
|
|
13
|
-
status: UptimeStatus;
|
|
14
|
-
responseTimeMs?: number;
|
|
15
|
-
checkedAt?: string;
|
|
16
|
-
message?: string;
|
|
17
|
-
};
|
|
18
|
-
export type UptimeSummary = {
|
|
19
|
-
date: string;
|
|
20
|
-
missingHours?: number;
|
|
21
|
-
delayMinutes?: number;
|
|
22
|
-
delayedCount?: number;
|
|
23
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uptime.js","sourceRoot":"","sources":["../../../src/domain/uptime.ts"],"names":[],"mappings":""}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export type ErrorDetails = {
|
|
2
|
-
status?: number;
|
|
3
|
-
code?: string;
|
|
4
|
-
details?: unknown;
|
|
5
|
-
retryAfter?: number;
|
|
6
|
-
};
|
|
7
|
-
export declare class SdkError extends Error {
|
|
8
|
-
readonly status?: number;
|
|
9
|
-
readonly code?: string;
|
|
10
|
-
readonly details?: unknown;
|
|
11
|
-
constructor(message: string, details?: ErrorDetails);
|
|
12
|
-
}
|
|
13
|
-
export declare class ValidationError extends SdkError {
|
|
14
|
-
}
|
|
15
|
-
export declare class AuthError extends SdkError {
|
|
16
|
-
}
|
|
17
|
-
export declare class ForbiddenError extends SdkError {
|
|
18
|
-
}
|
|
19
|
-
export declare class NotFoundError extends SdkError {
|
|
20
|
-
}
|
|
21
|
-
export declare class ConflictError extends SdkError {
|
|
22
|
-
}
|
|
23
|
-
export declare class RateLimitError extends SdkError {
|
|
24
|
-
readonly retryAfter?: number;
|
|
25
|
-
constructor(message: string, details?: ErrorDetails);
|
|
26
|
-
}
|
|
27
|
-
export declare class ServerError extends SdkError {
|
|
28
|
-
}
|
|
29
|
-
export declare class NetworkError extends SdkError {
|
|
30
|
-
}
|
|
31
|
-
export declare class TimeoutError extends SdkError {
|
|
32
|
-
}
|
|
33
|
-
export declare function mapHttpError(status: number, details?: unknown, retryAfter?: number): SdkError;
|
package/dist/src/http/errors.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export class SdkError extends Error {
|
|
2
|
-
status;
|
|
3
|
-
code;
|
|
4
|
-
details;
|
|
5
|
-
constructor(message, details) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.name = new.target.name;
|
|
8
|
-
this.status = details?.status;
|
|
9
|
-
this.code = details?.code;
|
|
10
|
-
this.details = details?.details;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export class ValidationError extends SdkError {
|
|
14
|
-
}
|
|
15
|
-
export class AuthError extends SdkError {
|
|
16
|
-
}
|
|
17
|
-
export class ForbiddenError extends SdkError {
|
|
18
|
-
}
|
|
19
|
-
export class NotFoundError extends SdkError {
|
|
20
|
-
}
|
|
21
|
-
export class ConflictError extends SdkError {
|
|
22
|
-
}
|
|
23
|
-
export class RateLimitError extends SdkError {
|
|
24
|
-
retryAfter;
|
|
25
|
-
constructor(message, details) {
|
|
26
|
-
super(message, details);
|
|
27
|
-
this.retryAfter = details?.retryAfter;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export class ServerError extends SdkError {
|
|
31
|
-
}
|
|
32
|
-
export class NetworkError extends SdkError {
|
|
33
|
-
}
|
|
34
|
-
export class TimeoutError extends SdkError {
|
|
35
|
-
}
|
|
36
|
-
export function mapHttpError(status, details, retryAfter) {
|
|
37
|
-
const info = { status, details, retryAfter };
|
|
38
|
-
if (status === 400)
|
|
39
|
-
return new ValidationError('Invalid request', info);
|
|
40
|
-
if (status === 401)
|
|
41
|
-
return new AuthError('Unauthorized', info);
|
|
42
|
-
if (status === 403)
|
|
43
|
-
return new ForbiddenError('Forbidden', info);
|
|
44
|
-
if (status === 404)
|
|
45
|
-
return new NotFoundError('Resource not found', info);
|
|
46
|
-
if (status === 409)
|
|
47
|
-
return new ConflictError('Conflict', info);
|
|
48
|
-
if (status === 429)
|
|
49
|
-
return new RateLimitError('Rate limit exceeded', info);
|
|
50
|
-
if (status >= 500)
|
|
51
|
-
return new ServerError('Server error', info);
|
|
52
|
-
return new SdkError('HTTP error', info);
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/http/errors.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACtB,MAAM,CAAS;IACf,IAAI,CAAS;IACb,OAAO,CAAU;IAK1B,YAAY,OAAe,EAAE,OAAsB;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;IACnC,CAAC;CACJ;AAKD,MAAM,OAAO,eAAgB,SAAQ,QAAQ;CAAI;AAIjD,MAAM,OAAO,SAAU,SAAQ,QAAQ;CAAI;AAI3C,MAAM,OAAO,cAAe,SAAQ,QAAQ;CAAI;AAIhD,MAAM,OAAO,aAAc,SAAQ,QAAQ;CAAI;AAI/C,MAAM,OAAO,aAAc,SAAQ,QAAQ;CAAI;AAI/C,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC/B,UAAU,CAAS;IAE5B,YAAY,OAAe,EAAE,OAAsB;QAC/C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAA;IACzC,CAAC;CACJ;AAID,MAAM,OAAO,WAAY,SAAQ,QAAQ;CAAI;AAI7C,MAAM,OAAO,YAAa,SAAQ,QAAQ;CAAI;AAI9C,MAAM,OAAO,YAAa,SAAQ,QAAQ;CAAI;AAK9C,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAiB,EAAE,UAAmB;IAC/E,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;IAC5C,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;IACvE,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAC9D,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAChE,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAA;IACxE,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC9D,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAA;IAC1E,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAC/D,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC"}
|