@mojaloop/central-ledger 20.0.0-snapshot.0 → 20.1.1

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 (478) hide show
  1. package/.grype.yaml +97 -0
  2. package/.license-scanner.json +16 -0
  3. package/.ncurc.yaml +19 -11
  4. package/.nvmrc +1 -1
  5. package/.nycrc.yml +14 -2
  6. package/CHANGELOG.md +685 -0
  7. package/CODEOWNERS +1 -1
  8. package/Dockerfile +13 -10
  9. package/LICENSE.md +1 -1
  10. package/README.md +45 -98
  11. package/audit-ci.jsonc +1 -1
  12. package/config/default.json +74 -6
  13. package/config/deprecated.default-settlement.json +160 -0
  14. package/docker/central-ledger/default.json +15 -3
  15. package/docker/ml-api-adapter/default.json +28 -0
  16. package/docker-compose.yml +54 -53
  17. package/nodemon.json +6 -0
  18. package/package.json +167 -64
  19. package/sbom-v20.1.0.csv +1283 -0
  20. package/scripts/_wait4_all.js +5 -5
  21. package/scripts/transferSettlementTemp/interchangeFeeCalculation.js +51 -0
  22. package/src/api/index.ts +30 -0
  23. package/src/api/interface/swagger.json +2249 -2054
  24. package/src/api/ledgerAccountTypes/handler.js +1 -1
  25. package/src/api/participants/handler.js +82 -40
  26. package/src/api/participants/routes.js +9 -3
  27. package/src/api/root/handler.int.ts +55 -0
  28. package/src/api/routes.js +7 -5
  29. package/src/api/server.ts +27 -0
  30. package/src/api/server.unit.ts +16 -0
  31. package/src/api/settlementModels/handler.js +6 -6
  32. package/src/api/settlementModels/routes.js +4 -4
  33. package/src/api/transactions/handler.js +3 -4
  34. package/src/cryptoConditions/index.js +24 -3
  35. package/src/domain/bulkTransfer/index.js +1 -1
  36. package/src/domain/fx/cyril.js +23 -5
  37. package/src/domain/participant/index.d.ts +47 -0
  38. package/src/domain/participant/index.int.ts +724 -0
  39. package/src/domain/participant/index.js +20 -18
  40. package/src/domain/position/abort.js +83 -18
  41. package/src/domain/position/binProcessor.js +1 -1
  42. package/src/domain/position/fulfil.js +10 -1
  43. package/src/domain/position/fx-fulfil.js +1 -1
  44. package/src/domain/position/fx-prepare.js +2 -2
  45. package/src/domain/position/fx-timeout-reserved.js +7 -1
  46. package/src/domain/position/prepare.js +2 -2
  47. package/src/domain/position/timeout-reserved.js +1 -1
  48. package/src/domain/timeout/index.js +16 -1
  49. package/src/domain/transfer/transform.js +1 -1
  50. package/src/handlers/admin/handler.js +3 -3
  51. package/src/handlers/bulk/fulfil/handler.js +2 -2
  52. package/src/handlers/bulk/get/handler.js +2 -2
  53. package/src/handlers/bulk/index.js +1 -1
  54. package/src/handlers/bulk/prepare/handler.js +2 -2
  55. package/src/handlers/bulk/processing/handler.js +2 -2
  56. package/src/handlers/index.js +31 -1
  57. package/src/handlers/positions/handler.js +2 -4
  58. package/src/handlers/positions/handlerBatch.js +29 -13
  59. package/src/handlers/register.js +45 -30
  60. package/src/handlers/timeouts/handler.js +242 -22
  61. package/src/handlers/transfers/FxFulfilService.js +5 -2
  62. package/src/handlers/transfers/fx-abort.int.ts +209 -0
  63. package/src/handlers/transfers/fx-handlers.int.ts +275 -0
  64. package/src/handlers/transfers/fx-timeout.int.ts +284 -0
  65. package/src/handlers/transfers/handler.js +117 -11
  66. package/src/handlers/transfers/handlers.int.ts +538 -0
  67. package/src/handlers/transfers/prepare.int.ts +1283 -0
  68. package/src/handlers/transfers/prepare.js +3 -3
  69. package/src/handlers/transfers/validator.js +2 -3
  70. package/src/knexfile.js +18 -0
  71. package/src/lib/cache.js +36 -52
  72. package/src/lib/config/index.ts +60 -0
  73. package/src/lib/config/resolver.ts +231 -0
  74. package/src/lib/config/resolver.unit.ts +72 -0
  75. package/src/lib/config/types.ts +372 -0
  76. package/src/lib/config/util.ts +523 -0
  77. package/src/lib/config/util.unit.ts +825 -0
  78. package/src/lib/distLock.js +30 -0
  79. package/src/lib/enum.js +1 -1
  80. package/src/lib/enumCached.js +8 -20
  81. package/src/lib/healthCheck/subServiceHealth.js +31 -8
  82. package/src/lib/migrator.js +3 -3
  83. package/src/lib/proxyCache.js +3 -3
  84. package/{migrations → src/migrations}/100100_event.js +10 -6
  85. package/{migrations → src/migrations}/110100_contactType.js +10 -6
  86. package/{migrations → src/migrations}/110101_contactType-indexes.js +9 -5
  87. package/{migrations → src/migrations}/110200_currency.js +10 -6
  88. package/{migrations → src/migrations}/110201_currency-scale.js +10 -6
  89. package/{migrations → src/migrations}/110300_endpointType.js +10 -6
  90. package/{migrations → src/migrations}/110301_endpointType-indexes.js +9 -5
  91. package/{migrations → src/migrations}/110400_ledgerEntryType.js +10 -6
  92. package/{migrations → src/migrations}/110401_ledgerEntryType-indexes.js +9 -5
  93. package/{migrations → src/migrations}/110450_ledgerAccountType.js +10 -6
  94. package/{migrations → src/migrations}/110451_ledgerAccountType-indexes.js +9 -5
  95. package/{migrations → src/migrations}/110500_participantLimitType.js +10 -6
  96. package/{migrations → src/migrations}/110501_participantLimitType-indexes.js +9 -5
  97. package/{migrations → src/migrations}/110600_transferParticipantRoleType.js +10 -6
  98. package/{migrations → src/migrations}/110601_transferParticipantRoleType-indexes.js +9 -5
  99. package/{migrations → src/migrations}/110700_transferState.js +10 -6
  100. package/{migrations → src/migrations}/110800_settlementWindowState.js +9 -5
  101. package/{migrations → src/migrations}/110900_settlementState.js +10 -6
  102. package/{migrations → src/migrations}/111000_amountType.js +9 -11
  103. package/{migrations → src/migrations}/111001_amountType-indexes.js +9 -11
  104. package/{migrations → src/migrations}/111100_balanceOfPayments.js +9 -11
  105. package/{migrations → src/migrations}/111101_balanceOfPayments-indexes.js +9 -11
  106. package/{migrations → src/migrations}/111200_partyIdentifierType.js +9 -11
  107. package/{migrations → src/migrations}/111201_partyIdentifierType-indexes.js +9 -11
  108. package/{migrations → src/migrations}/111300_partyType.js +9 -11
  109. package/{migrations → src/migrations}/111301_partyType-indexes.js +9 -11
  110. package/{migrations → src/migrations}/111400_quoteDuplicateCheck.js +9 -11
  111. package/{migrations → src/migrations}/111500_transactionInitiator.js +9 -11
  112. package/{migrations → src/migrations}/111501_transactionInitiator-indexes.js +9 -11
  113. package/{migrations → src/migrations}/111600_transactionInitiatorType.js +9 -11
  114. package/{migrations → src/migrations}/111601_transactionInitiatorType-indexes.js +9 -11
  115. package/{migrations → src/migrations}/111700_settlementDelay.js +9 -11
  116. package/{migrations → src/migrations}/111701_settlementDelay-indexes.js +10 -12
  117. package/{migrations → src/migrations}/111800_settlementInterchange.js +9 -11
  118. package/{migrations → src/migrations}/111801_settlementInterchange-indexes.js +10 -12
  119. package/{migrations → src/migrations}/111900_settlementGranularity.js +9 -11
  120. package/{migrations → src/migrations}/111901_settlementGranularity-indexes.js +10 -12
  121. package/{migrations → src/migrations}/112000_bulkTransferState.js +10 -6
  122. package/{migrations → src/migrations}/112100_bulkProcessingState.js +10 -6
  123. package/{migrations → src/migrations}/112101_bulkProcessingState-indexes.js +9 -5
  124. package/{migrations → src/migrations}/200100_participant.js +10 -6
  125. package/{migrations → src/migrations}/200101_participant-indexes.js +9 -5
  126. package/{migrations → src/migrations}/200200_participantContact.js +10 -6
  127. package/{migrations → src/migrations}/200201_participantContact-indexes.js +9 -5
  128. package/{migrations → src/migrations}/200300_participantEndpoint.js +10 -6
  129. package/{migrations → src/migrations}/200301_participantEndpoint-indexes.js +9 -5
  130. package/{migrations → src/migrations}/200400_participantParty.js +10 -6
  131. package/{migrations → src/migrations}/200401_participantParty-indexes.js +9 -5
  132. package/{migrations → src/migrations}/200600_token.js +10 -6
  133. package/{migrations → src/migrations}/200601_token-indexes.js +10 -6
  134. package/{migrations → src/migrations}/300100_transferDuplicateCheck.js +11 -7
  135. package/{migrations → src/migrations}/300150_bulkTransferDuplicateCheck.js +11 -7
  136. package/{migrations → src/migrations}/300200_transfer.js +11 -7
  137. package/{migrations → src/migrations}/300201_transfer-indexes.js +9 -5
  138. package/{migrations → src/migrations}/300202_transfer-decimal184.js +10 -6
  139. package/{migrations → src/migrations}/300250_bulkTransfer.js +11 -8
  140. package/{migrations → src/migrations}/300251_bulkTransfer-indexes.js +9 -5
  141. package/{migrations → src/migrations}/300275_bulkTransferAssociation.js +11 -8
  142. package/{migrations → src/migrations}/300276_bulkTransferAssociation-indexes.js +9 -5
  143. package/{migrations → src/migrations}/300300_ilpPacket.js +10 -6
  144. package/{migrations → src/migrations}/300400_transferStateChange.js +10 -6
  145. package/{migrations → src/migrations}/300401_transferStateChange-indexes.js +9 -5
  146. package/{migrations → src/migrations}/300450_bulkTransferStateChange.js +10 -6
  147. package/{migrations → src/migrations}/300451_bulkTransferStateChange-indexes.js +9 -5
  148. package/{migrations → src/migrations}/300500_segment.js +10 -6
  149. package/{migrations → src/migrations}/300501_segment-indexes.js +9 -5
  150. package/{migrations → src/migrations}/310100_participantCurrency.js +10 -6
  151. package/{migrations → src/migrations}/310101_participantCurrency-indexes.js +9 -5
  152. package/{migrations → src/migrations}/310200_transferParticipant.js +10 -6
  153. package/{migrations → src/migrations}/310201_transferParticipant-indexes.js +9 -5
  154. package/{migrations → src/migrations}/310202_transferParticipant-decimal184.js +10 -6
  155. package/{migrations → src/migrations}/310203_transferParticipant-indexes.js +9 -5
  156. package/{migrations → src/migrations}/310204_transferParticipant-participantId.js +11 -7
  157. package/{migrations → src/migrations}/310300_participantPosition.js +10 -6
  158. package/{migrations → src/migrations}/310301_participantPosition-indexes.js +9 -5
  159. package/{migrations → src/migrations}/310302_participantPosition-decimal184.js +10 -6
  160. package/{migrations → src/migrations}/310400_participantPositionChange.js +10 -6
  161. package/{migrations → src/migrations}/310401_participantPositionChange-indexes.js +9 -5
  162. package/{migrations → src/migrations}/310402_participantPositionChange-decimal184.js +10 -6
  163. package/src/migrations/310403_participantPositionChange-participantCurrencyId.js +105 -0
  164. package/{migrations → src/migrations}/310404_participantPositionChange-change.js +11 -7
  165. package/src/migrations/310405_participantPositionChange-positionChange.js +56 -0
  166. package/src/migrations/310406_participantPositionChange-positionChange-revert.js +50 -0
  167. package/{migrations → src/migrations}/310500_participantLimit.js +10 -6
  168. package/{migrations → src/migrations}/310501_participantLimit-indexes.js +9 -5
  169. package/{migrations → src/migrations}/310502_participantLimit-decimal184.js +10 -6
  170. package/{migrations → src/migrations}/310503_participantLimit-indexes-composite.js +9 -5
  171. package/{migrations → src/migrations}/400100_settlementWindow.js +10 -6
  172. package/{migrations → src/migrations}/400200_settlement.js +10 -6
  173. package/{migrations → src/migrations}/400300_settlementSettlementWindow.js +10 -6
  174. package/{migrations → src/migrations}/400301_settlementSettlementWindow-indexes.js +9 -6
  175. package/{migrations → src/migrations}/400400_settlementWindowStateChange.js +10 -6
  176. package/{migrations → src/migrations}/400401_settlmentWindowStateChange-indexes.js +9 -5
  177. package/{migrations → src/migrations}/400500_settlementTransferParticipant.js +10 -6
  178. package/{migrations → src/migrations}/400501_settlementTransferParticipant-indexes.js +9 -5
  179. package/{migrations → src/migrations}/400502_settlementTransferParticipant-decimal184.js +10 -6
  180. package/{migrations → src/migrations}/400600_settlementParticipantCurrency.js +10 -6
  181. package/{migrations → src/migrations}/400601_settlementParticipantCurrency-indexes.js +9 -5
  182. package/{migrations → src/migrations}/400602_settlementParticipantCurrency-decimal184.js +10 -6
  183. package/{migrations → src/migrations}/400700_settlementParticipantCurrencyStateChange.js +10 -6
  184. package/{migrations → src/migrations}/400701_settlementParticipantCurrencyStateChange-indexes.js +9 -5
  185. package/{migrations → src/migrations}/400800_settlementStateChange.js +10 -6
  186. package/{migrations → src/migrations}/400801_settlementStateChange-indexes.js +9 -5
  187. package/{migrations → src/migrations}/400900_settlementWindowContent.js +10 -6
  188. package/{migrations → src/migrations}/401000_settlementWindowContentStateChange.js +10 -6
  189. package/{migrations → src/migrations}/401001_settlementWindowContentStateChange-indexes.js +15 -11
  190. package/{migrations → src/migrations}/401002_settlementWindowContent-indexes.js +9 -5
  191. package/{migrations → src/migrations}/401200_settlementContentAggregation.js +10 -6
  192. package/{migrations → src/migrations}/401201_settlementContentAggregation-indexes.js +9 -5
  193. package/{migrations → src/migrations}/401300_settlementModel.js +10 -6
  194. package/{migrations → src/migrations}/401301_settlementModel-indexes.js +9 -5
  195. package/{migrations → src/migrations}/410100_transferFulfilmentDuplicateCheck.js +10 -6
  196. package/{migrations → src/migrations}/410101_transferFulfilmentDuplicateCheck-indexes.js +9 -5
  197. package/{migrations → src/migrations}/410102_transferFulfilmentDuplicateCheck-dropForeignTransferId.js +10 -6
  198. package/{migrations → src/migrations}/410103_transferFulfilmentDuplicateCheck-hashNullable.js +10 -6
  199. package/{migrations → src/migrations}/410200_transferFulfilment.js +10 -6
  200. package/{migrations → src/migrations}/410201_transferFulfilment-indexes.js +9 -5
  201. package/{migrations → src/migrations}/410202_transferFulfilment-ilpFulfilment.js +10 -6
  202. package/{migrations → src/migrations}/410203_transferFulfilment-foreignTransferFulfilmentId.js +10 -6
  203. package/{migrations → src/migrations}/410240_bulkTransferFulfilmentDuplicateCheck.js +10 -6
  204. package/{migrations → src/migrations}/410250_bulkTransferFulfilment.js +10 -6
  205. package/{migrations → src/migrations}/410300_transferExtension.js +10 -6
  206. package/{migrations → src/migrations}/410301_transferExtension-indexes.js +9 -5
  207. package/{migrations → src/migrations}/410302_transferExtension-transferErrorId.js +10 -6
  208. package/{migrations → src/migrations}/410350_bulkTransferExtension.js +10 -6
  209. package/{migrations → src/migrations}/410351_bulkTransferExtension-indexes.js +9 -5
  210. package/{migrations → src/migrations}/410400_transferTimeout.js +10 -6
  211. package/{migrations → src/migrations}/410401_transferTimeout-indexes.js +9 -5
  212. package/{migrations → src/migrations}/410450_transferErrorDuplicateCheck.js +10 -6
  213. package/{migrations → src/migrations}/410500_transferError.js +10 -6
  214. package/{migrations → src/migrations}/410501_transferError-indexes.js +9 -5
  215. package/{migrations → src/migrations}/410502_transferError-foreignTransferErrorDuplicateCheckId.js +10 -6
  216. package/{migrations → src/migrations}/410550_bulkTransferError.js +10 -6
  217. package/{migrations → src/migrations}/410551_bulkTransferError-indexes.js +9 -5
  218. package/{migrations → src/migrations}/410600_expiringTransfer.js +10 -6
  219. package/{migrations → src/migrations}/410601_expiringTransfer-indexes.js +9 -5
  220. package/{migrations → src/migrations}/500100_transactionReference.js +9 -11
  221. package/{migrations → src/migrations}/500101_transactionReference-indexes.js +9 -11
  222. package/{migrations → src/migrations}/500200_transactionScenario.js +9 -11
  223. package/{migrations → src/migrations}/500201_transactionScenario-indexes.js +9 -11
  224. package/{migrations → src/migrations}/500300_transactionSubScenario.js +9 -11
  225. package/{migrations → src/migrations}/500400_quote.js +9 -11
  226. package/src/migrations/500401_quote-hotfix-2719.js +56 -0
  227. package/{migrations → src/migrations}/500500_quoteParty.js +9 -11
  228. package/src/migrations/500501_feature-fixSubIdRef.js +51 -0
  229. package/{migrations → src/migrations}/500600_party.js +9 -11
  230. package/{migrations → src/migrations}/500601_party-2480.js +14 -11
  231. package/{migrations → src/migrations}/500700_quoteResponse.js +9 -11
  232. package/{migrations → src/migrations}/500800_quoteResponseIlpPacket.js +9 -11
  233. package/{migrations → src/migrations}/500900_geoCode.js +9 -11
  234. package/{migrations → src/migrations}/501000_quoteExtension.js +9 -11
  235. package/{migrations → src/migrations}/501001_quoteExtension-quote-service-174.js +10 -7
  236. package/{migrations → src/migrations}/501002_quoteExtension-2522.js +12 -9
  237. package/{migrations → src/migrations}/501100_quoteResponseDuplicateCheck.js +9 -11
  238. package/{migrations → src/migrations}/501200_quoteError.js +9 -11
  239. package/{migrations → src/migrations}/501300_transferRules.js +9 -11
  240. package/{migrations → src/migrations}/600010_fxTransferType.js +5 -4
  241. package/{migrations → src/migrations}/600011_fxTransferType-indexes.js +3 -3
  242. package/{migrations → src/migrations}/600012_fxParticipantCurrencyType.js +5 -4
  243. package/{migrations → src/migrations}/600013_fxParticipantCurrencyType-indexes.js +3 -3
  244. package/{migrations → src/migrations}/600100_fxTransferDuplicateCheck.js +11 -7
  245. package/{migrations → src/migrations}/600110_fxTransferErrorDuplicateCheck.js.js +1 -1
  246. package/{migrations → src/migrations}/600200_fxTransfer.js +11 -7
  247. package/{migrations → src/migrations}/600201_fxTransfer-indexes.js +9 -5
  248. package/{migrations → src/migrations}/600400_fxTransferStateChange.js +10 -6
  249. package/{migrations → src/migrations}/600401_fxTransferStateChange-indexes.js +9 -5
  250. package/{migrations → src/migrations}/600501_fxWatchList.js +11 -7
  251. package/{migrations → src/migrations}/600502_fxWatchList-indexes.js +9 -5
  252. package/{migrations → src/migrations}/600600_fxTransferFulfilmentDuplicateCheck.js +10 -6
  253. package/{migrations → src/migrations}/600601_fxTransferFulfilmentDuplicateCheck-indexes.js +9 -5
  254. package/{migrations → src/migrations}/600700_fxTransferFulfilment.js +10 -6
  255. package/{migrations → src/migrations}/600701_fxTransferFulfilment-indexes.js +9 -5
  256. package/{migrations → src/migrations}/600800_fxTransferExtension.js +10 -6
  257. package/{migrations → src/migrations}/601400_fxTransferTimeout.js +10 -6
  258. package/{migrations → src/migrations}/601401_fxTransferTimeout-indexes.js +9 -5
  259. package/{migrations → src/migrations}/601500_fxTransferError.js +10 -6
  260. package/{migrations → src/migrations}/601501_fxTransferError-indexes.js +9 -5
  261. package/{migrations → src/migrations}/610200_fxTransferParticipant.js +10 -6
  262. package/{migrations → src/migrations}/610201_fxTransferParticipant-indexes.js +9 -5
  263. package/{migrations → src/migrations}/610202_fxTransferParticipant-participantId.js +11 -7
  264. package/{migrations → src/migrations}/610403_participantPositionChange-fxTransfer.js +10 -6
  265. package/{migrations → src/migrations}/800100_quotePartyView.js +10 -12
  266. package/{migrations → src/migrations}/800101_feature-fixSubIdRef.js +10 -12
  267. package/{migrations → src/migrations}/800200_quoteView.js +10 -12
  268. package/{migrations → src/migrations}/800300_quoteResponseView.js +10 -12
  269. package/src/migrations/900100_foreign-keys.js +57 -0
  270. package/src/migrations/900101_foreign-keys.js +45 -0
  271. package/{migrations → src/migrations}/910100_feature904DDL.js +16 -12
  272. package/{migrations → src/migrations}/910101_feature904DataMigration.js +10 -6
  273. package/{migrations → src/migrations}/910102_feature949DataMigration.js +10 -6
  274. package/{migrations → src/migrations}/910102_hotfix954.js +9 -5
  275. package/{migrations → src/migrations}/910103_feature1093SettlementByCurrency.js +12 -8
  276. package/{migrations → src/migrations}/940100_quotePartyIdInfoExtension.js +8 -10
  277. package/src/migrations/940101_quotePartyIdInfoExtension-2522.js +66 -0
  278. package/{migrations → src/migrations}/950100_settlementContentAggregation-decimal184.js +9 -5
  279. package/{migrations → src/migrations}/950101_transferParticipantStateChange.js +11 -7
  280. package/{migrations → src/migrations}/950102_settlementModel-adjustPosition.js +11 -7
  281. package/{migrations → src/migrations}/950103_dropTransferParticipantStateChange.js +12 -8
  282. package/{migrations → src/migrations}/950104_settlementModel-settlementAccountTypeId.js +11 -13
  283. package/{migrations → src/migrations}/950106_unique_settlement_model_ledger_account_currency.js +9 -5
  284. package/src/migrations/950107_settlementWindowContent_foreign_settlementModel.js +63 -0
  285. package/{migrations → src/migrations}/950108_participantProxy.js +1 -2
  286. package/src/migrations/950120_fxQuoteConversionTerms_sourceAmount_nullable.js +66 -0
  287. package/{migrations → src/migrations}/960100_create_externalParticipant.js +10 -7
  288. package/{migrations → src/migrations}/960110_alter_transferParticipant__addFiled_externalParticipantId.js +10 -7
  289. package/{migrations → src/migrations}/960111_alter_fxTransferParticipant__addFiled_externalParticipantId.js +8 -5
  290. package/src/migrations/960112_fxTransfer-indexes2.js +42 -0
  291. package/src/migrations/960113_fxTransferExtension-indexes.js +42 -0
  292. package/src/migrations/960114_fxTransferTimeout-indexes2.js +41 -0
  293. package/src/migrations/961000_participantEndpoint_unique.js +59 -0
  294. package/src/migrations/961001_transferForwarded.js +51 -0
  295. package/src/migrations/961002_fxTransferForwarded.js +51 -0
  296. package/src/models/bulkTransfer/bulkTransfer.js +1 -1
  297. package/src/models/bulkTransfer/bulkTransferAssociation.js +2 -2
  298. package/src/models/bulkTransfer/bulkTransferDuplicateCheck.js +2 -2
  299. package/src/models/bulkTransfer/bulkTransferExtension.js +1 -1
  300. package/src/models/bulkTransfer/bulkTransferFulfilmentDuplicateCheck.js +2 -2
  301. package/src/models/bulkTransfer/bulkTransferStateChange.js +2 -2
  302. package/src/models/bulkTransfer/facade.js +5 -5
  303. package/src/models/bulkTransfer/individualTransfer.js +2 -2
  304. package/src/models/fxTransfer/duplicateCheck.js +1 -1
  305. package/src/models/fxTransfer/fxTransfer.js +4 -4
  306. package/src/models/fxTransfer/fxTransferError.js +1 -1
  307. package/src/models/fxTransfer/fxTransferExtension.js +1 -1
  308. package/src/models/fxTransfer/fxTransferTimeout.js +3 -3
  309. package/src/models/fxTransfer/stateChange.js +1 -1
  310. package/src/models/fxTransfer/watchList.js +1 -1
  311. package/src/models/ilpPackets/ilpPacket.js +1 -1
  312. package/src/models/ledgerAccountType/ledgerAccountType.js +1 -1
  313. package/src/models/misc/segment.js +1 -1
  314. package/src/models/participant/externalParticipant.int.ts +85 -0
  315. package/src/models/participant/externalParticipant.js +1 -1
  316. package/src/models/participant/externalParticipantCached.js +7 -31
  317. package/src/models/participant/facade.js +19 -24
  318. package/src/models/participant/participant.js +1 -1
  319. package/src/models/participant/participantCached.js +10 -33
  320. package/src/models/participant/participantCurrency.js +1 -1
  321. package/src/models/participant/participantCurrencyCached.js +11 -36
  322. package/src/models/participant/participantLimit.js +1 -1
  323. package/src/models/participant/participantLimitCached.js +9 -32
  324. package/src/models/participant/participantPosition.js +1 -1
  325. package/src/models/participant/participantPositionChange.js +4 -4
  326. package/src/models/position/batch.js +14 -14
  327. package/src/models/position/batchCached.js +9 -30
  328. package/src/models/position/facade.js +12 -6
  329. package/src/models/position/participantPosition.js +1 -1
  330. package/src/models/position/participantPositionChanges.js +3 -3
  331. package/src/models/settlement/settlementModel.js +1 -1
  332. package/src/models/settlement/settlementModelCached.js +10 -32
  333. package/src/models/transfer/facade.int.ts +139 -0
  334. package/src/models/transfer/facade.js +170 -50
  335. package/src/models/transfer/ilpPacket.js +1 -1
  336. package/src/models/transfer/transfer.js +2 -2
  337. package/src/models/transfer/transferDuplicateCheck.js +4 -4
  338. package/src/models/transfer/transferError.int.ts +112 -0
  339. package/src/models/transfer/transferError.js +2 -2
  340. package/src/models/transfer/transferErrorDuplicateCheck.js +2 -2
  341. package/src/models/transfer/transferExtension.int.ts +137 -0
  342. package/src/models/transfer/transferExtension.js +1 -1
  343. package/src/models/transfer/transferFulfilment.js +2 -2
  344. package/src/models/transfer/transferFulfilmentDuplicateCheck.js +2 -2
  345. package/src/models/transfer/transferParticipant.js +2 -2
  346. package/src/models/transfer/transferStateChange.int.ts +117 -0
  347. package/src/models/transfer/transferStateChange.js +2 -2
  348. package/src/models/transfer/transferTimeout.js +3 -3
  349. package/src/schema/bulkTransfer.js +1 -1
  350. package/{seeds → src/seeds}/amountType.js +9 -11
  351. package/{seeds → src/seeds}/balanceOfPayments.js +9 -11
  352. package/{seeds → src/seeds}/bulkProcessingState.js +9 -5
  353. package/{seeds → src/seeds}/bulkTransferState.js +9 -5
  354. package/{seeds → src/seeds}/currency.js +9 -5
  355. package/{seeds → src/seeds}/endpointType.js +9 -5
  356. package/{seeds → src/seeds}/fxParticipantCurrencyType.js +9 -5
  357. package/{seeds → src/seeds}/fxTransferType.js +9 -5
  358. package/{seeds → src/seeds}/ledgerAccountType.js +9 -5
  359. package/{seeds → src/seeds}/ledgerEntryType.js +9 -5
  360. package/{seeds → src/seeds}/participant.js +10 -6
  361. package/{seeds → src/seeds}/participantLimitType.js +9 -5
  362. package/{seeds → src/seeds}/partyIdentifierType.js +9 -11
  363. package/{seeds → src/seeds}/partyType.js +9 -11
  364. package/{seeds → src/seeds}/settlementDelay.js +9 -5
  365. package/{seeds → src/seeds}/settlementGranularity.js +9 -5
  366. package/{seeds → src/seeds}/settlementInterchange.js +10 -5
  367. package/{seeds → src/seeds}/settlementState.js +9 -5
  368. package/{seeds → src/seeds}/settlementWindow1State.js +9 -5
  369. package/{seeds → src/seeds}/settlementWindow2Open.js +9 -5
  370. package/{seeds → src/seeds}/transactionInitiator.js +9 -11
  371. package/{seeds → src/seeds}/transactionInitiatorType.js +9 -11
  372. package/{seeds → src/seeds}/transactionScenario.js +9 -11
  373. package/{seeds → src/seeds}/transferParticipantRoleType.js +9 -5
  374. package/{seeds → src/seeds}/transferState.js +9 -5
  375. package/{seeds → src/seeds}/z1000_settlementModel-deprecated.js- +9 -5
  376. package/src/settlement/api/handlerRoutes.js +71 -0
  377. package/src/settlement/api/handlers/health.js +10 -0
  378. package/src/settlement/api/handlers/index.js +57 -0
  379. package/src/settlement/api/handlers/settlementWindows/{id}.js +103 -0
  380. package/src/settlement/api/handlers/settlementWindows.js +77 -0
  381. package/src/settlement/api/handlers/settlements/{id}.js +133 -0
  382. package/src/settlement/api/handlers/settlements/{sid}/participants/{pid}/accounts/{aid}.js +127 -0
  383. package/src/settlement/api/handlers/settlements/{sid}/participants/{pid}.js +127 -0
  384. package/src/settlement/api/handlers/settlements.js +114 -0
  385. package/src/settlement/api/openapiRouting.js +87 -0
  386. package/src/settlement/api/routes.js +176 -0
  387. package/src/settlement/domain/rules/index.js +46 -0
  388. package/src/settlement/domain/settlement/index.js +405 -0
  389. package/src/settlement/domain/settlementWindow/index.js +117 -0
  390. package/src/settlement/domain/transactions/index.js +83 -0
  391. package/src/settlement/domain/transferSettlement/index.js +57 -0
  392. package/src/settlement/handlers/deferredSettlement/handler.js +180 -0
  393. package/src/settlement/handlers/grossSettlement/handler.js +180 -0
  394. package/src/settlement/handlers/index.js +101 -0
  395. package/src/settlement/handlers/register.js +92 -0
  396. package/src/settlement/handlers/rules/handler.js +164 -0
  397. package/src/settlement/interface/swagger-handler.json +34 -0
  398. package/src/settlement/interface/swagger.json +1560 -0
  399. package/src/settlement/lib/db.js +32 -0
  400. package/src/settlement/lib/kafka/index.js +41 -0
  401. package/src/settlement/lib/kafka/producer.js +142 -0
  402. package/src/settlement/lib/scriptEngine.js +99 -0
  403. package/src/settlement/lib/scriptsLoader.js +175 -0
  404. package/src/settlement/lib/utility.js +243 -0
  405. package/src/settlement/models/ilpPackets/ilpPacket.js +42 -0
  406. package/src/settlement/models/lib/enums.js +192 -0
  407. package/src/settlement/models/misc/migrationLock.js +53 -0
  408. package/src/settlement/models/settlement/facade.js +1652 -0
  409. package/src/settlement/models/settlement/index.js +55 -0
  410. package/src/settlement/models/settlement/participantCurrency.js +48 -0
  411. package/src/settlement/models/settlement/settlement.js +49 -0
  412. package/src/settlement/models/settlement/settlementModel.js +44 -0
  413. package/src/settlement/models/settlement/settlementParticipantCurrency.js +61 -0
  414. package/src/settlement/models/settlement/settlementStateChange.js +44 -0
  415. package/src/settlement/models/settlement/settlementTransferParticipant.js +46 -0
  416. package/src/settlement/models/settlementWindow/facade.js +345 -0
  417. package/src/settlement/models/settlementWindow/index.js +47 -0
  418. package/src/settlement/models/settlementWindow/settlementWindowStateChange.js +55 -0
  419. package/src/settlement/models/settlementWindowContent/facade.js +79 -0
  420. package/src/settlement/models/settlementWindowContent/index.js +40 -0
  421. package/src/settlement/models/settlementWindowContent/settlementWindowContentStateChange.js +53 -0
  422. package/src/settlement/models/transferSettlement/facade.js +363 -0
  423. package/src/settlement/models/transferSettlement/index.js +42 -0
  424. package/src/settlement/shared/logger/index.js +7 -0
  425. package/src/settlement/shared/plugins.js +88 -0
  426. package/src/settlement/shared/setup.js +224 -0
  427. package/src/settlement/utils/truthyProperty.js +37 -0
  428. package/src/shared/constants.js +14 -2
  429. package/src/shared/fspiopErrorFactory.js +16 -1
  430. package/src/shared/legacyUtilShim.js +20 -0
  431. package/src/shared/logger/index.js +1 -2
  432. package/src/shared/plugins.js +4 -4
  433. package/src/shared/results.ts +22 -0
  434. package/src/shared/results.unit.ts +38 -0
  435. package/src/shared/rethrow.js +8 -0
  436. package/src/shared/setup.js +16 -3
  437. package/src/testing/api-helpers.ts +1222 -0
  438. package/src/testing/exec-async.ts +67 -0
  439. package/src/testing/harness.snapshot.sql +3895 -0
  440. package/src/testing/harness.test.ts +15 -0
  441. package/src/testing/harness.ts +1160 -0
  442. package/src/testing/kafka.ts +221 -0
  443. package/src/testing/prng.ts +82 -0
  444. package/src/testing/rdkafka.test.ts +263 -0
  445. package/src/testing/run.ts +559 -0
  446. package/src/testing/snapshot.test.ts +92 -0
  447. package/src/testing/snapshot.ts +549 -0
  448. package/src/testing/tap-stream.ts +164 -0
  449. package/src/testing/types.ts +95 -0
  450. package/src/testing/util.ts +333 -0
  451. package/src/types/central-services-error-handling.d.ts +72 -0
  452. package/src/types/central-services-stream.d.ts +148 -0
  453. package/test-integration.Dockerfile +0 -2
  454. package/test.Dockerfile +0 -2
  455. package/tsconfig.json +40 -0
  456. package/config/knexfile.js +0 -22
  457. package/docker/env.sh +0 -15
  458. package/migrations/310403_participantPositionChange-participantCurrencyId.js +0 -47
  459. package/migrations/500401_quote-hotfix-2719.js +0 -58
  460. package/migrations/500501_feature-fixSubIdRef.js +0 -53
  461. package/migrations/900100_foreign-keys.js +0 -53
  462. package/migrations/900101_foreign-keys.js +0 -41
  463. package/migrations/940101_quotePartyIdInfoExtension-2522.js +0 -64
  464. package/migrations/950107_settlementWindowContent_foreign_settlementModel.js +0 -60
  465. package/src/api/index.js +0 -16
  466. package/src/lib/config.js +0 -76
  467. package/src/shared/loggingPlugin.js +0 -78
  468. /package/{migrations → src/migrations}/950109_fxQuote.js +0 -0
  469. /package/{migrations → src/migrations}/950110_fxQuoteResponse.js +0 -0
  470. /package/{migrations → src/migrations}/950111_fxQuoteError.js +0 -0
  471. /package/{migrations → src/migrations}/950113_fxQuoteDuplicateCheck.js +0 -0
  472. /package/{migrations → src/migrations}/950114_fxQuoteResponseDuplicateCheck.js +0 -0
  473. /package/{migrations → src/migrations}/950115_fxQuoteConversionTerms.js +0 -0
  474. /package/{migrations → src/migrations}/950116_fxQuoteConversionTermsExtension.js +0 -0
  475. /package/{migrations → src/migrations}/950117_fxQuoteResponseConversionTerms.js +0 -0
  476. /package/{migrations → src/migrations}/950118_fxQuoteResponseConversionTermsExtension.js +0 -0
  477. /package/{migrations → src/migrations}/950119_fxCharge.js +0 -0
  478. /package/{migrations → src/migrations}/migration.template +0 -0
