@soulcraft/brainy 0.23.0 → 0.25.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 (93) hide show
  1. package/README.md +22 -16
  2. package/dist/brainy.js +4574 -4691
  3. package/dist/brainy.min.js +750 -750
  4. package/dist/brainyData.d.ts +86 -10
  5. package/dist/coreTypes.d.ts +11 -0
  6. package/dist/storage/adapters/fileSystemStorage.d.ts +78 -29
  7. package/dist/storage/adapters/fileSystemStorage.d.ts.map +1 -1
  8. package/dist/storage/adapters/memoryStorage.d.ts.map +1 -1
  9. package/dist/storage/fileSystemStorage.d.ts +2 -15
  10. package/dist/storage/fileSystemStorage.d.ts.map +1 -1
  11. package/dist/storage/opfsStorage.d.ts +3 -66
  12. package/dist/storage/opfsStorage.d.ts.map +1 -1
  13. package/dist/storage/s3CompatibleStorage.d.ts +2 -14
  14. package/dist/storage/s3CompatibleStorage.d.ts.map +1 -1
  15. package/dist/testing/prettyReporter.d.ts +23 -0
  16. package/dist/testing/prettySummaryReporter.d.ts +22 -0
  17. package/dist/types/tensorflowTypes.d.ts +0 -8
  18. package/dist/types/tensorflowTypes.d.ts.map +1 -1
  19. package/dist/unified.d.ts +4 -0
  20. package/dist/unified.js +846 -297
  21. package/dist/unified.min.js +528 -528
  22. package/dist/utils/embedding.d.ts +7 -0
  23. package/dist/utils/embedding.d.ts.map +1 -1
  24. package/dist/utils/logger.d.ts +99 -0
  25. package/dist/utils/logger.d.ts.map +1 -0
  26. package/dist/utils/textEncoding.d.ts +0 -7
  27. package/dist/utils/textEncoding.d.ts.map +1 -1
  28. package/dist/utils/version.d.ts +1 -1
  29. package/package.json +14 -3
  30. package/dist/augmentations/conduitAugmentations.js +0 -1158
  31. package/dist/augmentations/conduitAugmentations.js.map +0 -1
  32. package/dist/augmentations/memoryAugmentations.js +0 -255
  33. package/dist/augmentations/memoryAugmentations.js.map +0 -1
  34. package/dist/augmentations/serverSearchAugmentations.js +0 -531
  35. package/dist/augmentations/serverSearchAugmentations.js.map +0 -1
  36. package/dist/examples/basicUsage.js +0 -128
  37. package/dist/examples/basicUsage.js.map +0 -1
  38. package/dist/hnsw/hnswIndex.js +0 -550
  39. package/dist/hnsw/hnswIndex.js.map +0 -1
  40. package/dist/hnsw/hnswIndexOptimized.js +0 -441
  41. package/dist/hnsw/hnswIndexOptimized.js.map +0 -1
  42. package/dist/mcp/brainyMCPAdapter.js +0 -142
  43. package/dist/mcp/brainyMCPAdapter.js.map +0 -1
  44. package/dist/mcp/brainyMCPService.js +0 -248
  45. package/dist/mcp/brainyMCPService.js.map +0 -1
  46. package/dist/mcp/index.js +0 -17
  47. package/dist/mcp/index.js.map +0 -1
  48. package/dist/mcp/mcpAugmentationToolset.js +0 -180
  49. package/dist/mcp/mcpAugmentationToolset.js.map +0 -1
  50. package/dist/storage/adapters/baseStorageAdapter.js +0 -233
  51. package/dist/storage/adapters/baseStorageAdapter.js.map +0 -1
  52. package/dist/storage/adapters/fileSystemStorage.js +0 -568
  53. package/dist/storage/adapters/fileSystemStorage.js.map +0 -1
  54. package/dist/storage/adapters/memoryStorage.js +0 -300
  55. package/dist/storage/adapters/memoryStorage.js.map +0 -1
  56. package/dist/storage/adapters/opfsStorage.js +0 -778
  57. package/dist/storage/adapters/opfsStorage.js.map +0 -1
  58. package/dist/storage/adapters/s3CompatibleStorage.js +0 -1021
  59. package/dist/storage/adapters/s3CompatibleStorage.js.map +0 -1
  60. package/dist/storage/baseStorage.js +0 -126
  61. package/dist/storage/baseStorage.js.map +0 -1
  62. package/dist/storage/storageFactory.js +0 -183
  63. package/dist/storage/storageFactory.js.map +0 -1
  64. package/dist/types/augmentations.js +0 -16
  65. package/dist/types/augmentations.js.map +0 -1
  66. package/dist/types/brainyDataInterface.js +0 -8
  67. package/dist/types/brainyDataInterface.js.map +0 -1
  68. package/dist/types/fileSystemTypes.js +0 -8
  69. package/dist/types/fileSystemTypes.js.map +0 -1
  70. package/dist/types/graphTypes.js +0 -36
  71. package/dist/types/graphTypes.js.map +0 -1
  72. package/dist/types/mcpTypes.js +0 -22
  73. package/dist/types/mcpTypes.js.map +0 -1
  74. package/dist/types/pipelineTypes.js +0 -7
  75. package/dist/types/pipelineTypes.js.map +0 -1
  76. package/dist/types/tensorflowTypes.js +0 -6
  77. package/dist/types/tensorflowTypes.js.map +0 -1
  78. package/dist/utils/distance.js +0 -239
  79. package/dist/utils/distance.js.map +0 -1
  80. package/dist/utils/embedding.js +0 -622
  81. package/dist/utils/embedding.js.map +0 -1
  82. package/dist/utils/environment.js +0 -75
  83. package/dist/utils/environment.js.map +0 -1
  84. package/dist/utils/index.js +0 -5
  85. package/dist/utils/index.js.map +0 -1
  86. package/dist/utils/statistics.js +0 -25
  87. package/dist/utils/statistics.js.map +0 -1
  88. package/dist/utils/tensorflowUtils.js +0 -25
  89. package/dist/utils/tensorflowUtils.js.map +0 -1
  90. package/dist/utils/textEncoding.js +0 -281
  91. package/dist/utils/textEncoding.js.map +0 -1
  92. package/dist/utils/workerUtils.js +0 -458
  93. package/dist/utils/workerUtils.js.map +0 -1
