@dxos/log 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +102 -5
- package/dist/lib/browser/chunk-IEP6GGEX.mjs +23 -0
- package/dist/lib/browser/chunk-IEP6GGEX.mjs.map +7 -0
- package/dist/lib/browser/chunk-V7FYKT4H.mjs +311 -0
- package/dist/lib/browser/chunk-V7FYKT4H.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +290 -185
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/platform/browser/index.mjs +26 -0
- package/dist/lib/browser/platform/browser/index.mjs.map +7 -0
- package/dist/lib/browser/platform/node/index.mjs +21 -0
- package/dist/lib/browser/platform/node/index.mjs.map +7 -0
- package/dist/lib/browser/processors/console-processor.mjs +102 -0
- package/dist/lib/browser/processors/console-processor.mjs.map +7 -0
- package/dist/lib/browser/processors/console-stub.mjs +9 -0
- package/dist/lib/browser/processors/console-stub.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-5TBDXMQF.mjs +313 -0
- package/dist/lib/node-esm/chunk-5TBDXMQF.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +292 -274
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/platform/browser/index.mjs +27 -0
- package/dist/lib/node-esm/platform/browser/index.mjs.map +7 -0
- package/dist/lib/node-esm/platform/node/index.mjs +22 -0
- package/dist/lib/node-esm/platform/node/index.mjs.map +7 -0
- package/dist/lib/node-esm/processors/console-processor.mjs +103 -0
- package/dist/lib/node-esm/processors/console-processor.mjs.map +7 -0
- package/dist/lib/node-esm/processors/console-stub.mjs +10 -0
- package/dist/lib/node-esm/processors/console-stub.mjs.map +7 -0
- package/dist/types/src/context.d.ts +78 -2
- package/dist/types/src/context.d.ts.map +1 -1
- package/dist/types/src/dbg.d.ts +23 -0
- package/dist/types/src/dbg.d.ts.map +1 -0
- package/dist/types/src/decorators.d.ts.map +1 -1
- package/dist/types/src/environment.d.ts +24 -0
- package/dist/types/src/environment.d.ts.map +1 -0
- package/dist/types/src/environment.test.d.ts +2 -0
- package/dist/types/src/environment.test.d.ts.map +1 -0
- package/dist/types/src/experimental/ownership.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +7 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/jsonl.d.ts +53 -0
- package/dist/types/src/jsonl.d.ts.map +1 -0
- package/dist/types/src/jsonl.test.d.ts +2 -0
- package/dist/types/src/jsonl.test.d.ts.map +1 -0
- package/dist/types/src/log-buffer.d.ts +20 -0
- package/dist/types/src/log-buffer.d.ts.map +1 -0
- package/dist/types/src/log-buffer.test.d.ts +2 -0
- package/dist/types/src/log-buffer.test.d.ts.map +1 -0
- package/dist/types/src/log.d.ts +44 -1
- package/dist/types/src/log.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +20 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/options.d.ts.map +1 -1
- package/dist/types/src/platform/browser/index.d.ts.map +1 -1
- package/dist/types/src/platform/index.d.ts +1 -1
- package/dist/types/src/platform/index.d.ts.map +1 -1
- package/dist/types/src/platform/node/index.d.ts.map +1 -1
- package/dist/types/src/processors/browser-processor.d.ts.map +1 -1
- package/dist/types/src/processors/common.d.ts.map +1 -1
- package/dist/types/src/processors/console-processor.d.ts.map +1 -1
- package/dist/types/src/processors/file-processor.d.ts.map +1 -1
- package/dist/types/src/processors/index.d.ts +3 -3
- package/dist/types/src/processors/index.d.ts.map +1 -1
- package/dist/types/src/scope.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -16
- package/src/context.ts +242 -2
- package/src/dbg.ts +34 -0
- package/src/decorators.ts +1 -2
- package/src/environment.test.ts +222 -0
- package/src/environment.ts +129 -0
- package/src/experimental/classes.test.ts +0 -1
- package/src/index.ts +7 -4
- package/src/jsonl.test.ts +121 -0
- package/src/jsonl.ts +104 -0
- package/src/log-buffer.test.ts +158 -0
- package/src/log-buffer.ts +89 -0
- package/src/log.test.ts +0 -1
- package/src/log.ts +56 -12
- package/src/meta.ts +29 -1
- package/src/options.ts +3 -1
- package/src/platform/index.ts +1 -1
- package/src/platform/node/index.ts +1 -2
- package/src/processors/browser-processor.ts +27 -28
- package/src/processors/console-processor.ts +5 -13
- package/src/processors/file-processor.ts +7 -9
- package/src/processors/index.ts +3 -3
|
@@ -1,123 +1,160 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
LogEntry,
|
|
4
|
+
LogLevel,
|
|
5
|
+
LogProcessorType,
|
|
6
|
+
gatherLogInfoFromScope,
|
|
7
|
+
getContextFromEntry,
|
|
8
|
+
getRelativeFilename,
|
|
9
|
+
levels,
|
|
10
|
+
logInfo,
|
|
11
|
+
shortLevelName,
|
|
12
|
+
shouldLog
|
|
13
|
+
} from "./chunk-5TBDXMQF.mjs";
|
|
14
|
+
import {
|
|
15
|
+
__export,
|
|
16
|
+
__reExport
|
|
17
|
+
} from "./chunk-2SZHAWBN.mjs";
|
|
2
18
|
|
|
3
19
|
// src/index.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
LogProcessorType2["CONSOLE"] = "console";
|
|
36
|
-
LogProcessorType2["BROWSER"] = "browser";
|
|
37
|
-
LogProcessorType2["DEBUG"] = "debug";
|
|
38
|
-
return LogProcessorType2;
|
|
39
|
-
})({});
|
|
20
|
+
var index_exports = {};
|
|
21
|
+
__export(index_exports, {
|
|
22
|
+
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
23
|
+
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
24
|
+
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
25
|
+
LOG_META_MARKER: () => LOG_META_MARKER,
|
|
26
|
+
LogBuffer: () => LogBuffer,
|
|
27
|
+
LogEntry: () => LogEntry,
|
|
28
|
+
LogLevel: () => LogLevel,
|
|
29
|
+
LogProcessorType: () => LogProcessorType,
|
|
30
|
+
createFileProcessor: () => createFileProcessor,
|
|
31
|
+
createLog: () => createLog,
|
|
32
|
+
dbg: () => dbg,
|
|
33
|
+
debug: () => debug,
|
|
34
|
+
gatherLogInfoFromScope: () => gatherLogInfoFromScope,
|
|
35
|
+
getContextFromEntry: () => getContextFromEntry,
|
|
36
|
+
getCurrentOwnershipScope: () => getCurrentOwnershipScope,
|
|
37
|
+
getRelativeFilename: () => getRelativeFilename,
|
|
38
|
+
inferEnvironmentName: () => inferEnvironmentName,
|
|
39
|
+
isLogMeta: () => isLogMeta,
|
|
40
|
+
levels: () => levels,
|
|
41
|
+
log: () => log,
|
|
42
|
+
logInfo: () => logInfo,
|
|
43
|
+
omit: () => omit,
|
|
44
|
+
parseFilter: () => parseFilter,
|
|
45
|
+
pick: () => pick,
|
|
46
|
+
serializeToJsonl: () => serializeToJsonl,
|
|
47
|
+
shortLevelName: () => shortLevelName,
|
|
48
|
+
shouldLog: () => shouldLog
|
|
49
|
+
});
|
|
50
|
+
import { omit, pick } from "@dxos/util";
|
|
40
51
|
|
|
41
|
-
// src/
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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;
|
|
52
|
+
// src/environment.ts
|
|
53
|
+
var TAB_SUFFIX_STORAGE_KEY = "@dxos/log:env-suffix";
|
|
54
|
+
var SUFFIX_LENGTH = 6;
|
|
55
|
+
var randomSuffix = () => {
|
|
56
|
+
const cryptoRef = globalThis.crypto;
|
|
57
|
+
if (cryptoRef?.getRandomValues) {
|
|
58
|
+
const bytes = new Uint8Array(SUFFIX_LENGTH);
|
|
59
|
+
cryptoRef.getRandomValues(bytes);
|
|
60
|
+
let suffix = "";
|
|
61
|
+
for (const byte of bytes) {
|
|
62
|
+
suffix += (byte % 36).toString(36);
|
|
58
63
|
}
|
|
64
|
+
return suffix;
|
|
59
65
|
}
|
|
60
|
-
return
|
|
66
|
+
return Math.random().toString(36).slice(2, 2 + SUFFIX_LENGTH).padEnd(SUFFIX_LENGTH, "0");
|
|
61
67
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
} else {
|
|
72
|
-
if (filter.pattern?.length) {
|
|
73
|
-
if (path?.includes(filter.pattern)) {
|
|
74
|
-
return level >= filter.level;
|
|
75
|
-
}
|
|
76
|
-
} else {
|
|
77
|
-
if (level >= filter.level) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
68
|
+
var getOrCreateTabSuffix = (session) => {
|
|
69
|
+
if (!session) {
|
|
70
|
+
return randomSuffix();
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const existing = session.getItem(TAB_SUFFIX_STORAGE_KEY);
|
|
74
|
+
if (existing && existing.length > 0) {
|
|
75
|
+
return existing;
|
|
80
76
|
}
|
|
77
|
+
const suffix = randomSuffix();
|
|
78
|
+
session.setItem(TAB_SUFFIX_STORAGE_KEY, suffix);
|
|
79
|
+
return suffix;
|
|
80
|
+
} catch {
|
|
81
|
+
return randomSuffix();
|
|
81
82
|
}
|
|
82
83
|
};
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
var isInstanceOf = (scope, ctorName) => {
|
|
85
|
+
const ctor = scope?.[ctorName];
|
|
86
|
+
return typeof ctor === "function" && scope instanceof ctor;
|
|
87
|
+
};
|
|
88
|
+
var CF_WORKER_USER_AGENT = "Cloudflare-Workers";
|
|
89
|
+
var inferEnvironmentName = (options = {}) => {
|
|
90
|
+
const scope = options.scope ?? globalThis;
|
|
91
|
+
if (scope.navigator?.userAgent === CF_WORKER_USER_AGENT) {
|
|
92
|
+
return `cf-worker::${randomSuffix()}`;
|
|
93
|
+
}
|
|
94
|
+
if (isInstanceOf(scope, "SharedWorkerGlobalScope")) {
|
|
95
|
+
return `shared-worker:${scope.name ?? ""}:${randomSuffix()}`;
|
|
96
|
+
}
|
|
97
|
+
if (isInstanceOf(scope, "ServiceWorkerGlobalScope")) {
|
|
98
|
+
return `service-worker::${randomSuffix()}`;
|
|
99
|
+
}
|
|
100
|
+
if (isInstanceOf(scope, "DedicatedWorkerGlobalScope")) {
|
|
101
|
+
return `dedicated-worker:${scope.name ?? ""}:${randomSuffix()}`;
|
|
86
102
|
}
|
|
87
|
-
|
|
88
|
-
|
|
103
|
+
if (scope.window !== void 0 && scope.window === scope) {
|
|
104
|
+
const origin = scope.location?.origin ?? "";
|
|
105
|
+
return `tab:${origin}:${getOrCreateTabSuffix(scope.sessionStorage)}`;
|
|
106
|
+
}
|
|
107
|
+
const proc = scope.process;
|
|
108
|
+
if (proc && typeof proc === "object" && proc.versions?.node) {
|
|
109
|
+
const pid = typeof proc.pid === "number" ? String(proc.pid) : "";
|
|
110
|
+
return `node:${pid}:${randomSuffix()}`;
|
|
111
|
+
}
|
|
112
|
+
return `unknown::${randomSuffix()}`;
|
|
89
113
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
114
|
+
|
|
115
|
+
// src/jsonl.ts
|
|
116
|
+
var serializeToJsonl = (entry, opts = {}) => {
|
|
117
|
+
if (entry.level <= LogLevel.TRACE) {
|
|
118
|
+
return void 0;
|
|
119
|
+
}
|
|
120
|
+
const { filename, line, context: scopeName } = entry.computedMeta;
|
|
121
|
+
const record = {
|
|
122
|
+
t: new Date(entry.timestamp).toISOString(),
|
|
123
|
+
l: shortLevelName[entry.level] ?? "?",
|
|
124
|
+
m: entry.message ?? ""
|
|
125
|
+
};
|
|
126
|
+
if (filename !== void 0) {
|
|
127
|
+
record.f = filename;
|
|
128
|
+
}
|
|
129
|
+
if (line !== void 0) {
|
|
130
|
+
record.n = line;
|
|
97
131
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
132
|
+
if (scopeName !== void 0) {
|
|
133
|
+
record.o = scopeName;
|
|
134
|
+
}
|
|
135
|
+
if (entry.computedError !== void 0) {
|
|
136
|
+
record.e = entry.computedError;
|
|
137
|
+
}
|
|
138
|
+
if (opts.env !== void 0) {
|
|
139
|
+
record.i = opts.env;
|
|
140
|
+
}
|
|
141
|
+
const computedContext = entry.computedContext;
|
|
142
|
+
if (Object.keys(computedContext).length > 0) {
|
|
143
|
+
try {
|
|
144
|
+
record.c = JSON.stringify(computedContext);
|
|
145
|
+
} catch {
|
|
108
146
|
}
|
|
109
147
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
148
|
+
try {
|
|
149
|
+
return JSON.stringify(record);
|
|
150
|
+
} catch {
|
|
151
|
+
return void 0;
|
|
114
152
|
}
|
|
115
|
-
return context && Object.keys(context).length > 0 ? context : void 0;
|
|
116
153
|
};
|
|
117
154
|
|
|
118
155
|
// src/decorators.ts
|
|
119
|
-
import { inspect } from "node:util";
|
|
120
156
|
import chalk from "chalk";
|
|
157
|
+
import { inspect } from "node:util";
|
|
121
158
|
var nextPromiseId = 0;
|
|
122
159
|
var createMethodLogDecorator = (log2) => (arg0, arg1, meta) => (target, propertyKey, descriptor) => {
|
|
123
160
|
const method = descriptor.value;
|
|
@@ -227,142 +264,23 @@ var formatPromise = (id) => chalk.blue(`Promise#${id}`);
|
|
|
227
264
|
// src/options.ts
|
|
228
265
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
229
266
|
|
|
230
|
-
// src/platform/
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
if (filepath) {
|
|
235
|
-
try {
|
|
236
|
-
const text = fs.readFileSync(filepath, "utf-8");
|
|
237
|
-
if (text) {
|
|
238
|
-
return yaml.load(text);
|
|
239
|
-
}
|
|
240
|
-
} catch (err) {
|
|
241
|
-
console.warn(`Invalid log file: ${filepath}`);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
// src/processors/console-processor.ts
|
|
247
|
-
import { inspect as inspect2 } from "node:util";
|
|
248
|
-
import chalk2 from "chalk";
|
|
249
|
-
import { getPrototypeSpecificInstanceId, pickBy } from "@dxos/util";
|
|
250
|
-
|
|
251
|
-
// src/processors/common.ts
|
|
252
|
-
var getRelativeFilename = (filename) => {
|
|
253
|
-
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
254
|
-
if (match) {
|
|
255
|
-
const [, filePath] = match;
|
|
256
|
-
return filePath;
|
|
257
|
-
}
|
|
258
|
-
return filename;
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
// src/processors/console-processor.ts
|
|
262
|
-
var LEVEL_COLORS = {
|
|
263
|
-
[LogLevel.TRACE]: "gray",
|
|
264
|
-
[LogLevel.DEBUG]: "gray",
|
|
265
|
-
[LogLevel.VERBOSE]: "gray",
|
|
266
|
-
[LogLevel.INFO]: "white",
|
|
267
|
-
[LogLevel.WARN]: "yellow",
|
|
268
|
-
[LogLevel.ERROR]: "red"
|
|
269
|
-
};
|
|
270
|
-
var truncate = (text, length = 0, right = false) => {
|
|
271
|
-
const str = text && length ? right ? text.slice(-length) : text.substring(0, length) : text ?? "";
|
|
272
|
-
return right ? str.padStart(length, " ") : str.padEnd(length, " ");
|
|
273
|
-
};
|
|
274
|
-
var DEFAULT_FORMATTER = (config, { path, line, level, message, context, error, scope }) => {
|
|
275
|
-
const column = config.options?.formatter?.column;
|
|
276
|
-
const filepath = path !== void 0 && line !== void 0 ? chalk2.grey(`${path}:${line}`) : void 0;
|
|
277
|
-
let instance;
|
|
278
|
-
if (scope) {
|
|
279
|
-
const prototype = Object.getPrototypeOf(scope);
|
|
280
|
-
if (prototype !== null) {
|
|
281
|
-
const id = getPrototypeSpecificInstanceId(scope);
|
|
282
|
-
instance = chalk2.magentaBright(`${prototype.constructor.name}#${id}`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
const formattedTimestamp = config.options?.formatter?.timestamp ? (/* @__PURE__ */ new Date()).toISOString() : void 0;
|
|
286
|
-
const formattedLevel = chalk2[LEVEL_COLORS[level]](column ? shortLevelName[level] : LogLevel[level]);
|
|
287
|
-
const padding = column && filepath ? "".padStart(column - filepath.length) : void 0;
|
|
288
|
-
return config.options?.formatter?.timestampFirst ? [
|
|
289
|
-
formattedTimestamp,
|
|
290
|
-
filepath,
|
|
291
|
-
padding,
|
|
292
|
-
formattedLevel,
|
|
293
|
-
instance,
|
|
294
|
-
message,
|
|
295
|
-
context,
|
|
296
|
-
error
|
|
297
|
-
] : [
|
|
298
|
-
// NOTE: File path must come fist for console hyperlinks.
|
|
299
|
-
// Must not truncate for terminal output.
|
|
300
|
-
filepath,
|
|
301
|
-
padding,
|
|
302
|
-
formattedTimestamp,
|
|
303
|
-
formattedLevel,
|
|
304
|
-
instance,
|
|
305
|
-
message,
|
|
306
|
-
context,
|
|
307
|
-
error
|
|
308
|
-
];
|
|
309
|
-
};
|
|
310
|
-
var SHORT_FORMATTER = (config, { path, level, message }) => {
|
|
311
|
-
return [
|
|
312
|
-
chalk2.grey(truncate(path, 16, true)),
|
|
313
|
-
chalk2[LEVEL_COLORS[level]](shortLevelName[level]),
|
|
314
|
-
message
|
|
315
|
-
];
|
|
316
|
-
};
|
|
317
|
-
var formatter = DEFAULT_FORMATTER;
|
|
318
|
-
var CONSOLE_PROCESSOR = (config, entry) => {
|
|
319
|
-
const { level, message, meta, error } = entry;
|
|
320
|
-
if (!shouldLog(entry, config.filters)) {
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
const parts = {
|
|
324
|
-
level,
|
|
325
|
-
message,
|
|
326
|
-
error,
|
|
327
|
-
path: void 0,
|
|
328
|
-
line: void 0,
|
|
329
|
-
scope: void 0,
|
|
330
|
-
context: void 0
|
|
331
|
-
};
|
|
332
|
-
if (meta) {
|
|
333
|
-
parts.path = getRelativeFilename(meta.F);
|
|
334
|
-
parts.line = meta.L;
|
|
335
|
-
parts.scope = meta.S;
|
|
336
|
-
}
|
|
337
|
-
const context = getContextFromEntry(entry);
|
|
338
|
-
if (context) {
|
|
339
|
-
parts.context = inspect2(pickBy(context, (value) => value !== void 0), {
|
|
340
|
-
depth: config.options.depth,
|
|
341
|
-
colors: true,
|
|
342
|
-
maxArrayLength: 8,
|
|
343
|
-
sorted: false
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
const line = formatter(config, parts).filter(Boolean).join(" ");
|
|
347
|
-
console.log(line);
|
|
348
|
-
};
|
|
267
|
+
// src/platform/index.ts
|
|
268
|
+
var platform_exports = {};
|
|
269
|
+
__reExport(platform_exports, platform_star);
|
|
270
|
+
import * as platform_star from "#platform";
|
|
349
271
|
|
|
350
|
-
// src/processors/
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
272
|
+
// src/processors/index.ts
|
|
273
|
+
var processors_exports = {};
|
|
274
|
+
__export(processors_exports, {
|
|
275
|
+
BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
|
|
276
|
+
DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
|
|
277
|
+
FILE_PROCESSOR: () => FILE_PROCESSOR,
|
|
278
|
+
createFileProcessor: () => createFileProcessor,
|
|
279
|
+
getRelativeFilename: () => getRelativeFilename
|
|
280
|
+
});
|
|
355
281
|
|
|
356
282
|
// src/processors/browser-processor.ts
|
|
357
|
-
import {
|
|
358
|
-
var getRelativeFilename2 = (filename) => {
|
|
359
|
-
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
360
|
-
if (match) {
|
|
361
|
-
const [, filePath] = match;
|
|
362
|
-
return filePath;
|
|
363
|
-
}
|
|
364
|
-
return filename;
|
|
365
|
-
};
|
|
283
|
+
import { safariCheck } from "@dxos/util";
|
|
366
284
|
var CONFIG = {
|
|
367
285
|
useTestProcessor: false,
|
|
368
286
|
printFileLinks: false
|
|
@@ -373,18 +291,20 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
373
291
|
}
|
|
374
292
|
const LOG_BROWSER_PREFIX = config.prefix ?? "https://vscode.dev/github.com/dxos/dxos/blob/main/";
|
|
375
293
|
const LOG_BROWSER_CSS = [];
|
|
294
|
+
const { filename, line: lineNumber, context: scopeDebugName } = entry.computedMeta;
|
|
376
295
|
let link = "";
|
|
377
|
-
if (
|
|
378
|
-
const filename = getRelativeFilename2(entry.meta.F);
|
|
296
|
+
if (filename !== void 0 && lineNumber !== void 0) {
|
|
379
297
|
const filepath = `${LOG_BROWSER_PREFIX.replace(/\/$/, "")}/${filename}`;
|
|
380
|
-
link = `${filepath}#L${
|
|
298
|
+
link = `${filepath}#L${lineNumber}`;
|
|
381
299
|
}
|
|
382
300
|
let args = [];
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
const scopeName = scope.name ||
|
|
386
|
-
|
|
387
|
-
|
|
301
|
+
const scope = entry.meta?.S;
|
|
302
|
+
if (scope) {
|
|
303
|
+
const scopeName = scope.name || scopeDebugName;
|
|
304
|
+
if (scopeName) {
|
|
305
|
+
const processPrefix = scope.hostSessionId ? "[worker] " : "";
|
|
306
|
+
args.push(`%c${processPrefix}${scopeName}`, "color:#C026D3;font-weight:bold");
|
|
307
|
+
}
|
|
388
308
|
}
|
|
389
309
|
if (entry.message) {
|
|
390
310
|
args.push(entry.message);
|
|
@@ -392,9 +312,9 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
392
312
|
const context = getContextFromEntry(entry);
|
|
393
313
|
if (context) {
|
|
394
314
|
if (Object.keys(context).length === 1 && "error" in context) {
|
|
395
|
-
args.push(context.error);
|
|
315
|
+
args.push(unwrapEffectError(context.error));
|
|
396
316
|
} else if (Object.keys(context).length === 1 && "err" in context) {
|
|
397
|
-
args.push(context.err);
|
|
317
|
+
args.push(unwrapEffectError(context.err));
|
|
398
318
|
} else {
|
|
399
319
|
args.push(context);
|
|
400
320
|
}
|
|
@@ -429,10 +349,8 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
429
349
|
if (!shouldLog(entry, config.filters)) {
|
|
430
350
|
return;
|
|
431
351
|
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
path = `${getRelativeFilename2(entry.meta.F)}:${entry.meta.L}`;
|
|
435
|
-
}
|
|
352
|
+
const { filename, line: lineNumber } = entry.computedMeta;
|
|
353
|
+
const path = filename !== void 0 && lineNumber !== void 0 ? `${filename}:${lineNumber}` : "";
|
|
436
354
|
let args = [];
|
|
437
355
|
const processPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
|
|
438
356
|
args.push(`${processPrefix}${entry.message}`);
|
|
@@ -459,11 +377,27 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
|
|
|
459
377
|
}
|
|
460
378
|
};
|
|
461
379
|
var BROWSER_PROCESSOR = CONFIG.useTestProcessor ? TEST_BROWSER_PROCESSOR : APP_BROWSER_PROCESSOR;
|
|
380
|
+
var originalSymbol = /* @__PURE__ */ Symbol.for("effect/OriginalAnnotation");
|
|
381
|
+
var unwrapEffectError = (error) => {
|
|
382
|
+
if (typeof error === "object" && error !== null && originalSymbol in error) {
|
|
383
|
+
return error[originalSymbol];
|
|
384
|
+
}
|
|
385
|
+
return error;
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
// src/processors/index.ts
|
|
389
|
+
__reExport(processors_exports, console_processor_star);
|
|
390
|
+
import * as console_processor_star from "#console-processor";
|
|
391
|
+
|
|
392
|
+
// src/processors/debug-processor.ts
|
|
393
|
+
import { inspect as inspect2 } from "node:util";
|
|
394
|
+
var DEBUG_PROCESSOR = (config, entry) => {
|
|
395
|
+
console.log(inspect2(entry, false, null, true));
|
|
396
|
+
};
|
|
462
397
|
|
|
463
398
|
// src/processors/file-processor.ts
|
|
464
399
|
import { appendFileSync, mkdirSync, openSync } from "node:fs";
|
|
465
400
|
import { dirname } from "node:path";
|
|
466
|
-
import { jsonlogify } from "@dxos/util";
|
|
467
401
|
var EAGAIN_MAX_DURATION = 1e3;
|
|
468
402
|
var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
469
403
|
let fd;
|
|
@@ -484,15 +418,12 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
|
|
|
484
418
|
fd = openSync(pathOrFd, "a");
|
|
485
419
|
}
|
|
486
420
|
const record = {
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
}
|
|
494
|
-
} : {},
|
|
495
|
-
context: jsonlogify(getContextFromEntry(entry))
|
|
421
|
+
level: entry.level,
|
|
422
|
+
message: entry.message,
|
|
423
|
+
timestamp: entry.timestamp,
|
|
424
|
+
meta: entry.computedMeta,
|
|
425
|
+
context: entry.computedContext,
|
|
426
|
+
error: entry.computedError
|
|
496
427
|
};
|
|
497
428
|
let retryTS = 0;
|
|
498
429
|
while (true) {
|
|
@@ -531,13 +462,13 @@ var FILE_PROCESSOR = createFileProcessor({
|
|
|
531
462
|
|
|
532
463
|
// src/options.ts
|
|
533
464
|
var processors = {
|
|
534
|
-
[LogProcessorType.CONSOLE]: CONSOLE_PROCESSOR,
|
|
465
|
+
[LogProcessorType.CONSOLE]: processors_exports.CONSOLE_PROCESSOR,
|
|
535
466
|
[LogProcessorType.BROWSER]: BROWSER_PROCESSOR,
|
|
536
467
|
[LogProcessorType.DEBUG]: DEBUG_PROCESSOR
|
|
537
468
|
};
|
|
538
|
-
var browser = typeof window !== "undefined" || typeof navigator !== "undefined";
|
|
469
|
+
var browser = (typeof window !== "undefined" || typeof navigator !== "undefined") && !(typeof process !== "undefined" && process?.env?.VITEST);
|
|
539
470
|
var DEFAULT_PROCESSORS = [
|
|
540
|
-
browser ? BROWSER_PROCESSOR : CONSOLE_PROCESSOR
|
|
471
|
+
browser ? BROWSER_PROCESSOR : processors_exports.CONSOLE_PROCESSOR
|
|
541
472
|
];
|
|
542
473
|
var parseLogLevel = (level, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;
|
|
543
474
|
var parseFilter = (filter) => {
|
|
@@ -565,7 +496,7 @@ var createConfig = (options) => {
|
|
|
565
496
|
filter: process.env.LOG_FILTER,
|
|
566
497
|
processor: process.env.LOG_PROCESSOR
|
|
567
498
|
} : void 0;
|
|
568
|
-
const mergedOptions = defaultsDeep({}, loadOptions(envOptions?.file), envOptions, options);
|
|
499
|
+
const mergedOptions = defaultsDeep({}, (0, platform_exports.loadOptions)(envOptions?.file), envOptions, options);
|
|
569
500
|
return {
|
|
570
501
|
options: mergedOptions,
|
|
571
502
|
filters: parseFilter(mergedOptions.filter ?? LogLevel.INFO),
|
|
@@ -591,13 +522,14 @@ var createLog = () => {
|
|
|
591
522
|
get: () => log2._config
|
|
592
523
|
});
|
|
593
524
|
const processLog = (level, message, context = {}, meta, error) => {
|
|
594
|
-
|
|
525
|
+
const entry = new LogEntry({
|
|
595
526
|
level,
|
|
596
527
|
message,
|
|
597
528
|
context,
|
|
598
529
|
meta,
|
|
599
530
|
error
|
|
600
|
-
})
|
|
531
|
+
});
|
|
532
|
+
log2._config.processors.forEach((processor) => processor(log2._config, entry));
|
|
601
533
|
};
|
|
602
534
|
Object.assign(log2, {
|
|
603
535
|
/**
|
|
@@ -605,7 +537,7 @@ var createLog = () => {
|
|
|
605
537
|
* NOTE: Preserves any processors that were already added to this logger instance
|
|
606
538
|
* unless an explicit processor option is provided.
|
|
607
539
|
*/
|
|
608
|
-
config: ({ processor, ...options }) => {
|
|
540
|
+
config: ({ processor, ...options } = {}) => {
|
|
609
541
|
const config = createConfig(options);
|
|
610
542
|
const processors2 = processor ? config.processors : log2._config.processors;
|
|
611
543
|
log2._config = {
|
|
@@ -659,11 +591,94 @@ var debug = (label, args) => {
|
|
|
659
591
|
};
|
|
660
592
|
var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("\n");
|
|
661
593
|
|
|
594
|
+
// src/index.ts
|
|
595
|
+
__reExport(index_exports, processors_exports);
|
|
596
|
+
|
|
597
|
+
// src/meta.ts
|
|
598
|
+
var LOG_META_MARKER = "~LogMeta";
|
|
599
|
+
var isLogMeta = (value) => {
|
|
600
|
+
return value != null && typeof value === "object" && value[LOG_META_MARKER] === LOG_META_MARKER;
|
|
601
|
+
};
|
|
602
|
+
|
|
603
|
+
// src/dbg.ts
|
|
604
|
+
var dbg = (arg, meta) => {
|
|
605
|
+
if (meta?.A) {
|
|
606
|
+
console.log(`${meta.A[0]} =`, arg);
|
|
607
|
+
} else {
|
|
608
|
+
console.log(arg);
|
|
609
|
+
}
|
|
610
|
+
return arg;
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
// src/log-buffer.ts
|
|
614
|
+
import { CircularBuffer } from "@dxos/util";
|
|
615
|
+
var DEFAULT_BUFFER_SIZE = 2e3;
|
|
616
|
+
var MAX_CONTEXT_LENGTH = 500;
|
|
617
|
+
var LogBuffer = class {
|
|
618
|
+
_buffer;
|
|
619
|
+
constructor(size = DEFAULT_BUFFER_SIZE) {
|
|
620
|
+
this._buffer = new CircularBuffer(size);
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Log processor that can be registered with `log.runtimeConfig.processors`.
|
|
624
|
+
* Captures every level except TRACE (does not apply `shouldLog` / filter; use for full debug dumps).
|
|
625
|
+
*/
|
|
626
|
+
logProcessor = (_config, entry) => {
|
|
627
|
+
if (entry.level <= LogLevel.TRACE) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
const { filename, line, context: scopeName } = entry.computedMeta;
|
|
631
|
+
const record = {
|
|
632
|
+
t: new Date(entry.timestamp).toISOString(),
|
|
633
|
+
l: shortLevelName[entry.level] ?? "?",
|
|
634
|
+
m: entry.message ?? ""
|
|
635
|
+
};
|
|
636
|
+
if (filename !== void 0) {
|
|
637
|
+
record.f = filename;
|
|
638
|
+
}
|
|
639
|
+
if (line !== void 0) {
|
|
640
|
+
record.n = line;
|
|
641
|
+
}
|
|
642
|
+
if (scopeName !== void 0) {
|
|
643
|
+
record.o = scopeName;
|
|
644
|
+
}
|
|
645
|
+
if (entry.computedError !== void 0) {
|
|
646
|
+
record.e = entry.computedError;
|
|
647
|
+
}
|
|
648
|
+
const computedContext = entry.computedContext;
|
|
649
|
+
if (Object.keys(computedContext).length > 0) {
|
|
650
|
+
try {
|
|
651
|
+
let json = JSON.stringify(computedContext);
|
|
652
|
+
if (json.length > MAX_CONTEXT_LENGTH) {
|
|
653
|
+
json = json.slice(0, MAX_CONTEXT_LENGTH);
|
|
654
|
+
}
|
|
655
|
+
record.c = json;
|
|
656
|
+
} catch {
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
this._buffer.push(record);
|
|
660
|
+
};
|
|
661
|
+
/** Number of entries currently in the buffer. */
|
|
662
|
+
get size() {
|
|
663
|
+
return this._buffer.elementCount;
|
|
664
|
+
}
|
|
665
|
+
/** Discard all buffered entries. */
|
|
666
|
+
clear() {
|
|
667
|
+
this._buffer.clear();
|
|
668
|
+
}
|
|
669
|
+
/** Serialize buffer contents as NDJSON (newline-delimited JSON). */
|
|
670
|
+
serialize() {
|
|
671
|
+
const lines = [];
|
|
672
|
+
for (const record of this._buffer) {
|
|
673
|
+
lines.push(JSON.stringify(record));
|
|
674
|
+
}
|
|
675
|
+
return lines.join("\n");
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
|
|
662
679
|
// src/experimental/ownership.ts
|
|
663
|
-
import { inspect as
|
|
664
|
-
var
|
|
665
|
-
var kCurrentOwnershipScope = Symbol("kCurrentOwnershipScope");
|
|
666
|
-
var kDebugInfoProperties = Symbol("kDebugInfoProperties");
|
|
680
|
+
import { inspect as inspect3 } from "node:util";
|
|
681
|
+
var kDebugInfoProperties = /* @__PURE__ */ Symbol("kDebugInfoProperties");
|
|
667
682
|
var OwnershipScope = class {
|
|
668
683
|
constr;
|
|
669
684
|
parent;
|
|
@@ -683,7 +698,7 @@ var OwnershipScope = class {
|
|
|
683
698
|
}
|
|
684
699
|
return info;
|
|
685
700
|
}
|
|
686
|
-
[
|
|
701
|
+
[inspect3.custom]() {
|
|
687
702
|
return {
|
|
688
703
|
className: this.constr.name,
|
|
689
704
|
info: this.getInfo(),
|
|
@@ -694,28 +709,31 @@ var OwnershipScope = class {
|
|
|
694
709
|
var getCurrentOwnershipScope = (thisRef) => thisRef;
|
|
695
710
|
export {
|
|
696
711
|
BROWSER_PROCESSOR,
|
|
697
|
-
CONSOLE_PROCESSOR,
|
|
698
712
|
DEBUG_PROCESSOR,
|
|
699
|
-
DEFAULT_FORMATTER,
|
|
700
713
|
FILE_PROCESSOR,
|
|
714
|
+
LOG_META_MARKER,
|
|
715
|
+
LogBuffer,
|
|
716
|
+
LogEntry,
|
|
701
717
|
LogLevel,
|
|
702
718
|
LogProcessorType,
|
|
703
|
-
SHORT_FORMATTER,
|
|
704
719
|
createFileProcessor,
|
|
705
720
|
createLog,
|
|
721
|
+
dbg,
|
|
706
722
|
debug,
|
|
707
723
|
gatherLogInfoFromScope,
|
|
708
724
|
getContextFromEntry,
|
|
709
725
|
getCurrentOwnershipScope,
|
|
710
726
|
getRelativeFilename,
|
|
727
|
+
inferEnvironmentName,
|
|
728
|
+
isLogMeta,
|
|
711
729
|
levels,
|
|
712
730
|
log,
|
|
713
731
|
logInfo,
|
|
714
732
|
omit,
|
|
715
733
|
parseFilter,
|
|
716
734
|
pick,
|
|
735
|
+
serializeToJsonl,
|
|
717
736
|
shortLevelName,
|
|
718
|
-
shouldLog
|
|
719
|
-
truncate
|
|
737
|
+
shouldLog
|
|
720
738
|
};
|
|
721
739
|
//# sourceMappingURL=index.mjs.map
|