@dxos/log 0.8.4-main.7ace549 → 0.8.4-main.937b3ca

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.
Files changed (40) hide show
  1. package/dist/lib/browser/chunk-GPOFUMLO.mjs +133 -0
  2. package/dist/lib/browser/chunk-GPOFUMLO.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-IEP6GGEX.mjs +23 -0
  4. package/dist/lib/browser/chunk-IEP6GGEX.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +74 -162
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/platform/browser/index.mjs +26 -0
  9. package/dist/lib/browser/platform/browser/index.mjs.map +7 -0
  10. package/dist/lib/browser/platform/node/index.mjs +21 -0
  11. package/dist/lib/browser/platform/node/index.mjs.map +7 -0
  12. package/dist/lib/browser/processors/console-processor.mjs +107 -0
  13. package/dist/lib/browser/processors/console-processor.mjs.map +7 -0
  14. package/dist/lib/browser/processors/console-stub.mjs +9 -0
  15. package/dist/lib/browser/processors/console-stub.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
  17. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
  18. package/dist/lib/node-esm/chunk-QPYJZ4SO.mjs +135 -0
  19. package/dist/lib/node-esm/chunk-QPYJZ4SO.mjs.map +7 -0
  20. package/dist/lib/node-esm/index.mjs +71 -246
  21. package/dist/lib/node-esm/index.mjs.map +4 -4
  22. package/dist/lib/node-esm/meta.json +1 -1
  23. package/dist/lib/node-esm/platform/browser/index.mjs +27 -0
  24. package/dist/lib/node-esm/platform/browser/index.mjs.map +7 -0
  25. package/dist/lib/node-esm/platform/node/index.mjs +22 -0
  26. package/dist/lib/node-esm/platform/node/index.mjs.map +7 -0
  27. package/dist/lib/node-esm/processors/console-processor.mjs +108 -0
  28. package/dist/lib/node-esm/processors/console-processor.mjs.map +7 -0
  29. package/dist/lib/node-esm/processors/console-stub.mjs +10 -0
  30. package/dist/lib/node-esm/processors/console-stub.mjs.map +7 -0
  31. package/dist/types/src/options.d.ts.map +1 -1
  32. package/dist/types/src/platform/index.d.ts +1 -1
  33. package/dist/types/src/platform/index.d.ts.map +1 -1
  34. package/dist/types/src/processors/index.d.ts +3 -3
  35. package/dist/types/src/processors/index.d.ts.map +1 -1
  36. package/dist/types/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +29 -9
  38. package/src/options.ts +3 -1
  39. package/src/platform/index.ts +1 -1
  40. package/src/processors/index.ts +3 -3
