@mojaloop/central-ledger 19.13.0 → 19.14.0-snapshot.2
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 +74 -12
- package/CHANGELOG.md +37 -0
- package/Dockerfile +1 -1
- package/audit-ci.jsonc +1 -4
- package/config/default-settlement.json +160 -0
- package/docker/ml-api-adapter/default.json +28 -0
- package/docker-compose.yml +6 -0
- package/migrations/950120_fxQuoteConversionTerms_sourceAmount_nullable.js +66 -0
- package/package.json +41 -23
- package/{sbom-v19.12.8.csv → sbom-v19.14.0.csv} +322 -357
- package/scripts/_wait4_all.js +5 -5
- package/src/api/index.js +7 -2
- package/src/api/routes.js +7 -6
- package/src/cryptoConditions/index.js +24 -3
- package/src/handlers/transfers/handler.js +17 -1
- package/src/handlers/transfers/validator.js +1 -2
- package/src/settlement/api/handlerRoutes.js +40 -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/routes.js +40 -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 +37 -0
- package/src/settlement/interface/swagger.json +1280 -0
- package/src/settlement/lib/config.js +51 -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 +229 -0
- package/src/settlement/utils/truthyProperty.js +37 -0
package/.grype.yaml
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
scan-type: source
|
|
2
2
|
ignore:
|
|
3
|
-
# Ignore cross-spawn vulnerabilities by CVE ID due to false positive
|
|
4
|
-
# as grype looks at package-lock.json where it shows versions with
|
|
5
|
-
# vulnerabilities, npm ls shows only 7.0.6 verion is used
|
|
6
|
-
|
|
7
|
-
# Ignore OpenSSL vulnerabilities in Alpine libcrypto3 and libssl3
|
|
8
3
|
- vulnerability: GHSA-3ppc-4f35-3m26
|
|
9
4
|
reason: minimatch upgrade breaks some dev tools so adding this to ignore list
|
|
10
5
|
- vulnerability: CVE-2025-60876
|
|
@@ -19,14 +14,81 @@ ignore:
|
|
|
19
14
|
include-aliases: true
|
|
20
15
|
- vulnerability: GHSA-r6q2-hw4h-h46w
|
|
21
16
|
include-aliases: true
|
|
22
|
-
|
|
23
|
-
|
|
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"
|
|
24
88
|
output:
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
# Modify your CircleCI job to check critical count
|
|
89
|
+
- table
|
|
90
|
+
- json
|
|
29
91
|
search:
|
|
30
|
-
scope:
|
|
92
|
+
scope: squashed
|
|
31
93
|
quiet: false
|
|
32
94
|
check-for-app-update: false
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [19.14.0](https://github.com/mojaloop/central-ledger/compare/v19.13.2...v19.14.0) (2026-03-19)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* vendor the condition check from five-bells-condition into cryptoConditions ([#1264](https://github.com/mojaloop/central-ledger/issues/1264)) ([4d7c4d2](https://github.com/mojaloop/central-ledger/commit/4d7c4d27f5d24fc818c7663a966ca8bf8f855b65))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* undefined fulfilment error not thrown ([#1281](https://github.com/mojaloop/central-ledger/issues/1281)) ([a9361d4](https://github.com/mojaloop/central-ledger/commit/a9361d4ee5d3fb44ca0cc0ceca893c0d2ff35b84))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Chore
|
|
19
|
+
|
|
20
|
+
* **sbom:** update sbom [skip ci] ([21ce9d4](https://github.com/mojaloop/central-ledger/commit/21ce9d455e89568af3e6618b1528425afbbb7b2c))
|
|
21
|
+
|
|
22
|
+
### [19.13.2](https://github.com/mojaloop/central-ledger/compare/v19.13.1...v19.13.2) (2026-02-27)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Chore
|
|
26
|
+
|
|
27
|
+
* maintenance updates ([#1260](https://github.com/mojaloop/central-ledger/issues/1260)) ([464c50c](https://github.com/mojaloop/central-ledger/commit/464c50cda674ee63b23e94e2b9ff19ce4cd807f0))
|
|
28
|
+
* **sbom:** update sbom [skip ci] ([2df7c77](https://github.com/mojaloop/central-ledger/commit/2df7c7731a9722d1ace56919ebbdef076ef1295c))
|
|
29
|
+
|
|
30
|
+
### [19.13.1](https://github.com/mojaloop/central-ledger/compare/v19.13.0...v19.13.1) (2026-02-26)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* make fxQuoteConversionTerms.sourceAmount nullable ([#1267](https://github.com/mojaloop/central-ledger/issues/1267)) ([f770970](https://github.com/mojaloop/central-ledger/commit/f770970159fdf5624c0763562edff89db97beb5c))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Chore
|
|
39
|
+
|
|
40
|
+
* **sbom:** update sbom [skip ci] ([b834732](https://github.com/mojaloop/central-ledger/commit/b834732ce99fd8639a5e35f410294f1fef391c82))
|
|
41
|
+
|
|
5
42
|
## [19.13.0](https://github.com/mojaloop/central-ledger/compare/v19.12.8...v19.13.0) (2026-02-26)
|
|
6
43
|
|
|
7
44
|
|
package/Dockerfile
CHANGED
package/audit-ci.jsonc
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://github.com/IBM/audit-ci/raw/main/docs/schema.json",
|
|
3
3
|
// audit-ci supports reading JSON, JSONC, and JSON5 config files.
|
|
4
|
-
// Only check production dependencies (devDependencies ignored)
|
|
5
|
-
"skip-dev": true,
|
|
6
4
|
// Only use one of ["low": true, "moderate": true, "high": true, "critical": true]
|
|
7
5
|
"moderate": true,
|
|
8
|
-
"allowlist": [
|
|
9
|
-
"GHSA-3ppc-4f35-3m26"
|
|
6
|
+
"allowlist": [ // NOTE: Please add as much information as possible to any items added to the allowList
|
|
10
7
|
]
|
|
11
8
|
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"PORT": 3007,
|
|
3
|
+
"HOSTNAME": "http://central-settlement",
|
|
4
|
+
"DATABASE": {
|
|
5
|
+
"DIALECT": "mysql",
|
|
6
|
+
"HOST": "localhost",
|
|
7
|
+
"PORT": 3306,
|
|
8
|
+
"USER": "central_ledger",
|
|
9
|
+
"PASSWORD": "password",
|
|
10
|
+
"SCHEMA": "central_ledger",
|
|
11
|
+
"POOL_MIN_SIZE": 10,
|
|
12
|
+
"POOL_MAX_SIZE": 10,
|
|
13
|
+
"ACQUIRE_TIMEOUT_MILLIS": 30000,
|
|
14
|
+
"CREATE_TIMEOUT_MILLIS": 30000,
|
|
15
|
+
"DESTROY_TIMEOUT_MILLIS": 5000,
|
|
16
|
+
"IDLE_TIMEOUT_MILLIS": 30000,
|
|
17
|
+
"REAP_INTERVAL_MILLIS": 1000,
|
|
18
|
+
"CREATE_RETRY_INTERVAL_MILLIS": 200,
|
|
19
|
+
"DEBUG": false
|
|
20
|
+
},
|
|
21
|
+
"WINDOW_AGGREGATION": {
|
|
22
|
+
"RETRY_COUNT": 3,
|
|
23
|
+
"RETRY_INTERVAL": 3000
|
|
24
|
+
},
|
|
25
|
+
"TRANSFER_VALIDITY_SECONDS": "432000",
|
|
26
|
+
"HUB_PARTICIPANT": {
|
|
27
|
+
"ID": 1,
|
|
28
|
+
"NAME": "Hub"
|
|
29
|
+
},
|
|
30
|
+
"HANDLERS": {
|
|
31
|
+
"DISABLED": false,
|
|
32
|
+
"API": {
|
|
33
|
+
"DISABLED": false
|
|
34
|
+
},
|
|
35
|
+
"SETTINGS": {
|
|
36
|
+
"RULES": {
|
|
37
|
+
"SCRIPTS_FOLDER": "./scripts/transferSettlementTemp",
|
|
38
|
+
"SCRIPT_TIMEOUT": 100,
|
|
39
|
+
"CONSUMER_COMMIT": true,
|
|
40
|
+
"FROM_SWITCH": true
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"API_DOC_ENDPOINTS_ENABLED": true,
|
|
45
|
+
"SWITCH_ENDPOINT": "http://localhost:3001",
|
|
46
|
+
"AMOUNT": {
|
|
47
|
+
"PRECISION": 18,
|
|
48
|
+
"SCALE": 4
|
|
49
|
+
},
|
|
50
|
+
"KAFKA": {
|
|
51
|
+
"TOPIC_TEMPLATES": {
|
|
52
|
+
"GENERAL_TOPIC_TEMPLATE": {
|
|
53
|
+
"TEMPLATE": "topic-{{functionality}}-{{action}}",
|
|
54
|
+
"REGEX": "topic-(.*)-(.*)"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"CONSUMER": {
|
|
58
|
+
"DEFERREDSETTLEMENT": {
|
|
59
|
+
"CLOSE": {
|
|
60
|
+
"config": {
|
|
61
|
+
"options": {
|
|
62
|
+
"mode": 2,
|
|
63
|
+
"batchSize": 1,
|
|
64
|
+
"pollFrequency": 10,
|
|
65
|
+
"recursiveTimeout": 100,
|
|
66
|
+
"messageCharset": "utf8",
|
|
67
|
+
"messageAsJSON": true,
|
|
68
|
+
"sync": true,
|
|
69
|
+
"consumeTimeout": 1000
|
|
70
|
+
},
|
|
71
|
+
"rdkafkaConf": {
|
|
72
|
+
"client.id": "cs-con-deferredsettlement-close",
|
|
73
|
+
"group.id": "cs-group-deferredsettlement-close",
|
|
74
|
+
"metadata.broker.list": "localhost:9092",
|
|
75
|
+
"socket.keepalive.enable": true,
|
|
76
|
+
"allow.auto.create.topics": true
|
|
77
|
+
},
|
|
78
|
+
"topicConf": {
|
|
79
|
+
"auto.offset.reset": "earliest"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"NOTIFICATION": {
|
|
85
|
+
"EVENT": {
|
|
86
|
+
"config": {
|
|
87
|
+
"options": {
|
|
88
|
+
"mode": 2,
|
|
89
|
+
"batchSize": 1,
|
|
90
|
+
"pollFrequency": 10,
|
|
91
|
+
"recursiveTimeout": 100,
|
|
92
|
+
"messageCharset": "utf8",
|
|
93
|
+
"messageAsJSON": true,
|
|
94
|
+
"sync": true,
|
|
95
|
+
"consumeTimeout": 1000
|
|
96
|
+
},
|
|
97
|
+
"rdkafkaConf": {
|
|
98
|
+
"client.id": "cs-con-notification-event",
|
|
99
|
+
"group.id": "cs-group-notification-event",
|
|
100
|
+
"metadata.broker.list": "localhost:9092",
|
|
101
|
+
"socket.keepalive.enable": true,
|
|
102
|
+
"allow.auto.create.topics": true
|
|
103
|
+
},
|
|
104
|
+
"topicConf": {
|
|
105
|
+
"auto.offset.reset": "earliest"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"PRODUCER": {
|
|
112
|
+
"NOTIFICATION": {
|
|
113
|
+
"EVENT": {
|
|
114
|
+
"config": {
|
|
115
|
+
"options": {
|
|
116
|
+
"messageCharset": "utf8"
|
|
117
|
+
},
|
|
118
|
+
"rdkafkaConf": {
|
|
119
|
+
"debug": "all",
|
|
120
|
+
"metadata.broker.list": "localhost:9092",
|
|
121
|
+
"client.id": "cs-prod-notification-event",
|
|
122
|
+
"event_cb": true,
|
|
123
|
+
"compression.codec": "none",
|
|
124
|
+
"retry.backoff.ms": 100,
|
|
125
|
+
"message.send.max.retries": 2,
|
|
126
|
+
"socket.keepalive.enable": true,
|
|
127
|
+
"queue.buffering.max.messages": 10000000,
|
|
128
|
+
"batch.num.messages": 100,
|
|
129
|
+
"dr_cb": true,
|
|
130
|
+
"socket.blocking.max.ms": 1,
|
|
131
|
+
"queue.buffering.max.ms": 1,
|
|
132
|
+
"broker.version.fallback": "0.10.1.0",
|
|
133
|
+
"api.version.request": true
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"DEFERREDSETTLEMENT": {
|
|
139
|
+
"CLOSE": {
|
|
140
|
+
"config": {
|
|
141
|
+
"options": {
|
|
142
|
+
"messageCharset": "utf8"
|
|
143
|
+
},
|
|
144
|
+
"rdkafkaConf": {
|
|
145
|
+
"metadata.broker.list": "localhost:9092",
|
|
146
|
+
"client.id": "cs-prod-deferredsettlement-close",
|
|
147
|
+
"event_cb": true,
|
|
148
|
+
"dr_cb": true,
|
|
149
|
+
"socket.keepalive.enable": true,
|
|
150
|
+
"queue.buffering.max.messages": 10000000
|
|
151
|
+
},
|
|
152
|
+
"topicConf": {
|
|
153
|
+
"request.required.acks": "all"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -7,6 +7,34 @@
|
|
|
7
7
|
"HOSTNAME": "http://ml-api-adapter",
|
|
8
8
|
"ENDPOINT_SOURCE_URL": "http://host.docker.internal:3001",
|
|
9
9
|
"ENDPOINT_HEALTH_URL": "http://host.docker.internal:3001/health",
|
|
10
|
+
"PROXY_CACHE": {
|
|
11
|
+
"enabled": false,
|
|
12
|
+
"type": "redis-cluster",
|
|
13
|
+
"proxyConfig": {
|
|
14
|
+
"cluster": [
|
|
15
|
+
{ "host": "redis-node-0", "port": 6379 }
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"PROTOCOL_VERSIONS": {
|
|
20
|
+
"CONTENT": {
|
|
21
|
+
"DEFAULT": "2.0",
|
|
22
|
+
"VALIDATELIST": ["1.0", "1.1", "2.0"]
|
|
23
|
+
},
|
|
24
|
+
"ACCEPT": {
|
|
25
|
+
"DEFAULT": "2",
|
|
26
|
+
"VALIDATELIST": ["1", "1.0", "1.1", "2", "2.0"]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"PAYLOAD_CACHE": {
|
|
30
|
+
"enabled": false,
|
|
31
|
+
"type": "redis-cluster",
|
|
32
|
+
"connectionConfig": {
|
|
33
|
+
"cluster": [
|
|
34
|
+
{ "host": "localhost", "port": 6379 }
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
10
38
|
"ENDPOINT_CACHE_CONFIG": {
|
|
11
39
|
"expiresIn": 180000,
|
|
12
40
|
"generateTimeout": 30000
|
package/docker-compose.yml
CHANGED
|
@@ -73,6 +73,9 @@ services:
|
|
|
73
73
|
- ./docker/wait-for:/opt/wait-for
|
|
74
74
|
environment:
|
|
75
75
|
- LOG_LEVEL=info
|
|
76
|
+
extra_hosts:
|
|
77
|
+
- "host.docker.internal:host-gateway"
|
|
78
|
+
- "simulator:host-gateway"
|
|
76
79
|
networks:
|
|
77
80
|
- cl-mojaloop-net
|
|
78
81
|
depends_on:
|
|
@@ -272,6 +275,9 @@ services:
|
|
|
272
275
|
replicas: 1
|
|
273
276
|
ports:
|
|
274
277
|
- "8444:8444"
|
|
278
|
+
extra_hosts:
|
|
279
|
+
- "host.docker.internal:host-gateway"
|
|
280
|
+
- "simulator:host-gateway"
|
|
275
281
|
environment:
|
|
276
282
|
- LOG_LEVEL=info
|
|
277
283
|
- TRANSFERS_ENDPOINT=http://host.docker.internal:3000
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*****
|
|
2
|
+
License
|
|
3
|
+
--------------
|
|
4
|
+
Copyright © 2020-2026 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
|
+
- Shashikant Hirugade <shashi.mojaloop@gmail.com>
|
|
25
|
+
|
|
26
|
+
--------------
|
|
27
|
+
|
|
28
|
+
******/
|
|
29
|
+
'use strict'
|
|
30
|
+
|
|
31
|
+
exports.up = function (knex) {
|
|
32
|
+
return knex.schema.hasTable('fxQuoteConversionTerms')
|
|
33
|
+
.then(function (exists) {
|
|
34
|
+
if (!exists) return
|
|
35
|
+
|
|
36
|
+
return knex.schema.hasColumn('fxQuoteConversionTerms', 'sourceAmount')
|
|
37
|
+
.then(function (columnExists) {
|
|
38
|
+
if (!columnExists) return
|
|
39
|
+
|
|
40
|
+
return knex.schema.alterTable('fxQuoteConversionTerms', function (t) {
|
|
41
|
+
t.decimal('sourceAmount', 18, 4)
|
|
42
|
+
.nullable()
|
|
43
|
+
.defaultTo(null)
|
|
44
|
+
.alter()
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
exports.down = function (knex) {
|
|
51
|
+
return knex.schema.hasTable('fxQuoteConversionTerms')
|
|
52
|
+
.then(function (exists) {
|
|
53
|
+
if (!exists) return
|
|
54
|
+
|
|
55
|
+
return knex.schema.hasColumn('fxQuoteConversionTerms', 'sourceAmount')
|
|
56
|
+
.then(function (columnExists) {
|
|
57
|
+
if (!columnExists) return
|
|
58
|
+
|
|
59
|
+
return knex.schema.alterTable('fxQuoteConversionTerms', function (t) {
|
|
60
|
+
t.decimal('sourceAmount', 18, 4)
|
|
61
|
+
.notNullable()
|
|
62
|
+
.alter()
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mojaloop/central-ledger",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.14.0-snapshot.2",
|
|
4
4
|
"description": "Central ledger hosted by a scheme to record and settle transfers",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "ModusBox",
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"lint": "npx standard",
|
|
45
45
|
"lint:fix": "npx standard --fix",
|
|
46
46
|
"test": "npm run test:unit:spec",
|
|
47
|
-
"test:unit": "tape 'test/unit/**/*.test.js'",
|
|
47
|
+
"test:unit": "tape 'test/unit/**/*.test.js' 'test/settlement/unit/**/*.test.js'",
|
|
48
48
|
"test:unit:spec": "npm run test:unit | tap-spec",
|
|
49
49
|
"test:unit:distLock": "npx tape 'test/unit/lib/distLock/**/*.test.js'",
|
|
50
50
|
"test:unit:participants-routes": "npx tape test/unit/api/participants/routes.test.js",
|
|
51
51
|
"test:xunit": "npm run test:unit | tap-xunit > ./test/results/xunit.xml",
|
|
52
|
-
"test:coverage": "npx nyc --reporter=lcov --reporter=text-summary tapes -- 'test/unit/**/**.test.js'",
|
|
52
|
+
"test:coverage": "npx nyc --reporter=lcov --reporter=text-summary tapes -- 'test/unit/**/**.test.js' 'test/settlement/unit/**/**.test.js'",
|
|
53
53
|
"test:coverage-check": "npm run test:coverage && nyc check-coverage",
|
|
54
|
-
"test:int": "npx tape 'test/integration/**/*.test.js' ",
|
|
54
|
+
"test:int": "npx tape 'test/integration/**/*.test.js' 'test/settlement/integration/**/*.test.js' ",
|
|
55
55
|
"test:int-override": "npx tape 'test/integration-override/**/*.test.js'",
|
|
56
56
|
"test:int:spec": "npm run test:int | npx tap-spec",
|
|
57
57
|
"test:xint": "npm run test:int | tee /dev/tty | tap-xunit > ./test/results/xunit-integration.xml",
|
|
@@ -87,37 +87,38 @@
|
|
|
87
87
|
"@hapi/catbox": "12.1.1",
|
|
88
88
|
"@hapi/catbox-memory": "6.0.2",
|
|
89
89
|
"@hapi/good": "9.0.1",
|
|
90
|
-
"@hapi/hapi": "21.4.
|
|
90
|
+
"@hapi/hapi": "21.4.8",
|
|
91
91
|
"@hapi/inert": "7.1.0",
|
|
92
92
|
"@hapi/vision": "7.0.3",
|
|
93
93
|
"@mojaloop/central-services-error-handling": "13.1.6",
|
|
94
94
|
"@mojaloop/central-services-health": "15.2.2",
|
|
95
95
|
"@mojaloop/central-services-logger": "11.10.4",
|
|
96
96
|
"@mojaloop/central-services-metrics": "12.8.5",
|
|
97
|
-
"@mojaloop/central-services-shared": "18.35.
|
|
97
|
+
"@mojaloop/central-services-shared": "18.35.7",
|
|
98
98
|
"@mojaloop/central-services-stream": "11.9.1",
|
|
99
99
|
"@mojaloop/database-lib": "11.3.7",
|
|
100
100
|
"@mojaloop/event-sdk": "14.8.3",
|
|
101
|
-
"@mojaloop/inter-scheme-proxy-cache-lib": "2.
|
|
101
|
+
"@mojaloop/inter-scheme-proxy-cache-lib": "2.10.0",
|
|
102
102
|
"@mojaloop/ml-number": "11.4.3",
|
|
103
103
|
"@mojaloop/object-store-lib": "12.2.3",
|
|
104
104
|
"@now-ims/hapi-now-auth": "2.1.0",
|
|
105
105
|
"ajv": "8.18.0",
|
|
106
106
|
"ajv-keywords": "5.1.0",
|
|
107
107
|
"base64url": "3.0.1",
|
|
108
|
+
"bignumber.js": "11.0.0",
|
|
108
109
|
"blipp": "4.0.2",
|
|
109
110
|
"commander": "14.0.3",
|
|
110
111
|
"cron": "4.4.0",
|
|
111
112
|
"decimal.js": "10.6.0",
|
|
112
113
|
"docdash": "2.0.2",
|
|
113
114
|
"event-stream": "4.0.1",
|
|
114
|
-
"five-bells-condition": "5.0.1",
|
|
115
115
|
"hapi-auth-bearer-token": "8.0.0",
|
|
116
|
+
"hapi-openapi": "3.0.0",
|
|
116
117
|
"hapi-swagger": "17.3.2",
|
|
117
118
|
"ilp-packet": "2.2.0",
|
|
118
119
|
"joi": "18.0.1",
|
|
119
|
-
"knex": "3.
|
|
120
|
-
"lodash": "4.
|
|
120
|
+
"knex": "3.2.9",
|
|
121
|
+
"lodash": "4.18.1",
|
|
121
122
|
"moment": "2.30.1",
|
|
122
123
|
"mongo-uri-builder": "^4.0.0",
|
|
123
124
|
"parse-strings-in-object": "2.0.0",
|
|
@@ -128,45 +129,51 @@
|
|
|
128
129
|
"mysql": "2.18.1"
|
|
129
130
|
},
|
|
130
131
|
"devDependencies": {
|
|
131
|
-
"@
|
|
132
|
-
"@opentelemetry/
|
|
132
|
+
"@hapi/joi": "17.1.1",
|
|
133
|
+
"@opentelemetry/api": "1.9.1",
|
|
134
|
+
"@opentelemetry/auto-instrumentations-node": "0.73.0",
|
|
133
135
|
"@types/mock-knex": "0.4.8",
|
|
134
136
|
"async-retry": "1.3.3",
|
|
135
137
|
"audit-ci": "^7.1.0",
|
|
136
138
|
"get-port": "5.1.1",
|
|
137
139
|
"jsdoc": "4.0.5",
|
|
138
|
-
"jsonpath": "1.
|
|
140
|
+
"jsonpath": "1.3.0",
|
|
139
141
|
"mock-knex": "0.4.13",
|
|
140
142
|
"nodemon": "3.1.14",
|
|
141
|
-
"npm-check-updates": "
|
|
143
|
+
"npm-check-updates": "21.0.3",
|
|
142
144
|
"nyc": "18.0.0",
|
|
143
145
|
"pre-commit": "1.2.2",
|
|
144
146
|
"proxyquire": "2.1.3",
|
|
145
147
|
"replace": "^1.2.2",
|
|
148
|
+
"rewire": "^9.0.1",
|
|
146
149
|
"sinon": "17.0.0",
|
|
147
150
|
"standard": "17.1.2",
|
|
148
151
|
"standard-version": "^9.5.0",
|
|
152
|
+
"swagmock": "1.0.0",
|
|
149
153
|
"tap-spec": "^5.0.0",
|
|
150
154
|
"tap-xunit": "2.4.1",
|
|
151
155
|
"tape": "4.17.0",
|
|
152
156
|
"tapes": "4.1.0"
|
|
153
157
|
},
|
|
154
158
|
"overrides": {
|
|
159
|
+
"protobufjs": "8.0.1",
|
|
160
|
+
"handlebars": "4.7.9",
|
|
155
161
|
"ajv": "8.18.0",
|
|
156
162
|
"eslint": {
|
|
157
|
-
"ajv": "6.
|
|
163
|
+
"ajv": "6.14.0"
|
|
158
164
|
},
|
|
159
165
|
"eslint@9.39.2": {
|
|
160
|
-
"ajv": "6.
|
|
166
|
+
"ajv": "6.14.0"
|
|
161
167
|
},
|
|
162
168
|
"@eslint/eslintrc": {
|
|
163
|
-
"ajv": "6.
|
|
169
|
+
"ajv": "6.14.0"
|
|
164
170
|
},
|
|
165
|
-
"axios": "1.
|
|
166
|
-
"brace-expansion": "2.0.
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
171
|
+
"axios": "1.15.0",
|
|
172
|
+
"brace-expansion": "2.0.3",
|
|
173
|
+
"convict": "6.2.5",
|
|
174
|
+
"form-data": "4.0.5",
|
|
175
|
+
"lodash": "4.18.1",
|
|
176
|
+
"undici": "6.24.0",
|
|
170
177
|
"shins": {
|
|
171
178
|
"ajv": "8.18.0",
|
|
172
179
|
"ejs": "3.1.10",
|
|
@@ -183,13 +190,24 @@
|
|
|
183
190
|
"hapi-swagger": {
|
|
184
191
|
"joi": "18.0.1"
|
|
185
192
|
},
|
|
193
|
+
"immutable": "5.1.5",
|
|
186
194
|
"jsonwebtoken": "9.0.0",
|
|
187
195
|
"jsonpointer": "5.0.0",
|
|
188
196
|
"on-headers": "1.1.0",
|
|
197
|
+
"path-to-regexp": "0.1.13",
|
|
189
198
|
"trim": "0.0.3",
|
|
190
199
|
"cross-spawn": "7.0.6",
|
|
200
|
+
"yaml": "1.10.3",
|
|
201
|
+
"validator": "13.15.22",
|
|
191
202
|
"yargs-parser": "21.1.1",
|
|
192
|
-
"fast-xml-parser": "5.
|
|
203
|
+
"fast-xml-parser": "5.5.7",
|
|
204
|
+
"minimatch@<=3.1.3": "3.1.5",
|
|
205
|
+
"minimatch@5.1.7": "5.1.9",
|
|
206
|
+
"minimatch@9.0.6": "9.0.9",
|
|
207
|
+
"replace": {
|
|
208
|
+
"minimatch": "3.1.5"
|
|
209
|
+
},
|
|
210
|
+
"underscore": "1.13.8"
|
|
193
211
|
},
|
|
194
212
|
"config": {
|
|
195
213
|
"knex": "--knexfile ./config/knexfile.js",
|