package/.grype.yaml ADDED
@@ -0,0 +1,97 @@
1
+ scan-type: source
2
+ ignore:
3
+ - vulnerability: GHSA-3ppc-4f35-3m26
4
+ reason: minimatch upgrade breaks some dev tools so adding this to ignore list
5
+ - vulnerability: CVE-2025-60876
6
+ reason: No fix available as of 1.37.0-r30
7
+ - vulnerability: GHSA-83g3-92jg-28cx
8
+ include-aliases: true
9
+ - vulnerability: GHSA-34x7-hfp2-rc4v
10
+ include-aliases: true
11
+ - vulnerability: GHSA-5j98-mcp5-4vw2
12
+ include-aliases: true
13
+ - vulnerability: GHSA-8qq5-rm4j-mr97
14
+ include-aliases: true
15
+ - vulnerability: GHSA-r6q2-hw4h-h46w
16
+ include-aliases: true
17
+ - vulnerability: CVE-2025-15467
18
+ include-aliases: true
19
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (critical severity)"
20
+ - vulnerability: CVE-2025-69420
21
+ include-aliases: true
22
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (high severity)"
23
+ - vulnerability: CVE-2025-59465
24
+ include-aliases: true
25
+ reason: "Node.js binary vulnerability: node - requires Node.js runtime update as of 2026-02-23 (high severity)"
26
+ - vulnerability: CVE-2025-69421
27
+ include-aliases: true
28
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (high severity)"
29
+ - vulnerability: CVE-2025-69419
30
+ include-aliases: true
31
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (high severity)"
32
+ - vulnerability: CVE-2026-22796
33
+ include-aliases: true
34
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
35
+ - vulnerability: CVE-2025-66199
36
+ include-aliases: true
37
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
38
+ - vulnerability: CVE-2025-15468
39
+ include-aliases: true
40
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
41
+ - vulnerability: CVE-2026-21637
42
+ include-aliases: true
43
+ reason: "Node.js binary vulnerability: node - requires Node.js runtime update as of 2026-02-23 (high severity)"
44
+ - vulnerability: CVE-2025-55131
45
+ include-aliases: true
46
+ reason: "Node.js binary vulnerability: node - requires Node.js runtime update as of 2026-02-23 (high severity)"
47
+ - vulnerability: CVE-2025-59466
48
+ include-aliases: true
49
+ reason: "Node.js binary vulnerability: node - requires Node.js runtime update as of 2026-02-23 (high severity)"
50
+ - vulnerability: CVE-2025-55130
51
+ include-aliases: true
52
+ reason: "Node.js binary vulnerability: node - requires Node.js runtime update as of 2026-02-23 (critical severity)"
53
+ - vulnerability: CVE-2026-22795
54
+ include-aliases: true
55
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
56
+ - vulnerability: CVE-2025-68160
57
+ include-aliases: true
58
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
59
+ - vulnerability: CVE-2025-11187
60
+ include-aliases: true
61
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
62
+ - vulnerability: GHSA-73rr-hh4g-fpgx
63
+ include-aliases: true
64
+ reason: >-
65
+ Base image npm package: diff - bundled in Node.js base image, not fixable via application dependencies as of
66
+ 2026-02-23 (low severity)
67
+ - vulnerability: CVE-2025-55132
68
+ include-aliases: true
69
+ reason: "Node.js binary vulnerability: node - requires Node.js runtime update as of 2026-02-23 (moderate severity)"
70
+ - vulnerability: CVE-2026-27171
71
+ include-aliases: true
72
+ reason: "Alpine base image package (apk): zlib - no npm fix available as of 2026-02-23 (moderate severity)"
73
+ - vulnerability: CVE-2025-15469
74
+ include-aliases: true
75
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
76
+ - vulnerability: CVE-2025-69418
77
+ include-aliases: true
78
+ reason: "Alpine base image package (apk): libcrypto3 - no npm fix available as of 2026-02-23 (moderate severity)"
79
+ - vulnerability: GHSA-87r5-mp6g-5w5j
80
+ include-aliases: true
81
+ reason: "Unfixable npm transitive vulnerability: jsonpath (high severity) as of 2026-02-23"
82
+ - vulnerability: GHSA-378v-28hj-76wf
83
+ include-aliases: true
84
+ reason: "Unfixable npm transitive vulnerability: bn.js (moderate severity) as of 2026-02-23"
85
+ - vulnerability: GHSA-2g4f-4pwh-qvx6
86
+ include-aliases: true
87
+ reason: "Unfixable npm transitive vulnerability: ajv (moderate severity) as of 2026-02-23"
88
+ - vulnerability: GHSA-rpr9-rxv7-x643
89
+ include-aliases: true
90
+ reason: "Unfixable npm transitive vulnerability: sanitize-html (critical severity) as of 2026-05-18"
91
+ output:
92
+ - table
93
+ - json
94
+ search:
95
+ scope: squashed
96
+ quiet: false
97
+ check-for-app-update: false
@@ -0,0 +1,16 @@
1
+ {
2
+ "exceptions": {
3
+ "markdown-it-attrs@1.2.1": {
4
+ "reason": "MIT per https://www.npmjs.com/package/markdown-it-attrs#license; empty license field in package.json.",
5
+ "expires": "2027-01-01"
6
+ },
7
+ "pause-stream@0.0.11": {
8
+ "reason": "MIT/Apache 2.0 per https://github.com/dominictarr/pause-stream/blob/master/LICENSE.",
9
+ "expires": "2027-01-01"
10
+ },
11
+ "fsevents@2.3.3": {
12
+ "reason": "MIT per https://github.com/fsevents/fsevents/blob/master/LICENSE.",
13
+ "expires": "2027-01-01"
14
+ }
15
+ }
16
+ }
package/.ncurc.yaml CHANGED
@@ -1,15 +1,23 @@
1
- ## Add a TODO comment indicating the reason for each rejected dependency upgrade added to this list, and what should be done to resolve it (i.e. handle it through a story, etc).
1
+ ## Add a comment indicating the reason for each rejected dependency upgrade added to this list.
2
2
  reject: [
3
- # Tests fail when tape is upgraded.
4
- # Issue is tracked here: https://github.com/mojaloop/project/issues/3616
3
+ # central-services-shared 18.38.x ships two behavioural regressions in a minor release, both
4
+ # reproduced here on 2026-08-19: (1) Util.omitNil/mergeAndOmitNil were de-lodashed and the
5
+ # replacement filters only null, so undefined-valued keys survive - TransformService.toTransfer
6
+ # gains an "expiration: undefined" key and 3 unit tests fail (test/unit/domain/transfer/
7
+ # transform.test.js); (2) the APIDocumentation plugin option was renamed documentPath ->
8
+ # pathToSwaggerFile, breaking plugin registration. Hold at 18.37.0 (same as main) until a
9
+ # shared release restores omitNil nil-semantics; then re-apply the option rename with the bump.
10
+ "@mojaloop/central-services-shared",
11
+ # tape 5.x enforces strict .end()/plan semantics that break this repo's stream-style event tests
12
+ # (verified against the tape 5.10.x line); the suite also runs under the tapes wrapper, which is bound to tape 4.
5
13
  "tape",
6
- # TODO: New versions from 2.2.0 onwards introduce a newer incompatible version of the ILP-Packet that is not compatible with the Mojaloop Specification
14
+ # ilp-packet >2.2.0 (3.x is currently an alpha prerelease) implements a newer ILP packet format
15
+ # that is not compatible with the Mojaloop Specification.
7
16
  "ilp-packet",
8
- # v6+ (ref: https://github.com/sindresorhus/get-port/releases/tag/v6.0.0) is an ESM library and thus not compatible with CommonJS. Future story needed to resolve.
9
- "get-port",
10
- # sinon v17.0.1 causes 58 tests to fail. This will need to be resolved in a future story.
11
- # Issue is tracked here: https://github.com/mojaloop/project/issues/3616
12
- "sinon",
13
- # glob >= 11 requires node >= 20
14
- "glob"
17
+ # database-lib 11.3.8 regression (verified 2026-07-07): Table._addWhere now runs `assert(value)` on every
18
+ # criteria value, so legitimate falsy filters throw, e.g. transferExtension.getByTransferId's
19
+ # { isFulfilment: false, isError: false } fails with "AssertionError [ERR_ASSERTION]: The expression
20
+ # evaluated to a falsy value: assert(value)" (@mojaloop/database-lib/src/table.js:111). Hold at 11.3.7
21
+ # until the upstream assert is fixed to allow falsy (non-undefined/null) criteria values.
22
+ "@mojaloop/database-lib"
15
23
  ]
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- 18.20.4
1
+ 24.18.0
package/.nycrc.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  temp-directory: "./.nyc_output"
2
+ # Cache must be disabled for ts-node transpilation to work correctly with nyc.
3
+ cache: false
2
4
  check-coverage: true