@@ -0,0 +1,133 @@
1
+ // src/config.ts
2
+ var LogLevel = /* @__PURE__ */ (function(LogLevel2) {
3
+ LogLevel2[LogLevel2["TRACE"] = 5] = "TRACE";
4
+ LogLevel2[LogLevel2["DEBUG"] = 10] = "DEBUG";
5
+ LogLevel2[LogLevel2["VERBOSE"] = 11] = "VERBOSE";
6
+ LogLevel2[LogLevel2["INFO"] = 12] = "INFO";
7
+ LogLevel2[LogLevel2["WARN"] = 13] = "WARN";
8
+ LogLevel2[LogLevel2["ERROR"] = 14] = "ERROR";
9
+ return LogLevel2;
10
+ })({});
11
+ var levels = {
12
+ "*": 5,
13
+ trace: 5,
14
+ debug: 10,
15
+ verbose: 11,
16
+ info: 12,
17
+ warn: 13,
18
+ error: 14
19
+ };
20
+ var shortLevelName = {
21
+ [5]: "T",
22
+ [10]: "D",
23
+ [11]: "V",
24
+ [12]: "I",
25
+ [13]: "W",
26
+ [14]: "E"
27
+ };
28
+ var LogProcessorType = /* @__PURE__ */ (function(LogProcessorType2) {
29
+ LogProcessorType2["CONSOLE"] = "console";
30
+ LogProcessorType2["BROWSER"] = "browser";
31
+ LogProcessorType2["DEBUG"] = "debug";
32
+ return LogProcessorType2;
33
+ })({});
34
+
35
+ // src/scope.ts
36
+ var logInfoProperties = Symbol("logInfoProperties");
37
+ var logInfo = (target, propertyKey, descriptor) => {
38
+ (target[logInfoProperties] ??= []).push(propertyKey);
39
+ };
40
+ var gatherLogInfoFromScope = (scope) => {
41
+ if (!scope) {
42
+ return {};
43
+ }
44
+ const res = {};
45
+ const prototype = Object.getPrototypeOf(scope);
46
+ const infoProps = (typeof prototype === "object" && prototype !== null ? prototype[logInfoProperties] : []) ?? [];
47
+ for (const prop of infoProps) {
48
+ try {
49
+ res[prop] = typeof scope[prop] === "function" ? scope[prop]() : scope[prop];
50
+ } catch (err) {
51
+ res[prop] = err.message;
52
+ }
53
+ }
54
+ return res;
55
+ };
56
+
57
+ // src/context.ts
58
+ var matchFilter = (filter, level, path) => {
59
+ if (filter.pattern?.startsWith("-")) {
60
+ if (path?.includes(filter.pattern.slice(1))) {
61
+ if (level >= filter.level) {
62
+ return false;
63
+ }
64
+ }
65
+ } else {
66
+ if (filter.pattern?.length) {
67
+ if (path?.includes(filter.pattern)) {
68
+ return level >= filter.level;
69
+ }
70
+ } else {
71
+ if (level >= filter.level) {
72
+ return true;
73
+ }
74
+ }
75
+ }
76
+ };
77
+ var shouldLog = (entry, filters) => {
78
+ if (filters === void 0) {
79
+ return false;
80
+ }
81
+ const results = filters.map((filter) => matchFilter(filter, entry.level, entry.meta?.F)).filter((result) => result !== void 0);
82
+ return results.length > 0 && !results.some((results2) => results2 === false);
83
+ };
84
+ var getContextFromEntry = (entry) => {
85
+ let context;
86
+ if (entry.meta) {
87
+ const scopeInfo = gatherLogInfoFromScope(entry.meta.S);
88
+ if (Object.keys(scopeInfo).length > 0) {
89
+ context = Object.assign(context ?? {}, scopeInfo);
90
+ }
91
+ }
92
+ const entryContext = typeof entry.context === "function" ? entry.context() : entry.context;
93
+ if (entryContext) {
94
+ if (entryContext instanceof Error) {
95
+ const c = entryContext.context;
96
+ context = Object.assign(context ?? {}, {
97
+ error: entryContext.stack,
98
+ ...c
99
+ });
100
+ } else if (typeof entryContext === "object") {
101
+ context = Object.assign(context ?? {}, entryContext);
102
+ }
103
+ }
104
+ if (entry.error) {
105
+ context = Object.assign(context ?? {}, {
106
+ error: entry.error
107
+ });
108
+ }
109
+ return context && Object.keys(context).length > 0 ? context : void 0;
110
+ };
111
+
112
+ // src/processors/common.ts
113
+ var getRelativeFilename = (filename) => {
114
+ const match = filename.match(/.+\/(packages\/.+\/.+)/);
115
+ if (match) {
116
+ const [, filePath] = match;
117
+ return filePath;
118
+ }
119
+ return filename;
120
+ };
121
+
122
+ export {
123
+ LogLevel,
124
+ levels,
125
+ shortLevelName,
126
+ LogProcessorType,
127
+ logInfo,
128
+ gatherLogInfoFromScope,
129
+ shouldLog,
130
+ getContextFromEntry,
131
+ getRelativeFilename
132
+ };
133
+ //# sourceMappingURL=chunk-GPOFUMLO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/config.ts", "../../../src/scope.ts", "../../../src/context.ts", "../../../src/processors/common.ts"],
4
+ "sourcesContent": ["//\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 '*': LogLevel.TRACE,\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\n/**\n * Returns:\n * true if the log entry matches the filter,\n * false if should be excluded, or\n * undefined if it the filter doesn't match the level.\n */\nconst matchFilter = (filter: LogFilter, level: LogLevel, path?: string): boolean | undefined => {\n // TODO(burdon): Support regexp.\n if (filter.pattern?.startsWith('-')) {\n // Exclude.\n if (path?.includes(filter.pattern.slice(1))) {\n if (level >= filter.level) {\n return false;\n }\n }\n } else {\n // Include.\n if (filter.pattern?.length) {\n if (path?.includes(filter.pattern)) {\n return level >= filter.level;\n }\n } else {\n if (level >= filter.level) {\n return true;\n }\n }\n }\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 false;\n }\n\n const results = filters\n .map((filter) => matchFilter(filter, entry.level, entry.meta?.F))\n .filter((result): result is boolean => result !== undefined);\n\n // Skip if any are explicitely false.\n // console.log({ level: entry.level, path: entry.meta?.F }, filters, results, results.length);\n return results.length > 0 && !results.some((results) => results === false);\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 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"],
5
+ "mappings": "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",
6
+ "names": ["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", "startsWith", "includes", "slice", "length", "shouldLog", "entry", "filters", "undefined", "results", "map", "meta", "F", "result", "some", "getContextFromEntry", "context", "scopeInfo", "gatherLogInfoFromScope", "S", "Object", "keys", "assign", "entryContext", "Error", "c", "error", "stack", "getRelativeFilename", "filename", "match", "filePath"]
7
+ }
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
+
19
+ export {
20
+ __export,
21
+ __reExport
22
+ };
23
+ //# sourceMappingURL=chunk-IEP6GGEX.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,118 +1,46 @@
1
+ import {
2
+ LogLevel,
3
+ LogProcessorType,
4
+ gatherLogInfoFromScope,
5
+ getContextFromEntry,
6
+ getRelativeFilename,
7
+ levels,
8
+ logInfo,
9
+ shortLevelName,
10
+ shouldLog
11
+ } from "./chunk-GPOFUMLO.mjs";
12
+ import {
13
+ __export,
14
+ __reExport
15
+ } from "./chunk-IEP6GGEX.mjs";
16
+
1
17
  // src/index.ts
