@accounter/server 0.0.9-alpha-20251217093036-7168648b507d62946aa287af4ea690b73b077b2d → 0.0.9-alpha-20251217131153-65f961a4072436d7f1042ea8ea4d96534cb3650e

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 (69) hide show
  1. package/CHANGELOG.md +16 -8
  2. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js +45 -122
  3. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js.map +1 -1
  4. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.js +45 -29
  5. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.js.map +1 -1
  6. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.js +2 -11
  7. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.js.map +1 -1
  8. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.js +25 -0
  9. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.js.map +1 -1
  10. package/dist/server/src/modules/charges-matcher/__tests__/document-aggregator.test.js.map +1 -1
  11. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.js +65 -64
  12. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.js.map +1 -1
  13. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.js +494 -60
  14. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.js.map +1 -1
  15. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js +34 -98
  16. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js.map +1 -1
  17. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.js +79 -59
  18. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.js.map +1 -1
  19. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.js +6 -4
  20. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.js.map +1 -1
  21. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.d.ts +9 -2
  22. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.js +24 -2
  23. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.js.map +1 -1
  24. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.d.ts +1 -4
  25. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.js +2 -1
  26. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.js.map +1 -1
  27. package/dist/server/src/modules/charges-matcher/index.d.ts +0 -1
  28. package/dist/server/src/modules/charges-matcher/index.js +0 -1
  29. package/dist/server/src/modules/charges-matcher/index.js.map +1 -1
  30. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.d.ts +2 -1
  31. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.js +2 -2
  32. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.js.map +1 -1
  33. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js +2 -2
  34. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js.map +1 -1
  35. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.d.ts +4 -5
  36. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.js +5 -4
  37. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.js.map +1 -1
  38. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.d.ts +5 -3
  39. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.js +70 -13
  40. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.js.map +1 -1
  41. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.d.ts +4 -2
  42. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.js +15 -7
  43. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.js.map +1 -1
  44. package/dist/server/src/modules/charges-matcher/providers/transaction-aggregator.d.ts +1 -1
  45. package/dist/server/src/modules/charges-matcher/types.d.ts +2 -4
  46. package/dist/server/src/modules/charges-matcher/types.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/modules/charges-matcher/README.md +14 -3
  49. package/src/modules/charges-matcher/__tests__/auto-match-integration.test.ts +52 -100
  50. package/src/modules/charges-matcher/__tests__/auto-match.test.ts +51 -29
  51. package/src/modules/charges-matcher/__tests__/charge-validator.test.ts +2 -13
  52. package/src/modules/charges-matcher/__tests__/date-confidence.test.ts +29 -0
  53. package/src/modules/charges-matcher/__tests__/document-aggregator.test.ts +0 -1
  54. package/src/modules/charges-matcher/__tests__/document-amount.test.ts +66 -65
  55. package/src/modules/charges-matcher/__tests__/match-scorer.test.ts +552 -60
  56. package/src/modules/charges-matcher/__tests__/single-match-integration.test.ts +43 -73
  57. package/src/modules/charges-matcher/__tests__/single-match.test.ts +81 -59
  58. package/src/modules/charges-matcher/documentation/SPEC.md +276 -4
  59. package/src/modules/charges-matcher/helpers/charge-validator.helper.ts +7 -5
  60. package/src/modules/charges-matcher/helpers/date-confidence.helper.ts +32 -2
  61. package/src/modules/charges-matcher/helpers/document-amount.helper.ts +2 -12
  62. package/src/modules/charges-matcher/index.ts +0 -1
  63. package/src/modules/charges-matcher/providers/auto-match.provider.ts +5 -3
  64. package/src/modules/charges-matcher/providers/charges-matcher.provider.ts +8 -2
  65. package/src/modules/charges-matcher/providers/document-aggregator.ts +12 -11
  66. package/src/modules/charges-matcher/providers/match-scorer.provider.ts +97 -17
  67. package/src/modules/charges-matcher/providers/single-match.provider.ts +21 -8
  68. package/src/modules/charges-matcher/providers/transaction-aggregator.ts +1 -1
  69. package/src/modules/charges-matcher/types.ts +2 -5
@@ -22,10 +22,43 @@ vi.mock('../../transactions/providers/transactions.provider.js', () => ({
22
22
  TransactionsProvider: class {},
23
23
  }));
24
24
 
25
+
26
+ vi.mock('../../financial-entities/providers/clients.provider.js', () => ({
27
+ ClientsProvider: class {},
28
+ }));
29
+
25
30
  vi.mock('../../../shared/helpers/index.js', () => ({
26
31
  dateToTimelessDateString: (date: Date) => date.toISOString().split('T')[0],
27
32
  }));
28
33
 
34
+ const getMockInjector = (mockChargesProvider?: {
35
+ getChargesByFilters?: (filters: any) => Promise<any[]>;
36
+ getChargeByIdLoader?: { load: (id: string) => Promise<any>};
37
+ },
38
+ mockTransactionsProvider?: {
39
+ transactionsByChargeIDLoader: { load: (id: string) => Promise<any[]>;
40
+ }},
41
+ mockDocumentsProvider?: {
42
+ getDocumentsByChargeIdLoader: { load: (id: string) => Promise<any[]>; };
43
+ }
44
+ ) => ({
45
+ get: vi.fn((token: {name: string}) => {
46
+ if (token.name === 'ChargesProvider') return mockChargesProvider ?? null;
47
+ if (token.name === 'TransactionsProvider') return mockTransactionsProvider ?? null;
48
+ if (token.name === 'DocumentsProvider') return mockDocumentsProvider ?? null;
49
+ if (token.name === 'ClientsProvider')
50
+ return {
51
+ getClientByIdLoader: {
52
+ load: (businessId: string) => {
53
+ const isRegisteredClient = businessId.startsWith('client-');
54
+ return Promise.resolve(isRegisteredClient ? { id: businessId } : null);
55
+ },
56
+ },
57
+ };
58
+ return null;
59
+ }),
60
+ }) as Injector;
61
+
29
62
  // Import after mocking
