@mojaloop/sdk-scheme-adapter 16.0.0 → 17.0.2-snapshot.10
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/.circleci/config.yml +463 -182
- package/CHANGELOG.md +24 -0
- package/Dockerfile +12 -5
- package/audit-resolve.json +30 -91
- package/docker-compose.yml +4 -2
- package/package.json +21 -19
- package/src/InboundServer/index.js +4 -2
- package/src/InboundServer/middlewares.js +12 -4
- package/src/OutboundServer/index.js +3 -2
- package/src/OutboundServer/middlewares.js +6 -2
- package/src/TestServer/index.js +4 -2
- package/src/index.js +0 -2
- package/src/lib/metrics.js +0 -2
- package/src/lib/model/AccountsModel.js +4 -7
- package/src/lib/model/Async2SyncModel.js +4 -3
- package/src/lib/model/InboundTransfersModel.js +16 -14
- package/src/lib/model/OutboundBulkQuotesModel.js +4 -7
- package/src/lib/model/OutboundBulkTransfersModel.js +4 -7
- package/src/lib/model/OutboundRequestToPayModel.js +5 -10
- package/src/lib/model/OutboundRequestToPayTransferModel.js +6 -12
- package/src/lib/model/OutboundTransfersModel.js +10 -9
- package/src/lib/model/common/BackendError.js +1 -13
- package/src/lib/model/common/Enums.js +30 -0
- package/src/lib/model/common/index.js +3 -2
- package/src/lib/router.js +3 -1
- package/src/lib/validate.js +10 -1
- package/test/config/integration.env +2 -2
- package/test/integration/lib/Outbound/parties.test.js +2 -1
- package/test/integration/lib/Outbound/quotes.test.js +3 -1
- package/test/integration/lib/Outbound/simpleTransfers.test.js +2 -1
- package/test/unit/inboundApi/handlers.test.js +3 -1
- package/test/unit/lib/model/AccountsModel.test.js +2 -1
- package/test/unit/lib/model/InboundTransfersModel.test.js +10 -6
- package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +5 -3
- package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +4 -3
- package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -2
- package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +4 -3
- package/test/unit/lib/model/OutboundTransfersModel.test.js +37 -34
- package/test/unit/lib/model/PartiesModel.test.js +2 -1
- package/test/unit/lib/model/QuotesModel.test.js +2 -1
- package/test/unit/lib/model/TransfersModel.test.js +2 -1
- package/test/unit/lib/model/data/getBulkTransfersBackendResponse.json +1 -1
- package/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
# Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc)
|
|
2
|
+
### [17.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v17.0.0...v17.0.1) (2022-07-04)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* creating inbound server ([#329](https://github.com/mojaloop/sdk-scheme-adapter/issues/329)) ([962420f](https://github.com/mojaloop/sdk-scheme-adapter/commit/962420f6fed02722c5a9aeee6c108b6fbc9f021d))
|
|
8
|
+
|
|
9
|
+
## [17.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v17.0.0) (2022-07-04)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### ⚠ BREAKING CHANGES
|
|
13
|
+
|
|
14
|
+
* add dummy pr to major version bump due to unsquashed title (#327)
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* suppress health check logs ([#328](https://github.com/mojaloop/sdk-scheme-adapter/issues/328)) ([64fadde](https://github.com/mojaloop/sdk-scheme-adapter/commit/64faddea8307aa0c19d56466d0afe8f8208c4d66))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Chore
|
|
22
|
+
|
|
23
|
+
* add dummy pr to major version bump due to unsquashed title ([#327](https://github.com/mojaloop/sdk-scheme-adapter/issues/327)) ([ff0f29b](https://github.com/mojaloop/sdk-scheme-adapter/commit/ff0f29b7ce560565ee21cf6ae84118e1b391b5b5))
|
|
24
|
+
* **release:** 16.0.0 [skip ci] ([0071c65](https://github.com/mojaloop/sdk-scheme-adapter/commit/0071c65c3665239d0a482e76498f9eec5c288043))
|
|
25
|
+
|
|
2
26
|
## [16.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v16.0.0) (2022-07-01)
|
|
3
27
|
|
|
4
28
|
|
package/Dockerfile
CHANGED
|
@@ -4,7 +4,7 @@ RUN apk add --no-cache git python3 build-base
|
|
|
4
4
|
|
|
5
5
|
EXPOSE 3000
|
|
6
6
|
|
|
7
|
-
WORKDIR /
|
|
7
|
+
WORKDIR /opt/app
|
|
8
8
|
|
|
9
9
|
# This is super-ugly, but it means we don't have to re-run npm install every time any of the source
|
|
10
10
|
# files change- only when any dependencies change- which is a superior developer experience when
|
|
@@ -12,7 +12,12 @@ WORKDIR /src
|
|
|
12
12
|
COPY ./package.json .
|
|
13
13
|
COPY ./package-lock.json .
|
|
14
14
|
RUN npm ci --only=production
|
|
15
|
+
|
|
16
|
+
COPY src /opt/app/src
|
|
17
|
+
|
|
15
18
|
FROM node:16.15.0-alpine
|
|
19
|
+
WORKDIR /opt/app
|
|
20
|
+
|
|
16
21
|
|
|
17
22
|
ARG BUILD_DATE
|
|
18
23
|
ARG VCS_URL
|
|
@@ -28,8 +33,10 @@ LABEL org.label-schema.vcs-ref=$VCS_REF
|
|
|
28
33
|
LABEL org.label-schema.url="https://mojaloop.io/"
|
|
29
34
|
LABEL org.label-schema.version=$VERSION
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
# Create a non-root user: ml-user
|
|
37
|
+
RUN adduser -D ml-user
|
|
38
|
+
USER ml-user
|
|
39
|
+
|
|
40
|
+
COPY --chown=ml-user --from=builder /opt/app .
|
|
34
41
|
|
|
35
|
-
CMD ["
|
|
42
|
+
CMD ["npm", "run", "start"]
|
package/audit-resolve.json
CHANGED
|
@@ -2,124 +2,63 @@
|
|
|
2
2
|
"decisions": {
|
|
3
3
|
"1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": {
|
|
4
4
|
"decision": "ignore",
|
|
5
|
-
"madeAt":
|
|
5
|
+
"madeAt": 1657188195403,
|
|
6
|
+
"expiresAt": 1659780190646
|
|
6
7
|
},
|
|
7
8
|
"1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": {
|
|
8
9
|
"decision": "ignore",
|
|
9
|
-
"madeAt":
|
|
10
|
+
"madeAt": 1657188196343,
|
|
11
|
+
"expiresAt": 1659780190646
|
|
10
12
|
},
|
|
11
|
-
"
|
|
13
|
+
"1080944|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": {
|
|
12
14
|
"decision": "ignore",
|
|
13
|
-
"madeAt":
|
|
15
|
+
"madeAt": 1657188197274,
|
|
16
|
+
"expiresAt": 1659780190646
|
|
14
17
|
},
|
|
15
|
-
"
|
|
16
|
-
"decision": "ignore",
|
|
17
|
-
"madeAt": 1656679958471
|
|
18
|
-
},
|
|
19
|
-
"1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": {
|
|
18
|
+
"1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it": {
|
|
20
19
|
"decision": "ignore",
|
|
21
|
-
"madeAt":
|
|
20
|
+
"madeAt": 1657188198190,
|
|
21
|
+
"expiresAt": 1659780190646
|
|
22
22
|
},
|
|
23
23
|
"1070030|widdershins>markdown-it": {
|
|
24
24
|
"decision": "ignore",
|
|
25
|
-
"madeAt":
|
|
25
|
+
"madeAt": 1657188198190,
|
|
26
|
+
"expiresAt": 1659780190646
|
|
26
27
|
},
|
|
27
|
-
"1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>
|
|
28
|
+
"1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": {
|
|
28
29
|
"decision": "ignore",
|
|
29
|
-
"madeAt":
|
|
30
|
+
"madeAt": 1657188199040,
|
|
31
|
+
"expiresAt": 1659780190646
|
|
30
32
|
},
|
|
31
|
-
"1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>
|
|
33
|
+
"1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": {
|
|
32
34
|
"decision": "ignore",
|
|
33
|
-
"madeAt":
|
|
35
|
+
"madeAt": 1657188199954,
|
|
36
|
+
"expiresAt": 1659780190646
|
|
34
37
|
},
|
|
35
|
-
"
|
|
38
|
+
"1070412|ejs": {
|
|
36
39
|
"decision": "ignore",
|
|
37
|
-
"madeAt":
|
|
40
|
+
"madeAt": 1657188200902,
|
|
41
|
+
"expiresAt": 1659780190646
|
|
38
42
|
},
|
|
39
43
|
"1067553|swagger2openapi>better-ajv-errors>jsonpointer": {
|
|
40
44
|
"decision": "ignore",
|
|
41
|
-
"madeAt":
|
|
42
|
-
|
|
43
|
-
"1067553|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer": {
|
|
44
|
-
"decision": "ignore",
|
|
45
|
-
"madeAt": 1656679000804
|
|
46
|
-
},
|
|
47
|
-
"1067946|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": {
|
|
48
|
-
"decision": "ignore",
|
|
49
|
-
"madeAt": 1656679005322
|
|
45
|
+
"madeAt": 1657188201786,
|
|
46
|
+
"expiresAt": 1659780190646
|
|
50
47
|
},
|
|
51
48
|
"1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": {
|
|
52
49
|
"decision": "ignore",
|
|
53
|
-
"madeAt":
|
|
54
|
-
|
|
55
|
-
"1067946|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": {
|
|
56
|
-
"decision": "ignore",
|
|
57
|
-
"madeAt": 1656679005322
|
|
58
|
-
},
|
|
59
|
-
"1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": {
|
|
60
|
-
"decision": "ignore",
|
|
61
|
-
"madeAt": 1656679007475
|
|
62
|
-
},
|
|
63
|
-
"1068310|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": {
|
|
64
|
-
"decision": "ignore",
|
|
65
|
-
"madeAt": 1656679007475
|
|
66
|
-
},
|
|
67
|
-
"1070412|shins>ejs": {
|
|
68
|
-
"decision": "ignore",
|
|
69
|
-
"madeAt": 1656679958471
|
|
70
|
-
},
|
|
71
|
-
"1070030|shins>ejs>markdown-it": {
|
|
72
|
-
"decision": "ignore",
|
|
73
|
-
"madeAt": 1656679961621
|
|
74
|
-
},
|
|
75
|
-
"1068155|shins>ejs>markdown-it>sanitize-html": {
|
|
76
|
-
"decision": "ignore",
|
|
77
|
-
"madeAt": 1656679964361
|
|
78
|
-
},
|
|
79
|
-
"1070260|shins>ejs>markdown-it>sanitize-html": {
|
|
80
|
-
"decision": "ignore",
|
|
81
|
-
"madeAt": 1656679966871
|
|
82
|
-
},
|
|
83
|
-
"1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it": {
|
|
84
|
-
"decision": "ignore",
|
|
85
|
-
"madeAt": 1656681873020
|
|
86
|
-
},
|
|
87
|
-
"1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": {
|
|
88
|
-
"decision": "ignore",
|
|
89
|
-
"madeAt": 1656681876693
|
|
90
|
-
},
|
|
91
|
-
"1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": {
|
|
92
|
-
"decision": "ignore",
|
|
93
|
-
"madeAt": 1656681880214
|
|
50
|
+
"madeAt": 1657188202661,
|
|
51
|
+
"expiresAt": 1659780190646
|
|
94
52
|
},
|
|
95
53
|
"1068310|widdershins>markdown-it>yargs>yargs-parser": {
|
|
96
54
|
"decision": "ignore",
|
|
97
|
-
"madeAt":
|
|
98
|
-
|
|
99
|
-
"1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>widdershins>markdown-it": {
|
|
100
|
-
"decision": "ignore",
|
|
101
|
-
"madeAt": 1656691882275,
|
|
102
|
-
"expiresAt": 1659283873047
|
|
103
|
-
},
|
|
104
|
-
"1070030|shins>markdown-it": {
|
|
105
|
-
"decision": "ignore",
|
|
106
|
-
"madeAt": 1656691882275,
|
|
107
|
-
"expiresAt": 1659283873047
|
|
108
|
-
},
|
|
109
|
-
"1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>widdershins>markdown-it>yargs>yargs-parser": {
|
|
110
|
-
"decision": "ignore",
|
|
111
|
-
"madeAt": 1656691883964,
|
|
112
|
-
"expiresAt": 1659283873047
|
|
113
|
-
},
|
|
114
|
-
"1068155|shins>markdown-it>sanitize-html": {
|
|
115
|
-
"decision": "ignore",
|
|
116
|
-
"madeAt": 1656691885077,
|
|
117
|
-
"expiresAt": 1659283873047
|
|
55
|
+
"madeAt": 1657188203603,
|
|
56
|
+
"expiresAt": 1659780190646
|
|
118
57
|
},
|
|
119
|
-
"
|
|
58
|
+
"1080969|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": {
|
|
120
59
|
"decision": "ignore",
|
|
121
|
-
"madeAt":
|
|
122
|
-
"expiresAt":
|
|
60
|
+
"madeAt": 1657217280998,
|
|
61
|
+
"expiresAt": 1659809259103
|
|
123
62
|
}
|
|
124
63
|
},
|
|
125
64
|
"rules": {},
|
package/docker-compose.yml
CHANGED
|
@@ -22,9 +22,11 @@ services:
|
|
|
22
22
|
- "4002:4002"
|
|
23
23
|
depends_on:
|
|
24
24
|
- redis
|
|
25
|
-
command: sh -c "/wait4/wait4.js sdk-scheme-adapter
|
|
25
|
+
command: sh -c "/tmp/wait4/wait4.js sdk-scheme-adapter && npm run start"
|
|
26
|
+
# command: sh -c "/tmp/wait4/wait4.js sdk-scheme-adapter && sleep 999999"
|
|
26
27
|
volumes:
|
|
27
|
-
- ./docker/wait4:/wait4
|
|
28
|
+
- ./docker/wait4:/tmp/wait4
|
|
29
|
+
- ./secrets:/opt/app/secrets
|
|
28
30
|
|
|
29
31
|
ml-testing-toolkit:
|
|
30
32
|
networks:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mojaloop/sdk-scheme-adapter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.0.2-snapshot.10",
|
|
4
4
|
"description": "An adapter for connecting to Mojaloop API enabled switches.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "src/index.d.ts",
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
"~": "src"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
|
-
"
|
|
15
|
-
"audit:
|
|
14
|
+
"start": "node src/index.js",
|
|
15
|
+
"audit:resolve": "npx resolve-audit --production",
|
|
16
|
+
"audit:check": "npx check-audit --production",
|
|
16
17
|
"build": "npm run build:openapi; npm run build:dto:outbound",
|
|
17
18
|
"build:openapi": "npm run build:openapi:inbound && npm run build:openapi:outbound",
|
|
18
19
|
"build:openapi:inbound": "openapi bundle --output ./src/InboundServer/api.yaml --ext yaml ./src/InboundServer/api_template.yaml",
|
|
@@ -20,7 +21,8 @@
|
|
|
20
21
|
"build:dto:outbound": "openapi-typescript ./src/OutboundServer/api.yaml --output ./src/OutboundServer/api_interfaces/openapi.d.ts",
|
|
21
22
|
"lint": "eslint ./src/",
|
|
22
23
|
"lint:fix": "eslint ./src/ --fix",
|
|
23
|
-
"test": "
|
|
24
|
+
"test": "npm run test:unit",
|
|
25
|
+
"test:unit": "jest --runInBand --ci --reporters=default --reporters=jest-junit --env=node test/unit/",
|
|
24
26
|
"test:int": "jest --ci --reporters=default --reporters=jest-junit --env=node test/integration",
|
|
25
27
|
"validate:api": "npm run validate:api:in; npm run validate:api:out",
|
|
26
28
|
"validate:api:in": "swagger-cli validate ./src/InboundServer/api.yaml",
|
|
@@ -55,20 +57,20 @@
|
|
|
55
57
|
"url": "git@github.com:mojaloop/sdk-scheme-adapter.git"
|
|
56
58
|
},
|
|
57
59
|
"dependencies": {
|
|
58
|
-
"@koa/cors": "^3.
|
|
60
|
+
"@koa/cors": "^3.3.0",
|
|
59
61
|
"@mojaloop/central-services-shared": "17.0.2",
|
|
60
|
-
"@mojaloop/sdk-standard-components": "^17.0
|
|
62
|
+
"@mojaloop/sdk-standard-components": "^17.1.0",
|
|
61
63
|
"ajv": "8.11.0",
|
|
62
64
|
"axios": "^0.27.2",
|
|
63
65
|
"co-body": "^6.1.0",
|
|
64
66
|
"dotenv": "^16.0.1",
|
|
65
|
-
"env-var": "^7.
|
|
66
|
-
"express": "^4.
|
|
67
|
+
"env-var": "^7.1.1",
|
|
68
|
+
"express": "^4.18.1",
|
|
67
69
|
"fast-json-patch": "^3.1.1",
|
|
68
70
|
"javascript-state-machine": "^3.1.0",
|
|
69
71
|
"js-yaml": "^4.1.0",
|
|
70
72
|
"json-schema-ref-parser": "^9.0.9",
|
|
71
|
-
"koa": "^2.13.
|
|
73
|
+
"koa": "^2.13.4",
|
|
72
74
|
"koa-body": "^5.0.0",
|
|
73
75
|
"lodash": "^4.17.21",
|
|
74
76
|
"module-alias": "^2.2.2",
|
|
@@ -77,31 +79,31 @@
|
|
|
77
79
|
"prom-client": "^14.0.1",
|
|
78
80
|
"promise-timeout": "^1.3.0",
|
|
79
81
|
"random-word-slugs": "^0.1.6",
|
|
80
|
-
"redis": "^4.
|
|
81
|
-
"uuidv4": "^6.2.
|
|
82
|
+
"redis": "^4.2.0",
|
|
83
|
+
"uuidv4": "^6.2.13",
|
|
82
84
|
"ws": "^8.8.0"
|
|
83
85
|
},
|
|
84
86
|
"devDependencies": {
|
|
85
87
|
"@babel/core": "^7.18.6",
|
|
86
88
|
"@babel/preset-env": "^7.18.6",
|
|
87
89
|
"@mojaloop/api-snippets": "^14.0.0",
|
|
88
|
-
"@redocly/openapi-cli": "^1.0.0-beta.
|
|
90
|
+
"@redocly/openapi-cli": "^1.0.0-beta.94",
|
|
89
91
|
"@types/jest": "^28.1.4",
|
|
90
92
|
"babel-jest": "^28.1.2",
|
|
91
|
-
"eslint": "^8.
|
|
93
|
+
"eslint": "^8.19.0",
|
|
92
94
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
93
|
-
"eslint-plugin-import": "^2.
|
|
95
|
+
"eslint-plugin-import": "^2.26.0",
|
|
94
96
|
"eslint-plugin-jest": "^26.5.3",
|
|
95
97
|
"jest": "^28.1.2",
|
|
96
98
|
"jest-junit": "^14.0.0",
|
|
97
99
|
"nock": "^13.2.8",
|
|
98
|
-
"npm-audit-resolver": "^3.0.0-
|
|
99
|
-
"npm-check-updates": "^15.
|
|
100
|
+
"npm-audit-resolver": "^3.0.0-7",
|
|
101
|
+
"npm-check-updates": "^15.2.1",
|
|
100
102
|
"openapi-response-validator": "^12.0.0",
|
|
101
|
-
"openapi-typescript": "^5.4.
|
|
103
|
+
"openapi-typescript": "^5.4.1",
|
|
102
104
|
"redis-mock": "^0.56.3",
|
|
103
|
-
"standard-version": "^9.
|
|
104
|
-
"supertest": "^6.
|
|
105
|
+
"standard-version": "^9.5.0",
|
|
106
|
+
"supertest": "^6.2.4",
|
|
105
107
|
"swagger-cli": "^4.0.4"
|
|
106
108
|
}
|
|
107
109
|
}
|
|
@@ -23,6 +23,8 @@ const router = require('../lib/router');
|
|
|
23
23
|
const handlers = require('./handlers');
|
|
24
24
|
const middlewares = require('./middlewares');
|
|
25
25
|
|
|
26
|
+
const logExcludePaths = ['/'];
|
|
27
|
+
|
|
26
28
|
class InboundApi extends EventEmitter {
|
|
27
29
|
constructor(conf, logger, cache, validator, wso2) {
|
|
28
30
|
super({ captureExceptions: true });
|
|
@@ -99,7 +101,7 @@ class InboundApi extends EventEmitter {
|
|
|
99
101
|
api.use(middlewares.createJwsValidator(logger, jwsVerificationKeys, jwsExclusions));
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
api.use(middlewares.applyState({ cache, wso2, conf }));
|
|
104
|
+
api.use(middlewares.applyState({ cache, wso2, conf, logExcludePaths }));
|
|
103
105
|
api.use(middlewares.createLogger(logger));
|
|
104
106
|
api.use(middlewares.createRequestValidator(validator));
|
|
105
107
|
api.use(middlewares.assignFspiopIdentifier());
|
|
@@ -133,7 +135,7 @@ class InboundServer extends EventEmitter {
|
|
|
133
135
|
constructor(conf, logger, cache, wso2) {
|
|
134
136
|
super({ captureExceptions: true });
|
|
135
137
|
this._conf = conf;
|
|
136
|
-
this._validator = new Validate();
|
|
138
|
+
this._validator = new Validate({ logExcludePaths });
|
|
137
139
|
this._logger = logger;
|
|
138
140
|
this._api = new InboundApi(
|
|
139
141
|
conf,
|
|
@@ -353,13 +353,17 @@ const createLogger = (logger) => async (ctx, next) => {
|
|
|
353
353
|
path: ctx.path,
|
|
354
354
|
method: ctx.method
|
|
355
355
|
}});
|
|
356
|
-
ctx.state.
|
|
356
|
+
if (!ctx.state.logExcludePaths.includes(ctx.path)) {
|
|
357
|
+
ctx.state.logger.push({body: ctx.request.body}).log('Request received');
|
|
358
|
+
}
|
|
357
359
|
try {
|
|
358
360
|
await next();
|
|
359
361
|
} catch (err) {
|
|
360
362
|
ctx.state.logger.push(err).log('Error');
|
|
361
363
|
}
|
|
362
|
-
|
|
364
|
+
if (!ctx.state.logExcludePaths.includes(ctx.path)) {
|
|
365
|
+
await ctx.state.logger.log('Request processed');
|
|
366
|
+
}
|
|
363
367
|
};
|
|
364
368
|
|
|
365
369
|
|
|
@@ -369,10 +373,14 @@ const createLogger = (logger) => async (ctx, next) => {
|
|
|
369
373
|
* @return {Function}
|
|
370
374
|
*/
|
|
371
375
|
const createRequestValidator = (validator) => async (ctx, next) => {
|
|
372
|
-
ctx.state.
|
|
376
|
+
if (!ctx.state.logExcludePaths.includes(ctx.path)) {
|
|
377
|
+
ctx.state.logger.log('Validating request');
|
|
378
|
+
}
|
|
373
379
|
try {
|
|
374
380
|
ctx.state.path = validator.validateRequest(ctx, ctx.state.logger);
|
|
375
|
-
ctx.state.
|
|
381
|
+
if (!ctx.state.logExcludePaths.includes(ctx.path)) {
|
|
382
|
+
ctx.state.logger.log('Request passed validation');
|
|
383
|
+
}
|
|
376
384
|
await next();
|
|
377
385
|
} catch (err) {
|
|
378
386
|
ctx.state.logger.push({ err }).log('Request failed validation.');
|
|
@@ -23,6 +23,7 @@ const handlers = require('./handlers');
|
|
|
23
23
|
const middlewares = require('./middlewares');
|
|
24
24
|
|
|
25
25
|
const endpointRegex = /\/.*/g;
|
|
26
|
+
const logExcludePaths = ['/'];
|
|
26
27
|
|
|
27
28
|
class OutboundApi extends EventEmitter {
|
|
28
29
|
constructor(conf, logger, cache, validator, metricsClient, wso2) {
|
|
@@ -36,7 +37,7 @@ class OutboundApi extends EventEmitter {
|
|
|
36
37
|
this._api.use(middlewares.createErrorHandler(this._logger));
|
|
37
38
|
this._api.use(middlewares.createRequestIdGenerator());
|
|
38
39
|
this._api.use(koaBody()); // outbound always expects application/json
|
|
39
|
-
this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient }));
|
|
40
|
+
this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient, logExcludePaths }));
|
|
40
41
|
this._api.use(middlewares.createLogger(this._logger));
|
|
41
42
|
|
|
42
43
|
//Note that we strip off any path on peerEndpoint config after the origin.
|
|
@@ -69,7 +70,7 @@ class OutboundApi extends EventEmitter {
|
|
|
69
70
|
class OutboundServer extends EventEmitter {
|
|
70
71
|
constructor(conf, logger, cache, metricsClient, wso2) {
|
|
71
72
|
super({ captureExceptions: true });
|
|
72
|
-
this._validator = new Validate();
|
|
73
|
+
this._validator = new Validate({ logExcludePaths });
|
|
73
74
|
this._conf = conf;
|
|
74
75
|
this._logger = logger;
|
|
75
76
|
this._server = null;
|
|
@@ -20,10 +20,14 @@ const { applyState, createErrorHandler, createLogger, createRequestIdGenerator }
|
|
|
20
20
|
* @return {Function}
|
|
21
21
|
*/
|
|
22
22
|
const createRequestValidator = (validator) => async (ctx, next) => {
|
|
23
|
-
ctx.state.
|
|
23
|
+
if (!ctx.state.logExcludePaths.includes(ctx.path)) {
|
|
24
|
+
ctx.state.logger.log('Validating request');
|
|
25
|
+
}
|
|
24
26
|
try {
|
|
25
27
|
ctx.state.path = validator.validateRequest(ctx, ctx.state.logger);
|
|
26
|
-
ctx.state.
|
|
28
|
+
if (!ctx.state.logExcludePaths.includes(ctx.path)) {
|
|
29
|
+
ctx.state.logger.log('Request passed validation');
|
|
30
|
+
}
|
|
27
31
|
await next();
|
|
28
32
|
} catch (err) {
|
|
29
33
|
ctx.state.logger.push({ err }).log('Request failed validation.');
|
package/src/TestServer/index.js
CHANGED
|
@@ -21,6 +21,8 @@ const router = require('../lib/router');
|
|
|
21
21
|
const handlers = require('./handlers');
|
|
22
22
|
const middlewares = require('../InboundServer/middlewares');
|
|
23
23
|
|
|
24
|
+
const logExcludePaths = ['/'];
|
|
25
|
+
|
|
24
26
|
const getWsIp = (req) => [
|
|
25
27
|
req.socket.remoteAddress,
|
|
26
28
|
...(
|
|
@@ -36,7 +38,7 @@ class TestApi {
|
|
|
36
38
|
|
|
37
39
|
this._api.use(middlewares.createErrorHandler(logger));
|
|
38
40
|
this._api.use(middlewares.createRequestIdGenerator());
|
|
39
|
-
this._api.use(middlewares.applyState({ cache }));
|
|
41
|
+
this._api.use(middlewares.applyState({ cache, logExcludePaths }));
|
|
40
42
|
this._api.use(middlewares.createLogger(logger));
|
|
41
43
|
|
|
42
44
|
this._api.use(middlewares.createRequestValidator(validator));
|
|
@@ -174,7 +176,7 @@ class TestServer {
|
|
|
174
176
|
constructor({ port, logger, cache }) {
|
|
175
177
|
this._port = port;
|
|
176
178
|
this._logger = logger;
|
|
177
|
-
this._validator = new Validate();
|
|
179
|
+
this._validator = new Validate({ logExcludePaths });
|
|
178
180
|
this._api = new TestApi(this._logger.push({ component: 'api' }), this._validator, cache);
|
|
179
181
|
this._server = http.createServer(this._api.callback());
|
|
180
182
|
// TODO: why does this appear to need to be called after creating this._server (try reorder
|
package/src/index.js
CHANGED
|
@@ -78,7 +78,6 @@ class Server extends EventEmitter {
|
|
|
78
78
|
this.conf,
|
|
79
79
|
this.logger.push(LOG_ID.INBOUND),
|
|
80
80
|
this.cache,
|
|
81
|
-
this.metricsClient,
|
|
82
81
|
this.wso2,
|
|
83
82
|
);
|
|
84
83
|
this.inboundServer.on('error', (...args) => {
|
|
@@ -195,7 +194,6 @@ class Server extends EventEmitter {
|
|
|
195
194
|
newConf,
|
|
196
195
|
this.logger.push(LOG_ID.INBOUND),
|
|
197
196
|
this.cache,
|
|
198
|
-
this.metricsClient,
|
|
199
197
|
this.wso2,
|
|
200
198
|
);
|
|
201
199
|
this.inboundServer.on('error', (...args) => {
|
package/src/lib/metrics.js
CHANGED
|
@@ -131,8 +131,6 @@ class MetricsServer {
|
|
|
131
131
|
|
|
132
132
|
result.use(koaBody());
|
|
133
133
|
result.use(async ctx => {
|
|
134
|
-
this._logger.log('Metrics request received');
|
|
135
|
-
|
|
136
134
|
ctx.response.set('Content-Type', this._prometheusRegister.contentType);
|
|
137
135
|
ctx.response.body = await this._prometheusRegister.metrics();
|
|
138
136
|
});
|
|
@@ -16,10 +16,7 @@ const StateMachine = require('javascript-state-machine');
|
|
|
16
16
|
const { MojaloopRequests, Errors } = require('@mojaloop/sdk-standard-components');
|
|
17
17
|
const { BackendError } = require('./common');
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
'ERROR_OCCURRED': 'ERROR_OCCURRED',
|
|
21
|
-
'COMPLETED': 'COMPLETED',
|
|
22
|
-
};
|
|
19
|
+
const { SDKStateEnum } = require('./common');
|
|
23
20
|
|
|
24
21
|
|
|
25
22
|
/**
|
|
@@ -283,11 +280,11 @@ class AccountsModel {
|
|
|
283
280
|
|
|
284
281
|
switch(this._data.currentState) {
|
|
285
282
|
case 'succeeded':
|
|
286
|
-
resp.currentState =
|
|
283
|
+
resp.currentState = SDKStateEnum.COMPLETED;
|
|
287
284
|
break;
|
|
288
285
|
|
|
289
286
|
case 'errored':
|
|
290
|
-
resp.currentState =
|
|
287
|
+
resp.currentState = SDKStateEnum.ERROR_OCCURRED;
|
|
291
288
|
break;
|
|
292
289
|
|
|
293
290
|
default:
|
|
@@ -295,7 +292,7 @@ class AccountsModel {
|
|
|
295
292
|
`Account model response being returned from an unexpected state: ${this._data.currentState}. ` +
|
|
296
293
|
'Returning ERROR_OCCURRED state'
|
|
297
294
|
);
|
|
298
|
-
resp.currentState =
|
|
295
|
+
resp.currentState = SDKStateEnum.ERROR_OCCURRED;
|
|
299
296
|
break;
|
|
300
297
|
}
|
|
301
298
|
return resp;
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
const util = require('util');
|
|
13
13
|
|
|
14
14
|
const PSM = require('./common').PersistentStateMachine;
|
|
15
|
+
const { SDKStateEnum } = require('./common');
|
|
15
16
|
const MojaloopRequests = require('@mojaloop/sdk-standard-components').MojaloopRequests;
|
|
16
17
|
const deferredJob = require('./lib').deferredJob;
|
|
17
18
|
|
|
@@ -123,9 +124,9 @@ function generate({
|
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
const mapCurrentState = {
|
|
126
|
-
start:
|
|
127
|
-
succeeded:
|
|
128
|
-
errored:
|
|
127
|
+
start: SDKStateEnum.WAITING_FOR_ACTION,
|
|
128
|
+
succeeded: SDKStateEnum.COMPLETED,
|
|
129
|
+
errored: SDKStateEnum.ERROR_OCCURRED
|
|
129
130
|
};
|
|
130
131
|
|
|
131
132
|
/**
|