@dxos/log 0.8.4-main.ef1bc66f44 → 0.8.4-main.f466a3d56e
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 +102 -5
- package/dist/lib/browser/chunk-V7FYKT4H.mjs +311 -0
- package/dist/lib/browser/chunk-V7FYKT4H.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +224 -43
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/platform/node/index.mjs +1 -1
- package/dist/lib/browser/platform/node/index.mjs.map +3 -3
- package/dist/lib/browser/processors/console-processor.mjs +6 -11
- package/dist/lib/browser/processors/console-processor.mjs.map +3 -3
- package/dist/lib/node-esm/chunk-5TBDXMQF.mjs +313 -0
- package/dist/lib/node-esm/chunk-5TBDXMQF.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +224 -43
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/platform/node/index.mjs +1 -1
- package/dist/lib/node-esm/platform/node/index.mjs.map +3 -3
- package/dist/lib/node-esm/processors/console-processor.mjs +6 -11
- package/dist/lib/node-esm/processors/console-processor.mjs.map +3 -3
- package/dist/types/src/context.d.ts +78 -2
- package/dist/types/src/context.d.ts.map +1 -1
- package/dist/types/src/dbg.d.ts.map +1 -1
- package/dist/types/src/decorators.d.ts.map +1 -1
- package/dist/types/src/environment.d.ts +24 -0
- package/dist/types/src/environment.d.ts.map +1 -0
- package/dist/types/src/environment.test.d.ts +2 -0
- package/dist/types/src/environment.test.d.ts.map +1 -0
- package/dist/types/src/experimental/ownership.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +6 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/jsonl.d.ts +53 -0
- package/dist/types/src/jsonl.d.ts.map +1 -0
- package/dist/types/src/jsonl.test.d.ts +2 -0
- package/dist/types/src/jsonl.test.d.ts.map +1 -0
- package/dist/types/src/log-buffer.d.ts +20 -0
- package/dist/types/src/log-buffer.d.ts.map +1 -0
- package/dist/types/src/log-buffer.test.d.ts +2 -0
- package/dist/types/src/log-buffer.test.d.ts.map +1 -0
- package/dist/types/src/log.d.ts +44 -1
- package/dist/types/src/log.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +20 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/platform/browser/index.d.ts.map +1 -1
- package/dist/types/src/platform/node/index.d.ts.map +1 -1
- package/dist/types/src/processors/browser-processor.d.ts.map +1 -1
- package/dist/types/src/processors/common.d.ts.map +1 -1
- package/dist/types/src/processors/console-processor.d.ts.map +1 -1
- package/dist/types/src/processors/file-processor.d.ts.map +1 -1
- package/dist/types/src/scope.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -10
- package/src/context.ts +242 -2
- package/src/dbg.ts +0 -1
- package/src/decorators.ts +1 -2
- package/src/environment.test.ts +222 -0
- package/src/environment.ts +129 -0
- package/src/experimental/classes.test.ts +0 -1
- package/src/index.ts +6 -4
- package/src/jsonl.test.ts +121 -0
- package/src/jsonl.ts +104 -0
- package/src/log-buffer.test.ts +158 -0
- package/src/log-buffer.ts +89 -0
- package/src/log.test.ts +0 -1
- package/src/log.ts +56 -12
- package/src/meta.ts +29 -1
- package/src/platform/node/index.ts +1 -2
- package/src/processors/browser-processor.ts +27 -28
- package/src/processors/console-processor.ts +5 -13
- package/src/processors/file-processor.ts +7 -9
- package/dist/lib/browser/chunk-GPOFUMLO.mjs +0 -133
- package/dist/lib/browser/chunk-GPOFUMLO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QPYJZ4SO.mjs +0 -135
- package/dist/lib/node-esm/chunk-QPYJZ4SO.mjs.map +0 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
+
LogEntry,
|
|
3
4
|
LogLevel,
|
|
4
5
|
LogProcessorType,
|
|
5
6
|
gatherLogInfoFromScope,
|
|
@@ -9,7 +10,7 @@ import {
|
|
|
9
10
|
logInfo,
|
|
10
11
|
shortLevelName,
|
|
11
12
|
shouldLog
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5TBDXMQF.mjs";
|
|
13
14
|
import {
|
|
14
15
|
__export,
|
|
15
16
|
__reExport
|
|
@@ -21,6 +22,9 @@ __export(index_exports, {
|
|
|
21
22
|
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
22
23
|
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
23
24
|
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
25
|
+
LOG_META_MARKER: () => LOG_META_MARKER,
|
|
26
|
+
LogBuffer: () => LogBuffer,
|
|
27
|
+
LogEntry: () => LogEntry,
|
|
24
28
|
LogLevel: () => LogLevel,
|
|
25
29
|
LogProcessorType: () => LogProcessorType,
|
|
26
30
|
createFileProcessor: () => createFileProcessor,
|
|
@@ -31,21 +35,126 @@ __export(index_exports, {
|
|
|
31
35
|
getContextFromEntry: () => getContextFromEntry,
|
|
32
36
|
getCurrentOwnershipScope: () => getCurrentOwnershipScope,
|
|
33
37
|
getRelativeFilename: () => getRelativeFilename,
|
|
38
|
+
inferEnvironmentName: () => inferEnvironmentName,
|
|
39
|
+
isLogMeta: () => isLogMeta,
|
|
34
40
|
levels: () => levels,
|
|
35
41
|
log: () => log,
|
|
36
42
|
logInfo: () => logInfo,
|
|
37
43
|
omit: () => omit,
|
|
38
44
|
parseFilter: () => parseFilter,
|
|
39
45
|
pick: () => pick,
|
|
46
|
+
serializeToJsonl: () => serializeToJsonl,
|
|
40
47
|
shortLevelName: () => shortLevelName,
|
|
41
48
|
shouldLog: () => shouldLog
|
|
42
49
|
});
|
|
43
|
-
import omit from "
|
|
44
|
-
|
|
50
|
+
import { omit, pick } from "@dxos/util";
|
|
51
|
+
|
|
52
|
+
// src/environment.ts
|
|
53
|
+
var TAB_SUFFIX_STORAGE_KEY = "@dxos/log:env-suffix";
|
|
54
|
+
var SUFFIX_LENGTH = 6;
|
|
55
|
+
var randomSuffix = () => {
|
|
56
|
+
const cryptoRef = globalThis.crypto;
|
|
57
|
+
if (cryptoRef?.getRandomValues) {
|
|
58
|
+
const bytes = new Uint8Array(SUFFIX_LENGTH);
|
|
59
|
+
cryptoRef.getRandomValues(bytes);
|
|
60
|
+
let suffix = "";
|
|
61
|
+
for (const byte of bytes) {
|
|
62
|
+
suffix += (byte % 36).toString(36);
|
|
63
|
+
}
|
|
64
|
+
return suffix;
|
|
65
|
+
}
|
|
66
|
+
return Math.random().toString(36).slice(2, 2 + SUFFIX_LENGTH).padEnd(SUFFIX_LENGTH, "0");
|
|
67
|
+
};
|
|
68
|
+
var getOrCreateTabSuffix = (session) => {
|
|
69
|
+
if (!session) {
|
|
70
|
+
return randomSuffix();
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const existing = session.getItem(TAB_SUFFIX_STORAGE_KEY);
|
|
74
|
+
if (existing && existing.length > 0) {
|
|
75
|
+
return existing;
|
|
76
|
+
}
|
|
77
|
+
const suffix = randomSuffix();
|
|
78
|
+
session.setItem(TAB_SUFFIX_STORAGE_KEY, suffix);
|
|
79
|
+
return suffix;
|
|
80
|
+
} catch {
|
|
81
|
+
return randomSuffix();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
var isInstanceOf = (scope, ctorName) => {
|
|
85
|
+
const ctor = scope?.[ctorName];
|
|
86
|
+
return typeof ctor === "function" && scope instanceof ctor;
|
|
87
|
+
};
|
|
88
|
+
var CF_WORKER_USER_AGENT = "Cloudflare-Workers";
|
|
89
|
+
var inferEnvironmentName = (options = {}) => {
|
|
90
|
+
const scope = options.scope ?? globalThis;
|
|
91
|
+
if (scope.navigator?.userAgent === CF_WORKER_USER_AGENT) {
|
|
92
|
+
return `cf-worker::${randomSuffix()}`;
|
|
93
|
+
}
|
|
94
|
+
if (isInstanceOf(scope, "SharedWorkerGlobalScope")) {
|
|
95
|
+
return `shared-worker:${scope.name ?? ""}:${randomSuffix()}`;
|
|
96
|
+
}
|
|
97
|
+
if (isInstanceOf(scope, "ServiceWorkerGlobalScope")) {
|
|
98
|
+
return `service-worker::${randomSuffix()}`;
|
|
99
|
+
}
|
|
100
|
+
if (isInstanceOf(scope, "DedicatedWorkerGlobalScope")) {
|
|
101
|
+
return `dedicated-worker:${scope.name ?? ""}:${randomSuffix()}`;
|
|
102
|
+
}
|
|
103
|
+
if (scope.window !== void 0 && scope.window === scope) {
|
|
104
|
+
const origin = scope.location?.origin ?? "";
|
|
105
|
+
return `tab:${origin}:${getOrCreateTabSuffix(scope.sessionStorage)}`;
|
|
106
|
+
}
|
|
107
|
+
const proc = scope.process;
|
|
108
|
+
if (proc && typeof proc === "object" && proc.versions?.node) {
|
|
109
|
+
const pid = typeof proc.pid === "number" ? String(proc.pid) : "";
|
|
110
|
+
return `node:${pid}:${randomSuffix()}`;
|
|
111
|
+
}
|
|
112
|
+
return `unknown::${randomSuffix()}`;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// src/jsonl.ts
|
|
116
|
+
var serializeToJsonl = (entry, opts = {}) => {
|
|
117
|
+
if (entry.level <= LogLevel.TRACE) {
|
|
118
|
+
return void 0;
|
|
119
|
+
}
|
|
120
|
+
const { filename, line, context: scopeName } = entry.computedMeta;
|
|
121
|
+
const record = {
|
|
122
|
+
t: new Date(entry.timestamp).toISOString(),
|
|
123
|
+
l: shortLevelName[entry.level] ?? "?",
|
|
124
|
+
m: entry.message ?? ""
|
|
125
|
+
};
|
|
126
|
+
if (filename !== void 0) {
|
|
127
|
+
record.f = filename;
|
|
128
|
+
}
|
|
129
|
+
if (line !== void 0) {
|
|
130
|
+
record.n = line;
|
|
131
|
+
}
|
|
132
|
+
if (scopeName !== void 0) {
|
|
133
|
+
record.o = scopeName;
|
|
134
|
+
}
|
|
135
|
+
if (entry.computedError !== void 0) {
|
|
136
|
+
record.e = entry.computedError;
|
|
137
|
+
}
|
|
138
|
+
if (opts.env !== void 0) {
|
|
139
|
+
record.i = opts.env;
|
|
140
|
+
}
|
|
141
|
+
const computedContext = entry.computedContext;
|
|
142
|
+
if (Object.keys(computedContext).length > 0) {
|
|
143
|
+
try {
|
|
144
|
+
record.c = JSON.stringify(computedContext);
|
|
145
|
+
} catch {
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
return JSON.stringify(record);
|
|
150
|
+
} catch {
|
|
151
|
+
return void 0;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
45
154
|
|
|
46
155
|
// src/decorators.ts
|
|
47
|
-
import { inspect } from "node:util";
|
|
48
156
|
import chalk from "chalk";
|
|
157
|
+
import { inspect } from "node:util";
|
|
49
158
|
var nextPromiseId = 0;
|
|
50
159
|
var createMethodLogDecorator = (log2) => (arg0, arg1, meta) => (target, propertyKey, descriptor) => {
|
|
51
160
|
const method = descriptor.value;
|
|
@@ -171,15 +280,7 @@ __export(processors_exports, {
|
|
|
171
280
|
});
|
|
172
281
|
|
|
173
282
|
// src/processors/browser-processor.ts
|
|
174
|
-
import {
|
|
175
|
-
var getRelativeFilename2 = (filename) => {
|
|
176
|
-
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
177
|
-
if (match) {
|
|
178
|
-
const [, filePath] = match;
|
|
179
|
-
return filePath;
|
|
180
|
-
}
|
|
181
|
-
return filename;
|
|
182
|
-
};
|
|
283
|
+
import { safariCheck } from "@dxos/util";
|
|
183
284
|
var CONFIG = {
|
|
184
285
|
useTestProcessor: false,
|
|
185
286
|
printFileLinks: false
|
|
@@ -190,18 +291,20 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
190
291
|
}
|
|
191
292
|
const LOG_BROWSER_PREFIX = config.prefix ?? "https://vscode.dev/github.com/dxos/dxos/blob/main/";
|
|
192
293
|
const LOG_BROWSER_CSS = [];
|
|
294
|
+
const { filename, line: lineNumber, context: scopeDebugName } = entry.computedMeta;
|
|
193
295
|
let link = "";
|
|
194
|
-
if (
|
|
195
|
-
const filename = getRelativeFilename2(entry.meta.F);
|
|
296
|
+
if (filename !== void 0 && lineNumber !== void 0) {
|
|
196
297
|
const filepath = `${LOG_BROWSER_PREFIX.replace(/\/$/, "")}/${filename}`;
|
|
197
|
-
link = `${filepath}#L${
|
|
298
|
+
link = `${filepath}#L${lineNumber}`;
|
|
198
299
|
}
|
|
199
300
|
let args = [];
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const scopeName = scope.name ||
|
|
203
|
-
|
|
204
|
-
|
|
301
|
+
const scope = entry.meta?.S;
|
|
302
|
+
if (scope) {
|
|
303
|
+
const scopeName = scope.name || scopeDebugName;
|
|
304
|
+
if (scopeName) {
|
|
305
|
+
const processPrefix = scope.hostSessionId ? "[worker] " : "";
|
|
306
|
+
args.push(`%c${processPrefix}${scopeName}`, "color:#C026D3;font-weight:bold");
|
|
307
|
+
}
|
|
205
308
|
}
|
|
206
309
|
if (entry.message) {
|
|
207
310
|
args.push(entry.message);
|
|
@@ -209,9 +312,9 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
209
312
|
const context = getContextFromEntry(entry);
|
|
210
313
|
if (context) {
|
|
211
314
|
if (Object.keys(context).length === 1 && "error" in context) {
|
|
212
|
-
args.push(context.error);
|
|
315
|
+
args.push(unwrapEffectError(context.error));
|
|
213
316
|
} else if (Object.keys(context).length === 1 && "err" in context) {
|
|
214
|
-
args.push(context.err);
|
|
317
|
+
args.push(unwrapEffectError(context.err));
|
|
215
318
|
} else {
|
|
216
319
|
args.push(context);
|
|
217
320
|
}
|
|
@@ -246,10 +349,8 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
246
349
|
if (!shouldLog(entry, config.filters)) {
|
|
247
350
|
return;
|
|
248
351
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
path = `${getRelativeFilename2(entry.meta.F)}:${entry.meta.L}`;
|
|
252
|
-
}
|
|
352
|
+
const { filename, line: lineNumber } = entry.computedMeta;
|
|
353
|
+
const path = filename !== void 0 && lineNumber !== void 0 ? `${filename}:${lineNumber}` : "";
|
|
253
354
|
let args = [];
|
|
254
355
|
const processPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
|
|
255
356
|
args.push(`${processPrefix}${entry.message}`);
|
|
@@ -276,6 +377,13 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
276
377
|
}
|
|
277
378
|
};
|
|
278
379
|
var BROWSER_PROCESSOR = CONFIG.useTestProcessor ? TEST_BROWSER_PROCESSOR : APP_BROWSER_PROCESSOR;
|
|
380
|
+
var originalSymbol = /* @__PURE__ */ Symbol.for("effect/OriginalAnnotation");
|
|
381
|
+
var unwrapEffectError = (error) => {
|
|
382
|
+
if (typeof error === "object" && error !== null && originalSymbol in error) {
|
|
383
|
+
return error[originalSymbol];
|
|
384
|
+
}
|
|
385
|
+
return error;
|
|
386
|
+
};
|
|
279
387
|
|
|
280
388
|
// src/processors/index.ts
|
|
281
389
|
__reExport(processors_exports, console_processor_star);
|
|
@@ -290,7 +398,6 @@ var DEBUG_PROCESSOR = (config, entry) => {
|
|
|
290
398
|
// src/processors/file-processor.ts
|
|
291
399
|
import { appendFileSync, mkdirSync, openSync } from "node:fs";
|
|
292
400
|
import { dirname } from "node:path";
|
|
293
|
-
import { jsonlogify } from "@dxos/util";
|
|
294
401
|
var EAGAIN_MAX_DURATION = 1e3;
|
|
295
402
|
var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
296
403
|
let fd;
|
|
@@ -311,15 +418,12 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
|
311
418
|
fd = openSync(pathOrFd, "a");
|
|
312
419
|
}
|
|
313
420
|
const record = {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
}
|
|
321
|
-
} : {},
|
|
322
|
-
context: jsonlogify(getContextFromEntry(entry))
|
|
421
|
+
level: entry.level,
|
|
422
|
+
message: entry.message,
|
|
423
|
+
timestamp: entry.timestamp,
|
|
424
|
+
meta: entry.computedMeta,
|
|
425
|
+
context: entry.computedContext,
|
|
426
|
+
error: entry.computedError
|
|
323
427
|
};
|
|
324
428
|
let retryTS = 0;
|
|
325
429
|
while (true) {
|
|
@@ -418,13 +522,14 @@ var createLog = () => {
|
|
|
418
522
|
get: () => log2._config
|
|
419
523
|
});
|
|
420
524
|
const processLog = (level, message, context = {}, meta, error) => {
|
|
421
|
-
|
|
525
|
+
const entry = new LogEntry({
|
|
422
526
|
level,
|
|
423
527
|
message,
|
|
424
528
|
context,
|
|
425
529
|
meta,
|
|
426
530
|
error
|
|
427
|
-
})
|
|
531
|
+
});
|
|
532
|
+
log2._config.processors.forEach((processor) => processor(log2._config, entry));
|
|
428
533
|
};
|
|
429
534
|
Object.assign(log2, {
|
|
430
535
|
/**
|
|
@@ -432,7 +537,7 @@ var createLog = () => {
|
|
|
432
537
|
* NOTE: Preserves any processors that were already added to this logger instance
|
|
433
538
|
* unless an explicit processor option is provided.
|
|
434
539
|
*/
|
|
435
|
-
config: ({ processor, ...options }) => {
|
|
540
|
+
config: ({ processor, ...options } = {}) => {
|
|
436
541
|
const config = createConfig(options);
|
|
437
542
|
const processors2 = processor ? config.processors : log2._config.processors;
|
|
438
543
|
log2._config = {
|
|
@@ -489,6 +594,12 @@ var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("
|
|
|
489
594
|
// src/index.ts
|
|
490
595
|
__reExport(index_exports, processors_exports);
|
|
491
596
|
|
|
597
|
+
// src/meta.ts
|
|
598
|
+
var LOG_META_MARKER = "~LogMeta";
|
|
599
|
+
var isLogMeta = (value) => {
|
|
600
|
+
return value != null && typeof value === "object" && value[LOG_META_MARKER] === LOG_META_MARKER;
|
|
601
|
+
};
|
|
602
|
+
|
|
492
603
|
// src/dbg.ts
|
|
493
604
|
var dbg = (arg, meta) => {
|
|
494
605
|
if (meta?.A) {
|
|
@@ -499,11 +610,75 @@ var dbg = (arg, meta) => {
|
|
|
499
610
|
return arg;
|
|
500
611
|
};
|
|
501
612
|
|
|
613
|
+
// src/log-buffer.ts
|
|
614
|
+
import { CircularBuffer } from "@dxos/util";
|
|
615
|
+
var DEFAULT_BUFFER_SIZE = 2e3;
|
|
616
|
+
var MAX_CONTEXT_LENGTH = 500;
|
|
617
|
+
var LogBuffer = class {
|
|
618
|
+
_buffer;
|
|
619
|
+
constructor(size = DEFAULT_BUFFER_SIZE) {
|
|
620
|
+
this._buffer = new CircularBuffer(size);
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Log processor that can be registered with `log.runtimeConfig.processors`.
|
|
624
|
+
* Captures every level except TRACE (does not apply `shouldLog` / filter; use for full debug dumps).
|
|
625
|
+
*/
|
|
626
|
+
logProcessor = (_config, entry) => {
|
|
627
|
+
if (entry.level <= LogLevel.TRACE) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
const { filename, line, context: scopeName } = entry.computedMeta;
|
|
631
|
+
const record = {
|
|
632
|
+
t: new Date(entry.timestamp).toISOString(),
|
|
633
|
+
l: shortLevelName[entry.level] ?? "?",
|
|
634
|
+
m: entry.message ?? ""
|
|
635
|
+
};
|
|
636
|
+
if (filename !== void 0) {
|
|
637
|
+
record.f = filename;
|
|
638
|
+
}
|
|
639
|
+
if (line !== void 0) {
|
|
640
|
+
record.n = line;
|
|
641
|
+
}
|
|
642
|
+
if (scopeName !== void 0) {
|
|
643
|
+
record.o = scopeName;
|
|
644
|
+
}
|
|
645
|
+
if (entry.computedError !== void 0) {
|
|
646
|
+
record.e = entry.computedError;
|
|
647
|
+
}
|
|
648
|
+
const computedContext = entry.computedContext;
|
|
649
|
+
if (Object.keys(computedContext).length > 0) {
|
|
650
|
+
try {
|
|
651
|
+
let json = JSON.stringify(computedContext);
|
|
652
|
+
if (json.length > MAX_CONTEXT_LENGTH) {
|
|
653
|
+
json = json.slice(0, MAX_CONTEXT_LENGTH);
|
|
654
|
+
}
|
|
655
|
+
record.c = json;
|
|
656
|
+
} catch {
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
this._buffer.push(record);
|
|
660
|
+
};
|
|
661
|
+
/** Number of entries currently in the buffer. */
|
|
662
|
+
get size() {
|
|
663
|
+
return this._buffer.elementCount;
|
|
664
|
+
}
|
|
665
|
+
/** Discard all buffered entries. */
|
|
666
|
+
clear() {
|
|
667
|
+
this._buffer.clear();
|
|
668
|
+
}
|
|
669
|
+
/** Serialize buffer contents as NDJSON (newline-delimited JSON). */
|
|
670
|
+
serialize() {
|
|
671
|
+
const lines = [];
|
|
672
|
+
for (const record of this._buffer) {
|
|
673
|
+
lines.push(JSON.stringify(record));
|
|
674
|
+
}
|
|
675
|
+
return lines.join("\n");
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
|
|
502
679
|
// src/experimental/ownership.ts
|
|
503
680
|
import { inspect as inspect3 } from "node:util";
|
|
504
|
-
var
|
|
505
|
-
var kCurrentOwnershipScope = Symbol("kCurrentOwnershipScope");
|
|
506
|
-
var kDebugInfoProperties = Symbol("kDebugInfoProperties");
|
|
681
|
+
var kDebugInfoProperties = /* @__PURE__ */ Symbol("kDebugInfoProperties");
|
|
507
682
|
var OwnershipScope = class {
|
|
508
683
|
constr;
|
|
509
684
|
parent;
|
|
@@ -536,6 +711,9 @@ export {
|
|
|
536
711
|
BROWSER_PROCESSOR,
|
|
537
712
|
DEBUG_PROCESSOR,
|
|
538
713
|
FILE_PROCESSOR,
|
|
714
|
+
LOG_META_MARKER,
|
|
715
|
+
LogBuffer,
|
|
716
|
+
LogEntry,
|
|
539
717
|
LogLevel,
|
|
540
718
|
LogProcessorType,
|
|
541
719
|
createFileProcessor,
|
|
@@ -546,12 +724,15 @@ export {
|
|
|
546
724
|
getContextFromEntry,
|
|
547
725
|
getCurrentOwnershipScope,
|
|
548
726
|
getRelativeFilename,
|
|
727
|
+
inferEnvironmentName,
|
|
728
|
+
isLogMeta,
|
|
549
729
|
levels,
|
|
550
730
|
log,
|
|
551
731
|
logInfo,
|
|
552
732
|
omit,
|
|
553
733
|
parseFilter,
|
|
554
734
|
pick,
|
|
735
|
+
serializeToJsonl,
|
|
555
736
|
shortLevelName,
|
|
556
737
|
shouldLog
|
|
557
738
|
};
|