18
+ var index_exports = {};
19
+ __export(index_exports, {
20
+ BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
21
+ DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
22
+ FILE_PROCESSOR: () => FILE_PROCESSOR,
23
+ LogLevel: () => LogLevel,
24
+ LogProcessorType: () => LogProcessorType,
25
+ createFileProcessor: () => createFileProcessor,
26
+ createLog: () => createLog,
27
+ debug: () => debug,
28
+ gatherLogInfoFromScope: () => gatherLogInfoFromScope,
29
+ getContextFromEntry: () => getContextFromEntry,
30
+ getCurrentOwnershipScope: () => getCurrentOwnershipScope,
31
+ getRelativeFilename: () => getRelativeFilename,
32
+ levels: () => levels,
33
+ log: () => log,
34
+ logInfo: () => logInfo,
35
+ omit: () => omit,
36
+ parseFilter: () => parseFilter,
37
+ pick: () => pick,
38
+ shortLevelName: () => shortLevelName,
39
+ shouldLog: () => shouldLog
40
+ });
2
41
  import omit from "lodash.omit";
3
42
  import { pick } from "@dxos/util";
4
43
 
5
- // src/config.ts
6
- var LogLevel = /* @__PURE__ */ (function(LogLevel2) {
7
- LogLevel2[LogLevel2["TRACE"] = 5] = "TRACE";
8
- LogLevel2[LogLevel2["DEBUG"] = 10] = "DEBUG";
9
- LogLevel2[LogLevel2["VERBOSE"] = 11] = "VERBOSE";
10
- LogLevel2[LogLevel2["INFO"] = 12] = "INFO";
11
- LogLevel2[LogLevel2["WARN"] = 13] = "WARN";
12
- LogLevel2[LogLevel2["ERROR"] = 14] = "ERROR";
13
- return LogLevel2;
14
- })({});
15
- var levels = {
16
- "*": 5,
17
- trace: 5,
18
- debug: 10,
19
- verbose: 11,
20
- info: 12,
21
- warn: 13,
22
- error: 14
23
- };
24
- var shortLevelName = {
25
- [5]: "T",
26
- [10]: "D",
27
- [11]: "V",
28
- [12]: "I",
29
- [13]: "W",
30
- [14]: "E"
31
- };
32
- var LogProcessorType = /* @__PURE__ */ (function(LogProcessorType2) {
33
- LogProcessorType2["CONSOLE"] = "console";
34
- LogProcessorType2["BROWSER"] = "browser";
35
- LogProcessorType2["DEBUG"] = "debug";
36
- return LogProcessorType2;
37
- })({});
38
-
39
- // src/scope.ts
40
- var logInfoProperties = Symbol("logInfoProperties");
41
- var logInfo = (target, propertyKey, descriptor) => {
42
- (target[logInfoProperties] ??= []).push(propertyKey);
43
- };
44
- var gatherLogInfoFromScope = (scope) => {
45
- if (!scope) {
46
- return {};
47
- }
48
- const res = {};
49
- const prototype = Object.getPrototypeOf(scope);
50
- const infoProps = (typeof prototype === "object" && prototype !== null ? prototype[logInfoProperties] : []) ?? [];
51
- for (const prop of infoProps) {
52
- try {
53
- res[prop] = typeof scope[prop] === "function" ? scope[prop]() : scope[prop];
54
- } catch (err) {
55
- res[prop] = err.message;
56
- }
57
- }
58
- return res;
59
- };
60
-
61
- // src/context.ts
62
- var matchFilter = (filter, level, path) => {
63
- if (filter.pattern?.startsWith("-")) {
64
- if (path?.includes(filter.pattern.slice(1))) {
65
- if (level >= filter.level) {
66
- return false;
67
- }
68
- }
69
- } else {
70
- if (filter.pattern?.length) {
71
- if (path?.includes(filter.pattern)) {
72
- return level >= filter.level;
73
- }
74
- } else {
75
- if (level >= filter.level) {
76
- return true;
77
- }
78
- }
79
- }
80
- };
81
- var shouldLog = (entry, filters) => {
82
- if (filters === void 0) {
83
- return false;
84
- }
85
- const results = filters.map((filter) => matchFilter(filter, entry.level, entry.meta?.F)).filter((result) => result !== void 0);
86
- return results.length > 0 && !results.some((results2) => results2 === false);
87
- };
88
- var getContextFromEntry = (entry) => {
89
- let context;
90
- if (entry.meta) {
91
- const scopeInfo = gatherLogInfoFromScope(entry.meta.S);
92
- if (Object.keys(scopeInfo).length > 0) {
93
- context = Object.assign(context ?? {}, scopeInfo);
94
- }
95
- }
96
- const entryContext = typeof entry.context === "function" ? entry.context() : entry.context;
97
- if (entryContext) {
98
- if (entryContext instanceof Error) {
99
- const c = entryContext.context;
100
- context = Object.assign(context ?? {}, {
101
- error: entryContext.stack,
102
- ...c
103
- });
104
- } else if (typeof entryContext === "object") {
105
- context = Object.assign(context ?? {}, entryContext);
106
- }
107
- }
108
- if (entry.error) {
109
- context = Object.assign(context ?? {}, {
110
- error: entry.error
111
- });
112
- }
113
- return context && Object.keys(context).length > 0 ? context : void 0;
114
- };
115
-
116
44
  // src/decorators.ts
