@dxos/log 0.8.4-main.b97322e → 0.8.4-main.bbf232bc24
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/dist/lib/browser/chunk-IEP6GGEX.mjs +23 -0
- package/dist/lib/browser/chunk-IEP6GGEX.mjs.map +7 -0
- 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 +349 -197
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/platform/browser/index.mjs +26 -0
- package/dist/lib/browser/platform/browser/index.mjs.map +7 -0
- package/dist/lib/browser/platform/node/index.mjs +21 -0
- package/dist/lib/browser/platform/node/index.mjs.map +7 -0
- package/dist/lib/browser/processors/console-processor.mjs +102 -0
- package/dist/lib/browser/processors/console-processor.mjs.map +7 -0
- package/dist/lib/browser/processors/console-stub.mjs +9 -0
- package/dist/lib/browser/processors/console-stub.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
- 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 +351 -284
- 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/browser/index.mjs +27 -0
- package/dist/lib/node-esm/platform/browser/index.mjs.map +7 -0
- package/dist/lib/node-esm/platform/node/index.mjs +22 -0
- package/dist/lib/node-esm/platform/node/index.mjs.map +7 -0
- package/dist/lib/node-esm/processors/console-processor.mjs +103 -0
- package/dist/lib/node-esm/processors/console-processor.mjs.map +7 -0
- package/dist/lib/node-esm/processors/console-stub.mjs +10 -0
- package/dist/lib/node-esm/processors/console-stub.mjs.map +7 -0
- package/dist/types/src/config.d.ts +2 -3
- package/dist/types/src/config.d.ts.map +1 -1
- 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 +23 -0
- package/dist/types/src/dbg.d.ts.map +1 -0
- package/dist/types/src/decorators.d.ts +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 +7 -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 +55 -18
- 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/options.d.ts +1 -6
- package/dist/types/src/options.d.ts.map +1 -1
- package/dist/types/src/platform/browser/index.d.ts.map +1 -1
- package/dist/types/src/platform/index.d.ts +1 -1
- package/dist/types/src/platform/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/processors/index.d.ts +3 -3
- package/dist/types/src/processors/index.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 +32 -17
- package/src/config.ts +3 -2
- package/src/context.ts +278 -7
- package/src/dbg.ts +34 -0
- package/src/decorators.ts +3 -3
- package/src/environment.test.ts +222 -0
- package/src/environment.ts +129 -0
- package/src/experimental/classes.test.ts +1 -1
- package/src/index.ts +7 -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 +48 -18
- package/src/log.ts +146 -58
- package/src/meta.ts +29 -1
- package/src/options.ts +27 -11
- package/src/platform/index.ts +1 -1
- package/src/processors/browser-processor.ts +29 -28
- package/src/processors/console-processor.ts +9 -13
- package/src/processors/file-processor.ts +9 -8
- package/src/processors/index.ts +3 -3
- package/src/scope.ts +1 -1
|
@@ -1,101 +1,155 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
LogEntry,
|
|
4
|
+
LogLevel,
|
|
5
|
+
LogProcessorType,
|
|
6
|
+
gatherLogInfoFromScope,
|
|
7
|
+
getContextFromEntry,
|
|
8
|
+
getRelativeFilename,
|
|
9
|
+
levels,
|
|
10
|
+
logInfo,
|
|
11
|
+
shortLevelName,
|
|
12
|
+
shouldLog
|
|
13
|
+
} from "./chunk-5TBDXMQF.mjs";
|
|
14
|
+
import {
|
|
15
|
+
__export,
|
|
16
|
+
__reExport
|
|
17
|
+
} from "./chunk-2SZHAWBN.mjs";
|
|
2
18
|
|
|
3
19
|
// src/index.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
LogProcessorType2["BROWSER"] = "browser";
|
|
36
|
-
LogProcessorType2["DEBUG"] = "debug";
|
|
37
|
-
return LogProcessorType2;
|
|
38
|
-
}({});
|
|
20
|
+
var index_exports = {};
|
|
21
|
+
__export(index_exports, {
|
|
22
|
+
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
23
|
+
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
24
|
+
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
25
|
+
LOG_META_MARKER: () => LOG_META_MARKER,
|
|
26
|
+
LogBuffer: () => LogBuffer,
|
|
27
|
+
LogEntry: () => LogEntry,
|
|
28
|
+
LogLevel: () => LogLevel,
|
|
29
|
+
LogProcessorType: () => LogProcessorType,
|
|
30
|
+
createFileProcessor: () => createFileProcessor,
|
|
31
|
+
createLog: () => createLog,
|
|
32
|
+
dbg: () => dbg,
|
|
33
|
+
debug: () => debug,
|
|
34
|
+
gatherLogInfoFromScope: () => gatherLogInfoFromScope,
|
|
35
|
+
getContextFromEntry: () => getContextFromEntry,
|
|
36
|
+
getCurrentOwnershipScope: () => getCurrentOwnershipScope,
|
|
37
|
+
getRelativeFilename: () => getRelativeFilename,
|
|
38
|
+
inferEnvironmentName: () => inferEnvironmentName,
|
|
39
|
+
isLogMeta: () => isLogMeta,
|
|
40
|
+
levels: () => levels,
|
|
41
|
+
log: () => log,
|
|
42
|
+
logInfo: () => logInfo,
|
|
43
|
+
omit: () => omit,
|
|
44
|
+
parseFilter: () => parseFilter,
|
|
45
|
+
pick: () => pick,
|
|
46
|
+
serializeToJsonl: () => serializeToJsonl,
|
|
47
|
+
shortLevelName: () => shortLevelName,
|
|
48
|
+
shouldLog: () => shouldLog
|
|
49
|
+
});
|
|
50
|
+
import { omit, pick } from "@dxos/util";
|
|
39
51
|
|
|
40
|
-
// src/
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
|
|
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");
|
|
44
67
|
};
|
|
45
|
-
var
|
|
46
|
-
if (!
|
|
47
|
-
return
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
try {
|
|
54
|
-
res[prop] = typeof scope[prop] === "function" ? scope[prop]() : scope[prop];
|
|
55
|
-
} catch (err) {
|
|
56
|
-
res[prop] = err.message;
|
|
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;
|
|
57
76
|
}
|
|
77
|
+
const suffix = randomSuffix();
|
|
78
|
+
session.setItem(TAB_SUFFIX_STORAGE_KEY, suffix);
|
|
79
|
+
return suffix;
|
|
80
|
+
} catch {
|
|
81
|
+
return randomSuffix();
|
|
58
82
|
}
|
|
59
|
-
return res;
|
|
60
83
|
};
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return level >= filter.level && (!filter.pattern || path.includes(filter.pattern));
|
|
84
|
+
var isInstanceOf = (scope, ctorName) => {
|
|
85
|
+
const ctor = scope?.[ctorName];
|
|
86
|
+
return typeof ctor === "function" && scope instanceof ctor;
|
|
65
87
|
};
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return
|
|
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()}`;
|
|
71
111
|
}
|
|
112
|
+
return `unknown::${randomSuffix()}`;
|
|
72
113
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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;
|
|
80
137
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
} else if (typeof entryContext === "object") {
|
|
90
|
-
context = Object.assign(context ?? {}, entryContext);
|
|
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 {
|
|
91
146
|
}
|
|
92
147
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
148
|
+
try {
|
|
149
|
+
return JSON.stringify(record);
|
|
150
|
+
} catch {
|
|
151
|
+
return void 0;
|
|
97
152
|
}
|
|
98
|
-
return context && Object.keys(context).length > 0 ? context : void 0;
|
|
99
153
|
};
|
|
100
154
|
|
|
101
155
|
// src/decorators.ts
|
|
@@ -197,153 +251,36 @@ var logAsyncResolved = (log2, methodName, resolvedValue, promiseId, startTime, c
|
|
|
197
251
|
var logAsyncRejected = (log2, methodName, err, promiseId, startTime, combinedMeta) => {
|
|
198
252
|
log2.info(`.${formatFunction(methodName)} \u21B2 \u{1F525} ${chalk.gray("reject")} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)} ${chalk.gray("=>")} ${err}`, {}, combinedMeta);
|
|
199
253
|
};
|
|
200
|
-
var greenCheck = typeof chalk.green === "function" ? chalk.green("\u2714") : "\u2714";
|
|
201
|
-
var formatTimeElapsed = (startTime) => chalk.gray(`${(performance.now() - startTime).toFixed(0)}ms`);
|
|
202
254
|
var COLOR_FUNCTION = [
|
|
203
255
|
220,
|
|
204
256
|
220,
|
|
205
257
|
170
|
|
206
258
|
];
|
|
259
|
+
var greenCheck = typeof chalk.green === "function" ? chalk.green("\u2714") : "\u2714";
|
|
260
|
+
var formatTimeElapsed = (startTime) => chalk.gray(`${(performance.now() - startTime).toFixed(0)}ms`);
|
|
207
261
|
var formatFunction = (name) => chalk.bold(chalk.rgb(...COLOR_FUNCTION)(name));
|
|
208
262
|
var formatPromise = (id) => chalk.blue(`Promise#${id}`);
|
|
209
263
|
|
|
210
264
|
// src/options.ts
|
|
211
265
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
212
266
|
|
|
213
|
-
// src/platform/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (filepath) {
|
|
218
|
-
try {
|
|
219
|
-
const text = fs.readFileSync(filepath, "utf-8");
|
|
220
|
-
if (text) {
|
|
221
|
-
return yaml.load(text);
|
|
222
|
-
}
|
|
223
|
-
} catch (err) {
|
|
224
|
-
console.warn(`Invalid log file: ${filepath}`);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
// src/processors/console-processor.ts
|
|
230
|
-
import chalk2 from "chalk";
|
|
231
|
-
import { inspect as inspect2 } from "node:util";
|
|
232
|
-
import { getPrototypeSpecificInstanceId, pickBy } from "@dxos/util";
|
|
267
|
+
// src/platform/index.ts
|
|
268
|
+
var platform_exports = {};
|
|
269
|
+
__reExport(platform_exports, platform_star);
|
|
270
|
+
import * as platform_star from "#platform";
|
|
233
271
|
|
|
234
|
-
// src/processors/
|
|
235
|
-
var
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
// src/processors/console-processor.ts
|
|
245
|
-
var LEVEL_COLORS = {
|
|
246
|
-
[LogLevel.TRACE]: "gray",
|
|
247
|
-
[LogLevel.DEBUG]: "gray",
|
|
248
|
-
[LogLevel.VERBOSE]: "gray",
|
|
249
|
-
[LogLevel.INFO]: "white",
|
|
250
|
-
[LogLevel.WARN]: "yellow",
|
|
251
|
-
[LogLevel.ERROR]: "red"
|
|
252
|
-
};
|
|
253
|
-
var truncate = (text, length = 0, right = false) => {
|
|
254
|
-
const str = text && length ? right ? text.slice(-length) : text.substring(0, length) : text ?? "";
|
|
255
|
-
return right ? str.padStart(length, " ") : str.padEnd(length, " ");
|
|
256
|
-
};
|
|
257
|
-
var DEFAULT_FORMATTER = (config, { path, line, level, message, context, error, scope }) => {
|
|
258
|
-
const column = config.options?.formatter?.column;
|
|
259
|
-
const filepath = path !== void 0 && line !== void 0 ? chalk2.grey(`${path}:${line}`) : void 0;
|
|
260
|
-
let instance;
|
|
261
|
-
if (scope) {
|
|
262
|
-
const prototype = Object.getPrototypeOf(scope);
|
|
263
|
-
const id = getPrototypeSpecificInstanceId(scope);
|
|
264
|
-
instance = chalk2.magentaBright(`${prototype.constructor.name}#${id}`);
|
|
265
|
-
}
|
|
266
|
-
const formattedTimestamp = config.options?.formatter?.timestamp ? (/* @__PURE__ */ new Date()).toISOString() : void 0;
|
|
267
|
-
const formattedLevel = chalk2[LEVEL_COLORS[level]](column ? shortLevelName[level] : LogLevel[level]);
|
|
268
|
-
const padding = column && filepath ? "".padStart(column - filepath.length) : void 0;
|
|
269
|
-
return config.options?.formatter?.timestampFirst ? [
|
|
270
|
-
formattedTimestamp,
|
|
271
|
-
filepath,
|
|
272
|
-
padding,
|
|
273
|
-
formattedLevel,
|
|
274
|
-
instance,
|
|
275
|
-
message,
|
|
276
|
-
context,
|
|
277
|
-
error
|
|
278
|
-
] : [
|
|
279
|
-
// NOTE: File path must come fist for console hyperlinks.
|
|
280
|
-
// Must not truncate for terminal output.
|
|
281
|
-
filepath,
|
|
282
|
-
padding,
|
|
283
|
-
formattedTimestamp,
|
|
284
|
-
formattedLevel,
|
|
285
|
-
instance,
|
|
286
|
-
message,
|
|
287
|
-
context,
|
|
288
|
-
error
|
|
289
|
-
];
|
|
290
|
-
};
|
|
291
|
-
var SHORT_FORMATTER = (config, { path, level, message }) => {
|
|
292
|
-
return [
|
|
293
|
-
chalk2.grey(truncate(path, 16, true)),
|
|
294
|
-
chalk2[LEVEL_COLORS[level]](shortLevelName[level]),
|
|
295
|
-
message
|
|
296
|
-
];
|
|
297
|
-
};
|
|
298
|
-
var formatter = DEFAULT_FORMATTER;
|
|
299
|
-
var CONSOLE_PROCESSOR = (config, entry) => {
|
|
300
|
-
const { level, message, meta, error } = entry;
|
|
301
|
-
if (!shouldLog(entry, config.filters)) {
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
const parts = {
|
|
305
|
-
level,
|
|
306
|
-
message,
|
|
307
|
-
error,
|
|
308
|
-
path: void 0,
|
|
309
|
-
line: void 0,
|
|
310
|
-
scope: void 0,
|
|
311
|
-
context: void 0
|
|
312
|
-
};
|
|
313
|
-
if (meta) {
|
|
314
|
-
parts.path = getRelativeFilename(meta.F);
|
|
315
|
-
parts.line = meta.L;
|
|
316
|
-
parts.scope = meta.S;
|
|
317
|
-
}
|
|
318
|
-
const context = getContextFromEntry(entry);
|
|
319
|
-
if (context) {
|
|
320
|
-
parts.context = inspect2(pickBy(context, (value) => value !== void 0), {
|
|
321
|
-
depth: config.options.depth,
|
|
322
|
-
colors: true,
|
|
323
|
-
maxArrayLength: 8,
|
|
324
|
-
sorted: false
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
const line = formatter(config, parts).filter(Boolean).join(" ");
|
|
328
|
-
console.log(line);
|
|
329
|
-
};
|
|
330
|
-
|
|
331
|
-
// src/processors/debug-processor.ts
|
|
332
|
-
import { inspect as inspect3 } from "node:util";
|
|
333
|
-
var DEBUG_PROCESSOR = (config, entry) => {
|
|
334
|
-
console.log(inspect3(entry, false, null, true));
|
|
335
|
-
};
|
|
272
|
+
// src/processors/index.ts
|
|
273
|
+
var processors_exports = {};
|
|
274
|
+
__export(processors_exports, {
|
|
275
|
+
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
276
|
+
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
277
|
+
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
278
|
+
createFileProcessor: () => createFileProcessor,
|
|
279
|
+
getRelativeFilename: () => getRelativeFilename
|
|
280
|
+
});
|
|
336
281
|
|
|
337
282
|
// src/processors/browser-processor.ts
|
|
338
|
-
import {
|
|
339
|
-
var getRelativeFilename2 = (filename) => {
|
|
340
|
-
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
341
|
-
if (match) {
|
|
342
|
-
const [, filePath] = match;
|
|
343
|
-
return filePath;
|
|
344
|
-
}
|
|
345
|
-
return filename;
|
|
346
|
-
};
|
|
283
|
+
import { safariCheck } from "@dxos/util";
|
|
347
284
|
var CONFIG = {
|
|
348
285
|
useTestProcessor: false,
|
|
349
286
|
printFileLinks: false
|
|
@@ -354,18 +291,20 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
354
291
|
}
|
|
355
292
|
const LOG_BROWSER_PREFIX = config.prefix ?? "https://vscode.dev/github.com/dxos/dxos/blob/main/";
|
|
356
293
|
const LOG_BROWSER_CSS = [];
|
|
294
|
+
const { filename, line: lineNumber, context: scopeDebugName } = entry.computedMeta;
|
|
357
295
|
let link = "";
|
|
358
|
-
if (
|
|
359
|
-
const filename = getRelativeFilename2(entry.meta.F);
|
|
296
|
+
if (filename !== void 0 && lineNumber !== void 0) {
|
|
360
297
|
const filepath = `${LOG_BROWSER_PREFIX.replace(/\/$/, "")}/${filename}`;
|
|
361
|
-
link = `${filepath}#L${
|
|
298
|
+
link = `${filepath}#L${lineNumber}`;
|
|
362
299
|
}
|
|
363
300
|
let args = [];
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
const scopeName = scope.name ||
|
|
367
|
-
|
|
368
|
-
|
|
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
|
+
}
|
|
369
308
|
}
|
|
370
309
|
if (entry.message) {
|
|
371
310
|
args.push(entry.message);
|
|
@@ -373,7 +312,9 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
373
312
|
const context = getContextFromEntry(entry);
|
|
374
313
|
if (context) {
|
|
375
314
|
if (Object.keys(context).length === 1 && "error" in context) {
|
|
376
|
-
args.push(context.error);
|
|
315
|
+
args.push(unwrapEffectError(context.error));
|
|
316
|
+
} else if (Object.keys(context).length === 1 && "err" in context) {
|
|
317
|
+
args.push(unwrapEffectError(context.err));
|
|
377
318
|
} else {
|
|
378
319
|
args.push(context);
|
|
379
320
|
}
|
|
@@ -408,10 +349,8 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
408
349
|
if (!shouldLog(entry, config.filters)) {
|
|
409
350
|
return;
|
|
410
351
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
path = `${getRelativeFilename2(entry.meta.F)}:${entry.meta.L}`;
|
|
414
|
-
}
|
|
352
|
+
const { filename, line: lineNumber } = entry.computedMeta;
|
|
353
|
+
const path = filename !== void 0 && lineNumber !== void 0 ? `${filename}:${lineNumber}` : "";
|
|
415
354
|
let args = [];
|
|
416
355
|
const processPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
|
|
417
356
|
args.push(`${processPrefix}${entry.message}`);
|
|
@@ -438,11 +377,27 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
438
377
|
}
|
|
439
378
|
};
|
|
440
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
|
+
};
|
|
387
|
+
|
|
388
|
+
// src/processors/index.ts
|
|
389
|
+
__reExport(processors_exports, console_processor_star);
|
|
390
|
+
import * as console_processor_star from "#console-processor";
|
|
391
|
+
|
|
392
|
+
// src/processors/debug-processor.ts
|
|
393
|
+
import { inspect as inspect2 } from "node:util";
|
|
394
|
+
var DEBUG_PROCESSOR = (config, entry) => {
|
|
395
|
+
console.log(inspect2(entry, false, null, true));
|
|
396
|
+
};
|
|
441
397
|
|
|
442
398
|
// src/processors/file-processor.ts
|
|
443
399
|
import { appendFileSync, mkdirSync, openSync } from "node:fs";
|
|
444
400
|
import { dirname } from "node:path";
|
|
445
|
-
import { jsonlogify } from "@dxos/util";
|
|
446
401
|
var EAGAIN_MAX_DURATION = 1e3;
|
|
447
402
|
var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
448
403
|
let fd;
|
|
@@ -463,15 +418,12 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
|
463
418
|
fd = openSync(pathOrFd, "a");
|
|
464
419
|
}
|
|
465
420
|
const record = {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
}
|
|
473
|
-
} : {},
|
|
474
|
-
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
|
|
475
427
|
};
|
|
476
428
|
let retryTS = 0;
|
|
477
429
|
while (true) {
|
|
@@ -510,14 +462,15 @@ var FILE_PROCESSOR = createFileProcessor({
|
|
|
510
462
|
|
|
511
463
|
// src/options.ts
|
|
512
464
|
var processors = {
|
|
513
|
-
[LogProcessorType.CONSOLE]: CONSOLE_PROCESSOR,
|
|
465
|
+
[LogProcessorType.CONSOLE]: processors_exports.CONSOLE_PROCESSOR,
|
|
514
466
|
[LogProcessorType.BROWSER]: BROWSER_PROCESSOR,
|
|
515
467
|
[LogProcessorType.DEBUG]: DEBUG_PROCESSOR
|
|
516
468
|
};
|
|
517
|
-
var
|
|
469
|
+
var browser = (typeof window !== "undefined" || typeof navigator !== "undefined") && !(typeof process !== "undefined" && process?.env?.VITEST);
|
|
518
470
|
var DEFAULT_PROCESSORS = [
|
|
519
|
-
|
|
471
|
+
browser ? BROWSER_PROCESSOR : processors_exports.CONSOLE_PROCESSOR
|
|
520
472
|
];
|
|
473
|
+
var parseLogLevel = (level, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;
|
|
521
474
|
var parseFilter = (filter) => {
|
|
522
475
|
if (typeof filter === "number") {
|
|
523
476
|
return [
|
|
@@ -526,7 +479,6 @@ var parseFilter = (filter) => {
|
|
|
526
479
|
}
|
|
527
480
|
];
|
|
528
481
|
}
|
|
529
|
-
const parseLogLevel = (level, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;
|
|
530
482
|
const lines = typeof filter === "string" ? filter.split(/,\s*/) : filter;
|
|
531
483
|
return lines.map((filter2) => {
|
|
532
484
|
const [pattern, level] = filter2.split(":");
|
|
@@ -538,66 +490,91 @@ var parseFilter = (filter) => {
|
|
|
538
490
|
};
|
|
539
491
|
});
|
|
540
492
|
};
|
|
541
|
-
var
|
|
542
|
-
const
|
|
493
|
+
var createConfig = (options) => {
|
|
494
|
+
const envOptions = "process" in globalThis ? {
|
|
543
495
|
file: process.env.LOG_CONFIG,
|
|
544
496
|
filter: process.env.LOG_FILTER,
|
|
545
497
|
processor: process.env.LOG_PROCESSOR
|
|
546
498
|
} : void 0;
|
|
547
|
-
const mergedOptions = defaultsDeep({}, loadOptions(
|
|
499
|
+
const mergedOptions = defaultsDeep({}, (0, platform_exports.loadOptions)(envOptions?.file), envOptions, options);
|
|
548
500
|
return {
|
|
549
501
|
options: mergedOptions,
|
|
550
502
|
filters: parseFilter(mergedOptions.filter ?? LogLevel.INFO),
|
|
551
503
|
captureFilters: parseFilter(mergedOptions.captureFilter ?? LogLevel.WARN),
|
|
552
504
|
processors: mergedOptions.processor ? [
|
|
553
505
|
processors[mergedOptions.processor]
|
|
554
|
-
] :
|
|
506
|
+
] : [
|
|
507
|
+
...DEFAULT_PROCESSORS
|
|
508
|
+
],
|
|
555
509
|
prefix: mergedOptions.prefix
|
|
556
510
|
};
|
|
557
511
|
};
|
|
558
512
|
|
|
559
513
|
// src/log.ts
|
|
514
|
+
var logCount = 0;
|
|
560
515
|
var createLog = () => {
|
|
561
516
|
const log2 = (...params) => processLog(LogLevel.DEBUG, ...params);
|
|
562
|
-
log2
|
|
517
|
+
Object.assign(log2, {
|
|
518
|
+
_id: `log-${++logCount}`,
|
|
519
|
+
_config: createConfig()
|
|
520
|
+
});
|
|
563
521
|
Object.defineProperty(log2, "runtimeConfig", {
|
|
564
522
|
get: () => log2._config
|
|
565
523
|
});
|
|
566
|
-
log2.addProcessor = (processor) => {
|
|
567
|
-
if (DEFAULT_PROCESSORS.filter((p) => p === processor).length === 0) {
|
|
568
|
-
DEFAULT_PROCESSORS.push(processor);
|
|
569
|
-
}
|
|
570
|
-
if (log2._config.processors.filter((p) => p === processor).length === 0) {
|
|
571
|
-
log2._config.processors.push(processor);
|
|
572
|
-
}
|
|
573
|
-
};
|
|
574
|
-
log2.config = (options) => {
|
|
575
|
-
log2._config = getConfig(options);
|
|
576
|
-
};
|
|
577
|
-
log2.trace = (...params) => processLog(LogLevel.TRACE, ...params);
|
|
578
|
-
log2.debug = (...params) => processLog(LogLevel.DEBUG, ...params);
|
|
579
|
-
log2.verbose = (...params) => processLog(LogLevel.VERBOSE, ...params);
|
|
580
|
-
log2.info = (...params) => processLog(LogLevel.INFO, ...params);
|
|
581
|
-
log2.warn = (...params) => processLog(LogLevel.WARN, ...params);
|
|
582
|
-
log2.error = (...params) => processLog(LogLevel.ERROR, ...params);
|
|
583
|
-
log2.catch = (error, context, meta) => processLog(LogLevel.ERROR, void 0, context, meta, error);
|
|
584
|
-
log2.break = () => log2.info("\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014");
|
|
585
|
-
log2.stack = (message, context, meta) => processLog(LogLevel.INFO, `${message ?? "Stack Dump"}
|
|
586
|
-
${getFormattedStackTrace()}`, context, meta);
|
|
587
|
-
log2.method = createMethodLogDecorator(log2);
|
|
588
|
-
log2.func = createFunctionLogDecorator(log2);
|
|
589
524
|
const processLog = (level, message, context = {}, meta, error) => {
|
|
590
|
-
|
|
525
|
+
const entry = new LogEntry({
|
|
591
526
|
level,
|
|
592
527
|
message,
|
|
593
528
|
context,
|
|
594
529
|
meta,
|
|
595
530
|
error
|
|
596
|
-
})
|
|
531
|
+
});
|
|
532
|
+
log2._config.processors.forEach((processor) => processor(log2._config, entry));
|
|
597
533
|
};
|
|
534
|
+
Object.assign(log2, {
|
|
535
|
+
/**
|
|
536
|
+
* Update config.
|
|
537
|
+
* NOTE: Preserves any processors that were already added to this logger instance
|
|
538
|
+
* unless an explicit processor option is provided.
|
|
539
|
+
*/
|
|
540
|
+
config: ({ processor, ...options } = {}) => {
|
|
541
|
+
const config = createConfig(options);
|
|
542
|
+
const processors2 = processor ? config.processors : log2._config.processors;
|
|
543
|
+
log2._config = {
|
|
544
|
+
...config,
|
|
545
|
+
processors: processors2
|
|
546
|
+
};
|
|
547
|
+
return log2;
|
|
548
|
+
},
|
|
549
|
+
/**
|
|
550
|
+
* Adds a processor to the logger.
|
|
551
|
+
*/
|
|
552
|
+
addProcessor: (processor) => {
|
|
553
|
+
if (log2._config.processors.filter((p) => p === processor).length === 0) {
|
|
554
|
+
log2._config.processors.push(processor);
|
|
555
|
+
}
|
|
556
|
+
return () => {
|
|
557
|
+
log2._config.processors = log2._config.processors.filter((p) => p !== processor);
|
|
558
|
+
};
|
|
559
|
+
},
|
|
560
|
+
trace: (...params) => processLog(LogLevel.TRACE, ...params),
|
|
561
|
+
debug: (...params) => processLog(LogLevel.DEBUG, ...params),
|
|
562
|
+
verbose: (...params) => processLog(LogLevel.VERBOSE, ...params),
|
|
563
|
+
info: (...params) => processLog(LogLevel.INFO, ...params),
|
|
564
|
+
warn: (...params) => processLog(LogLevel.WARN, ...params),
|
|
565
|
+
error: (...params) => processLog(LogLevel.ERROR, ...params),
|
|
566
|
+
catch: (error, context, meta) => processLog(LogLevel.ERROR, void 0, context, meta, error),
|
|
567
|
+
method: createMethodLogDecorator(log2),
|
|
568
|
+
function: createFunctionLogDecorator(log2),
|
|
569
|
+
break: () => log2.info("-".repeat(80)),
|
|
570
|
+
stack: (message, context, meta) => {
|
|
571
|
+
return processLog(LogLevel.INFO, `${message ?? "Stack Dump"}
|
|
572
|
+
${getFormattedStackTrace()}`, context, meta);
|
|
573
|
+
}
|
|
574
|
+
});
|
|
598
575
|
return log2;
|
|
599
576
|
};
|
|
600
|
-
var log = globalThis.
|
|
577
|
+
var log = globalThis.DX_LOG ??= createLog();
|
|
601
578
|
var start = Date.now();
|
|
602
579
|
var last = start;
|
|
603
580
|
var debug = (label, args) => {
|
|
@@ -614,12 +591,98 @@ var debug = (label, args) => {
|
|
|
614
591
|
};
|
|
615
592
|
var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("\n");
|
|
616
593
|
|
|
594
|
+
// src/index.ts
|
|
595
|
+
__reExport(index_exports, processors_exports);
|
|
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
|
+
|
|
603
|
+
// src/dbg.ts
|
|
604
|
+
var dbg = (arg, meta) => {
|
|
605
|
+
if (meta?.A) {
|
|
606
|
+
console.log(`${meta.A[0]} =`, arg);
|
|
607
|
+
} else {
|
|
608
|
+
console.log(arg);
|
|
609
|
+
}
|
|
610
|
+
return arg;
|
|
611
|
+
};
|
|
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
|
+
|
|
617
679
|
// src/experimental/ownership.ts
|
|
618
|
-
import { inspect as
|
|
619
|
-
var
|
|
620
|
-
var kCurrentOwnershipScope = Symbol("kCurrentOwnershipScope");
|
|
621
|
-
var kDebugInfoProperties = Symbol("kDebugInfoProperties");
|
|
680
|
+
import { inspect as inspect3 } from "node:util";
|
|
681
|
+
var kDebugInfoProperties = /* @__PURE__ */ Symbol("kDebugInfoProperties");
|
|
622
682
|
var OwnershipScope = class {
|
|
683
|
+
constr;
|
|
684
|
+
parent;
|
|
685
|
+
instance;
|
|
623
686
|
constructor(constr, parent) {
|
|
624
687
|
this.constr = constr;
|
|
625
688
|
this.parent = parent;
|
|
@@ -635,7 +698,7 @@ var OwnershipScope = class {
|
|
|
635
698
|
}
|
|
636
699
|
return info;
|
|
637
700
|
}
|
|
638
|
-
[
|
|
701
|
+
[inspect3.custom]() {
|
|
639
702
|
return {
|
|
640
703
|
className: this.constr.name,
|
|
641
704
|
info: this.getInfo(),
|
|
@@ -646,27 +709,31 @@ var OwnershipScope = class {
|
|
|
646
709
|
var getCurrentOwnershipScope = (thisRef) => thisRef;
|
|
647
710
|
export {
|
|
648
711
|
BROWSER_PROCESSOR,
|
|
649
|
-
CONSOLE_PROCESSOR,
|
|
650
712
|
DEBUG_PROCESSOR,
|
|
651
|
-
DEFAULT_FORMATTER,
|
|
652
713
|
FILE_PROCESSOR,
|
|
714
|
+
LOG_META_MARKER,
|
|
715
|
+
LogBuffer,
|
|
716
|
+
LogEntry,
|
|
653
717
|
LogLevel,
|
|
654
718
|
LogProcessorType,
|
|
655
|
-
SHORT_FORMATTER,
|
|
656
719
|
createFileProcessor,
|
|
720
|
+
createLog,
|
|
721
|
+
dbg,
|
|
657
722
|
debug,
|
|
658
723
|
gatherLogInfoFromScope,
|
|
659
724
|
getContextFromEntry,
|
|
660
725
|
getCurrentOwnershipScope,
|
|
661
726
|
getRelativeFilename,
|
|
727
|
+
inferEnvironmentName,
|
|
728
|
+
isLogMeta,
|
|
662
729
|
levels,
|
|
663
730
|
log,
|
|
664
731
|
logInfo,
|
|
665
732
|
omit,
|
|
666
733
|
parseFilter,
|
|
667
734
|
pick,
|
|
735
|
+
serializeToJsonl,
|
|
668
736
|
shortLevelName,
|
|
669
|
-
shouldLog
|
|
670
|
-
truncate
|
|
737
|
+
shouldLog
|
|
671
738
|
};
|
|
672
739
|
//# sourceMappingURL=index.mjs.map
|