30
63
  const { ChargesMatcherProvider } = await import('../providers/charges-matcher.provider.js');
31
64
 
@@ -118,14 +151,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
118
151
  },
119
152
  };
120
153
 
121
- const mockInjector = {
122
- get: vi.fn((token: any) => {
123
- if (token.name === 'ChargesProvider') return mockChargesProvider;
124
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
125
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
126
- return null;
127
- }),
128
- } as unknown as Injector;
154
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
129
155
 
130
156
  // Execute
131
157
  const provider = new ChargesMatcherProvider();
@@ -206,14 +232,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
206
232
  },
207
233
  };
208
234
 
209
- const mockInjector = {
210
- get: vi.fn((token: any) => {
211
- if (token.name === 'ChargesProvider') return mockChargesProvider;
212
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
213
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
214
- return null;
215
- }),
216
- } as unknown as Injector;
235
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
217
236
 
218
237
  // Execute
219
238
  const provider = new ChargesMatcherProvider();
@@ -232,12 +251,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
232
251
  },
233
252
  };
234
253
 
235
- const mockInjector = {
236
- get: vi.fn((token: any) => {
237
- if (token.name === 'ChargesProvider') return mockChargesProvider;
238
- return null;
239
- }),
240
- } as unknown as Injector;
254
+ const mockInjector = getMockInjector(mockChargesProvider);
241
255
 
242
256
  const provider = new ChargesMatcherProvider();
243
257
 
@@ -267,14 +281,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
267
281
  },
268
282
  };
269
283
 
270
- const mockInjector = {
271
- get: vi.fn((token: any) => {
272
- if (token.name === 'ChargesProvider') return mockChargesProvider;
273
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
274
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
275
- return null;
276
- }),
277
- } as unknown as Injector;
284
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
278
285
 
279
286
  const provider = new ChargesMatcherProvider();
280
287
 
@@ -304,14 +311,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
304
311
  },
305
312
  };
306
313
 
307
- const mockInjector = {
308
- get: vi.fn((token: any) => {
309
- if (token.name === 'ChargesProvider') return mockChargesProvider;
310
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
311
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
312
- return null;
313
- }),
314
- } as unknown as Injector;
314
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
315
315
 
316
316
  const provider = new ChargesMatcherProvider();
317
317
 
@@ -342,14 +342,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
342
342
  },
343
343
  };
344
344
 
345
- const mockInjector = {
346
- get: vi.fn((token: any) => {
347
- if (token.name === 'ChargesProvider') return mockChargesProvider;
348
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
349
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
350
- return null;
351
- }),
352
- } as unknown as Injector;
345
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
353
346
 
354
347
  const provider = new ChargesMatcherProvider();
355
348
  const result = await provider.findMatchesForCharge(sourceChargeId, { adminContext: { defaultAdminBusinessId: ADMIN_BUSINESS_ID }, injector: mockInjector } as any);
@@ -394,14 +387,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
394
387
  },
395
388
  };
396
389
 
397
- const mockInjector = {
398
- get: vi.fn((token: any) => {
399
- if (token.name === 'ChargesProvider') return mockChargesProvider;
400
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
401
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
402
- return null;
403
- }),
404
- } as unknown as Injector;
390
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
405
391
 
406
392
  const provider = new ChargesMatcherProvider();
407
393
  const result = await provider.findMatchesForCharge(sourceChargeId, { adminContext: { defaultAdminBusinessId: ADMIN_BUSINESS_ID }, injector: mockInjector } as any);
@@ -465,14 +451,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
465
451
  },
466
452
  };
467
453
 
468
- const mockInjector = {
469
- get: vi.fn((token: any) => {
470
- if (token.name === 'ChargesProvider') return mockChargesProvider;
471
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
472
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
473
- return null;
474
- }),
475
- } as unknown as Injector;
454
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
476
455
 
477
456
  const provider = new ChargesMatcherProvider();
478
457
  const result = await provider.findMatchesForCharge(sourceChargeId, { adminContext: { defaultAdminBusinessId: ADMIN_BUSINESS_ID }, injector: mockInjector } as any);
@@ -483,9 +462,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
483
462
  });
484
463
 
485
464
  it('should throw error if user ID not in context', async () => {
486
- const mockInjector = {
487
- get: vi.fn(() => null), // No user
488
- } as unknown as Injector;
465
+ const mockInjector = getMockInjector();
489
466
 
490
467
  const provider = new ChargesMatcherProvider();
491
468
 
@@ -531,14 +508,7 @@ describe('ChargesMatcherProvider - Integration Tests', () => {
531
508
  },
532
509
  };
533
510
 
534
- const mockInjector = {
535
- get: vi.fn((token: any) => {
536
- if (token.name === 'ChargesProvider') return mockChargesProvider;
537
- if (token.name === 'TransactionsProvider') return mockTransactionsProvider;
538
- if (token.name === 'DocumentsProvider') return mockDocumentsProvider;
539
- return null;
540
- }),
541
- } as unknown as Injector;
511
+ const mockInjector = getMockInjector(mockChargesProvider, mockTransactionsProvider, mockDocumentsProvider);
542
512
 
543
513
  const provider = new ChargesMatcherProvider();
544
514
  const result = await provider.findMatchesForCharge(sourceChargeId, { adminContext: { defaultAdminBusinessId: ADMIN_BUSINESS_ID }, injector: mockInjector } as any);