@logscopeai/logscope 0.1.0-beta.2
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/LICENSE +21 -0
- package/README.md +341 -0
- package/dist/client/create-logscope-client.d.ts +23 -0
- package/dist/client/create-logscope-client.js +112 -0
- package/dist/client/create-logscope-client.js.map +1 -0
- package/dist/client/log-methods.d.ts +3 -0
- package/dist/client/log-methods.js +27 -0
- package/dist/client/log-methods.js.map +1 -0
- package/dist/config/config-guards.d.ts +31 -0
- package/dist/config/config-guards.js +128 -0
- package/dist/config/config-guards.js.map +1 -0
- package/dist/config/runtime-config.d.ts +17 -0
- package/dist/config/runtime-config.js +41 -0
- package/dist/config/runtime-config.js.map +1 -0
- package/dist/console/capture-console.d.ts +16 -0
- package/dist/console/capture-console.js +117 -0
- package/dist/console/capture-console.js.map +1 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.js +17 -0
- package/dist/constants.js.map +1 -0
- package/dist/filter/level-filter.d.ts +3 -0
- package/dist/filter/level-filter.js +16 -0
- package/dist/filter/level-filter.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/logscope.d.ts +11 -0
- package/dist/logscope.js +61 -0
- package/dist/logscope.js.map +1 -0
- package/dist/normalization/normalize-log.d.ts +12 -0
- package/dist/normalization/normalize-log.js +140 -0
- package/dist/normalization/normalize-log.js.map +1 -0
- package/dist/pino/map-pino-level.d.ts +2 -0
- package/dist/pino/map-pino-level.js +40 -0
- package/dist/pino/map-pino-level.js.map +1 -0
- package/dist/pino/transport.d.ts +20 -0
- package/dist/pino/transport.js +185 -0
- package/dist/pino/transport.js.map +1 -0
- package/dist/pino.d.ts +4 -0
- package/dist/pino.js +11 -0
- package/dist/pino.js.map +1 -0
- package/dist/pipeline/batch-queue.d.ts +9 -0
- package/dist/pipeline/batch-queue.js +29 -0
- package/dist/pipeline/batch-queue.js.map +1 -0
- package/dist/pipeline/delivery-runner.d.ts +12 -0
- package/dist/pipeline/delivery-runner.js +63 -0
- package/dist/pipeline/delivery-runner.js.map +1 -0
- package/dist/pipeline/flush-scheduler.d.ts +14 -0
- package/dist/pipeline/flush-scheduler.js +39 -0
- package/dist/pipeline/flush-scheduler.js.map +1 -0
- package/dist/pipeline/pipeline-ingress.d.ts +19 -0
- package/dist/pipeline/pipeline-ingress.js +37 -0
- package/dist/pipeline/pipeline-ingress.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +21 -0
- package/dist/pipeline/pipeline.js +109 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/retry/backoff.d.ts +2 -0
- package/dist/retry/backoff.js +16 -0
- package/dist/retry/backoff.js.map +1 -0
- package/dist/retry/retry-policy.d.ts +7 -0
- package/dist/retry/retry-policy.js +26 -0
- package/dist/retry/retry-policy.js.map +1 -0
- package/dist/transport/send-ingestion-request.d.ts +4 -0
- package/dist/transport/send-ingestion-request.js +75 -0
- package/dist/transport/send-ingestion-request.js.map +1 -0
- package/dist/transport/transport-types.d.ts +39 -0
- package/dist/transport/transport-types.js +3 -0
- package/dist/transport/transport-types.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.guardPinoTransportOptions = exports.guardLogscopeClientConfig = exports.buildInvalidPinoOptionsWarning = exports.buildInvalidClientConfigWarning = void 0;
|
|
4
|
+
const runtime_config_1 = require("./runtime-config");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const isRecord = (value) => {
|
|
7
|
+
return typeof value === 'object' && value !== null;
|
|
8
|
+
};
|
|
9
|
+
const safeGetProperty = (value, key) => {
|
|
10
|
+
if (!isRecord(value)) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
return value[key];
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const isNonEmptyString = (value) => {
|
|
21
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
22
|
+
};
|
|
23
|
+
const isLogLevel = (value) => {
|
|
24
|
+
return typeof value === 'string' && constants_1.LOG_LEVELS.includes(value);
|
|
25
|
+
};
|
|
26
|
+
const normalizeLogFilter = (value) => {
|
|
27
|
+
const levels = safeGetProperty(value, 'levels');
|
|
28
|
+
if (levels === undefined) {
|
|
29
|
+
return isRecord(value) ? {} : undefined;
|
|
30
|
+
}
|
|
31
|
+
if (!Array.isArray(levels) || !levels.every((level) => isLogLevel(level))) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
levels,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
const normalizeRetryPolicy = (value) => {
|
|
39
|
+
if (!isRecord(value)) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
};
|
|
44
|
+
const normalizeRuntimeOverrides = (value) => {
|
|
45
|
+
if (!isRecord(value)) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const maxBatchSize = safeGetProperty(value, 'maxBatchSize');
|
|
49
|
+
const flushIntervalMs = safeGetProperty(value, 'flushIntervalMs');
|
|
50
|
+
const maxRetries = safeGetProperty(value, 'maxRetries');
|
|
51
|
+
const retryBaseDelayMs = safeGetProperty(value, 'retryBaseDelayMs');
|
|
52
|
+
const retryMaxDelayMs = safeGetProperty(value, 'retryMaxDelayMs');
|
|
53
|
+
return {
|
|
54
|
+
maxBatchSize: typeof maxBatchSize === 'number' ? maxBatchSize : undefined,
|
|
55
|
+
flushIntervalMs: typeof flushIntervalMs === 'number' ? flushIntervalMs : undefined,
|
|
56
|
+
maxRetries: typeof maxRetries === 'number' ? maxRetries : undefined,
|
|
57
|
+
retryBaseDelayMs: typeof retryBaseDelayMs === 'number' ? retryBaseDelayMs : undefined,
|
|
58
|
+
retryMaxDelayMs: typeof retryMaxDelayMs === 'number' ? retryMaxDelayMs : undefined,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
const buildInvalidClientConfigWarning = (invalidFields) => {
|
|
62
|
+
return `[logscope] Invalid client configuration. SDK fallback mode enabled. Missing or invalid required field(s): ${invalidFields.join(', ')}.`;
|
|
63
|
+
};
|
|
64
|
+
exports.buildInvalidClientConfigWarning = buildInvalidClientConfigWarning;
|
|
65
|
+
const buildInvalidPinoOptionsWarning = (invalidFields) => {
|
|
66
|
+
return `[logscope] Invalid pino transport configuration. SDK fallback mode enabled. Missing or invalid required field(s): ${invalidFields.join(', ')}.`;
|
|
67
|
+
};
|
|
68
|
+
exports.buildInvalidPinoOptionsWarning = buildInvalidPinoOptionsWarning;
|
|
69
|
+
const guardLogscopeClientConfig = (config) => {
|
|
70
|
+
const apiKey = safeGetProperty(config, 'apiKey');
|
|
71
|
+
const ingestionBaseUrlCandidate = safeGetProperty(config, 'ingestionBaseUrl');
|
|
72
|
+
const endpoint = safeGetProperty(config, 'endpoint');
|
|
73
|
+
const ingestionBaseUrl = isNonEmptyString(ingestionBaseUrlCandidate)
|
|
74
|
+
? ingestionBaseUrlCandidate
|
|
75
|
+
: isNonEmptyString(endpoint)
|
|
76
|
+
? endpoint
|
|
77
|
+
: constants_1.DEFAULT_INGESTION_BASE_URL;
|
|
78
|
+
const context = safeGetProperty(config, 'context');
|
|
79
|
+
const source = safeGetProperty(context, 'source');
|
|
80
|
+
const captureConsole = safeGetProperty(config, 'captureConsole') === true;
|
|
81
|
+
const logFilter = normalizeLogFilter(safeGetProperty(config, 'logFilter'));
|
|
82
|
+
const runtimeConfig = (0, runtime_config_1.resolveRuntimeConfig)(normalizeRuntimeOverrides(safeGetProperty(config, 'runtime')));
|
|
83
|
+
const invalidFields = [];
|
|
84
|
+
if (!isNonEmptyString(apiKey)) {
|
|
85
|
+
invalidFields.push('apiKey');
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
isValid: invalidFields.length === 0,
|
|
89
|
+
apiKey: isNonEmptyString(apiKey) ? apiKey : '',
|
|
90
|
+
ingestionBaseUrl,
|
|
91
|
+
source: isNonEmptyString(source) ? source : constants_1.SAFE_FALLBACK_SOURCE,
|
|
92
|
+
captureConsole,
|
|
93
|
+
logFilter,
|
|
94
|
+
runtimeConfig,
|
|
95
|
+
invalidFields,
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
exports.guardLogscopeClientConfig = guardLogscopeClientConfig;
|
|
99
|
+
const guardPinoTransportOptions = (options) => {
|
|
100
|
+
const apiKey = safeGetProperty(options, 'apiKey');
|
|
101
|
+
const endpoint = safeGetProperty(options, 'endpoint');
|
|
102
|
+
const source = safeGetProperty(options, 'source');
|
|
103
|
+
const flushIntervalMsValue = safeGetProperty(options, 'flushIntervalMs');
|
|
104
|
+
const retryPolicyValue = safeGetProperty(options, 'retryPolicy');
|
|
105
|
+
const logFilter = normalizeLogFilter(safeGetProperty(options, 'logFilter'));
|
|
106
|
+
const invalidFields = [];
|
|
107
|
+
if (!isNonEmptyString(apiKey)) {
|
|
108
|
+
invalidFields.push('apiKey');
|
|
109
|
+
}
|
|
110
|
+
if (!isNonEmptyString(endpoint)) {
|
|
111
|
+
invalidFields.push('endpoint');
|
|
112
|
+
}
|
|
113
|
+
if (!isNonEmptyString(source)) {
|
|
114
|
+
invalidFields.push('source');
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
isValid: invalidFields.length === 0,
|
|
118
|
+
apiKey: isNonEmptyString(apiKey) ? apiKey : '',
|
|
119
|
+
endpoint: isNonEmptyString(endpoint) ? endpoint : '',
|
|
120
|
+
source: isNonEmptyString(source) ? source : constants_1.SAFE_FALLBACK_SOURCE,
|
|
121
|
+
flushIntervalMs: typeof flushIntervalMsValue === 'number' ? flushIntervalMsValue : undefined,
|
|
122
|
+
retryPolicy: normalizeRetryPolicy(retryPolicyValue),
|
|
123
|
+
logFilter,
|
|
124
|
+
invalidFields,
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
exports.guardPinoTransportOptions = guardPinoTransportOptions;
|
|
128
|
+
//# sourceMappingURL=config-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-guards.js","sourceRoot":"","sources":["../../src/config/config-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RetryPolicy } from '../retry/retry-policy';
|
|
2
|
+
export declare const DEFAULT_MAX_BATCH_SIZE = 50;
|
|
3
|
+
export declare const MAX_BATCH_SIZE_LIMIT = 50;
|
|
4
|
+
export declare const DEFAULT_FLUSH_INTERVAL_MS = 2000;
|
|
5
|
+
export interface RuntimeQuantityOverrides {
|
|
6
|
+
maxBatchSize?: number;
|
|
7
|
+
flushIntervalMs?: number;
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
retryBaseDelayMs?: number;
|
|
10
|
+
retryMaxDelayMs?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ResolvedRuntimeConfig {
|
|
13
|
+
maxBatchSize: number;
|
|
14
|
+
flushIntervalMs: number;
|
|
15
|
+
retryPolicy: RetryPolicy;
|
|
16
|
+
}
|
|
17
|
+
export declare const resolveRuntimeConfig: (overrides?: RuntimeQuantityOverrides) => ResolvedRuntimeConfig;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveRuntimeConfig = exports.DEFAULT_FLUSH_INTERVAL_MS = exports.MAX_BATCH_SIZE_LIMIT = exports.DEFAULT_MAX_BATCH_SIZE = void 0;
|
|
4
|
+
const retry_policy_1 = require("../retry/retry-policy");
|
|
5
|
+
exports.DEFAULT_MAX_BATCH_SIZE = 50;
|
|
6
|
+
exports.MAX_BATCH_SIZE_LIMIT = 50;
|
|
7
|
+
exports.DEFAULT_FLUSH_INTERVAL_MS = 2_000;
|
|
8
|
+
const normalizeBoundedInteger = (value, fallback, options) => {
|
|
9
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
10
|
+
return fallback;
|
|
11
|
+
}
|
|
12
|
+
const integerValue = Math.trunc(value);
|
|
13
|
+
if (integerValue < options.min) {
|
|
14
|
+
return fallback;
|
|
15
|
+
}
|
|
16
|
+
if (options.max !== undefined && integerValue > options.max) {
|
|
17
|
+
return fallback;
|
|
18
|
+
}
|
|
19
|
+
return integerValue;
|
|
20
|
+
};
|
|
21
|
+
const resolveRuntimeConfig = (overrides) => {
|
|
22
|
+
const maxBatchSize = normalizeBoundedInteger(overrides?.maxBatchSize, exports.DEFAULT_MAX_BATCH_SIZE, {
|
|
23
|
+
min: 1,
|
|
24
|
+
max: exports.MAX_BATCH_SIZE_LIMIT,
|
|
25
|
+
});
|
|
26
|
+
const flushIntervalMs = normalizeBoundedInteger(overrides?.flushIntervalMs, exports.DEFAULT_FLUSH_INTERVAL_MS, {
|
|
27
|
+
min: 1,
|
|
28
|
+
});
|
|
29
|
+
const retryPolicy = (0, retry_policy_1.resolveRetryPolicy)({
|
|
30
|
+
maxRetries: overrides?.maxRetries,
|
|
31
|
+
baseDelayMs: overrides?.retryBaseDelayMs,
|
|
32
|
+
maxDelayMs: overrides?.retryMaxDelayMs,
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
maxBatchSize,
|
|
36
|
+
flushIntervalMs,
|
|
37
|
+
retryPolicy,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
exports.resolveRuntimeConfig = resolveRuntimeConfig;
|
|
41
|
+
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/config/runtime-config.ts"],"names":[],"mappings":";;;AAAA,wDAA6E;AAEhE,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAC1B,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAgB/C,MAAM,uBAAuB,GAAG,CAC9B,KAAyB,EACzB,QAAgB,EAChB,OAGC,EACO,EAAE;IACV,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAClC,SAAoC,EACb,EAAE;IACzB,MAAM,YAAY,GAAG,uBAAuB,CAAC,SAAS,EAAE,YAAY,EAAE,8BAAsB,EAAE;QAC5F,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,4BAAoB;KAC1B,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,uBAAuB,CAC7C,SAAS,EAAE,eAAe,EAC1B,iCAAyB,EACzB;QACE,GAAG,EAAE,CAAC;KACP,CACF,CAAC;IACF,MAAM,WAAW,GAAG,IAAA,iCAAkB,EAAC;QACrC,UAAU,EAAE,SAAS,EAAE,UAAU;QACjC,WAAW,EAAE,SAAS,EAAE,gBAAgB;QACxC,UAAU,EAAE,SAAS,EAAE,eAAe;KACvC,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,eAAe;QACf,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LogLevel } from '../types';
|
|
2
|
+
type ConsoleMethod = (...args: unknown[]) => unknown;
|
|
3
|
+
export interface ConsoleLike {
|
|
4
|
+
log: ConsoleMethod;
|
|
5
|
+
info: ConsoleMethod;
|
|
6
|
+
warn: ConsoleMethod;
|
|
7
|
+
error: ConsoleMethod;
|
|
8
|
+
}
|
|
9
|
+
export type DispatchConsoleLog = (level: LogLevel, message: string, metadata?: unknown) => void;
|
|
10
|
+
export type RestoreConsoleCapture = () => void;
|
|
11
|
+
export interface CaptureConsoleInput {
|
|
12
|
+
dispatchLog: DispatchConsoleLog;
|
|
13
|
+
consoleRef?: ConsoleLike;
|
|
14
|
+
}
|
|
15
|
+
export declare const captureConsole: (input: CaptureConsoleInput) => RestoreConsoleCapture;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.captureConsole = void 0;
|
|
4
|
+
const node_util_1 = require("node:util");
|
|
5
|
+
const CONSOLE_METHODS = ['log', 'info', 'warn', 'error'];
|
|
6
|
+
const LEVEL_BY_METHOD = {
|
|
7
|
+
log: 'info',
|
|
8
|
+
info: 'info',
|
|
9
|
+
warn: 'warn',
|
|
10
|
+
error: 'error',
|
|
11
|
+
};
|
|
12
|
+
const captureStates = new WeakMap();
|
|
13
|
+
const runSafe = (callback) => {
|
|
14
|
+
try {
|
|
15
|
+
callback();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Never throw into user code.
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const stringifyFallback = (value) => {
|
|
22
|
+
if (typeof value === 'string') {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const serialized = JSON.stringify(value);
|
|
27
|
+
if (serialized !== undefined) {
|
|
28
|
+
return serialized;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Fallback below.
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
return String(value);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return '[Unserializable]';
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const formatConsoleArguments = (args) => {
|
|
42
|
+
if (args.length === 0) {
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
return (0, node_util_1.format)(...args);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return args.map((value) => stringifyFallback(value)).join(' ');
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const patchConsole = (consoleRef, state) => {
|
|
53
|
+
CONSOLE_METHODS.forEach((methodName) => {
|
|
54
|
+
const originalMethod = state.originalMethods[methodName];
|
|
55
|
+
consoleRef[methodName] = (...args) => {
|
|
56
|
+
const result = Reflect.apply(originalMethod, consoleRef, args);
|
|
57
|
+
const level = LEVEL_BY_METHOD[methodName];
|
|
58
|
+
const message = formatConsoleArguments(args);
|
|
59
|
+
Array.from(state.subscribers.values()).forEach((dispatchLog) => {
|
|
60
|
+
runSafe(() => {
|
|
61
|
+
dispatchLog(level, message);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
return result;
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
const restoreConsoleMethods = (consoleRef, methods) => {
|
|
69
|
+
CONSOLE_METHODS.forEach((methodName) => {
|
|
70
|
+
consoleRef[methodName] = methods[methodName];
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
const ensureCaptureState = (consoleRef) => {
|
|
74
|
+
const existingState = captureStates.get(consoleRef);
|
|
75
|
+
if (existingState !== undefined) {
|
|
76
|
+
return existingState;
|
|
77
|
+
}
|
|
78
|
+
const createdState = {
|
|
79
|
+
nextSubscriberId: 1,
|
|
80
|
+
subscribers: new Map(),
|
|
81
|
+
originalMethods: {
|
|
82
|
+
log: consoleRef.log,
|
|
83
|
+
info: consoleRef.info,
|
|
84
|
+
warn: consoleRef.warn,
|
|
85
|
+
error: consoleRef.error,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
patchConsole(consoleRef, createdState);
|
|
89
|
+
captureStates.set(consoleRef, createdState);
|
|
90
|
+
return createdState;
|
|
91
|
+
};
|
|
92
|
+
const captureConsole = (input) => {
|
|
93
|
+
const consoleRef = input.consoleRef ?? console;
|
|
94
|
+
const state = ensureCaptureState(consoleRef);
|
|
95
|
+
const subscriberId = state.nextSubscriberId;
|
|
96
|
+
state.nextSubscriberId += 1;
|
|
97
|
+
state.subscribers.set(subscriberId, input.dispatchLog);
|
|
98
|
+
let restored = false;
|
|
99
|
+
return () => {
|
|
100
|
+
if (restored) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
restored = true;
|
|
104
|
+
const activeState = captureStates.get(consoleRef);
|
|
105
|
+
if (activeState === undefined) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
activeState.subscribers.delete(subscriberId);
|
|
109
|
+
if (activeState.subscribers.size > 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
restoreConsoleMethods(consoleRef, activeState.originalMethods);
|
|
113
|
+
captureStates.delete(consoleRef);
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
exports.captureConsole = captureConsole;
|
|
117
|
+
//# sourceMappingURL=capture-console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-console.js","sourceRoot":"","sources":["../../src/console/capture-console.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LogLevel } from './types';
|
|
2
|
+
export declare const LOG_LEVELS: ReadonlyArray<LogLevel>;
|
|
3
|
+
export declare const METADATA_PRIMITIVE_VALUE_KEY = "value";
|
|
4
|
+
export declare const MAX_MESSAGE_LENGTH = 2048;
|
|
5
|
+
export declare const MAX_METADATA_BYTES = 2048;
|
|
6
|
+
export declare const SAFE_FALLBACK_SOURCE = "unknown";
|
|
7
|
+
export declare const DEFAULT_INGESTION_BASE_URL = "https://ingestion.logscopeai.com";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_INGESTION_BASE_URL = exports.SAFE_FALLBACK_SOURCE = exports.MAX_METADATA_BYTES = exports.MAX_MESSAGE_LENGTH = exports.METADATA_PRIMITIVE_VALUE_KEY = exports.LOG_LEVELS = void 0;
|
|
4
|
+
exports.LOG_LEVELS = [
|
|
5
|
+
'trace',
|
|
6
|
+
'debug',
|
|
7
|
+
'info',
|
|
8
|
+
'warn',
|
|
9
|
+
'error',
|
|
10
|
+
'fatal',
|
|
11
|
+
];
|
|
12
|
+
exports.METADATA_PRIMITIVE_VALUE_KEY = 'value';
|
|
13
|
+
exports.MAX_MESSAGE_LENGTH = 2_048;
|
|
14
|
+
exports.MAX_METADATA_BYTES = 2_048;
|
|
15
|
+
exports.SAFE_FALLBACK_SOURCE = 'unknown';
|
|
16
|
+
exports.DEFAULT_INGESTION_BASE_URL = 'https://ingestion.logscopeai.com';
|
|
17
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +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,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLevelFilterEvaluator = void 0;
|
|
4
|
+
const ALLOW_ALL_LEVELS = () => true;
|
|
5
|
+
const createLevelFilterEvaluator = (logFilter) => {
|
|
6
|
+
const configuredLevels = logFilter?.levels;
|
|
7
|
+
if (configuredLevels === undefined) {
|
|
8
|
+
return ALLOW_ALL_LEVELS;
|
|
9
|
+
}
|
|
10
|
+
const allowedLevels = new Set(configuredLevels);
|
|
11
|
+
return (level) => {
|
|
12
|
+
return allowedLevels.has(level);
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
exports.createLevelFilterEvaluator = createLevelFilterEvaluator;
|
|
16
|
+
//# sourceMappingURL=level-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-filter.js","sourceRoot":"","sources":["../../src/filter/level-filter.ts"],"names":[],"mappings":";;;AAIA,MAAM,gBAAgB,GAAyB,GAAG,EAAE,CAAC,IAAI,CAAC;AAEnD,MAAM,0BAA0B,GAAG,CACxC,SAAsC,EAChB,EAAE;IACxB,MAAM,gBAAgB,GAAG,SAAS,EAAE,MAAM,CAAC;IAE3C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAW,gBAAgB,CAAC,CAAC;IAE1D,OAAO,CAAC,KAAe,EAAW,EAAE;QAClC,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,0BAA0B,8BAcrC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './constants';
|
|
2
|
+
export { createLogscopeClient } from './client/create-logscope-client';
|
|
3
|
+
export { Logscope } from './logscope';
|
|
4
|
+
export { normalizeLog, type NormalizeLogInput, type NormalizeLogOptions, } from './normalization/normalize-log';
|
|
5
|
+
export * from './types';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.normalizeLog = exports.Logscope = exports.createLogscopeClient = void 0;
|
|
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
|
+
var logscope_1 = require("./logscope");
|
|
22
|
+
Object.defineProperty(exports, "Logscope", { enumerable: true, get: function () { return logscope_1.Logscope; } });
|
|
23
|
+
var normalize_log_1 = require("./normalization/normalize-log");
|
|
24
|
+
Object.defineProperty(exports, "normalizeLog", { enumerable: true, get: function () { return normalize_log_1.normalizeLog; } });
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0EAAuE;AAA9D,8HAAA,oBAAoB,OAAA;AAC7B,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+DAIuC;AAHrC,6GAAA,YAAY,OAAA;AAId,0CAAwB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LogscopeClient, LogscopeInitConfig } from './types';
|
|
2
|
+
export declare class Logscope implements LogscopeClient {
|
|
3
|
+
private readonly client;
|
|
4
|
+
constructor(config: LogscopeInitConfig);
|
|
5
|
+
trace(message: string, metadata?: unknown): void;
|
|
6
|
+
debug(message: string, metadata?: unknown): void;
|
|
7
|
+
info(message: string, metadata?: unknown): void;
|
|
8
|
+
warn(message: string, metadata?: unknown): void;
|
|
9
|
+
error(message: string, metadata?: unknown): void;
|
|
10
|
+
fatal(message: string, metadata?: unknown): void;
|
|
11
|
+
}
|
package/dist/logscope.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logscope = void 0;
|
|
4
|
+
const create_logscope_client_1 = require("./client/create-logscope-client");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const resolveApiKey = (config) => {
|
|
7
|
+
return typeof config?.apiKey === 'string' ? config.apiKey : '';
|
|
8
|
+
};
|
|
9
|
+
const toNonEmptyString = (value) => {
|
|
10
|
+
if (typeof value !== 'string') {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return value.trim().length > 0 ? value : undefined;
|
|
14
|
+
};
|
|
15
|
+
const resolveIngestionBaseUrl = (config) => {
|
|
16
|
+
const ingestionBaseUrl = toNonEmptyString(config?.ingestionBaseUrl);
|
|
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;
|
|
25
|
+
};
|
|
26
|
+
class Logscope {
|
|
27
|
+
client;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
const resolvedConfig = {
|
|
30
|
+
apiKey: resolveApiKey(config),
|
|
31
|
+
ingestionBaseUrl: resolveIngestionBaseUrl(config),
|
|
32
|
+
captureConsole: config?.captureConsole === true,
|
|
33
|
+
context: {
|
|
34
|
+
source: resolveSource(config),
|
|
35
|
+
},
|
|
36
|
+
logFilter: config?.logFilter,
|
|
37
|
+
runtime: config?.runtime,
|
|
38
|
+
};
|
|
39
|
+
this.client = (0, create_logscope_client_1.createLogscopeClient)(resolvedConfig);
|
|
40
|
+
}
|
|
41
|
+
trace(message, metadata) {
|
|
42
|
+
this.client.trace(message, metadata);
|
|
43
|
+
}
|
|
44
|
+
debug(message, metadata) {
|
|
45
|
+
this.client.debug(message, metadata);
|
|
46
|
+
}
|
|
47
|
+
info(message, metadata) {
|
|
48
|
+
this.client.info(message, metadata);
|
|
49
|
+
}
|
|
50
|
+
warn(message, metadata) {
|
|
51
|
+
this.client.warn(message, metadata);
|
|
52
|
+
}
|
|
53
|
+
error(message, metadata) {
|
|
54
|
+
this.client.error(message, metadata);
|
|
55
|
+
}
|
|
56
|
+
fatal(message, metadata) {
|
|
57
|
+
this.client.fatal(message, metadata);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.Logscope = Logscope;
|
|
61
|
+
//# sourceMappingURL=logscope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logscope.js","sourceRoot":"","sources":["../src/logscope.ts"],"names":[],"mappings":";;;AAAA,4EAAuE;AACvE,2CAA+E;AAG/E,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,gBAAgB,GAAG,CAAC,KAAc,EAAsB,EAAE;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,MAA0B,EAAU,EAAE;IACrE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEpD,OAAO,gBAAgB,IAAI,QAAQ,IAAI,sCAA0B,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAU,EAAE;IAC3D,IAAI,OAAO,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,OAAO,gCAAoB,CAAC;AAC9B,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,OAAO,EAAE;gBACP,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;aAC9B;YACD,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;AAzCD,4BAyCC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IngestionLogEntry, LogLevel } from '../types';
|
|
2
|
+
export interface NormalizeLogInput {
|
|
3
|
+
source: string;
|
|
4
|
+
level: LogLevel;
|
|
5
|
+
message: string;
|
|
6
|
+
metadata?: unknown;
|
|
7
|
+
timestamp?: Date | string | number;
|
|
8
|
+
}
|
|
9
|
+
export interface NormalizeLogOptions {
|
|
10
|
+
now?: () => Date;
|
|
11
|
+
}
|
|
12
|
+
export declare const normalizeLog: (input: NormalizeLogInput, options?: NormalizeLogOptions) => IngestionLogEntry;
|