@mojaloop/sdk-scheme-adapter 17.0.1 → 17.0.2-snapshot.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/.circleci/config.yml +456 -171
  2. package/Dockerfile +4 -0
  3. package/audit-resolve.json +27 -68
  4. package/package.json +17 -16
  5. package/src/lib/model/AccountsModel.js +4 -7
  6. package/src/lib/model/Async2SyncModel.js +4 -3
  7. package/src/lib/model/InboundTransfersModel.js +16 -14
  8. package/src/lib/model/OutboundBulkQuotesModel.js +4 -7
  9. package/src/lib/model/OutboundBulkTransfersModel.js +4 -7
  10. package/src/lib/model/OutboundRequestToPayModel.js +5 -10
  11. package/src/lib/model/OutboundRequestToPayTransferModel.js +6 -12
  12. package/src/lib/model/OutboundTransfersModel.js +10 -9
  13. package/src/lib/model/common/BackendError.js +1 -13
  14. package/src/lib/model/common/Enums.js +30 -0
  15. package/src/lib/model/common/index.js +3 -2
  16. package/test/integration/lib/Outbound/parties.test.js +2 -1
  17. package/test/integration/lib/Outbound/quotes.test.js +3 -1
  18. package/test/integration/lib/Outbound/simpleTransfers.test.js +2 -1
  19. package/test/unit/inboundApi/handlers.test.js +3 -1
  20. package/test/unit/lib/model/AccountsModel.test.js +2 -1
  21. package/test/unit/lib/model/InboundTransfersModel.test.js +10 -6
  22. package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +5 -3
  23. package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +4 -3
  24. package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -2
  25. package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +4 -3
  26. package/test/unit/lib/model/OutboundTransfersModel.test.js +37 -34
  27. package/test/unit/lib/model/PartiesModel.test.js +2 -1
  28. package/test/unit/lib/model/QuotesModel.test.js +2 -1
  29. package/test/unit/lib/model/TransfersModel.test.js +2 -1
  30. package/test/unit/lib/model/data/getBulkTransfersBackendResponse.json +1 -1
  31. package/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json +1 -1
package/Dockerfile CHANGED
@@ -28,6 +28,10 @@ LABEL org.label-schema.vcs-ref=$VCS_REF
28
28
  LABEL org.label-schema.url="https://mojaloop.io/"
29
29
  LABEL org.label-schema.version=$VERSION
30
30
 
31
+ # Create a non-root user: ml-user
32
+ RUN adduser -D ml-user
33
+ USER ml-user
34
+
31
35
  COPY --from=builder /src/ /src
32
36
  COPY ./src ./src
33
37
  COPY ./secrets /