117
45
  import { inspect } from "@dxos/node-std/util";
118
46
  import chalk from "chalk";
@@ -225,40 +153,24 @@ var formatPromise = (id) => chalk.blue(`Promise#${id}`);
225
153
  // src/options.ts
226
154
  import defaultsDeep from "lodash.defaultsdeep";
227
155
 
228
- // src/platform/browser/index.ts
229
- var loadOptions = (filepath) => {
230
- try {
231
- let dxlog;
232
- if (typeof localStorage === "undefined") {
233
- if (globalThis.localStorage_dxlog) {
234
- dxlog = globalThis.localStorage_dxlog;
235
- }
236
- } else {
237
- dxlog = localStorage.getItem("dxlog") ?? void 0;
238
- }
239
- if (!dxlog) {
240
- return void 0;
241
- }
242
- return JSON.parse(dxlog);
243
- } catch (err) {
244
- console.info("can't parse dxlog config", err);
245
- return void 0;
246
- }
247
- };
248
-
249
- // src/processors/console-stub.ts
250
- var CONSOLE_PROCESSOR = () => {
251
- };
156
+ // src/platform/index.ts
157
+ var platform_exports = {};
158
+ __reExport(platform_exports, platform_star);
159
+ import * as platform_star from "#platform";
252
160
 
