observability-toolkit 1.8.2 → 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.
Files changed (259) hide show
  1. package/README.md +60 -0
  2. package/dist/backends/index.d.ts +43 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +41 -0
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/index.test.d.ts +5 -0
  7. package/dist/backends/index.test.d.ts.map +1 -0
  8. package/dist/backends/index.test.js +156 -0
  9. package/dist/backends/index.test.js.map +1 -0
  10. package/dist/backends/local-jsonl-boolean-search.test.js +15 -12
  11. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  12. package/dist/backends/local-jsonl-cache.test.d.ts +2 -0
  13. package/dist/backends/local-jsonl-cache.test.d.ts.map +1 -0
  14. package/dist/backends/local-jsonl-cache.test.js +295 -0
  15. package/dist/backends/local-jsonl-cache.test.js.map +1 -0
  16. package/dist/backends/local-jsonl-circuit-breaker.test.d.ts +2 -0
  17. package/dist/backends/local-jsonl-circuit-breaker.test.d.ts.map +1 -0
  18. package/dist/backends/local-jsonl-circuit-breaker.test.js +180 -0
  19. package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -0
  20. package/dist/backends/local-jsonl-export.test.d.ts +2 -0
  21. package/dist/backends/local-jsonl-export.test.d.ts.map +1 -0
  22. package/dist/backends/local-jsonl-export.test.js +704 -0
  23. package/dist/backends/local-jsonl-export.test.js.map +1 -0
  24. package/dist/backends/local-jsonl-index.test.d.ts +2 -0
  25. package/dist/backends/local-jsonl-index.test.d.ts.map +1 -0
  26. package/dist/backends/local-jsonl-index.test.js +554 -0
  27. package/dist/backends/local-jsonl-index.test.js.map +1 -0
  28. package/dist/backends/local-jsonl-logs.test.d.ts +2 -0
  29. package/dist/backends/local-jsonl-logs.test.d.ts.map +1 -0
  30. package/dist/backends/local-jsonl-logs.test.js +612 -0
  31. package/dist/backends/local-jsonl-logs.test.js.map +1 -0
  32. package/dist/backends/local-jsonl-metrics.test.d.ts +2 -0
  33. package/dist/backends/local-jsonl-metrics.test.d.ts.map +1 -0
  34. package/dist/backends/local-jsonl-metrics.test.js +876 -0
  35. package/dist/backends/local-jsonl-metrics.test.js.map +1 -0
  36. package/dist/backends/local-jsonl-traces.test.d.ts +2 -0
  37. package/dist/backends/local-jsonl-traces.test.d.ts.map +1 -0
  38. package/dist/backends/local-jsonl-traces.test.js +1729 -0
  39. package/dist/backends/local-jsonl-traces.test.js.map +1 -0
  40. package/dist/backends/local-jsonl.d.ts +9 -0
  41. package/dist/backends/local-jsonl.d.ts.map +1 -1
  42. package/dist/backends/local-jsonl.js +348 -227
  43. package/dist/backends/local-jsonl.js.map +1 -1
  44. package/dist/backends/local-jsonl.test.js +290 -21
  45. package/dist/backends/local-jsonl.test.js.map +1 -1
  46. package/dist/backends/signoz-api-circuit-breaker.test.d.ts +6 -0
  47. package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +1 -0
  48. package/dist/backends/signoz-api-circuit-breaker.test.js +548 -0
  49. package/dist/backends/signoz-api-circuit-breaker.test.js.map +1 -0
  50. package/dist/backends/signoz-api-rate-limiter.test.d.ts +6 -0
  51. package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +1 -0
  52. package/dist/backends/signoz-api-rate-limiter.test.js +389 -0
  53. package/dist/backends/signoz-api-rate-limiter.test.js.map +1 -0
  54. package/dist/backends/signoz-api-ssrf.test.d.ts +6 -0
  55. package/dist/backends/signoz-api-ssrf.test.d.ts.map +1 -0
  56. package/dist/backends/signoz-api-ssrf.test.js +216 -0
  57. package/dist/backends/signoz-api-ssrf.test.js.map +1 -0
  58. package/dist/backends/signoz-api-test-helpers.d.ts +80 -0
  59. package/dist/backends/signoz-api-test-helpers.d.ts.map +1 -0
  60. package/dist/backends/signoz-api-test-helpers.js +79 -0
  61. package/dist/backends/signoz-api-test-helpers.js.map +1 -0
  62. package/dist/backends/signoz-api.d.ts +16 -0
  63. package/dist/backends/signoz-api.d.ts.map +1 -1
  64. package/dist/backends/signoz-api.js +71 -9
  65. package/dist/backends/signoz-api.js.map +1 -1
  66. package/dist/backends/signoz-api.test.d.ts +9 -0
  67. package/dist/backends/signoz-api.test.d.ts.map +1 -1
  68. package/dist/backends/signoz-api.test.js +14 -1027
  69. package/dist/backends/signoz-api.test.js.map +1 -1
  70. package/dist/lib/cache.d.ts +47 -1
  71. package/dist/lib/cache.d.ts.map +1 -1
  72. package/dist/lib/cache.js +40 -3
  73. package/dist/lib/cache.js.map +1 -1
  74. package/dist/lib/circuit-breaker.d.ts +83 -0
  75. package/dist/lib/circuit-breaker.d.ts.map +1 -0
  76. package/dist/lib/circuit-breaker.js +125 -0
  77. package/dist/lib/circuit-breaker.js.map +1 -0
  78. package/dist/lib/circuit-breaker.test.d.ts +2 -0
  79. package/dist/lib/circuit-breaker.test.d.ts.map +1 -0
  80. package/dist/lib/circuit-breaker.test.js +263 -0
  81. package/dist/lib/circuit-breaker.test.js.map +1 -0
  82. package/dist/lib/constants-symlink.test.d.ts +12 -0
  83. package/dist/lib/constants-symlink.test.d.ts.map +1 -0
  84. package/dist/lib/constants-symlink.test.js +357 -0
  85. package/dist/lib/constants-symlink.test.js.map +1 -0
  86. package/dist/lib/constants.d.ts +43 -0
  87. package/dist/lib/constants.d.ts.map +1 -1
  88. package/dist/lib/constants.js +154 -24
  89. package/dist/lib/constants.js.map +1 -1
  90. package/dist/lib/constants.test.js +156 -7
  91. package/dist/lib/constants.test.js.map +1 -1
  92. package/dist/lib/edge-cases.test.d.ts +11 -0
  93. package/dist/lib/edge-cases.test.d.ts.map +1 -0
  94. package/dist/lib/edge-cases.test.js +634 -0
  95. package/dist/lib/edge-cases.test.js.map +1 -0
  96. package/dist/lib/error-sanitizer.d.ts.map +1 -1
  97. package/dist/lib/error-sanitizer.js +62 -26
  98. package/dist/lib/error-sanitizer.js.map +1 -1
  99. package/dist/lib/error-sanitizer.test.js +186 -0
  100. package/dist/lib/error-sanitizer.test.js.map +1 -1
  101. package/dist/lib/error-types.d.ts +54 -0
  102. package/dist/lib/error-types.d.ts.map +1 -0
  103. package/dist/lib/error-types.js +154 -0
  104. package/dist/lib/error-types.js.map +1 -0
  105. package/dist/lib/error-types.test.d.ts +2 -0
  106. package/dist/lib/error-types.test.d.ts.map +1 -0
  107. package/dist/lib/error-types.test.js +196 -0
  108. package/dist/lib/error-types.test.js.map +1 -0
  109. package/dist/lib/file-utils.test.js +3 -3
  110. package/dist/lib/file-utils.test.js.map +1 -1
  111. package/dist/lib/indexer.test.js +157 -24
  112. package/dist/lib/indexer.test.js.map +1 -1
  113. package/dist/lib/input-validator.d.ts +17 -0
  114. package/dist/lib/input-validator.d.ts.map +1 -1
  115. package/dist/lib/input-validator.fuzz.test.d.ts +12 -0
  116. package/dist/lib/input-validator.fuzz.test.d.ts.map +1 -0
  117. package/dist/lib/input-validator.fuzz.test.js +290 -0
  118. package/dist/lib/input-validator.fuzz.test.js.map +1 -0
  119. package/dist/lib/input-validator.js +62 -3
  120. package/dist/lib/input-validator.js.map +1 -1
  121. package/dist/lib/input-validator.test.js +129 -1
  122. package/dist/lib/input-validator.test.js.map +1 -1
  123. package/dist/lib/logger.d.ts +46 -0
  124. package/dist/lib/logger.d.ts.map +1 -0
  125. package/dist/lib/logger.js +81 -0
  126. package/dist/lib/logger.js.map +1 -0
  127. package/dist/lib/logger.test.d.ts +2 -0
  128. package/dist/lib/logger.test.d.ts.map +1 -0
  129. package/dist/lib/logger.test.js +122 -0
  130. package/dist/lib/logger.test.js.map +1 -0
  131. package/dist/lib/query-sanitizer.d.ts +51 -3
  132. package/dist/lib/query-sanitizer.d.ts.map +1 -1
  133. package/dist/lib/query-sanitizer.js +105 -31
  134. package/dist/lib/query-sanitizer.js.map +1 -1
  135. package/dist/lib/query-sanitizer.test.js +102 -1
  136. package/dist/lib/query-sanitizer.test.js.map +1 -1
  137. package/dist/lib/server-utils.d.ts +88 -0
  138. package/dist/lib/server-utils.d.ts.map +1 -0
  139. package/dist/lib/server-utils.js +173 -0
  140. package/dist/lib/server-utils.js.map +1 -0
  141. package/dist/lib/shared-schemas.d.ts +81 -0
  142. package/dist/lib/shared-schemas.d.ts.map +1 -0
  143. package/dist/lib/shared-schemas.js +80 -0
  144. package/dist/lib/shared-schemas.js.map +1 -0
  145. package/dist/lib/shared-schemas.test.d.ts +5 -0
  146. package/dist/lib/shared-schemas.test.d.ts.map +1 -0
  147. package/dist/lib/shared-schemas.test.js +106 -0
  148. package/dist/lib/shared-schemas.test.js.map +1 -0
  149. package/dist/lib/toon-encoder.d.ts +26 -0
  150. package/dist/lib/toon-encoder.d.ts.map +1 -0
  151. package/dist/lib/toon-encoder.js +61 -0
  152. package/dist/lib/toon-encoder.js.map +1 -0
  153. package/dist/lib/toon-encoder.test.d.ts +5 -0
  154. package/dist/lib/toon-encoder.test.d.ts.map +1 -0
  155. package/dist/lib/toon-encoder.test.js +85 -0
  156. package/dist/lib/toon-encoder.test.js.map +1 -0
  157. package/dist/server.d.ts +1 -49
  158. package/dist/server.d.ts.map +1 -1
  159. package/dist/server.js +154 -162
  160. package/dist/server.js.map +1 -1
  161. package/dist/server.test.js +198 -7
  162. package/dist/server.test.js.map +1 -1
  163. package/dist/test-helpers/env-utils.d.ts +87 -0
  164. package/dist/test-helpers/env-utils.d.ts.map +1 -0
  165. package/dist/test-helpers/env-utils.js +132 -0
  166. package/dist/test-helpers/env-utils.js.map +1 -0
  167. package/dist/test-helpers/file-utils.d.ts +67 -0
  168. package/dist/test-helpers/file-utils.d.ts.map +1 -1
  169. package/dist/test-helpers/file-utils.js +165 -2
  170. package/dist/test-helpers/file-utils.js.map +1 -1
  171. package/dist/test-helpers/fuzz-generators.d.ts +58 -0
  172. package/dist/test-helpers/fuzz-generators.d.ts.map +1 -0
  173. package/dist/test-helpers/fuzz-generators.js +216 -0
  174. package/dist/test-helpers/fuzz-generators.js.map +1 -0
  175. package/dist/test-helpers/index.d.ts +11 -0
  176. package/dist/test-helpers/index.d.ts.map +1 -0
  177. package/dist/test-helpers/index.js +30 -0
  178. package/dist/test-helpers/index.js.map +1 -0
  179. package/dist/test-helpers/memfs-utils.d.ts +181 -0
  180. package/dist/test-helpers/memfs-utils.d.ts.map +1 -0
  181. package/dist/test-helpers/memfs-utils.js +292 -0
  182. package/dist/test-helpers/memfs-utils.js.map +1 -0
  183. package/dist/test-helpers/memfs-utils.test.d.ts +5 -0
  184. package/dist/test-helpers/memfs-utils.test.d.ts.map +1 -0
  185. package/dist/test-helpers/memfs-utils.test.js +338 -0
  186. package/dist/test-helpers/memfs-utils.test.js.map +1 -0
  187. package/dist/test-helpers/mock-backends.d.ts +113 -2
  188. package/dist/test-helpers/mock-backends.d.ts.map +1 -1
  189. package/dist/test-helpers/mock-backends.js +199 -3
  190. package/dist/test-helpers/mock-backends.js.map +1 -1
  191. package/dist/test-helpers/mock-backends.test.d.ts +5 -0
  192. package/dist/test-helpers/mock-backends.test.d.ts.map +1 -0
  193. package/dist/test-helpers/mock-backends.test.js +368 -0
  194. package/dist/test-helpers/mock-backends.test.js.map +1 -0
  195. package/dist/test-helpers/race-condition-helpers.d.ts +85 -0
  196. package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -0
  197. package/dist/test-helpers/race-condition-helpers.js +279 -0
  198. package/dist/test-helpers/race-condition-helpers.js.map +1 -0
  199. package/dist/test-helpers/schema-validators.d.ts +32 -0
  200. package/dist/test-helpers/schema-validators.d.ts.map +1 -0
  201. package/dist/test-helpers/schema-validators.js +125 -0
  202. package/dist/test-helpers/schema-validators.js.map +1 -0
  203. package/dist/test-helpers/test-data-builders.d.ts +260 -0
  204. package/dist/test-helpers/test-data-builders.d.ts.map +1 -0
  205. package/dist/test-helpers/test-data-builders.js +337 -0
  206. package/dist/test-helpers/test-data-builders.js.map +1 -0
  207. package/dist/test-helpers/test-data-builders.test.d.ts +2 -0
  208. package/dist/test-helpers/test-data-builders.test.d.ts.map +1 -0
  209. package/dist/test-helpers/test-data-builders.test.js +306 -0
  210. package/dist/test-helpers/test-data-builders.test.js.map +1 -0
  211. package/dist/test-helpers/tool-validators.d.ts +28 -0
  212. package/dist/test-helpers/tool-validators.d.ts.map +1 -0
  213. package/dist/test-helpers/tool-validators.js +71 -0
  214. package/dist/test-helpers/tool-validators.js.map +1 -0
  215. package/dist/tools/context-stats.d.ts +1 -0
  216. package/dist/tools/context-stats.d.ts.map +1 -1
  217. package/dist/tools/context-stats.js +9 -5
  218. package/dist/tools/context-stats.js.map +1 -1
  219. package/dist/tools/context-stats.test.js +24 -10
  220. package/dist/tools/context-stats.test.js.map +1 -1
  221. package/dist/tools/get-trace-url.js +2 -2
  222. package/dist/tools/get-trace-url.js.map +1 -1
  223. package/dist/tools/health-check.js +2 -2
  224. package/dist/tools/health-check.js.map +1 -1
  225. package/dist/tools/query-evaluations.d.ts +21 -18
  226. package/dist/tools/query-evaluations.d.ts.map +1 -1
  227. package/dist/tools/query-evaluations.js +33 -19
  228. package/dist/tools/query-evaluations.js.map +1 -1
  229. package/dist/tools/query-evaluations.test.js +60 -63
  230. package/dist/tools/query-evaluations.test.js.map +1 -1
  231. package/dist/tools/query-llm-events.d.ts +19 -15
  232. package/dist/tools/query-llm-events.d.ts.map +1 -1
  233. package/dist/tools/query-llm-events.js +31 -15
  234. package/dist/tools/query-llm-events.js.map +1 -1
  235. package/dist/tools/query-llm-events.test.js +277 -12
  236. package/dist/tools/query-llm-events.test.js.map +1 -1
  237. package/dist/tools/query-logs.d.ts +22 -22
  238. package/dist/tools/query-logs.d.ts.map +1 -1
  239. package/dist/tools/query-logs.js +9 -9
  240. package/dist/tools/query-logs.js.map +1 -1
  241. package/dist/tools/query-logs.test.js +19 -72
  242. package/dist/tools/query-logs.test.js.map +1 -1
  243. package/dist/tools/query-metrics.d.ts +14 -14
  244. package/dist/tools/query-metrics.d.ts.map +1 -1
  245. package/dist/tools/query-metrics.js +9 -9
  246. package/dist/tools/query-metrics.js.map +1 -1
  247. package/dist/tools/query-metrics.test.js +12 -25
  248. package/dist/tools/query-metrics.test.js.map +1 -1
  249. package/dist/tools/query-traces.d.ts +28 -28
  250. package/dist/tools/query-traces.d.ts.map +1 -1
  251. package/dist/tools/query-traces.js +18 -18
  252. package/dist/tools/query-traces.js.map +1 -1
  253. package/dist/tools/query-traces.test.js +58 -54
  254. package/dist/tools/query-traces.test.js.map +1 -1
  255. package/dist/tools/setup-claudeignore.js +7 -7
  256. package/dist/tools/setup-claudeignore.js.map +1 -1
  257. package/dist/tools/setup-claudeignore.test.js +4 -25
  258. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  259. package/package.json +4 -2
