@dxos/log 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae
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-M2YHSBML.mjs +133 -0
- package/dist/lib/browser/chunk-M2YHSBML.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +221 -206
- 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 +107 -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-62VKC2WQ.mjs +135 -0
- package/dist/lib/node-esm/chunk-62VKC2WQ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +216 -288
- 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 +108 -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.map +1 -1
- 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/index.d.ts +3 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/log-buffer.d.ts +36 -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 +14 -18
- package/dist/types/src/log.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/index.d.ts +1 -1
- package/dist/types/src/platform/index.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/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -12
- package/src/config.ts +1 -0
- package/src/context.ts +36 -5
- package/src/dbg.ts +34 -0
- package/src/decorators.ts +3 -3
- package/src/index.ts +3 -3
- package/src/log-buffer.test.ts +156 -0
- package/src/log-buffer.ts +108 -0
- package/src/log.test.ts +48 -18
- package/src/log.ts +103 -57
- package/src/options.ts +26 -10
- package/src/platform/index.ts +1 -1
- package/src/processors/file-processor.ts +2 -0
- package/src/processors/index.ts +3 -3
|
@@ -1,103 +1,47 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
LogLevel,
|
|
4
|
+
LogProcessorType,
|
|
5
|
+
gatherLogInfoFromScope,
|
|
6
|
+
getContextFromEntry,
|
|
7
|
+
getRelativeFilename,
|
|
8
|
+
levels,
|
|
9
|
+
logInfo,
|
|
10
|
+
shortLevelName,
|
|
11
|
+
shouldLog
|
|
12
|
+
} from "./chunk-62VKC2WQ.mjs";
|
|
13
|
+
import {
|
|
14
|
+
__export,
|
|
15
|
+
__reExport
|
|
16
|
+
} from "./chunk-2SZHAWBN.mjs";
|
|
2
17
|
|
|
3
18
|
// 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
|
-
[13]: "W",
|
|
31
|
-
[14]: "E"
|
|
32
|
-
};
|
|
33
|
-
var LogProcessorType = /* @__PURE__ */ (function(LogProcessorType2) {
|
|
34
|
-
LogProcessorType2["CONSOLE"] = "console";
|
|
35
|
-
LogProcessorType2["BROWSER"] = "browser";
|
|
36
|
-
LogProcessorType2["DEBUG"] = "debug";
|
|
37
|
-
return LogProcessorType2;
|
|
38
|
-
})({});
|
|
39
|
-
|
|
40
|
-
// src/scope.ts
|
|
41
|
-
var logInfoProperties = Symbol("logInfoProperties");
|
|
42
|
-
var logInfo = (target, propertyKey, descriptor) => {
|
|
43
|
-
var _target, _logInfoProperties;
|
|
44
|
-
((_target = target)[_logInfoProperties = logInfoProperties] ?? (_target[_logInfoProperties] = [])).push(propertyKey);
|
|
45
|
-
};
|
|
46
|
-
var gatherLogInfoFromScope = (scope) => {
|
|
47
|
-
if (!scope) {
|
|
48
|
-
return {};
|
|
49
|
-
}
|
|
50
|
-
const res = {};
|
|
51
|
-
const prototype = Object.getPrototypeOf(scope);
|
|
52
|
-
const infoProps = (typeof prototype === "object" && prototype !== null ? prototype[logInfoProperties] : []) ?? [];
|
|
53
|
-
for (const prop of infoProps) {
|
|
54
|
-
try {
|
|
55
|
-
res[prop] = typeof scope[prop] === "function" ? scope[prop]() : scope[prop];
|
|
56
|
-
} catch (err) {
|
|
57
|
-
res[prop] = err.message;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return res;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
// src/context.ts
|
|
64
|
-
var matchFilter = (filter, level, path) => {
|
|
65
|
-
return level >= filter.level && (!filter.pattern || path.includes(filter.pattern));
|
|
66
|
-
};
|
|
67
|
-
var shouldLog = (entry, filters) => {
|
|
68
|
-
if (filters === void 0) {
|
|
69
|
-
return true;
|
|
70
|
-
} else {
|
|
71
|
-
return filters.some((filter) => matchFilter(filter, entry.level, entry.meta?.F ?? ""));
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
var getContextFromEntry = (entry) => {
|
|
75
|
-
let context;
|
|
76
|
-
if (entry.meta) {
|
|
77
|
-
const scopeInfo = gatherLogInfoFromScope(entry.meta.S);
|
|
78
|
-
if (Object.keys(scopeInfo).length > 0) {
|
|
79
|
-
context = Object.assign(context ?? {}, scopeInfo);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
const entryContext = typeof entry.context === "function" ? entry.context() : entry.context;
|
|
83
|
-
if (entryContext) {
|
|
84
|
-
if (entryContext instanceof Error) {
|
|
85
|
-
const c = entryContext.context;
|
|
86
|
-
context = Object.assign(context ?? {}, {
|
|
87
|
-
error: entryContext.stack,
|
|
88
|
-
...c
|
|
89
|
-
});
|
|
90
|
-
} else if (typeof entryContext === "object") {
|
|
91
|
-
context = Object.assign(context ?? {}, entryContext);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (entry.error) {
|
|
95
|
-
context = Object.assign(context ?? {}, {
|
|
96
|
-
error: entry.error
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
return context && Object.keys(context).length > 0 ? context : void 0;
|
|
100
|
-
};
|
|
19
|
+
var index_exports = {};
|
|
20
|
+
__export(index_exports, {
|
|
21
|
+
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
22
|
+
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
23
|
+
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
24
|
+
LogBuffer: () => LogBuffer,
|
|
25
|
+
LogLevel: () => LogLevel,
|
|
26
|
+
LogProcessorType: () => LogProcessorType,
|
|
27
|
+
createFileProcessor: () => createFileProcessor,
|
|
28
|
+
createLog: () => createLog,
|
|
29
|
+
dbg: () => dbg,
|
|
30
|
+
debug: () => debug,
|
|
31
|
+
gatherLogInfoFromScope: () => gatherLogInfoFromScope,
|
|
32
|
+
getContextFromEntry: () => getContextFromEntry,
|
|
33
|
+
getCurrentOwnershipScope: () => getCurrentOwnershipScope,
|
|
34
|
+
getRelativeFilename: () => getRelativeFilename,
|
|
35
|
+
levels: () => levels,
|
|
36
|
+
log: () => log,
|
|
37
|
+
logInfo: () => logInfo,
|
|
38
|
+
omit: () => omit,
|
|
39
|
+
parseFilter: () => parseFilter,
|
|
40
|
+
pick: () => pick,
|
|
41
|
+
shortLevelName: () => shortLevelName,
|
|
42
|
+
shouldLog: () => shouldLog
|
|
43
|
+
});
|
|
44
|
+
import { omit, pick } from "@dxos/util";
|
|
101
45
|
|
|
102
46
|
// src/decorators.ts
|
|
103
47
|
import { inspect } from "node:util";
|
|
@@ -198,144 +142,33 @@ var logAsyncResolved = (log2, methodName, resolvedValue, promiseId, startTime, c
|
|
|
198
142
|
var logAsyncRejected = (log2, methodName, err, promiseId, startTime, combinedMeta) => {
|
|
199
143
|
log2.info(`.${formatFunction(methodName)} \u21B2 \u{1F525} ${chalk.gray("reject")} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)} ${chalk.gray("=>")} ${err}`, {}, combinedMeta);
|
|
200
144
|
};
|
|
201
|
-
var greenCheck = typeof chalk.green === "function" ? chalk.green("\u2714") : "\u2714";
|
|
202
|
-
var formatTimeElapsed = (startTime) => chalk.gray(`${(performance.now() - startTime).toFixed(0)}ms`);
|
|
203
145
|
var COLOR_FUNCTION = [
|
|
204
146
|
220,
|
|
205
147
|
220,
|
|
206
148
|
170
|
|
207
149
|
];
|
|
150
|
+
var greenCheck = typeof chalk.green === "function" ? chalk.green("\u2714") : "\u2714";
|
|
151
|
+
var formatTimeElapsed = (startTime) => chalk.gray(`${(performance.now() - startTime).toFixed(0)}ms`);
|
|
208
152
|
var formatFunction = (name) => chalk.bold(chalk.rgb(...COLOR_FUNCTION)(name));
|
|
209
153
|
var formatPromise = (id) => chalk.blue(`Promise#${id}`);
|
|
210
154
|
|
|
211
155
|
// src/options.ts
|
|
212
156
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
213
157
|
|
|
214
|
-
// src/platform/
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (filepath) {
|
|
219
|
-
try {
|
|
220
|
-
const text = fs.readFileSync(filepath, "utf-8");
|
|
221
|
-
if (text) {
|
|
222
|
-
return yaml.load(text);
|
|
223
|
-
}
|
|
224
|
-
} catch (err) {
|
|
225
|
-
console.warn(`Invalid log file: ${filepath}`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
// src/processors/console-processor.ts
|
|
231
|
-
import { inspect as inspect2 } from "node:util";
|
|
232
|
-
import chalk2 from "chalk";
|
|
233
|
-
import { getPrototypeSpecificInstanceId, pickBy } from "@dxos/util";
|
|
234
|
-
|
|
235
|
-
// src/processors/common.ts
|
|
236
|
-
var getRelativeFilename = (filename) => {
|
|
237
|
-
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
238
|
-
if (match) {
|
|
239
|
-
const [, filePath] = match;
|
|
240
|
-
return filePath;
|
|
241
|
-
}
|
|
242
|
-
return filename;
|
|
243
|
-
};
|
|
158
|
+
// src/platform/index.ts
|
|
159
|
+
var platform_exports = {};
|
|
160
|
+
__reExport(platform_exports, platform_star);
|
|
161
|
+
import * as platform_star from "#platform";
|
|
244
162
|
|
|
245
|
-
// src/processors/
|
|
246
|
-
var
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
};
|
|
254
|
-
var truncate = (text, length = 0, right = false) => {
|
|
255
|
-
const str = text && length ? right ? text.slice(-length) : text.substring(0, length) : text ?? "";
|
|
256
|
-
return right ? str.padStart(length, " ") : str.padEnd(length, " ");
|
|
257
|
-
};
|
|
258
|
-
var DEFAULT_FORMATTER = (config, { path, line, level, message, context, error, scope }) => {
|
|
259
|
-
const column = config.options?.formatter?.column;
|
|
260
|
-
const filepath = path !== void 0 && line !== void 0 ? chalk2.grey(`${path}:${line}`) : void 0;
|
|
261
|
-
let instance;
|
|
262
|
-
if (scope) {
|
|
263
|
-
const prototype = Object.getPrototypeOf(scope);
|
|
264
|
-
if (prototype !== null) {
|
|
265
|
-
const id = getPrototypeSpecificInstanceId(scope);
|
|
266
|
-
instance = chalk2.magentaBright(`${prototype.constructor.name}#${id}`);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
const formattedTimestamp = config.options?.formatter?.timestamp ? (/* @__PURE__ */ new Date()).toISOString() : void 0;
|
|
270
|
-
const formattedLevel = chalk2[LEVEL_COLORS[level]](column ? shortLevelName[level] : LogLevel[level]);
|
|
271
|
-
const padding = column && filepath ? "".padStart(column - filepath.length) : void 0;
|
|
272
|
-
return config.options?.formatter?.timestampFirst ? [
|
|
273
|
-
formattedTimestamp,
|
|
274
|
-
filepath,
|
|
275
|
-
padding,
|
|
276
|
-
formattedLevel,
|
|
277
|
-
instance,
|
|
278
|
-
message,
|
|
279
|
-
context,
|
|
280
|
-
error
|
|
281
|
-
] : [
|
|
282
|
-
// NOTE: File path must come fist for console hyperlinks.
|
|
283
|
-
// Must not truncate for terminal output.
|
|
284
|
-
filepath,
|
|
285
|
-
padding,
|
|
286
|
-
formattedTimestamp,
|
|
287
|
-
formattedLevel,
|
|
288
|
-
instance,
|
|
289
|
-
message,
|
|
290
|
-
context,
|
|
291
|
-
error
|
|
292
|
-
];
|
|
293
|
-
};
|
|
294
|
-
var SHORT_FORMATTER = (config, { path, level, message }) => {
|
|
295
|
-
return [
|
|
296
|
-
chalk2.grey(truncate(path, 16, true)),
|
|
297
|
-
chalk2[LEVEL_COLORS[level]](shortLevelName[level]),
|
|
298
|
-
message
|
|
299
|
-
];
|
|
300
|
-
};
|
|
301
|
-
var formatter = DEFAULT_FORMATTER;
|
|
302
|
-
var CONSOLE_PROCESSOR = (config, entry) => {
|
|
303
|
-
const { level, message, meta, error } = entry;
|
|
304
|
-
if (!shouldLog(entry, config.filters)) {
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
const parts = {
|
|
308
|
-
level,
|
|
309
|
-
message,
|
|
310
|
-
error,
|
|
311
|
-
path: void 0,
|
|
312
|
-
line: void 0,
|
|
313
|
-
scope: void 0,
|
|
314
|
-
context: void 0
|
|
315
|
-
};
|
|
316
|
-
if (meta) {
|
|
317
|
-
parts.path = getRelativeFilename(meta.F);
|
|
318
|
-
parts.line = meta.L;
|
|
319
|
-
parts.scope = meta.S;
|
|
320
|
-
}
|
|
321
|
-
const context = getContextFromEntry(entry);
|
|
322
|
-
if (context) {
|
|
323
|
-
parts.context = inspect2(pickBy(context, (value) => value !== void 0), {
|
|
324
|
-
depth: config.options.depth,
|
|
325
|
-
colors: true,
|
|
326
|
-
maxArrayLength: 8,
|
|
327
|
-
sorted: false
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
const line = formatter(config, parts).filter(Boolean).join(" ");
|
|
331
|
-
console.log(line);
|
|
332
|
-
};
|
|
333
|
-
|
|
334
|
-
// src/processors/debug-processor.ts
|
|
335
|
-
import { inspect as inspect3 } from "node:util";
|
|
336
|
-
var DEBUG_PROCESSOR = (config, entry) => {
|
|
337
|
-
console.log(inspect3(entry, false, null, true));
|
|
338
|
-
};
|
|
163
|
+
// src/processors/index.ts
|
|
164
|
+
var processors_exports = {};
|
|
165
|
+
__export(processors_exports, {
|
|
166
|
+
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
167
|
+
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
168
|
+
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
169
|
+
createFileProcessor: () => createFileProcessor,
|
|
170
|
+
getRelativeFilename: () => getRelativeFilename
|
|
171
|
+
});
|
|
339
172
|
|
|
340
173
|
// src/processors/browser-processor.ts
|
|
341
174
|
import { getDebugName, safariCheck } from "@dxos/util";
|
|
@@ -444,6 +277,16 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
444
277
|
};
|
|
445
278
|
var BROWSER_PROCESSOR = CONFIG.useTestProcessor ? TEST_BROWSER_PROCESSOR : APP_BROWSER_PROCESSOR;
|
|
446
279
|
|
|
280
|
+
// src/processors/index.ts
|
|
281
|
+
__reExport(processors_exports, console_processor_star);
|
|
282
|
+
import * as console_processor_star from "#console-processor";
|
|
283
|
+
|
|
284
|
+
// src/processors/debug-processor.ts
|
|
285
|
+
import { inspect as inspect2 } from "node:util";
|
|
286
|
+
var DEBUG_PROCESSOR = (config, entry) => {
|
|
287
|
+
console.log(inspect2(entry, false, null, true));
|
|
288
|
+
};
|
|
289
|
+
|
|
447
290
|
// src/processors/file-processor.ts
|
|
448
291
|
import { appendFileSync, mkdirSync, openSync } from "node:fs";
|
|
449
292
|
import { dirname } from "node:path";
|
|
@@ -500,7 +343,7 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
|
500
343
|
};
|
|
501
344
|
var logFilePath;
|
|
502
345
|
var getLogFilePath = () => {
|
|
503
|
-
logFilePath
|
|
346
|
+
logFilePath ??= process.env.LOG_FILE ?? (process.env.HOME ? `${process.env.HOME}/.dxlog/${(/* @__PURE__ */ new Date()).toISOString()}.log` : void 0);
|
|
504
347
|
return logFilePath;
|
|
505
348
|
};
|
|
506
349
|
var FILE_PROCESSOR = createFileProcessor({
|
|
@@ -515,14 +358,15 @@ var FILE_PROCESSOR = createFileProcessor({
|
|
|
515
358
|
|
|
516
359
|
// src/options.ts
|
|
517
360
|
var processors = {
|
|
518
|
-
[LogProcessorType.CONSOLE]: CONSOLE_PROCESSOR,
|
|
361
|
+
[LogProcessorType.CONSOLE]: processors_exports.CONSOLE_PROCESSOR,
|
|
519
362
|
[LogProcessorType.BROWSER]: BROWSER_PROCESSOR,
|
|
520
363
|
[LogProcessorType.DEBUG]: DEBUG_PROCESSOR
|
|
521
364
|
};
|
|
522
|
-
var
|
|
365
|
+
var browser = (typeof window !== "undefined" || typeof navigator !== "undefined") && !(typeof process !== "undefined" && process?.env?.VITEST);
|
|
523
366
|
var DEFAULT_PROCESSORS = [
|
|
524
|
-
|
|
367
|
+
browser ? BROWSER_PROCESSOR : processors_exports.CONSOLE_PROCESSOR
|
|
525
368
|
];
|
|
369
|
+
var parseLogLevel = (level, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;
|
|
526
370
|
var parseFilter = (filter) => {
|
|
527
371
|
if (typeof filter === "number") {
|
|
528
372
|
return [
|
|
@@ -531,7 +375,6 @@ var parseFilter = (filter) => {
|
|
|
531
375
|
}
|
|
532
376
|
];
|
|
533
377
|
}
|
|
534
|
-
const parseLogLevel = (level, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;
|
|
535
378
|
const lines = typeof filter === "string" ? filter.split(/,\s*/) : filter;
|
|
536
379
|
return lines.map((filter2) => {
|
|
537
380
|
const [pattern, level] = filter2.split(":");
|
|
@@ -543,55 +386,37 @@ var parseFilter = (filter) => {
|
|
|
543
386
|
};
|
|
544
387
|
});
|
|
545
388
|
};
|
|
546
|
-
var
|
|
547
|
-
const
|
|
389
|
+
var createConfig = (options) => {
|
|
390
|
+
const envOptions = "process" in globalThis ? {
|
|
548
391
|
file: process.env.LOG_CONFIG,
|
|
549
392
|
filter: process.env.LOG_FILTER,
|
|
550
393
|
processor: process.env.LOG_PROCESSOR
|
|
551
394
|
} : void 0;
|
|
552
|
-
const mergedOptions = defaultsDeep({}, loadOptions(
|
|
395
|
+
const mergedOptions = defaultsDeep({}, (0, platform_exports.loadOptions)(envOptions?.file), envOptions, options);
|
|
553
396
|
return {
|
|
554
397
|
options: mergedOptions,
|
|
555
398
|
filters: parseFilter(mergedOptions.filter ?? LogLevel.INFO),
|
|
556
399
|
captureFilters: parseFilter(mergedOptions.captureFilter ?? LogLevel.WARN),
|
|
557
400
|
processors: mergedOptions.processor ? [
|
|
558
401
|
processors[mergedOptions.processor]
|
|
559
|
-
] :
|
|
402
|
+
] : [
|
|
403
|
+
...DEFAULT_PROCESSORS
|
|
404
|
+
],
|
|
560
405
|
prefix: mergedOptions.prefix
|
|
561
406
|
};
|
|
562
407
|
};
|
|
563
408
|
|
|
564
409
|
// src/log.ts
|
|
565
|
-
var
|
|
410
|
+
var logCount = 0;
|
|
566
411
|
var createLog = () => {
|
|
567
412
|
const log2 = (...params) => processLog(LogLevel.DEBUG, ...params);
|
|
568
|
-
log2
|
|
413
|
+
Object.assign(log2, {
|
|
414
|
+
_id: `log-${++logCount}`,
|
|
415
|
+
_config: createConfig()
|
|
416
|
+
});
|
|
569
417
|
Object.defineProperty(log2, "runtimeConfig", {
|
|
570
418
|
get: () => log2._config
|
|
571
419
|
});
|
|
572
|
-
log2.addProcessor = (processor) => {
|
|
573
|
-
if (DEFAULT_PROCESSORS.filter((p) => p === processor).length === 0) {
|
|
574
|
-
DEFAULT_PROCESSORS.push(processor);
|
|
575
|
-
}
|
|
576
|
-
if (log2._config.processors.filter((p) => p === processor).length === 0) {
|
|
577
|
-
log2._config.processors.push(processor);
|
|
578
|
-
}
|
|
579
|
-
};
|
|
580
|
-
log2.config = (options) => {
|
|
581
|
-
log2._config = getConfig(options);
|
|
582
|
-
};
|
|
583
|
-
log2.trace = (...params) => processLog(LogLevel.TRACE, ...params);
|
|
584
|
-
log2.debug = (...params) => processLog(LogLevel.DEBUG, ...params);
|
|
585
|
-
log2.verbose = (...params) => processLog(LogLevel.VERBOSE, ...params);
|
|
586
|
-
log2.info = (...params) => processLog(LogLevel.INFO, ...params);
|
|
587
|
-
log2.warn = (...params) => processLog(LogLevel.WARN, ...params);
|
|
588
|
-
log2.error = (...params) => processLog(LogLevel.ERROR, ...params);
|
|
589
|
-
log2.catch = (error, context, meta) => processLog(LogLevel.ERROR, void 0, context, meta, error);
|
|
590
|
-
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");
|
|
591
|
-
log2.stack = (message, context, meta) => processLog(LogLevel.INFO, `${message ?? "Stack Dump"}
|
|
592
|
-
${getFormattedStackTrace()}`, context, meta);
|
|
593
|
-
log2.method = createMethodLogDecorator(log2);
|
|
594
|
-
log2.func = createFunctionLogDecorator(log2);
|
|
595
420
|
const processLog = (level, message, context = {}, meta, error) => {
|
|
596
421
|
log2._config.processors.forEach((processor) => processor(log2._config, {
|
|
597
422
|
level,
|
|
@@ -601,9 +426,50 @@ ${getFormattedStackTrace()}`, context, meta);
|
|
|
601
426
|
error
|
|
602
427
|
}));
|
|
603
428
|
};
|
|
429
|
+
Object.assign(log2, {
|
|
430
|
+
/**
|
|
431
|
+
* Update config.
|
|
432
|
+
* NOTE: Preserves any processors that were already added to this logger instance
|
|
433
|
+
* unless an explicit processor option is provided.
|
|
434
|
+
*/
|
|
435
|
+
config: ({ processor, ...options } = {}) => {
|
|
436
|
+
const config = createConfig(options);
|
|
437
|
+
const processors2 = processor ? config.processors : log2._config.processors;
|
|
438
|
+
log2._config = {
|
|
439
|
+
...config,
|
|
440
|
+
processors: processors2
|
|
441
|
+
};
|
|
442
|
+
return log2;
|
|
443
|
+
},
|
|
444
|
+
/**
|
|
445
|
+
* Adds a processor to the logger.
|
|
446
|
+
*/
|
|
447
|
+
addProcessor: (processor) => {
|
|
448
|
+
if (log2._config.processors.filter((p) => p === processor).length === 0) {
|
|
449
|
+
log2._config.processors.push(processor);
|
|
450
|
+
}
|
|
451
|
+
return () => {
|
|
452
|
+
log2._config.processors = log2._config.processors.filter((p) => p !== processor);
|
|
453
|
+
};
|
|
454
|
+
},
|
|
455
|
+
trace: (...params) => processLog(LogLevel.TRACE, ...params),
|
|
456
|
+
debug: (...params) => processLog(LogLevel.DEBUG, ...params),
|
|
457
|
+
verbose: (...params) => processLog(LogLevel.VERBOSE, ...params),
|
|
458
|
+
info: (...params) => processLog(LogLevel.INFO, ...params),
|
|
459
|
+
warn: (...params) => processLog(LogLevel.WARN, ...params),
|
|
460
|
+
error: (...params) => processLog(LogLevel.ERROR, ...params),
|
|
461
|
+
catch: (error, context, meta) => processLog(LogLevel.ERROR, void 0, context, meta, error),
|
|
462
|
+
method: createMethodLogDecorator(log2),
|
|
463
|
+
function: createFunctionLogDecorator(log2),
|
|
464
|
+
break: () => log2.info("-".repeat(80)),
|
|
465
|
+
stack: (message, context, meta) => {
|
|
466
|
+
return processLog(LogLevel.INFO, `${message ?? "Stack Dump"}
|
|
467
|
+
${getFormattedStackTrace()}`, context, meta);
|
|
468
|
+
}
|
|
469
|
+
});
|
|
604
470
|
return log2;
|
|
605
471
|
};
|
|
606
|
-
var log =
|
|
472
|
+
var log = globalThis.DX_LOG ??= createLog();
|
|
607
473
|
var start = Date.now();
|
|
608
474
|
var last = start;
|
|
609
475
|
var debug = (label, args) => {
|
|
@@ -620,26 +486,96 @@ var debug = (label, args) => {
|
|
|
620
486
|
};
|
|
621
487
|
var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("\n");
|
|
622
488
|
|
|
623
|
-
// src/
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
configurable: true,
|
|
631
|
-
writable: true
|
|
632
|
-
});
|
|
489
|
+
// src/index.ts
|
|
490
|
+
__reExport(index_exports, processors_exports);
|
|
491
|
+
|
|
492
|
+
// src/dbg.ts
|
|
493
|
+
var dbg = (arg, meta) => {
|
|
494
|
+
if (meta?.A) {
|
|
495
|
+
console.log(`${meta.A[0]} =`, arg);
|
|
633
496
|
} else {
|
|
634
|
-
|
|
497
|
+
console.log(arg);
|
|
498
|
+
}
|
|
499
|
+
return arg;
|
|
500
|
+
};
|
|
501
|
+
|
|
502
|
+
// src/log-buffer.ts
|
|
503
|
+
import { CircularBuffer } from "@dxos/util";
|
|
504
|
+
var DEFAULT_BUFFER_SIZE = 2e3;
|
|
505
|
+
var MAX_CONTEXT_LENGTH = 500;
|
|
506
|
+
var LogBuffer = class {
|
|
507
|
+
_buffer;
|
|
508
|
+
constructor(size = DEFAULT_BUFFER_SIZE) {
|
|
509
|
+
this._buffer = new CircularBuffer(size);
|
|
510
|
+
}
|
|
511
|
+
/** Log processor that can be registered with `log.runtimeConfig.processors`. */
|
|
512
|
+
logProcessor = (_config, entry) => {
|
|
513
|
+
if (entry.level <= LogLevel.TRACE) {
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
const record = {
|
|
517
|
+
t: (/* @__PURE__ */ new Date()).toISOString(),
|
|
518
|
+
l: shortLevelName[entry.level] ?? "?",
|
|
519
|
+
m: entry.message ?? ""
|
|
520
|
+
};
|
|
521
|
+
if (entry.meta) {
|
|
522
|
+
record.f = getRelativeFilename3(entry.meta.F);
|
|
523
|
+
record.n = entry.meta.L;
|
|
524
|
+
}
|
|
525
|
+
if (entry.error) {
|
|
526
|
+
record.e = entry.error.stack ?? entry.error.message;
|
|
527
|
+
}
|
|
528
|
+
if (entry.context != null) {
|
|
529
|
+
try {
|
|
530
|
+
const ctx = typeof entry.context === "function" ? entry.context() : entry.context;
|
|
531
|
+
if (ctx != null && !(ctx instanceof Error)) {
|
|
532
|
+
let json = JSON.stringify(ctx);
|
|
533
|
+
if (json.length > MAX_CONTEXT_LENGTH) {
|
|
534
|
+
json = json.slice(0, MAX_CONTEXT_LENGTH);
|
|
535
|
+
}
|
|
536
|
+
record.c = json;
|
|
537
|
+
}
|
|
538
|
+
} catch {
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
this._buffer.push(record);
|
|
542
|
+
};
|
|
543
|
+
/** Number of entries currently in the buffer. */
|
|
544
|
+
get size() {
|
|
545
|
+
return this._buffer.elementCount;
|
|
546
|
+
}
|
|
547
|
+
/** Discard all buffered entries. */
|
|
548
|
+
clear() {
|
|
549
|
+
this._buffer.clear();
|
|
550
|
+
}
|
|
551
|
+
/** Serialize buffer contents as NDJSON (newline-delimited JSON). */
|
|
552
|
+
serialize() {
|
|
553
|
+
const lines = [];
|
|
554
|
+
for (const record of this._buffer) {
|
|
555
|
+
lines.push(JSON.stringify(record));
|
|
556
|
+
}
|
|
557
|
+
return lines.join("\n");
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
var getRelativeFilename3 = (filename) => {
|
|
561
|
+
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
562
|
+
if (match) {
|
|
563
|
+
return match[1];
|
|
635
564
|
}
|
|
636
|
-
return
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
var
|
|
565
|
+
return filename;
|
|
566
|
+
};
|
|
567
|
+
|
|
568
|
+
// src/experimental/ownership.ts
|
|
569
|
+
import { inspect as inspect3 } from "node:util";
|
|
570
|
+
var kDebugInfoProperties = /* @__PURE__ */ Symbol("kDebugInfoProperties");
|
|
642
571
|
var OwnershipScope = class {
|
|
572
|
+
constr;
|
|
573
|
+
parent;
|
|
574
|
+
instance;
|
|
575
|
+
constructor(constr, parent) {
|
|
576
|
+
this.constr = constr;
|
|
577
|
+
this.parent = parent;
|
|
578
|
+
}
|
|
643
579
|
getInfo() {
|
|
644
580
|
if (!this.instance) {
|
|
645
581
|
return {};
|
|
@@ -651,32 +587,25 @@ var OwnershipScope = class {
|
|
|
651
587
|
}
|
|
652
588
|
return info;
|
|
653
589
|
}
|
|
654
|
-
[
|
|
590
|
+
[inspect3.custom]() {
|
|
655
591
|
return {
|
|
656
592
|
className: this.constr.name,
|
|
657
593
|
info: this.getInfo(),
|
|
658
594
|
parent: this.parent
|
|
659
595
|
};
|
|
660
596
|
}
|
|
661
|
-
constructor(constr, parent) {
|
|
662
|
-
_define_property(this, "constr", void 0);
|
|
663
|
-
_define_property(this, "parent", void 0);
|
|
664
|
-
_define_property(this, "instance", void 0);
|
|
665
|
-
this.constr = constr;
|
|
666
|
-
this.parent = parent;
|
|
667
|
-
}
|
|
668
597
|
};
|
|
669
598
|
var getCurrentOwnershipScope = (thisRef) => thisRef;
|
|
670
599
|
export {
|
|
671
600
|
BROWSER_PROCESSOR,
|
|
672
|
-
CONSOLE_PROCESSOR,
|
|
673
601
|
DEBUG_PROCESSOR,
|
|
674
|
-
DEFAULT_FORMATTER,
|
|
675
602
|
FILE_PROCESSOR,
|
|
603
|
+
LogBuffer,
|
|
676
604
|
LogLevel,
|
|
677
605
|
LogProcessorType,
|
|
678
|
-
SHORT_FORMATTER,
|
|
679
606
|
createFileProcessor,
|
|
607
|
+
createLog,
|
|
608
|
+
dbg,
|
|
680
609
|
debug,
|
|
681
610
|
gatherLogInfoFromScope,
|
|
682
611
|
getContextFromEntry,
|
|
@@ -689,7 +618,6 @@ export {
|
|
|
689
618
|
parseFilter,
|
|
690
619
|
pick,
|
|
691
620
|
shortLevelName,
|
|
692
|
-
shouldLog
|
|
693
|
-
truncate
|
|
621
|
+
shouldLog
|
|
694
622
|
};
|
|
695
623
|
//# sourceMappingURL=index.mjs.map
|