253
- // src/processors/debug-processor.ts
254
- import { inspect as inspect2 } from "@dxos/node-std/util";
255
- var DEBUG_PROCESSOR = (config, entry) => {
256
- console.log(inspect2(entry, false, null, true));
257
- };
161
+ // src/processors/index.ts
162
+ var processors_exports = {};
163
+ __export(processors_exports, {
164
+ BROWSER_PROCESSOR: () => BROWSER_PROCESSOR,
165
+ DEBUG_PROCESSOR: () => DEBUG_PROCESSOR,
166
+ FILE_PROCESSOR: () => FILE_PROCESSOR,
167
+ createFileProcessor: () => createFileProcessor,
168
+ getRelativeFilename: () => getRelativeFilename
169
+ });
258
170
 
259
171
  // src/processors/browser-processor.ts
260
172
  import { getDebugName, safariCheck } from "@dxos/util";
261
- var getRelativeFilename = (filename) => {
173
+ var getRelativeFilename2 = (filename) => {
262
174
  const match = filename.match(/.+\/(packages\/.+\/.+)/);
263
175
  if (match) {
264
176
  const [, filePath] = match;
@@ -278,7 +190,7 @@ var APP_BROWSER_PROCESSOR = (config, entry) => {
278
190
  const LOG_BROWSER_CSS = [];
279
191
  let link = "";
280
192
  if (entry.meta) {
281
- const filename = getRelativeFilename(entry.meta.F);
193
+ const filename = getRelativeFilename2(entry.meta.F);
282
194
  const filepath = `${LOG_BROWSER_PREFIX.replace(/\/$/, "")}/${filename}`;
283
195
  link = `${filepath}#L${entry.meta.L}`;
284
196
  }
@@ -334,7 +246,7 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
334
246
  }
335
247
  let path = "";
336
248
  if (entry.meta) {
337
- path = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;
249
+ path = `${getRelativeFilename2(entry.meta.F)}:${entry.meta.L}`;
338
250
  }
339
251
  let args = [];
340
252
  const processPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
@@ -363,22 +275,20 @@ var TEST_BROWSER_PROCESSOR = (config, entry) => {
363
275
  };
364
276
  var BROWSER_PROCESSOR = CONFIG.useTestProcessor ? TEST_BROWSER_PROCESSOR : APP_BROWSER_PROCESSOR;
365
277
 
366
- // src/processors/file-processor.ts
367
- import { appendFileSync, mkdirSync, openSync } from "@dxos/node-std/fs";
368
- import { dirname } from "@dxos/node-std/path";
369
- import { jsonlogify } from "@dxos/util";
278
+ // src/processors/index.ts
279
+ __reExport(processors_exports, console_processor_star);
280
+ import * as console_processor_star from "#console-processor";
370
281
 
371
- // src/processors/common.ts
372
- var getRelativeFilename2 = (filename) => {
373
- const match = filename.match(/.+\/(packages\/.+\/.+)/);
374
- if (match) {
375
- const [, filePath] = match;
376
- return filePath;
377
- }
378
- return filename;
282
+ // src/processors/debug-processor.ts
283
+ import { inspect as inspect2 } from "@dxos/node-std/util";
284
+ var DEBUG_PROCESSOR = (config, entry) => {
285
+ console.log(inspect2(entry, false, null, true));
379
286
  };
380
287
 
381
288
  // src/processors/file-processor.ts
289
+ import { appendFileSync, mkdirSync, openSync } from "@dxos/node-std/fs";
290
+ import { dirname } from "@dxos/node-std/path";
291
+ import { jsonlogify } from "@dxos/util";
382
292
  var EAGAIN_MAX_DURATION = 1e3;
383
293
  var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
384
294
  let fd;
@@ -403,7 +313,7 @@ var createFileProcessor = ({ pathOrFd, levels: levels2, filters }) => {
403
313
  timestamp: Date.now(),
404
314
  ...entry.meta ? {
405
315
  meta: {
406
- file: getRelativeFilename2(entry.meta.F),
316
+ file: getRelativeFilename(entry.meta.F),
407
317
  line: entry.meta.L
408
318
  }
409
319
  } : {},
@@ -446,13 +356,13 @@ var FILE_PROCESSOR = createFileProcessor({
446
356
 
447
357
  // src/options.ts
448
358
  var processors = {
449
- [LogProcessorType.CONSOLE]: CONSOLE_PROCESSOR,
359
+ [LogProcessorType.CONSOLE]: processors_exports.CONSOLE_PROCESSOR,
450
360
  [LogProcessorType.BROWSER]: BROWSER_PROCESSOR,
451
361
  [LogProcessorType.DEBUG]: DEBUG_PROCESSOR
452
362
  };
453
- var browser = typeof window !== "undefined" || typeof navigator !== "undefined";
363
+ var browser = (typeof window !== "undefined" || typeof navigator !== "undefined") && !(typeof process !== "undefined" && process?.env?.VITEST);
454
364
  var DEFAULT_PROCESSORS = [
455
- browser ? BROWSER_PROCESSOR : CONSOLE_PROCESSOR
365
+ browser ? BROWSER_PROCESSOR : processors_exports.CONSOLE_PROCESSOR
456
366
  ];
457
367
  var parseLogLevel = (level, defValue = LogLevel.WARN) => levels[level.toLowerCase()] ?? defValue;
458
368
  var parseFilter = (filter) => {
@@ -480,7 +390,7 @@ var createConfig = (options) => {
480
390
  filter: process.env.LOG_FILTER,
481
391
  processor: process.env.LOG_PROCESSOR
482
392
  } : void 0;
483
- const mergedOptions = defaultsDeep({}, loadOptions(envOptions?.file), envOptions, options);
393
+ const mergedOptions = defaultsDeep({}, (0, platform_exports.loadOptions)(envOptions?.file), envOptions, options);
484
394
  return {
485
395
  options: mergedOptions,
486
396
  filters: parseFilter(mergedOptions.filter ?? LogLevel.INFO),
@@ -574,6 +484,9 @@ var debug = (label, args) => {
574
484
  };
575
485
  var getFormattedStackTrace = () => new Error().stack.split("\n").slice(3).join("\n");
576
486
 
487
+ // src/index.ts
488
+ __reExport(index_exports, processors_exports);
489
+
577
490
  // src/experimental/ownership.ts
578
491
  import { inspect as inspect3 } from "@dxos/node-std/util";
579
492
  var kOwnershipScope = Symbol("kOwnershipScope");
@@ -609,7 +522,6 @@ var OwnershipScope = class {
609
522
  var getCurrentOwnershipScope = (thisRef) => thisRef;
610
523
  export {
611
524
  BROWSER_PROCESSOR,
612
- CONSOLE_PROCESSOR,
613
525
  DEBUG_PROCESSOR,
614
526
  FILE_PROCESSOR,
615
527
  LogLevel,
@@ -620,7 +532,7 @@ export {
620
532
  gatherLogInfoFromScope,
621
533
  getContextFromEntry,
622
534
  getCurrentOwnershipScope,
623
- getRelativeFilename2 as getRelativeFilename,
535
+ getRelativeFilename,
624
536
  levels,
625
537
  log,
626
538
  logInfo,