@dxos/log 0.8.4-main.c1de068 → 0.8.4-main.c4373fc
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/index.mjs +35 -14
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +41 -18
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/config.d.ts +2 -3
- package/dist/types/src/config.d.ts.map +1 -1
- package/dist/types/src/decorators.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/console-processor.d.ts.map +1 -1
- package/dist/types/src/processors/file-processor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/config.ts +2 -2
- package/src/decorators.ts +2 -1
- package/src/experimental/classes.test.ts +2 -1
- package/src/log.test.ts +1 -0
- package/src/log.ts +1 -1
- package/src/options.ts +1 -1
- package/src/platform/node/index.ts +2 -1
- package/src/processors/browser-processor.ts +3 -1
- package/src/processors/console-processor.ts +9 -5
- package/src/processors/file-processor.ts +2 -1
- package/src/scope.ts +1 -1
|
@@ -3,7 +3,7 @@ import omit from "lodash.omit";
|
|
|
3
3
|
import { pick } from "@dxos/util";
|
|
4
4
|
|
|
5
5
|
// src/config.ts
|
|
6
|
-
var LogLevel = /* @__PURE__ */ function(LogLevel2) {
|
|
6
|
+
var LogLevel = /* @__PURE__ */ (function(LogLevel2) {
|
|
7
7
|
LogLevel2[LogLevel2["TRACE"] = 5] = "TRACE";
|
|
8
8
|
LogLevel2[LogLevel2["DEBUG"] = 10] = "DEBUG";
|
|
9
9
|
LogLevel2[LogLevel2["VERBOSE"] = 11] = "VERBOSE";
|
|
@@ -11,7 +11,7 @@ var LogLevel = /* @__PURE__ */ function(LogLevel2) {
|
|
|
11
11
|
LogLevel2[LogLevel2["WARN"] = 13] = "WARN";
|
|
12
12
|
LogLevel2[LogLevel2["ERROR"] = 14] = "ERROR";
|
|
13
13
|
return LogLevel2;
|
|
14
|
-
}({});
|
|
14
|
+
})({});
|
|
15
15
|
var levels = {
|
|
16
16
|
trace: 5,
|
|
17
17
|
debug: 10,
|
|
@@ -28,17 +28,18 @@ var shortLevelName = {
|
|
|
28
28
|
[13]: "W",
|
|
29
29
|
[14]: "E"
|
|
30
30
|
};
|
|
31
|
-
var LogProcessorType = /* @__PURE__ */ function(LogProcessorType2) {
|
|
31
|
+
var LogProcessorType = /* @__PURE__ */ (function(LogProcessorType2) {
|
|
32
32
|
LogProcessorType2["CONSOLE"] = "console";
|
|
33
33
|
LogProcessorType2["BROWSER"] = "browser";
|
|
34
34
|
LogProcessorType2["DEBUG"] = "debug";
|
|
35
35
|
return LogProcessorType2;
|
|
36
|
-
}({});
|
|
36
|
+
})({});
|
|
37
37
|
|
|
38
38
|
// src/scope.ts
|
|
39
39
|
var logInfoProperties = Symbol("logInfoProperties");
|
|
40
40
|
var logInfo = (target, propertyKey, descriptor) => {
|
|
41
|
-
|
|
41
|
+
var _target, _logInfoProperties;
|
|
42
|
+
((_target = target)[_logInfoProperties = logInfoProperties] ?? (_target[_logInfoProperties] = [])).push(propertyKey);
|
|
42
43
|
};
|
|
43
44
|
var gatherLogInfoFromScope = (scope) => {
|
|
44
45
|
if (!scope) {
|
|
@@ -46,7 +47,7 @@ var gatherLogInfoFromScope = (scope) => {
|
|
|
46
47
|
}
|
|
47
48
|
const res = {};
|
|
48
49
|
const prototype = Object.getPrototypeOf(scope);
|
|
49
|
-
const infoProps = prototype[logInfoProperties] ?? [];
|
|
50
|
+
const infoProps = (typeof prototype === "object" && prototype !== null ? prototype[logInfoProperties] : []) ?? [];
|
|
50
51
|
for (const prop of infoProps) {
|
|
51
52
|
try {
|
|
52
53
|
res[prop] = typeof scope[prop] === "function" ? scope[prop]() : scope[prop];
|
|
@@ -97,8 +98,8 @@ var getContextFromEntry = (entry) => {
|
|
|
97
98
|
};
|
|
98
99
|
|
|
99
100
|
// src/decorators.ts
|
|
100
|
-
import chalk from "chalk";
|
|
101
101
|
import { inspect } from "@dxos/node-std/util";
|
|
102
|
+
import chalk from "chalk";
|
|
102
103
|
var nextPromiseId = 0;
|
|
103
104
|
var createMethodLogDecorator = (log2) => (arg0, arg1, meta) => (target, propertyKey, descriptor) => {
|
|
104
105
|
const method = descriptor.value;
|
|
@@ -279,6 +280,8 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
279
280
|
if (context) {
|
|
280
281
|
if (Object.keys(context).length === 1 && "error" in context) {
|
|
281
282
|
args.push(context.error);
|
|
283
|
+
} else if (Object.keys(context).length === 1 && "err" in context) {
|
|
284
|
+
args.push(context.err);
|
|
282
285
|
} else {
|
|
283
286
|
args.push(context);
|
|
284
287
|
}
|
|
@@ -412,7 +415,7 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
|
412
415
|
};
|
|
413
416
|
var logFilePath;
|
|
414
417
|
var getLogFilePath = () => {
|
|
415
|
-
logFilePath
|
|
418
|
+
logFilePath ?? (logFilePath = process.env.LOG_FILE ?? (process.env.HOME ? `${process.env.HOME}/.dxlog/${(/* @__PURE__ */ new Date()).toISOString()}.log` : void 0));
|
|
416
419
|
return logFilePath;
|
|
417
420
|
};
|
|
418
421
|
var FILE_PROCESSOR = createFileProcessor({
|
|
@@ -474,6 +477,7 @@ var getConfig = (options) => {
|
|
|
474
477
|
};
|
|
475
478
|
|
|
476
479
|
// src/log.ts
|
|
480
|
+
var _globalThis;
|
|
477
481
|
var createLog = () => {
|
|
478
482
|
const log2 = (...params) => processLog(LogLevel.DEBUG, ...params);
|
|
479
483
|
log2._config = getConfig();
|
|
@@ -514,7 +518,7 @@ ${getFormattedStackTrace()}`, context, meta);
|
|
|
514
518
|
};
|
|
515
519
|
return log2;
|
|
516
520
|
};
|
|
517
|
-
var log = globalThis.dx_log
|
|
521
|
+
var log = (_globalThis = globalThis).dx_log ?? (_globalThis.dx_log = createLog());
|
|
518
522
|
var start = Date.now();
|
|
519
523
|
var last = start;
|
|
520
524
|
var debug = (label, args) => {
|
|
@@ -533,14 +537,24 @@ var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("
|
|
|
533
537
|
|
|
534
538
|
// src/experimental/ownership.ts
|
|
535
539
|
import { inspect as inspect3 } from "@dxos/node-std/util";
|
|
540
|
+
function _define_property(obj, key, value) {
|
|
541
|
+
if (key in obj) {
|
|
542
|
+
Object.defineProperty(obj, key, {
|
|
543
|
+
value,
|
|
544
|
+
enumerable: true,
|
|
545
|
+
configurable: true,
|
|
546
|
+
writable: true
|
|
547
|
+
});
|
|
548
|
+
} else {
|
|
549
|
+
obj[key] = value;
|
|
550
|
+
}
|
|
551
|
+
return obj;
|
|
552
|
+
}
|
|
536
553
|
var kOwnershipScope = Symbol("kOwnershipScope");
|
|
537
554
|
var kCurrentOwnershipScope = Symbol("kCurrentOwnershipScope");
|
|
538
555
|
var kDebugInfoProperties = Symbol("kDebugInfoProperties");
|
|
556
|
+
var _inspect_custom = inspect3.custom;
|
|
539
557
|
var OwnershipScope = class {
|
|
540
|
-
constructor(constr, parent) {
|
|
541
|
-
this.constr = constr;
|
|
542
|
-
this.parent = parent;
|
|
543
|
-
}
|
|
544
558
|
getInfo() {
|
|
545
559
|
if (!this.instance) {
|
|
546
560
|
return {};
|
|
@@ -552,13 +566,20 @@ var OwnershipScope = class {
|
|
|
552
566
|
}
|
|
553
567
|
return info;
|
|
554
568
|
}
|
|
555
|
-
[
|
|
569
|
+
[_inspect_custom]() {
|
|
556
570
|
return {
|
|
557
571
|
className: this.constr.name,
|
|
558
572
|
info: this.getInfo(),
|
|
559
573
|
parent: this.parent
|
|
560
574
|
};
|
|
561
575
|
}
|
|
576
|
+
constructor(constr, parent) {
|
|
577
|
+
_define_property(this, "constr", void 0);
|
|
578
|
+
_define_property(this, "parent", void 0);
|
|
579
|
+
_define_property(this, "instance", void 0);
|
|
580
|
+
this.constr = constr;
|
|
581
|
+
this.parent = parent;
|
|
582
|
+
}
|
|
562
583
|
};
|
|
563
584
|
var getCurrentOwnershipScope = (thisRef) => thisRef;
|
|
564
585
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/index.ts", "../../../src/config.ts", "../../../src/scope.ts", "../../../src/context.ts", "../../../src/decorators.ts", "../../../src/options.ts", "../../../src/platform/browser/index.ts", "../../../src/processors/console-stub.ts", "../../../src/processors/debug-processor.ts", "../../../src/processors/browser-processor.ts", "../../../src/processors/file-processor.ts", "../../../src/processors/common.ts", "../../../src/log.ts", "../../../src/experimental/ownership.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport omit from 'lodash.omit';\n\nimport { pick } from '@dxos/util';\n\nexport { omit, pick };\n\nexport * from './config';\nexport * from './context';\nexport * from './log';\nexport { parseFilter } from './options';\nexport * from './processors';\nexport * from './scope';\nexport type * from './meta';\n\nexport { getCurrentOwnershipScope } from './experimental/ownership';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogProcessor } from './context';\n\n/**\n * Standard levels.\n */\n// NOTE: Keep aligned with LogLevel in @dxos/protocols.\n// TODO(burdon): Update numbers?\nexport enum LogLevel {\n TRACE = 5,\n DEBUG = 10,\n VERBOSE = 11,\n INFO = 12,\n WARN = 13,\n ERROR = 14,\n}\n\nexport const levels: { [index: string]: LogLevel } = {\n trace: LogLevel.TRACE,\n debug: LogLevel.DEBUG,\n verbose: LogLevel.VERBOSE,\n info: LogLevel.INFO,\n warn: LogLevel.WARN,\n error: LogLevel.ERROR,\n};\n\nexport const shortLevelName = {\n [LogLevel.TRACE]: 'T',\n [LogLevel.DEBUG]: 'D',\n [LogLevel.VERBOSE]: 'V',\n [LogLevel.INFO]: 'I',\n [LogLevel.WARN]: 'W',\n [LogLevel.ERROR]: 'E',\n};\n\nexport enum LogProcessorType {\n CONSOLE = 'console',\n BROWSER = 'browser',\n DEBUG = 'debug',\n}\n\n/**\n * Individual filter condition.\n */\nexport type LogFilter = {\n level: LogLevel;\n pattern?: string;\n};\n\n/**\n * Options to set inline or load from the YML file.\n */\nexport type LogOptions = {\n file?: string;\n filter?: string | string[] | LogLevel;\n captureFilter?: string | string[] | LogLevel;\n depth?: number; // Context object depth.\n processor?: string | LogProcessorType;\n formatter?: {\n column: number;\n timestamp: boolean;\n timestampFirst: boolean;\n };\n prefix?: string;\n};\n\n/**\n * Runtime config.\n */\nexport interface LogConfig {\n options: LogOptions;\n filters?: LogFilter[];\n captureFilters?: LogFilter[];\n processors: LogProcessor[];\n prefix?: string;\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nconst logInfoProperties = Symbol('logInfoProperties');\n\n/**\n * Decorate fields, properties, or methods to automatically include their values in log messages.\n *\n * Example:\n *\n * ```typescript\n * class Example {\n * @logInfo\n * peerId: PublicKey;\n * }\n * ```\n */\nexport const logInfo = (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {\n // console.log(target, propertyKey, descriptor);\n (target[logInfoProperties] ??= []).push(propertyKey);\n};\n\n/**\n * Introspects class instance to find decorated metadata.\n * @param scope Class instance.\n */\nexport const gatherLogInfoFromScope = (scope: any): Record<string, any> => {\n if (!scope) {\n return {};\n }\n\n const res: Record<string, any> = {};\n\n const prototype = Object.getPrototypeOf(scope);\n const infoProps = prototype[logInfoProperties] ?? [];\n for (const prop of infoProps) {\n try {\n res[prop] = typeof scope[prop] === 'function' ? scope[prop]() : scope[prop];\n } catch (err: any) {\n res[prop] = err.message;\n }\n }\n\n return res;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogConfig, type LogFilter, type LogLevel } from './config';\nimport { type CallMetadata } from './meta';\nimport { gatherLogInfoFromScope } from './scope';\n\n/**\n * Optional object passed to the logging API.\n */\nexport type LogContext = Record<string, any> | Error | any;\n\n/**\n * Record for current log line.\n */\nexport interface LogEntry {\n level: LogLevel;\n message?: string;\n context?: LogContext;\n meta?: CallMetadata;\n error?: Error;\n}\n\n/**\n * Processes (e.g., prints, forwards) log entries.\n */\nexport type LogProcessor = (config: LogConfig, entry: LogEntry) => void;\n\nconst matchFilter = (filter: LogFilter, level: LogLevel, path: string) => {\n return level >= filter.level && (!filter.pattern || path.includes(filter.pattern));\n};\n\n/**\n * Determines if the current line should be logged (called by the processor).\n */\nexport const shouldLog = (entry: LogEntry, filters?: LogFilter[]): boolean => {\n if (filters === undefined) {\n return true;\n } else {\n return filters.some((filter) => matchFilter(filter, entry.level, entry.meta?.F ?? ''));\n }\n};\n\nexport const getContextFromEntry = (entry: LogEntry): Record<string, any> | undefined => {\n let context;\n if (entry.meta) {\n const scopeInfo = gatherLogInfoFromScope(entry.meta.S);\n if (Object.keys(scopeInfo).length > 0) {\n context = Object.assign(context ?? {}, scopeInfo);\n }\n }\n\n const entryContext = typeof entry.context === 'function' ? entry.context() : entry.context;\n if (entryContext) {\n if (entryContext instanceof Error) {\n // Additional context from Error.\n const c = (entryContext as any).context;\n // If ERROR then show stacktrace.\n context = Object.assign(context ?? {}, { error: entryContext.stack, ...c });\n } else if (typeof entryContext === 'object') {\n context = Object.assign(context ?? {}, entryContext);\n }\n }\n\n if (entry.error) {\n context = Object.assign(context ?? {}, { error: entry.error });\n }\n\n return context && Object.keys(context).length > 0 ? context : undefined;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport chalk from 'chalk';\nimport { inspect } from 'node:util';\n\nimport type { LogMethods } from './log';\nimport { type CallMetadata } from './meta';\n\nlet nextPromiseId = 0;\n\nexport const createMethodLogDecorator =\n (log: LogMethods) =>\n (arg0?: never, arg1?: never, meta?: CallMetadata): MethodDecorator =>\n (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const method = descriptor.value!;\n const methodName = propertyKey as string;\n descriptor.value = function (this: any, ...args: any) {\n const combinedMeta = {\n F: '',\n L: 0,\n ...(meta ?? {}),\n S: this as any,\n } as CallMetadata;\n\n const formattedArgs = args.map((arg: any) => inspect(arg, false, 1, true)).join(', ');\n\n try {\n const startTime = performance.now();\n const result = method.apply(this, args);\n\n if (isThenable(result)) {\n const id = nextPromiseId++;\n logAsyncBegin(log, methodName, formattedArgs, id, combinedMeta);\n result.then(\n (resolvedValue) => {\n logAsyncResolved(log, methodName, resolvedValue, id, startTime, combinedMeta);\n },\n (err) => {\n logAsyncRejected(log, methodName, err, id, startTime, combinedMeta);\n },\n );\n } else {\n logSyncCall(log, methodName, formattedArgs, result, combinedMeta);\n }\n\n return result;\n } catch (err: any) {\n logSyncError(log, methodName, formattedArgs, err, combinedMeta);\n throw err;\n }\n };\n Object.defineProperty(descriptor.value, 'name', { value: methodName + '$log' });\n };\n\nexport const createFunctionLogDecorator =\n (log: LogMethods) =>\n <F extends (...args: any[]) => any>(\n name: string,\n fn: F,\n opts: { transformOutput?: (result: ReturnType<F>) => Promise<any> | any } = {},\n ): F => {\n const decoratedFn = function (this: any, ...args: any) {\n const combinedMeta = {\n F: '',\n L: 0,\n } as CallMetadata;\n\n const formattedArgs = args.map((arg: any) => inspect(arg, false, 1, true)).join(', ');\n\n try {\n const startTime = performance.now();\n const result = fn.apply(this, args);\n\n let transformedResult = result;\n if (opts.transformOutput) {\n if (isThenable(result)) {\n transformedResult = result.then(opts.transformOutput as any);\n } else {\n transformedResult = opts.transformOutput(result);\n }\n }\n\n if (isThenable(transformedResult)) {\n const id = nextPromiseId++;\n logAsyncBegin(log, name, formattedArgs, id, combinedMeta);\n transformedResult.then(\n (resolvedValue) => {\n logAsyncResolved(log, name, resolvedValue, id, startTime, combinedMeta);\n },\n (err) => {\n logAsyncRejected(log, name, err, id, startTime, combinedMeta);\n },\n );\n } else {\n logSyncCall(log, name, formattedArgs, transformedResult, combinedMeta);\n }\n\n return result;\n } catch (err: any) {\n logSyncError(log, name, formattedArgs, err, combinedMeta);\n throw err;\n }\n };\n Object.defineProperty(decoratedFn, 'name', { value: name + '$log' });\n return decoratedFn as F;\n };\n\nconst isThenable = (obj: any): obj is Promise<unknown> => obj && typeof obj.then === 'function';\n\nconst logSyncCall = (\n log: LogMethods,\n methodName: string,\n formattedArgs: string,\n result: unknown,\n combinedMeta: CallMetadata,\n) => {\n log.info(\n `.${formatFunction(methodName)} (${formattedArgs}) ${chalk.gray('=>')} ${inspect(result, false, 1, true)}`,\n {},\n combinedMeta,\n );\n};\n\nconst logSyncError = (\n log: LogMethods,\n methodName: string,\n formattedArgs: string,\n err: Error,\n combinedMeta: CallMetadata,\n) => {\n log.error(`.${formatFunction(methodName)} (${formattedArgs}) 🔥 ${err}`, {}, combinedMeta);\n};\n\nconst logAsyncBegin = (\n log: LogMethods,\n methodName: string,\n formattedArgs: string,\n promiseId: number,\n combinedMeta: CallMetadata,\n) => {\n log.info(\n `.${formatFunction(methodName)} ↴ (${formattedArgs}) ${chalk.gray('=>')} ${formatPromise(promiseId)}`,\n {},\n combinedMeta,\n );\n};\n\nconst logAsyncResolved = (\n log: LogMethods,\n methodName: string,\n resolvedValue: unknown | undefined,\n promiseId: number,\n startTime: number,\n combinedMeta: CallMetadata,\n) => {\n if (resolvedValue !== undefined) {\n log.info(\n `.${formatFunction(methodName)} ↲ ${greenCheck} ${chalk.gray('resolve')} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)} ${chalk.gray('=>')} ${inspect(\n resolvedValue,\n false,\n 1,\n true,\n )}`,\n {},\n combinedMeta,\n );\n } else {\n log.info(\n `.${formatFunction(methodName)} ↲ ${greenCheck} ${chalk.gray('resolve')} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)}`,\n {},\n combinedMeta,\n );\n }\n};\n\nconst logAsyncRejected = (\n log: LogMethods,\n methodName: string,\n err: Error,\n promiseId: number,\n startTime: number,\n combinedMeta: CallMetadata,\n) => {\n log.info(\n `.${formatFunction(methodName)} ↲ 🔥 ${chalk.gray('reject')} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)} ${chalk.gray('=>')} ${err}`,\n {},\n combinedMeta,\n );\n};\n\n// https://github.com/dxos/dxos/issues/7286\nconst greenCheck = typeof chalk.green === 'function' ? chalk.green('✔') : '✔';\n\nconst formatTimeElapsed = (startTime: number) => chalk.gray(`${(performance.now() - startTime).toFixed(0)}ms`);\n\nconst COLOR_FUNCTION = [220, 220, 170] as const;\n\nconst formatFunction = (name: string) => chalk.bold(chalk.rgb(...COLOR_FUNCTION)(name));\n\nconst formatPromise = (id: number) => chalk.blue(`Promise#${id}`);\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport defaultsDeep from 'lodash.defaultsdeep';\n\nimport { type LogConfig, type LogFilter, LogLevel, type LogOptions, LogProcessorType, levels } from './config';\nimport { type LogProcessor } from './context';\nimport { loadOptions } from './platform';\nimport { CONSOLE_PROCESSOR, DEBUG_PROCESSOR, BROWSER_PROCESSOR } from './processors';\n\n/**\n * Processor variants.\n */\nexport const processors: { [index: string]: LogProcessor } = {\n [LogProcessorType.CONSOLE]: CONSOLE_PROCESSOR,\n [LogProcessorType.BROWSER]: BROWSER_PROCESSOR,\n [LogProcessorType.DEBUG]: DEBUG_PROCESSOR,\n};\n\nconst IS_BROWSER = typeof window !== 'undefined' || typeof navigator !== 'undefined';\n\nexport const DEFAULT_PROCESSORS = [IS_BROWSER ? BROWSER_PROCESSOR : CONSOLE_PROCESSOR];\n\nexport const parseFilter = (filter: string | string[] | LogLevel): LogFilter[] => {\n if (typeof filter === 'number') {\n return [{ level: filter }];\n }\n\n const parseLogLevel = (level: string, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;\n\n const lines = typeof filter === 'string' ? filter.split(/,\\s*/) : filter;\n return lines.map((filter) => {\n const [pattern, level] = filter.split(':');\n return level ? { level: parseLogLevel(level), pattern } : { level: parseLogLevel(pattern) };\n });\n};\n\nexport const getConfig = (options?: LogOptions): LogConfig => {\n const nodeOptions: LogOptions | undefined =\n 'process' in globalThis\n ? {\n file: process!.env.LOG_CONFIG,\n filter: process!.env.LOG_FILTER,\n processor: process!.env.LOG_PROCESSOR,\n }\n : undefined;\n\n const mergedOptions: LogOptions = defaultsDeep({}, loadOptions(nodeOptions?.file), nodeOptions, options);\n return {\n options: mergedOptions,\n filters: parseFilter(mergedOptions.filter ?? LogLevel.INFO),\n captureFilters: parseFilter(mergedOptions.captureFilter ?? LogLevel.WARN),\n processors: mergedOptions.processor ? [processors[mergedOptions.processor]] : DEFAULT_PROCESSORS,\n prefix: mergedOptions.prefix,\n };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogOptions } from '../../config';\n\n// NOTE: Implementation for the browser. See `package.json`.\nexport const loadOptions = (filepath?: string): LogOptions | undefined => {\n try {\n let dxlog: string | undefined;\n // if running in a worker, use the localStorage.dxlog setting forwarded on worker initilization in\n // @dxos/client/src/worker/onconnect.ts\n if (typeof localStorage === 'undefined') {\n if ((globalThis as any).localStorage_dxlog) {\n dxlog = (globalThis as any).localStorage_dxlog;\n }\n } else {\n dxlog = localStorage.getItem('dxlog') ?? undefined;\n }\n if (!dxlog) {\n return undefined;\n }\n return JSON.parse(dxlog);\n } catch (err) {\n console.info(\"can't parse dxlog config\", err);\n return undefined;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// TODO(wittjosiah): Consider mapping console processor directly to browser processor in the browser.\nexport const CONSOLE_PROCESSOR = () => {};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nimport { type LogProcessor } from '../context';\n\nexport const DEBUG_PROCESSOR: LogProcessor = (config, entry) => {\n console.log(inspect(entry, false, null, true));\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { getDebugName, safariCheck } from '@dxos/util';\n\nimport { LogLevel } from '../config';\nimport { getContextFromEntry, type LogProcessor, shouldLog } from '../context';\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n\ntype Config = {\n useTestProcessor: boolean;\n printFileLinks: boolean;\n};\n\nconst CONFIG: Config = {\n useTestProcessor: false,\n printFileLinks: false,\n};\n\n/**\n * For running apps in the browser normally.\n */\nconst APP_BROWSER_PROCESSOR: LogProcessor = (config, entry) => {\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n\n // Example local editor prefix: 'vscode://file/Users/burdon/Code/dxos/dxos/'.\n const LOG_BROWSER_PREFIX = config.prefix ?? 'https://vscode.dev/github.com/dxos/dxos/blob/main/';\n\n // TODO(burdon): CSS breaks formatting (e.g., [Object] rather than expandable property).\n // TODO(burdon): Consider custom formatters.\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n // NOTE: Cannot change color of link (from bright white).\n // const LOG_BROWSER_CSS = ['color:gray; font-size:10px; padding-bottom: 4px', 'color:#B97852; font-size:14px;'];\n const LOG_BROWSER_CSS: string[] = [];\n\n let link = '';\n if (entry.meta) {\n const filename = getRelativeFilename(entry.meta.F);\n const filepath = `${LOG_BROWSER_PREFIX.replace(/\\/$/, '')}/${filename}`;\n // TODO(burdon): Line numbers not working for app link, even with colons.\n // https://stackoverflow.com/a/54459820/2804332\n link = `${filepath}#L${entry.meta.L}`;\n }\n\n let args = [];\n\n if (entry.meta?.S) {\n const scope = entry.meta?.S;\n const scopeName = scope.name || getDebugName(scope);\n const processPrefix = entry.meta.S?.hostSessionId ? '[worker] ' : '';\n // TODO(dmaretskyi): Those can be made clickable with a custom formatter.\n args.push(`%c${processPrefix}${scopeName}`, 'color:#C026D3;font-weight:bold');\n }\n\n if (entry.message) {\n args.push(entry.message);\n }\n\n const context = getContextFromEntry(entry);\n if (context) {\n if (Object.keys(context).length === 1 && 'error' in context) {\n args.push(context.error);\n } else {\n args.push(context);\n }\n }\n\n // https://github.com/cloudflare/workers-sdk/issues/5591\n const levels: any = {\n [LogLevel.ERROR]: console.error.bind(console),\n [LogLevel.WARN]: console.warn.bind(console),\n [LogLevel.DEBUG]: console.log.bind(console),\n };\n\n // Safari prints source code location as this file, not the caller.\n if (CONFIG.printFileLinks || safariCheck()) {\n if (LOG_BROWSER_CSS?.length) {\n args = [`%c${link}\\n%c${args.join(' ')}`, ...LOG_BROWSER_CSS];\n } else {\n args = [link + '\\n', ...args];\n }\n }\n\n // https://github.com/cloudflare/workers-sdk/issues/5591\n const level = levels[entry.level] ?? console.log.bind(console);\n if (typeof entry.meta?.C === 'function') {\n entry.meta.C(level, args);\n } else {\n level(...args);\n }\n};\n\n/**\n * For running unit tests in the headless browser.\n */\nconst TEST_BROWSER_PROCESSOR: LogProcessor = (config, entry) => {\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n\n let path = '';\n if (entry.meta) {\n path = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;\n }\n\n let args = [];\n\n const processPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n args.push(`${processPrefix}${entry.message}`);\n\n const context = getContextFromEntry(entry);\n if (context) {\n args.push(context);\n }\n\n const levels: any = {\n [LogLevel.ERROR]: console.error,\n [LogLevel.WARN]: console.warn,\n [LogLevel.DEBUG]: console.log,\n };\n\n if (CONFIG.printFileLinks) {\n args = [path, ...args];\n }\n\n const level = levels[entry.level] ?? console.log;\n if (typeof entry.meta?.C === 'function') {\n entry.meta.C(level, args);\n } else {\n level(...args);\n }\n};\n\nexport const BROWSER_PROCESSOR: LogProcessor = CONFIG.useTestProcessor ? TEST_BROWSER_PROCESSOR : APP_BROWSER_PROCESSOR;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { appendFileSync, mkdirSync, openSync } from 'node:fs';\nimport { dirname } from 'node:path';\n\nimport { jsonlogify } from '@dxos/util';\n\nimport { getRelativeFilename } from './common';\nimport { type LogFilter, LogLevel } from '../config';\nimport { type LogProcessor, getContextFromEntry, shouldLog } from '../context';\n\n// Amount of time to retry writing after encountering EAGAIN before giving up.\nconst EAGAIN_MAX_DURATION = 1000;\n/**\n * Create a file processor.\n * @param path - Path to log file to create or append to, or existing open file descriptor e.g. stdout.\n * @param levels - Log levels to process. Takes preference over Filters.\n * @param filters - Filters to apply.\n */\nexport const createFileProcessor = ({\n pathOrFd,\n levels,\n filters,\n}: {\n pathOrFd: string | number;\n levels: LogLevel[];\n filters?: LogFilter[];\n}): LogProcessor => {\n let fd: number | undefined;\n\n return (config, entry) => {\n if (levels.length > 0 && !levels.includes(entry.level)) {\n return;\n }\n if (!shouldLog(entry, filters)) {\n return;\n }\n if (typeof pathOrFd === 'number') {\n fd = pathOrFd;\n } else {\n try {\n mkdirSync(dirname(pathOrFd));\n } catch {}\n fd = openSync(pathOrFd, 'a');\n }\n\n const record = {\n ...entry,\n timestamp: Date.now(),\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n context: jsonlogify(getContextFromEntry(entry)),\n };\n let retryTS: number = 0;\n\n // Retry writing if EAGAIN is encountered.\n //\n // Node may set stdout and stderr to non-blocking. https://github.com/nodejs/node/issues/42826\n // This can cause EAGAIN errors when writing to them.\n // In order to not drop logs, make log methods asynchronous, or deal with buffering/delayed writes, spin until write succeeds.\n\n while (true) {\n try {\n return appendFileSync(fd, JSON.stringify(record) + '\\n');\n } catch (err: any) {\n if (err.code !== 'EAGAIN') {\n throw err;\n }\n if (retryTS === 0) {\n retryTS = performance.now();\n } else {\n if (performance.now() - retryTS > EAGAIN_MAX_DURATION) {\n console.log(`could not write after ${EAGAIN_MAX_DURATION}ms of EAGAIN failures, giving up`);\n throw err;\n }\n }\n }\n }\n };\n};\n\nlet logFilePath: string | undefined;\nconst getLogFilePath = () => {\n logFilePath ??=\n process.env.LOG_FILE ??\n (process.env.HOME ? `${process.env.HOME}/.dxlog/${new Date().toISOString()}.log` : undefined);\n\n return logFilePath!;\n};\n\nexport const FILE_PROCESSOR: LogProcessor = createFileProcessor({\n pathOrFd: getLogFilePath(),\n levels: [LogLevel.ERROR, LogLevel.WARN, LogLevel.INFO, LogLevel.TRACE],\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogConfig, LogLevel, type LogOptions } from './config';\nimport { type LogContext, type LogProcessor } from './context';\nimport { createFunctionLogDecorator, createMethodLogDecorator } from './decorators';\nimport { type CallMetadata } from './meta';\nimport { getConfig, DEFAULT_PROCESSORS } from './options';\n\n/**\n * Logging function.\n */\ntype LogFunction = (message: string, context?: LogContext, meta?: CallMetadata) => void;\n\n/**\n * Logging methods.\n */\nexport interface LogMethods {\n trace: LogFunction;\n debug: LogFunction;\n verbose: LogFunction;\n info: LogFunction;\n warn: LogFunction;\n error: LogFunction;\n catch: (error: Error | any, context?: LogContext, meta?: CallMetadata) => void;\n break: () => void;\n stack: (message?: string, context?: never, meta?: CallMetadata) => void;\n method: (arg0?: never, arg1?: never, meta?: CallMetadata) => MethodDecorator;\n func: <F extends (...args: any[]) => any>(\n name: string,\n fn: F,\n opts?: { transformOutput?: (result: ReturnType<F>) => Promise<any> | any },\n ) => F;\n}\n\n/**\n * Properties accessible on the logging function.\n */\ninterface Log extends LogMethods, LogFunction {\n config: (options: LogOptions) => void;\n addProcessor: (processor: LogProcessor) => void;\n runtimeConfig: LogConfig;\n}\n\ninterface LogImp extends Log {\n _config: LogConfig;\n}\n\nconst createLog = (): LogImp => {\n const log: LogImp = ((...params) => processLog(LogLevel.DEBUG, ...params)) as LogImp;\n\n log._config = getConfig();\n Object.defineProperty(log, 'runtimeConfig', { get: () => log._config });\n\n log.addProcessor = (processor: LogProcessor) => {\n if (DEFAULT_PROCESSORS.filter((p) => p === processor).length === 0) {\n DEFAULT_PROCESSORS.push(processor);\n }\n if (log._config.processors.filter((p) => p === processor).length === 0) {\n log._config.processors.push(processor);\n }\n };\n\n // Set config.\n log.config = (options: LogOptions) => {\n log._config = getConfig(options);\n };\n\n // TODO(burdon): API to set context and separate error object.\n // E.g., log.warn('failed', { key: 123 }, err);\n\n log.trace = (...params) => processLog(LogLevel.TRACE, ...params);\n log.debug = (...params) => processLog(LogLevel.DEBUG, ...params);\n log.verbose = (...params) => processLog(LogLevel.VERBOSE, ...params);\n log.info = (...params) => processLog(LogLevel.INFO, ...params);\n log.warn = (...params) => processLog(LogLevel.WARN, ...params);\n log.error = (...params) => processLog(LogLevel.ERROR, ...params);\n\n // Catch only shows error message, not stacktrace.\n log.catch = (error: Error | any, context, meta) => processLog(LogLevel.ERROR, undefined, context, meta, error);\n\n // Show break.\n log.break = () => log.info('——————————————————————————————————————————————————');\n\n log.stack = (message, context, meta) =>\n processLog(LogLevel.INFO, `${message ?? 'Stack Dump'}\\n${getFormattedStackTrace()}`, context, meta);\n\n log.method = createMethodLogDecorator(log);\n log.func = createFunctionLogDecorator(log);\n\n /**\n * Process the current log call.\n */\n const processLog = (\n level: LogLevel,\n message: string | undefined,\n context: LogContext = {},\n meta?: CallMetadata,\n error?: Error,\n ) => {\n log._config.processors.forEach((processor) => processor(log._config, { level, message, context, meta, error }));\n };\n\n return log;\n};\n\n/**\n * Global logging function.\n */\nexport const log: Log = ((globalThis as any).dx_log ??= createLog());\n\nconst start = Date.now();\nlet last = start;\n\n/**\n * Log debug stack.\n */\nexport const debug = (label?: any, args?: any) => {\n const now = Date.now();\n const err = new Error();\n console.group(\n `DEBUG[${label}]`,\n JSON.stringify({ t: Number(now - start).toLocaleString(), dt: Number(now - last).toLocaleString(), ...args }),\n );\n console.warn(err.stack);\n console.groupEnd();\n last = Date.now();\n};\n\n/**\n * Accessible from browser console.\n */\ndeclare global {\n // eslint-disable-next-line camelcase\n const dx_log: Log;\n}\n\nconst getFormattedStackTrace = () => new Error().stack!.split('\\n').slice(3).join('\\n');\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nconst kOwnershipScope = Symbol('kOwnershipScope');\nconst kCurrentOwnershipScope = Symbol('kCurrentOwnershipScope');\nconst kDebugInfoProperties = Symbol('kDebugInfoProperties');\n\n/**\n *\n */\n// TODO(burdon): Document.\nexport class OwnershipScope {\n public instance: any;\n\n constructor(\n public constr: any,\n public parent?: OwnershipScope,\n ) {}\n\n getInfo() {\n if (!this.instance) {\n return {};\n }\n const props = this.constr.prototype[kDebugInfoProperties] ?? [];\n const info: any = {};\n for (const prop of props) {\n info[prop] = this.instance[prop];\n }\n return info;\n }\n\n [inspect.custom]() {\n return {\n className: this.constr.name,\n info: this.getInfo(),\n parent: this.parent,\n };\n }\n}\n\nfunction decorateMethodWeakReturnOwnership(prototype: any, key: string) {\n const original = prototype[key];\n prototype[key] = function (...args: any) {\n const res = original.apply(this, ...args);\n\n if (res && typeof res.then === 'function') {\n res.then((value: any) => {\n if (kOwnershipScope in value) {\n value[kOwnershipScope].parent ??= this[kOwnershipScope];\n }\n });\n } else {\n if (res && kOwnershipScope in res) {\n res[kOwnershipScope].parent ??= this[kOwnershipScope];\n }\n }\n\n return res;\n };\n}\n\nexport function ownershipClass<T extends { new (...args: any[]): {} }>(constr: T) {\n for (const key of Object.getOwnPropertyNames(constr.prototype)) {\n if (key !== 'constructor' && typeof constr.prototype[key] === 'function') {\n decorateMethodWeakReturnOwnership(constr.prototype, key);\n }\n }\n\n return class extends constr {\n constructor(...args: any[]) {\n const currentCausality = (globalThis as any)[kCurrentOwnershipScope];\n (globalThis as any)[kCurrentOwnershipScope] = new OwnershipScope(constr, currentCausality);\n super(...args);\n (this as any)[kOwnershipScope] = (globalThis as any)[kCurrentOwnershipScope];\n (this as any)[kOwnershipScope].instance = this;\n (globalThis as any)[kCurrentOwnershipScope] = currentCausality;\n }\n };\n}\n\nexport const debugInfo = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n // console.log(target, propertyKey, descriptor);\n (target[kDebugInfoProperties] ??= []).push(propertyKey);\n};\n\nexport const getCurrentOwnershipScope = (thisRef: any) => thisRef;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["omit", "pick", "LogLevel", "levels", "trace", "debug", "verbose", "info", "warn", "error", "shortLevelName", "LogProcessorType", "logInfoProperties", "Symbol", "logInfo", "target", "propertyKey", "descriptor", "push", "gatherLogInfoFromScope", "scope", "res", "prototype", "Object", "getPrototypeOf", "infoProps", "prop", "err", "message", "matchFilter", "filter", "level", "path", "pattern", "includes", "shouldLog", "entry", "filters", "undefined", "some", "meta", "F", "getContextFromEntry", "context", "scopeInfo", "gatherLogInfoFromScope", "S", "Object", "keys", "length", "assign", "entryContext", "Error", "c", "error", "stack", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport omit from 'lodash.omit';\n\nimport { pick } from '@dxos/util';\n\nexport { omit, pick };\n\nexport * from './config';\nexport * from './context';\nexport * from './log';\nexport { parseFilter } from './options';\nexport * from './processors';\nexport * from './scope';\nexport type * from './meta';\n\nexport { getCurrentOwnershipScope } from './experimental/ownership';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogProcessor } from './context';\n\n/**\n * Standard levels.\n * NOTE: Keep aligned with LogLevel in @dxos/protocols.\n */\n// TODO(burdon): Update numbers?\nexport enum LogLevel {\n TRACE = 5,\n DEBUG = 10,\n VERBOSE = 11,\n INFO = 12,\n WARN = 13,\n ERROR = 14,\n}\n\nexport const levels: Record<string, LogLevel> = {\n trace: LogLevel.TRACE,\n debug: LogLevel.DEBUG,\n verbose: LogLevel.VERBOSE,\n info: LogLevel.INFO,\n warn: LogLevel.WARN,\n error: LogLevel.ERROR,\n};\n\nexport const shortLevelName = {\n [LogLevel.TRACE]: 'T',\n [LogLevel.DEBUG]: 'D',\n [LogLevel.VERBOSE]: 'V',\n [LogLevel.INFO]: 'I',\n [LogLevel.WARN]: 'W',\n [LogLevel.ERROR]: 'E',\n};\n\nexport enum LogProcessorType {\n CONSOLE = 'console',\n BROWSER = 'browser',\n DEBUG = 'debug',\n}\n\n/**\n * Individual filter condition.\n */\nexport type LogFilter = {\n level: LogLevel;\n pattern?: string;\n};\n\n/**\n * Options to set inline or load from the YML file.\n */\nexport type LogOptions = {\n file?: string;\n filter?: string | string[] | LogLevel;\n captureFilter?: string | string[] | LogLevel;\n depth?: number; // Context object depth.\n processor?: string | LogProcessorType;\n formatter?: {\n column: number;\n timestamp: boolean;\n timestampFirst: boolean;\n };\n prefix?: string;\n};\n\n/**\n * Runtime config.\n */\nexport interface LogConfig {\n options: LogOptions;\n filters?: LogFilter[];\n captureFilters?: LogFilter[];\n processors: LogProcessor[];\n prefix?: string;\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nconst logInfoProperties = Symbol('logInfoProperties');\n\n/**\n * Decorate fields, properties, or methods to automatically include their values in log messages.\n *\n * Example:\n *\n * ```typescript\n * class Example {\n * @logInfo\n * peerId: PublicKey;\n * }\n * ```\n */\nexport const logInfo = (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {\n // console.log(target, propertyKey, descriptor);\n (target[logInfoProperties] ??= []).push(propertyKey);\n};\n\n/**\n * Introspects class instance to find decorated metadata.\n * @param scope Class instance.\n */\nexport const gatherLogInfoFromScope = (scope: any): Record<string, any> => {\n if (!scope) {\n return {};\n }\n\n const res: Record<string, any> = {};\n\n const prototype = Object.getPrototypeOf(scope);\n const infoProps = (typeof prototype === 'object' && prototype !== null ? prototype[logInfoProperties] : []) ?? [];\n for (const prop of infoProps) {\n try {\n res[prop] = typeof scope[prop] === 'function' ? scope[prop]() : scope[prop];\n } catch (err: any) {\n res[prop] = err.message;\n }\n }\n\n return res;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogConfig, type LogFilter, type LogLevel } from './config';\nimport { type CallMetadata } from './meta';\nimport { gatherLogInfoFromScope } from './scope';\n\n/**\n * Optional object passed to the logging API.\n */\nexport type LogContext = Record<string, any> | Error | any;\n\n/**\n * Record for current log line.\n */\nexport interface LogEntry {\n level: LogLevel;\n message?: string;\n context?: LogContext;\n meta?: CallMetadata;\n error?: Error;\n}\n\n/**\n * Processes (e.g., prints, forwards) log entries.\n */\nexport type LogProcessor = (config: LogConfig, entry: LogEntry) => void;\n\nconst matchFilter = (filter: LogFilter, level: LogLevel, path: string) => {\n return level >= filter.level && (!filter.pattern || path.includes(filter.pattern));\n};\n\n/**\n * Determines if the current line should be logged (called by the processor).\n */\nexport const shouldLog = (entry: LogEntry, filters?: LogFilter[]): boolean => {\n if (filters === undefined) {\n return true;\n } else {\n return filters.some((filter) => matchFilter(filter, entry.level, entry.meta?.F ?? ''));\n }\n};\n\nexport const getContextFromEntry = (entry: LogEntry): Record<string, any> | undefined => {\n let context;\n if (entry.meta) {\n const scopeInfo = gatherLogInfoFromScope(entry.meta.S);\n if (Object.keys(scopeInfo).length > 0) {\n context = Object.assign(context ?? {}, scopeInfo);\n }\n }\n\n const entryContext = typeof entry.context === 'function' ? entry.context() : entry.context;\n if (entryContext) {\n if (entryContext instanceof Error) {\n // Additional context from Error.\n const c = (entryContext as any).context;\n // If ERROR then show stacktrace.\n context = Object.assign(context ?? {}, { error: entryContext.stack, ...c });\n } else if (typeof entryContext === 'object') {\n context = Object.assign(context ?? {}, entryContext);\n }\n }\n\n if (entry.error) {\n context = Object.assign(context ?? {}, { error: entry.error });\n }\n\n return context && Object.keys(context).length > 0 ? context : undefined;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nimport chalk from 'chalk';\n\nimport type { LogMethods } from './log';\nimport { type CallMetadata } from './meta';\n\nlet nextPromiseId = 0;\n\nexport const createMethodLogDecorator =\n (log: LogMethods) =>\n (arg0?: never, arg1?: never, meta?: CallMetadata): MethodDecorator =>\n (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const method = descriptor.value!;\n const methodName = propertyKey as string;\n descriptor.value = function (this: any, ...args: any) {\n const combinedMeta = {\n F: '',\n L: 0,\n ...(meta ?? {}),\n S: this as any,\n } as CallMetadata;\n\n const formattedArgs = args.map((arg: any) => inspect(arg, false, 1, true)).join(', ');\n\n try {\n const startTime = performance.now();\n const result = method.apply(this, args);\n\n if (isThenable(result)) {\n const id = nextPromiseId++;\n logAsyncBegin(log, methodName, formattedArgs, id, combinedMeta);\n result.then(\n (resolvedValue) => {\n logAsyncResolved(log, methodName, resolvedValue, id, startTime, combinedMeta);\n },\n (err) => {\n logAsyncRejected(log, methodName, err, id, startTime, combinedMeta);\n },\n );\n } else {\n logSyncCall(log, methodName, formattedArgs, result, combinedMeta);\n }\n\n return result;\n } catch (err: any) {\n logSyncError(log, methodName, formattedArgs, err, combinedMeta);\n throw err;\n }\n };\n Object.defineProperty(descriptor.value, 'name', { value: methodName + '$log' });\n };\n\nexport const createFunctionLogDecorator =\n (log: LogMethods) =>\n <F extends (...args: any[]) => any>(\n name: string,\n fn: F,\n opts: { transformOutput?: (result: ReturnType<F>) => Promise<any> | any } = {},\n ): F => {\n const decoratedFn = function (this: any, ...args: any) {\n const combinedMeta = {\n F: '',\n L: 0,\n } as CallMetadata;\n\n const formattedArgs = args.map((arg: any) => inspect(arg, false, 1, true)).join(', ');\n\n try {\n const startTime = performance.now();\n const result = fn.apply(this, args);\n\n let transformedResult = result;\n if (opts.transformOutput) {\n if (isThenable(result)) {\n transformedResult = result.then(opts.transformOutput as any);\n } else {\n transformedResult = opts.transformOutput(result);\n }\n }\n\n if (isThenable(transformedResult)) {\n const id = nextPromiseId++;\n logAsyncBegin(log, name, formattedArgs, id, combinedMeta);\n transformedResult.then(\n (resolvedValue) => {\n logAsyncResolved(log, name, resolvedValue, id, startTime, combinedMeta);\n },\n (err) => {\n logAsyncRejected(log, name, err, id, startTime, combinedMeta);\n },\n );\n } else {\n logSyncCall(log, name, formattedArgs, transformedResult, combinedMeta);\n }\n\n return result;\n } catch (err: any) {\n logSyncError(log, name, formattedArgs, err, combinedMeta);\n throw err;\n }\n };\n Object.defineProperty(decoratedFn, 'name', { value: name + '$log' });\n return decoratedFn as F;\n };\n\nconst isThenable = (obj: any): obj is Promise<unknown> => obj && typeof obj.then === 'function';\n\nconst logSyncCall = (\n log: LogMethods,\n methodName: string,\n formattedArgs: string,\n result: unknown,\n combinedMeta: CallMetadata,\n) => {\n log.info(\n `.${formatFunction(methodName)} (${formattedArgs}) ${chalk.gray('=>')} ${inspect(result, false, 1, true)}`,\n {},\n combinedMeta,\n );\n};\n\nconst logSyncError = (\n log: LogMethods,\n methodName: string,\n formattedArgs: string,\n err: Error,\n combinedMeta: CallMetadata,\n) => {\n log.error(`.${formatFunction(methodName)} (${formattedArgs}) 🔥 ${err}`, {}, combinedMeta);\n};\n\nconst logAsyncBegin = (\n log: LogMethods,\n methodName: string,\n formattedArgs: string,\n promiseId: number,\n combinedMeta: CallMetadata,\n) => {\n log.info(\n `.${formatFunction(methodName)} ↴ (${formattedArgs}) ${chalk.gray('=>')} ${formatPromise(promiseId)}`,\n {},\n combinedMeta,\n );\n};\n\nconst logAsyncResolved = (\n log: LogMethods,\n methodName: string,\n resolvedValue: unknown | undefined,\n promiseId: number,\n startTime: number,\n combinedMeta: CallMetadata,\n) => {\n if (resolvedValue !== undefined) {\n log.info(\n `.${formatFunction(methodName)} ↲ ${greenCheck} ${chalk.gray('resolve')} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)} ${chalk.gray('=>')} ${inspect(\n resolvedValue,\n false,\n 1,\n true,\n )}`,\n {},\n combinedMeta,\n );\n } else {\n log.info(\n `.${formatFunction(methodName)} ↲ ${greenCheck} ${chalk.gray('resolve')} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)}`,\n {},\n combinedMeta,\n );\n }\n};\n\nconst logAsyncRejected = (\n log: LogMethods,\n methodName: string,\n err: Error,\n promiseId: number,\n startTime: number,\n combinedMeta: CallMetadata,\n) => {\n log.info(\n `.${formatFunction(methodName)} ↲ 🔥 ${chalk.gray('reject')} ${formatPromise(promiseId)} ${formatTimeElapsed(startTime)} ${chalk.gray('=>')} ${err}`,\n {},\n combinedMeta,\n );\n};\n\n// https://github.com/dxos/dxos/issues/7286\nconst greenCheck = typeof chalk.green === 'function' ? chalk.green('✔') : '✔';\n\nconst formatTimeElapsed = (startTime: number) => chalk.gray(`${(performance.now() - startTime).toFixed(0)}ms`);\n\nconst COLOR_FUNCTION = [220, 220, 170] as const;\n\nconst formatFunction = (name: string) => chalk.bold(chalk.rgb(...COLOR_FUNCTION)(name));\n\nconst formatPromise = (id: number) => chalk.blue(`Promise#${id}`);\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport defaultsDeep from 'lodash.defaultsdeep';\n\nimport { type LogConfig, type LogFilter, LogLevel, type LogOptions, LogProcessorType, levels } from './config';\nimport { type LogProcessor } from './context';\nimport { loadOptions } from './platform';\nimport { BROWSER_PROCESSOR, CONSOLE_PROCESSOR, DEBUG_PROCESSOR } from './processors';\n\n/**\n * Processor variants.\n */\nexport const processors: { [index: string]: LogProcessor } = {\n [LogProcessorType.CONSOLE]: CONSOLE_PROCESSOR,\n [LogProcessorType.BROWSER]: BROWSER_PROCESSOR,\n [LogProcessorType.DEBUG]: DEBUG_PROCESSOR,\n};\n\nconst IS_BROWSER = typeof window !== 'undefined' || typeof navigator !== 'undefined';\n\nexport const DEFAULT_PROCESSORS = [IS_BROWSER ? BROWSER_PROCESSOR : CONSOLE_PROCESSOR];\n\nexport const parseFilter = (filter: string | string[] | LogLevel): LogFilter[] => {\n if (typeof filter === 'number') {\n return [{ level: filter }];\n }\n\n const parseLogLevel = (level: string, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;\n\n const lines = typeof filter === 'string' ? filter.split(/,\\s*/) : filter;\n return lines.map((filter) => {\n const [pattern, level] = filter.split(':');\n return level ? { level: parseLogLevel(level), pattern } : { level: parseLogLevel(pattern) };\n });\n};\n\nexport const getConfig = (options?: LogOptions): LogConfig => {\n const nodeOptions: LogOptions | undefined =\n 'process' in globalThis\n ? {\n file: process!.env.LOG_CONFIG,\n filter: process!.env.LOG_FILTER,\n processor: process!.env.LOG_PROCESSOR,\n }\n : undefined;\n\n const mergedOptions: LogOptions = defaultsDeep({}, loadOptions(nodeOptions?.file), nodeOptions, options);\n return {\n options: mergedOptions,\n filters: parseFilter(mergedOptions.filter ?? LogLevel.INFO),\n captureFilters: parseFilter(mergedOptions.captureFilter ?? LogLevel.WARN),\n processors: mergedOptions.processor ? [processors[mergedOptions.processor]] : DEFAULT_PROCESSORS,\n prefix: mergedOptions.prefix,\n };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogOptions } from '../../config';\n\n// NOTE: Implementation for the browser. See `package.json`.\nexport const loadOptions = (filepath?: string): LogOptions | undefined => {\n try {\n let dxlog: string | undefined;\n // if running in a worker, use the localStorage.dxlog setting forwarded on worker initilization in\n // @dxos/client/src/worker/onconnect.ts\n if (typeof localStorage === 'undefined') {\n if ((globalThis as any).localStorage_dxlog) {\n dxlog = (globalThis as any).localStorage_dxlog;\n }\n } else {\n dxlog = localStorage.getItem('dxlog') ?? undefined;\n }\n if (!dxlog) {\n return undefined;\n }\n return JSON.parse(dxlog);\n } catch (err) {\n console.info(\"can't parse dxlog config\", err);\n return undefined;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// TODO(wittjosiah): Consider mapping console processor directly to browser processor in the browser.\nexport const CONSOLE_PROCESSOR = () => {};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nimport { type LogProcessor } from '../context';\n\nexport const DEBUG_PROCESSOR: LogProcessor = (config, entry) => {\n console.log(inspect(entry, false, null, true));\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { getDebugName, safariCheck } from '@dxos/util';\n\nimport { LogLevel } from '../config';\nimport { type LogProcessor, getContextFromEntry, shouldLog } from '../context';\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n\ntype Config = {\n useTestProcessor: boolean;\n printFileLinks: boolean;\n};\n\nconst CONFIG: Config = {\n useTestProcessor: false,\n printFileLinks: false,\n};\n\n/**\n * For running apps in the browser normally.\n */\nconst APP_BROWSER_PROCESSOR: LogProcessor = (config, entry) => {\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n\n // Example local editor prefix: 'vscode://file/Users/burdon/Code/dxos/dxos/'.\n const LOG_BROWSER_PREFIX = config.prefix ?? 'https://vscode.dev/github.com/dxos/dxos/blob/main/';\n\n // TODO(burdon): CSS breaks formatting (e.g., [Object] rather than expandable property).\n // TODO(burdon): Consider custom formatters.\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n // NOTE: Cannot change color of link (from bright white).\n // const LOG_BROWSER_CSS = ['color:gray; font-size:10px; padding-bottom: 4px', 'color:#B97852; font-size:14px;'];\n const LOG_BROWSER_CSS: string[] = [];\n\n let link = '';\n if (entry.meta) {\n const filename = getRelativeFilename(entry.meta.F);\n const filepath = `${LOG_BROWSER_PREFIX.replace(/\\/$/, '')}/${filename}`;\n // TODO(burdon): Line numbers not working for app link, even with colons.\n // https://stackoverflow.com/a/54459820/2804332\n link = `${filepath}#L${entry.meta.L}`;\n }\n\n let args = [];\n\n if (entry.meta?.S) {\n const scope = entry.meta?.S;\n const scopeName = scope.name || getDebugName(scope);\n const processPrefix = entry.meta.S?.hostSessionId ? '[worker] ' : '';\n // TODO(dmaretskyi): Those can be made clickable with a custom formatter.\n args.push(`%c${processPrefix}${scopeName}`, 'color:#C026D3;font-weight:bold');\n }\n\n if (entry.message) {\n args.push(entry.message);\n }\n\n const context = getContextFromEntry(entry);\n if (context) {\n if (Object.keys(context).length === 1 && 'error' in context) {\n args.push(context.error);\n } else if (Object.keys(context).length === 1 && 'err' in context) {\n args.push(context.err);\n } else {\n args.push(context);\n }\n }\n\n // https://github.com/cloudflare/workers-sdk/issues/5591\n const levels: any = {\n [LogLevel.ERROR]: console.error.bind(console),\n [LogLevel.WARN]: console.warn.bind(console),\n [LogLevel.DEBUG]: console.log.bind(console),\n };\n\n // Safari prints source code location as this file, not the caller.\n if (CONFIG.printFileLinks || safariCheck()) {\n if (LOG_BROWSER_CSS?.length) {\n args = [`%c${link}\\n%c${args.join(' ')}`, ...LOG_BROWSER_CSS];\n } else {\n args = [link + '\\n', ...args];\n }\n }\n\n // https://github.com/cloudflare/workers-sdk/issues/5591\n const level = levels[entry.level] ?? console.log.bind(console);\n if (typeof entry.meta?.C === 'function') {\n entry.meta.C(level, args);\n } else {\n level(...args);\n }\n};\n\n/**\n * For running unit tests in the headless browser.\n */\nconst TEST_BROWSER_PROCESSOR: LogProcessor = (config, entry) => {\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n\n let path = '';\n if (entry.meta) {\n path = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;\n }\n\n let args = [];\n\n const processPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n args.push(`${processPrefix}${entry.message}`);\n\n const context = getContextFromEntry(entry);\n if (context) {\n args.push(context);\n }\n\n const levels: any = {\n [LogLevel.ERROR]: console.error,\n [LogLevel.WARN]: console.warn,\n [LogLevel.DEBUG]: console.log,\n };\n\n if (CONFIG.printFileLinks) {\n args = [path, ...args];\n }\n\n const level = levels[entry.level] ?? console.log;\n if (typeof entry.meta?.C === 'function') {\n entry.meta.C(level, args);\n } else {\n level(...args);\n }\n};\n\nexport const BROWSER_PROCESSOR: LogProcessor = CONFIG.useTestProcessor ? TEST_BROWSER_PROCESSOR : APP_BROWSER_PROCESSOR;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { appendFileSync, mkdirSync, openSync } from 'node:fs';\nimport { dirname } from 'node:path';\n\nimport { jsonlogify } from '@dxos/util';\n\nimport { type LogFilter, LogLevel } from '../config';\nimport { type LogProcessor, getContextFromEntry, shouldLog } from '../context';\n\nimport { getRelativeFilename } from './common';\n\n// Amount of time to retry writing after encountering EAGAIN before giving up.\nconst EAGAIN_MAX_DURATION = 1000;\n/**\n * Create a file processor.\n * @param path - Path to log file to create or append to, or existing open file descriptor e.g. stdout.\n * @param levels - Log levels to process. Takes preference over Filters.\n * @param filters - Filters to apply.\n */\nexport const createFileProcessor = ({\n pathOrFd,\n levels,\n filters,\n}: {\n pathOrFd: string | number;\n levels: LogLevel[];\n filters?: LogFilter[];\n}): LogProcessor => {\n let fd: number | undefined;\n\n return (config, entry) => {\n if (levels.length > 0 && !levels.includes(entry.level)) {\n return;\n }\n if (!shouldLog(entry, filters)) {\n return;\n }\n if (typeof pathOrFd === 'number') {\n fd = pathOrFd;\n } else {\n try {\n mkdirSync(dirname(pathOrFd));\n } catch {}\n fd = openSync(pathOrFd, 'a');\n }\n\n const record = {\n ...entry,\n timestamp: Date.now(),\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n context: jsonlogify(getContextFromEntry(entry)),\n };\n let retryTS: number = 0;\n\n // Retry writing if EAGAIN is encountered.\n //\n // Node may set stdout and stderr to non-blocking. https://github.com/nodejs/node/issues/42826\n // This can cause EAGAIN errors when writing to them.\n // In order to not drop logs, make log methods asynchronous, or deal with buffering/delayed writes, spin until write succeeds.\n\n while (true) {\n try {\n return appendFileSync(fd, JSON.stringify(record) + '\\n');\n } catch (err: any) {\n if (err.code !== 'EAGAIN') {\n throw err;\n }\n if (retryTS === 0) {\n retryTS = performance.now();\n } else {\n if (performance.now() - retryTS > EAGAIN_MAX_DURATION) {\n console.log(`could not write after ${EAGAIN_MAX_DURATION}ms of EAGAIN failures, giving up`);\n throw err;\n }\n }\n }\n }\n };\n};\n\nlet logFilePath: string | undefined;\nconst getLogFilePath = () => {\n logFilePath ??=\n process.env.LOG_FILE ??\n (process.env.HOME ? `${process.env.HOME}/.dxlog/${new Date().toISOString()}.log` : undefined);\n\n return logFilePath!;\n};\n\nexport const FILE_PROCESSOR: LogProcessor = createFileProcessor({\n pathOrFd: getLogFilePath(),\n levels: [LogLevel.ERROR, LogLevel.WARN, LogLevel.INFO, LogLevel.TRACE],\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type LogConfig, LogLevel, type LogOptions } from './config';\nimport { type LogContext, type LogProcessor } from './context';\nimport { createFunctionLogDecorator, createMethodLogDecorator } from './decorators';\nimport { type CallMetadata } from './meta';\nimport { DEFAULT_PROCESSORS, getConfig } from './options';\n\n/**\n * Logging function.\n */\ntype LogFunction = (message: string, context?: LogContext, meta?: CallMetadata) => void;\n\n/**\n * Logging methods.\n */\nexport interface LogMethods {\n trace: LogFunction;\n debug: LogFunction;\n verbose: LogFunction;\n info: LogFunction;\n warn: LogFunction;\n error: LogFunction;\n catch: (error: Error | any, context?: LogContext, meta?: CallMetadata) => void;\n break: () => void;\n stack: (message?: string, context?: never, meta?: CallMetadata) => void;\n method: (arg0?: never, arg1?: never, meta?: CallMetadata) => MethodDecorator;\n func: <F extends (...args: any[]) => any>(\n name: string,\n fn: F,\n opts?: { transformOutput?: (result: ReturnType<F>) => Promise<any> | any },\n ) => F;\n}\n\n/**\n * Properties accessible on the logging function.\n */\ninterface Log extends LogMethods, LogFunction {\n config: (options: LogOptions) => void;\n addProcessor: (processor: LogProcessor) => void;\n runtimeConfig: LogConfig;\n}\n\ninterface LogImp extends Log {\n _config: LogConfig;\n}\n\nconst createLog = (): LogImp => {\n const log: LogImp = ((...params) => processLog(LogLevel.DEBUG, ...params)) as LogImp;\n\n log._config = getConfig();\n Object.defineProperty(log, 'runtimeConfig', { get: () => log._config });\n\n log.addProcessor = (processor: LogProcessor) => {\n if (DEFAULT_PROCESSORS.filter((p) => p === processor).length === 0) {\n DEFAULT_PROCESSORS.push(processor);\n }\n if (log._config.processors.filter((p) => p === processor).length === 0) {\n log._config.processors.push(processor);\n }\n };\n\n // Set config.\n log.config = (options: LogOptions) => {\n log._config = getConfig(options);\n };\n\n // TODO(burdon): API to set context and separate error object.\n // E.g., log.warn('failed', { key: 123 }, err);\n\n log.trace = (...params) => processLog(LogLevel.TRACE, ...params);\n log.debug = (...params) => processLog(LogLevel.DEBUG, ...params);\n log.verbose = (...params) => processLog(LogLevel.VERBOSE, ...params);\n log.info = (...params) => processLog(LogLevel.INFO, ...params);\n log.warn = (...params) => processLog(LogLevel.WARN, ...params);\n log.error = (...params) => processLog(LogLevel.ERROR, ...params);\n\n // Catch only shows error message, not stacktrace.\n log.catch = (error: Error | any, context, meta) => processLog(LogLevel.ERROR, undefined, context, meta, error);\n\n // Show break.\n log.break = () => log.info('——————————————————————————————————————————————————');\n\n log.stack = (message, context, meta) =>\n processLog(LogLevel.INFO, `${message ?? 'Stack Dump'}\\n${getFormattedStackTrace()}`, context, meta);\n\n log.method = createMethodLogDecorator(log);\n log.func = createFunctionLogDecorator(log);\n\n /**\n * Process the current log call.\n */\n const processLog = (\n level: LogLevel,\n message: string | undefined,\n context: LogContext = {},\n meta?: CallMetadata,\n error?: Error,\n ) => {\n log._config.processors.forEach((processor) => processor(log._config, { level, message, context, meta, error }));\n };\n\n return log;\n};\n\n/**\n * Global logging function.\n */\nexport const log: Log = ((globalThis as any).dx_log ??= createLog());\n\nconst start = Date.now();\nlet last = start;\n\n/**\n * Log debug stack.\n */\nexport const debug = (label?: any, args?: any) => {\n const now = Date.now();\n const err = new Error();\n console.group(\n `DEBUG[${label}]`,\n JSON.stringify({ t: Number(now - start).toLocaleString(), dt: Number(now - last).toLocaleString(), ...args }),\n );\n console.warn(err.stack);\n console.groupEnd();\n last = Date.now();\n};\n\n/**\n * Accessible from browser console.\n */\ndeclare global {\n // eslint-disable-next-line camelcase\n const dx_log: Log;\n}\n\nconst getFormattedStackTrace = () => new Error().stack!.split('\\n').slice(3).join('\\n');\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nconst kOwnershipScope = Symbol('kOwnershipScope');\nconst kCurrentOwnershipScope = Symbol('kCurrentOwnershipScope');\nconst kDebugInfoProperties = Symbol('kDebugInfoProperties');\n\n/**\n *\n */\n// TODO(burdon): Document.\nexport class OwnershipScope {\n public instance: any;\n\n constructor(\n public constr: any,\n public parent?: OwnershipScope,\n ) {}\n\n getInfo() {\n if (!this.instance) {\n return {};\n }\n const props = this.constr.prototype[kDebugInfoProperties] ?? [];\n const info: any = {};\n for (const prop of props) {\n info[prop] = this.instance[prop];\n }\n return info;\n }\n\n [inspect.custom]() {\n return {\n className: this.constr.name,\n info: this.getInfo(),\n parent: this.parent,\n };\n }\n}\n\nfunction decorateMethodWeakReturnOwnership(prototype: any, key: string) {\n const original = prototype[key];\n prototype[key] = function (...args: any) {\n const res = original.apply(this, ...args);\n\n if (res && typeof res.then === 'function') {\n res.then((value: any) => {\n if (kOwnershipScope in value) {\n value[kOwnershipScope].parent ??= this[kOwnershipScope];\n }\n });\n } else {\n if (res && kOwnershipScope in res) {\n res[kOwnershipScope].parent ??= this[kOwnershipScope];\n }\n }\n\n return res;\n };\n}\n\nexport function ownershipClass<T extends { new (...args: any[]): {} }>(constr: T) {\n for (const key of Object.getOwnPropertyNames(constr.prototype)) {\n if (key !== 'constructor' && typeof constr.prototype[key] === 'function') {\n decorateMethodWeakReturnOwnership(constr.prototype, key);\n }\n }\n\n return class extends constr {\n constructor(...args: any[]) {\n const currentCausality = (globalThis as any)[kCurrentOwnershipScope];\n (globalThis as any)[kCurrentOwnershipScope] = new OwnershipScope(constr, currentCausality);\n super(...args);\n (this as any)[kOwnershipScope] = (globalThis as any)[kCurrentOwnershipScope];\n (this as any)[kOwnershipScope].instance = this;\n (globalThis as any)[kCurrentOwnershipScope] = currentCausality;\n }\n };\n}\n\nexport const debugInfo = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n // console.log(target, propertyKey, descriptor);\n (target[kDebugInfoProperties] ??= []).push(propertyKey);\n};\n\nexport const getCurrentOwnershipScope = (thisRef: any) => thisRef;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["omit", "pick", "LogLevel", "levels", "trace", "debug", "verbose", "info", "warn", "error", "shortLevelName", "LogProcessorType", "logInfoProperties", "Symbol", "logInfo", "target", "propertyKey", "descriptor", "push", "gatherLogInfoFromScope", "scope", "res", "prototype", "Object", "getPrototypeOf", "infoProps", "prop", "err", "message", "matchFilter", "filter", "level", "path", "pattern", "includes", "shouldLog", "entry", "filters", "undefined", "some", "meta", "F", "getContextFromEntry", "context", "scopeInfo", "gatherLogInfoFromScope", "S", "Object", "keys", "length", "assign", "entryContext", "Error", "c", "error", "stack", "inspect", "chalk", "nextPromiseId", "createMethodLogDecorator", "log", "arg0", "arg1", "meta", "target", "propertyKey", "descriptor", "method", "value", "methodName", "args", "combinedMeta", "F", "L", "S", "formattedArgs", "map", "arg", "inspect", "join", "startTime", "performance", "now", "result", "apply", "isThenable", "id", "logAsyncBegin", "then", "resolvedValue", "logAsyncResolved", "err", "logAsyncRejected", "logSyncCall", "logSyncError", "Object", "defineProperty", "createFunctionLogDecorator", "name", "fn", "opts", "decoratedFn", "transformedResult", "transformOutput", "obj", "info", "formatFunction", "chalk", "gray", "error", "promiseId", "formatPromise", "undefined", "greenCheck", "formatTimeElapsed", "green", "toFixed", "COLOR_FUNCTION", "bold", "rgb", "blue", "defaultsDeep", "loadOptions", "filepath", "dxlog", "localStorage", "globalThis", "localStorage_dxlog", "getItem", "undefined", "JSON", "parse", "err", "console", "info", "CONSOLE_PROCESSOR", "inspect", "DEBUG_PROCESSOR", "config", "entry", "console", "log", "inspect", "getDebugName", "safariCheck", "getRelativeFilename", "filename", "match", "filePath", "CONFIG", "useTestProcessor", "printFileLinks", "APP_BROWSER_PROCESSOR", "config", "entry", "shouldLog", "filters", "LOG_BROWSER_PREFIX", "prefix", "LOG_BROWSER_CSS", "link", "meta", "F", "filepath", "replace", "L", "args", "S", "scope", "scopeName", "name", "getDebugName", "processPrefix", "hostSessionId", "push", "message", "context", "getContextFromEntry", "Object", "keys", "length", "error", "err", "levels", "LogLevel", "ERROR", "console", "bind", "WARN", "warn", "DEBUG", "log", "safariCheck", "join", "level", "C", "TEST_BROWSER_PROCESSOR", "path", "BROWSER_PROCESSOR", "appendFileSync", "mkdirSync", "openSync", "dirname", "jsonlogify", "getRelativeFilename", "filename", "match", "filePath", "EAGAIN_MAX_DURATION", "createFileProcessor", "pathOrFd", "levels", "filters", "fd", "config", "entry", "length", "includes", "level", "shouldLog", "mkdirSync", "dirname", "openSync", "record", "timestamp", "Date", "now", "meta", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "retryTS", "appendFileSync", "JSON", "stringify", "err", "code", "performance", "console", "log", "logFilePath", "getLogFilePath", "process", "env", "LOG_FILE", "HOME", "toISOString", "undefined", "FILE_PROCESSOR", "LogLevel", "ERROR", "WARN", "INFO", "TRACE", "processors", "LogProcessorType", "CONSOLE", "CONSOLE_PROCESSOR", "BROWSER", "BROWSER_PROCESSOR", "DEBUG", "DEBUG_PROCESSOR", "IS_BROWSER", "window", "navigator", "DEFAULT_PROCESSORS", "parseFilter", "filter", "level", "parseLogLevel", "defValue", "LogLevel", "WARN", "levels", "toLowerCase", "lines", "split", "map", "pattern", "getConfig", "options", "nodeOptions", "globalThis", "file", "process", "env", "LOG_CONFIG", "LOG_FILTER", "processor", "LOG_PROCESSOR", "undefined", "mergedOptions", "defaultsDeep", "loadOptions", "filters", "INFO", "captureFilters", "captureFilter", "prefix", "globalThis", "createLog", "log", "params", "processLog", "LogLevel", "DEBUG", "_config", "getConfig", "Object", "defineProperty", "get", "addProcessor", "processor", "DEFAULT_PROCESSORS", "filter", "p", "length", "push", "processors", "config", "options", "trace", "TRACE", "debug", "verbose", "VERBOSE", "info", "INFO", "warn", "WARN", "error", "ERROR", "catch", "context", "meta", "undefined", "break", "stack", "message", "getFormattedStackTrace", "method", "createMethodLogDecorator", "func", "createFunctionLogDecorator", "level", "forEach", "globalThis", "dx_log", "start", "Date", "now", "last", "label", "args", "err", "Error", "console", "group", "JSON", "stringify", "t", "Number", "toLocaleString", "dt", "groupEnd", "split", "slice", "join", "inspect", "kOwnershipScope", "Symbol", "kCurrentOwnershipScope", "kDebugInfoProperties", "inspect", "custom", "OwnershipScope", "getInfo", "instance", "props", "constr", "prototype", "info", "prop", "className", "name", "parent", "getCurrentOwnershipScope", "thisRef"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/config.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/config.ts":{"bytes":3966,"imports":[],"format":"esm"},"src/scope.ts":{"bytes":4229,"imports":[],"format":"esm"},"src/context.ts":{"bytes":6568,"imports":[{"path":"src/scope.ts","kind":"import-statement","original":"./scope"}],"format":"esm"},"src/decorators.ts":{"bytes":19783,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"chalk","kind":"import-statement","external":true}],"format":"esm"},"src/platform/browser/index.ts":{"bytes":2923,"imports":[],"format":"esm"},"src/platform/index.ts":{"bytes":447,"imports":[{"path":"src/platform/browser/index.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"src/processors/console-stub.ts":{"bytes":815,"imports":[],"format":"esm"},"src/processors/debug-processor.ts":{"bytes":1057,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true}],"format":"esm"},"src/processors/browser-processor.ts":{"bytes":15856,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"../config"},{"path":"src/context.ts","kind":"import-statement","original":"../context"}],"format":"esm"},"src/processors/common.ts":{"bytes":1609,"imports":[],"format":"esm"},"src/processors/file-processor.ts":{"bytes":10107,"imports":[{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"../config"},{"path":"src/context.ts","kind":"import-statement","original":"../context"},{"path":"src/processors/common.ts","kind":"import-statement","original":"./common"}],"format":"esm"},"src/processors/index.ts":{"bytes":890,"imports":[{"path":"src/processors/console-stub.ts","kind":"import-statement","original":"./console-processor"},{"path":"src/processors/debug-processor.ts","kind":"import-statement","original":"./debug-processor"},{"path":"src/processors/browser-processor.ts","kind":"import-statement","original":"./browser-processor"},{"path":"src/processors/file-processor.ts","kind":"import-statement","original":"./file-processor"},{"path":"src/processors/common.ts","kind":"import-statement","original":"./common"}],"format":"esm"},"src/options.ts":{"bytes":7545,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"},{"path":"src/platform/index.ts","kind":"import-statement","original":"./platform"},{"path":"src/processors/index.ts","kind":"import-statement","original":"./processors"}],"format":"esm"},"src/log.ts":{"bytes":12930,"imports":[{"path":"src/config.ts","kind":"import-statement","original":"./config"},{"path":"src/decorators.ts","kind":"import-statement","original":"./decorators"},{"path":"src/options.ts","kind":"import-statement","original":"./options"}],"format":"esm"},"src/experimental/ownership.ts":{"bytes":10233,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":1561,"imports":[{"path":"lodash.omit","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"src/log.ts","kind":"import-statement","original":"./log"},{"path":"src/options.ts","kind":"import-statement","original":"./options"},{"path":"src/processors/index.ts","kind":"import-statement","original":"./processors"},{"path":"src/scope.ts","kind":"import-statement","original":"./scope"},{"path":"src/experimental/ownership.ts","kind":"import-statement","original":"./experimental/ownership"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":48753},"dist/lib/browser/index.mjs":{"imports":[{"path":"lodash.omit","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"chalk","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true}],"exports":["BROWSER_PROCESSOR","CONSOLE_PROCESSOR","DEBUG_PROCESSOR","FILE_PROCESSOR","LogLevel","LogProcessorType","createFileProcessor","debug","gatherLogInfoFromScope","getContextFromEntry","getCurrentOwnershipScope","getRelativeFilename","levels","log","logInfo","omit","parseFilter","pick","shortLevelName","shouldLog"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":67},"src/config.ts":{"bytesInOutput":799},"src/scope.ts":{"bytesInOutput":731},"src/context.ts":{"bytesInOutput":1172},"src/decorators.ts":{"bytesInOutput":4566},"src/options.ts":{"bytesInOutput":1542},"src/platform/browser/index.ts":{"bytesInOutput":446},"src/platform/index.ts":{"bytesInOutput":0},"src/processors/console-stub.ts":{"bytesInOutput":35},"src/processors/index.ts":{"bytesInOutput":0},"src/processors/debug-processor.ts":{"bytesInOutput":156},"src/processors/browser-processor.ts":{"bytesInOutput":2972},"src/processors/file-processor.ts":{"bytesInOutput":1848},"src/processors/common.ts":{"bytesInOutput":195},"src/log.ts":{"bytesInOutput":2459},"src/experimental/ownership.ts":{"bytesInOutput":1219}},"bytes":19039}}}
|
|
@@ -5,7 +5,7 @@ import omit from "lodash.omit";
|
|
|
5
5
|
import { pick } from "@dxos/util";
|
|
6
6
|
|
|
7
7
|
// src/config.ts
|
|
8
|
-
var LogLevel = /* @__PURE__ */ function(LogLevel2) {
|
|
8
|
+
var LogLevel = /* @__PURE__ */ (function(LogLevel2) {
|
|
9
9
|
LogLevel2[LogLevel2["TRACE"] = 5] = "TRACE";
|
|
10
10
|
LogLevel2[LogLevel2["DEBUG"] = 10] = "DEBUG";
|
|
11
11
|
LogLevel2[LogLevel2["VERBOSE"] = 11] = "VERBOSE";
|
|
@@ -13,7 +13,7 @@ var LogLevel = /* @__PURE__ */ function(LogLevel2) {
|
|
|
13
13
|
LogLevel2[LogLevel2["WARN"] = 13] = "WARN";
|
|
14
14
|
LogLevel2[LogLevel2["ERROR"] = 14] = "ERROR";
|
|
15
15
|
return LogLevel2;
|
|
16
|
-
}({});
|
|
16
|
+
})({});
|
|
17
17
|
var levels = {
|
|
18
18
|
trace: 5,
|
|
19
19
|
debug: 10,
|
|
@@ -30,17 +30,18 @@ var shortLevelName = {
|
|
|
30
30
|
[13]: "W",
|
|
31
31
|
[14]: "E"
|
|
32
32
|
};
|
|
33
|
-
var LogProcessorType = /* @__PURE__ */ function(LogProcessorType2) {
|
|
33
|
+
var LogProcessorType = /* @__PURE__ */ (function(LogProcessorType2) {
|
|
34
34
|
LogProcessorType2["CONSOLE"] = "console";
|
|
35
35
|
LogProcessorType2["BROWSER"] = "browser";
|
|
36
36
|
LogProcessorType2["DEBUG"] = "debug";
|
|
37
37
|
return LogProcessorType2;
|
|
38
|
-
}({});
|
|
38
|
+
})({});
|
|
39
39
|
|
|
40
40
|
// src/scope.ts
|
|
41
41
|
var logInfoProperties = Symbol("logInfoProperties");
|
|
42
42
|
var logInfo = (target, propertyKey, descriptor) => {
|
|
43
|
-
|
|
43
|
+
var _target, _logInfoProperties;
|
|
44
|
+
((_target = target)[_logInfoProperties = logInfoProperties] ?? (_target[_logInfoProperties] = [])).push(propertyKey);
|
|
44
45
|
};
|
|
45
46
|
var gatherLogInfoFromScope = (scope) => {
|
|
46
47
|
if (!scope) {
|
|
@@ -48,7 +49,7 @@ var gatherLogInfoFromScope = (scope) => {
|
|
|
48
49
|
}
|
|
49
50
|
const res = {};
|
|
50
51
|
const prototype = Object.getPrototypeOf(scope);
|
|
51
|
-
const infoProps = prototype[logInfoProperties] ?? [];
|
|
52
|
+
const infoProps = (typeof prototype === "object" && prototype !== null ? prototype[logInfoProperties] : []) ?? [];
|
|
52
53
|
for (const prop of infoProps) {
|
|
53
54
|
try {
|
|
54
55
|
res[prop] = typeof scope[prop] === "function" ? scope[prop]() : scope[prop];
|
|
@@ -99,8 +100,8 @@ var getContextFromEntry = (entry) => {
|
|
|
99
100
|
};
|
|
100
101
|
|
|
101
102
|
// src/decorators.ts
|
|
102
|
-
import chalk from "chalk";
|
|
103
103
|
import { inspect } from "node:util";
|
|
104
|
+
import chalk from "chalk";
|
|
104
105
|
var nextPromiseId = 0;
|
|
105
106
|
var createMethodLogDecorator = (log2) => (arg0, arg1, meta) => (target, propertyKey, descriptor) => {
|
|
106
107
|
const method = descriptor.value;
|
|
@@ -211,8 +212,8 @@ var formatPromise = (id) => chalk.blue(`Promise#${id}`);
|
|
|
211
212
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
212
213
|
|
|
213
214
|
// src/platform/node/index.ts
|
|
214
|
-
import yaml from "js-yaml";
|
|
215
215
|
import fs from "node:fs";
|
|
216
|
+
import yaml from "js-yaml";
|
|
216
217
|
var loadOptions = (filepath) => {
|
|
217
218
|
if (filepath) {
|
|
218
219
|
try {
|
|
@@ -227,8 +228,8 @@ var loadOptions = (filepath) => {
|
|
|
227
228
|
};
|
|
228
229
|
|
|
229
230
|
// src/processors/console-processor.ts
|
|
230
|
-
import chalk2 from "chalk";
|
|
231
231
|
import { inspect as inspect2 } from "node:util";
|
|
232
|
+
import chalk2 from "chalk";
|
|
232
233
|
import { getPrototypeSpecificInstanceId, pickBy } from "@dxos/util";
|
|
233
234
|
|
|
234
235
|
// src/processors/common.ts
|
|
@@ -260,8 +261,10 @@ var DEFAULT_FORMATTER = (config, { path, line, level, message, context, error, s
|
|
|
260
261
|
let instance;
|
|
261
262
|
if (scope) {
|
|
262
263
|
const prototype = Object.getPrototypeOf(scope);
|
|
263
|
-
|
|
264
|
-
|
|
264
|
+
if (prototype !== null) {
|
|
265
|
+
const id = getPrototypeSpecificInstanceId(scope);
|
|
266
|
+
instance = chalk2.magentaBright(`${prototype.constructor.name}#${id}`);
|
|
267
|
+
}
|
|
265
268
|
}
|
|
266
269
|
const formattedTimestamp = config.options?.formatter?.timestamp ? (/* @__PURE__ */ new Date()).toISOString() : void 0;
|
|
267
270
|
const formattedLevel = chalk2[LEVEL_COLORS[level]](column ? shortLevelName[level] : LogLevel[level]);
|
|
@@ -374,6 +377,8 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
374
377
|
if (context) {
|
|
375
378
|
if (Object.keys(context).length === 1 && "error" in context) {
|
|
376
379
|
args.push(context.error);
|
|
380
|
+
} else if (Object.keys(context).length === 1 && "err" in context) {
|
|
381
|
+
args.push(context.err);
|
|
377
382
|
} else {
|
|
378
383
|
args.push(context);
|
|
379
384
|
}
|
|
@@ -495,7 +500,7 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
|
495
500
|
};
|
|
496
501
|
var logFilePath;
|
|
497
502
|
var getLogFilePath = () => {
|
|
498
|
-
logFilePath
|
|
503
|
+
logFilePath ?? (logFilePath = process.env.LOG_FILE ?? (process.env.HOME ? `${process.env.HOME}/.dxlog/${(/* @__PURE__ */ new Date()).toISOString()}.log` : void 0));
|
|
499
504
|
return logFilePath;
|
|
500
505
|
};
|
|
501
506
|
var FILE_PROCESSOR = createFileProcessor({
|
|
@@ -557,6 +562,7 @@ var getConfig = (options) => {
|
|
|
557
562
|
};
|
|
558
563
|
|
|
559
564
|
// src/log.ts
|
|
565
|
+
var _globalThis;
|
|
560
566
|
var createLog = () => {
|
|
561
567
|
const log2 = (...params) => processLog(LogLevel.DEBUG, ...params);
|
|
562
568
|
log2._config = getConfig();
|
|
@@ -597,7 +603,7 @@ ${getFormattedStackTrace()}`, context, meta);
|
|
|
597
603
|
};
|
|
598
604
|
return log2;
|
|
599
605
|
};
|
|
600
|
-
var log = globalThis.dx_log
|
|
606
|
+
var log = (_globalThis = globalThis).dx_log ?? (_globalThis.dx_log = createLog());
|
|
601
607
|
var start = Date.now();
|
|
602
608
|
var last = start;
|
|
603
609
|
var debug = (label, args) => {
|
|
@@ -616,14 +622,24 @@ var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("
|
|
|
616
622
|
|
|
617
623
|
// src/experimental/ownership.ts
|
|
618
624
|
import { inspect as inspect4 } from "node:util";
|
|
625
|
+
function _define_property(obj, key, value) {
|
|
626
|
+
if (key in obj) {
|
|
627
|
+
Object.defineProperty(obj, key, {
|
|
628
|
+
value,
|
|
629
|
+
enumerable: true,
|
|
630
|
+
configurable: true,
|
|
631
|
+
writable: true
|
|
632
|
+
});
|
|
633
|
+
} else {
|
|
634
|
+
obj[key] = value;
|
|
635
|
+
}
|
|
636
|
+
return obj;
|
|
637
|
+
}
|
|
619
638
|
var kOwnershipScope = Symbol("kOwnershipScope");
|
|
620
639
|
var kCurrentOwnershipScope = Symbol("kCurrentOwnershipScope");
|
|
621
640
|
var kDebugInfoProperties = Symbol("kDebugInfoProperties");
|
|
641
|
+
var _inspect_custom = inspect4.custom;
|
|
622
642
|
var OwnershipScope = class {
|
|
623
|
-
constructor(constr, parent) {
|
|
624
|
-
this.constr = constr;
|
|
625
|
-
this.parent = parent;
|
|
626
|
-
}
|
|
627
643
|
getInfo() {
|
|
628
644
|
if (!this.instance) {
|
|
629
645
|
return {};
|
|
@@ -635,13 +651,20 @@ var OwnershipScope = class {
|
|
|
635
651
|
}
|
|
636
652
|
return info;
|
|
637
653
|
}
|
|
638
|
-
[
|
|
654
|
+
[_inspect_custom]() {
|
|
639
655
|
return {
|
|
640
656
|
className: this.constr.name,
|
|
641
657
|
info: this.getInfo(),
|
|
642
658
|
parent: this.parent
|
|
643
659
|
};
|
|
644
660
|
}
|
|
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
|
+
}
|
|
645
668
|
};
|
|
646
669
|
var getCurrentOwnershipScope = (thisRef) => thisRef;
|
|
647
670
|
export {
|