@mojaloop/central-ledger 19.14.0 → 20.1.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.
- package/.grype.yaml +3 -0
- package/.license-scanner.json +16 -0
- package/.ncurc.yaml +19 -13
- package/.nvmrc +1 -1
- package/.nycrc.yml +14 -2
- package/CHANGELOG.md +51 -0
- package/Dockerfile +13 -10
- package/README.md +39 -89
- package/audit-ci.jsonc +1 -1
- package/config/default.json +60 -3
- package/config/deprecated.default-settlement.json +160 -0
- package/docker/ml-api-adapter/default.json +28 -0
- package/docker-compose.yml +6 -0
- package/nodemon.json +6 -0
- package/package.json +128 -64
- package/{sbom-v19.13.2.csv → sbom-v20.0.0.csv} +886 -736
- package/scripts/_wait4_all.js +5 -5
- package/scripts/transferSettlementTemp/interchangeFeeCalculation.js +51 -0
- package/src/api/index.ts +30 -0
- package/src/api/interface/swagger.json +2249 -2054
- package/src/api/participants/routes.js +1 -1
- package/src/api/root/handler.int.ts +55 -0
- package/src/api/routes.js +7 -6
- package/src/api/server.ts +27 -0
- package/src/api/server.unit.ts +16 -0
- package/src/api/settlementModels/routes.js +4 -4
- package/src/domain/participant/index.d.ts +47 -0
- package/src/domain/participant/index.int.ts +724 -0
- package/src/domain/participant/index.js +4 -5
- package/src/domain/position/fx-prepare.js +1 -1
- package/src/domain/position/fx-timeout-reserved.js +6 -0
- package/src/domain/position/prepare.js +1 -1
- package/src/handlers/admin/handler.js +1 -1
- package/src/handlers/index.js +30 -0
- package/src/handlers/positions/handler.js +0 -2
- package/src/handlers/positions/handlerBatch.js +5 -5
- package/src/handlers/register.js +44 -29
- package/src/handlers/timeouts/handler.js +1 -4
- package/src/handlers/transfers/fx-abort.int.ts +209 -0
- package/src/handlers/transfers/fx-handlers.int.ts +275 -0
- package/src/handlers/transfers/fx-timeout.int.ts +284 -0
- package/src/handlers/transfers/handler.js +1 -3
- package/src/handlers/transfers/handlers.int.ts +538 -0
- package/src/handlers/transfers/prepare.int.ts +1283 -0
- package/src/handlers/transfers/prepare.js +2 -2
- package/src/knexfile.js +19 -0
- package/src/lib/cache.js +1 -1
- package/src/lib/config/index.ts +60 -0
- package/src/lib/config/resolver.ts +231 -0
- package/src/lib/config/resolver.unit.ts +72 -0
- package/src/lib/config/types.ts +372 -0
- package/src/lib/config/util.ts +523 -0
- package/src/lib/config/util.unit.ts +825 -0
- package/src/lib/migrator.js +3 -3
- package/src/lib/proxyCache.js +3 -3
- package/{migrations → src/migrations}/100100_event.js +1 -1
- package/{migrations → src/migrations}/110100_contactType.js +1 -1
- package/{migrations → src/migrations}/110200_currency.js +1 -1
- package/{migrations → src/migrations}/110201_currency-scale.js +1 -1
- package/{migrations → src/migrations}/110300_endpointType.js +1 -1
- package/{migrations → src/migrations}/110400_ledgerEntryType.js +1 -1
- package/{migrations → src/migrations}/110450_ledgerAccountType.js +1 -1
- package/{migrations → src/migrations}/110500_participantLimitType.js +1 -1
- package/{migrations → src/migrations}/110600_transferParticipantRoleType.js +1 -1
- package/{migrations → src/migrations}/110700_transferState.js +1 -1
- package/{migrations → src/migrations}/110900_settlementState.js +1 -1
- package/{migrations → src/migrations}/112000_bulkTransferState.js +1 -1
- package/{migrations → src/migrations}/112100_bulkProcessingState.js +1 -1
- package/{migrations → src/migrations}/200100_participant.js +1 -1
- package/{migrations → src/migrations}/200200_participantContact.js +1 -1
- package/{migrations → src/migrations}/200300_participantEndpoint.js +1 -1
- package/{migrations → src/migrations}/200400_participantParty.js +1 -1
- package/{migrations → src/migrations}/200600_token.js +1 -1
- package/{migrations → src/migrations}/200601_token-indexes.js +1 -1
- package/{migrations → src/migrations}/300100_transferDuplicateCheck.js +2 -2
- package/{migrations → src/migrations}/300150_bulkTransferDuplicateCheck.js +2 -2
- package/{migrations → src/migrations}/300200_transfer.js +2 -2
- package/{migrations → src/migrations}/300202_transfer-decimal184.js +1 -1
- package/{migrations → src/migrations}/300250_bulkTransfer.js +2 -3
- package/{migrations → src/migrations}/300275_bulkTransferAssociation.js +2 -3
- package/{migrations → src/migrations}/300300_ilpPacket.js +1 -1
- package/{migrations → src/migrations}/300400_transferStateChange.js +1 -1
- package/{migrations → src/migrations}/300450_bulkTransferStateChange.js +1 -1
- package/{migrations → src/migrations}/300500_segment.js +1 -1
- package/{migrations → src/migrations}/310100_participantCurrency.js +1 -1
- package/{migrations → src/migrations}/310200_transferParticipant.js +1 -1
- package/{migrations → src/migrations}/310202_transferParticipant-decimal184.js +1 -1
- package/{migrations → src/migrations}/310204_transferParticipant-participantId.js +2 -2
- package/{migrations → src/migrations}/310300_participantPosition.js +1 -1
- package/{migrations → src/migrations}/310302_participantPosition-decimal184.js +1 -1
- package/{migrations → src/migrations}/310400_participantPositionChange.js +1 -1
- package/{migrations → src/migrations}/310402_participantPositionChange-decimal184.js +1 -1
- package/{migrations → src/migrations}/310403_participantPositionChange-participantCurrencyId.js +2 -2
- package/{migrations → src/migrations}/310404_participantPositionChange-change.js +2 -2
- package/{migrations → src/migrations}/310500_participantLimit.js +1 -1
- package/{migrations → src/migrations}/310502_participantLimit-decimal184.js +1 -1
- package/{migrations → src/migrations}/400100_settlementWindow.js +1 -1
- package/{migrations → src/migrations}/400200_settlement.js +1 -1
- package/{migrations → src/migrations}/400300_settlementSettlementWindow.js +1 -1
- package/{migrations → src/migrations}/400301_settlementSettlementWindow-indexes.js +0 -1
- package/{migrations → src/migrations}/400400_settlementWindowStateChange.js +1 -1
- package/{migrations → src/migrations}/400500_settlementTransferParticipant.js +1 -1
- package/{migrations → src/migrations}/400502_settlementTransferParticipant-decimal184.js +1 -1
- package/{migrations → src/migrations}/400600_settlementParticipantCurrency.js +1 -1
- package/{migrations → src/migrations}/400602_settlementParticipantCurrency-decimal184.js +1 -1
- package/{migrations → src/migrations}/400700_settlementParticipantCurrencyStateChange.js +1 -1
- package/{migrations → src/migrations}/400800_settlementStateChange.js +1 -1
- package/{migrations → src/migrations}/400900_settlementWindowContent.js +1 -1
- package/{migrations → src/migrations}/401000_settlementWindowContentStateChange.js +1 -1
- package/{migrations → src/migrations}/401001_settlementWindowContentStateChange-indexes.js +6 -6
- package/{migrations → src/migrations}/401200_settlementContentAggregation.js +1 -1
- package/{migrations → src/migrations}/401300_settlementModel.js +1 -1
- package/{migrations → src/migrations}/410100_transferFulfilmentDuplicateCheck.js +1 -1
- package/{migrations → src/migrations}/410102_transferFulfilmentDuplicateCheck-dropForeignTransferId.js +1 -1
- package/{migrations → src/migrations}/410103_transferFulfilmentDuplicateCheck-hashNullable.js +1 -1
- package/{migrations → src/migrations}/410200_transferFulfilment.js +1 -1
- package/{migrations → src/migrations}/410202_transferFulfilment-ilpFulfilment.js +1 -1
- package/{migrations → src/migrations}/410203_transferFulfilment-foreignTransferFulfilmentId.js +1 -1
- package/{migrations → src/migrations}/410240_bulkTransferFulfilmentDuplicateCheck.js +1 -1
- package/{migrations → src/migrations}/410250_bulkTransferFulfilment.js +1 -1
- package/{migrations → src/migrations}/410300_transferExtension.js +1 -1
- package/{migrations → src/migrations}/410302_transferExtension-transferErrorId.js +1 -1
- package/{migrations → src/migrations}/410350_bulkTransferExtension.js +1 -1
- package/{migrations → src/migrations}/410400_transferTimeout.js +1 -1
- package/{migrations → src/migrations}/410450_transferErrorDuplicateCheck.js +1 -1
- package/{migrations → src/migrations}/410500_transferError.js +1 -1
- package/{migrations → src/migrations}/410502_transferError-foreignTransferErrorDuplicateCheckId.js +1 -1
- package/{migrations → src/migrations}/410550_bulkTransferError.js +1 -1
- package/{migrations → src/migrations}/410600_expiringTransfer.js +1 -1
- package/{migrations → src/migrations}/500401_quote-hotfix-2719.js +8 -8
- package/{migrations → src/migrations}/500501_feature-fixSubIdRef.js +12 -12
- package/{migrations → src/migrations}/500601_party-2480.js +3 -3
- package/{migrations → src/migrations}/501001_quoteExtension-quote-service-174.js +1 -2
- package/{migrations → src/migrations}/501002_quoteExtension-2522.js +3 -3
- package/{migrations → src/migrations}/600010_fxTransferType.js +1 -1
- package/{migrations → src/migrations}/600012_fxParticipantCurrencyType.js +1 -1
- package/{migrations → src/migrations}/600100_fxTransferDuplicateCheck.js +2 -2
- package/{migrations → src/migrations}/600110_fxTransferErrorDuplicateCheck.js.js +1 -1
- package/{migrations → src/migrations}/600200_fxTransfer.js +2 -2
- package/{migrations → src/migrations}/600400_fxTransferStateChange.js +1 -1
- package/{migrations → src/migrations}/600501_fxWatchList.js +2 -2
- package/{migrations → src/migrations}/600600_fxTransferFulfilmentDuplicateCheck.js +1 -1
- package/{migrations → src/migrations}/600700_fxTransferFulfilment.js +1 -1
- package/{migrations → src/migrations}/600800_fxTransferExtension.js +1 -1
- package/{migrations → src/migrations}/601400_fxTransferTimeout.js +1 -1
- package/{migrations → src/migrations}/601500_fxTransferError.js +1 -1
- package/{migrations → src/migrations}/610200_fxTransferParticipant.js +1 -1
- package/{migrations → src/migrations}/610202_fxTransferParticipant-participantId.js +2 -2
- package/{migrations → src/migrations}/610403_participantPositionChange-fxTransfer.js +1 -1
- package/{migrations → src/migrations}/800100_quotePartyView.js +1 -1
- package/{migrations → src/migrations}/800101_feature-fixSubIdRef.js +1 -1
- package/{migrations → src/migrations}/800200_quoteView.js +1 -1
- package/{migrations → src/migrations}/800300_quoteResponseView.js +1 -1
- package/{migrations → src/migrations}/900100_foreign-keys.js +18 -18
- package/{migrations → src/migrations}/900101_foreign-keys.js +6 -6
- package/{migrations → src/migrations}/910100_feature904DDL.js +7 -7
- package/{migrations → src/migrations}/910101_feature904DataMigration.js +1 -1
- package/{migrations → src/migrations}/910102_feature949DataMigration.js +1 -1
- package/{migrations → src/migrations}/910103_feature1093SettlementByCurrency.js +3 -3
- package/{migrations → src/migrations}/940101_quotePartyIdInfoExtension-2522.js +25 -25
- package/{migrations → src/migrations}/950101_transferParticipantStateChange.js +2 -2
- package/{migrations → src/migrations}/950102_settlementModel-adjustPosition.js +2 -2
- package/{migrations → src/migrations}/950103_dropTransferParticipantStateChange.js +3 -3
- package/{migrations → src/migrations}/950104_settlementModel-settlementAccountTypeId.js +3 -3
- package/src/migrations/950107_settlementWindowContent_foreign_settlementModel.js +63 -0
- package/{migrations → src/migrations}/950108_participantProxy.js +1 -2
- package/{migrations → src/migrations}/950120_fxQuoteConversionTerms_sourceAmount_nullable.js +1 -1
- package/{migrations → src/migrations}/960100_create_externalParticipant.js +2 -2
- package/{migrations → src/migrations}/960110_alter_transferParticipant__addFiled_externalParticipantId.js +2 -2
- package/{migrations → src/migrations}/961001_transferForwarded.js +1 -1
- package/{migrations → src/migrations}/961002_fxTransferForwarded.js +1 -1
- package/src/models/participant/externalParticipant.int.ts +85 -0
- package/src/models/participant/facade.js +4 -2
- package/src/models/participant/participantCurrencyCached.js +1 -1
- package/src/models/position/facade.js +8 -2
- package/src/models/transfer/facade.int.ts +139 -0
- package/src/models/transfer/facade.js +8 -3
- package/src/models/transfer/transferDuplicateCheck.js +2 -2
- package/src/models/transfer/transferError.int.ts +112 -0
- package/src/models/transfer/transferExtension.int.ts +137 -0
- package/src/models/transfer/transferStateChange.int.ts +117 -0
- package/{seeds → src/seeds}/participant.js +1 -1
- package/{seeds → src/seeds}/settlementInterchange.js +1 -0
- package/src/settlement/api/handlerRoutes.js +71 -0
- package/src/settlement/api/handlers/health.js +10 -0
- package/src/settlement/api/handlers/index.js +57 -0
- package/src/settlement/api/handlers/settlementWindows/{id}.js +103 -0
- package/src/settlement/api/handlers/settlementWindows.js +77 -0
- package/src/settlement/api/handlers/settlements/{id}.js +133 -0
- package/src/settlement/api/handlers/settlements/{sid}/participants/{pid}/accounts/{aid}.js +127 -0
- package/src/settlement/api/handlers/settlements/{sid}/participants/{pid}.js +127 -0
- package/src/settlement/api/handlers/settlements.js +114 -0
- package/src/settlement/api/openapiRouting.js +87 -0
- package/src/settlement/api/routes.js +176 -0
- package/src/settlement/domain/rules/index.js +46 -0
- package/src/settlement/domain/settlement/index.js +405 -0
- package/src/settlement/domain/settlementWindow/index.js +117 -0
- package/src/settlement/domain/transactions/index.js +83 -0
- package/src/settlement/domain/transferSettlement/index.js +57 -0
- package/src/settlement/handlers/deferredSettlement/handler.js +180 -0
- package/src/settlement/handlers/grossSettlement/handler.js +180 -0
- package/src/settlement/handlers/index.js +101 -0
- package/src/settlement/handlers/register.js +92 -0
- package/src/settlement/handlers/rules/handler.js +164 -0
- package/src/settlement/interface/swagger-handler.json +34 -0
- package/src/settlement/interface/swagger.json +1560 -0
- package/src/settlement/lib/db.js +32 -0
- package/src/settlement/lib/kafka/index.js +41 -0
- package/src/settlement/lib/kafka/producer.js +142 -0
- package/src/settlement/lib/scriptEngine.js +99 -0
- package/src/settlement/lib/scriptsLoader.js +175 -0
- package/src/settlement/lib/utility.js +243 -0
- package/src/settlement/models/ilpPackets/ilpPacket.js +42 -0
- package/src/settlement/models/lib/enums.js +192 -0
- package/src/settlement/models/misc/migrationLock.js +53 -0
- package/src/settlement/models/settlement/facade.js +1652 -0
- package/src/settlement/models/settlement/index.js +55 -0
- package/src/settlement/models/settlement/participantCurrency.js +48 -0
- package/src/settlement/models/settlement/settlement.js +49 -0
- package/src/settlement/models/settlement/settlementModel.js +44 -0
- package/src/settlement/models/settlement/settlementParticipantCurrency.js +61 -0
- package/src/settlement/models/settlement/settlementStateChange.js +44 -0
- package/src/settlement/models/settlement/settlementTransferParticipant.js +46 -0
- package/src/settlement/models/settlementWindow/facade.js +345 -0
- package/src/settlement/models/settlementWindow/index.js +47 -0
- package/src/settlement/models/settlementWindow/settlementWindowStateChange.js +55 -0
- package/src/settlement/models/settlementWindowContent/facade.js +79 -0
- package/src/settlement/models/settlementWindowContent/index.js +40 -0
- package/src/settlement/models/settlementWindowContent/settlementWindowContentStateChange.js +53 -0
- package/src/settlement/models/transferSettlement/facade.js +363 -0
- package/src/settlement/models/transferSettlement/index.js +42 -0
- package/src/settlement/shared/logger/index.js +7 -0
- package/src/settlement/shared/plugins.js +88 -0
- package/src/settlement/shared/setup.js +224 -0
- package/src/settlement/utils/truthyProperty.js +37 -0
- package/src/shared/legacyUtilShim.js +20 -0
- package/src/shared/plugins.js +3 -3
- package/src/shared/results.ts +22 -0
- package/src/shared/results.unit.ts +38 -0
- package/src/shared/setup.js +14 -1
- package/src/testing/api-helpers.ts +1222 -0
- package/src/testing/exec-async.ts +67 -0
- package/src/testing/harness.snapshot.sql +3895 -0
- package/src/testing/harness.test.ts +15 -0
- package/src/testing/harness.ts +1160 -0
- package/src/testing/kafka.ts +221 -0
- package/src/testing/prng.ts +82 -0
- package/src/testing/rdkafka.test.ts +263 -0
- package/src/testing/run.ts +559 -0
- package/src/testing/snapshot.test.ts +92 -0
- package/src/testing/snapshot.ts +549 -0
- package/src/testing/tap-stream.ts +164 -0
- package/src/testing/types.ts +95 -0
- package/src/testing/util.ts +333 -0
- package/src/types/central-services-error-handling.d.ts +72 -0
- package/src/types/central-services-stream.d.ts +148 -0
- package/test-integration.Dockerfile +0 -2
- package/test.Dockerfile +0 -2
- package/tsconfig.json +40 -0
- package/config/knexfile.js +0 -19
- package/migrations/950107_settlementWindowContent_foreign_settlementModel.js +0 -63
- package/src/api/index.js +0 -16
- package/src/lib/config.js +0 -81
- /package/{migrations → src/migrations}/110101_contactType-indexes.js +0 -0
- /package/{migrations → src/migrations}/110301_endpointType-indexes.js +0 -0
- /package/{migrations → src/migrations}/110401_ledgerEntryType-indexes.js +0 -0
- /package/{migrations → src/migrations}/110451_ledgerAccountType-indexes.js +0 -0
- /package/{migrations → src/migrations}/110501_participantLimitType-indexes.js +0 -0
- /package/{migrations → src/migrations}/110601_transferParticipantRoleType-indexes.js +0 -0
- /package/{migrations → src/migrations}/110800_settlementWindowState.js +0 -0
- /package/{migrations → src/migrations}/111000_amountType.js +0 -0
- /package/{migrations → src/migrations}/111001_amountType-indexes.js +0 -0
- /package/{migrations → src/migrations}/111100_balanceOfPayments.js +0 -0
- /package/{migrations → src/migrations}/111101_balanceOfPayments-indexes.js +0 -0
- /package/{migrations → src/migrations}/111200_partyIdentifierType.js +0 -0
- /package/{migrations → src/migrations}/111201_partyIdentifierType-indexes.js +0 -0
- /package/{migrations → src/migrations}/111300_partyType.js +0 -0
- /package/{migrations → src/migrations}/111301_partyType-indexes.js +0 -0
- /package/{migrations → src/migrations}/111400_quoteDuplicateCheck.js +0 -0
- /package/{migrations → src/migrations}/111500_transactionInitiator.js +0 -0
- /package/{migrations → src/migrations}/111501_transactionInitiator-indexes.js +0 -0
- /package/{migrations → src/migrations}/111600_transactionInitiatorType.js +0 -0
- /package/{migrations → src/migrations}/111601_transactionInitiatorType-indexes.js +0 -0
- /package/{migrations → src/migrations}/111700_settlementDelay.js +0 -0
- /package/{migrations → src/migrations}/111701_settlementDelay-indexes.js +0 -0
- /package/{migrations → src/migrations}/111800_settlementInterchange.js +0 -0
- /package/{migrations → src/migrations}/111801_settlementInterchange-indexes.js +0 -0
- /package/{migrations → src/migrations}/111900_settlementGranularity.js +0 -0
- /package/{migrations → src/migrations}/111901_settlementGranularity-indexes.js +0 -0
- /package/{migrations → src/migrations}/112101_bulkProcessingState-indexes.js +0 -0
- /package/{migrations → src/migrations}/200101_participant-indexes.js +0 -0
- /package/{migrations → src/migrations}/200201_participantContact-indexes.js +0 -0
- /package/{migrations → src/migrations}/200301_participantEndpoint-indexes.js +0 -0
- /package/{migrations → src/migrations}/200401_participantParty-indexes.js +0 -0
- /package/{migrations → src/migrations}/300201_transfer-indexes.js +0 -0
- /package/{migrations → src/migrations}/300251_bulkTransfer-indexes.js +0 -0
- /package/{migrations → src/migrations}/300276_bulkTransferAssociation-indexes.js +0 -0
- /package/{migrations → src/migrations}/300401_transferStateChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/300451_bulkTransferStateChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/300501_segment-indexes.js +0 -0
- /package/{migrations → src/migrations}/310101_participantCurrency-indexes.js +0 -0
- /package/{migrations → src/migrations}/310201_transferParticipant-indexes.js +0 -0
- /package/{migrations → src/migrations}/310203_transferParticipant-indexes.js +0 -0
- /package/{migrations → src/migrations}/310301_participantPosition-indexes.js +0 -0
- /package/{migrations → src/migrations}/310401_participantPositionChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/310405_participantPositionChange-positionChange.js +0 -0
- /package/{migrations → src/migrations}/310406_participantPositionChange-positionChange-revert.js +0 -0
- /package/{migrations → src/migrations}/310501_participantLimit-indexes.js +0 -0
- /package/{migrations → src/migrations}/310503_participantLimit-indexes-composite.js +0 -0
- /package/{migrations → src/migrations}/400401_settlmentWindowStateChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/400501_settlementTransferParticipant-indexes.js +0 -0
- /package/{migrations → src/migrations}/400601_settlementParticipantCurrency-indexes.js +0 -0
- /package/{migrations → src/migrations}/400701_settlementParticipantCurrencyStateChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/400801_settlementStateChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/401002_settlementWindowContent-indexes.js +0 -0
- /package/{migrations → src/migrations}/401201_settlementContentAggregation-indexes.js +0 -0
- /package/{migrations → src/migrations}/401301_settlementModel-indexes.js +0 -0
- /package/{migrations → src/migrations}/410101_transferFulfilmentDuplicateCheck-indexes.js +0 -0
- /package/{migrations → src/migrations}/410201_transferFulfilment-indexes.js +0 -0
- /package/{migrations → src/migrations}/410301_transferExtension-indexes.js +0 -0
- /package/{migrations → src/migrations}/410351_bulkTransferExtension-indexes.js +0 -0
- /package/{migrations → src/migrations}/410401_transferTimeout-indexes.js +0 -0
- /package/{migrations → src/migrations}/410501_transferError-indexes.js +0 -0
- /package/{migrations → src/migrations}/410551_bulkTransferError-indexes.js +0 -0
- /package/{migrations → src/migrations}/410601_expiringTransfer-indexes.js +0 -0
- /package/{migrations → src/migrations}/500100_transactionReference.js +0 -0
- /package/{migrations → src/migrations}/500101_transactionReference-indexes.js +0 -0
- /package/{migrations → src/migrations}/500200_transactionScenario.js +0 -0
- /package/{migrations → src/migrations}/500201_transactionScenario-indexes.js +0 -0
- /package/{migrations → src/migrations}/500300_transactionSubScenario.js +0 -0
- /package/{migrations → src/migrations}/500400_quote.js +0 -0
- /package/{migrations → src/migrations}/500500_quoteParty.js +0 -0
- /package/{migrations → src/migrations}/500600_party.js +0 -0
- /package/{migrations → src/migrations}/500700_quoteResponse.js +0 -0
- /package/{migrations → src/migrations}/500800_quoteResponseIlpPacket.js +0 -0
- /package/{migrations → src/migrations}/500900_geoCode.js +0 -0
- /package/{migrations → src/migrations}/501000_quoteExtension.js +0 -0
- /package/{migrations → src/migrations}/501100_quoteResponseDuplicateCheck.js +0 -0
- /package/{migrations → src/migrations}/501200_quoteError.js +0 -0
- /package/{migrations → src/migrations}/501300_transferRules.js +0 -0
- /package/{migrations → src/migrations}/600011_fxTransferType-indexes.js +0 -0
- /package/{migrations → src/migrations}/600013_fxParticipantCurrencyType-indexes.js +0 -0
- /package/{migrations → src/migrations}/600201_fxTransfer-indexes.js +0 -0
- /package/{migrations → src/migrations}/600401_fxTransferStateChange-indexes.js +0 -0
- /package/{migrations → src/migrations}/600502_fxWatchList-indexes.js +0 -0
- /package/{migrations → src/migrations}/600601_fxTransferFulfilmentDuplicateCheck-indexes.js +0 -0
- /package/{migrations → src/migrations}/600701_fxTransferFulfilment-indexes.js +0 -0
- /package/{migrations → src/migrations}/601401_fxTransferTimeout-indexes.js +0 -0
- /package/{migrations → src/migrations}/601501_fxTransferError-indexes.js +0 -0
- /package/{migrations → src/migrations}/610201_fxTransferParticipant-indexes.js +0 -0
- /package/{migrations → src/migrations}/910102_hotfix954.js +0 -0
- /package/{migrations → src/migrations}/940100_quotePartyIdInfoExtension.js +0 -0
- /package/{migrations → src/migrations}/950100_settlementContentAggregation-decimal184.js +0 -0
- /package/{migrations → src/migrations}/950106_unique_settlement_model_ledger_account_currency.js +0 -0
- /package/{migrations → src/migrations}/950109_fxQuote.js +0 -0
- /package/{migrations → src/migrations}/950110_fxQuoteResponse.js +0 -0
- /package/{migrations → src/migrations}/950111_fxQuoteError.js +0 -0
- /package/{migrations → src/migrations}/950113_fxQuoteDuplicateCheck.js +0 -0
- /package/{migrations → src/migrations}/950114_fxQuoteResponseDuplicateCheck.js +0 -0
- /package/{migrations → src/migrations}/950115_fxQuoteConversionTerms.js +0 -0
- /package/{migrations → src/migrations}/950116_fxQuoteConversionTermsExtension.js +0 -0
- /package/{migrations → src/migrations}/950117_fxQuoteResponseConversionTerms.js +0 -0
- /package/{migrations → src/migrations}/950118_fxQuoteResponseConversionTermsExtension.js +0 -0
- /package/{migrations → src/migrations}/950119_fxCharge.js +0 -0
- /package/{migrations → src/migrations}/960111_alter_fxTransferParticipant__addFiled_externalParticipantId.js +0 -0
- /package/{migrations → src/migrations}/960112_fxTransfer-indexes2.js +0 -0
- /package/{migrations → src/migrations}/960113_fxTransferExtension-indexes.js +0 -0
- /package/{migrations → src/migrations}/960114_fxTransferTimeout-indexes2.js +0 -0
- /package/{migrations → src/migrations}/961000_participantEndpoint_unique.js +0 -0
- /package/{migrations → src/migrations}/migration.template +0 -0
- /package/{seeds → src/seeds}/amountType.js +0 -0
- /package/{seeds → src/seeds}/balanceOfPayments.js +0 -0
- /package/{seeds → src/seeds}/bulkProcessingState.js +0 -0
- /package/{seeds → src/seeds}/bulkTransferState.js +0 -0
- /package/{seeds → src/seeds}/currency.js +0 -0
- /package/{seeds → src/seeds}/endpointType.js +0 -0
- /package/{seeds → src/seeds}/fxParticipantCurrencyType.js +0 -0
- /package/{seeds → src/seeds}/fxTransferType.js +0 -0
- /package/{seeds → src/seeds}/ledgerAccountType.js +0 -0
- /package/{seeds → src/seeds}/ledgerEntryType.js +0 -0
- /package/{seeds → src/seeds}/participantLimitType.js +0 -0
- /package/{seeds → src/seeds}/partyIdentifierType.js +0 -0
- /package/{seeds → src/seeds}/partyType.js +0 -0
- /package/{seeds → src/seeds}/settlementDelay.js +0 -0
- /package/{seeds → src/seeds}/settlementGranularity.js +0 -0
- /package/{seeds → src/seeds}/settlementState.js +0 -0
- /package/{seeds → src/seeds}/settlementWindow1State.js +0 -0
- /package/{seeds → src/seeds}/settlementWindow2Open.js +0 -0
- /package/{seeds → src/seeds}/transactionInitiator.js +0 -0
- /package/{seeds → src/seeds}/transactionInitiatorType.js +0 -0
- /package/{seeds → src/seeds}/transactionScenario.js +0 -0
- /package/{seeds → src/seeds}/transferParticipantRoleType.js +0 -0
- /package/{seeds → src/seeds}/transferState.js +0 -0
- /package/{seeds → src/seeds}/z1000_settlementModel-deprecated.js- +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/*****
|
|
2
|
+
License
|
|
3
|
+
--------------
|
|
4
|
+
Copyright © 2020-2025 Mojaloop Foundation
|
|
5
|
+
The Mojaloop files are made available by the Mojaloop Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
10
|
+
|
|
11
|
+
Contributors
|
|
12
|
+
--------------
|
|
13
|
+
This is the official list of the Mojaloop project contributors for this file.
|
|
14
|
+
Names of the original copyright holders (individuals or organizations)
|
|
15
|
+
should be listed with a '*' in the first column. People who have
|
|
16
|
+
contributed from an organization can be listed under the organization
|
|
17
|
+
that actually holds the copyright for their contributions (see the
|
|
18
|
+
Mojaloop Foundation for an example). Those individuals should have
|
|
19
|
+
their names indented and be marked with a '-'. Email address can be added
|
|
20
|
+
optionally within square brackets <email>.
|
|
21
|
+
|
|
22
|
+
* Mojaloop Foundation
|
|
23
|
+
- Name Surname <name.surname@mojaloop.io>
|
|
24
|
+
|
|
25
|
+
* Georgi Georgiev <georgi.georgiev@modusbox.com>
|
|
26
|
+
* Lazola Lucas <lazola.lucas@modusbox.com>
|
|
27
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
|
28
|
+
* Miguel de Barros <miguel.debarros@modusbox.com>
|
|
29
|
+
|
|
30
|
+
--------------
|
|
31
|
+
******/
|
|
32
|
+
|
|
33
|
+
'use strict'
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @module src/handlers/lib
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
const Config = require('../../lib/config')
|
|
40
|
+
const KafkaConfig = Config.KAFKA_CONFIG
|
|
41
|
+
const { logger } = require('../shared/logger')
|
|
42
|
+
const idGenerator = require('@mojaloop/central-services-shared').Util.id
|
|
43
|
+
const Kafka = require('./kafka/index')
|
|
44
|
+
const ErrorHandler = require('@mojaloop/central-services-error-handling')
|
|
45
|
+
const generateULID = idGenerator({ type: 'ulid' })
|
|
46
|
+
/**
|
|
47
|
+
* The Producer config required
|
|
48
|
+
*
|
|
49
|
+
* @description This ENUM is for the PRODUCER of the topic being created
|
|
50
|
+
*
|
|
51
|
+
* @enum {object} ENUMS~PRODUCER
|
|
52
|
+
* @property {string} PRODUCER - PRODUCER config to be fetched
|
|
53
|
+
*/
|
|
54
|
+
const PRODUCER = 'PRODUCER'
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The Notification config required
|
|
58
|
+
*
|
|
59
|
+
* @description This ENUM is for the notification message being created
|
|
60
|
+
*
|
|
61
|
+
* @enum {object} ENUMS~NOTIFICATION
|
|
62
|
+
* @property {string} NOTIFICATION - notification to be used to update metadata
|
|
63
|
+
*/
|
|
64
|
+
const NOTIFICATION = 'notification'
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The EVENT config required
|
|
68
|
+
*
|
|
69
|
+
* @description This ENUM is for the topic being created
|
|
70
|
+
*
|
|
71
|
+
* @enum {object} ENUMS~EVENT
|
|
72
|
+
* @property {string} EVENT - event to be used get the config for Kafka
|
|
73
|
+
*/
|
|
74
|
+
const EVENT = 'event'
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The STATE constant
|
|
78
|
+
*
|
|
79
|
+
* I believe that this is a temporary solution
|
|
80
|
+
*
|
|
81
|
+
* This ENUM is for the state of the message being created
|
|
82
|
+
*
|
|
83
|
+
* @enum {object} ENUMS~STATE
|
|
84
|
+
* @property {string} STATE - used for the state of the message
|
|
85
|
+
*/
|
|
86
|
+
const STATE = {
|
|
87
|
+
SUCCESS: {
|
|
88
|
+
status: 'success',
|
|
89
|
+
code: 0,
|
|
90
|
+
description: 'action successful'
|
|
91
|
+
},
|
|
92
|
+
FAILURE: {
|
|
93
|
+
status: 'error',
|
|
94
|
+
code: 999,
|
|
95
|
+
description: 'action failed'
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* ENUMS
|
|
101
|
+
*
|
|
102
|
+
* @description Global ENUMS object
|
|
103
|
+
*
|
|
104
|
+
* @enum {string} ENUMS
|
|
105
|
+
* @property {string} PRODUCER - This ENUM is for the PRODUCER
|
|
106
|
+
*/
|
|
107
|
+
const ENUMS = {
|
|
108
|
+
PRODUCER,
|
|
109
|
+
NOTIFICATION,
|
|
110
|
+
STATE,
|
|
111
|
+
EVENT
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @function GetKafkaConfig
|
|
116
|
+
*
|
|
117
|
+
* @description participantTopicTemplate called which generates a participant topic name from the 3 inputs, which are used in the placeholder participant topic template found in the default.json
|
|
118
|
+
*
|
|
119
|
+
* @param {string} flow - This is required for the config for the Stream Processing API. Example: 'CONSUMER' ie: note the case of text
|
|
120
|
+
* @param {string} functionality - the functionality flow. Example: 'TRANSFER' ie: note the case of text
|
|
121
|
+
* @param {string} action - the action that applies to the flow. Example: 'PREPARE' ie: note the case of text
|
|
122
|
+
*
|
|
123
|
+
* @returns {string} - Returns topic name to be created, throws error if failure occurs
|
|
124
|
+
*/
|
|
125
|
+
const getKafkaConfig = (flow, functionality, action) => {
|
|
126
|
+
try {
|
|
127
|
+
const flowObject = KafkaConfig[flow]
|
|
128
|
+
const functionalityObject = flowObject[functionality]
|
|
129
|
+
const actionObject = functionalityObject[action]
|
|
130
|
+
actionObject.config.logger = logger
|
|
131
|
+
return actionObject.config
|
|
132
|
+
} catch (err) {
|
|
133
|
+
throw ErrorHandler.Factory.createInternalServerFSPIOPError(`No config found for those parameters flow='${flow}', functionality='${functionality}', action='${action}'`, err)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @function updateMessageProtocolMetadata
|
|
139
|
+
*
|
|
140
|
+
* @param {object} messageProtocol - The current messageProtocol from kafka
|
|
141
|
+
* @param {string} metadataType - the type of flow. Example: 'notification'
|
|
142
|
+
* @param {string} metadataAction - the action flow. Example: 'prepare'
|
|
143
|
+
* @param {object} state - the state of the message being passed.
|
|
144
|
+
* Example:
|
|
145
|
+
* SUCCESS: {
|
|
146
|
+
* status: 'success',
|
|
147
|
+
* code: 0,
|
|
148
|
+
* description: 'action successful'
|
|
149
|
+
* }
|
|
150
|
+
*
|
|
151
|
+
* @returns {object} - Returns updated messageProtocol
|
|
152
|
+
*/
|
|
153
|
+
const updateMessageProtocolMetadata = (messageProtocol, metadataType, metadataAction, state) => {
|
|
154
|
+
if (!messageProtocol.metadata) {
|
|
155
|
+
messageProtocol.metadata = {
|
|
156
|
+
event: {
|
|
157
|
+
id: generateULID(),
|
|
158
|
+
type: metadataType,
|
|
159
|
+
action: metadataAction,
|
|
160
|
+
state
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
messageProtocol.metadata.event.responseTo = messageProtocol.metadata.event.id
|
|
165
|
+
messageProtocol.metadata.event.id = generateULID()
|
|
166
|
+
messageProtocol.metadata.event.type = metadataType
|
|
167
|
+
messageProtocol.metadata.event.state = state
|
|
168
|
+
}
|
|
169
|
+
return messageProtocol
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @function GeneralTopicTemplate
|
|
174
|
+
*
|
|
175
|
+
* @description Generates a general topic name from the 2 inputs, which are used in the placeholder general topic template found in the default.json
|
|
176
|
+
*
|
|
177
|
+
* @param {string} functionality - the functionality flow. Example: 'transfer'
|
|
178
|
+
* @param {string} action - the action that applies to the flow. Example: 'prepare'
|
|
179
|
+
*
|
|
180
|
+
* @returns {string} - Returns topic name to be created, throws error if failure occurs
|
|
181
|
+
*/
|
|
182
|
+
const generalTopicTemplate = (functionality, action) => {
|
|
183
|
+
try {
|
|
184
|
+
return Config.KAFKA_CONFIG.TOPIC_TEMPLATES.GENERAL_TOPIC_TEMPLATE.TEMPLATE
|
|
185
|
+
.replace('{{functionality}}', functionality || '')
|
|
186
|
+
.replace('{{action}}', action || '')
|
|
187
|
+
} catch (err) {
|
|
188
|
+
logger.error(err)
|
|
189
|
+
throw ErrorHandler.Factory.reformatFSPIOPError(err)
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @function createGeneralTopicConfig
|
|
195
|
+
*
|
|
196
|
+
* @param {string} functionality - the functionality flow. Example: 'transfer' ie: note the case of text
|
|
197
|
+
* @param {string} action - the action that applies to the flow. Example: 'prepare' ie: note the case of text
|
|
198
|
+
* @param {number} partition - optional partition to produce to
|
|
199
|
+
* @param {*} opaqueKey - optional opaque token, which gets passed along to your delivery reports
|
|
200
|
+
*
|
|
201
|
+
* @returns {object} - Returns newly created general topicConfig
|
|
202
|
+
*/
|
|
203
|
+
const createGeneralTopicConf = (functionality, action, partition = 0, opaqueKey = 0) => {
|
|
204
|
+
return {
|
|
205
|
+
topicName: generalTopicTemplate(functionality, action),
|
|
206
|
+
key: generateULID(),
|
|
207
|
+
partition,
|
|
208
|
+
opaqueKey
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* @function produceGeneralMessage
|
|
214
|
+
*
|
|
215
|
+
* @async
|
|
216
|
+
* @description This is an async method that produces a message against a generated Kafka topic. it is called multiple times
|
|
217
|
+
*
|
|
218
|
+
* Kafka.Producer.produceMessage called to persist the message to the configured topic on Kafka
|
|
219
|
+
* Utility.updateMessageProtocolMetadata called updates the messages metadata
|
|
220
|
+
* Utility.createGeneralTopicConf called dynamically generates the general topic configuration
|
|
221
|
+
* Utility.getKafkaConfig called dynamically gets Kafka configuration
|
|
222
|
+
*
|
|
223
|
+
* @param {string} functionality - the functionality flow. Example: 'transfer' ie: note the case of text
|
|
224
|
+
* @param {string} action - the action that applies to the flow. Example: 'prepare' ie: note the case of text
|
|
225
|
+
* @param {object} message - a list of messages to consume for the relevant topic
|
|
226
|
+
* @param {object} state - state of the message being produced
|
|
227
|
+
*
|
|
228
|
+
* @returns {object} - Returns a boolean: true if successful, or throws and error if failed
|
|
229
|
+
*/
|
|
230
|
+
const produceGeneralMessage = async (functionality, action, message, state) => {
|
|
231
|
+
const functionalityMapped = functionality
|
|
232
|
+
const actionMapped = action
|
|
233
|
+
return Kafka.Producer.produceMessage(updateMessageProtocolMetadata(message, functionality, action, state),
|
|
234
|
+
createGeneralTopicConf(functionalityMapped, actionMapped),
|
|
235
|
+
getKafkaConfig(ENUMS.PRODUCER, functionalityMapped.toUpperCase(), actionMapped.toUpperCase()))
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
exports.ENUMS = ENUMS
|
|
239
|
+
exports.getKafkaConfig = getKafkaConfig
|
|
240
|
+
exports.updateMessageProtocolMetadata = updateMessageProtocolMetadata
|
|
241
|
+
exports.createGeneralTopicConf = createGeneralTopicConf
|
|
242
|
+
exports.produceGeneralMessage = produceGeneralMessage
|
|
243
|
+
exports.generalTopicTemplate = generalTopicTemplate
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*****
|
|
2
|
+
License
|
|
3
|
+
--------------
|
|
4
|
+
Copyright © 2020-2025 Mojaloop Foundation
|
|
5
|
+
The Mojaloop files are made available by the Mojaloop Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
10
|
+
|
|
11
|
+
Contributors
|
|
12
|
+
--------------
|
|
13
|
+
This is the official list of the Mojaloop project contributors for this file.
|
|
14
|
+
Names of the original copyright holders (individuals or organizations)
|
|
15
|
+
should be listed with a '*' in the first column. People who have
|
|
16
|
+
contributed from an organization can be listed under the organization
|
|
17
|
+
that actually holds the copyright for their contributions (see the
|
|
18
|
+
Mojaloop Foundation for an example). Those individuals should have
|
|
19
|
+
their names indented and be marked with a '-'. Email address can be added
|
|
20
|
+
optionally within square brackets <email>.
|
|
21
|
+
|
|
22
|
+
* Mojaloop Foundation
|
|
23
|
+
- Name Surname <name.surname@mojaloop.io>
|
|
24
|
+
|
|
25
|
+
* ModusBox
|
|
26
|
+
- Lazola Lucas <lazola.lucas@modusbox.com>
|
|
27
|
+
--------------
|
|
28
|
+
******/
|
|
29
|
+
'use strict'
|
|
30
|
+
|
|
31
|
+
const Db = require('../../lib/db')
|
|
32
|
+
const ErrorHandler = require('@mojaloop/central-services-error-handling')
|
|
33
|
+
const { logger } = require('../../shared/logger')
|
|
34
|
+
|
|
35
|
+
exports.getById = async (id) => {
|
|
36
|
+
try {
|
|
37
|
+
return await Db.from('ilpPacket').find({ transferId: id })
|
|
38
|
+
} catch (err) {
|
|
39
|
+
logger.error(err)
|
|
40
|
+
throw ErrorHandler.Factory.reformatFSPIOPError(err)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/*****
|
|
2
|
+
License
|
|
3
|
+
--------------
|
|
4
|
+
Copyright © 2020-2025 Mojaloop Foundation
|
|
5
|
+
The Mojaloop files are made available by the Mojaloop Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
10
|
+
|
|
11
|
+
Contributors
|
|
12
|
+
--------------
|
|
13
|
+
This is the official list of the Mojaloop project contributors for this file.
|
|
14
|
+
Names of the original copyright holders (individuals or organizations)
|
|
15
|
+
should be listed with a '*' in the first column. People who have
|
|
16
|
+
contributed from an organization can be listed under the organization
|
|
17
|
+
that actually holds the copyright for their contributions (see the
|
|
18
|
+
Mojaloop Foundation for an example). Those individuals should have
|
|
19
|
+
their names indented and be marked with a '-'. Email address can be added
|
|
20
|
+
optionally within square brackets <email>.
|
|
21
|
+
|
|
22
|
+
* Mojaloop Foundation
|
|
23
|
+
- Name Surname <name.surname@mojaloop.io>
|
|
24
|
+
|
|
25
|
+
* ModusBox
|
|
26
|
+
- Deon Botha <deon.botha@modusbox.com>
|
|
27
|
+
- Georgi Georgiev <georgi.georgiev@modusbox.com>
|
|
28
|
+
- Valentin Genev <valentin.genev@modusbox.com>
|
|
29
|
+
--------------
|
|
30
|
+
******/
|
|
31
|
+
'use strict'
|
|
32
|
+
|
|
33
|
+
const Db = require('../../lib/db')
|
|
34
|
+
|
|
35
|
+
module.exports = {
|
|
36
|
+
headers: {
|
|
37
|
+
FSPIOP: {
|
|
38
|
+
SWITCH: 'central-switch'
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
ledgerAccountTypes: async function () {
|
|
43
|
+
const ledgerAccountTypeEnum = {}
|
|
44
|
+
const ledgerAccountTypeEnumsList = await Db.from('ledgerAccountType').find({})
|
|
45
|
+
if (ledgerAccountTypeEnumsList) {
|
|
46
|
+
for (const state of ledgerAccountTypeEnumsList) {
|
|
47
|
+
ledgerAccountTypeEnum[`${state.name}`] = state.ledgerAccountTypeId
|
|
48
|
+
}
|
|
49
|
+
return ledgerAccountTypeEnum
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
ledgerEntryTypes: async function () {
|
|
53
|
+
const ledgerEntryTypeEnum = {}
|
|
54
|
+
const ledgerEntryTypeEnumsList = await Db.from('ledgerEntryType').find({})
|
|
55
|
+
if (ledgerEntryTypeEnumsList) {
|
|
56
|
+
for (const state of ledgerEntryTypeEnumsList) {
|
|
57
|
+
ledgerEntryTypeEnum[`${state.name}`] = state.ledgerEntryTypeId
|
|
58
|
+
}
|
|
59
|
+
return ledgerEntryTypeEnum
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
participantLimitTypes: async function () {
|
|
63
|
+
const participantLimitTypeEnum = {}
|
|
64
|
+
const participantLimitTypeEnumsList = await Db.from('participantLimitType').find({})
|
|
65
|
+
if (participantLimitTypeEnumsList) {
|
|
66
|
+
for (const state of participantLimitTypeEnumsList) {
|
|
67
|
+
participantLimitTypeEnum[`${state.name}`] = state.participantLimitTypeId
|
|
68
|
+
}
|
|
69
|
+
return participantLimitTypeEnum
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
settlementDelay: async function () {
|
|
73
|
+
const settlementDelayName = {}
|
|
74
|
+
|
|
75
|
+
const settlementDelayNamesList = await Db.from('settlementDelay').find({})
|
|
76
|
+
if (settlementDelayNamesList) {
|
|
77
|
+
for (const record of settlementDelayNamesList) {
|
|
78
|
+
settlementDelayName[`${record.name}`] = record.settlementDelayId
|
|
79
|
+
}
|
|
80
|
+
return settlementDelayName
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
settlementDelayEnums: async function () {
|
|
84
|
+
const settlementDelayEnum = {}
|
|
85
|
+
|
|
86
|
+
const settlementDelayEnumsList = await Db.from('settlementDelay').find({})
|
|
87
|
+
if (settlementDelayEnumsList) {
|
|
88
|
+
for (const record of settlementDelayEnumsList) {
|
|
89
|
+
settlementDelayEnum[`${record.name}`] = record.name
|
|
90
|
+
}
|
|
91
|
+
return settlementDelayEnum
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
settlementGranularity: async function () {
|
|
95
|
+
const settlementGranularityName = {}
|
|
96
|
+
|
|
97
|
+
const settlementGranularityNamesList = await Db.from('settlementGranularity').find({})
|
|
98
|
+
if (settlementGranularityNamesList) {
|
|
99
|
+
for (const record of settlementGranularityNamesList) {
|
|
100
|
+
settlementGranularityName[`${record.name}`] = record.settlementGranularityId
|
|
101
|
+
}
|
|
102
|
+
return settlementGranularityName
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
settlementGranularityEnums: async function () {
|
|
106
|
+
const settlementGranularityEnum = {}
|
|
107
|
+
|
|
108
|
+
const settlementGranularityEnumsList = await Db.from('settlementGranularity').find({})
|
|
109
|
+
if (settlementGranularityEnumsList) {
|
|
110
|
+
for (const record of settlementGranularityEnumsList) {
|
|
111
|
+
settlementGranularityEnum[`${record.name}`] = record.name
|
|
112
|
+
}
|
|
113
|
+
return settlementGranularityEnum
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
settlementInterchange: async function () {
|
|
117
|
+
const settlementInterchangeName = {}
|
|
118
|
+
|
|
119
|
+
const settlementInterchangeNamesList = await Db.from('settlementInterchange').find({})
|
|
120
|
+
if (settlementInterchangeNamesList) {
|
|
121
|
+
for (const record of settlementInterchangeNamesList) {
|
|
122
|
+
settlementInterchangeName[`${record.name}`] = record.settlementInterchangeId
|
|
123
|
+
}
|
|
124
|
+
return settlementInterchangeName
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
settlementInterchangeEnums: async function () {
|
|
128
|
+
const settlementInterchangeEnum = {}
|
|
129
|
+
|
|
130
|
+
const settlementInterchangeEnumsList = await Db.from('settlementInterchange').find({})
|
|
131
|
+
if (settlementInterchangeEnumsList) {
|
|
132
|
+
for (const record of settlementInterchangeEnumsList) {
|
|
133
|
+
settlementInterchangeEnum[`${record.name}`] = record.name
|
|
134
|
+
}
|
|
135
|
+
return settlementInterchangeEnum
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
settlementStates: async function () {
|
|
139
|
+
const settlementStateEnum = {}
|
|
140
|
+
|
|
141
|
+
const settlementStateEnumsList = await Db.from('settlementState').find({})
|
|
142
|
+
if (settlementStateEnumsList) {
|
|
143
|
+
for (const state of settlementStateEnumsList) {
|
|
144
|
+
settlementStateEnum[`${state.enumeration}`] = state.settlementStateId
|
|
145
|
+
}
|
|
146
|
+
return settlementStateEnum
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
settlementWindowStates: async function () {
|
|
150
|
+
const settlementWindowStateEnum = {}
|
|
151
|
+
const settlementWindowStateEnumsList = await Db.from('settlementWindowState').find({})
|
|
152
|
+
if (settlementWindowStateEnumsList) {
|
|
153
|
+
for (const state of settlementWindowStateEnumsList) {
|
|
154
|
+
settlementWindowStateEnum[`${state.enumeration}`] = state.settlementWindowStateId
|
|
155
|
+
}
|
|
156
|
+
return settlementWindowStateEnum
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
transferParticipantRoleTypes: async function () {
|
|
160
|
+
const transferParticipantRoleTypeEnum = {}
|
|
161
|
+
const transferParticipantRoleTypeEnumsList = await Db.from('transferParticipantRoleType').find({})
|
|
162
|
+
if (transferParticipantRoleTypeEnumsList) {
|
|
163
|
+
for (const state of transferParticipantRoleTypeEnumsList) {
|
|
164
|
+
transferParticipantRoleTypeEnum[`${state.name}`] = state.transferParticipantRoleTypeId
|
|
165
|
+
}
|
|
166
|
+
return transferParticipantRoleTypeEnum
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
transferStateEnums: async function () {
|
|
170
|
+
const transferStateEnum = {}
|
|
171
|
+
const transferStateEnumsList = await Db.from('transferState').find({})
|
|
172
|
+
if (transferStateEnumsList) {
|
|
173
|
+
for (const state of transferStateEnumsList) {
|
|
174
|
+
// apply distinct even though final result would contain distinct values
|
|
175
|
+
if (!transferStateEnum[`${state.enumeration}`]) {
|
|
176
|
+
transferStateEnum[`${state.enumeration}`] = state.enumeration
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return transferStateEnum
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
transferStates: async function () {
|
|
183
|
+
const transferStateEnum = {}
|
|
184
|
+
const transferStateEnumsList = await Db.from('transferState').find({})
|
|
185
|
+
if (transferStateEnumsList) {
|
|
186
|
+
for (const state of transferStateEnumsList) {
|
|
187
|
+
transferStateEnum[`${state.transferStateId}`] = state.transferStateId
|
|
188
|
+
}
|
|
189
|
+
return transferStateEnum
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*****
|
|
2
|
+
License
|
|
3
|
+
--------------
|
|
4
|
+
Copyright © 2020-2025 Mojaloop Foundation
|
|
5
|
+
The Mojaloop files are made available by the Mojaloop Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
10
|
+
|
|
11
|
+
Contributors
|
|
12
|
+
--------------
|
|
13
|
+
This is the official list of the Mojaloop project contributors for this file.
|
|
14
|
+
Names of the original copyright holders (individuals or organizations)
|
|
15
|
+
should be listed with a '*' in the first column. People who have
|
|
16
|
+
contributed from an organization can be listed under the organization
|
|
17
|
+
that actually holds the copyright for their contributions (see the
|
|
18
|
+
Mojaloop Foundation for an example). Those individuals should have
|
|
19
|
+
their names indented and be marked with a '-'. Email address can be added
|
|
20
|
+
optionally within square brackets <email>.
|
|
21
|
+
|
|
22
|
+
* Mojaloop Foundation
|
|
23
|
+
- Name Surname <name.surname@mojaloop.io>
|
|
24
|
+
|
|
25
|
+
* Lewis Daly <lewis@vesselstech.com>
|
|
26
|
+
--------------
|
|
27
|
+
******/
|
|
28
|
+
|
|
29
|
+
'use strict'
|
|
30
|
+
|
|
31
|
+
const Db = require('../../lib/db')
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @function getIsMigrationLocked
|
|
35
|
+
*
|
|
36
|
+
* @description Gets whether or not the database is locked based on the migration_lock
|
|
37
|
+
* @returns {Promise<boolean>} - true if locked, false if not. Rejects if an error occours
|
|
38
|
+
*/
|
|
39
|
+
const getIsMigrationLocked = async () => {
|
|
40
|
+
const result = await Db.from('migration_lock').query(async builder => {
|
|
41
|
+
builder.select('is_locked AS isLocked')
|
|
42
|
+
.orderBy('index', 'desc')
|
|
43
|
+
.first()
|
|
44
|
+
|
|
45
|
+
return builder
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
return result.isLocked
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
module.exports = {
|
|
52
|
+
getIsMigrationLocked
|
|
53
|
+
}
|