@@ -1,568 +0,0 @@
1
- /**
2
- * File System Storage Adapter
3
- * File system storage adapter for Node.js environments
4
- */
5
- import { BaseStorage, NOUNS_DIR, VERBS_DIR, METADATA_DIR, INDEX_DIR, STATISTICS_KEY } from '../baseStorage.js';
6
- // Node.js modules - dynamically imported to avoid issues in browser environments
7
- let fs;
8
- let path;
9
- // Try to load Node.js modules
10
- try {
11
- // Using dynamic imports to avoid issues in browser environments
12
- const fsPromise = import('fs');
13
- const pathPromise = import('path');
14
- Promise.all([fsPromise, pathPromise]).then(([fsModule, pathModule]) => {
15
- fs = fsModule;
16
- path = pathModule.default;
17
- }).catch(error => {
18
- console.error('Failed to load Node.js modules:', error);
19
- });
20
- }
21
- catch (error) {
22
- console.error('FileSystemStorage: Failed to load Node.js modules. This adapter is not supported in this environment.', error);
23
- }
24
- /**
25
- * File system storage adapter for Node.js environments
26
- * Uses the file system to store data in the specified directory structure
27
- */
28
- export class FileSystemStorage extends BaseStorage {
29
- /**
30
- * Initialize the storage adapter
31
- * @param rootDirectory The root directory for storage
32
- */
33
- constructor(rootDirectory) {
34
- super();
35
- this.rootDir = rootDirectory;
36
- this.nounsDir = path.join(this.rootDir, NOUNS_DIR);
37
- this.verbsDir = path.join(this.rootDir, VERBS_DIR);
38
- this.metadataDir = path.join(this.rootDir, METADATA_DIR);
39
- this.indexDir = path.join(this.rootDir, INDEX_DIR);
40
- }
41
- /**
42
- * Initialize the storage adapter
43
- */
44
- async init() {
45
- if (this.isInitialized) {
46
- return;
47
- }
48
- // Check if Node.js modules are available
49
- if (!fs || !path) {
50
- throw new Error('FileSystemStorage requires a Node.js environment, but `fs` and `path` modules could not be loaded.');
51
- }
52
- try {
53
- // Create the root directory if it doesn't exist
54
- await this.ensureDirectoryExists(this.rootDir);
55
- // Create the nouns directory if it doesn't exist
56
- await this.ensureDirectoryExists(this.nounsDir);
57
- // Create the verbs directory if it doesn't exist
58
- await this.ensureDirectoryExists(this.verbsDir);
59
- // Create the metadata directory if it doesn't exist
60
- await this.ensureDirectoryExists(this.metadataDir);
61
- // Create the index directory if it doesn't exist
62
- await this.ensureDirectoryExists(this.indexDir);
63
- this.isInitialized = true;
64
- }
65
- catch (error) {
66
- console.error('Error initializing FileSystemStorage:', error);
67
- throw error;
68
- }
69
- }
70
- /**
71
- * Ensure a directory exists, creating it if necessary
72
- */
73
- async ensureDirectoryExists(dirPath) {
74
- try {
75
- await fs.promises.mkdir(dirPath, { recursive: true });
76
- }
77
- catch (error) {
78
- // Ignore EEXIST error, which means the directory already exists
79
- if (error.code !== 'EEXIST') {
80
- throw error;
81
- }
82
- }
83
- }
84
- /**
85
- * Save a node to storage
86
- */
87
- async saveNode(node) {
88
- await this.ensureInitialized();
89
- // Convert connections Map to a serializable format
90
- const serializableNode = {
91
- ...node,
92
- connections: this.mapToObject(node.connections, (set) => Array.from(set))
93
- };
94
- const filePath = path.join(this.nounsDir, `${node.id}.json`);
95
- await fs.promises.writeFile(filePath, JSON.stringify(serializableNode, null, 2));
96
- }
97
- /**
98
- * Get a node from storage
99
- */
100
- async getNode(id) {
101
- await this.ensureInitialized();
102
- const filePath = path.join(this.nounsDir, `${id}.json`);
103
- try {
104
- const data = await fs.promises.readFile(filePath, 'utf-8');
105
- const parsedNode = JSON.parse(data);
106
- // Convert serialized connections back to Map<number, Set<string>>
107
- const connections = new Map();
108
- for (const [level, nodeIds] of Object.entries(parsedNode.connections)) {
109
- connections.set(Number(level), new Set(nodeIds));
110
- }
111
- return {
112
- id: parsedNode.id,
113
- vector: parsedNode.vector,
114
- connections
115
- };
116
- }
117
- catch (error) {
118
- if (error.code !== 'ENOENT') {
119
- console.error(`Error reading node ${id}:`, error);
120
- }
121
- return null;
122
- }
123
- }
124
- /**
125
- * Get all nodes from storage
126
- */
127
- async getAllNodes() {
128
- await this.ensureInitialized();
129
- const allNodes = [];
130
- try {
131
- const files = await fs.promises.readdir(this.nounsDir);
132
- for (const file of files) {
133
- if (file.endsWith('.json')) {
134
- const filePath = path.join(this.nounsDir, file);
135
- const data = await fs.promises.readFile(filePath, 'utf-8');
136
- const parsedNode = JSON.parse(data);
137
- // Convert serialized connections back to Map<number, Set<string>>
138
- const connections = new Map();
139
- for (const [level, nodeIds] of Object.entries(parsedNode.connections)) {
140
- connections.set(Number(level), new Set(nodeIds));
141
- }
142
- allNodes.push({
143
- id: parsedNode.id,
144
- vector: parsedNode.vector,
145
- connections
146
- });
147
- }
148
- }
149
- }
150
- catch (error) {
151
- if (error.code !== 'ENOENT') {
152
- console.error(`Error reading directory ${this.nounsDir}:`, error);
153
- }
154
- }
155
- return allNodes;
156
- }
157
- /**
158
- * Get nodes by noun type
159
- * @param nounType The noun type to filter by
160
- * @returns Promise that resolves to an array of nodes of the specified noun type
161
- */
162
- async getNodesByNounType(nounType) {
163
- await this.ensureInitialized();
164
- const nouns = [];
165
- try {
166
- const files = await fs.promises.readdir(this.nounsDir);
167
- for (const file of files) {
168
- if (file.endsWith('.json')) {
169
- const filePath = path.join(this.nounsDir, file);
170
- const data = await fs.promises.readFile(filePath, 'utf-8');
171
- const parsedNode = JSON.parse(data);
172
- // Filter by noun type using metadata
173
- const nodeId = parsedNode.id;
174
- const metadata = await this.getMetadata(nodeId);
175
- if (metadata && metadata.noun === nounType) {
176
- // Convert serialized connections back to Map<number, Set<string>>
177
- const connections = new Map();
178
- for (const [level, nodeIds] of Object.entries(parsedNode.connections)) {
179
- connections.set(Number(level), new Set(nodeIds));
180
- }
181
- nouns.push({
182
- id: parsedNode.id,
183
- vector: parsedNode.vector,
184
- connections
185
- });
186
- }
187
- }
188
- }
189
- }
190
- catch (error) {
191
- if (error.code !== 'ENOENT') {
192
- console.error(`Error reading directory ${this.nounsDir}:`, error);
193
- }
194
- }
195
- return nouns;
196
- }
197
- /**
198
- * Delete a node from storage
199
- */
200
- async deleteNode(id) {
201
- await this.ensureInitialized();
202
- const filePath = path.join(this.nounsDir, `${id}.json`);
203
- try {
204
- await fs.promises.unlink(filePath);
205
- }
206
- catch (error) {
207
- if (error.code !== 'ENOENT') {
208
- console.error(`Error deleting node file ${filePath}:`, error);
209
- throw error;
210
- }
211
- }
212
- }
213
- /**
214
- * Save an edge to storage
215
- */
216
- async saveEdge(edge) {
217
- await this.ensureInitialized();
218
- // Convert connections Map to a serializable format
219
- const serializableEdge = {
220
- ...edge,
221
- connections: this.mapToObject(edge.connections, (set) => Array.from(set))
222
- };
223
- const filePath = path.join(this.verbsDir, `${edge.id}.json`);
224
- await fs.promises.writeFile(filePath, JSON.stringify(serializableEdge, null, 2));
225
- }
226
- /**
227
- * Get an edge from storage
228
- */
229
- async getEdge(id) {
230
- await this.ensureInitialized();
231
- const filePath = path.join(this.verbsDir, `${id}.json`);
232
- try {
233
- const data = await fs.promises.readFile(filePath, 'utf-8');
234
- const parsedEdge = JSON.parse(data);
235
- // Convert serialized connections back to Map<number, Set<string>>
236
- const connections = new Map();
237
- for (const [level, nodeIds] of Object.entries(parsedEdge.connections)) {
238
- connections.set(Number(level), new Set(nodeIds));
239
- }
240
- return {
241
- id: parsedEdge.id,
242
- vector: parsedEdge.vector,
243
- connections,
244
- sourceId: parsedEdge.sourceId,
245
- targetId: parsedEdge.targetId,
246
- type: parsedEdge.type,
247
- weight: parsedEdge.weight,
248
- metadata: parsedEdge.metadata
249
- };
250
- }
251
- catch (error) {
252
- if (error.code !== 'ENOENT') {
253
- console.error(`Error reading edge ${id}:`, error);
254
- }
255
- return null;
256
- }
257
- }
258
- /**
259
- * Get all edges from storage
260
- */
261
- async getAllEdges() {
262
- await this.ensureInitialized();
263
- const allEdges = [];
264
- try {
265
- const files = await fs.promises.readdir(this.verbsDir);
266
- for (const file of files) {
267
- if (file.endsWith('.json')) {
268
- const filePath = path.join(this.verbsDir, file);
269
- const data = await fs.promises.readFile(filePath, 'utf-8');
270
- const parsedEdge = JSON.parse(data);
271
- // Convert serialized connections back to Map<number, Set<string>>
272
- const connections = new Map();
273
- for (const [level, nodeIds] of Object.entries(parsedEdge.connections)) {
274
- connections.set(Number(level), new Set(nodeIds));
275
- }
276
- allEdges.push({
277
- id: parsedEdge.id,
278
- vector: parsedEdge.vector,
279
- connections,
280
- sourceId: parsedEdge.sourceId,
281
- targetId: parsedEdge.targetId,
282
- type: parsedEdge.type,
283
- weight: parsedEdge.weight,
284
- metadata: parsedEdge.metadata
285
- });
286
- }
287
- }
288
- }
289
- catch (error) {
290
- if (error.code !== 'ENOENT') {
291
- console.error(`Error reading directory ${this.verbsDir}:`, error);
292
- }
293
- }
294
- return allEdges;
295
- }
296
- /**
297
- * Get edges by source
298
- */
299
- async getEdgesBySource(sourceId) {
300
- const edges = await this.getAllEdges();
301
- return edges.filter((edge) => edge.sourceId === sourceId);
302
- }
303
- /**
304
- * Get edges by target
305
- */
306
- async getEdgesByTarget(targetId) {
307
- const edges = await this.getAllEdges();
308
- return edges.filter((edge) => edge.targetId === targetId);
309
- }
310
- /**
311
- * Get edges by type
312
- */
313
- async getEdgesByType(type) {
314
- const edges = await this.getAllEdges();
315
- return edges.filter((edge) => edge.type === type);
316
- }
317
- /**
318
- * Delete an edge from storage
319
- */
320
- async deleteEdge(id) {
321
- await this.ensureInitialized();
322
- const filePath = path.join(this.verbsDir, `${id}.json`);
323
- try {
324
- await fs.promises.unlink(filePath);
325
- }
326
- catch (error) {
327
- if (error.code !== 'ENOENT') {
328
- console.error(`Error deleting edge file ${filePath}:`, error);
329
- throw error;
330
- }
331
- }
332
- }
333
- /**
334
- * Save metadata to storage
335
- */
336
- async saveMetadata(id, metadata) {
337
- await this.ensureInitialized();
338
- const filePath = path.join(this.metadataDir, `${id}.json`);
339
- await fs.promises.writeFile(filePath, JSON.stringify(metadata, null, 2));
340
- }
341
- /**
342
- * Get metadata from storage
343
- */
344
- async getMetadata(id) {
345
- await this.ensureInitialized();
346
- const filePath = path.join(this.metadataDir, `${id}.json`);
347
- try {
348
- const data = await fs.promises.readFile(filePath, 'utf-8');
349
- return JSON.parse(data);
350
- }
351
- catch (error) {
352
- if (error.code !== 'ENOENT') {
353
- console.error(`Error reading metadata ${id}:`, error);
354
- }
355
- return null;
356
- }
357
- }
358
- /**
359
- * Clear all data from storage
360
- */
361
- async clear() {
362
- await this.ensureInitialized();
363
- // Helper function to remove all files in a directory
364
- const removeDirectoryContents = async (dirPath) => {
365
- try {
366
- const files = await fs.promises.readdir(dirPath);
367
- for (const file of files) {
368
- const filePath = path.join(dirPath, file);
369
- const stats = await fs.promises.stat(filePath);
370
- if (stats.isDirectory()) {
371
- await removeDirectoryContents(filePath);
372
- await fs.promises.rmdir(filePath);
373
- }
374
- else {
375
- await fs.promises.unlink(filePath);
376
- }
377
- }
378
- }
379
- catch (error) {
380
- if (error.code !== 'ENOENT') {
381
- console.error(`Error removing directory contents ${dirPath}:`, error);
382
- throw error;
383
- }
384
- }
385
- };
386
- // Remove all files in the nouns directory
387
- await removeDirectoryContents(this.nounsDir);
388
- // Remove all files in the verbs directory
389
- await removeDirectoryContents(this.verbsDir);
390
- // Remove all files in the metadata directory
391
- await removeDirectoryContents(this.metadataDir);
392
- // Remove all files in the index directory
393
- await removeDirectoryContents(this.indexDir);
394
- }
395
- /**
396
- * Get information about storage usage and capacity
397
- */
398
- async getStorageStatus() {
399
- await this.ensureInitialized();
400
- try {
401
- // Calculate the total size of all files in the storage directories
402
- let totalSize = 0;
403
- // Helper function to calculate directory size
404
- const calculateSize = async (dirPath) => {
405
- let size = 0;
406
- try {
407
- const files = await fs.promises.readdir(dirPath);
408
- for (const file of files) {
409
- const filePath = path.join(dirPath, file);
410
- const stats = await fs.promises.stat(filePath);
411
- if (stats.isDirectory()) {
412
- size += await calculateSize(filePath);
413
- }
414
- else {
415
- size += stats.size;
416
- }
417
- }
418
- }
419
- catch (error) {
420
- if (error.code !== 'ENOENT') {
421
- console.error(`Error calculating size for directory ${dirPath}:`, error);
422
- }
423
- }
424
- return size;
425
- };
426
- // Calculate size for each directory
427
- const nounsDirSize = await calculateSize(this.nounsDir);
428
- const verbsDirSize = await calculateSize(this.verbsDir);
429
- const metadataDirSize = await calculateSize(this.metadataDir);
430
- const indexDirSize = await calculateSize(this.indexDir);
431
- totalSize = nounsDirSize + verbsDirSize + metadataDirSize + indexDirSize;
432
- // Count files in each directory
433
- const nounsCount = (await fs.promises.readdir(this.nounsDir)).filter((file) => file.endsWith('.json')).length;
434
- const verbsCount = (await fs.promises.readdir(this.verbsDir)).filter((file) => file.endsWith('.json')).length;
435
- const metadataCount = (await fs.promises.readdir(this.metadataDir)).filter((file) => file.endsWith('.json')).length;
436
- // Count nouns by type using metadata
437
- const nounTypeCounts = {};
438
- const metadataFiles = await fs.promises.readdir(this.metadataDir);
439
- for (const file of metadataFiles) {
440
- if (file.endsWith('.json')) {
441
- try {
442
- const filePath = path.join(this.metadataDir, file);
443
- const data = await fs.promises.readFile(filePath, 'utf-8');
444
- const metadata = JSON.parse(data);
445
- if (metadata.noun) {
446
- nounTypeCounts[metadata.noun] = (nounTypeCounts[metadata.noun] || 0) + 1;
447
- }
448
- }
449
- catch (error) {
450
- console.error(`Error reading metadata file ${file}:`, error);
451
- }
452
- }
453
- }
454
- return {
455
- type: 'filesystem',
456
- used: totalSize,
457
- quota: null, // File system doesn't provide quota information
458
- details: {
459
- rootDirectory: this.rootDir,
460
- nounsCount,
461
- verbsCount,
462
- metadataCount,
463
- nounsDirSize,
464
- verbsDirSize,
465
- metadataDirSize,
466
- indexDirSize,
467
- nounTypes: nounTypeCounts
468
- }
469
- };
470
- }
471
- catch (error) {
472
- console.error('Failed to get storage status:', error);
473
- return {
474
- type: 'filesystem',
475
- used: 0,
476
- quota: null,
477
- details: { error: String(error) }
478
- };
479
- }
480
- }
481
- /**
482
- * Save statistics data to storage
483
- * @param statistics The statistics data to save
484
- */
485
- async saveStatisticsData(statistics) {
486
- await this.ensureInitialized();
487
- try {
488
- // Get the current date for time-based partitioning
489
- const now = new Date();
490
- const year = now.getUTCFullYear();
491
- const month = String(now.getUTCMonth() + 1).padStart(2, '0');
492
- const day = String(now.getUTCDate()).padStart(2, '0');
493
- const dateStr = `${year}${month}${day}`;
494
- // Save to the current day's file
495
- const currentFilePath = path.join(this.indexDir, `${STATISTICS_KEY}_${dateStr}.json`);
496
- await fs.promises.writeFile(currentFilePath, JSON.stringify(statistics, null, 2));
497
- // Also update the legacy file for backward compatibility (less frequently)
498
- if (Math.random() < 0.1) {
499
- const legacyFilePath = path.join(this.indexDir, `${STATISTICS_KEY}.json`);
500
- await fs.promises.writeFile(legacyFilePath, JSON.stringify(statistics, null, 2));
501
- }
502
- }
503
- catch (error) {
504
- console.error('Failed to save statistics data:', error);
505
- throw new Error(`Failed to save statistics data: ${error}`);
506
- }
507
- }
508
- /**
509
- * Get statistics data from storage
510
- * @returns Promise that resolves to the statistics data or null if not found
511
- */
512
- async getStatisticsData() {
513
- await this.ensureInitialized();
514
- try {
515
- // Try to get statistics from today's file first
516
- const now = new Date();
517
- const year = now.getUTCFullYear();
518
- const month = String(now.getUTCMonth() + 1).padStart(2, '0');
519
- const day = String(now.getUTCDate()).padStart(2, '0');
520
- const dateStr = `${year}${month}${day}`;
521
- const currentFilePath = path.join(this.indexDir, `${STATISTICS_KEY}_${dateStr}.json`);
522
- try {
523
- const data = await fs.promises.readFile(currentFilePath, 'utf-8');
524
- return JSON.parse(data);
525
- }
526
- catch (currentError) {
527
- // If today's file doesn't exist, try yesterday's file
528
- if (currentError.code === 'ENOENT') {
529
- const yesterday = new Date();
530
- yesterday.setDate(yesterday.getDate() - 1);
531
- const yesterdayYear = yesterday.getUTCFullYear();
532
- const yesterdayMonth = String(yesterday.getUTCMonth() + 1).padStart(2, '0');
533
- const yesterdayDay = String(yesterday.getUTCDate()).padStart(2, '0');
534
- const yesterdayDateStr = `${yesterdayYear}${yesterdayMonth}${yesterdayDay}`;
535
- const yesterdayFilePath = path.join(this.indexDir, `${STATISTICS_KEY}_${yesterdayDateStr}.json`);
536
- try {
537
- const yesterdayData = await fs.promises.readFile(yesterdayFilePath, 'utf-8');
538
- return JSON.parse(yesterdayData);
539
- }
540
- catch (yesterdayError) {
541
- // If yesterday's file doesn't exist, try the legacy file
542
- if (yesterdayError.code === 'ENOENT') {
543
- const legacyFilePath = path.join(this.indexDir, `${STATISTICS_KEY}.json`);
544
- try {
545
- const legacyData = await fs.promises.readFile(legacyFilePath, 'utf-8');
546
- return JSON.parse(legacyData);
547
- }
548
- catch (legacyError) {
549
- // If the legacy file doesn't exist either, return null
550
- if (legacyError.code === 'ENOENT') {
551
- return null;
552
- }
553
- throw legacyError;
554
- }
555
- }
556
- throw yesterdayError;
557
- }
558
- }
559
- throw currentError;
560
- }
561
- }
562
- catch (error) {
563
- console.error('Error getting statistics data:', error);
564
- throw error;
565
- }
566
- }
567
- }
568
- //# sourceMappingURL=fileSystemStorage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileSystemStorage.js","sourceRoot":"","sources":["../../../src/storage/adapters/fileSystemStorage.ts"],"names":[],"mappings":"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"}