@logscopeai/logscope 0.1.0-beta.4 → 1.0.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 +35 -56
- package/dist/config/config-guards.js +2 -7
- package/dist/config/config-guards.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/logscope.js +1 -19
- package/dist/logscope.js.map +1 -1
- package/dist/types.d.ts +2 -32
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
# @logscopeai/logscope
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Stable `1.0` Node.js SDK for sending application logs to the Logscope Ingestion API.
|
|
4
4
|
>
|
|
5
|
-
> `@logscopeai/logscope` is the official Node.js SDK for
|
|
6
|
-
>
|
|
7
|
-
> compatibility-sensitive and is maintained with a conservative, fail-safe posture.
|
|
5
|
+
> `@logscopeai/logscope` is the official Node.js SDK for Logscope producers. The documented public
|
|
6
|
+
> contract is now stable `1.0` and is maintained with a conservative, fail-safe posture.
|
|
8
7
|
|
|
9
8
|
`@logscopeai/logscope` lets Node.js applications capture logs, normalize them to the ingestion
|
|
10
9
|
schema, apply optional client-side filtering, batch delivery asynchronously, and forward logs to
|
|
11
10
|
Logscope without throwing into user code.
|
|
12
11
|
|
|
13
|
-
##
|
|
12
|
+
## Stable 1.0 Posture
|
|
14
13
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
14
|
+
- Stable `1.0` means the documented SDK contract is intended for real integrations and deliberate
|
|
15
|
+
long-lived usage.
|
|
16
|
+
- Stable `1.0` does not mean every future feature already exists:
|
|
17
|
+
- no disk persistence or local buffering;
|
|
18
|
+
- no sampling, tracing, or OpenTelemetry surface;
|
|
19
|
+
- no hidden global patching of pino or winston.
|
|
20
|
+
- Documented public behavior remains compatibility-sensitive and requires deliberate review before
|
|
21
|
+
it changes.
|
|
21
22
|
|
|
22
|
-
See `docs/
|
|
23
|
-
`docs/compatibility-contract.md` for the
|
|
23
|
+
See `docs/stable-1.0-policy.md` for the stability and change policy, and
|
|
24
|
+
`docs/compatibility-contract.md` for the stable `1.0` contract baseline.
|
|
24
25
|
|
|
25
26
|
## What This Package Does
|
|
26
27
|
|
|
@@ -41,7 +42,7 @@ See `docs/supported-beta-policy.md` for the support and deprecation policy, and
|
|
|
41
42
|
- Persist logs to disk.
|
|
42
43
|
- Provide storage, analytics, dashboarding, or querying.
|
|
43
44
|
- Replace structured logging frameworks.
|
|
44
|
-
-
|
|
45
|
+
- Provide hosted-service SLA guarantees by itself.
|
|
45
46
|
|
|
46
47
|
## Installation
|
|
47
48
|
|
|
@@ -50,7 +51,8 @@ npm install @logscopeai/logscope
|
|
|
50
51
|
```
|
|
51
52
|
|
|
52
53
|
For workspace development and local package iteration, `npm link` remains supported. See
|
|
53
|
-
`docs/local-development.md` for the canonical SDK-side local
|
|
54
|
+
`docs/local-development.md` for the canonical SDK-side standalone-vs-integrated local-topology
|
|
55
|
+
guidance.
|
|
54
56
|
|
|
55
57
|
## Quick Start (`Logscope`)
|
|
56
58
|
|
|
@@ -65,7 +67,13 @@ logscope.info('Service started');
|
|
|
65
67
|
logscope.error('Payment failed', { orderId: 123 });
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
`new Logscope({ apiKey })` uses
|
|
70
|
+
`new Logscope({ apiKey })` currently uses this default ingestion URL:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
https://dev.ingestion.logscopeai.com
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The planned production ingestion URL is:
|
|
69
77
|
|
|
70
78
|
```text
|
|
71
79
|
https://ingestion.logscopeai.com
|
|
@@ -80,33 +88,7 @@ const logscope = new Logscope({
|
|
|
80
88
|
});
|
|
81
89
|
```
|
|
82
90
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
The compatibility entrypoint remains available:
|
|
86
|
-
|
|
87
|
-
```ts
|
|
88
|
-
import { createLogscopeClient } from '@logscopeai/logscope';
|
|
89
|
-
|
|
90
|
-
const logscope = createLogscopeClient({
|
|
91
|
-
apiKey: process.env.LOGSCOPE_API_KEY!,
|
|
92
|
-
captureConsole: true,
|
|
93
|
-
context: {
|
|
94
|
-
source: 'billing-api',
|
|
95
|
-
},
|
|
96
|
-
logFilter: {
|
|
97
|
-
levels: ['warn', 'error'],
|
|
98
|
-
},
|
|
99
|
-
runtime: {
|
|
100
|
-
maxBatchSize: 25,
|
|
101
|
-
flushIntervalMs: 1_000,
|
|
102
|
-
maxRetries: 5,
|
|
103
|
-
retryBaseDelayMs: 200,
|
|
104
|
-
retryMaxDelayMs: 4_000,
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
`createLogscopeClient` and `Logscope` expose the same manual log methods:
|
|
91
|
+
`Logscope` exposes these manual log methods:
|
|
110
92
|
|
|
111
93
|
- `trace`
|
|
112
94
|
- `debug`
|
|
@@ -120,11 +102,10 @@ const logscope = createLogscopeClient({
|
|
|
120
102
|
Client config highlights:
|
|
121
103
|
|
|
122
104
|
- `apiKey` is required.
|
|
123
|
-
- `ingestionBaseUrl` is the canonical client override for local
|
|
124
|
-
|
|
105
|
+
- `ingestionBaseUrl` is the canonical root-client override for local, development, and test
|
|
106
|
+
routing.
|
|
125
107
|
- `captureConsole` is opt-in and disabled by default.
|
|
126
|
-
-
|
|
127
|
-
deterministic source `unknown`.
|
|
108
|
+
- Root-client logs always use the deterministic fallback source `unknown`.
|
|
128
109
|
- `runtime` controls batching and retry quantities through validated safe defaults.
|
|
129
110
|
|
|
130
111
|
Runtime delivery knobs:
|
|
@@ -146,10 +127,10 @@ Invalid runtime overrides are ignored safely and fallback to defaults without th
|
|
|
146
127
|
Runtime guards are applied before delivery:
|
|
147
128
|
|
|
148
129
|
- Required config fields are validated before pipeline creation.
|
|
149
|
-
- Invalid required config triggers a safe warning and switches the client
|
|
130
|
+
- Invalid required config triggers a safe warning and switches the client or transport into no-op
|
|
150
131
|
fallback behavior.
|
|
151
132
|
- Warning diagnostics never include secret values such as API keys.
|
|
152
|
-
- `ingestionBaseUrl` is optional on the root client and falls back to the
|
|
133
|
+
- `ingestionBaseUrl` is optional on the root client and falls back to the current default when
|
|
153
134
|
omitted or invalid.
|
|
154
135
|
- The SDK does not expose a client-owned `environment` routing field.
|
|
155
136
|
|
|
@@ -168,16 +149,14 @@ Fail-safe expectations:
|
|
|
168
149
|
|
|
169
150
|
## Public Types And Utilities
|
|
170
151
|
|
|
171
|
-
The root entrypoint exports the class API,
|
|
172
|
-
normalization utility:
|
|
152
|
+
The root entrypoint exports the class API, shared types, constants, and normalization utility:
|
|
173
153
|
|
|
174
154
|
```ts
|
|
175
|
-
import { Logscope,
|
|
155
|
+
import { Logscope, normalizeLog } from '@logscopeai/logscope';
|
|
176
156
|
import type {
|
|
177
157
|
IngestionLogEntry,
|
|
178
158
|
LogLevel,
|
|
179
159
|
LogscopeClient,
|
|
180
|
-
LogscopeConfig,
|
|
181
160
|
LogscopeInitConfig,
|
|
182
161
|
} from '@logscopeai/logscope';
|
|
183
162
|
```
|
|
@@ -308,7 +287,7 @@ Response handling:
|
|
|
308
287
|
|
|
309
288
|
## Current Limits And Non-Goals
|
|
310
289
|
|
|
311
|
-
-
|
|
290
|
+
- Stable `1.0` SDK contract, not a hosted-service SLA promise.
|
|
312
291
|
- No disk persistence or local buffering.
|
|
313
292
|
- No sampling, tracing, or OpenTelemetry surface.
|
|
314
293
|
- No hidden global patching of pino or winston.
|
|
@@ -328,8 +307,8 @@ Unit tests are co-located with the files they validate and coverage is enforced
|
|
|
328
307
|
|
|
329
308
|
## Additional Documentation
|
|
330
309
|
|
|
331
|
-
-
|
|
332
|
-
- SDK
|
|
310
|
+
- Stability and change policy: `docs/stable-1.0-policy.md`
|
|
311
|
+
- Stable SDK contract: `docs/compatibility-contract.md`
|
|
333
312
|
- Local development and `npm link` guidance: `docs/local-development.md`
|
|
334
313
|
- Release verification checklist: `docs/release-verification.md`
|
|
335
314
|
- Hardening and coverage matrix: `docs/hardening-and-testing.md`
|
|
@@ -73,14 +73,9 @@ exports.buildInvalidWinstonOptionsWarning = buildInvalidWinstonOptionsWarning;
|
|
|
73
73
|
const guardLogscopeClientConfig = (config) => {
|
|
74
74
|
const apiKey = safeGetProperty(config, 'apiKey');
|
|
75
75
|
const ingestionBaseUrlCandidate = safeGetProperty(config, 'ingestionBaseUrl');
|
|
76
|
-
const endpoint = safeGetProperty(config, 'endpoint');
|
|
77
76
|
const ingestionBaseUrl = isNonEmptyString(ingestionBaseUrlCandidate)
|
|
78
77
|
? ingestionBaseUrlCandidate
|
|
79
|
-
:
|
|
80
|
-
? endpoint
|
|
81
|
-
: constants_1.DEFAULT_INGESTION_BASE_URL;
|
|
82
|
-
const context = safeGetProperty(config, 'context');
|
|
83
|
-
const source = safeGetProperty(context, 'source');
|
|
78
|
+
: constants_1.DEFAULT_INGESTION_BASE_URL;
|
|
84
79
|
const captureConsole = safeGetProperty(config, 'captureConsole') === true;
|
|
85
80
|
const logFilter = normalizeLogFilter(safeGetProperty(config, 'logFilter'));
|
|
86
81
|
const runtimeConfig = (0, runtime_config_1.resolveRuntimeConfig)(normalizeRuntimeOverrides(safeGetProperty(config, 'runtime')));
|
|
@@ -92,7 +87,7 @@ const guardLogscopeClientConfig = (config) => {
|
|
|
92
87
|
isValid: invalidFields.length === 0,
|
|
93
88
|
apiKey: isNonEmptyString(apiKey) ? apiKey : '',
|
|
94
89
|
ingestionBaseUrl,
|
|
95
|
-
source:
|
|
90
|
+
source: constants_1.SAFE_FALLBACK_SOURCE,
|
|
96
91
|
captureConsole,
|
|
97
92
|
logFilter,
|
|
98
93
|
runtimeConfig,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-guards.js","sourceRoot":"","sources":["../../src/config/config-guards.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-guards.js","sourceRoot":"","sources":["../../src/config/config-guards.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export declare const METADATA_PRIMITIVE_VALUE_KEY = "value";
|
|
|
4
4
|
export declare const MAX_MESSAGE_LENGTH = 2048;
|
|
5
5
|
export declare const MAX_METADATA_BYTES = 2048;
|
|
6
6
|
export declare const SAFE_FALLBACK_SOURCE = "unknown";
|
|
7
|
-
export declare const DEFAULT_INGESTION_BASE_URL = "https://ingestion.logscopeai.com";
|
|
7
|
+
export declare const DEFAULT_INGESTION_BASE_URL = "https://dev.ingestion.logscopeai.com";
|
package/dist/constants.js
CHANGED
|
@@ -13,5 +13,5 @@ exports.METADATA_PRIMITIVE_VALUE_KEY = 'value';
|
|
|
13
13
|
exports.MAX_MESSAGE_LENGTH = 2_048;
|
|
14
14
|
exports.MAX_METADATA_BYTES = 2_048;
|
|
15
15
|
exports.SAFE_FALLBACK_SOURCE = 'unknown';
|
|
16
|
-
exports.DEFAULT_INGESTION_BASE_URL = 'https://ingestion.logscopeai.com';
|
|
16
|
+
exports.DEFAULT_INGESTION_BASE_URL = 'https://dev.ingestion.logscopeai.com';
|
|
17
17
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAA4B;IACjD,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;CACR,CAAC;AAEW,QAAA,4BAA4B,GAAG,OAAO,CAAC;AACvC,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,0BAA0B,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAA4B;IACjD,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;CACR,CAAC;AAEW,QAAA,4BAA4B,GAAG,OAAO,CAAC;AACvC,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,0BAA0B,GAAG,sCAAsC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export * from './constants';
|
|
2
|
-
export { createLogscopeClient } from './client/create-logscope-client';
|
|
3
2
|
export { Logscope } from './logscope';
|
|
4
3
|
export { normalizeLog, type NormalizeLogInput, type NormalizeLogOptions, } from './normalization/normalize-log';
|
|
5
4
|
export * from './types';
|
package/dist/index.js
CHANGED
|
@@ -14,10 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.normalizeLog = exports.Logscope =
|
|
17
|
+
exports.normalizeLog = exports.Logscope = void 0;
|
|
18
18
|
__exportStar(require("./constants"), exports);
|
|
19
|
-
var create_logscope_client_1 = require("./client/create-logscope-client");
|
|
20
|
-
Object.defineProperty(exports, "createLogscopeClient", { enumerable: true, get: function () { return create_logscope_client_1.createLogscopeClient; } });
|
|
21
19
|
var logscope_1 = require("./logscope");
|
|
22
20
|
Object.defineProperty(exports, "Logscope", { enumerable: true, get: function () { return logscope_1.Logscope; } });
|
|
23
21
|
var normalize_log_1 = require("./normalization/normalize-log");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+DAIuC;AAHrC,6GAAA,YAAY,OAAA;AAId,0CAAwB"}
|
package/dist/logscope.js
CHANGED
|
@@ -2,26 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Logscope = void 0;
|
|
4
4
|
const create_logscope_client_1 = require("./client/create-logscope-client");
|
|
5
|
-
const constants_1 = require("./constants");
|
|
6
5
|
const resolveApiKey = (config) => {
|
|
7
6
|
return typeof config?.apiKey === 'string' ? config.apiKey : '';
|
|
8
7
|
};
|
|
9
|
-
const toNonEmptyString = (value) => {
|
|
10
|
-
if (typeof value !== 'string') {
|
|
11
|
-
return undefined;
|
|
12
|
-
}
|
|
13
|
-
return value.trim().length > 0 ? value : undefined;
|
|
14
|
-
};
|
|
15
8
|
const resolveIngestionBaseUrl = (config) => {
|
|
16
|
-
|
|
17
|
-
const endpoint = toNonEmptyString(config?.endpoint);
|
|
18
|
-
return ingestionBaseUrl ?? endpoint ?? constants_1.DEFAULT_INGESTION_BASE_URL;
|
|
19
|
-
};
|
|
20
|
-
const resolveSource = (config) => {
|
|
21
|
-
if (typeof config?.context?.source === 'string') {
|
|
22
|
-
return config.context.source;
|
|
23
|
-
}
|
|
24
|
-
return constants_1.SAFE_FALLBACK_SOURCE;
|
|
9
|
+
return typeof config?.ingestionBaseUrl === 'string' ? config.ingestionBaseUrl : undefined;
|
|
25
10
|
};
|
|
26
11
|
class Logscope {
|
|
27
12
|
client;
|
|
@@ -30,9 +15,6 @@ class Logscope {
|
|
|
30
15
|
apiKey: resolveApiKey(config),
|
|
31
16
|
ingestionBaseUrl: resolveIngestionBaseUrl(config),
|
|
32
17
|
captureConsole: config?.captureConsole === true,
|
|
33
|
-
context: {
|
|
34
|
-
source: resolveSource(config),
|
|
35
|
-
},
|
|
36
18
|
logFilter: config?.logFilter,
|
|
37
19
|
runtime: config?.runtime,
|
|
38
20
|
};
|
package/dist/logscope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logscope.js","sourceRoot":"","sources":["../src/logscope.ts"],"names":[],"mappings":";;;AAAA,4EAAuE;
|
|
1
|
+
{"version":3,"file":"logscope.js","sourceRoot":"","sources":["../src/logscope.ts"],"names":[],"mappings":";;;AAAA,4EAAuE;AAGvE,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAU,EAAE;IAC3D,OAAO,OAAO,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,MAA0B,EAAsB,EAAE;IACjF,OAAO,OAAO,MAAM,EAAE,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC,CAAC;AAEF,MAAa,QAAQ;IACF,MAAM,CAAiB;IAExC,YAAY,MAA0B;QACpC,MAAM,cAAc,GAAmB;YACrC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;YAC7B,gBAAgB,EAAE,uBAAuB,CAAC,MAAM,CAAC;YACjD,cAAc,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI;YAC/C,SAAS,EAAE,MAAM,EAAE,SAAS;YAC5B,OAAO,EAAE,MAAM,EAAE,OAAO;SACzB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAA,6CAAoB,EAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,QAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,QAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,QAAkB;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,QAAkB;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,QAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,QAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF;AAtCD,4BAsCC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -9,43 +9,14 @@ export interface LogscopeRuntimeConfig {
|
|
|
9
9
|
retryBaseDelayMs?: number;
|
|
10
10
|
retryMaxDelayMs?: number;
|
|
11
11
|
}
|
|
12
|
-
interface
|
|
13
|
-
apiKey: string;
|
|
14
|
-
captureConsole?: boolean;
|
|
15
|
-
context?: {
|
|
16
|
-
/**
|
|
17
|
-
* @deprecated Source input is optional and falls back safely when omitted.
|
|
18
|
-
*/
|
|
19
|
-
source?: string;
|
|
20
|
-
};
|
|
21
|
-
logFilter?: LogFilterConfig;
|
|
22
|
-
runtime?: LogscopeRuntimeConfig;
|
|
23
|
-
}
|
|
24
|
-
export interface LogscopeInitConfig {
|
|
12
|
+
export interface LogscopeConfig {
|
|
25
13
|
apiKey: string;
|
|
26
14
|
ingestionBaseUrl?: string;
|
|
27
|
-
/**
|
|
28
|
-
* @deprecated Use ingestionBaseUrl instead.
|
|
29
|
-
*/
|
|
30
|
-
endpoint?: string;
|
|
31
15
|
captureConsole?: boolean;
|
|
32
|
-
context?: {
|
|
33
|
-
/**
|
|
34
|
-
* @deprecated Source input is optional and falls back safely when omitted.
|
|
35
|
-
*/
|
|
36
|
-
source?: string;
|
|
37
|
-
};
|
|
38
16
|
logFilter?: LogFilterConfig;
|
|
39
17
|
runtime?: LogscopeRuntimeConfig;
|
|
40
18
|
}
|
|
41
|
-
|
|
42
|
-
ingestionBaseUrl?: string;
|
|
43
|
-
/**
|
|
44
|
-
* @deprecated Use ingestionBaseUrl instead.
|
|
45
|
-
*/
|
|
46
|
-
endpoint?: string;
|
|
47
|
-
}
|
|
48
|
-
export type LogscopeConfig = LogscopeConfigBase & LogscopeIngestionTarget;
|
|
19
|
+
export type LogscopeInitConfig = LogscopeConfig;
|
|
49
20
|
export interface LogscopeClient {
|
|
50
21
|
trace(message: string, metadata?: unknown): void;
|
|
51
22
|
debug(message: string, metadata?: unknown): void;
|
|
@@ -66,4 +37,3 @@ export interface IngestionLogEntry {
|
|
|
66
37
|
message: string;
|
|
67
38
|
metadata?: Record<string, unknown>;
|
|
68
39
|
}
|
|
69
|
-
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logscopeai/logscope",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Stable 1.0 Node.js SDK for sending application logs to the Logscope ingestion API.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"test": "vitest run --coverage",
|
|
31
31
|
"test:coverage": "vitest run --coverage",
|
|
32
32
|
"test:watch": "vitest",
|
|
33
|
+
"prepare": "husky install",
|
|
33
34
|
"format": "prettier --config .prettierrc --write .",
|
|
34
35
|
"format:check": "prettier --config .prettierrc --check ."
|
|
35
36
|
},
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"devDependencies": {
|
|
56
57
|
"@types/node": "^22.10.2",
|
|
57
58
|
"@vitest/coverage-v8": "^2.1.8",
|
|
59
|
+
"husky": "^9.1.7",
|
|
58
60
|
"lint-staged": "^15.4.3",
|
|
59
61
|
"prettier": "^3.4.2",
|
|
60
62
|
"typescript": "^5.7.2",
|
|
@@ -62,7 +64,9 @@
|
|
|
62
64
|
"winston": "^3.19.0"
|
|
63
65
|
},
|
|
64
66
|
"lint-staged": {
|
|
65
|
-
"*.{ts,js,tsx,jsx,html,css,scss,json,md}":
|
|
67
|
+
"*.{ts,js,tsx,jsx,html,css,scss,json,md}": [
|
|
68
|
+
"npx prettier --config .prettierrc --write"
|
|
69
|
+
]
|
|
66
70
|
},
|
|
67
71
|
"engines": {
|
|
68
72
|
"node": ">=20"
|