observability-toolkit 1.8.4 → 1.8.5
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/dist/backends/local-jsonl-boolean-search.test.js +8 -8
- package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
- package/dist/backends/local-jsonl-cache.test.d.ts +2 -0
- package/dist/backends/local-jsonl-cache.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-cache.test.js +295 -0
- package/dist/backends/local-jsonl-cache.test.js.map +1 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.d.ts +2 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.js +180 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -0
- package/dist/backends/local-jsonl-export.test.d.ts +2 -0
- package/dist/backends/local-jsonl-export.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-export.test.js +704 -0
- package/dist/backends/local-jsonl-export.test.js.map +1 -0
- package/dist/backends/local-jsonl-index.test.d.ts +2 -0
- package/dist/backends/local-jsonl-index.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-index.test.js +554 -0
- package/dist/backends/local-jsonl-index.test.js.map +1 -0
- package/dist/backends/local-jsonl-logs.test.js +52 -43
- package/dist/backends/local-jsonl-logs.test.js.map +1 -1
- package/dist/backends/local-jsonl-metrics.test.d.ts +2 -0
- package/dist/backends/local-jsonl-metrics.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-metrics.test.js +876 -0
- package/dist/backends/local-jsonl-metrics.test.js.map +1 -0
- package/dist/backends/local-jsonl-traces.test.js +89 -83
- package/dist/backends/local-jsonl-traces.test.js.map +1 -1
- package/dist/backends/local-jsonl.d.ts +9 -0
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +348 -227
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/signoz-api-circuit-breaker.test.d.ts +6 -0
- package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-circuit-breaker.test.js +548 -0
- package/dist/backends/signoz-api-circuit-breaker.test.js.map +1 -0
- package/dist/backends/signoz-api-rate-limiter.test.d.ts +6 -0
- package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-rate-limiter.test.js +389 -0
- package/dist/backends/signoz-api-rate-limiter.test.js.map +1 -0
- package/dist/backends/signoz-api-ssrf.test.d.ts +6 -0
- package/dist/backends/signoz-api-ssrf.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-ssrf.test.js +216 -0
- package/dist/backends/signoz-api-ssrf.test.js.map +1 -0
- package/dist/backends/signoz-api-test-helpers.d.ts +80 -0
- package/dist/backends/signoz-api-test-helpers.d.ts.map +1 -0
- package/dist/backends/signoz-api-test-helpers.js +79 -0
- package/dist/backends/signoz-api-test-helpers.js.map +1 -0
- package/dist/backends/signoz-api.d.ts +16 -0
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.js +71 -9
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.d.ts +9 -0
- package/dist/backends/signoz-api.test.d.ts.map +1 -1
- package/dist/backends/signoz-api.test.js +14 -1027
- package/dist/backends/signoz-api.test.js.map +1 -1
- package/dist/lib/cache.d.ts +47 -1
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +40 -3
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/circuit-breaker.d.ts +83 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.js +125 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/circuit-breaker.test.d.ts +2 -0
- package/dist/lib/circuit-breaker.test.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.test.js +263 -0
- package/dist/lib/circuit-breaker.test.js.map +1 -0
- package/dist/lib/constants-symlink.test.d.ts +12 -0
- package/dist/lib/constants-symlink.test.d.ts.map +1 -0
- package/dist/lib/constants-symlink.test.js +357 -0
- package/dist/lib/constants-symlink.test.js.map +1 -0
- package/dist/lib/edge-cases.test.js +17 -17
- package/dist/lib/edge-cases.test.js.map +1 -1
- package/dist/lib/error-sanitizer.d.ts.map +1 -1
- package/dist/lib/error-sanitizer.js +29 -3
- package/dist/lib/error-sanitizer.js.map +1 -1
- package/dist/lib/error-sanitizer.test.js +159 -0
- package/dist/lib/error-sanitizer.test.js.map +1 -1
- package/dist/lib/error-types.d.ts +54 -0
- package/dist/lib/error-types.d.ts.map +1 -0
- package/dist/lib/error-types.js +154 -0
- package/dist/lib/error-types.js.map +1 -0
- package/dist/lib/error-types.test.d.ts +2 -0
- package/dist/lib/error-types.test.d.ts.map +1 -0
- package/dist/lib/error-types.test.js +196 -0
- package/dist/lib/error-types.test.js.map +1 -0
- package/dist/lib/indexer.test.js +27 -27
- package/dist/lib/indexer.test.js.map +1 -1
- package/dist/lib/input-validator.d.ts +12 -0
- package/dist/lib/input-validator.d.ts.map +1 -1
- package/dist/lib/input-validator.fuzz.test.d.ts +12 -0
- package/dist/lib/input-validator.fuzz.test.d.ts.map +1 -0
- package/dist/lib/input-validator.fuzz.test.js +290 -0
- package/dist/lib/input-validator.fuzz.test.js.map +1 -0
- package/dist/lib/input-validator.js +57 -3
- package/dist/lib/input-validator.js.map +1 -1
- package/dist/lib/input-validator.test.js +129 -1
- package/dist/lib/input-validator.test.js.map +1 -1
- package/dist/lib/logger.d.ts +46 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +81 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/logger.test.d.ts +2 -0
- package/dist/lib/logger.test.d.ts.map +1 -0
- package/dist/lib/logger.test.js +122 -0
- package/dist/lib/logger.test.js.map +1 -0
- package/dist/lib/server-utils.d.ts +8 -0
- package/dist/lib/server-utils.d.ts.map +1 -1
- package/dist/lib/server-utils.js +34 -2
- package/dist/lib/server-utils.js.map +1 -1
- package/dist/lib/shared-schemas.d.ts +22 -0
- package/dist/lib/shared-schemas.d.ts.map +1 -1
- package/dist/lib/shared-schemas.js +22 -0
- package/dist/lib/shared-schemas.js.map +1 -1
- package/dist/lib/toon-encoder.d.ts +7 -2
- package/dist/lib/toon-encoder.d.ts.map +1 -1
- package/dist/lib/toon-encoder.js +21 -6
- package/dist/lib/toon-encoder.js.map +1 -1
- package/dist/lib/toon-encoder.test.d.ts +5 -0
- package/dist/lib/toon-encoder.test.d.ts.map +1 -0
- package/dist/lib/toon-encoder.test.js +85 -0
- package/dist/lib/toon-encoder.test.js.map +1 -0
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +30 -0
- package/dist/server.test.js.map +1 -1
- package/dist/test-helpers/env-utils.d.ts +22 -0
- package/dist/test-helpers/env-utils.d.ts.map +1 -1
- package/dist/test-helpers/env-utils.js +38 -0
- package/dist/test-helpers/env-utils.js.map +1 -1
- package/dist/test-helpers/fuzz-generators.d.ts +58 -0
- package/dist/test-helpers/fuzz-generators.d.ts.map +1 -0
- package/dist/test-helpers/fuzz-generators.js +216 -0
- package/dist/test-helpers/fuzz-generators.js.map +1 -0
- package/dist/test-helpers/index.d.ts +1 -0
- package/dist/test-helpers/index.d.ts.map +1 -1
- package/dist/test-helpers/index.js +2 -0
- package/dist/test-helpers/index.js.map +1 -1
- package/dist/test-helpers/memfs-utils.d.ts +181 -0
- package/dist/test-helpers/memfs-utils.d.ts.map +1 -0
- package/dist/test-helpers/memfs-utils.js +292 -0
- package/dist/test-helpers/memfs-utils.js.map +1 -0
- package/dist/test-helpers/memfs-utils.test.d.ts +5 -0
- package/dist/test-helpers/memfs-utils.test.d.ts.map +1 -0
- package/dist/test-helpers/memfs-utils.test.js +338 -0
- package/dist/test-helpers/memfs-utils.test.js.map +1 -0
- package/dist/test-helpers/race-condition-helpers.d.ts +85 -0
- package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -0
- package/dist/test-helpers/race-condition-helpers.js +279 -0
- package/dist/test-helpers/race-condition-helpers.js.map +1 -0
- package/dist/test-helpers/test-data-builders.d.ts +40 -3
- package/dist/test-helpers/test-data-builders.d.ts.map +1 -1
- package/dist/test-helpers/test-data-builders.js +54 -5
- package/dist/test-helpers/test-data-builders.js.map +1 -1
- package/dist/test-helpers/tool-validators.d.ts.map +1 -1
- package/dist/test-helpers/tool-validators.js +16 -1
- package/dist/test-helpers/tool-validators.js.map +1 -1
- package/dist/tools/query-evaluations.d.ts.map +1 -1
- package/dist/tools/query-evaluations.js +16 -2
- package/dist/tools/query-evaluations.js.map +1 -1
- package/dist/tools/query-evaluations.test.js +53 -46
- package/dist/tools/query-evaluations.test.js.map +1 -1
- package/dist/tools/query-llm-events.test.js +6 -3
- package/dist/tools/query-llm-events.test.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fuzzing utilities for security testing
|
|
3
|
+
*
|
|
4
|
+
* Provides generators for random inputs to test input validation resilience.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a random Unicode string of specified length
|
|
8
|
+
* Includes various Unicode ranges for thorough testing
|
|
9
|
+
*/
|
|
10
|
+
export function generateRandomUnicodeString(length) {
|
|
11
|
+
const ranges = [
|
|
12
|
+
[0x0020, 0x007E], // Basic Latin
|
|
13
|
+
[0x00A0, 0x00FF], // Latin-1 Supplement
|
|
14
|
+
[0x0100, 0x017F], // Latin Extended-A
|
|
15
|
+
[0x0400, 0x04FF], // Cyrillic
|
|
16
|
+
[0x0600, 0x06FF], // Arabic
|
|
17
|
+
[0x4E00, 0x4FFF], // CJK Unified Ideographs (subset)
|
|
18
|
+
[0x1F300, 0x1F3FF], // Misc Symbols and Pictographs
|
|
19
|
+
];
|
|
20
|
+
let result = '';
|
|
21
|
+
for (let i = 0; i < length; i++) {
|
|
22
|
+
const range = ranges[Math.floor(Math.random() * ranges.length)];
|
|
23
|
+
const codePoint = Math.floor(Math.random() * (range[1] - range[0] + 1)) + range[0];
|
|
24
|
+
result += String.fromCodePoint(codePoint);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate a random number in the specified range
|
|
30
|
+
*/
|
|
31
|
+
export function generateRandomNumber(min, max) {
|
|
32
|
+
return Math.random() * (max - min) + min;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate a random integer in the specified range
|
|
36
|
+
*/
|
|
37
|
+
export function generateRandomInteger(min, max) {
|
|
38
|
+
return Math.floor(generateRandomNumber(min, max + 1));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate a random date string (may be invalid)
|
|
42
|
+
*/
|
|
43
|
+
export function generateRandomDateString() {
|
|
44
|
+
const formats = [
|
|
45
|
+
// Valid-ish formats
|
|
46
|
+
() => `${generateRandomInteger(1900, 2100)}-${String(generateRandomInteger(1, 12)).padStart(2, '0')}-${String(generateRandomInteger(1, 31)).padStart(2, '0')}`,
|
|
47
|
+
// Invalid formats
|
|
48
|
+
() => `${generateRandomInteger(1, 9999)}/${generateRandomInteger(1, 12)}/${generateRandomInteger(1, 31)}`,
|
|
49
|
+
() => `${String(generateRandomInteger(1, 31)).padStart(2, '0')}-${String(generateRandomInteger(1, 12)).padStart(2, '0')}-${generateRandomInteger(1900, 2100)}`,
|
|
50
|
+
() => generateRandomUnicodeString(10),
|
|
51
|
+
() => `${generateRandomInteger(-1000, 10000)}-${generateRandomInteger(-5, 15)}-${generateRandomInteger(-5, 40)}`,
|
|
52
|
+
() => '',
|
|
53
|
+
() => 'NaN-NaN-NaN',
|
|
54
|
+
() => '0000-00-00',
|
|
55
|
+
() => '9999-99-99',
|
|
56
|
+
];
|
|
57
|
+
return formats[Math.floor(Math.random() * formats.length)]();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get common SQL injection payloads for testing
|
|
61
|
+
*/
|
|
62
|
+
export function getSqlInjectionPayloads() {
|
|
63
|
+
return [
|
|
64
|
+
"'; DROP TABLE traces; --",
|
|
65
|
+
"1' OR '1'='1",
|
|
66
|
+
"1; SELECT * FROM users",
|
|
67
|
+
"' UNION SELECT * FROM secrets --",
|
|
68
|
+
"1 AND 1=1",
|
|
69
|
+
"' OR 1=1 --",
|
|
70
|
+
"admin'--",
|
|
71
|
+
"1'1",
|
|
72
|
+
"1' AND '1'='1",
|
|
73
|
+
"'; EXEC xp_cmdshell('dir'); --",
|
|
74
|
+
"1; WAITFOR DELAY '00:00:05'",
|
|
75
|
+
"' OR ''='",
|
|
76
|
+
"1' OR '1'='1' /*",
|
|
77
|
+
"1' ORDER BY 1--",
|
|
78
|
+
"'||'",
|
|
79
|
+
"' HAVING 1=1 --",
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get common path traversal payloads for testing
|
|
84
|
+
*/
|
|
85
|
+
export function getPathTraversalPayloads() {
|
|
86
|
+
return [
|
|
87
|
+
'../../../etc/passwd',
|
|
88
|
+
'..\\..\\..\\windows\\system32\\config\\sam',
|
|
89
|
+
'....//....//....//etc/passwd',
|
|
90
|
+
'..%2f..%2f..%2fetc%2fpasswd',
|
|
91
|
+
'..%252f..%252f..%252fetc%252fpasswd',
|
|
92
|
+
'%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd',
|
|
93
|
+
'..%c0%af..%c0%af..%c0%afetc/passwd',
|
|
94
|
+
'/etc/passwd%00.txt',
|
|
95
|
+
'../../../etc/passwd\0',
|
|
96
|
+
'..\\..\\..\\etc\\passwd',
|
|
97
|
+
'....//....//etc/passwd',
|
|
98
|
+
'..;/..;/..;/etc/passwd',
|
|
99
|
+
'../.../.../.../etc/passwd',
|
|
100
|
+
'/....//....//etc/passwd',
|
|
101
|
+
'..%00/..%00/..%00/etc/passwd',
|
|
102
|
+
];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get common XSS payloads for testing
|
|
106
|
+
*/
|
|
107
|
+
export function getXssPayloads() {
|
|
108
|
+
return [
|
|
109
|
+
'<script>alert(1)</script>',
|
|
110
|
+
'"><script>alert(1)</script>',
|
|
111
|
+
"javascript:alert('XSS')",
|
|
112
|
+
'<img src=x onerror=alert(1)>',
|
|
113
|
+
'<svg onload=alert(1)>',
|
|
114
|
+
'\'"><img src=x onerror=alert(1)>',
|
|
115
|
+
'<body onload=alert(1)>',
|
|
116
|
+
'<iframe src="javascript:alert(1)">',
|
|
117
|
+
'{{constructor.constructor("alert(1)")()}}',
|
|
118
|
+
'${alert(1)}',
|
|
119
|
+
'<input onfocus=alert(1) autofocus>',
|
|
120
|
+
'<marquee onstart=alert(1)>',
|
|
121
|
+
'<details open ontoggle=alert(1)>',
|
|
122
|
+
'<audio src=x onerror=alert(1)>',
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get special number edge cases for testing
|
|
127
|
+
*/
|
|
128
|
+
export function getSpecialNumbers() {
|
|
129
|
+
return [
|
|
130
|
+
0,
|
|
131
|
+
-0,
|
|
132
|
+
1,
|
|
133
|
+
-1,
|
|
134
|
+
Number.MAX_VALUE,
|
|
135
|
+
Number.MIN_VALUE,
|
|
136
|
+
Number.MAX_SAFE_INTEGER,
|
|
137
|
+
Number.MIN_SAFE_INTEGER,
|
|
138
|
+
Number.POSITIVE_INFINITY,
|
|
139
|
+
Number.NEGATIVE_INFINITY,
|
|
140
|
+
Number.NaN,
|
|
141
|
+
Number.EPSILON,
|
|
142
|
+
Math.PI,
|
|
143
|
+
Math.E,
|
|
144
|
+
0.1 + 0.2, // Floating point precision
|
|
145
|
+
2 ** 53, // Just beyond MAX_SAFE_INTEGER
|
|
146
|
+
-(2 ** 53), // Negative beyond MIN_SAFE_INTEGER
|
|
147
|
+
1e308, // Near MAX_VALUE
|
|
148
|
+
1e-308, // Near MIN_VALUE (denormalized)
|
|
149
|
+
0.0000001,
|
|
150
|
+
-0.0000001,
|
|
151
|
+
86400000, // 24 hours in ms (MAX_DURATION_MS)
|
|
152
|
+
86400001, // Just over MAX_DURATION_MS
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Generate control character strings for testing
|
|
157
|
+
*/
|
|
158
|
+
export function getControlCharacterStrings() {
|
|
159
|
+
return [
|
|
160
|
+
'\x00', // null
|
|
161
|
+
'\x01', // start of heading
|
|
162
|
+
'\x07', // bell
|
|
163
|
+
'\x08', // backspace
|
|
164
|
+
'\x09', // tab
|
|
165
|
+
'\x0A', // line feed
|
|
166
|
+
'\x0B', // vertical tab
|
|
167
|
+
'\x0C', // form feed
|
|
168
|
+
'\x0D', // carriage return
|
|
169
|
+
'\x1B', // escape
|
|
170
|
+
'\x7F', // delete
|
|
171
|
+
'\x00\x00\x00', // multiple nulls
|
|
172
|
+
'test\x00hidden', // null byte injection
|
|
173
|
+
'test\x0Anewline', // embedded newline
|
|
174
|
+
'\r\n\r\n', // CRLF injection
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Generate regex patterns that could cause ReDoS
|
|
179
|
+
*/
|
|
180
|
+
export function getRedosPatterns() {
|
|
181
|
+
return [
|
|
182
|
+
'(a+)+$',
|
|
183
|
+
'([a-zA-Z]+)*',
|
|
184
|
+
'(a|aa)+',
|
|
185
|
+
'(a|a?)+',
|
|
186
|
+
'(.*a){25}',
|
|
187
|
+
'([a-z]+)+\\s',
|
|
188
|
+
'^(a+)+b$',
|
|
189
|
+
'(x+x+)+y',
|
|
190
|
+
'(a+)+ab',
|
|
191
|
+
'([^\\s]+)+\\s',
|
|
192
|
+
'(\\w+)+@',
|
|
193
|
+
'([a-zA-Z0-9]+)+\\.',
|
|
194
|
+
];
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Run a function multiple times with random inputs
|
|
198
|
+
*/
|
|
199
|
+
export function fuzz(generator, fn, iterations = 100) {
|
|
200
|
+
let passed = 0;
|
|
201
|
+
let failed = 0;
|
|
202
|
+
const errors = [];
|
|
203
|
+
for (let i = 0; i < iterations; i++) {
|
|
204
|
+
const input = generator();
|
|
205
|
+
try {
|
|
206
|
+
fn(input);
|
|
207
|
+
passed++;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
failed++;
|
|
211
|
+
errors.push({ input, error });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return { passed, failed, errors };
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=fuzz-generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzz-generators.js","sourceRoot":"","sources":["../../src/test-helpers/fuzz-generators.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,4 +7,5 @@ export { type ToolDefinition, validateToolDefinition, validateHandlerExport, } f
|
|
|
7
7
|
export { validateBackendSchema, validateLimitSchema, validateDateRangeSchema, } from './schema-validators.js';
|
|
8
8
|
export { SIGNOZ_ENV_VARS, type EnvSnapshot, type HomeEnvScope, captureEnv, restoreEnv, clearSigNozEnv, setSigNozEnv, createEnvScope, setHomeEnv, restoreHomeEnv, } from './env-utils.js';
|
|
9
9
|
export { TEST_TIMESTAMP_BASE, TEST_TIMESTAMP, TEST_TIMESTAMP_ISO, TEST_DURATION, TEST_DURATION_MS, type MockSpan, type MockLog, type MockMetric, type MockLLMEvent, type MockEvaluation, resetBuilderCounters, createMockSpan, createMockSpans, createMockLog, createMockLogs, createMockMetric, createMockMetrics, createMockLLMEvent, createMockLLMEvents, createMockEvaluation, createMockEvaluations, createHttpSpan, createDbSpan, createErrorLog, createCorrelatedLog, createHistogramMetric, createLLMEventWithTokens, createScoredEvaluation, createLabeledEvaluation, } from './test-data-builders.js';
|
|
10
|
+
export { type MemFsInstance, createMemFs, writeJsonlMem, writeFileMem, readFileMem, readJsonlMem, readJsonlMemWithStats, streamJsonlMem, existsMem, mkdirMem, readdirMem, listFilesMem, listFilesInRangeMem, getTestDateMem, getSharedMemFs, resetSharedMemFs, removeSharedMemFs, cleanupAllSharedMemFs, } from './memfs-utils.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,WAAW,EAEX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EAExB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EAEpB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EAEvB,KAAK,aAAa,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,KAAK,cAAc,EACnB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAEL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAEhB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,cAAc,EAEnB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EAErB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,WAAW,EAEX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EAExB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EAEpB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EAEvB,KAAK,aAAa,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,KAAK,cAAc,EACnB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAEL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAEhB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,cAAc,EAEnB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EAErB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,aAAa,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
|
|
@@ -25,4 +25,6 @@ TEST_TIMESTAMP_BASE, TEST_TIMESTAMP, TEST_TIMESTAMP_ISO, TEST_DURATION, TEST_DUR
|
|
|
25
25
|
resetBuilderCounters, createMockSpan, createMockSpans, createMockLog, createMockLogs, createMockMetric, createMockMetrics, createMockLLMEvent, createMockLLMEvents, createMockEvaluation, createMockEvaluations,
|
|
26
26
|
// Specialized builders
|
|
27
27
|
createHttpSpan, createDbSpan, createErrorLog, createCorrelatedLog, createHistogramMetric, createLLMEventWithTokens, createScoredEvaluation, createLabeledEvaluation, } from './test-data-builders.js';
|
|
28
|
+
// In-memory file system utilities (memfs)
|
|
29
|
+
export { createMemFs, writeJsonlMem, writeFileMem, readFileMem, readJsonlMem, readJsonlMemWithStats, streamJsonlMem, existsMem, mkdirMem, readdirMem, listFilesMem, listFilesInRangeMem, getTestDateMem, getSharedMemFs, resetSharedMemFs, removeSharedMemFs, cleanupAllSharedMemFs, } from './memfs-utils.js';
|
|
28
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,WAAW;AACX,gDAAgD;AAChD,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB;AACxB,4BAA4B;AAC5B,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,gBAAgB;AAChB,OAAO;AAKL,wCAAwC;AACxC,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EAGvB,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,kBAAkB;AAClB,OAAO,EAEL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,wBAAwB;AACxB,OAAO,EACL,eAAe,EAGf,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO;AACL,YAAY;AACZ,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB;AAOhB,gBAAgB;AAChB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB;AACrB,uBAAuB;AACvB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,WAAW;AACX,gDAAgD;AAChD,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB;AACxB,4BAA4B;AAC5B,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,gBAAgB;AAChB,OAAO;AAKL,wCAAwC;AACxC,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EAGvB,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,kBAAkB;AAClB,OAAO,EAEL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,wBAAwB;AACxB,OAAO,EACL,eAAe,EAGf,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO;AACL,YAAY;AACZ,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB;AAOhB,gBAAgB;AAChB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB;AACrB,uBAAuB;AACvB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,0CAA0C;AAC1C,OAAO,EAEL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory file system utilities for tests
|
|
3
|
+
*
|
|
4
|
+
* Uses memfs to provide a virtual file system that avoids disk I/O.
|
|
5
|
+
* Tests can use createMemFs() to get an isolated fs instance and directory.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createMemFs, writeJsonlMem } from '../test-helpers/memfs-utils.js';
|
|
10
|
+
*
|
|
11
|
+
* describe('MyTest', () => {
|
|
12
|
+
* let mfs: MemFsInstance;
|
|
13
|
+
*
|
|
14
|
+
* beforeEach(() => {
|
|
15
|
+
* mfs = createMemFs();
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* it('should work', async () => {
|
|
19
|
+
* writeJsonlMem(mfs, 'traces-2026-01-31.jsonl', [{ traceId: 't1' }]);
|
|
20
|
+
* // mfs.dir contains the path prefix to use
|
|
21
|
+
* const backend = new LocalJsonlBackend(mfs.dir, { fs: mfs.fs });
|
|
22
|
+
* });
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import { Volume, type IFs } from 'memfs';
|
|
27
|
+
/** Memfs instance with isolated volume */
|
|
28
|
+
export interface MemFsInstance {
|
|
29
|
+
/** The memfs filesystem interface (compatible with node:fs) */
|
|
30
|
+
fs: IFs;
|
|
31
|
+
/** The underlying volume (for advanced operations) */
|
|
32
|
+
vol: InstanceType<typeof Volume>;
|
|
33
|
+
/** The base directory path (e.g., '/test-data') */
|
|
34
|
+
dir: string;
|
|
35
|
+
/** Reset the volume (clear all files) */
|
|
36
|
+
reset: () => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a new in-memory file system instance
|
|
40
|
+
*
|
|
41
|
+
* Each call creates an isolated volume with its own directory.
|
|
42
|
+
* The returned fs object is compatible with node:fs operations.
|
|
43
|
+
*
|
|
44
|
+
* @param prefix - Optional prefix for the directory name
|
|
45
|
+
* @returns MemFsInstance with fs, vol, dir, and reset function
|
|
46
|
+
*/
|
|
47
|
+
export declare function createMemFs(prefix?: string): MemFsInstance;
|
|
48
|
+
/**
|
|
49
|
+
* Write JSONL data to an in-memory file
|
|
50
|
+
*
|
|
51
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
52
|
+
* @param filename - Filename (not full path) to write
|
|
53
|
+
* @param data - Array of objects to write as JSONL
|
|
54
|
+
*/
|
|
55
|
+
export declare function writeJsonlMem(mfs: MemFsInstance, filename: string, data: unknown[]): void;
|
|
56
|
+
/**
|
|
57
|
+
* Write raw content to an in-memory file
|
|
58
|
+
*
|
|
59
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
60
|
+
* @param filename - Filename (not full path) to write
|
|
61
|
+
* @param content - Content to write (string or Buffer)
|
|
62
|
+
*/
|
|
63
|
+
export declare function writeFileMem(mfs: MemFsInstance, filename: string, content: string | Buffer): void;
|
|
64
|
+
/**
|
|
65
|
+
* Read file content from in-memory file system
|
|
66
|
+
*
|
|
67
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
68
|
+
* @param filename - Filename (not full path) to read
|
|
69
|
+
* @returns File content as string
|
|
70
|
+
*/
|
|
71
|
+
export declare function readFileMem(mfs: MemFsInstance, filename: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Check if a file exists in the in-memory file system
|
|
74
|
+
*
|
|
75
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
76
|
+
* @param filename - Filename (not full path) to check
|
|
77
|
+
* @returns true if file exists
|
|
78
|
+
*/
|
|
79
|
+
export declare function existsMem(mfs: MemFsInstance, filename: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Create a subdirectory in the in-memory file system
|
|
82
|
+
*
|
|
83
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
84
|
+
* @param dirname - Directory name to create (relative to mfs.dir)
|
|
85
|
+
*/
|
|
86
|
+
export declare function mkdirMem(mfs: MemFsInstance, dirname: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* List files in a directory in the in-memory file system
|
|
89
|
+
*
|
|
90
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
91
|
+
* @param dirname - Optional subdirectory (defaults to mfs.dir)
|
|
92
|
+
* @returns Array of filenames
|
|
93
|
+
*/
|
|
94
|
+
export declare function readdirMem(mfs: MemFsInstance, dirname?: string): string[];
|
|
95
|
+
/**
|
|
96
|
+
* Get today's date in YYYY-MM-DD format
|
|
97
|
+
* @returns Today's date string
|
|
98
|
+
*/
|
|
99
|
+
export declare function getTestDateMem(): string;
|
|
100
|
+
/**
|
|
101
|
+
* Get or create a shared memfs instance for a test suite
|
|
102
|
+
*
|
|
103
|
+
* Use this when multiple tests in a suite can share the same in-memory fs.
|
|
104
|
+
* Call resetSharedMemFs() in beforeEach to clear files between tests.
|
|
105
|
+
*
|
|
106
|
+
* @param suiteId - Unique identifier for the test suite
|
|
107
|
+
* @returns Shared MemFsInstance
|
|
108
|
+
*/
|
|
109
|
+
export declare function getSharedMemFs(suiteId: string): MemFsInstance;
|
|
110
|
+
/**
|
|
111
|
+
* Reset (clear) a shared memfs instance
|
|
112
|
+
*
|
|
113
|
+
* Call this in beforeEach to ensure clean state between tests.
|
|
114
|
+
*
|
|
115
|
+
* @param suiteId - Unique identifier for the test suite
|
|
116
|
+
*/
|
|
117
|
+
export declare function resetSharedMemFs(suiteId: string): void;
|
|
118
|
+
/**
|
|
119
|
+
* Remove a shared memfs instance
|
|
120
|
+
*
|
|
121
|
+
* Call this in after() to clean up suite-level resources.
|
|
122
|
+
*
|
|
123
|
+
* @param suiteId - Unique identifier for the test suite
|
|
124
|
+
*/
|
|
125
|
+
export declare function removeSharedMemFs(suiteId: string): void;
|
|
126
|
+
/**
|
|
127
|
+
* Clean up all shared memfs instances
|
|
128
|
+
*
|
|
129
|
+
* Useful for global test teardown.
|
|
130
|
+
*/
|
|
131
|
+
export declare function cleanupAllSharedMemFs(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Read JSONL content from in-memory file and parse to objects
|
|
134
|
+
*
|
|
135
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
136
|
+
* @param filename - Filename (not full path) to read
|
|
137
|
+
* @returns Array of parsed objects (skips invalid lines)
|
|
138
|
+
*/
|
|
139
|
+
export declare function readJsonlMem<T = unknown>(mfs: MemFsInstance, filename: string): T[];
|
|
140
|
+
/**
|
|
141
|
+
* Read JSONL content with stats (mirrors readJsonlSyncWithStats)
|
|
142
|
+
*
|
|
143
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
144
|
+
* @param filename - Filename (not full path) to read
|
|
145
|
+
* @returns Object with data array and stats
|
|
146
|
+
*/
|
|
147
|
+
export declare function readJsonlMemWithStats<T = unknown>(mfs: MemFsInstance, filename: string): {
|
|
148
|
+
data: T[];
|
|
149
|
+
stats: {
|
|
150
|
+
totalLines: number;
|
|
151
|
+
skippedLines: number;
|
|
152
|
+
emptyLines: number;
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Async generator for streaming JSONL from memfs (mirrors streamJsonl)
|
|
157
|
+
*
|
|
158
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
159
|
+
* @param filename - Filename (not full path) to read
|
|
160
|
+
* @yields Parsed objects from each line
|
|
161
|
+
*/
|
|
162
|
+
export declare function streamJsonlMem<T = unknown>(mfs: MemFsInstance, filename: string): AsyncGenerator<T, void, unknown>;
|
|
163
|
+
/**
|
|
164
|
+
* List files matching a pattern prefix in the memfs directory
|
|
165
|
+
*
|
|
166
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
167
|
+
* @param prefix - Filename prefix to match (e.g., 'traces-')
|
|
168
|
+
* @returns Array of matching filenames
|
|
169
|
+
*/
|
|
170
|
+
export declare function listFilesMem(mfs: MemFsInstance, prefix: string): string[];
|
|
171
|
+
/**
|
|
172
|
+
* List files matching a date range pattern
|
|
173
|
+
*
|
|
174
|
+
* @param mfs - MemFsInstance from createMemFs()
|
|
175
|
+
* @param type - Telemetry type prefix (e.g., 'traces', 'logs')
|
|
176
|
+
* @param startDate - Optional start date (YYYY-MM-DD)
|
|
177
|
+
* @param endDate - Optional end date (YYYY-MM-DD)
|
|
178
|
+
* @returns Array of matching full paths
|
|
179
|
+
*/
|
|
180
|
+
export declare function listFilesInRangeMem(mfs: MemFsInstance, type: string, startDate?: string, endDate?: string): string[];
|
|
181
|
+
//# sourceMappingURL=memfs-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memfs-utils.d.ts","sourceRoot":"","sources":["../../src/test-helpers/memfs-utils.ts"],"names":[],"mappings":"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"}
|