@@ -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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"}
@@ -0,0 +1,292 @@
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 { createFsFromVolume, Volume } from 'memfs';
27
+ import * as path from 'path';
28
+ /** Counter for unique directory names */
29
+ let memFsCounter = 0;
30
+ /**
31
+ * Create a new in-memory file system instance
32
+ *
33
+ * Each call creates an isolated volume with its own directory.
34
+ * The returned fs object is compatible with node:fs operations.
35
+ *
36
+ * @param prefix - Optional prefix for the directory name
37
+ * @returns MemFsInstance with fs, vol, dir, and reset function
38
+ */
39
+ export function createMemFs(prefix = 'test') {
40
+ const vol = new Volume();
41
+ const fs = createFsFromVolume(vol);
42
+ const dir = `/memfs-${prefix}-${++memFsCounter}`;
43
+ // Create the base directory
44
+ vol.mkdirSync(dir, { recursive: true });
45
+ return {
46
+ fs: fs,
47
+ vol,
48
+ dir,
49
+ reset: () => {
50
+ // Clear volume and recreate base directory
51
+ vol.reset();
52
+ vol.mkdirSync(dir, { recursive: true });
53
+ },
54
+ };
55
+ }
56
+ /**
57
+ * Write JSONL data to an in-memory file
58
+ *
59
+ * @param mfs - MemFsInstance from createMemFs()
60
+ * @param filename - Filename (not full path) to write
61
+ * @param data - Array of objects to write as JSONL
62
+ */
63
+ export function writeJsonlMem(mfs, filename, data) {
64
+ const content = data.map(item => JSON.stringify(item)).join('\n');
65
+ const filePath = path.join(mfs.dir, filename);
66
+ mfs.vol.writeFileSync(filePath, content, { encoding: 'utf-8' });
67
+ }
68
+ /**
69
+ * Write raw content to an in-memory file
70
+ *
71
+ * @param mfs - MemFsInstance from createMemFs()
72
+ * @param filename - Filename (not full path) to write
73
+ * @param content - Content to write (string or Buffer)
74
+ */
75
+ export function writeFileMem(mfs, filename, content) {
76
+ const filePath = path.join(mfs.dir, filename);
77
+ mfs.vol.writeFileSync(filePath, content);
78
+ }
79
+ /**
80
+ * Read file content from in-memory file system
81
+ *
82
+ * @param mfs - MemFsInstance from createMemFs()
83
+ * @param filename - Filename (not full path) to read
84
+ * @returns File content as string
85
+ */
86
+ export function readFileMem(mfs, filename) {
87
+ const filePath = path.join(mfs.dir, filename);
88
+ return mfs.vol.readFileSync(filePath, 'utf-8');
89
+ }
90
+ /**
91
+ * Check if a file exists in the in-memory file system
92
+ *
93
+ * @param mfs - MemFsInstance from createMemFs()
94
+ * @param filename - Filename (not full path) to check
95
+ * @returns true if file exists
96
+ */
97
+ export function existsMem(mfs, filename) {
98
+ const filePath = path.join(mfs.dir, filename);
99
+ return mfs.vol.existsSync(filePath);
100
+ }
101
+ /**
102
+ * Create a subdirectory in the in-memory file system
103
+ *
104
+ * @param mfs - MemFsInstance from createMemFs()
105
+ * @param dirname - Directory name to create (relative to mfs.dir)
106
+ */
107
+ export function mkdirMem(mfs, dirname) {
108
+ const dirPath = path.join(mfs.dir, dirname);
109
+ mfs.vol.mkdirSync(dirPath, { recursive: true });
110
+ }
111
+ /**
112
+ * List files in a directory in the in-memory file system
113
+ *
114
+ * @param mfs - MemFsInstance from createMemFs()
115
+ * @param dirname - Optional subdirectory (defaults to mfs.dir)
116
+ * @returns Array of filenames
117
+ */
118
+ export function readdirMem(mfs, dirname = '') {
119
+ const dirPath = dirname ? path.join(mfs.dir, dirname) : mfs.dir;
120
+ return mfs.vol.readdirSync(dirPath);
121
+ }
122
+ /**
123
+ * Get today's date in YYYY-MM-DD format
124
+ * @returns Today's date string
125
+ */
126
+ export function getTestDateMem() {
127
+ return new Date().toISOString().split('T')[0];
128
+ }
129
+ /**
130
+ * Shared memfs instances for test suites
131
+ * Use getSharedMemFs() to get/create a shared instance by ID
132
+ */
133
+ const sharedMemFsInstances = new Map();
134
+ /**
135
+ * Get or create a shared memfs instance for a test suite
136
+ *
137
+ * Use this when multiple tests in a suite can share the same in-memory fs.
138
+ * Call resetSharedMemFs() in beforeEach to clear files between tests.
139
+ *
140
+ * @param suiteId - Unique identifier for the test suite
141
+ * @returns Shared MemFsInstance
142
+ */
143
+ export function getSharedMemFs(suiteId) {
144
+ let mfs = sharedMemFsInstances.get(suiteId);
145
+ if (!mfs) {
146
+ mfs = createMemFs(suiteId);
147
+ sharedMemFsInstances.set(suiteId, mfs);
148
+ }
149
+ return mfs;
150
+ }
151
+ /**
152
+ * Reset (clear) a shared memfs instance
153
+ *
154
+ * Call this in beforeEach to ensure clean state between tests.
155
+ *
156
+ * @param suiteId - Unique identifier for the test suite
157
+ */
158
+ export function resetSharedMemFs(suiteId) {
159
+ const mfs = sharedMemFsInstances.get(suiteId);
160
+ if (mfs) {
161
+ mfs.reset();
162
+ }
163
+ }
164
+ /**
165
+ * Remove a shared memfs instance
166
+ *
167
+ * Call this in after() to clean up suite-level resources.
168
+ *
169
+ * @param suiteId - Unique identifier for the test suite
170
+ */
171
+ export function removeSharedMemFs(suiteId) {
172
+ sharedMemFsInstances.delete(suiteId);
173
+ }
174
+ /**
175
+ * Clean up all shared memfs instances
176
+ *
177
+ * Useful for global test teardown.
178
+ */
179
+ export function cleanupAllSharedMemFs() {
180
+ sharedMemFsInstances.clear();
181
+ }
182
+ /**
183
+ * Read JSONL content from in-memory file and parse to objects
184
+ *
185
+ * @param mfs - MemFsInstance from createMemFs()
186
+ * @param filename - Filename (not full path) to read
187
+ * @returns Array of parsed objects (skips invalid lines)
188
+ */
189
+ export function readJsonlMem(mfs, filename) {
190
+ const content = readFileMem(mfs, filename);
191
+ const results = [];
192
+ for (const line of content.split('\n')) {
193
+ const trimmed = line.trim();
194
+ if (!trimmed)
195
+ continue;
196
+ try {
197
+ results.push(JSON.parse(trimmed));
198
+ }
199
+ catch {
200
+ // Skip invalid JSON lines
201
+ }
202
+ }
203
+ return results;
204
+ }
205
+ /**
206
+ * Read JSONL content with stats (mirrors readJsonlSyncWithStats)
207
+ *
208
+ * @param mfs - MemFsInstance from createMemFs()
209
+ * @param filename - Filename (not full path) to read
210
+ * @returns Object with data array and stats
211
+ */
212
+ export function readJsonlMemWithStats(mfs, filename) {
213
+ const content = readFileMem(mfs, filename);
214
+ const data = [];
215
+ let totalLines = 0;
216
+ let skippedLines = 0;
217
+ let emptyLines = 0;
218
+ for (const line of content.split('\n')) {
219
+ totalLines++;
220
+ const trimmed = line.trim();
221
+ if (!trimmed) {
222
+ emptyLines++;
223
+ continue;
224
+ }
225
+ try {
226
+ data.push(JSON.parse(trimmed));
227
+ }
228
+ catch {
229
+ skippedLines++;
230
+ }
231
+ }
232
+ return { data, stats: { totalLines, skippedLines, emptyLines } };
233
+ }
234
+ /**
235
+ * Async generator for streaming JSONL from memfs (mirrors streamJsonl)
236
+ *
237
+ * @param mfs - MemFsInstance from createMemFs()
238
+ * @param filename - Filename (not full path) to read
239
+ * @yields Parsed objects from each line
240
+ */
241
+ export async function* streamJsonlMem(mfs, filename) {
242
+ const content = readFileMem(mfs, filename);
243
+ for (const line of content.split('\n')) {
244
+ const trimmed = line.trim();
245
+ if (!trimmed)
246
+ continue;
247
+ try {
248
+ yield JSON.parse(trimmed);
249
+ }
250
+ catch {
251
+ // Skip invalid JSON lines
252
+ }
253
+ }
254
+ }
255
+ /**
256
+ * List files matching a pattern prefix in the memfs directory
257
+ *
258
+ * @param mfs - MemFsInstance from createMemFs()
259
+ * @param prefix - Filename prefix to match (e.g., 'traces-')
260
+ * @returns Array of matching filenames
261
+ */
262
+ export function listFilesMem(mfs, prefix) {
263
+ const files = readdirMem(mfs);
264
+ return files.filter(f => f.startsWith(prefix)).sort();
265
+ }
266
+ /**
267
+ * List files matching a date range pattern
268
+ *
269
+ * @param mfs - MemFsInstance from createMemFs()
270
+ * @param type - Telemetry type prefix (e.g., 'traces', 'logs')
271
+ * @param startDate - Optional start date (YYYY-MM-DD)
272
+ * @param endDate - Optional end date (YYYY-MM-DD)
273
+ * @returns Array of matching full paths
274
+ */
275
+ export function listFilesInRangeMem(mfs, type, startDate, endDate) {
276
+ const allFiles = listFilesMem(mfs, `${type}-`);
277
+ const result = [];
278
+ for (const filename of allFiles) {
279
+ // Extract date from filename (e.g., traces-2026-01-31.jsonl -> 2026-01-31)
280
+ const match = filename.match(/\d{4}-\d{2}-\d{2}/);
281
+ if (!match)
282
+ continue;
283
+ const fileDate = match[0];
284
+ if (startDate && fileDate < startDate)
285
+ continue;
286
+ if (endDate && fileDate > endDate)
287
+ continue;
288
+ result.push(path.join(mfs.dir, filename));
289
+ }
290
+ return result;
291
+ }
292
+ //# sourceMappingURL=memfs-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memfs-utils.js","sourceRoot":"","sources":["../../src/test-helpers/memfs-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for in-memory file system utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=memfs-utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memfs-utils.test.d.ts","sourceRoot":"","sources":["../../src/test-helpers/memfs-utils.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}