3
5
  per-file: true
4
6
  lines: 90
@@ -7,7 +9,12 @@ functions: 90
7
9
  branches: 90
8
10
  all: true
9
11
  include: [
10
- "src/**/*.js"
12
+ "src/**/*.js",
13
+ "src/**/*.ts"
14
+ ]
15
+ extension: [
16
+ ".js",
17
+ ".ts"
11
18
  ]
12
19
  reporter: [
13
20
  "lcov",
@@ -31,6 +38,11 @@ exclude: [
31
38
  'src/models/participant/externalParticipantCached.js', # todo: figure out why it shows only 50% coverage in Branch
32
39
  'src/models/transfer/facade.js', ## add more test coverage
33
40
  'src/shared/fspiopErrorFactory.js',
34
- 'src/lib/proxyCache.js' # todo: remove this line after adding test coverage
41
+ 'src/lib/proxyCache.js', # todo: remove this line after adding test coverage
42
+ 'src/seeds/**',
43
+ 'src/**/*.test.ts',
44
+ 'src/testing/**', # Test runner.
45
+ 'src/**/*.unit.ts', # Unit test files.
46
+ 'src/**/*.int.ts' # Integration test tests.
35
47
  ]
36
48
  ## todo: increase test coverage before merging feat/fx-impl to main branch