@@ -2,99 +2,58 @@
2
2
  "decisions": {
3
3
  "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": {
4
4
  "decision": "ignore",
5
- "madeAt": 1656678986448
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": 1656678989848
10
+ "madeAt": 1657188196343,
11
+ "expiresAt": 1659780190646
10
12
  },
11
- "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": {
13
+ "1080944|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": {
12
14
  "decision": "ignore",
13
- "madeAt": 1656679958470
15
+ "madeAt": 1657188197274,
16
+ "expiresAt": 1659780190646
14
17
  },
15
- "1070412|ejs": {
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": 1656679961621
20
+ "madeAt": 1657188198190,
21
+ "expiresAt": 1659780190646
22
22
  },
23
23
  "1070030|widdershins>markdown-it": {
24
24
  "decision": "ignore",
25
- "madeAt": 1656681873020
25
+ "madeAt": 1657188198190,
26
+ "expiresAt": 1659780190646
26
27
  },
27
- "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": {
28
+ "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": {
28
29
  "decision": "ignore",
29
- "madeAt": 1656679964361
30
+ "madeAt": 1657188199040,
31
+ "expiresAt": 1659780190646
30
32
  },
31
- "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": {
33
+ "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": {
32
34
  "decision": "ignore",
33
- "madeAt": 1656679966871
35
+ "madeAt": 1657188199954,
36
+ "expiresAt": 1659780190646
34
37
  },
35
- "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": {
38
+ "1070412|ejs": {
36
39
  "decision": "ignore",
37
- "madeAt": 1656679000803
40
+ "madeAt": 1657188200902,
41
+ "expiresAt": 1659780190646
38
42
  },
39
43
  "1067553|swagger2openapi>better-ajv-errors>jsonpointer": {
40
44
  "decision": "ignore",
41
- "madeAt": 1656679000803
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": 1656679005322
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": 1656681883038
55
+ "madeAt": 1657188203603,
56
+ "expiresAt": 1659780190646
98
57
  }
99
58
  },
100
59
  "rules": {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mojaloop/sdk-scheme-adapter",
3
- "version": "17.0.1",
3
+ "version": "17.0.2-snapshot.6",
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,8 @@
11
11
  "~": "src"
12
12
  },
13
13
  "scripts": {
14
- "audit:resolve": "resolve-audit --production",
15
- "audit:check": "check-audit --production",
14
+ "audit:resolve": "npx resolve-audit --production",
15
+ "audit:check": "npx check-audit --production",
16
16
  "build": "npm run build:openapi; npm run build:dto:outbound",
17
17
  "build:openapi": "npm run build:openapi:inbound && npm run build:openapi:outbound",
18
18
  "build:openapi:inbound": "openapi bundle --output ./src/InboundServer/api.yaml --ext yaml ./src/InboundServer/api_template.yaml",
@@ -20,7 +20,8 @@
20
20
  "build:dto:outbound": "openapi-typescript ./src/OutboundServer/api.yaml --output ./src/OutboundServer/api_interfaces/openapi.d.ts",
21
21
  "lint": "eslint ./src/",
22
22
  "lint:fix": "eslint ./src/ --fix",
23
- "test": "jest --ci --reporters=default --reporters=jest-junit --env=node test/unit/",
23
+ "test": "npm run test:unit",
24
+ "test:unit": "jest --runInBand --ci --reporters=default --reporters=jest-junit --env=node test/unit/",
24
25
  "test:int": "jest --ci --reporters=default --reporters=jest-junit --env=node test/integration",
25
26
  "validate:api": "npm run validate:api:in; npm run validate:api:out",
26
27
  "validate:api:in": "swagger-cli validate ./src/InboundServer/api.yaml",
@@ -55,20 +56,20 @@
55
56
  "url": "git@github.com:mojaloop/sdk-scheme-adapter.git"
56
57
  },
57
58
  "dependencies": {
58
- "@koa/cors": "^3.1.0",
59
+ "@koa/cors": "^3.3.0",
59
60
  "@mojaloop/central-services-shared": "17.0.2",
60
61
  "@mojaloop/sdk-standard-components": "^17.1.0",
61
62
  "ajv": "8.11.0",
62
63
  "axios": "^0.27.2",
63
64
  "co-body": "^6.1.0",
64
65
  "dotenv": "^16.0.1",
65
- "env-var": "^7.0.1",
66
- "express": "^4.17.2",
66
+ "env-var": "^7.1.1",
67
+ "express": "^4.18.1",
67
68
  "fast-json-patch": "^3.1.1",
68
69
  "javascript-state-machine": "^3.1.0",
69
70
  "js-yaml": "^4.1.0",
70
71
  "json-schema-ref-parser": "^9.0.9",
71
- "koa": "^2.13.1",
72
+ "koa": "^2.13.4",
72
73
  "koa-body": "^5.0.0",
73
74
  "lodash": "^4.17.21",
74
75
  "module-alias": "^2.2.2",
@@ -77,30 +78,30 @@
77
78
  "prom-client": "^14.0.1",
78
79
  "promise-timeout": "^1.3.0",
79
80
  "random-word-slugs": "^0.1.6",
80
- "redis": "^4.1.1",
81
- "uuidv4": "^6.2.12",
81
+ "redis": "^4.2.0",
82
+ "uuidv4": "^6.2.13",
82
83
  "ws": "^8.8.0"
83
84
  },
84
85
  "devDependencies": {
85
86
  "@babel/core": "^7.18.6",
86
87
  "@babel/preset-env": "^7.18.6",
87
88
  "@mojaloop/api-snippets": "^14.0.0",
88
- "@redocly/openapi-cli": "^1.0.0-beta.59",
89
+ "@redocly/openapi-cli": "^1.0.0-beta.94",
89
90
  "@types/jest": "^28.1.4",
90
91
  "babel-jest": "^28.1.2",
91
92
  "eslint": "^8.19.0",
92
93
  "eslint-config-airbnb-base": "^15.0.0",
93
- "eslint-plugin-import": "^2.24.2",
94
+ "eslint-plugin-import": "^2.26.0",
94
95
  "eslint-plugin-jest": "^26.5.3",
95
96
  "jest": "^28.1.2",
96
97
  "jest-junit": "^14.0.0",
97
98
  "nock": "^13.2.8",
98
- "npm-audit-resolver": "^3.0.0-0",
99
- "npm-check-updates": "^15.0.2",
99
+ "npm-audit-resolver": "^3.0.0-7",
100
+ "npm-check-updates": "^15.2.1",
100
101
  "openapi-response-validator": "^12.0.0",
101
- "openapi-typescript": "^5.4.0",
102
+ "openapi-typescript": "^5.4.1",
102
103
  "redis-mock": "^0.56.3",
103
- "standard-version": "^9.3.1",
104
+ "standard-version": "^9.5.0",
104
105
  "supertest": "^6.2.4",
105
106
  "swagger-cli": "^4.0.4"
106
107
  }
@@ -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 stateEnum = {
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 = stateEnum.COMPLETED;
283
+ resp.currentState = SDKStateEnum.COMPLETED;
287
284
  break;
288
285
 
289
286
  case 'errored':
290
- resp.currentState = stateEnum.ERROR_OCCURRED;
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 = stateEnum.ERROR_OCCURRED;
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: 'WAITING_FOR_ACTION',
127
- succeeded: 'COMPLETED',
128
- errored: 'ERROR_OCCURRED'
127
+ start: SDKStateEnum.WAITING_FOR_ACTION,
128
+ succeeded: SDKStateEnum.COMPLETED,
129
+ errored: SDKStateEnum.ERROR_OCCURRED
129
130
  };
130
131
 
131
132
  /**
@@ -22,7 +22,9 @@ const {
22
22
  Errors,
23
23
  } = require('@mojaloop/sdk-standard-components');
24
24
  const shared = require('./lib/shared');
25
- const { TransferStateEnum } = require('./common');
25
+ const { SDKStateEnum } = require('./common');
26
+ const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState;
27
+ const FSPIOPBulkTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.BulkTransferState;
26
28
 
27
29
  /**
28
30
  * Models the operations required for performing inbound transfers
@@ -74,7 +76,7 @@ class InboundTransfersModel {
74
76
 
75
77
  updateStateWithError(err) {
76
78
  this.data.lastError = err;
77
- this.data.currentState = TransferStateEnum.ERROR_OCCURRED;
79
+ this.data.currentState = SDKStateEnum.ERROR_OCCURRED;
78
80
  return this._save();
79
81
  }
80
82
 
@@ -188,7 +190,7 @@ class InboundTransfersModel {
188
190
  headers: request.headers,
189
191
  body: request.body
190
192
  },
191
- currentState: TransferStateEnum.QUOTE_REQUEST_RECEIVED,
193
+ currentState: SDKStateEnum.QUOTE_REQUEST_RECEIVED,
192
194
  initiatedTimestamp: new Date().toISOString(),
193
195
  };
194
196
 
@@ -237,7 +239,7 @@ class InboundTransfersModel {
237
239
  headers: res.originalRequest.headers,
238
240
  body: res.originalRequest.body,
239
241
  };
240
- this.data.currentState = TransferStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE;
242
+ this.data.currentState = SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE;
241
243
  await this._save();
242
244
  return res;
243
245
  }
@@ -342,7 +344,7 @@ class InboundTransfersModel {
342
344
 
343
345
  // persist our state so we have a record if we crash during processing the prepare
344
346
  this.data.prepare = request;
345
- this.data.currentState = TransferStateEnum.PREPARE_RECEIVED;
347
+ this.data.currentState = SDKStateEnum.PREPARE_RECEIVED;
346
348
  await this._save();
347
349
 
348
350
  // Calculate or retrieve fulfilment and condition
@@ -390,7 +392,7 @@ class InboundTransfersModel {
390
392
  // create a mojaloop transfer fulfil response
391
393
  const mojaloopResponse = {
392
394
  completedTimestamp: response.completedTimestamp || new Date(),
393
- transferState: response.transferState || (this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED),
395
+ transferState: response.transferState || (this._reserveNotification ? FSPIOPTransferStateEnum.RESERVED : FSPIOPTransferStateEnum.COMMITTED),
394
396
  fulfilment: response.fulfilment || fulfilment,
395
397
  ...response.extensionList && {
396
398
  extensionList: {
@@ -406,7 +408,7 @@ class InboundTransfersModel {
406
408
  headers: res.originalRequest.headers,
407
409
  body: res.originalRequest.body,
408
410
  };
409
- this.data.currentState = response.transferState || (this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED);
411
+ this.data.currentState = response.transferState || (this._reserveNotification ? SDKStateEnum.RESERVED : SDKStateEnum.COMPLETED);
410
412
  await this._save();
411
413
  return res;
412
414
  } catch(err) {
@@ -679,7 +681,7 @@ class InboundTransfersModel {
679
681
  // create a mojaloop transfer fulfil response
680
682
  const mojaloopResponse = {
681
683
  completedTimestamp: new Date(),
682
- bulkTransferState: 'COMMITTED',
684
+ bulkTransferState: FSPIOPBulkTransferStateEnum.COMMITTED,
683
685
  };
684
686
 
685
687
  if (response.individualTransferResults && response.individualTransferResults.length) {
@@ -784,18 +786,18 @@ class InboundTransfersModel {
784
786
  // tag the final notification body on to the state
785
787
  this.data.finalNotification = body;
786
788
 
787
- if(body.transferState === 'COMMITTED') {
789
+ if(body.transferState === FSPIOPTransferStateEnum.COMMITTED) {
788
790
  // if the transfer was successful in the switch, set the overall transfer state to COMPLETED
789
- this.data.currentState = TransferStateEnum.COMPLETED;
791
+ this.data.currentState = SDKStateEnum.COMPLETED;
790
792
  }
791
- else if(body.transferState === 'ABORTED') {
793
+ else if(body.transferState === FSPIOPTransferStateEnum.ABORTED) {
792
794
  // if the transfer was ABORTED in the switch, set the overall transfer state to ABORTED
793
- this.data.currentState = TransferStateEnum.ABORTED;
795
+ this.data.currentState = SDKStateEnum.ABORTED;
794
796
  }
795
797
  else {
796
798
  // if the final notification has anything other than COMMITTED as the final state, set an error
797
799
  // in the transfer state.
798
- this.data.currentState = TransferStateEnum.ERROR_OCCURED;
800
+ this.data.currentState = SDKStateEnum.ERROR_OCCURED;
799
801
  this.data.lastError = 'Final notification state not COMMITTED';
800
802
  }
801
803
 
@@ -845,7 +847,7 @@ class InboundTransfersModel {
845
847
  originalError: err.stack || util.inspect(err),
846
848
  mojaloopError: mojaloopError,
847
849
  };
848
- this.data.currentState = TransferStateEnum.ERROR_OCCURRED;
850
+ this.data.currentState = SDKStateEnum.ERROR_OCCURRED;
849
851
  await this._save();
850
852
  }
851
853
  return mojaloopError;
@@ -17,10 +17,7 @@ const { MojaloopRequests } = require('@mojaloop/sdk-standard-components');
17
17
  const shared = require('./lib/shared');
18
18
  const { BackendError } = require('./common');
19
19
 
20
- const stateEnum = {
21
- 'ERROR_OCCURRED': 'ERROR_OCCURRED',
22
- 'COMPLETED': 'COMPLETED',
23
- };
20
+ const { SDKStateEnum } = require('./common');
24
21
 
25
22
 
26
23
  /**
@@ -381,16 +378,16 @@ class OutboundBulkQuotesModel {
381
378
 
382
379
  switch(this.data.currentState) {
383
380
  case 'succeeded':
384
- resp.currentState = stateEnum.COMPLETED;
381
+ resp.currentState = SDKStateEnum.COMPLETED;
385
382
  break;
386
383
 
387
384
  case 'errored':
388
- resp.currentState = stateEnum.ERROR_OCCURRED;
385
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
389
386
  break;
390
387
 
391
388
  default:
392
389
  this._logger.log(`Bulk quote model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`);
393
- resp.currentState = stateEnum.ERROR_OCCURRED;
390
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
394
391
  break;
395
392
  }
396
393
 
@@ -16,10 +16,7 @@ const StateMachine = require('javascript-state-machine');
16
16
  const { MojaloopRequests } = require('@mojaloop/sdk-standard-components');
17
17
  const { BackendError } = require('./common');
18
18
 
19
- const stateEnum = {
20
- 'ERROR_OCCURRED': 'ERROR_OCCURRED',
21
- 'COMPLETED': 'COMPLETED',
22
- };
19
+ const { SDKStateEnum } = require('./common');
23
20
 
24
21
  /**
25
22
  * Models the state machine and operations required for performing an outbound bulk transfer
@@ -373,16 +370,16 @@ class OutboundBulkTransfersModel {
373
370
 
374
371
  switch(this.data.currentState) {
375
372
  case 'succeeded':
376
- resp.currentState = stateEnum.COMPLETED;
373
+ resp.currentState = SDKStateEnum.COMPLETED;
377
374
  break;
378
375
 
379
376
  case 'errored':
380
- resp.currentState = stateEnum.ERROR_OCCURRED;
377
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
381
378
  break;
382
379
 
383
380
  default:
384
381
  this._logger.log(`Bulk transfer model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`);
385
- resp.currentState = stateEnum.ERROR_OCCURRED;
382
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
386
383
  break;
387
384
  }
388
385
 
@@ -17,12 +17,7 @@ const { MojaloopRequests } = require('@mojaloop/sdk-standard-components');
17
17
  const { BackendError } = require('./common');
18
18
  const PartiesModel = require('./PartiesModel');
19
19
 
20
- const transferStateEnum = {
21
- 'WAITING_FOR_PARTY_ACCEPTANCE': 'WAITING_FOR_PARTY_ACCEPTANCE',
22
- 'WAITING_FOR_QUOTE_ACCEPTANCE': 'WAITING_FOR_QUOTE_ACCEPTANCE',
23
- 'ERROR_OCCURRED': 'ERROR_OCCURRED',
24
- 'COMPLETED': 'COMPLETED',
25
- };
20
+ const { SDKStateEnum } = require('./common');
26
21
 
27
22
  class OutboundRequestToPayModel {
28
23
 
@@ -480,20 +475,20 @@ class OutboundRequestToPayModel {
480
475
 
481
476
  switch(this.data.currentState) {
482
477
  case 'payeeResolved':
483
- resp.currentState = transferStateEnum.WAITING_FOR_PARTY_ACCEPTANCE;
478
+ resp.currentState = SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE;
484
479
  break;
485
480
 
486
481
  case 'succeeded':
487
- resp.currentState = transferStateEnum.COMPLETED;
482
+ resp.currentState = SDKStateEnum.COMPLETED;
488
483
  break;
489
484
 
490
485
  case 'errored':
491
- resp.currentState = transferStateEnum.ERROR_OCCURRED;
486
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
492
487
  break;
493
488
 
494
489
  default:
495
490
  this._logger.log(`Transaction Request model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`);
496
- resp.currentState = transferStateEnum.ERROR_OCCURRED;
491
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
497
492
  break;
498
493
  }
499
494
 
@@ -18,13 +18,7 @@ const shared = require('./lib/shared');
18
18
  const { BackendError } = require('./common');
19
19
  const PartiesModel = require('./PartiesModel');
20
20
 
21
- const requestToPayTransferStateEnum = {
22
- 'WAITING_FOR_QUOTE_ACCEPTANCE': 'WAITING_FOR_QUOTE_ACCEPTANCE',
23
- 'WAITING_FOR_OTP_ACCEPTANCE': 'WAITING_FOR_OTP_ACCEPTANCE',
24
- 'ERROR_OCCURRED': 'ERROR_OCCURRED',
25
- 'COMPLETED': 'COMPLETED',
26
- };
27
-
21
+ const { SDKStateEnum } = require('./common');
28
22
 
29
23
  /**
30
24
  * Models the state machine and operations required for performing an outbound transfer
@@ -826,24 +820,24 @@ class OutboundRequestToPayTransferModel {
826
820
 
827
821
  switch(this.data.currentState) {
828
822
  case 'quoteReceived':
829
- resp.currentState = requestToPayTransferStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE;
823
+ resp.currentState = SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE;
830
824
  break;
831
825
 
832
826
  case 'otpReceived':
833
- resp.currentState = requestToPayTransferStateEnum.WAITING_FOR_OTP_ACCEPTANCE;
827
+ resp.currentState = SDKStateEnum.WAITING_FOR_OTP_ACCEPTANCE;
834
828
  break;
835
829
 
836
830
  case 'succeeded':
837
- resp.currentState = requestToPayTransferStateEnum.COMPLETED;
831
+ resp.currentState = SDKStateEnum.COMPLETED;
838
832
  break;
839
833
 
840
834
  case 'errored':
841
- resp.currentState = requestToPayTransferStateEnum.ERROR_OCCURRED;
835
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
842
836
  break;
843
837
 
844
838
  default:
845
839
  this._logger.log(`Transfer model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`);
846
- resp.currentState = requestToPayTransferStateEnum.ERROR_OCCURRED;
840
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
847
841
  break;
848
842
  }
849
843
 
@@ -15,7 +15,8 @@ const { uuid } = require('uuidv4');
15
15
  const StateMachine = require('javascript-state-machine');
16
16
  const { Ilp, MojaloopRequests } = require('@mojaloop/sdk-standard-components');
17
17
  const shared = require('./lib/shared');
18
- const { BackendError, TransferStateEnum } = require('./common');
18
+ const { BackendError, SDKStateEnum } = require('./common');
19
+ const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState;
19
20
  const PartiesModel = require('./PartiesModel');
20
21
 
21
22
  /**
@@ -685,7 +686,7 @@ class OutboundTransfersModel {
685
686
  if(this._checkIlp && !this._ilp.validateFulfil(fulfil.body.fulfilment, this.data.quoteResponse.body.condition)) {
686
687
  throw new Error('Invalid fulfilment received from peer DFSP.');
687
688
  }
688
- if(this._sendFinalNotificationIfRequested && fulfil.body.transferState === 'RESERVED') {
689
+ if(this._sendFinalNotificationIfRequested && fulfil.body.transferState === FSPIOPTransferStateEnum.RESERVED) {
689
690
  // we need to send a PATCH notification back to say we have committed the transfer.
690
691
  // Note that this is normally a switch only responsibility but the capability is
691
692
  // implemented here to support testing use cases where the mojaloop-connector is
@@ -695,7 +696,7 @@ class OutboundTransfersModel {
695
696
  // we will use the current server time as committed timestamp.
696
697
  const patchNotification = {
697
698
  completedTimestamp: (new Date()).toISOString(),
698
- transferState: 'COMMITTED',
699
+ transferState: FSPIOPTransferStateEnum.COMMITTED,
699
700
  };
700
701
  const res = this._requests.patchTransfers(this.data.transferId,
701
702
  patchNotification, this.data.quoteResponseSource);
@@ -885,28 +886,28 @@ class OutboundTransfersModel {
885
886
 
886
887
  switch(this.data.currentState) {
887
888
  case 'payeeResolved':
888
- resp.currentState = TransferStateEnum.WAITING_FOR_PARTY_ACCEPTANCE;
889
+ resp.currentState = SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE;
889
890
  break;
890
891
 
891
892
  case 'quoteReceived':
892
- resp.currentState = TransferStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE;
893
+ resp.currentState = SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE;
893
894
  break;
894
895
 
895
896
  case 'succeeded':
896
- resp.currentState = TransferStateEnum.COMPLETED;
897
+ resp.currentState = SDKStateEnum.COMPLETED;
897
898
  break;
898
899
 
899
900
  case 'aborted':
900
- resp.currentState = TransferStateEnum.ABORTED;
901
+ resp.currentState = SDKStateEnum.ABORTED;
901
902
  break;
902
903
 
903
904
  case 'errored':
904
- resp.currentState = TransferStateEnum.ERROR_OCCURRED;
905
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
905
906
  break;
906
907
 
907
908
  default:
908
909
  this._logger.log(`Transfer model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`);
909
- resp.currentState = TransferStateEnum.ERROR_OCCURRED;
910
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
910
911
  break;
911
912
  }
912
913
 
@@ -10,17 +10,6 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const TransferStateEnum = {
14
- 'WAITING_FOR_PARTY_ACCEPTANCE': 'WAITING_FOR_PARTY_ACCEPTANCE',
15
- 'QUOTE_REQUEST_RECEIVED': 'QUOTE_REQUEST_RECEIVED',
16
- 'WAITING_FOR_QUOTE_ACCEPTANCE': 'WAITING_FOR_QUOTE_ACCEPTANCE',
17
- 'PREPARE_RECEIVED': 'PREPARE_RECEIVED',
18
- 'ERROR_OCCURRED': 'ERROR_OCCURRED',
19
- 'COMPLETED': 'COMPLETED',
20
- 'ABORTED': 'ABORTED',
21
- 'RESERVED': 'RESERVED',
22
- };
23
-
24
13
  class BackendError extends Error {
25
14
  constructor(msg, httpStatusCode) {
26
15
  super(msg);
@@ -45,6 +34,5 @@ class BackendError extends Error {
45
34
 
46
35
 
47
36
  module.exports = {
48
- BackendError,
49
- TransferStateEnum,
37
+ BackendError
50
38
  };