@mks2508/better-logger 0.18.2-alpha.1 → 0.18.3
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/README.md +38 -336
- package/dist/Logger.d.ts +356 -157
- package/dist/Logger.d.ts.map +1 -1
- package/dist/ScopedLogger.d.ts +549 -9
- package/dist/ScopedLogger.d.ts.map +1 -1
- package/dist/chunks/HookBridge-C-AvXmPD.cjs +504 -0
- package/dist/chunks/HookBridge-C-AvXmPD.cjs.map +1 -0
- package/dist/chunks/HookBridge-CI2PH79S.js +487 -0
- package/dist/chunks/HookBridge-CI2PH79S.js.map +1 -0
- package/dist/chunks/{LogContext-L7HzynFw.cjs → LogContext-BaMXleWj.cjs} +19 -4
- package/dist/chunks/LogContext-BaMXleWj.cjs.map +1 -0
- package/dist/chunks/LogContext-DZasm_P5.cjs +141 -0
- package/dist/chunks/LogContext-DZasm_P5.cjs.map +1 -0
- package/dist/chunks/{LogContext-Cwn-1Zzb.js → LogContext-DjlITOzZ.js} +19 -4
- package/dist/chunks/LogContext-DjlITOzZ.js.map +1 -0
- package/dist/chunks/LogContext-Dyzs61XG.js +136 -0
- package/dist/chunks/LogContext-Dyzs61XG.js.map +1 -0
- package/dist/chunks/SerializerBridge-Ba43Mk7j.js +393 -0
- package/dist/chunks/SerializerBridge-Ba43Mk7j.js.map +1 -0
- package/dist/chunks/SerializerBridge-C4a9Z37F.cjs +410 -0
- package/dist/chunks/SerializerBridge-C4a9Z37F.cjs.map +1 -0
- package/dist/chunks/{StyleManager-CIpd6wbO.cjs → StyleManager-DQ6UNRB-.cjs} +37 -11
- package/dist/chunks/StyleManager-DQ6UNRB-.cjs.map +1 -0
- package/dist/chunks/StyleManager-DjwAYbxE.js +113 -0
- package/dist/chunks/StyleManager-DjwAYbxE.js.map +1 -0
- package/dist/chunks/{core-PoT7RrTK.js → core-Blfi2klP.js} +1 -4
- package/dist/chunks/core-Blfi2klP.js.map +1 -0
- package/dist/chunks/{core-Dzz7agGa.cjs → core-CqS_UBzJ.cjs} +1 -4
- package/dist/chunks/core-CqS_UBzJ.cjs.map +1 -0
- package/dist/chunks/{environment-detector-CI3TrWK_.js → environment-detector-7NvnYUfr.js} +11 -11
- package/dist/chunks/environment-detector-7NvnYUfr.js.map +1 -0
- package/dist/chunks/{environment-detector-Cnn6wr6O.cjs → environment-detector-D-tHkKWA.cjs} +11 -11
- package/dist/chunks/environment-detector-D-tHkKWA.cjs.map +1 -0
- package/dist/chunks/server-fallback-CaCPjWby.cjs +119 -0
- package/dist/chunks/server-fallback-CaCPjWby.cjs.map +1 -0
- package/dist/chunks/server-fallback-jj0T6XaK.js +114 -0
- package/dist/chunks/server-fallback-jj0T6XaK.js.map +1 -0
- package/dist/chunks/{spinner-DNvxbM9a.cjs → spinner-BHyYEXsM.cjs} +319 -37
- package/dist/chunks/spinner-BHyYEXsM.cjs.map +1 -0
- package/dist/chunks/{spinner-D3FsF78o.js → spinner-BtkwpzYv.js} +319 -37
- package/dist/chunks/spinner-BtkwpzYv.js.map +1 -0
- package/dist/chunks/styling-CRw3KQW4.js +1592 -0
- package/dist/chunks/styling-CRw3KQW4.js.map +1 -0
- package/dist/chunks/styling-Cel2wPRy.cjs +1645 -0
- package/dist/chunks/styling-Cel2wPRy.cjs.map +1 -0
- package/dist/chunks/transports-BGfwwakw.js +1237 -0
- package/dist/chunks/transports-BGfwwakw.js.map +1 -0
- package/dist/chunks/transports-BZ-Mc2IT.cjs +1450 -0
- package/dist/chunks/transports-BZ-Mc2IT.cjs.map +1 -0
- package/dist/chunks/transports-DvaLAeGJ.js +1403 -0
- package/dist/chunks/transports-DvaLAeGJ.js.map +1 -0
- package/dist/chunks/transports-yK6CL0Ml.cjs +1278 -0
- package/dist/chunks/transports-yK6CL0Ml.cjs.map +1 -0
- package/dist/chunks/{utils-BqlFYocD.cjs → utils-W_cxqriN.cjs} +44 -37
- package/dist/chunks/utils-W_cxqriN.cjs.map +1 -0
- package/dist/chunks/{utils-VETbVpkR.js → utils-tKfBAWUM.js} +44 -37
- package/dist/chunks/utils-tKfBAWUM.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +166 -19
- package/dist/cli/CommandProcessor.d.ts.map +1 -1
- package/dist/cli/commands/ConfigCommand.d.ts +36 -1
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -1
- package/dist/cli/commands/ExportCommand.d.ts +49 -3
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -1
- package/dist/cli/commands/ThemeCommand.d.ts +62 -3
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -1
- package/dist/cli/help.d.ts +30 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.d.ts +29 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli.cjs +2 -2
- package/dist/cli.js +2 -2
- package/dist/context/LogContext.d.ts +167 -70
- package/dist/context/LogContext.d.ts.map +1 -1
- package/dist/context.cjs +1 -1
- package/dist/context.js +1 -1
- package/dist/core.cjs +52 -29
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +50 -27
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +52 -29
- package/dist/core.js.map +1 -1
- package/dist/hooks/HookBridge.d.ts +15 -9
- package/dist/hooks/HookBridge.d.ts.map +1 -1
- package/dist/hooks/HookManager.d.ts +295 -2
- package/dist/hooks/HookManager.d.ts.map +1 -1
- package/dist/hooks.cjs +1 -1
- package/dist/hooks.js +1 -1
- package/dist/index.cjs +1415 -214
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1413 -215
- package/dist/index.js.map +1 -1
- package/dist/playground/TerminalBridge.d.ts +23 -16
- package/dist/playground/TerminalBridge.d.ts.map +1 -1
- package/dist/playground/box.d.ts +36 -5
- package/dist/playground/box.d.ts.map +1 -1
- package/dist/playground/cli-table.d.ts +41 -5
- package/dist/playground/cli-table.d.ts.map +1 -1
- package/dist/playground/divider.d.ts +22 -3
- package/dist/playground/divider.d.ts.map +1 -1
- package/dist/playground/header.d.ts +21 -4
- package/dist/playground/header.d.ts.map +1 -1
- package/dist/playground/server-fallback.d.ts +96 -9
- package/dist/playground/server-fallback.d.ts.map +1 -1
- package/dist/playground/spinner.d.ts +159 -10
- package/dist/playground/spinner.d.ts.map +1 -1
- package/dist/playground/step.d.ts +25 -6
- package/dist/playground/step.d.ts.map +1 -1
- package/dist/playground.cjs +1 -1
- package/dist/playground.js +1 -1
- package/dist/serializers/SerializerBridge.d.ts +13 -6
- package/dist/serializers/SerializerBridge.d.ts.map +1 -1
- package/dist/serializers/SerializerRegistry.d.ts +236 -0
- package/dist/serializers/SerializerRegistry.d.ts.map +1 -1
- package/dist/serializers.cjs +1 -1
- package/dist/serializers.js +1 -1
- package/dist/styles/StyleManager.d.ts +138 -31
- package/dist/styles/StyleManager.d.ts.map +1 -1
- package/dist/styles.cjs +2 -2
- package/dist/styles.js +2 -2
- package/dist/styling/SmartPresets.d.ts +100 -6
- package/dist/styling/SmartPresets.d.ts.map +1 -1
- package/dist/styling/StyleBuilder.d.ts +453 -32
- package/dist/styling/StyleBuilder.d.ts.map +1 -1
- package/dist/styling/banners.d.ts +83 -7
- package/dist/styling/banners.d.ts.map +1 -1
- package/dist/styling/themes.d.ts +41 -2
- package/dist/styling/themes.d.ts.map +1 -1
- package/dist/transports/ConsoleTransport.d.ts +95 -0
- package/dist/transports/ConsoleTransport.d.ts.map +1 -1
- package/dist/transports/FileTransport.d.ts +99 -18
- package/dist/transports/FileTransport.d.ts.map +1 -1
- package/dist/transports/HttpTransport.d.ts +135 -22
- package/dist/transports/HttpTransport.d.ts.map +1 -1
- package/dist/transports/OtlpTraceTransport.d.ts +118 -0
- package/dist/transports/OtlpTraceTransport.d.ts.map +1 -0
- package/dist/transports/OtlpTransport.d.ts +80 -37
- package/dist/transports/OtlpTransport.d.ts.map +1 -1
- package/dist/transports/SpanRuntime.d.ts +73 -0
- package/dist/transports/SpanRuntime.d.ts.map +1 -0
- package/dist/transports/TransportBridge.d.ts +19 -13
- package/dist/transports/TransportBridge.d.ts.map +1 -1
- package/dist/transports/TransportManager.d.ts +232 -10
- package/dist/transports/TransportManager.d.ts.map +1 -1
- package/dist/transports/index.d.ts +1 -0
- package/dist/transports/index.d.ts.map +1 -1
- package/dist/transports-module.d.ts +3 -1
- package/dist/transports-module.d.ts.map +1 -1
- package/dist/transports.cjs +2 -1
- package/dist/transports.js +2 -2
- package/dist/types/core.d.ts +155 -59
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +92 -14
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/serializers.d.ts +72 -0
- package/dist/types/serializers.d.ts.map +1 -1
- package/dist/types/transports.d.ts +163 -39
- package/dist/types/transports.d.ts.map +1 -1
- package/dist/utils/ansi-colors.d.ts +15 -15
- package/dist/utils/asyncLocalStorage.d.ts +33 -0
- package/dist/utils/asyncLocalStorage.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +11 -11
- package/dist/utils/formatting.d.ts +8 -8
- package/dist/utils/output.d.ts +9 -9
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/stackTrace.d.ts +2 -2
- package/package.json +24 -25
- package/dist/chunks/HookBridge-CiRfR67f.cjs +0 -190
- package/dist/chunks/HookBridge-CiRfR67f.cjs.map +0 -1
- package/dist/chunks/HookBridge-SgMmbXZB.js +0 -173
- package/dist/chunks/HookBridge-SgMmbXZB.js.map +0 -1
- package/dist/chunks/LogContext-Cwn-1Zzb.js.map +0 -1
- package/dist/chunks/LogContext-L7HzynFw.cjs.map +0 -1
- package/dist/chunks/SerializerBridge-BaOQOb8q.cjs +0 -166
- package/dist/chunks/SerializerBridge-BaOQOb8q.cjs.map +0 -1
- package/dist/chunks/SerializerBridge-BkpQu5c9.js +0 -149
- package/dist/chunks/SerializerBridge-BkpQu5c9.js.map +0 -1
- package/dist/chunks/StyleManager-CIpd6wbO.cjs.map +0 -1
- package/dist/chunks/StyleManager-LCvVlVdx.js +0 -87
- package/dist/chunks/StyleManager-LCvVlVdx.js.map +0 -1
- package/dist/chunks/core-Dzz7agGa.cjs.map +0 -1
- package/dist/chunks/core-PoT7RrTK.js.map +0 -1
- package/dist/chunks/environment-detector-CI3TrWK_.js.map +0 -1
- package/dist/chunks/environment-detector-Cnn6wr6O.cjs.map +0 -1
- package/dist/chunks/server-fallback-BUKjdLS7.cjs +0 -42
- package/dist/chunks/server-fallback-BUKjdLS7.cjs.map +0 -1
- package/dist/chunks/server-fallback-BsuWH1Dk.js +0 -37
- package/dist/chunks/server-fallback-BsuWH1Dk.js.map +0 -1
- package/dist/chunks/spinner-D3FsF78o.js.map +0 -1
- package/dist/chunks/spinner-DNvxbM9a.cjs.map +0 -1
- package/dist/chunks/styling-84N8T97t.js +0 -941
- package/dist/chunks/styling-84N8T97t.js.map +0 -1
- package/dist/chunks/styling-Cg5saQ46.cjs +0 -994
- package/dist/chunks/styling-Cg5saQ46.cjs.map +0 -1
- package/dist/chunks/transports-BiDk345e.js +0 -715
- package/dist/chunks/transports-BiDk345e.js.map +0 -1
- package/dist/chunks/transports-COPWmlF1.cjs +0 -756
- package/dist/chunks/transports-COPWmlF1.cjs.map +0 -1
- package/dist/chunks/utils-BqlFYocD.cjs.map +0 -1
- package/dist/chunks/utils-VETbVpkR.js.map +0 -1
- package/dist/example.d.ts +0 -18
- package/dist/example.d.ts.map +0 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.d.ts.map +0 -1
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
//#region src/serializers/SerializerRegistry.ts
|
|
2
|
-
const DEFAULT_CONFIG = {
|
|
3
|
-
maxDepth: 5,
|
|
4
|
-
circular: "placeholder",
|
|
5
|
-
preserveUndefined: false
|
|
6
|
-
};
|
|
7
|
-
var SerializerRegistry = class {
|
|
8
|
-
serializers = /* @__PURE__ */ new Map();
|
|
9
|
-
config;
|
|
10
|
-
constructor(config = {}) {
|
|
11
|
-
this.config = {
|
|
12
|
-
...DEFAULT_CONFIG,
|
|
13
|
-
...config
|
|
14
|
-
};
|
|
15
|
-
this.registerDefaults();
|
|
16
|
-
}
|
|
17
|
-
registerDefaults() {
|
|
18
|
-
this.add(Error, (err) => ({
|
|
19
|
-
name: err.name,
|
|
20
|
-
message: err.message,
|
|
21
|
-
stack: err.stack?.split("\n").slice(0, 10),
|
|
22
|
-
...err.cause ? { cause: this.serialize(err.cause) } : {}
|
|
23
|
-
}), 100);
|
|
24
|
-
this.add(Date, (date) => ({
|
|
25
|
-
iso: date.toISOString(),
|
|
26
|
-
timestamp: date.getTime()
|
|
27
|
-
}), 90);
|
|
28
|
-
this.add(RegExp, (regex) => ({
|
|
29
|
-
pattern: regex.source,
|
|
30
|
-
flags: regex.flags
|
|
31
|
-
}), 90);
|
|
32
|
-
this.add(Map, (map, ctx) => {
|
|
33
|
-
const obj = {};
|
|
34
|
-
map.forEach((value, key) => {
|
|
35
|
-
const keyStr = typeof key === "object" ? JSON.stringify(key) : String(key);
|
|
36
|
-
obj[keyStr] = this.serializeInternal(value, {
|
|
37
|
-
...ctx,
|
|
38
|
-
depth: ctx.depth + 1,
|
|
39
|
-
path: [...ctx.path, keyStr]
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
return {
|
|
43
|
-
__type: "Map",
|
|
44
|
-
entries: obj
|
|
45
|
-
};
|
|
46
|
-
}, 80);
|
|
47
|
-
this.add(Set, (set, ctx) => ({
|
|
48
|
-
__type: "Set",
|
|
49
|
-
values: Array.from(set).map((v, i) => this.serializeInternal(v, {
|
|
50
|
-
...ctx,
|
|
51
|
-
depth: ctx.depth + 1,
|
|
52
|
-
path: [...ctx.path, `[${i}]`]
|
|
53
|
-
}))
|
|
54
|
-
}), 80);
|
|
55
|
-
if (typeof Buffer !== "undefined") this.add(Buffer, (buf) => ({
|
|
56
|
-
__type: "Buffer",
|
|
57
|
-
length: buf.length,
|
|
58
|
-
preview: buf.slice(0, 50).toString("hex")
|
|
59
|
-
}), 70);
|
|
60
|
-
}
|
|
61
|
-
add(type, serializer, priority = 50) {
|
|
62
|
-
this.serializers.set(type, {
|
|
63
|
-
type,
|
|
64
|
-
serializer,
|
|
65
|
-
priority
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
remove(type) {
|
|
69
|
-
return this.serializers.delete(type);
|
|
70
|
-
}
|
|
71
|
-
has(type) {
|
|
72
|
-
return this.serializers.has(type);
|
|
73
|
-
}
|
|
74
|
-
getAll() {
|
|
75
|
-
return Array.from(this.serializers.values()).sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50));
|
|
76
|
-
}
|
|
77
|
-
findSerializer(value) {
|
|
78
|
-
const sorted = this.getAll();
|
|
79
|
-
for (const entry of sorted) if (value instanceof entry.type) return entry;
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
serializeInternal(value, context) {
|
|
83
|
-
if (value === null) return null;
|
|
84
|
-
if (value === void 0) return this.config.preserveUndefined ? void 0 : "[undefined]";
|
|
85
|
-
if (typeof value === "function") return `[Function: ${value.name || "anonymous"}]`;
|
|
86
|
-
if (typeof value !== "object") return value;
|
|
87
|
-
if (context.depth >= this.config.maxDepth) return "[Max Depth]";
|
|
88
|
-
if (context.seen.has(value)) switch (this.config.circular) {
|
|
89
|
-
case "error": throw new Error(`Circular reference at ${context.path.join(".")}`);
|
|
90
|
-
case "skip": return;
|
|
91
|
-
default: return "[Circular]";
|
|
92
|
-
}
|
|
93
|
-
context.seen.add(value);
|
|
94
|
-
const serializer = this.findSerializer(value);
|
|
95
|
-
if (serializer) return serializer.serializer(value, context);
|
|
96
|
-
if (Array.isArray(value)) return value.map((item, i) => this.serializeInternal(item, {
|
|
97
|
-
...context,
|
|
98
|
-
depth: context.depth + 1,
|
|
99
|
-
path: [...context.path, `[${i}]`]
|
|
100
|
-
}));
|
|
101
|
-
const result = {};
|
|
102
|
-
for (const [key, val] of Object.entries(value)) result[key] = this.serializeInternal(val, {
|
|
103
|
-
...context,
|
|
104
|
-
depth: context.depth + 1,
|
|
105
|
-
path: [...context.path, key]
|
|
106
|
-
});
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
serialize(value, config) {
|
|
110
|
-
const mergedConfig = {
|
|
111
|
-
...this.config,
|
|
112
|
-
...config
|
|
113
|
-
};
|
|
114
|
-
return this.serializeInternal(value, {
|
|
115
|
-
depth: 0,
|
|
116
|
-
maxDepth: mergedConfig.maxDepth,
|
|
117
|
-
path: [],
|
|
118
|
-
seen: /* @__PURE__ */ new WeakSet()
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
let _defaultRegistry = null;
|
|
123
|
-
function getDefaultSerializerRegistry() {
|
|
124
|
-
if (!_defaultRegistry) _defaultRegistry = new SerializerRegistry();
|
|
125
|
-
return _defaultRegistry;
|
|
126
|
-
}
|
|
127
|
-
//#endregion
|
|
128
|
-
//#region src/serializers/SerializerBridge.ts
|
|
129
|
-
/**
|
|
130
|
-
* Creates a SerializerBridge instance.
|
|
131
|
-
*/
|
|
132
|
-
function createSerializerBridge() {
|
|
133
|
-
const serializerRegistry = new SerializerRegistry();
|
|
134
|
-
return {
|
|
135
|
-
addSerializer(type, serializer, priority) {
|
|
136
|
-
serializerRegistry.add(type, serializer, priority);
|
|
137
|
-
},
|
|
138
|
-
removeSerializer(type) {
|
|
139
|
-
return serializerRegistry.remove(type);
|
|
140
|
-
},
|
|
141
|
-
getSerializerRegistry() {
|
|
142
|
-
return serializerRegistry;
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
//#endregion
|
|
147
|
-
Object.defineProperty(exports, "SerializerRegistry", {
|
|
148
|
-
enumerable: true,
|
|
149
|
-
get: function() {
|
|
150
|
-
return SerializerRegistry;
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
Object.defineProperty(exports, "createSerializerBridge", {
|
|
154
|
-
enumerable: true,
|
|
155
|
-
get: function() {
|
|
156
|
-
return createSerializerBridge;
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
Object.defineProperty(exports, "getDefaultSerializerRegistry", {
|
|
160
|
-
enumerable: true,
|
|
161
|
-
get: function() {
|
|
162
|
-
return getDefaultSerializerRegistry;
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
//# sourceMappingURL=SerializerBridge-BaOQOb8q.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SerializerBridge-BaOQOb8q.cjs","names":[],"sources":["../../src/serializers/SerializerRegistry.ts","../../src/serializers/SerializerBridge.ts"],"sourcesContent":["import type {\n SerializerFn,\n SerializerContext,\n SerializerEntry,\n SerializerConfig,\n ISerializerRegistry\n} from '../types/index.js';\n\nconst DEFAULT_CONFIG: Required<SerializerConfig> = {\n maxDepth: 5,\n circular: 'placeholder',\n preserveUndefined: false\n};\n\nexport class SerializerRegistry implements ISerializerRegistry {\n private serializers: Map<Function, SerializerEntry> = new Map();\n private config: Required<SerializerConfig>;\n\n constructor(config: SerializerConfig = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.registerDefaults();\n }\n\n private registerDefaults(): void {\n this.add(Error, (err: Error) => ({\n name: err.name,\n message: err.message,\n stack: err.stack?.split('\\n').slice(0, 10),\n ...(err.cause ? { cause: this.serialize(err.cause) } : {})\n }), 100);\n\n this.add(Date, (date: Date) => ({\n iso: date.toISOString(),\n timestamp: date.getTime()\n }), 90);\n\n this.add(RegExp, (regex: RegExp) => ({\n pattern: regex.source,\n flags: regex.flags\n }), 90);\n\n this.add(Map, (map: Map<any, any>, ctx) => {\n const obj: Record<string, any> = {};\n map.forEach((value, key) => {\n const keyStr = typeof key === 'object' ? JSON.stringify(key) : String(key);\n obj[keyStr] = this.serializeInternal(value, {\n ...ctx,\n depth: ctx.depth + 1,\n path: [...ctx.path, keyStr]\n });\n });\n return { __type: 'Map', entries: obj };\n }, 80);\n\n this.add(Set, (set: Set<any>, ctx) => ({\n __type: 'Set',\n values: Array.from(set).map((v, i) =>\n this.serializeInternal(v, {\n ...ctx,\n depth: ctx.depth + 1,\n path: [...ctx.path, `[${i}]`]\n })\n )\n }), 80);\n\n if (typeof Buffer !== 'undefined') {\n this.add(Buffer as any, (buf: Buffer) => ({\n __type: 'Buffer',\n length: buf.length,\n preview: buf.slice(0, 50).toString('hex')\n }), 70);\n }\n }\n\n add<T>(\n type: new (...args: any[]) => T,\n serializer: SerializerFn<T>,\n priority: number = 50\n ): void {\n this.serializers.set(type, { type, serializer, priority });\n }\n\n remove<T>(type: new (...args: any[]) => T): boolean {\n return this.serializers.delete(type);\n }\n\n has<T>(type: new (...args: any[]) => T): boolean {\n return this.serializers.has(type);\n }\n\n getAll(): SerializerEntry[] {\n return Array.from(this.serializers.values())\n .sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50));\n }\n\n private findSerializer(value: any): SerializerEntry | null {\n const sorted = this.getAll();\n for (const entry of sorted) {\n if (value instanceof entry.type) {\n return entry;\n }\n }\n return null;\n }\n\n private serializeInternal(value: any, context: SerializerContext): any {\n if (value === null) return null;\n if (value === undefined) return this.config.preserveUndefined ? undefined : '[undefined]';\n if (typeof value === 'function') return `[Function: ${value.name || 'anonymous'}]`;\n if (typeof value !== 'object') return value;\n\n if (context.depth >= this.config.maxDepth) {\n return '[Max Depth]';\n }\n\n if (context.seen.has(value)) {\n switch (this.config.circular) {\n case 'error':\n throw new Error(`Circular reference at ${context.path.join('.')}`);\n case 'skip':\n return undefined;\n case 'placeholder':\n default:\n return '[Circular]';\n }\n }\n context.seen.add(value);\n\n const serializer = this.findSerializer(value);\n if (serializer) {\n return serializer.serializer(value, context);\n }\n\n if (Array.isArray(value)) {\n return value.map((item, i) =>\n this.serializeInternal(item, {\n ...context,\n depth: context.depth + 1,\n path: [...context.path, `[${i}]`]\n })\n );\n }\n\n const result: Record<string, any> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = this.serializeInternal(val, {\n ...context,\n depth: context.depth + 1,\n path: [...context.path, key]\n });\n }\n return result;\n }\n\n serialize(value: any, config?: SerializerConfig): any {\n const mergedConfig = { ...this.config, ...config };\n return this.serializeInternal(value, {\n depth: 0,\n maxDepth: mergedConfig.maxDepth,\n path: [],\n seen: new WeakSet()\n });\n }\n}\n\nlet _defaultRegistry: SerializerRegistry | null = null;\n\nexport function getDefaultSerializerRegistry(): SerializerRegistry {\n if (!_defaultRegistry) {\n _defaultRegistry = new SerializerRegistry();\n }\n return _defaultRegistry;\n}\n","/**\n * @fileoverview SerializerBridge — SerializerRegistry facade.\n * Encapsulates serializer registration, removal, and registry access.\n */\n\nimport type { SerializerFn } from '../types/index.js';\nimport { SerializerRegistry } from './index.js';\n\n/**\n * Bridge for serializer management.\n */\nexport interface SerializerBridge {\n /** Adds a serializer for a type. */\n addSerializer<T>(type: new (...args: unknown[]) => T, serializer: SerializerFn<T>, priority?: number): void;\n removeSerializer<T>(type: new (...args: unknown[]) => T): boolean;\n /** Returns the underlying registry. */\n getSerializerRegistry(): SerializerRegistry;\n}\n\n/**\n * Creates a SerializerBridge instance.\n */\nexport function createSerializerBridge(): SerializerBridge {\n const serializerRegistry = new SerializerRegistry();\n\n return {\n addSerializer<T>(type: new (...args: unknown[]) => T, serializer: SerializerFn<T>, priority?: number): void {\n serializerRegistry.add(type, serializer, priority);\n },\n\n removeSerializer<T>(type: new (...args: unknown[]) => T): boolean {\n return serializerRegistry.remove(type);\n },\n\n getSerializerRegistry(): SerializerRegistry {\n return serializerRegistry;\n }\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
//#region src/serializers/SerializerRegistry.ts
|
|
2
|
-
const DEFAULT_CONFIG = {
|
|
3
|
-
maxDepth: 5,
|
|
4
|
-
circular: "placeholder",
|
|
5
|
-
preserveUndefined: false
|
|
6
|
-
};
|
|
7
|
-
var SerializerRegistry = class {
|
|
8
|
-
serializers = /* @__PURE__ */ new Map();
|
|
9
|
-
config;
|
|
10
|
-
constructor(config = {}) {
|
|
11
|
-
this.config = {
|
|
12
|
-
...DEFAULT_CONFIG,
|
|
13
|
-
...config
|
|
14
|
-
};
|
|
15
|
-
this.registerDefaults();
|
|
16
|
-
}
|
|
17
|
-
registerDefaults() {
|
|
18
|
-
this.add(Error, (err) => ({
|
|
19
|
-
name: err.name,
|
|
20
|
-
message: err.message,
|
|
21
|
-
stack: err.stack?.split("\n").slice(0, 10),
|
|
22
|
-
...err.cause ? { cause: this.serialize(err.cause) } : {}
|
|
23
|
-
}), 100);
|
|
24
|
-
this.add(Date, (date) => ({
|
|
25
|
-
iso: date.toISOString(),
|
|
26
|
-
timestamp: date.getTime()
|
|
27
|
-
}), 90);
|
|
28
|
-
this.add(RegExp, (regex) => ({
|
|
29
|
-
pattern: regex.source,
|
|
30
|
-
flags: regex.flags
|
|
31
|
-
}), 90);
|
|
32
|
-
this.add(Map, (map, ctx) => {
|
|
33
|
-
const obj = {};
|
|
34
|
-
map.forEach((value, key) => {
|
|
35
|
-
const keyStr = typeof key === "object" ? JSON.stringify(key) : String(key);
|
|
36
|
-
obj[keyStr] = this.serializeInternal(value, {
|
|
37
|
-
...ctx,
|
|
38
|
-
depth: ctx.depth + 1,
|
|
39
|
-
path: [...ctx.path, keyStr]
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
return {
|
|
43
|
-
__type: "Map",
|
|
44
|
-
entries: obj
|
|
45
|
-
};
|
|
46
|
-
}, 80);
|
|
47
|
-
this.add(Set, (set, ctx) => ({
|
|
48
|
-
__type: "Set",
|
|
49
|
-
values: Array.from(set).map((v, i) => this.serializeInternal(v, {
|
|
50
|
-
...ctx,
|
|
51
|
-
depth: ctx.depth + 1,
|
|
52
|
-
path: [...ctx.path, `[${i}]`]
|
|
53
|
-
}))
|
|
54
|
-
}), 80);
|
|
55
|
-
if (typeof Buffer !== "undefined") this.add(Buffer, (buf) => ({
|
|
56
|
-
__type: "Buffer",
|
|
57
|
-
length: buf.length,
|
|
58
|
-
preview: buf.slice(0, 50).toString("hex")
|
|
59
|
-
}), 70);
|
|
60
|
-
}
|
|
61
|
-
add(type, serializer, priority = 50) {
|
|
62
|
-
this.serializers.set(type, {
|
|
63
|
-
type,
|
|
64
|
-
serializer,
|
|
65
|
-
priority
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
remove(type) {
|
|
69
|
-
return this.serializers.delete(type);
|
|
70
|
-
}
|
|
71
|
-
has(type) {
|
|
72
|
-
return this.serializers.has(type);
|
|
73
|
-
}
|
|
74
|
-
getAll() {
|
|
75
|
-
return Array.from(this.serializers.values()).sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50));
|
|
76
|
-
}
|
|
77
|
-
findSerializer(value) {
|
|
78
|
-
const sorted = this.getAll();
|
|
79
|
-
for (const entry of sorted) if (value instanceof entry.type) return entry;
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
serializeInternal(value, context) {
|
|
83
|
-
if (value === null) return null;
|
|
84
|
-
if (value === void 0) return this.config.preserveUndefined ? void 0 : "[undefined]";
|
|
85
|
-
if (typeof value === "function") return `[Function: ${value.name || "anonymous"}]`;
|
|
86
|
-
if (typeof value !== "object") return value;
|
|
87
|
-
if (context.depth >= this.config.maxDepth) return "[Max Depth]";
|
|
88
|
-
if (context.seen.has(value)) switch (this.config.circular) {
|
|
89
|
-
case "error": throw new Error(`Circular reference at ${context.path.join(".")}`);
|
|
90
|
-
case "skip": return;
|
|
91
|
-
default: return "[Circular]";
|
|
92
|
-
}
|
|
93
|
-
context.seen.add(value);
|
|
94
|
-
const serializer = this.findSerializer(value);
|
|
95
|
-
if (serializer) return serializer.serializer(value, context);
|
|
96
|
-
if (Array.isArray(value)) return value.map((item, i) => this.serializeInternal(item, {
|
|
97
|
-
...context,
|
|
98
|
-
depth: context.depth + 1,
|
|
99
|
-
path: [...context.path, `[${i}]`]
|
|
100
|
-
}));
|
|
101
|
-
const result = {};
|
|
102
|
-
for (const [key, val] of Object.entries(value)) result[key] = this.serializeInternal(val, {
|
|
103
|
-
...context,
|
|
104
|
-
depth: context.depth + 1,
|
|
105
|
-
path: [...context.path, key]
|
|
106
|
-
});
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
serialize(value, config) {
|
|
110
|
-
const mergedConfig = {
|
|
111
|
-
...this.config,
|
|
112
|
-
...config
|
|
113
|
-
};
|
|
114
|
-
return this.serializeInternal(value, {
|
|
115
|
-
depth: 0,
|
|
116
|
-
maxDepth: mergedConfig.maxDepth,
|
|
117
|
-
path: [],
|
|
118
|
-
seen: /* @__PURE__ */ new WeakSet()
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
let _defaultRegistry = null;
|
|
123
|
-
function getDefaultSerializerRegistry() {
|
|
124
|
-
if (!_defaultRegistry) _defaultRegistry = new SerializerRegistry();
|
|
125
|
-
return _defaultRegistry;
|
|
126
|
-
}
|
|
127
|
-
//#endregion
|
|
128
|
-
//#region src/serializers/SerializerBridge.ts
|
|
129
|
-
/**
|
|
130
|
-
* Creates a SerializerBridge instance.
|
|
131
|
-
*/
|
|
132
|
-
function createSerializerBridge() {
|
|
133
|
-
const serializerRegistry = new SerializerRegistry();
|
|
134
|
-
return {
|
|
135
|
-
addSerializer(type, serializer, priority) {
|
|
136
|
-
serializerRegistry.add(type, serializer, priority);
|
|
137
|
-
},
|
|
138
|
-
removeSerializer(type) {
|
|
139
|
-
return serializerRegistry.remove(type);
|
|
140
|
-
},
|
|
141
|
-
getSerializerRegistry() {
|
|
142
|
-
return serializerRegistry;
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
//#endregion
|
|
147
|
-
export { SerializerRegistry as n, getDefaultSerializerRegistry as r, createSerializerBridge as t };
|
|
148
|
-
|
|
149
|
-
//# sourceMappingURL=SerializerBridge-BkpQu5c9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SerializerBridge-BkpQu5c9.js","names":[],"sources":["../../src/serializers/SerializerRegistry.ts","../../src/serializers/SerializerBridge.ts"],"sourcesContent":["import type {\n SerializerFn,\n SerializerContext,\n SerializerEntry,\n SerializerConfig,\n ISerializerRegistry\n} from '../types/index.js';\n\nconst DEFAULT_CONFIG: Required<SerializerConfig> = {\n maxDepth: 5,\n circular: 'placeholder',\n preserveUndefined: false\n};\n\nexport class SerializerRegistry implements ISerializerRegistry {\n private serializers: Map<Function, SerializerEntry> = new Map();\n private config: Required<SerializerConfig>;\n\n constructor(config: SerializerConfig = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.registerDefaults();\n }\n\n private registerDefaults(): void {\n this.add(Error, (err: Error) => ({\n name: err.name,\n message: err.message,\n stack: err.stack?.split('\\n').slice(0, 10),\n ...(err.cause ? { cause: this.serialize(err.cause) } : {})\n }), 100);\n\n this.add(Date, (date: Date) => ({\n iso: date.toISOString(),\n timestamp: date.getTime()\n }), 90);\n\n this.add(RegExp, (regex: RegExp) => ({\n pattern: regex.source,\n flags: regex.flags\n }), 90);\n\n this.add(Map, (map: Map<any, any>, ctx) => {\n const obj: Record<string, any> = {};\n map.forEach((value, key) => {\n const keyStr = typeof key === 'object' ? JSON.stringify(key) : String(key);\n obj[keyStr] = this.serializeInternal(value, {\n ...ctx,\n depth: ctx.depth + 1,\n path: [...ctx.path, keyStr]\n });\n });\n return { __type: 'Map', entries: obj };\n }, 80);\n\n this.add(Set, (set: Set<any>, ctx) => ({\n __type: 'Set',\n values: Array.from(set).map((v, i) =>\n this.serializeInternal(v, {\n ...ctx,\n depth: ctx.depth + 1,\n path: [...ctx.path, `[${i}]`]\n })\n )\n }), 80);\n\n if (typeof Buffer !== 'undefined') {\n this.add(Buffer as any, (buf: Buffer) => ({\n __type: 'Buffer',\n length: buf.length,\n preview: buf.slice(0, 50).toString('hex')\n }), 70);\n }\n }\n\n add<T>(\n type: new (...args: any[]) => T,\n serializer: SerializerFn<T>,\n priority: number = 50\n ): void {\n this.serializers.set(type, { type, serializer, priority });\n }\n\n remove<T>(type: new (...args: any[]) => T): boolean {\n return this.serializers.delete(type);\n }\n\n has<T>(type: new (...args: any[]) => T): boolean {\n return this.serializers.has(type);\n }\n\n getAll(): SerializerEntry[] {\n return Array.from(this.serializers.values())\n .sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50));\n }\n\n private findSerializer(value: any): SerializerEntry | null {\n const sorted = this.getAll();\n for (const entry of sorted) {\n if (value instanceof entry.type) {\n return entry;\n }\n }\n return null;\n }\n\n private serializeInternal(value: any, context: SerializerContext): any {\n if (value === null) return null;\n if (value === undefined) return this.config.preserveUndefined ? undefined : '[undefined]';\n if (typeof value === 'function') return `[Function: ${value.name || 'anonymous'}]`;\n if (typeof value !== 'object') return value;\n\n if (context.depth >= this.config.maxDepth) {\n return '[Max Depth]';\n }\n\n if (context.seen.has(value)) {\n switch (this.config.circular) {\n case 'error':\n throw new Error(`Circular reference at ${context.path.join('.')}`);\n case 'skip':\n return undefined;\n case 'placeholder':\n default:\n return '[Circular]';\n }\n }\n context.seen.add(value);\n\n const serializer = this.findSerializer(value);\n if (serializer) {\n return serializer.serializer(value, context);\n }\n\n if (Array.isArray(value)) {\n return value.map((item, i) =>\n this.serializeInternal(item, {\n ...context,\n depth: context.depth + 1,\n path: [...context.path, `[${i}]`]\n })\n );\n }\n\n const result: Record<string, any> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = this.serializeInternal(val, {\n ...context,\n depth: context.depth + 1,\n path: [...context.path, key]\n });\n }\n return result;\n }\n\n serialize(value: any, config?: SerializerConfig): any {\n const mergedConfig = { ...this.config, ...config };\n return this.serializeInternal(value, {\n depth: 0,\n maxDepth: mergedConfig.maxDepth,\n path: [],\n seen: new WeakSet()\n });\n }\n}\n\nlet _defaultRegistry: SerializerRegistry | null = null;\n\nexport function getDefaultSerializerRegistry(): SerializerRegistry {\n if (!_defaultRegistry) {\n _defaultRegistry = new SerializerRegistry();\n }\n return _defaultRegistry;\n}\n","/**\n * @fileoverview SerializerBridge — SerializerRegistry facade.\n * Encapsulates serializer registration, removal, and registry access.\n */\n\nimport type { SerializerFn } from '../types/index.js';\nimport { SerializerRegistry } from './index.js';\n\n/**\n * Bridge for serializer management.\n */\nexport interface SerializerBridge {\n /** Adds a serializer for a type. */\n addSerializer<T>(type: new (...args: unknown[]) => T, serializer: SerializerFn<T>, priority?: number): void;\n removeSerializer<T>(type: new (...args: unknown[]) => T): boolean;\n /** Returns the underlying registry. */\n getSerializerRegistry(): SerializerRegistry;\n}\n\n/**\n * Creates a SerializerBridge instance.\n */\nexport function createSerializerBridge(): SerializerBridge {\n const serializerRegistry = new SerializerRegistry();\n\n return {\n addSerializer<T>(type: new (...args: unknown[]) => T, serializer: SerializerFn<T>, priority?: number): void {\n serializerRegistry.add(type, serializer, priority);\n },\n\n removeSerializer<T>(type: new (...args: unknown[]) => T): boolean {\n return serializerRegistry.remove(type);\n },\n\n getSerializerRegistry(): SerializerRegistry {\n return serializerRegistry;\n }\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StyleManager-CIpd6wbO.cjs","names":["hasPreset","getSmartPreset","getAvailablePresets","THEME_PRESETS","themeRecord"],"sources":["../../src/styles/StyleManager.ts"],"sourcesContent":["/**\n * @fileoverview StyleManager — style preset and display settings management.\n * Encapsulates active preset tracking, display toggles, and the\n * module-level LEVEL_STYLES variable.\n *\n * Wired into Logger.ts in F4. Logger delegates style queries and theme\n * changes through this bridge so that the module-level LEVEL_STYLES stay\n * in sync across the module.\n */\n\nimport {\n THEME_PRESETS,\n type StylePresets,\n type StyleBuilder\n} from '../styling/index.js';\nimport { getSmartPreset, getAvailablePresets, hasPreset } from '../styling/SmartPresets.js';\nimport type { ThemeVariant, LogStyles } from '../types/index.js';\n\n// Re-export StyleBuilder for internal use by Logger\nexport { StyleBuilder } from '../styling/index.js';\n\n/**\n * Display visibility settings.\n */\nexport interface DisplaySettings {\n showTimestamp: boolean;\n showLocation: boolean;\n showBadges: boolean;\n}\n\n/**\n * Active preset state tracked by StyleManager.\n */\nexport interface PresetState {\n /** The resolved style config (LEVEL_STYLES). */\n styles: typeof THEME_PRESETS.default;\n /** The active smart-preset config (if any). */\n activePreset: unknown;\n /** Name of the active smart-preset (if any). */\n activePresetName: string | undefined;\n /** Last-applied customize() overrides. */\n customization: unknown;\n /** Display visibility settings. */\n displaySettings: DisplaySettings;\n}\n\n/**\n * Options for creating StyleManager.\n */\nexport interface IStyleManagerOptions {\n /** Initial display settings. */\n initialDisplaySettings?: Partial<DisplaySettings>;\n}\n\n/**\n * StyleManager - manages style presets and display settings.\n */\nexport interface StyleManager {\n /** Returns current display settings. */\n getDisplaySettings(): DisplaySettings;\n /** Applies a smart preset by name. Returns true if applied. */\n applyPreset(name: string): boolean;\n /** Lists all available presets. */\n getAvailablePresets(): string[];\n /** Gets the current LEVEL_STYLES. */\n getStyles(): typeof THEME_PRESETS.default;\n /** Gets the active smart-preset config. */\n getActivePreset(): unknown;\n /** Gets the active smart-preset name. */\n getActivePresetName(): string | undefined;\n /** Gets the active customization overrides. */\n getCustomization(): unknown;\n /** Stores customization overrides. */\n setCustomization(overrides: unknown): void;\n /** Resolves the effective styles for a theme variant. */\n resolveThemeStyle(theme: ThemeVariant): typeof THEME_PRESETS.default;\n /** Sets the active theme by name, updating the module-level LEVEL_STYLES. */\n setTheme(theme: ThemeVariant): boolean;\n /** Resets LEVEL_STYLES to the default preset. */\n resetStyles(): void;\n}\n\nfunction createDefaultDisplaySettings(): DisplaySettings {\n return {\n showTimestamp: true,\n showLocation: true,\n showBadges: true\n };\n}\n\n/**\n * Creates a StyleManager instance.\n */\nexport function createStyleManager(options: IStyleManagerOptions = {}): StyleManager {\n const displaySettings = createDefaultDisplaySettings();\n let activePreset: unknown;\n let activePresetName: string | undefined;\n let customization: unknown;\n\n return {\n getDisplaySettings(): DisplaySettings {\n return { ...displaySettings };\n },\n\n applyPreset(name: string): boolean {\n if (!hasPreset(name)) {\n return false;\n }\n\n const presetConfig = getSmartPreset(name);\n if (presetConfig) {\n displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;\n displaySettings.showLocation = presetConfig.location?.show ?? true;\n activePreset = presetConfig;\n activePresetName = name;\n }\n return true;\n },\n\n getAvailablePresets(): string[] {\n return getAvailablePresets();\n },\n\n getStyles(): typeof THEME_PRESETS.default {\n return LEVEL_STYLES;\n },\n\n getActivePreset(): unknown {\n return activePreset;\n },\n\n getActivePresetName(): string | undefined {\n return activePresetName;\n },\n\n getCustomization(): unknown {\n return customization;\n },\n\n setCustomization(overrides: unknown): void {\n customization = overrides;\n },\n\n resolveThemeStyle(theme: ThemeVariant): typeof THEME_PRESETS.default {\n if (theme in THEME_PRESETS) {\n const themeRecord = THEME_PRESETS as unknown as Record<string, typeof LEVEL_STYLES>;\n return themeRecord[theme] ?? THEME_PRESETS.default;\n }\n return THEME_PRESETS.default;\n },\n\n setTheme(theme: ThemeVariant): boolean {\n if (theme in THEME_PRESETS) {\n const themeRecord = THEME_PRESETS as unknown as Record<string, typeof LEVEL_STYLES>;\n const newStyles = themeRecord[theme];\n if (newStyles) {\n LEVEL_STYLES = newStyles;\n return true;\n }\n }\n return false;\n },\n\n resetStyles(): void {\n LEVEL_STYLES = THEME_PRESETS.default;\n }\n };\n}\n\n/**\n * Module-level active styles — shared across all Logger instances.\n * Exported so Logger can reference it directly.\n */\nexport let LEVEL_STYLES: typeof THEME_PRESETS.default = THEME_PRESETS.default;\n\n/**\n * Resets LEVEL_STYLES to default.\n */\nexport function resetStyles(): void {\n LEVEL_STYLES = THEME_PRESETS.default;\n}\n"],"mappings":";;;;;;;;;;;AAkFA,SAAS,+BAAgD;CACrD,OAAO;EACH,eAAe;EACf,cAAc;EACd,YAAY;CAChB;AACJ;;;;AAKA,SAAgB,mBAAmB,UAAgC,CAAC,GAAiB;CACjF,MAAM,kBAAkB,6BAA6B;CACrD,IAAI;CACJ,IAAI;CACJ,IAAI;CAEJ,OAAO;EACH,qBAAsC;GAClC,OAAO,EAAE,GAAG,gBAAgB;EAChC;EAEA,YAAY,MAAuB;GAC/B,IAAI,CAACA,gBAAAA,UAAU,IAAI,GACf,OAAO;GAGX,MAAM,eAAeC,gBAAAA,eAAe,IAAI;GACxC,IAAI,cAAc;IACd,gBAAgB,gBAAgB,aAAa,WAAW,QAAQ;IAChE,gBAAgB,eAAe,aAAa,UAAU,QAAQ;IAC9D,eAAe;IACf,mBAAmB;GACvB;GACA,OAAO;EACX;EAEA,sBAAgC;GAC5B,OAAOC,gBAAAA,oBAAoB;EAC/B;EAEA,YAA0C;GACtC,OAAO;EACX;EAEA,kBAA2B;GACvB,OAAO;EACX;EAEA,sBAA0C;GACtC,OAAO;EACX;EAEA,mBAA4B;GACxB,OAAO;EACX;EAEA,iBAAiB,WAA0B;GACvC,gBAAgB;EACpB;EAEA,kBAAkB,OAAmD;GACjE,IAAI,SAASC,gBAAAA,eAET,OAAOC,gBAAAA,cAAY,UAAUD,gBAAAA,cAAc;GAE/C,OAAOA,gBAAAA,cAAc;EACzB;EAEA,SAAS,OAA8B;GACnC,IAAI,SAASA,gBAAAA,eAAe;IAExB,MAAM,YAAYC,gBAAAA,cAAY;IAC9B,IAAI,WAAW;KACX,eAAe;KACf,OAAO;IACX;GACJ;GACA,OAAO;EACX;EAEA,cAAoB;GAChB,eAAeD,gBAAAA,cAAc;EACjC;CACJ;AACJ;;;;;AAMA,IAAW,eAA6CA,gBAAAA,cAAc"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { n as getSmartPreset, r as hasPreset, s as THEME_PRESETS, t as getAvailablePresets } from "./styling-84N8T97t.js";
|
|
2
|
-
//#region src/styles/StyleManager.ts
|
|
3
|
-
/**
|
|
4
|
-
* @fileoverview StyleManager — style preset and display settings management.
|
|
5
|
-
* Encapsulates active preset tracking, display toggles, and the
|
|
6
|
-
* module-level LEVEL_STYLES variable.
|
|
7
|
-
*
|
|
8
|
-
* Wired into Logger.ts in F4. Logger delegates style queries and theme
|
|
9
|
-
* changes through this bridge so that the module-level LEVEL_STYLES stay
|
|
10
|
-
* in sync across the module.
|
|
11
|
-
*/
|
|
12
|
-
function createDefaultDisplaySettings() {
|
|
13
|
-
return {
|
|
14
|
-
showTimestamp: true,
|
|
15
|
-
showLocation: true,
|
|
16
|
-
showBadges: true
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Creates a StyleManager instance.
|
|
21
|
-
*/
|
|
22
|
-
function createStyleManager(options = {}) {
|
|
23
|
-
const displaySettings = createDefaultDisplaySettings();
|
|
24
|
-
let activePreset;
|
|
25
|
-
let activePresetName;
|
|
26
|
-
let customization;
|
|
27
|
-
return {
|
|
28
|
-
getDisplaySettings() {
|
|
29
|
-
return { ...displaySettings };
|
|
30
|
-
},
|
|
31
|
-
applyPreset(name) {
|
|
32
|
-
if (!hasPreset(name)) return false;
|
|
33
|
-
const presetConfig = getSmartPreset(name);
|
|
34
|
-
if (presetConfig) {
|
|
35
|
-
displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;
|
|
36
|
-
displaySettings.showLocation = presetConfig.location?.show ?? true;
|
|
37
|
-
activePreset = presetConfig;
|
|
38
|
-
activePresetName = name;
|
|
39
|
-
}
|
|
40
|
-
return true;
|
|
41
|
-
},
|
|
42
|
-
getAvailablePresets() {
|
|
43
|
-
return getAvailablePresets();
|
|
44
|
-
},
|
|
45
|
-
getStyles() {
|
|
46
|
-
return LEVEL_STYLES;
|
|
47
|
-
},
|
|
48
|
-
getActivePreset() {
|
|
49
|
-
return activePreset;
|
|
50
|
-
},
|
|
51
|
-
getActivePresetName() {
|
|
52
|
-
return activePresetName;
|
|
53
|
-
},
|
|
54
|
-
getCustomization() {
|
|
55
|
-
return customization;
|
|
56
|
-
},
|
|
57
|
-
setCustomization(overrides) {
|
|
58
|
-
customization = overrides;
|
|
59
|
-
},
|
|
60
|
-
resolveThemeStyle(theme) {
|
|
61
|
-
if (theme in THEME_PRESETS) return THEME_PRESETS[theme] ?? THEME_PRESETS.default;
|
|
62
|
-
return THEME_PRESETS.default;
|
|
63
|
-
},
|
|
64
|
-
setTheme(theme) {
|
|
65
|
-
if (theme in THEME_PRESETS) {
|
|
66
|
-
const newStyles = THEME_PRESETS[theme];
|
|
67
|
-
if (newStyles) {
|
|
68
|
-
LEVEL_STYLES = newStyles;
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return false;
|
|
73
|
-
},
|
|
74
|
-
resetStyles() {
|
|
75
|
-
LEVEL_STYLES = THEME_PRESETS.default;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Module-level active styles — shared across all Logger instances.
|
|
81
|
-
* Exported so Logger can reference it directly.
|
|
82
|
-
*/
|
|
83
|
-
let LEVEL_STYLES = THEME_PRESETS.default;
|
|
84
|
-
//#endregion
|
|
85
|
-
export { createStyleManager as t };
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=StyleManager-LCvVlVdx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StyleManager-LCvVlVdx.js","names":["themeRecord"],"sources":["../../src/styles/StyleManager.ts"],"sourcesContent":["/**\n * @fileoverview StyleManager — style preset and display settings management.\n * Encapsulates active preset tracking, display toggles, and the\n * module-level LEVEL_STYLES variable.\n *\n * Wired into Logger.ts in F4. Logger delegates style queries and theme\n * changes through this bridge so that the module-level LEVEL_STYLES stay\n * in sync across the module.\n */\n\nimport {\n THEME_PRESETS,\n type StylePresets,\n type StyleBuilder\n} from '../styling/index.js';\nimport { getSmartPreset, getAvailablePresets, hasPreset } from '../styling/SmartPresets.js';\nimport type { ThemeVariant, LogStyles } from '../types/index.js';\n\n// Re-export StyleBuilder for internal use by Logger\nexport { StyleBuilder } from '../styling/index.js';\n\n/**\n * Display visibility settings.\n */\nexport interface DisplaySettings {\n showTimestamp: boolean;\n showLocation: boolean;\n showBadges: boolean;\n}\n\n/**\n * Active preset state tracked by StyleManager.\n */\nexport interface PresetState {\n /** The resolved style config (LEVEL_STYLES). */\n styles: typeof THEME_PRESETS.default;\n /** The active smart-preset config (if any). */\n activePreset: unknown;\n /** Name of the active smart-preset (if any). */\n activePresetName: string | undefined;\n /** Last-applied customize() overrides. */\n customization: unknown;\n /** Display visibility settings. */\n displaySettings: DisplaySettings;\n}\n\n/**\n * Options for creating StyleManager.\n */\nexport interface IStyleManagerOptions {\n /** Initial display settings. */\n initialDisplaySettings?: Partial<DisplaySettings>;\n}\n\n/**\n * StyleManager - manages style presets and display settings.\n */\nexport interface StyleManager {\n /** Returns current display settings. */\n getDisplaySettings(): DisplaySettings;\n /** Applies a smart preset by name. Returns true if applied. */\n applyPreset(name: string): boolean;\n /** Lists all available presets. */\n getAvailablePresets(): string[];\n /** Gets the current LEVEL_STYLES. */\n getStyles(): typeof THEME_PRESETS.default;\n /** Gets the active smart-preset config. */\n getActivePreset(): unknown;\n /** Gets the active smart-preset name. */\n getActivePresetName(): string | undefined;\n /** Gets the active customization overrides. */\n getCustomization(): unknown;\n /** Stores customization overrides. */\n setCustomization(overrides: unknown): void;\n /** Resolves the effective styles for a theme variant. */\n resolveThemeStyle(theme: ThemeVariant): typeof THEME_PRESETS.default;\n /** Sets the active theme by name, updating the module-level LEVEL_STYLES. */\n setTheme(theme: ThemeVariant): boolean;\n /** Resets LEVEL_STYLES to the default preset. */\n resetStyles(): void;\n}\n\nfunction createDefaultDisplaySettings(): DisplaySettings {\n return {\n showTimestamp: true,\n showLocation: true,\n showBadges: true\n };\n}\n\n/**\n * Creates a StyleManager instance.\n */\nexport function createStyleManager(options: IStyleManagerOptions = {}): StyleManager {\n const displaySettings = createDefaultDisplaySettings();\n let activePreset: unknown;\n let activePresetName: string | undefined;\n let customization: unknown;\n\n return {\n getDisplaySettings(): DisplaySettings {\n return { ...displaySettings };\n },\n\n applyPreset(name: string): boolean {\n if (!hasPreset(name)) {\n return false;\n }\n\n const presetConfig = getSmartPreset(name);\n if (presetConfig) {\n displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;\n displaySettings.showLocation = presetConfig.location?.show ?? true;\n activePreset = presetConfig;\n activePresetName = name;\n }\n return true;\n },\n\n getAvailablePresets(): string[] {\n return getAvailablePresets();\n },\n\n getStyles(): typeof THEME_PRESETS.default {\n return LEVEL_STYLES;\n },\n\n getActivePreset(): unknown {\n return activePreset;\n },\n\n getActivePresetName(): string | undefined {\n return activePresetName;\n },\n\n getCustomization(): unknown {\n return customization;\n },\n\n setCustomization(overrides: unknown): void {\n customization = overrides;\n },\n\n resolveThemeStyle(theme: ThemeVariant): typeof THEME_PRESETS.default {\n if (theme in THEME_PRESETS) {\n const themeRecord = THEME_PRESETS as unknown as Record<string, typeof LEVEL_STYLES>;\n return themeRecord[theme] ?? THEME_PRESETS.default;\n }\n return THEME_PRESETS.default;\n },\n\n setTheme(theme: ThemeVariant): boolean {\n if (theme in THEME_PRESETS) {\n const themeRecord = THEME_PRESETS as unknown as Record<string, typeof LEVEL_STYLES>;\n const newStyles = themeRecord[theme];\n if (newStyles) {\n LEVEL_STYLES = newStyles;\n return true;\n }\n }\n return false;\n },\n\n resetStyles(): void {\n LEVEL_STYLES = THEME_PRESETS.default;\n }\n };\n}\n\n/**\n * Module-level active styles — shared across all Logger instances.\n * Exported so Logger can reference it directly.\n */\nexport let LEVEL_STYLES: typeof THEME_PRESETS.default = THEME_PRESETS.default;\n\n/**\n * Resets LEVEL_STYLES to default.\n */\nexport function resetStyles(): void {\n LEVEL_STYLES = THEME_PRESETS.default;\n}\n"],"mappings":";;;;;;;;;;;AAkFA,SAAS,+BAAgD;CACrD,OAAO;EACH,eAAe;EACf,cAAc;EACd,YAAY;CAChB;AACJ;;;;AAKA,SAAgB,mBAAmB,UAAgC,CAAC,GAAiB;CACjF,MAAM,kBAAkB,6BAA6B;CACrD,IAAI;CACJ,IAAI;CACJ,IAAI;CAEJ,OAAO;EACH,qBAAsC;GAClC,OAAO,EAAE,GAAG,gBAAgB;EAChC;EAEA,YAAY,MAAuB;GAC/B,IAAI,CAAC,UAAU,IAAI,GACf,OAAO;GAGX,MAAM,eAAe,eAAe,IAAI;GACxC,IAAI,cAAc;IACd,gBAAgB,gBAAgB,aAAa,WAAW,QAAQ;IAChE,gBAAgB,eAAe,aAAa,UAAU,QAAQ;IAC9D,eAAe;IACf,mBAAmB;GACvB;GACA,OAAO;EACX;EAEA,sBAAgC;GAC5B,OAAO,oBAAoB;EAC/B;EAEA,YAA0C;GACtC,OAAO;EACX;EAEA,kBAA2B;GACvB,OAAO;EACX;EAEA,sBAA0C;GACtC,OAAO;EACX;EAEA,mBAA4B;GACxB,OAAO;EACX;EAEA,iBAAiB,WAA0B;GACvC,gBAAgB;EACpB;EAEA,kBAAkB,OAAmD;GACjE,IAAI,SAAS,eAET,OAAOA,cAAY,UAAU,cAAc;GAE/C,OAAO,cAAc;EACzB;EAEA,SAAS,OAA8B;GACnC,IAAI,SAAS,eAAe;IAExB,MAAM,YAAYA,cAAY;IAC9B,IAAI,WAAW;KACX,eAAe;KACf,OAAO;IACX;GACJ;GACA,OAAO;EACX;EAEA,cAAoB;GAChB,eAAe,cAAc;EACjC;CACJ;AACJ;;;;;AAMA,IAAW,eAA6C,cAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-Dzz7agGa.cjs","names":[],"sources":["../../src/types/core.ts"],"sourcesContent":["/**\n * @fileoverview Definiciones de tipos principales para Better Logger\n */\n\n/**\n * Niveles de log soportados en orden jerárquico\n * (trace < debug < info < warn < error < critical)\n *\n * @constant {Object} LOG_LEVELS\n * @property {number} trace - Nivel -1: Trazas muy verbosas (alineado con OTel TRACE severity 1-4)\n * @property {number} debug - Nivel 0: Información de depuración detallada\n * @property {number} info - Nivel 1: Mensajes informativos generales\n * @property {number} warn - Nivel 2: Advertencias que no detienen la ejecución\n * @property {number} error - Nivel 3: Errores que pueden afectar funcionalidad\n * @property {number} critical - Nivel 4: Errores críticos que requieren atención inmediata\n *\n * @example\n * // Verificar si un nivel debe mostrarse\n * if (LOG_LEVELS[currentLevel] >= LOG_LEVELS.warn) {\n * // Mostrar solo warn, error y critical\n * }\n */\nexport const LOG_LEVELS = {\n trace: -1,\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n critical: 4,\n} as const;\n\n/**\n * Tipo de nivel de log derivado de las claves de LOG_LEVELS\n * @typedef {'trace' | 'debug' | 'info' | 'warn' | 'error' | 'critical'} LogLevel\n */\nexport type LogLevel = keyof typeof LOG_LEVELS;\n\n/**\n * Special \"level\" tag used by `success()` — maps to OTel INFO severity.\n * Exists outside the standard LogLevel union so internal level comparisons\n * (trace < debug < info < warn < error < critical) are not perturbed.\n */\nexport const SUCCESS_LEVEL = 'success' as const;\n\n/**\n * Tags accepted by `log()` family and visual methods (success() emits at\n * INFO severity but uses success styling). Useful for transport layers that\n * need to distinguish \"success\" from generic info logs.\n */\nexport type LogTag = LogLevel | typeof SUCCESS_LEVEL;\n\n/**\n * Tipo de nivel de verbosidad para filtrar logs\n * @typedef {LogLevel | 'silent'} Verbosity\n * @description 'silent' desactiva completamente todos los logs\n */\nexport type Verbosity = LogLevel | 'silent';\n\n/**\n * Variantes de tema para diferentes estilos visuales\n * @typedef {'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk'} ThemeVariant\n * \n * @description\n * - default: Tema adaptativo automático (claro/oscuro)\n * - dark: Tema oscuro con colores vibrantes\n * - light: Tema claro con colores suaves\n * - neon: Colores neón brillantes con efectos de resplandor\n * - minimal: Diseño minimalista y limpio\n * - cyberpunk: Estilo futurista con neón y efectos\n */\nexport type ThemeVariant = 'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk';\n\n/**\n * Detección de tema de DevTools del navegador\n * @typedef {'light' | 'dark'} DevToolsTheme\n */\nexport type DevToolsTheme = 'light' | 'dark';\n\n/**\n * Tipos de banner para diferentes enfoques visuales\n * @typedef {'simple' | 'ascii' | 'unicode' | 'svg' | 'animated'} BannerType\n * \n * @description\n * - simple: Texto simple sin decoración\n * - ascii: Arte ASCII tradicional\n * - unicode: Caracteres Unicode decorativos\n * - svg: Gráfico SVG embebido\n * - animated: Banner con animación CSS\n */\nexport type BannerType = 'simple' | 'ascii' | 'unicode' | 'svg' | 'animated';\n\n/**\n * Formatos de exportación para datos de log\n * @typedef {'json' | 'csv' | 'markdown' | 'plain' | 'html'} ExportFormat\n *\n * @description\n * - json: Formato JSON estructurado\n * - csv: Valores separados por comas para Excel/Sheets\n * - markdown: Formato Markdown para documentación\n * - plain: Texto plano sin formato\n * - html: HTML con estilos para visualización web\n */\nexport type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';\n\n/**\n * Formatos de salida para diferentes entornos\n * @typedef {'auto' | 'plain' | 'ansi' | 'build' | 'ci'} OutputFormat\n *\n * @description\n * - auto: Detección automática basada en entorno (recomendado)\n * - plain: Texto plano sin colores (máxima compatibilidad)\n * - ansi: Colores ANSI para terminales modernos\n * - build: Formato optimizado para builds (Next.js, webpack, etc.)\n * - ci: Formato optimizado para CI/CD (sin emojis, texto simple)\n */\nexport type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';\n\n/**\n * Output modes for controlling where logs are written\n * @typedef {'console' | 'silent' | 'custom'} OutputMode\n *\n * @description\n * - console: Standard console.log output (default)\n * - silent: No output at all\n * - custom: Use custom OutputWriter for advanced scenarios\n */\nexport type OutputMode = 'console' | 'silent' | 'custom';\n\n/**\n * Custom output writer interface for redirecting log output\n *\n * @interface OutputWriter\n *\n * @description\n * Allows redirecting log output to custom destinations like:\n * - DraftLog for CLI spinners with concurrent logging\n * - Buffers for collecting logs during operations\n * - Custom streams or transports\n *\n * @example\n * class BufferWriter implements OutputWriter {\n * private buffer: string[] = [];\n *\n * write(message: string, level: LogLevel, styles: string[]): void {\n * this.buffer.push(message);\n * }\n *\n * flush(): void {\n * this.buffer.forEach(msg => console.log(msg));\n * this.buffer = [];\n * }\n * }\n */\nexport interface OutputWriter {\n write(message: string, level: LogLevel, styles: string[]): void;\n flush?(): void;\n}\n\n/**\n * Interfaz de configuración para instancias del logger\n * \n * @interface LoggerConfig\n * \n * @example\n * const config: LoggerConfig = {\n * globalPrefix: 'MiApp',\n * verbosity: 'info',\n * enableColors: true,\n * enableTimestamps: true,\n * enableStackTrace: false,\n * theme: 'cyberpunk',\n * bannerType: 'animated',\n * bufferSize: 500,\n * autoDetectTheme: true\n * };\n */\n/**\n * Minimal OTel resource shape — duplicated here to avoid a circular\n * import with `./transports.js`. The canonical `ILogResource` lives in\n * `./transports.js`; both shapes stay in sync via the public contract\n * (service.name + optional version + optional environment).\n */\nexport interface ILogResourceRef {\n 'service.name': string;\n 'service.version'?: string;\n 'deployment.environment'?: string;\n [key: string]: string | undefined;\n}\n\nexport interface LoggerConfig {\n globalPrefix?: string;\n verbosity: Verbosity;\n enableColors: boolean;\n enableTimestamps: boolean;\n enableStackTrace: boolean;\n theme?: ThemeVariant;\n bannerType?: BannerType;\n bufferSize?: number;\n autoDetectTheme?: boolean;\n outputFormat?: OutputFormat;\n /** Output mode: 'console' (default), 'silent', or 'custom'*/\n outputMode?: OutputMode;\n /** Custom writer when outputMode is 'custom'*/\n outputWriter?: OutputWriter;\n /** CLI verbosity level for controlling primitive output*/\n cliLevel?: CLILogLevel;\n /**\n * Default OTel resource attached to every record that doesn't override it.\n * Set once per process (service.name, service.version, deployment.environment).\n */\n resource?: Partial<ILogResourceRef>;\n}\n\n/**\n * Información parseada del stack trace\n * \n * @interface StackInfo\n * @description Contiene la ubicación exacta donde se originó el log\n */\nexport interface StackInfo {\n file: string;\n line: number;\n column: number;\n function?: string;\n}\n\n/**\n * Entrada de temporizador para medición de rendimiento\n * \n * @interface TimerEntry\n * @description Usado internamente para rastrear temporizadores activos\n */\nexport interface TimerEntry {\n label: string;\n startTime: number;\n}\n\n/**\n * Opciones para estilizar componentes\n * \n * @interface StyleOptions\n * @description Configuración de dimensiones y espaciado para elementos visuales\n */\nexport interface StyleOptions {\n width?: number;\n height?: number;\n padding?: string;\n}\n\n/**\n * Configuración de colores adaptativos para temas claro/oscuro\n * \n * @interface AdaptiveColors\n * @description Define colores que se ajustan automáticamente al tema del navegador\n */\nexport interface AdaptiveColors {\n light: string;\n dark: string;\n}\n\n/**\n * Configuración de espaciado para elementos del log\n * @typedef {'compact' | 'normal' | 'spacious'} SpacingType\n * \n * @description\n * - compact: Espaciado mínimo para más densidad\n * - normal: Espaciado estándar balanceado\n * - spacious: Espaciado amplio para mejor legibilidad\n */\nexport type SpacingType = 'compact' | 'normal' | 'spacious';\n\n/**\n * Configuración de layout para la estructura del log\n * \n * @interface LogLayout\n * @description Define cómo se organizan visualmente los elementos del log\n */\nexport interface LogLayout {\n spacing: SpacingType;\n innerPadding?: string;\n outerMargin?: string;\n separator?: string;\n}\n\n/**\n * Configuración para partes individuales del log\n * \n * @interface LogPartConfig\n * @description Permite personalizar cada elemento del log por separado\n * \n * @example\n * const timestampConfig: LogPartConfig = {\n * show: true,\n * color: '#888',\n * font: 'Monaco',\n * size: '11px'\n * };\n */\nexport interface LogPartConfig {\n show?: boolean;\n style?: string;\n font?: string;\n size?: string;\n color?: string; // Automatically adaptive by default\n background?: string;\n padding?: string;\n margin?: string;\n border?: string;\n shadow?: string;\n uppercase?: boolean;\n}\n\n/**\n * Configuración completa de estilos del log\n * \n * @interface LogStyles\n * @description Agrupa todas las opciones de estilo en una sola configuración\n */\nexport interface LogStyles {\n layout?: LogLayout;\n timestamp?: LogPartConfig;\n level?: LogPartConfig;\n prefix?: LogPartConfig;\n message?: LogPartConfig;\n location?: LogPartConfig;\n backdrop?: string;\n transparency?: number;\n}\n\nexport interface TimerResult {\n label: string;\n duration: number;\n startTime: number;\n endTime: number;\n}\n\nexport interface IScopedLogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n success(...args: any[]): void;\n critical(...args: any[]): void;\n trace(...args: any[]): void;\n\n badges(badges: string[]): this;\n badge(badge: string): this;\n clearBadges(): this;\n\n time(label: string): void;\n timeEnd(label: string): number | undefined;\n\n style(presetName: string): this;\n}\n\nexport interface IAPILogger extends IScopedLogger {\n slow(message: string, duration?: number): void;\n rateLimit(message: string): void;\n auth(message: string): void;\n deprecated(message: string): void;\n}\n\nexport interface IComponentLogger extends IScopedLogger {\n lifecycle(event: string, message?: string): void;\n stateChange(from: string, to: string, data?: any): void;\n propsChange(changes: Record<string, any>): void;\n}\n\nexport interface Bindings {\n scope?: string;\n badges?: string[];\n type?: 'scope' | 'api' | 'component';\n context?: string[];\n}\n\nexport type BadgeStyle = 'brackets' | 'rounded' | 'plain' | 'unicode' | 'pill';\n\nexport type TimestampFormat = 'iso' | 'time' | 'timeMs' | 'relative' | 'elapsed' | 'date' | 'custom';\n\nexport type ColumnAlign = 'left' | 'right' | 'center';\n\nexport interface ColumnConfig {\n content: string;\n width?: number;\n align?: ColumnAlign;\n color?: string;\n}\n\nexport interface LogOptions {\n rightAlign?: string;\n columns?: ColumnConfig[];\n maxWidth?: number;\n keyValue?: boolean;\n badgeStyle?: BadgeStyle;\n timestampFormat?: TimestampFormat;\n}\n\n// ===== CLI PRIMITIVES (v5.0) =====\n\n/**\n * CLI verbosity levels for controlling primitive output\n */\nexport type CLILogLevel = 'silent' | 'quiet' | 'normal' | 'verbose' | 'debug';\n\n/**\n * Handle returned by logger.spinner() for controlling spinner lifecycle\n */\nexport interface ISpinnerHandle {\n /** Start the spinner animation */\n start(): void;\n /** Stop the spinner without a status message */\n stop(): void;\n /** Stop the spinner with a success message */\n succeed(msg?: string): void;\n /** Stop the spinner with a failure message */\n fail(msg?: string): void;\n /** Update the spinner text while running */\n text(msg: string): void;\n}\n\n/**\n * Options for logger.box() output\n */\nexport interface IBoxOptions {\n /** Title displayed in the top border */\n title?: string;\n /** Color of the border (hex, CSS name, or ANSI name) */\n borderColor?: string;\n /** Border character style */\n borderStyle?: 'single' | 'double' | 'rounded' | 'bold';\n /** Inner padding lines (default: 0) */\n padding?: number;\n}\n\n/**\n * Options for logger.cliTable() output\n */\nexport interface ITableOptions {\n /** Column names to display (overrides auto-detection) */\n columns?: string[];\n /** Header labels (defaults to column names) */\n head?: string[];\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,aAAa;CACtB,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,UAAU;AACd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-PoT7RrTK.js","names":[],"sources":["../../src/types/core.ts"],"sourcesContent":["/**\n * @fileoverview Definiciones de tipos principales para Better Logger\n */\n\n/**\n * Niveles de log soportados en orden jerárquico\n * (trace < debug < info < warn < error < critical)\n *\n * @constant {Object} LOG_LEVELS\n * @property {number} trace - Nivel -1: Trazas muy verbosas (alineado con OTel TRACE severity 1-4)\n * @property {number} debug - Nivel 0: Información de depuración detallada\n * @property {number} info - Nivel 1: Mensajes informativos generales\n * @property {number} warn - Nivel 2: Advertencias que no detienen la ejecución\n * @property {number} error - Nivel 3: Errores que pueden afectar funcionalidad\n * @property {number} critical - Nivel 4: Errores críticos que requieren atención inmediata\n *\n * @example\n * // Verificar si un nivel debe mostrarse\n * if (LOG_LEVELS[currentLevel] >= LOG_LEVELS.warn) {\n * // Mostrar solo warn, error y critical\n * }\n */\nexport const LOG_LEVELS = {\n trace: -1,\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n critical: 4,\n} as const;\n\n/**\n * Tipo de nivel de log derivado de las claves de LOG_LEVELS\n * @typedef {'trace' | 'debug' | 'info' | 'warn' | 'error' | 'critical'} LogLevel\n */\nexport type LogLevel = keyof typeof LOG_LEVELS;\n\n/**\n * Special \"level\" tag used by `success()` — maps to OTel INFO severity.\n * Exists outside the standard LogLevel union so internal level comparisons\n * (trace < debug < info < warn < error < critical) are not perturbed.\n */\nexport const SUCCESS_LEVEL = 'success' as const;\n\n/**\n * Tags accepted by `log()` family and visual methods (success() emits at\n * INFO severity but uses success styling). Useful for transport layers that\n * need to distinguish \"success\" from generic info logs.\n */\nexport type LogTag = LogLevel | typeof SUCCESS_LEVEL;\n\n/**\n * Tipo de nivel de verbosidad para filtrar logs\n * @typedef {LogLevel | 'silent'} Verbosity\n * @description 'silent' desactiva completamente todos los logs\n */\nexport type Verbosity = LogLevel | 'silent';\n\n/**\n * Variantes de tema para diferentes estilos visuales\n * @typedef {'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk'} ThemeVariant\n * \n * @description\n * - default: Tema adaptativo automático (claro/oscuro)\n * - dark: Tema oscuro con colores vibrantes\n * - light: Tema claro con colores suaves\n * - neon: Colores neón brillantes con efectos de resplandor\n * - minimal: Diseño minimalista y limpio\n * - cyberpunk: Estilo futurista con neón y efectos\n */\nexport type ThemeVariant = 'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk';\n\n/**\n * Detección de tema de DevTools del navegador\n * @typedef {'light' | 'dark'} DevToolsTheme\n */\nexport type DevToolsTheme = 'light' | 'dark';\n\n/**\n * Tipos de banner para diferentes enfoques visuales\n * @typedef {'simple' | 'ascii' | 'unicode' | 'svg' | 'animated'} BannerType\n * \n * @description\n * - simple: Texto simple sin decoración\n * - ascii: Arte ASCII tradicional\n * - unicode: Caracteres Unicode decorativos\n * - svg: Gráfico SVG embebido\n * - animated: Banner con animación CSS\n */\nexport type BannerType = 'simple' | 'ascii' | 'unicode' | 'svg' | 'animated';\n\n/**\n * Formatos de exportación para datos de log\n * @typedef {'json' | 'csv' | 'markdown' | 'plain' | 'html'} ExportFormat\n *\n * @description\n * - json: Formato JSON estructurado\n * - csv: Valores separados por comas para Excel/Sheets\n * - markdown: Formato Markdown para documentación\n * - plain: Texto plano sin formato\n * - html: HTML con estilos para visualización web\n */\nexport type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';\n\n/**\n * Formatos de salida para diferentes entornos\n * @typedef {'auto' | 'plain' | 'ansi' | 'build' | 'ci'} OutputFormat\n *\n * @description\n * - auto: Detección automática basada en entorno (recomendado)\n * - plain: Texto plano sin colores (máxima compatibilidad)\n * - ansi: Colores ANSI para terminales modernos\n * - build: Formato optimizado para builds (Next.js, webpack, etc.)\n * - ci: Formato optimizado para CI/CD (sin emojis, texto simple)\n */\nexport type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';\n\n/**\n * Output modes for controlling where logs are written\n * @typedef {'console' | 'silent' | 'custom'} OutputMode\n *\n * @description\n * - console: Standard console.log output (default)\n * - silent: No output at all\n * - custom: Use custom OutputWriter for advanced scenarios\n */\nexport type OutputMode = 'console' | 'silent' | 'custom';\n\n/**\n * Custom output writer interface for redirecting log output\n *\n * @interface OutputWriter\n *\n * @description\n * Allows redirecting log output to custom destinations like:\n * - DraftLog for CLI spinners with concurrent logging\n * - Buffers for collecting logs during operations\n * - Custom streams or transports\n *\n * @example\n * class BufferWriter implements OutputWriter {\n * private buffer: string[] = [];\n *\n * write(message: string, level: LogLevel, styles: string[]): void {\n * this.buffer.push(message);\n * }\n *\n * flush(): void {\n * this.buffer.forEach(msg => console.log(msg));\n * this.buffer = [];\n * }\n * }\n */\nexport interface OutputWriter {\n write(message: string, level: LogLevel, styles: string[]): void;\n flush?(): void;\n}\n\n/**\n * Interfaz de configuración para instancias del logger\n * \n * @interface LoggerConfig\n * \n * @example\n * const config: LoggerConfig = {\n * globalPrefix: 'MiApp',\n * verbosity: 'info',\n * enableColors: true,\n * enableTimestamps: true,\n * enableStackTrace: false,\n * theme: 'cyberpunk',\n * bannerType: 'animated',\n * bufferSize: 500,\n * autoDetectTheme: true\n * };\n */\n/**\n * Minimal OTel resource shape — duplicated here to avoid a circular\n * import with `./transports.js`. The canonical `ILogResource` lives in\n * `./transports.js`; both shapes stay in sync via the public contract\n * (service.name + optional version + optional environment).\n */\nexport interface ILogResourceRef {\n 'service.name': string;\n 'service.version'?: string;\n 'deployment.environment'?: string;\n [key: string]: string | undefined;\n}\n\nexport interface LoggerConfig {\n globalPrefix?: string;\n verbosity: Verbosity;\n enableColors: boolean;\n enableTimestamps: boolean;\n enableStackTrace: boolean;\n theme?: ThemeVariant;\n bannerType?: BannerType;\n bufferSize?: number;\n autoDetectTheme?: boolean;\n outputFormat?: OutputFormat;\n /** Output mode: 'console' (default), 'silent', or 'custom'*/\n outputMode?: OutputMode;\n /** Custom writer when outputMode is 'custom'*/\n outputWriter?: OutputWriter;\n /** CLI verbosity level for controlling primitive output*/\n cliLevel?: CLILogLevel;\n /**\n * Default OTel resource attached to every record that doesn't override it.\n * Set once per process (service.name, service.version, deployment.environment).\n */\n resource?: Partial<ILogResourceRef>;\n}\n\n/**\n * Información parseada del stack trace\n * \n * @interface StackInfo\n * @description Contiene la ubicación exacta donde se originó el log\n */\nexport interface StackInfo {\n file: string;\n line: number;\n column: number;\n function?: string;\n}\n\n/**\n * Entrada de temporizador para medición de rendimiento\n * \n * @interface TimerEntry\n * @description Usado internamente para rastrear temporizadores activos\n */\nexport interface TimerEntry {\n label: string;\n startTime: number;\n}\n\n/**\n * Opciones para estilizar componentes\n * \n * @interface StyleOptions\n * @description Configuración de dimensiones y espaciado para elementos visuales\n */\nexport interface StyleOptions {\n width?: number;\n height?: number;\n padding?: string;\n}\n\n/**\n * Configuración de colores adaptativos para temas claro/oscuro\n * \n * @interface AdaptiveColors\n * @description Define colores que se ajustan automáticamente al tema del navegador\n */\nexport interface AdaptiveColors {\n light: string;\n dark: string;\n}\n\n/**\n * Configuración de espaciado para elementos del log\n * @typedef {'compact' | 'normal' | 'spacious'} SpacingType\n * \n * @description\n * - compact: Espaciado mínimo para más densidad\n * - normal: Espaciado estándar balanceado\n * - spacious: Espaciado amplio para mejor legibilidad\n */\nexport type SpacingType = 'compact' | 'normal' | 'spacious';\n\n/**\n * Configuración de layout para la estructura del log\n * \n * @interface LogLayout\n * @description Define cómo se organizan visualmente los elementos del log\n */\nexport interface LogLayout {\n spacing: SpacingType;\n innerPadding?: string;\n outerMargin?: string;\n separator?: string;\n}\n\n/**\n * Configuración para partes individuales del log\n * \n * @interface LogPartConfig\n * @description Permite personalizar cada elemento del log por separado\n * \n * @example\n * const timestampConfig: LogPartConfig = {\n * show: true,\n * color: '#888',\n * font: 'Monaco',\n * size: '11px'\n * };\n */\nexport interface LogPartConfig {\n show?: boolean;\n style?: string;\n font?: string;\n size?: string;\n color?: string; // Automatically adaptive by default\n background?: string;\n padding?: string;\n margin?: string;\n border?: string;\n shadow?: string;\n uppercase?: boolean;\n}\n\n/**\n * Configuración completa de estilos del log\n * \n * @interface LogStyles\n * @description Agrupa todas las opciones de estilo en una sola configuración\n */\nexport interface LogStyles {\n layout?: LogLayout;\n timestamp?: LogPartConfig;\n level?: LogPartConfig;\n prefix?: LogPartConfig;\n message?: LogPartConfig;\n location?: LogPartConfig;\n backdrop?: string;\n transparency?: number;\n}\n\nexport interface TimerResult {\n label: string;\n duration: number;\n startTime: number;\n endTime: number;\n}\n\nexport interface IScopedLogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n success(...args: any[]): void;\n critical(...args: any[]): void;\n trace(...args: any[]): void;\n\n badges(badges: string[]): this;\n badge(badge: string): this;\n clearBadges(): this;\n\n time(label: string): void;\n timeEnd(label: string): number | undefined;\n\n style(presetName: string): this;\n}\n\nexport interface IAPILogger extends IScopedLogger {\n slow(message: string, duration?: number): void;\n rateLimit(message: string): void;\n auth(message: string): void;\n deprecated(message: string): void;\n}\n\nexport interface IComponentLogger extends IScopedLogger {\n lifecycle(event: string, message?: string): void;\n stateChange(from: string, to: string, data?: any): void;\n propsChange(changes: Record<string, any>): void;\n}\n\nexport interface Bindings {\n scope?: string;\n badges?: string[];\n type?: 'scope' | 'api' | 'component';\n context?: string[];\n}\n\nexport type BadgeStyle = 'brackets' | 'rounded' | 'plain' | 'unicode' | 'pill';\n\nexport type TimestampFormat = 'iso' | 'time' | 'timeMs' | 'relative' | 'elapsed' | 'date' | 'custom';\n\nexport type ColumnAlign = 'left' | 'right' | 'center';\n\nexport interface ColumnConfig {\n content: string;\n width?: number;\n align?: ColumnAlign;\n color?: string;\n}\n\nexport interface LogOptions {\n rightAlign?: string;\n columns?: ColumnConfig[];\n maxWidth?: number;\n keyValue?: boolean;\n badgeStyle?: BadgeStyle;\n timestampFormat?: TimestampFormat;\n}\n\n// ===== CLI PRIMITIVES (v5.0) =====\n\n/**\n * CLI verbosity levels for controlling primitive output\n */\nexport type CLILogLevel = 'silent' | 'quiet' | 'normal' | 'verbose' | 'debug';\n\n/**\n * Handle returned by logger.spinner() for controlling spinner lifecycle\n */\nexport interface ISpinnerHandle {\n /** Start the spinner animation */\n start(): void;\n /** Stop the spinner without a status message */\n stop(): void;\n /** Stop the spinner with a success message */\n succeed(msg?: string): void;\n /** Stop the spinner with a failure message */\n fail(msg?: string): void;\n /** Update the spinner text while running */\n text(msg: string): void;\n}\n\n/**\n * Options for logger.box() output\n */\nexport interface IBoxOptions {\n /** Title displayed in the top border */\n title?: string;\n /** Color of the border (hex, CSS name, or ANSI name) */\n borderColor?: string;\n /** Border character style */\n borderStyle?: 'single' | 'double' | 'rounded' | 'bold';\n /** Inner padding lines (default: 0) */\n padding?: number;\n}\n\n/**\n * Options for logger.cliTable() output\n */\nexport interface ITableOptions {\n /** Column names to display (overrides auto-detection) */\n columns?: string[];\n /** Header labels (defaults to column names) */\n head?: string[];\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,aAAa;CACtB,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,UAAU;AACd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment-detector-CI3TrWK_.js","names":[],"sources":["../../src/utils/environment-detector.ts"],"sourcesContent":["/**\n * Environment Detector - Robust environment detection for logger\n * Detects browser, terminal, server, and other runtime environments\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Checks if running in Node.js environment\n */\nexport const isNode = typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node;\n\n/**\n * Checks if running in browser environment\n */\nexport const isBrowser = typeof window !== 'undefined' &&\n typeof document !== 'undefined';\n\n/**\n * Main environment detection function\n */\nexport function getEnvironment(): Environment {\n // Check for Deno first\n if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n return 'deno';\n }\n\n // Check for WebWorker\n if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n return 'webworker';\n }\n\n // Check for Node.js (server environment)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // Determine if it's running in a terminal or as a server\n if (isRunningInTerminal()) {\n return 'terminal';\n }\n return 'server';\n }\n\n // Check for browser\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'browser';\n }\n\n return 'unknown';\n}\n\n/**\n * Check if running in an interactive terminal\n */\nexport function isRunningInTerminal(): boolean {\n // Check for common terminal indicators\n if (typeof process === 'undefined') return false;\n\n const isTTY = process.stdout && process.stdout.isTTY;\n const hasTerminalEnv = process.env && (\n process.env.TERM ||\n process.env.TERM_PROGRAM ||\n process.env.SSH_TTY ||\n process.env.TERM_SESSION_ID\n );\n\n // Check if we're running in common terminal programs\n const terminalPrograms = [\n 'vscode',\n 'hyper',\n 'iterm',\n 'terminal',\n 'alacritty',\n 'kitty',\n 'gnome-terminal',\n 'konsole',\n 'xterm',\n 'tmux',\n 'screen'\n ];\n\n const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n process.env.TERM?.toLowerCase().includes(program)\n );\n\n return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Check if environment supports ANSI colors\n */\nexport function supportsANSI(): boolean {\n const env = getEnvironment();\n\n if (env === 'browser') return false;\n if (env === 'terminal') return true;\n if (env === 'server') return checkServerANSISupport();\n\n return false;\n}\n\n/**\n * Check if server environment supports ANSI colors\n */\nfunction checkServerANSISupport(): boolean {\n if (typeof process === 'undefined') return false;\n\n // Check common environment variables that indicate ANSI support\n const supportsANSI = process.env && (\n process.env.COLORTERM ||\n process.env.FORCE_COLOR ||\n (process.env.TERM && process.env.TERM !== 'dumb') ||\n process.env.TERM_PROGRAM\n );\n\n return Boolean(supportsANSI);\n}\n\n/**\n * Get environment-specific color capability\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n const env = getEnvironment();\n\n if (env === 'browser') {\n return 'full'; // CSS colors\n }\n\n if (!supportsANSI()) {\n return 'none';\n }\n\n // Check for 256-color or truecolor support\n if (typeof process !== 'undefined' && process.env) {\n const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n if (hasTrueColor || has256Colors) {\n return 'full';\n }\n }\n\n return 'basic'; // Basic 16 colors\n}\n\n/**\n * Get terminal width in columns\n */\nexport function getTerminalWidth(): number {\n if (typeof process !== 'undefined' && process.stdout?.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\n\n/**\n * Get terminal height in rows\n */\nexport function getTerminalHeight(): number {\n if (typeof process !== 'undefined' && process.stdout?.rows) {\n return process.stdout.rows;\n }\n return 24;\n}\n\n/**\n * Environment information for debugging\n */\nexport function getEnvironmentInfo() {\n return {\n environment: getEnvironment(),\n supportsANSI: supportsANSI(),\n colorCapability: getColorCapability(),\n isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n term: typeof process !== 'undefined' ? process.env?.TERM : null,\n colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n terminalWidth: getTerminalWidth(),\n terminalHeight: getTerminalHeight()\n };\n}"],"mappings":";;;;AAUA,MAAa,SAAS,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS;;;;AAKvC,MAAa,YAAY,OAAO,WAAW,eACjB,OAAO,aAAa;;;;AAK9C,SAAgB,iBAA8B;CAE1C,IAAI,OAAO,eAAe,eAAgB,WAAmB,MACzD,OAAO;CAIX,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,eAAe,OAAQ,KAAa,kBAAkB,YACvG,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,SAAS,MAAM;EAE7E,IAAI,oBAAoB,GACpB,OAAO;EAEX,OAAO;CACX;CAGA,IAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aACrD,OAAO;CAGX,OAAO;AACX;;;;AAKA,SAAgB,sBAA+B;CAE3C,IAAI,OAAO,YAAY,aAAa,OAAO;CAE3C,MAAM,QAAQ,QAAQ,UAAU,QAAQ,OAAO;CAC/C,MAAM,iBAAiB,QAAQ,QAC3B,QAAQ,IAAI,QACZ,QAAQ,IAAI,gBACZ,QAAQ,IAAI,WACZ,QAAQ,IAAI;CAkBhB,MAAM,oBAAoB,kBAAkB;EAbxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAGuD,CAAC,CAAC,MAAK,YAC9D,QAAQ,IAAI,cAAc,YAAY,CAAC,CAAC,SAAS,OAAO,KACxD,QAAQ,IAAI,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CACpD;CAEA,OAAO,QAAQ,SAAS,kBAAkB,iBAAiB;AAC/D;;;;AAKA,SAAgB,eAAwB;CACpC,MAAM,MAAM,eAAe;CAE3B,IAAI,QAAQ,WAAW,OAAO;CAC9B,IAAI,QAAQ,YAAY,OAAO;CAC/B,IAAI,QAAQ,UAAU,OAAO,uBAAuB;CAEpD,OAAO;AACX;;;;AAKA,SAAS,yBAAkC;CACvC,IAAI,OAAO,YAAY,aAAa,OAAO;CAG3C,MAAM,eAAe,QAAQ,QACzB,QAAQ,IAAI,aACZ,QAAQ,IAAI,eACX,QAAQ,IAAI,QAAQ,QAAQ,IAAI,SAAS,UAC1C,QAAQ,IAAI;CAGhB,OAAO,QAAQ,YAAY;AAC/B;;;;AAKA,SAAgB,qBAAgD;CAG5D,IAFY,eAEN,MAAM,WACR,OAAO;CAGX,IAAI,CAAC,aAAa,GACd,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;EAC/C,MAAM,eAAe,QAAQ,IAAI,cAAc,eAAe,QAAQ,IAAI,cAAc;EACxF,MAAM,eAAe,QAAQ,IAAI,QAAQ,QAAQ,IAAI,KAAK,SAAS,KAAK;EAExE,IAAI,gBAAgB,cAChB,OAAO;CAEf;CAEA,OAAO;AACX;;;;AAKA,SAAgB,mBAA2B;CACvC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,SAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,oBAA4B;CACxC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,MAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,qBAAqB;CACjC,OAAO;EACH,aAAa,eAAe;EAC5B,cAAc,aAAa;EAC3B,iBAAiB,mBAAmB;EACpC,OAAO,OAAO,YAAY,cAAc,QAAQ,QAAQ,QAAQ,KAAK,IAAI;EACzE,UAAU,OAAO,YAAY,cAAc,QAAQ,WAAW;EAC9D,aAAa,OAAO,YAAY,cAAc,QAAQ,UAAU,OAAO;EACvE,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,OAAO;EAC3D,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,YAAY;EACrE,eAAe,iBAAiB;EAChC,gBAAgB,kBAAkB;CACtC;AACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment-detector-Cnn6wr6O.cjs","names":[],"sources":["../../src/utils/environment-detector.ts"],"sourcesContent":["/**\n * Environment Detector - Robust environment detection for logger\n * Detects browser, terminal, server, and other runtime environments\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Checks if running in Node.js environment\n */\nexport const isNode = typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node;\n\n/**\n * Checks if running in browser environment\n */\nexport const isBrowser = typeof window !== 'undefined' &&\n typeof document !== 'undefined';\n\n/**\n * Main environment detection function\n */\nexport function getEnvironment(): Environment {\n // Check for Deno first\n if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n return 'deno';\n }\n\n // Check for WebWorker\n if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n return 'webworker';\n }\n\n // Check for Node.js (server environment)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // Determine if it's running in a terminal or as a server\n if (isRunningInTerminal()) {\n return 'terminal';\n }\n return 'server';\n }\n\n // Check for browser\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'browser';\n }\n\n return 'unknown';\n}\n\n/**\n * Check if running in an interactive terminal\n */\nexport function isRunningInTerminal(): boolean {\n // Check for common terminal indicators\n if (typeof process === 'undefined') return false;\n\n const isTTY = process.stdout && process.stdout.isTTY;\n const hasTerminalEnv = process.env && (\n process.env.TERM ||\n process.env.TERM_PROGRAM ||\n process.env.SSH_TTY ||\n process.env.TERM_SESSION_ID\n );\n\n // Check if we're running in common terminal programs\n const terminalPrograms = [\n 'vscode',\n 'hyper',\n 'iterm',\n 'terminal',\n 'alacritty',\n 'kitty',\n 'gnome-terminal',\n 'konsole',\n 'xterm',\n 'tmux',\n 'screen'\n ];\n\n const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n process.env.TERM?.toLowerCase().includes(program)\n );\n\n return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Check if environment supports ANSI colors\n */\nexport function supportsANSI(): boolean {\n const env = getEnvironment();\n\n if (env === 'browser') return false;\n if (env === 'terminal') return true;\n if (env === 'server') return checkServerANSISupport();\n\n return false;\n}\n\n/**\n * Check if server environment supports ANSI colors\n */\nfunction checkServerANSISupport(): boolean {\n if (typeof process === 'undefined') return false;\n\n // Check common environment variables that indicate ANSI support\n const supportsANSI = process.env && (\n process.env.COLORTERM ||\n process.env.FORCE_COLOR ||\n (process.env.TERM && process.env.TERM !== 'dumb') ||\n process.env.TERM_PROGRAM\n );\n\n return Boolean(supportsANSI);\n}\n\n/**\n * Get environment-specific color capability\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n const env = getEnvironment();\n\n if (env === 'browser') {\n return 'full'; // CSS colors\n }\n\n if (!supportsANSI()) {\n return 'none';\n }\n\n // Check for 256-color or truecolor support\n if (typeof process !== 'undefined' && process.env) {\n const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n if (hasTrueColor || has256Colors) {\n return 'full';\n }\n }\n\n return 'basic'; // Basic 16 colors\n}\n\n/**\n * Get terminal width in columns\n */\nexport function getTerminalWidth(): number {\n if (typeof process !== 'undefined' && process.stdout?.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\n\n/**\n * Get terminal height in rows\n */\nexport function getTerminalHeight(): number {\n if (typeof process !== 'undefined' && process.stdout?.rows) {\n return process.stdout.rows;\n }\n return 24;\n}\n\n/**\n * Environment information for debugging\n */\nexport function getEnvironmentInfo() {\n return {\n environment: getEnvironment(),\n supportsANSI: supportsANSI(),\n colorCapability: getColorCapability(),\n isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n term: typeof process !== 'undefined' ? process.env?.TERM : null,\n colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n terminalWidth: getTerminalWidth(),\n terminalHeight: getTerminalHeight()\n };\n}"],"mappings":";;;;AAUA,MAAa,SAAS,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS;;;;AAKvC,MAAa,YAAY,OAAO,WAAW,eACjB,OAAO,aAAa;;;;AAK9C,SAAgB,iBAA8B;CAE1C,IAAI,OAAO,eAAe,eAAgB,WAAmB,MACzD,OAAO;CAIX,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,eAAe,OAAQ,KAAa,kBAAkB,YACvG,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,SAAS,MAAM;EAE7E,IAAI,oBAAoB,GACpB,OAAO;EAEX,OAAO;CACX;CAGA,IAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aACrD,OAAO;CAGX,OAAO;AACX;;;;AAKA,SAAgB,sBAA+B;CAE3C,IAAI,OAAO,YAAY,aAAa,OAAO;CAE3C,MAAM,QAAQ,QAAQ,UAAU,QAAQ,OAAO;CAC/C,MAAM,iBAAiB,QAAQ,QAC3B,QAAQ,IAAI,QACZ,QAAQ,IAAI,gBACZ,QAAQ,IAAI,WACZ,QAAQ,IAAI;CAkBhB,MAAM,oBAAoB,kBAAkB;EAbxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAGuD,CAAC,CAAC,MAAK,YAC9D,QAAQ,IAAI,cAAc,YAAY,CAAC,CAAC,SAAS,OAAO,KACxD,QAAQ,IAAI,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CACpD;CAEA,OAAO,QAAQ,SAAS,kBAAkB,iBAAiB;AAC/D;;;;AAKA,SAAgB,eAAwB;CACpC,MAAM,MAAM,eAAe;CAE3B,IAAI,QAAQ,WAAW,OAAO;CAC9B,IAAI,QAAQ,YAAY,OAAO;CAC/B,IAAI,QAAQ,UAAU,OAAO,uBAAuB;CAEpD,OAAO;AACX;;;;AAKA,SAAS,yBAAkC;CACvC,IAAI,OAAO,YAAY,aAAa,OAAO;CAG3C,MAAM,eAAe,QAAQ,QACzB,QAAQ,IAAI,aACZ,QAAQ,IAAI,eACX,QAAQ,IAAI,QAAQ,QAAQ,IAAI,SAAS,UAC1C,QAAQ,IAAI;CAGhB,OAAO,QAAQ,YAAY;AAC/B;;;;AAKA,SAAgB,qBAAgD;CAG5D,IAFY,eAEN,MAAM,WACR,OAAO;CAGX,IAAI,CAAC,aAAa,GACd,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;EAC/C,MAAM,eAAe,QAAQ,IAAI,cAAc,eAAe,QAAQ,IAAI,cAAc;EACxF,MAAM,eAAe,QAAQ,IAAI,QAAQ,QAAQ,IAAI,KAAK,SAAS,KAAK;EAExE,IAAI,gBAAgB,cAChB,OAAO;CAEf;CAEA,OAAO;AACX;;;;AAKA,SAAgB,mBAA2B;CACvC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,SAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,oBAA4B;CACxC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,MAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,qBAAqB;CACjC,OAAO;EACH,aAAa,eAAe;EAC5B,cAAc,aAAa;EAC3B,iBAAiB,mBAAmB;EACpC,OAAO,OAAO,YAAY,cAAc,QAAQ,QAAQ,QAAQ,KAAK,IAAI;EACzE,UAAU,OAAO,YAAY,cAAc,QAAQ,WAAW;EAC9D,aAAa,OAAO,YAAY,cAAc,QAAQ,UAAU,OAAO;EACvE,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,OAAO;EAC3D,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,YAAY;EACrE,eAAe,iBAAiB;EAChC,gBAAgB,kBAAkB;CACtC;AACJ"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
//#region src/playground/server-fallback.ts
|
|
2
|
-
/**
|
|
3
|
-
* Server-mode fallback: outputs CLI primitives as plain logger calls
|
|
4
|
-
* when not running in an interactive terminal.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
var ServerFallback = class {
|
|
8
|
-
logger;
|
|
9
|
-
constructor(logger) {
|
|
10
|
-
this.logger = logger;
|
|
11
|
-
}
|
|
12
|
-
/** Render step as plain info log */
|
|
13
|
-
step(current, total, msg) {
|
|
14
|
-
this.logger.info(`[${current}/${total}] ${msg}`);
|
|
15
|
-
}
|
|
16
|
-
/** Render header as plain info log */
|
|
17
|
-
header(title, subtitle) {
|
|
18
|
-
const text = subtitle ? `${title} ${subtitle}` : title;
|
|
19
|
-
this.logger.info(text);
|
|
20
|
-
}
|
|
21
|
-
/** Divider is a no-op in server mode */
|
|
22
|
-
divider() {}
|
|
23
|
-
/** Blank line is a no-op in server mode */
|
|
24
|
-
blank() {}
|
|
25
|
-
/** Render box content as plain info log */
|
|
26
|
-
box(content, _options) {
|
|
27
|
-
this.logger.info(content);
|
|
28
|
-
}
|
|
29
|
-
/** Render table rows as plain info logs */
|
|
30
|
-
cliTable(rows, _options) {
|
|
31
|
-
for (const row of rows) this.logger.info(JSON.stringify(row));
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
//#endregion
|
|
35
|
-
Object.defineProperty(exports, "ServerFallback", {
|
|
36
|
-
enumerable: true,
|
|
37
|
-
get: function() {
|
|
38
|
-
return ServerFallback;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=server-fallback-BUKjdLS7.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-fallback-BUKjdLS7.cjs","names":[],"sources":["../../src/playground/server-fallback.ts"],"sourcesContent":["/**\n * @fileoverview Server/JSON fallback for CLI primitives in non-TTY environments\n */\n\nimport type { IBoxOptions, ITableOptions } from '../types/core.js';\nimport type { Logger } from '../Logger.js';\n\n/**\n * Server-mode fallback: outputs CLI primitives as plain logger calls\n * when not running in an interactive terminal.\n *\n */\nexport class ServerFallback {\n private logger: Logger;\n\n constructor(logger: Logger) {\n this.logger = logger;\n }\n\n /** Render step as plain info log */\n step(current: number, total: number, msg: string): void {\n this.logger.info(`[${current}/${total}] ${msg}`);\n }\n\n /** Render header as plain info log */\n header(title: string, subtitle?: string): void {\n const text = subtitle ? `${title} ${subtitle}` : title;\n this.logger.info(text);\n }\n\n /** Divider is a no-op in server mode */\n divider(): void {\n // No-op in server/JSON mode\n }\n\n /** Blank line is a no-op in server mode */\n blank(): void {\n // No-op in server/JSON mode\n }\n\n /** Render box content as plain info log */\n box(content: string, _options?: IBoxOptions): void {\n this.logger.info(content);\n }\n\n /** Render table rows as plain info logs */\n cliTable(rows: Record<string, unknown>[], _options?: ITableOptions): void {\n for (const row of rows) {\n this.logger.info(JSON.stringify(row));\n }\n }\n}\n"],"mappings":";;;;;;AAYA,IAAa,iBAAb,MAA4B;CACxB;CAEA,YAAY,QAAgB;EACxB,KAAK,SAAS;CAClB;;CAGA,KAAK,SAAiB,OAAe,KAAmB;EACpD,KAAK,OAAO,KAAK,IAAI,QAAQ,GAAG,MAAM,IAAI,KAAK;CACnD;;CAGA,OAAO,OAAe,UAAyB;EAC3C,MAAM,OAAO,WAAW,GAAG,MAAM,GAAG,aAAa;EACjD,KAAK,OAAO,KAAK,IAAI;CACzB;;CAGA,UAAgB,CAEhB;;CAGA,QAAc,CAEd;;CAGA,IAAI,SAAiB,UAA8B;EAC/C,KAAK,OAAO,KAAK,OAAO;CAC5B;;CAGA,SAAS,MAAiC,UAAgC;EACtE,KAAK,MAAM,OAAO,MACd,KAAK,OAAO,KAAK,KAAK,UAAU,GAAG,CAAC;CAE5C;AACJ"}
|