@addfox/common 0.1.1-beta.2

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 (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -0
  3. package/dist/cjs/errors/index.d.ts +86 -0
  4. package/dist/cjs/errors/index.d.ts.map +1 -0
  5. package/dist/cjs/hooks/HookManager.d.ts +67 -0
  6. package/dist/cjs/hooks/HookManager.d.ts.map +1 -0
  7. package/dist/cjs/hooks/index.d.ts +7 -0
  8. package/dist/cjs/hooks/index.d.ts.map +1 -0
  9. package/dist/cjs/hooks/types.d.ts +26 -0
  10. package/dist/cjs/hooks/types.d.ts.map +1 -0
  11. package/dist/cjs/index.cjs +756 -0
  12. package/dist/cjs/index.d.ts +11 -0
  13. package/dist/cjs/index.d.ts.map +1 -0
  14. package/dist/cjs/interfaces/index.d.ts +56 -0
  15. package/dist/cjs/interfaces/index.d.ts.map +1 -0
  16. package/dist/cjs/logger/index.d.ts +171 -0
  17. package/dist/cjs/logger/index.d.ts.map +1 -0
  18. package/dist/cjs/utils/cache.d.ts +28 -0
  19. package/dist/cjs/utils/cache.d.ts.map +1 -0
  20. package/dist/cjs/utils/index.d.ts +7 -0
  21. package/dist/cjs/utils/index.d.ts.map +1 -0
  22. package/dist/cjs/utils/object.d.ts +52 -0
  23. package/dist/cjs/utils/object.d.ts.map +1 -0
  24. package/dist/cjs/utils/pipeline.d.ts +45 -0
  25. package/dist/cjs/utils/pipeline.d.ts.map +1 -0
  26. package/dist/cjs/webExtStdoutOrigin.d.ts +4 -0
  27. package/dist/cjs/webExtStdoutOrigin.d.ts.map +1 -0
  28. package/dist/esm/errors/index.d.ts +86 -0
  29. package/dist/esm/errors/index.d.ts.map +1 -0
  30. package/dist/esm/hooks/HookManager.d.ts +67 -0
  31. package/dist/esm/hooks/HookManager.d.ts.map +1 -0
  32. package/dist/esm/hooks/index.d.ts +7 -0
  33. package/dist/esm/hooks/index.d.ts.map +1 -0
  34. package/dist/esm/hooks/types.d.ts +26 -0
  35. package/dist/esm/hooks/types.d.ts.map +1 -0
  36. package/dist/esm/index.d.ts +11 -0
  37. package/dist/esm/index.d.ts.map +1 -0
  38. package/dist/esm/index.js +567 -0
  39. package/dist/esm/interfaces/index.d.ts +56 -0
  40. package/dist/esm/interfaces/index.d.ts.map +1 -0
  41. package/dist/esm/logger/index.d.ts +171 -0
  42. package/dist/esm/logger/index.d.ts.map +1 -0
  43. package/dist/esm/utils/cache.d.ts +28 -0
  44. package/dist/esm/utils/cache.d.ts.map +1 -0
  45. package/dist/esm/utils/index.d.ts +7 -0
  46. package/dist/esm/utils/index.d.ts.map +1 -0
  47. package/dist/esm/utils/object.d.ts +52 -0
  48. package/dist/esm/utils/object.d.ts.map +1 -0
  49. package/dist/esm/utils/pipeline.d.ts +45 -0
  50. package/dist/esm/utils/pipeline.d.ts.map +1 -0
  51. package/dist/esm/webExtStdoutOrigin.d.ts +4 -0
  52. package/dist/esm/webExtStdoutOrigin.d.ts.map +1 -0
  53. package/package.json +37 -0
@@ -0,0 +1,171 @@
1
+ /**
2
+ * @addfox/common/logger
3
+ * Unified logging system with configurable output format
4
+ */
5
+ /** Log level enumeration */
6
+ export type LogLevel = "info" | "success" | "warn" | "error" | "debug";
7
+ /** Output stream type */
8
+ export type LogStream = "stdout" | "stderr";
9
+ /** Log entry structure */
10
+ export interface LogEntry {
11
+ level: LogLevel;
12
+ message: string;
13
+ timestamp?: Date;
14
+ metadata?: Record<string, unknown>;
15
+ }
16
+ /** Logger configuration options */
17
+ export interface LoggerOptions {
18
+ /** Output prefix (default: "[Addfox]") */
19
+ prefix?: string;
20
+ /** Whether to include timestamp */
21
+ showTimestamp?: boolean;
22
+ /** Whether to enable colors */
23
+ useColors?: boolean;
24
+ /** Custom stream writes for testing */
25
+ rawWrites?: {
26
+ stdout: WriteFn;
27
+ stderr: WriteFn;
28
+ } | null;
29
+ }
30
+ /** Write function type */
31
+ export type WriteFn = NodeJS.WriteStream["write"];
32
+ /** Base shape for entry rows: name + script path (shared by EntryTableRow, EntryInfo) */
33
+ export interface EntryRowBase {
34
+ name: string;
35
+ scriptPath: string;
36
+ }
37
+ /** Table row for entries display */
38
+ export type EntryTableRow = EntryRowBase;
39
+ /** Options for logEntriesTable */
40
+ export interface LogEntriesTableOptions {
41
+ root?: string;
42
+ }
43
+ /** ANSI color codes for terminal output styling */
44
+ export declare const ANSI_COLORS: {
45
+ /** Orange (256 color 208) for prefix */
46
+ readonly ORANGE: "\u001B[38;5;208m";
47
+ /** Bold + green for Done messages */
48
+ readonly DONE: "\u001B[1m\u001B[32m";
49
+ /** Dim gray for time suffix */
50
+ readonly TIME: "\u001B[38;5;245m";
51
+ /** Cyan for size/value highlight */
52
+ readonly VALUE: "\u001B[38;5;75m";
53
+ /** Purple for table headers */
54
+ readonly PURPLE: "\u001B[38;5;141m";
55
+ /** Red background + yellow text for error badge */
56
+ readonly ERROR_BADGE: "\u001B[41m\u001B[93m";
57
+ /** Red foreground for error content */
58
+ readonly RED: "\u001B[31m";
59
+ /** Reset all styles */
60
+ readonly RESET: "\u001B[0m";
61
+ };
62
+ /**
63
+ * Unified Logger class for Addfox
64
+ *
65
+ * Provides consistent output format with:
66
+ * - Colored prefix ([Addfox])
67
+ * - Multiple log levels
68
+ * - Table formatting for entries
69
+ * - Configurable output streams
70
+ */
71
+ export declare class Logger {
72
+ private prefix;
73
+ private showTimestamp;
74
+ private useColors;
75
+ private rawWrites;
76
+ constructor(options?: LoggerOptions);
77
+ /**
78
+ * Set raw stdout/stderr write functions for testing
79
+ */
80
+ setRawWrites(writes: {
81
+ stdout: WriteFn;
82
+ stderr: WriteFn;
83
+ } | null): void;
84
+ /**
85
+ * Get current write functions
86
+ */
87
+ private getWrites;
88
+ /**
89
+ * Format the prefix with ANSI colors
90
+ */
91
+ private formatPrefix;
92
+ /**
93
+ * Format timestamp if enabled
94
+ */
95
+ private formatTimestamp;
96
+ /**
97
+ * Write lines to stream with prefix
98
+ */
99
+ private writeLines;
100
+ /**
101
+ * Log general information
102
+ */
103
+ info(...args: unknown[]): void;
104
+ /**
105
+ * Alias for info - general log
106
+ */
107
+ log(...args: unknown[]): void;
108
+ /**
109
+ * Log success message with Done prefix
110
+ */
111
+ success(...args: unknown[]): void;
112
+ /**
113
+ * Log success with a highlighted value (e.g., file size)
114
+ */
115
+ successWithValue(label: string, value: string): void;
116
+ /**
117
+ * Log success with duration
118
+ */
119
+ successWithDuration(message: string, ms: number): void;
120
+ /**
121
+ * Log warning to stderr
122
+ */
123
+ warn(...args: unknown[]): void;
124
+ /**
125
+ * Log error (with error badge, no prefix)
126
+ */
127
+ error(...args: unknown[]): void;
128
+ /**
129
+ * Write extension error block (for detailed error display)
130
+ */
131
+ writeErrorBlock(lines: string[]): void;
132
+ /**
133
+ * Format duration: >= 1000ms as "X.XXs", else "Xms"
134
+ */
135
+ formatDuration(ms: number): string;
136
+ /**
137
+ * Log entries table
138
+ */
139
+ logEntriesTable(entries: EntryTableRow[], options?: LogEntriesTableOptions): void;
140
+ /**
141
+ * Create OSC 8 hyperlink
142
+ */
143
+ private fileLink;
144
+ }
145
+ /** Default logger instance */
146
+ export declare const logger: Logger;
147
+ /** Log to stdout with [Addfox] prefix */
148
+ export declare function log(...args: unknown[]): void;
149
+ /** Log a completion step: [Addfox] + green "Done " + message */
150
+ export declare function logDone(...args: unknown[]): void;
151
+ /** Log a completion step with duration */
152
+ export declare function logDoneTimed(message: string, ms: number): void;
153
+ /** Log a completion step with a highlighted value */
154
+ export declare function logDoneWithValue(label: string, value: string): void;
155
+ /** Format duration helper */
156
+ export declare function formatDuration(ms: number): string;
157
+ /** Warn to stderr with [Addfox] prefix */
158
+ export declare function warn(...args: unknown[]): void;
159
+ /** Error to stderr (with error badge, no prefix) */
160
+ export declare function error(...args: unknown[]): void;
161
+ /** Write error block for extension errors */
162
+ export declare function writeExtensionErrorBlock(lines: string[]): void;
163
+ /** Log entries table */
164
+ export declare function logEntriesTable(entries: EntryTableRow[], options?: LogEntriesTableOptions): void;
165
+ /** Set raw writes for testing (e.g. capture stdout/stderr in unit tests). */
166
+ export declare function setAddfoxLoggerRawWrites(writes: {
167
+ stdout: WriteFn;
168
+ stderr: WriteFn;
169
+ } | null): void;
170
+ export type { Table } from "cli-table3";
171
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Cache utilities
3
+ */
4
+ /**
5
+ * Simple memory cache
6
+ */
7
+ export interface Cache<T> {
8
+ get(key: string): T | undefined;
9
+ set(key: string, value: T, ttlMs?: number): void;
10
+ has(key: string): boolean;
11
+ delete(key: string): boolean;
12
+ clear(): void;
13
+ keys(): string[];
14
+ size(): number;
15
+ }
16
+ /**
17
+ * Create a memory cache
18
+ */
19
+ export declare function createCache<T>(): Cache<T>;
20
+ /**
21
+ * Memoize a function
22
+ */
23
+ export declare function memoize<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => TReturn, keyFn?: (...args: TArgs) => string): (...args: TArgs) => TReturn;
24
+ /**
25
+ * Memoize an async function
26
+ */
27
+ export declare function memoizeAsync<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, keyFn?: (...args: TArgs) => string): (...args: TArgs) => Promise<TReturn>;
28
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,IAAI,IAAI,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CA6DzC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACtD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,EAC/B,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MAAM,GACjC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAc7B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EAC3D,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EACxC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MAAM,GACjC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CA4BtC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utility functions
3
+ */
4
+ export * from './cache.js';
5
+ export * from './pipeline.js';
6
+ export * from './object.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Object utilities
3
+ */
4
+ /**
5
+ * Deep merge objects
6
+ */
7
+ export declare function deepMerge<T extends Record<string, unknown>>(target: T, source: Record<string, unknown>): T;
8
+ /**
9
+ * Pick properties from object
10
+ */
11
+ export declare function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
12
+ /**
13
+ * Omit properties from object
14
+ */
15
+ export declare function omit<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
16
+ /**
17
+ * Get nested property value
18
+ */
19
+ export declare function get<T>(obj: unknown, path: string, defaultValue?: T): T | undefined;
20
+ /**
21
+ * Set nested property value
22
+ */
23
+ export declare function set<T extends Record<string, unknown>>(obj: T, path: string, value: unknown): T;
24
+ /**
25
+ * Check if object has property
26
+ */
27
+ export declare function has(obj: unknown, path: string): boolean;
28
+ /**
29
+ * Flatten object
30
+ */
31
+ export declare function flatten(obj: Record<string, unknown>, prefix?: string): Record<string, unknown>;
32
+ /**
33
+ * Unflatten object
34
+ */
35
+ export declare function unflatten(obj: Record<string, unknown>): Record<string, unknown>;
36
+ /**
37
+ * Filter object by predicate
38
+ */
39
+ export declare function filter<T extends Record<string, unknown>>(obj: T, predicate: (key: string, value: unknown) => boolean): Partial<T>;
40
+ /**
41
+ * Map object values
42
+ */
43
+ export declare function mapValues<T extends Record<string, unknown>, U>(obj: T, fn: (value: T[keyof T], key: string) => U): Record<keyof T, U>;
44
+ /**
45
+ * Check if value is plain object
46
+ */
47
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
48
+ /**
49
+ * Check if value is empty
50
+ */
51
+ export declare function isEmpty(value: unknown): boolean;
52
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../src/utils/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,CAAC,CAyBH;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACvE,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAUZ;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACvE,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAQZ;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAYlF;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnD,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,CAAC,CAeH;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBvD;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,SAAK,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ/E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,GAClD,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAC5D,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GACxC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAQpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAc/C"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Pipeline utilities for composing functions
3
+ */
4
+ import type { Pipeline, Middleware } from '../interfaces/index.js';
5
+ /**
6
+ * Compose functions left to right
7
+ */
8
+ export declare function pipe<T>(...fns: Array<(x: T) => T>): (x: T) => T;
9
+ /**
10
+ * Compose async functions left to right
11
+ */
12
+ export declare function pipeAsync<T>(...fns: Array<(x: T) => T | Promise<T>>): (x: T) => Promise<T>;
13
+ /**
14
+ * Compose functions right to left
15
+ */
16
+ export declare function compose<T>(...fns: Array<(x: T) => T>): (x: T) => T;
17
+ /**
18
+ * Create a pipeline from steps
19
+ */
20
+ export declare function createPipeline<TInput, TOutput>(...steps: Array<(input: TInput | TOutput) => TOutput | Promise<TOutput>>): Pipeline<TInput, TOutput>;
21
+ /**
22
+ * Apply middleware chain
23
+ */
24
+ export declare function applyMiddleware<T>(value: T, middlewares: Middleware<T>[]): T | Promise<T>;
25
+ /**
26
+ * Curry a function
27
+ */
28
+ export declare function curry<T1, T2, T3>(fn: (a: T1, b: T2) => T3): (a: T1) => (b: T2) => T3;
29
+ /**
30
+ * Partial application
31
+ */
32
+ export declare function partial<T1, T2 extends unknown[], TReturn>(fn: (a: T1, ...rest: T2) => TReturn, a: T1): (...rest: T2) => TReturn;
33
+ /**
34
+ * Tap - execute side effect and return original value
35
+ */
36
+ export declare function tap<T>(fn: (x: T) => void): (x: T) => T;
37
+ /**
38
+ * Try catch wrapper
39
+ */
40
+ export declare function tryCatch<T, E = Error>(fn: () => T, onError?: (error: E) => T): T | undefined;
41
+ /**
42
+ * Async try catch wrapper
43
+ */
44
+ export declare function tryCatchAsync<T, E = Error>(fn: () => Promise<T>, onError?: (error: E) => T | Promise<T>): Promise<T | undefined>;
45
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/utils/pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAE/D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAQ1F;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAC5C,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GACvE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAazF;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,GACvB,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAE1B;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EACvD,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,OAAO,EACnC,CAAC,EAAE,EAAE,GACJ,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,OAAO,CAE1B;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAKtD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EACnC,EAAE,EAAE,MAAM,CAAC,EACX,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACxB,CAAC,GAAG,SAAS,CAMf;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAC9C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAMxB"}
@@ -0,0 +1,4 @@
1
+ export declare function pushWebExtStdoutOrigin(): void;
2
+ export declare function popWebExtStdoutOrigin(): void;
3
+ export declare function getWebExtStdoutOriginDepth(): number;
4
+ //# sourceMappingURL=webExtStdoutOrigin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webExtStdoutOrigin.d.ts","sourceRoot":"","sources":["../../src/webExtStdoutOrigin.ts"],"names":[],"mappings":"AAMA,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@addfox/common",
3
+ "version": "0.1.1-beta.2",
4
+ "description": "Shared utilities for Addfox packages",
5
+ "type": "module",
6
+ "main": "./dist/cjs/index.cjs",
7
+ "module": "./dist/esm/index.js",
8
+ "types": "./dist/esm/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.cjs",
13
+ "types": "./dist/esm/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "cli-table3": "^0.6.5"
21
+ },
22
+ "devDependencies": {
23
+ "@rsbuild/core": "^1.0.0",
24
+ "@rslib/core": "^0.20.0",
25
+ "@rstest/core": "^0.9.2",
26
+ "@types/node": "^20.0.0",
27
+ "typescript": "^5.6.0"
28
+ },
29
+ "peerDependencies": {
30
+ "@rsbuild/core": "^1.0.0"
31
+ },
32
+ "scripts": {
33
+ "build": "rslib build",
34
+ "dev": "rslib build --watch",
35
+ "test": "rstest run"
36
+ }
37
+ }