@void.01/advanced-logger 0.0.0-stage → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/ARCHITECTURE.md +342 -0
  2. package/CHANGELOG.md +108 -0
  3. package/README.md +304 -2
  4. package/dist/actions.d.ts +79 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +337 -0
  7. package/dist/actions.js.map +1 -0
  8. package/dist/ansi.d.ts +144 -0
  9. package/dist/ansi.d.ts.map +1 -0
  10. package/dist/ansi.js +219 -0
  11. package/dist/ansi.js.map +1 -0
  12. package/dist/caller.d.ts +21 -0
  13. package/dist/caller.d.ts.map +1 -0
  14. package/dist/caller.js +129 -0
  15. package/dist/caller.js.map +1 -0
  16. package/dist/config.d.ts +152 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +398 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/configFile.d.ts +31 -0
  21. package/dist/configFile.d.ts.map +1 -0
  22. package/dist/configFile.js +211 -0
  23. package/dist/configFile.js.map +1 -0
  24. package/dist/core.d.ts +17 -0
  25. package/dist/core.d.ts.map +1 -0
  26. package/dist/core.js +89 -0
  27. package/dist/core.js.map +1 -0
  28. package/dist/index.d.ts +12 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +60 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/logger.d.ts +7 -0
  33. package/dist/logger.d.ts.map +1 -0
  34. package/dist/logger.js +10 -0
  35. package/dist/logger.js.map +1 -0
  36. package/dist/playwright.d.ts +15 -0
  37. package/dist/playwright.d.ts.map +1 -0
  38. package/dist/playwright.js +47 -0
  39. package/dist/playwright.js.map +1 -0
  40. package/dist/redact.d.ts +8 -0
  41. package/dist/redact.d.ts.map +1 -0
  42. package/dist/redact.js +36 -0
  43. package/dist/redact.js.map +1 -0
  44. package/dist/sinks.d.ts +80 -0
  45. package/dist/sinks.d.ts.map +1 -0
  46. package/dist/sinks.js +461 -0
  47. package/dist/sinks.js.map +1 -0
  48. package/dist/theme.d.ts +71 -0
  49. package/dist/theme.d.ts.map +1 -0
  50. package/dist/theme.js +115 -0
  51. package/dist/theme.js.map +1 -0
  52. package/package.json +50 -4
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogActions = void 0;
4
+ exports.fields = fields;
5
+ exports.formatValue = formatValue;
6
+ const ansi_1 = require("./ansi");
7
+ const config_1 = require("./config");
8
+ const core_1 = require("./core");
9
+ const sinks_1 = require("./sinks");
10
+ const theme_1 = require("./theme");
11
+ // -- helpers -----------------------------------------------------------------
12
+ /** Ordered key/value builder. Throws on an odd number of arguments. */
13
+ function fields(...pairs) {
14
+ if (pairs.length % 2 !== 0)
15
+ throw new TypeError('fields() requires an even number of key/value arguments');
16
+ const map = new Map();
17
+ for (let i = 0; i < pairs.length; i += 2)
18
+ map.set(String(pairs[i]), pairs[i + 1]);
19
+ return map;
20
+ }
21
+ /**
22
+ * Like fields(), but a logging call must never throw back into the caller: a dangling
23
+ * trailing key (odd pair count) is kept under a sentinel key instead of raising.
24
+ */
25
+ function safeFields(...pairs) {
26
+ if (pairs.length % 2 === 0)
27
+ return fields(...pairs);
28
+ const map = fields(...pairs.slice(0, -1));
29
+ map.set('(unpaired)', pairs[pairs.length - 1]);
30
+ return map;
31
+ }
32
+ const isMap = (v) => v instanceof Map;
33
+ function isRecord(v) {
34
+ return (typeof v === 'object' &&
35
+ v !== null &&
36
+ !Array.isArray(v) &&
37
+ !(v instanceof Date) &&
38
+ !(v instanceof Error) &&
39
+ !(v instanceof Map) &&
40
+ Object.prototype.toString.call(v) === '[object Object]');
41
+ }
42
+ const isFields = (v) => isMap(v) || isRecord(v);
43
+ function entriesOf(f) {
44
+ return isMap(f) ? [...f.entries()].map(([k, v]) => [String(k), v]) : Object.entries(f);
45
+ }
46
+ const str = (m) => (m == null ? 'null' : typeof m === 'string' ? m : String(m));
47
+ /** A blank entry in redactKeys is ignored: every key contains '', so it would mask everything. */
48
+ function sensitive(key) {
49
+ const k = key.toLowerCase();
50
+ return (0, config_1.config)().redactKeys.some((r) => r.trim() !== '' && k.includes(r.toLowerCase()));
51
+ }
52
+ /** Java Arrays.deepToString-style rendering for arrays; JSON for plain objects. */
53
+ function formatValue(v) {
54
+ if (v === null)
55
+ return 'null';
56
+ if (v === undefined)
57
+ return 'undefined';
58
+ if (Array.isArray(v))
59
+ return `[${v.map(formatValue).join(', ')}]`;
60
+ if (v instanceof Error)
61
+ return v.stack ?? v.message;
62
+ if (isMap(v))
63
+ return `{${[...v.entries()].map(([k, x]) => `${String(k)}=${formatValue(x)}`).join(', ')}}`;
64
+ if (isRecord(v)) {
65
+ try {
66
+ return JSON.stringify(v);
67
+ }
68
+ catch {
69
+ return String(v);
70
+ }
71
+ }
72
+ return String(v);
73
+ }
74
+ /**
75
+ * '***' when the key is sensitive; otherwise the value, with sensitive keys masked at any depth inside objects, Maps
76
+ * and arrays. Returns a copy, never touching the caller's object; a cycle prints as '[Circular]'.
77
+ */
78
+ const redacted = (key, v) => (sensitive(key) ? '***' : redactDeep(v, new WeakSet()));
79
+ function redactDeep(v, seen) {
80
+ if (v === null || typeof v !== 'object' || v instanceof Error || v instanceof Date)
81
+ return v;
82
+ if (seen.has(v))
83
+ return '[Circular]';
84
+ // Redact what JSON.stringify would print, so a toJSON() result is checked too.
85
+ const json = v.toJSON;
86
+ if (typeof json === 'function') {
87
+ let j;
88
+ try {
89
+ j = json.call(v);
90
+ }
91
+ catch {
92
+ return v; // formatValue falls back to String(v) when serializing throws
93
+ }
94
+ if (j !== v)
95
+ return redactDeep(j, seen);
96
+ }
97
+ seen.add(v);
98
+ try {
99
+ if (Array.isArray(v))
100
+ return v.map((x) => redactDeep(x, seen));
101
+ if (isMap(v))
102
+ return new Map([...v.entries()].map(([k, x]) => [k, sensitive(String(k)) ? '***' : redactDeep(x, seen)]));
103
+ if (isRecord(v)) {
104
+ const out = {};
105
+ for (const [k, x] of Object.entries(v))
106
+ out[k] = sensitive(k) ? '***' : redactDeep(x, seen);
107
+ return out;
108
+ }
109
+ return v;
110
+ }
111
+ finally {
112
+ seen.delete(v);
113
+ }
114
+ }
115
+ const mask = (text) => (text == null ? '***' : '*'.repeat(text.length));
116
+ function center(s, width) {
117
+ const plain = s.replace(/\u001b\[[;\d]*m/g, '');
118
+ const len = plain.length;
119
+ if (len >= width)
120
+ return s.slice(0, width);
121
+ const left = Math.floor((width - len) / 2);
122
+ return ' '.repeat(left) + s + ' '.repeat(width - len - left);
123
+ }
124
+ // -- LogActions --------------------------------------------------------------
125
+ /**
126
+ * One instance per level (debug/info/warn/error). Every action method has its own foreground (ACTION_FG, in its
127
+ * intent's hue family) on the theme background; plain log lines use the level's foreground.
128
+ */
129
+ class LogActions {
130
+ level;
131
+ constructor(level) {
132
+ this.level = level;
133
+ }
134
+ // -- INTERACTION
135
+ click(m) { this.msg(theme_1.LogIntent.INTERACTION, 'CLICK [>]', m, 'click'); }
136
+ checkbox(m) { this.msg(theme_1.LogIntent.INTERACTION, 'CHECKBOX [x]', m, 'checkbox'); }
137
+ text(m) { this.msg(theme_1.LogIntent.INTERACTION, 'TEXT [T]', m, 'text'); }
138
+ input(m) { this.msg(theme_1.LogIntent.INTERACTION, 'INPUT [>>]', m, 'input'); }
139
+ dropdown(m) { this.msg(theme_1.LogIntent.INTERACTION, 'DROPDOWN [v]', m, 'dropdown'); }
140
+ toggle(m) { this.msg(theme_1.LogIntent.INTERACTION, 'TOGGLE [o]', m, 'toggle'); }
141
+ upload(m) { this.msg(theme_1.LogIntent.INTERACTION, 'UPLOAD [^]', m, 'upload'); }
142
+ hover(m) { this.msg(theme_1.LogIntent.INTERACTION, 'HOVER [*]', m, 'hover'); }
143
+ clear(m) { this.msg(theme_1.LogIntent.INTERACTION, 'CLEAR [-]', m, 'clear'); }
144
+ key(m) { this.msg(theme_1.LogIntent.INTERACTION, 'KEY [#]', m, 'key'); }
145
+ /** Logs the password masked, never the value. */
146
+ password(text, label) {
147
+ this.msg(theme_1.LogIntent.INTERACTION, 'PASSWORD [**]', label === undefined ? mask(text) : `${mask(text)} | ${label}`, 'password');
148
+ }
149
+ // -- NAVIGATION
150
+ navigate(m) { this.msg(theme_1.LogIntent.NAVIGATION, 'NAVIGATE [=>]', m, 'navigate'); }
151
+ tab(m) { this.msg(theme_1.LogIntent.NAVIGATION, 'TAB [->]', m, 'tab'); }
152
+ frame(m) { this.msg(theme_1.LogIntent.NAVIGATION, 'FRAME [{}]', m, 'frame'); }
153
+ breadcrumb(m) { this.msg(theme_1.LogIntent.NAVIGATION, 'BREADCRUMB [/]', m, 'breadcrumb'); }
154
+ // -- OBSERVE
155
+ wait(m) { this.msg(theme_1.LogIntent.OBSERVE, 'WAIT [~]', m, 'wait'); }
156
+ search(m) { this.msg(theme_1.LogIntent.OBSERVE, 'SEARCHED [*]', m, 'search'); }
157
+ result(m) { this.msg(theme_1.LogIntent.OBSERVE, 'RESULT [:]', m, 'result'); }
158
+ // -- VERIFY
159
+ verifying(m) { this.msg(theme_1.LogIntent.VERIFY, 'VERIFY [?]', m, 'verifying'); }
160
+ // -- SUCCESS
161
+ success(m) { this.msg(theme_1.LogIntent.SUCCESS, 'SUCCESS [+]', m, 'success'); }
162
+ complete(m) { this.msg(theme_1.LogIntent.SUCCESS, 'COMPLETE [+]', m, 'complete'); }
163
+ // -- ALERT
164
+ error(m) { this.msg(theme_1.LogIntent.ALERT, 'ERROR [x]', m, 'error'); }
165
+ failed(m) { this.msg(theme_1.LogIntent.ALERT, 'FAILED [x]', m, 'failed'); }
166
+ timeout(m) { this.msg(theme_1.LogIntent.ALERT, 'TIMEOUT [!!]', m, 'timeout'); }
167
+ validation(m) { this.msg(theme_1.LogIntent.ALERT, 'VALIDATION [?!]', m, 'validation'); }
168
+ fallback(m) { this.msg(theme_1.LogIntent.ALERT, 'FALLBACK [<-]', m, 'fallback'); }
169
+ skip(m) { this.msg(theme_1.LogIntent.ALERT, 'SKIP [>>]', m, 'skip'); }
170
+ // -- DATA
171
+ grid(m) { this.msg(theme_1.LogIntent.DATA, 'GRID [#]', m, 'grid'); }
172
+ table(data, title) {
173
+ if (typeof data === 'string')
174
+ return this.msg(theme_1.LogIntent.DATA, 'TABLE [=]', data, 'table');
175
+ const titled = typeof title === 'string' && title.trim() !== '';
176
+ if (!titled) {
177
+ (0, config_1.warnOnce)("[advanced-logger] table() was called without a title. Pass one, as in info.table(rows, 'Users'): it is " +
178
+ "shown above the table and names the table's CSV and JSON files. Untitled tables' files are named 'untitled'.");
179
+ }
180
+ this.tableInternal(data, titled ? title : undefined, titled ? title : 'untitled');
181
+ }
182
+ /** `title` is the console title row (none when undefined); `heading` names the CSV/JSON files. */
183
+ tableInternal(data, title, heading) {
184
+ if (data == null || (Array.isArray(data) && data.length === 0) || (isFields(data) && entriesOf(data).length === 0)) {
185
+ return this.msg(theme_1.LogIntent.DATA, 'TABLE', Array.isArray(data) || data == null ? 'No rows to display.' : 'No data to display.', 'table');
186
+ }
187
+ this.renderTable(Array.isArray(data) ? data : [data], title, heading);
188
+ }
189
+ /** Aligned `key : value` lines. */
190
+ row(data) {
191
+ if (data == null || entriesOf(data).length === 0)
192
+ return this.msg(theme_1.LogIntent.DATA, 'ROW', '(empty)', 'row');
193
+ const entries = entriesOf(data);
194
+ const w = Math.max(...entries.map(([k]) => k.length));
195
+ for (const [k, v] of entries) {
196
+ this.msg(theme_1.LogIntent.DATA, 'ROW', `${k.padEnd(w)} : ${(0, config_1.truncateCell)(redacted(k, v))}`, 'row');
197
+ }
198
+ }
199
+ // -- tree / resolved
200
+ tree(heading, fieldsOrFirst, ...rest) {
201
+ this.treeInternal(heading, this.toFields(fieldsOrFirst, rest), theme_1.LogIntent.BASE, 'LOG');
202
+ }
203
+ /** `resolved("msg")` or `resolved("heading", fields | ...pairs)` as a SUCCESS tree. */
204
+ resolved(heading, fieldsOrFirst, ...rest) {
205
+ if (fieldsOrFirst === undefined && rest.length === 0)
206
+ return this.msg(theme_1.LogIntent.SUCCESS, 'RESOLVED [ok]', heading, 'resolved');
207
+ this.treeInternal(heading, this.toFields(fieldsOrFirst, rest), theme_1.LogIntent.SUCCESS, 'RESOLVED', 'resolved');
208
+ }
209
+ log(...args) {
210
+ const label = this.level;
211
+ if (args.length === 0)
212
+ return this.msg(theme_1.LogIntent.BASE, label, '');
213
+ if (args.length === 1) {
214
+ const [a] = args;
215
+ if (typeof a === 'string')
216
+ return this.msg(theme_1.LogIntent.BASE, label, a);
217
+ return this.logObject(a);
218
+ }
219
+ const heading = str(args[0]);
220
+ const second = args[1];
221
+ if (args.length === 2) {
222
+ if (isFields(second))
223
+ return this.treeInternal(heading, second, theme_1.LogIntent.BASE, label);
224
+ return this.logHeadingValue(heading, second);
225
+ }
226
+ this.treeInternal(heading, safeFields(...args.slice(1)), theme_1.LogIntent.BASE, label);
227
+ }
228
+ // -- internals ---------------------------------------------------------------
229
+ toFields(first, rest) {
230
+ if (first === undefined && rest.length === 0)
231
+ return undefined;
232
+ if (rest.length === 0 && isFields(first))
233
+ return first;
234
+ return safeFields(first, ...rest);
235
+ }
236
+ logObject(obj) {
237
+ if (obj == null)
238
+ return this.msg(theme_1.LogIntent.BASE, 'LOG', 'null');
239
+ // log(object) has no title to show; its table files are named 'log'.
240
+ if (isMap(obj) || isRecord(obj))
241
+ return this.tableInternal(obj, undefined, 'log');
242
+ if (Array.isArray(obj))
243
+ return this.logList(obj);
244
+ if (obj instanceof Error)
245
+ return this.msg(theme_1.LogIntent.BASE, 'LOG', obj.stack ?? obj.message);
246
+ this.msg(theme_1.LogIntent.BASE, 'LOG', String(obj));
247
+ }
248
+ logHeadingValue(heading, v) {
249
+ if (v == null)
250
+ return this.msg(theme_1.LogIntent.BASE, 'LOG', `${heading}: null`);
251
+ if (Array.isArray(v)) {
252
+ this.msg(theme_1.LogIntent.BASE, 'LOG', `${heading}:`);
253
+ return this.logList(v);
254
+ }
255
+ this.msg(theme_1.LogIntent.BASE, 'LOG', `${heading}: ${formatValue(v)}`);
256
+ }
257
+ logList(list) {
258
+ if (list.length === 0)
259
+ return this.msg(theme_1.LogIntent.BASE, 'LOG', '(empty list)');
260
+ list.forEach((item, i) => {
261
+ const prefix = ` [${i}] `;
262
+ if (isFields(item)) {
263
+ this.msg(theme_1.LogIntent.BASE, 'LOG', prefix);
264
+ this.tableInternal(item, undefined, `list item ${i}`);
265
+ }
266
+ else {
267
+ this.msg(theme_1.LogIntent.BASE, 'LOG', prefix + formatValue(item));
268
+ }
269
+ });
270
+ }
271
+ renderTable(rows, title, heading) {
272
+ const normalized = rows.map((r) => entriesOf(r).map(([k, v]) => [k, redacted(k, v)]));
273
+ const widths = new Map();
274
+ for (const row of normalized) {
275
+ for (const [col, raw] of row) {
276
+ const val = (0, config_1.truncateCell)(raw);
277
+ widths.set(col, Math.max(widths.get(col) ?? col.length, col.length, val.length));
278
+ }
279
+ }
280
+ const headers = [...widths.keys()];
281
+ // themed() is '' when ansi is off or both fg and bg are off; the table's own bold/reset follow it.
282
+ const color = (0, core_1.themed)(this.level, theme_1.LogIntent.DATA, 'table');
283
+ const styled = color !== '';
284
+ const rst = styled ? ansi_1.RESET : '';
285
+ const w = (h) => widths.get(h);
286
+ if (title) {
287
+ // Widen the last column so a title longer than the table fits instead of being cut.
288
+ const inner = headers.reduce((n, h) => n + w(h) + 3, -1);
289
+ const need = title.length + 2;
290
+ if (inner < need)
291
+ widths.set(headers.at(-1), w(headers.at(-1)) + need - inner);
292
+ }
293
+ const hBorder = '+' + headers.map((h) => '-'.repeat(w(h) + 2)).join('+') + '+';
294
+ const headerRow = '|' + headers.map((h) => ' ' + (0, config_1.truncateCell)(h).padEnd(w(h)) + ' ').join('|') + '|';
295
+ // The title row and the column-name row each have their own shade, both darker than the table body (bold, like
296
+ // the rest). They are foregrounds, so they follow fg; after each, the table's own style is restored (background
297
+ // included).
298
+ const headerStyled = styled && (0, config_1.config)().fg;
299
+ const shade = (fg, line) => (headerStyled ? fg + ansi_1.BOLD + line + color : line);
300
+ const out = [hBorder];
301
+ if (title) {
302
+ out.push(shade(theme_1.TABLE_TITLE_FG, '|' + center(` ${title} `, headerRow.length - 2) + '|'));
303
+ out.push(hBorder);
304
+ }
305
+ out.push(shade(theme_1.TABLE_COLUMNS_FG, headerRow), hBorder);
306
+ for (const row of normalized) {
307
+ const byKey = new Map(row);
308
+ out.push('|' + headers.map((h) => ' ' + (0, config_1.truncateCell)(byKey.get(h) ?? '').padEnd(w(h)) + ' ').join('|') + '|');
309
+ }
310
+ out.push(hBorder);
311
+ const cfg = (0, config_1.config)();
312
+ const file = (0, sinks_1.nextTableFile)(cfg, heading);
313
+ const table = { title, headers, rows: normalized.map((r) => Object.fromEntries(r)), file };
314
+ (0, core_1.dispatch)(this.level, null, color, 'TABLE', '\n' + out.join('\n') + rst, table);
315
+ if (file !== undefined) {
316
+ // Links the table in the traces to its files. DEBUG, so the console shows it only at level debug.
317
+ const where = `attachments/csv/${file}.csv | attachments/json/${file}.json`;
318
+ (0, core_1.dispatch)('DEBUG', theme_1.LogIntent.DATA, (0, core_1.themed)('DEBUG', theme_1.LogIntent.DATA, 'table'), 'TABLE FILES', where);
319
+ }
320
+ }
321
+ treeInternal(heading, f, intent, label, action) {
322
+ if (heading == null || f == null)
323
+ return;
324
+ this.msg(intent, label, heading, action);
325
+ const entries = entriesOf(f);
326
+ entries.forEach(([k, v], i) => {
327
+ const prefix = i < entries.length - 1 ? ' ├─ ' : ' └─ ';
328
+ this.msg(intent, label, `${prefix}${k.padEnd(12)}: ${formatValue(redacted(k, v))}`, action);
329
+ });
330
+ }
331
+ /** `action` picks the line's own color within its intent family; without it the intent's color is used. */
332
+ msg(intent, label, message, action) {
333
+ (0, core_1.dispatch)(this.level, intent, (0, core_1.themed)(this.level, intent, action), label, str(message));
334
+ }
335
+ }
336
+ exports.LogActions = LogActions;
337
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
package/dist/ansi.d.ts ADDED
@@ -0,0 +1,144 @@
1
+ /**
2
+ * ANSI escape factory + named color catalog.
3
+ * Port of core.logging.ansi.AnsiEscape and AnsiColors.
4
+ */
5
+ export declare function sgr(...codes: number[]): string;
6
+ export declare function fg16(code: number): string;
7
+ export declare function bg16(code: number): string;
8
+ export declare const rgbFg: (r: number, g: number, b: number) => string;
9
+ export declare const rgbBg: (r: number, g: number, b: number) => string;
10
+ /** 0xRRGGBB overloads. */
11
+ export declare const rgbFgHex: (rgb: number) => string;
12
+ export declare const rgbBgHex: (rgb: number) => string;
13
+ export declare const fg256: (code: number) => string;
14
+ export declare const bg256: (code: number) => string;
15
+ export declare const RESET: string;
16
+ export declare const BOLD: string;
17
+ export declare const DIM: string;
18
+ export declare const ITALIC: string;
19
+ export declare const colorize: (text: string, ansi: string, bg?: string) => string;
20
+ export declare function stripAnsi(str: string | null | undefined): string;
21
+ /** Derive a foreground escape from a style string (bg-only styles map to their matching fg). */
22
+ export declare function fgFromStyle(style: string | null | undefined): string;
23
+ export declare const FG_BLACK: string;
24
+ export declare const FG_RED: string;
25
+ export declare const FG_GREEN: string;
26
+ export declare const FG_YELLOW: string;
27
+ export declare const FG_BLUE: string;
28
+ export declare const FG_MAGENTA: string;
29
+ export declare const FG_CYAN: string;
30
+ export declare const FG_WHITE: string;
31
+ export declare const FG_BRIGHT_BLACK: string;
32
+ export declare const FG_BRIGHT_RED: string;
33
+ export declare const FG_BRIGHT_GREEN: string;
34
+ export declare const FG_BRIGHT_YELLOW: string;
35
+ export declare const FG_BRIGHT_BLUE: string;
36
+ export declare const FG_BRIGHT_MAGENTA: string;
37
+ export declare const FG_BRIGHT_CYAN: string;
38
+ export declare const FG_BRIGHT_WHITE: string;
39
+ export declare const BG_BLACK: string;
40
+ export declare const BG_RED: string;
41
+ export declare const BG_GREEN: string;
42
+ export declare const BG_YELLOW: string;
43
+ export declare const BG_BLUE: string;
44
+ export declare const BG_MAGENTA: string;
45
+ export declare const BG_CYAN: string;
46
+ export declare const BG_WHITE: string;
47
+ export declare const BG_BRIGHT_BLACK: string;
48
+ export declare const BG_BRIGHT_RED: string;
49
+ export declare const BG_BRIGHT_GREEN: string;
50
+ export declare const BG_BRIGHT_YELLOW: string;
51
+ export declare const BG_BRIGHT_BLUE: string;
52
+ export declare const BG_BRIGHT_MAGENTA: string;
53
+ export declare const BG_BRIGHT_CYAN: string;
54
+ export declare const BG_BRIGHT_WHITE: string;
55
+ export declare const FG_256: {
56
+ readonly ORANGE: string;
57
+ readonly GOLD: string;
58
+ readonly LIME: string;
59
+ readonly SKY: string;
60
+ readonly VIOLET: string;
61
+ readonly PINK: string;
62
+ readonly TEAL: string;
63
+ readonly SALMON: string;
64
+ readonly GREY_DARK: string;
65
+ readonly GREY_MID: string;
66
+ readonly GREY_LIGHT: string;
67
+ readonly NAVY: string;
68
+ readonly MAROON: string;
69
+ readonly OLIVE: string;
70
+ readonly INDIGO: string;
71
+ };
72
+ export declare const BG_256: {
73
+ readonly ORANGE: string;
74
+ readonly DARK_GREY: string;
75
+ readonly MID_GREY: string;
76
+ readonly NAVY: string;
77
+ readonly DARK_GREEN: string;
78
+ readonly DARK_TEAL: string;
79
+ readonly DARK_PURPLE: string;
80
+ readonly DARK_OLIVE: string;
81
+ readonly DARK_RED: string;
82
+ readonly MAROON: string;
83
+ readonly INDIGO: string;
84
+ };
85
+ export declare const RGB_FG: {
86
+ readonly SNOW_WHITE: string;
87
+ readonly SOFT_WHITE: string;
88
+ readonly COOL_GREY: string;
89
+ readonly WARM_GREY: string;
90
+ readonly DEEP_CHARCOAL: string;
91
+ readonly GOLD: string;
92
+ readonly AMBER: string;
93
+ readonly PEACH: string;
94
+ readonly CORAL: string;
95
+ readonly SALMON: string;
96
+ readonly HOT_PINK: string;
97
+ readonly SKY_BLUE: string;
98
+ readonly ELECTRIC_BLUE: string;
99
+ readonly STEEL_CYAN: string;
100
+ readonly MINT: string;
101
+ readonly LIME_GREEN: string;
102
+ readonly NEON_GREEN: string;
103
+ readonly LAVENDER: string;
104
+ readonly VIOLET: string;
105
+ readonly PURPLE: string;
106
+ readonly DARKER_PURPLE: string;
107
+ readonly DEEP_PURPLE: string;
108
+ readonly DEEP_RED: string;
109
+ readonly DEEP_GREEN: string;
110
+ readonly DEEP_CYAN: string;
111
+ readonly DEEP_AMBER: string;
112
+ readonly DEEP_VIOLET: string;
113
+ readonly DEEP_ORANGE: string;
114
+ readonly DEEP_PINK: string;
115
+ };
116
+ export declare const RGB_BG: {
117
+ readonly CHARCOAL: string;
118
+ readonly DARK_SLATE: string;
119
+ readonly MIDNIGHT: string;
120
+ readonly NEAR_BLACK: string;
121
+ readonly CARBON: string;
122
+ readonly STEEL_DARK: string;
123
+ readonly DARK_AMBER: string;
124
+ readonly VIVID_AMBER: string;
125
+ readonly RUST: string;
126
+ readonly CRIMSON: string;
127
+ readonly DARK_WINE: string;
128
+ readonly MAROON: string;
129
+ readonly ORANGE_VIVID: string;
130
+ readonly DARK_FOREST: string;
131
+ readonly DARK_OCEAN: string;
132
+ readonly DARK_TEAL: string;
133
+ readonly DARK_INDIGO: string;
134
+ readonly DARK_PURPLE: string;
135
+ readonly DARK_CYAN: string;
136
+ readonly SOFT_WHITE: string;
137
+ readonly LIGHT_GREY: string;
138
+ readonly WARM_AMBER_LT: string;
139
+ readonly TOMATO_RED: string;
140
+ readonly HOT_PINK: string;
141
+ readonly NEON_PURPLE: string;
142
+ readonly ELECTRIC_TEAL: string;
143
+ };
144
+ //# sourceMappingURL=ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"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"}