@mojaloop/sdk-scheme-adapter 24.1.3 → 24.2.0-csi-1210.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.
Files changed (158) hide show
  1. package/.yarn/cache/@mojaloop-central-services-error-handling-npm-13.0.7-4af4c724e6-63e1af4094.zip +0 -0
  2. package/.yarn/cache/{@mojaloop-central-services-shared-npm-18.19.0-e14673dce9-2d984e3fba.zip → @mojaloop-central-services-shared-npm-18.21.0-6755b8831a-d6c57dbf15.zip} +0 -0
  3. package/.yarn/cache/@mojaloop-ml-schema-transformer-lib-npm-2.5.6-c7788ac913-3556a96a40.zip +0 -0
  4. package/.yarn/cache/{@mojaloop-sdk-standard-components-npm-19.7.0-04e9d9d599-fefb01a635.zip → @mojaloop-sdk-standard-components-npm-19.7.1-41bada4515-6b413699ea.zip} +0 -0
  5. package/.yarn/cache/@mojaloop-sdk-standard-components-npm-19.8.0-snapshot.4-193cd95852-71296babd7.zip +0 -0
  6. package/.yarn/cache/@opentelemetry-api-logs-npm-0.57.2-97ef249ccb-9c654feea3.zip +0 -0
  7. package/.yarn/cache/@opentelemetry-auto-instrumentations-node-npm-0.56.1-956c504579-708bc207d5.zip +0 -0
  8. package/.yarn/cache/@opentelemetry-context-async-hooks-npm-1.30.1-6c85d1d7e3-9bc42d4be4.zip +0 -0
  9. package/.yarn/cache/@opentelemetry-context-base-npm-0.17.0-2cceb1e85b-4b29fa34ef.zip +0 -0
  10. package/.yarn/cache/@opentelemetry-core-npm-1.30.1-6bab40a361-fe71452fff.zip +0 -0
  11. package/.yarn/cache/@opentelemetry-exporter-logs-otlp-grpc-npm-0.57.2-619cd77b9d-6c35209222.zip +0 -0
  12. package/.yarn/cache/@opentelemetry-exporter-logs-otlp-http-npm-0.57.2-6094fba3fa-0f23020fde.zip +0 -0
  13. package/.yarn/cache/@opentelemetry-exporter-logs-otlp-proto-npm-0.57.2-e59c93f1a5-fda1b818b9.zip +0 -0
  14. package/.yarn/cache/@opentelemetry-exporter-metrics-otlp-grpc-npm-0.57.2-3c5de4d7af-9ee9555f0a.zip +0 -0
  15. package/.yarn/cache/@opentelemetry-exporter-metrics-otlp-http-npm-0.57.2-af3ab66c09-64505d43af.zip +0 -0
  16. package/.yarn/cache/@opentelemetry-exporter-metrics-otlp-proto-npm-0.57.2-feac7a7bc4-69da876c8e.zip +0 -0
  17. package/.yarn/cache/@opentelemetry-exporter-prometheus-npm-0.57.2-5c14591b74-c2c86f56fd.zip +0 -0
  18. package/.yarn/cache/@opentelemetry-exporter-trace-otlp-grpc-npm-0.57.2-db5f8456a2-5da93e55dd.zip +0 -0
  19. package/.yarn/cache/@opentelemetry-exporter-trace-otlp-http-npm-0.57.2-3647f3e1b5-4611a7d03f.zip +0 -0
  20. package/.yarn/cache/@opentelemetry-exporter-trace-otlp-proto-npm-0.57.2-593b040eac-0228cc97c4.zip +0 -0
  21. package/.yarn/cache/@opentelemetry-exporter-zipkin-npm-1.30.1-2b7dd3bbbe-915ced1a93.zip +0 -0
  22. package/.yarn/cache/@opentelemetry-instrumentation-amqplib-npm-0.46.1-fdfcf0fc10-97beb23c1a.zip +0 -0
  23. package/.yarn/cache/@opentelemetry-instrumentation-aws-lambda-npm-0.50.3-ae4ee0b7e4-f2c7923eed.zip +0 -0
  24. package/.yarn/cache/@opentelemetry-instrumentation-aws-sdk-npm-0.49.1-0eadc36342-327a437621.zip +0 -0
  25. package/.yarn/cache/@opentelemetry-instrumentation-bunyan-npm-0.45.1-1d3f6cc544-8066568c32.zip +0 -0
  26. package/.yarn/cache/@opentelemetry-instrumentation-cassandra-driver-npm-0.45.1-18bfd2b526-26e9dabc0d.zip +0 -0
  27. package/.yarn/cache/@opentelemetry-instrumentation-connect-npm-0.43.1-a5c04e486f-5d1f378040.zip +0 -0
  28. package/.yarn/cache/@opentelemetry-instrumentation-cucumber-npm-0.14.1-bde3ef2142-905d97d2ac.zip +0 -0
  29. package/.yarn/cache/@opentelemetry-instrumentation-dataloader-npm-0.16.1-85fa5db77c-7ee25069f1.zip +0 -0
  30. package/.yarn/cache/@opentelemetry-instrumentation-dns-npm-0.43.1-4f55fe2f06-ca2caca3e6.zip +0 -0
  31. package/.yarn/cache/@opentelemetry-instrumentation-express-npm-0.47.1-1f1413724e-be09e0df7a.zip +0 -0
  32. package/.yarn/cache/@opentelemetry-instrumentation-fastify-npm-0.44.2-0f514583d2-d5117a4992.zip +0 -0
  33. package/.yarn/cache/@opentelemetry-instrumentation-fs-npm-0.19.1-06ae3b08dd-771817e43f.zip +0 -0
  34. package/.yarn/cache/@opentelemetry-instrumentation-generic-pool-npm-0.43.1-6e499a6392-c89981bf8e.zip +0 -0
  35. package/.yarn/cache/@opentelemetry-instrumentation-graphql-npm-0.47.1-20a9742ed2-c51cf72854.zip +0 -0
  36. package/.yarn/cache/@opentelemetry-instrumentation-grpc-npm-0.57.2-2f552d16c1-f912585575.zip +0 -0
  37. package/.yarn/cache/@opentelemetry-instrumentation-hapi-npm-0.45.2-7b44edb8e6-208d37a906.zip +0 -0
  38. package/.yarn/cache/@opentelemetry-instrumentation-http-npm-0.57.2-14dfa84450-ade80431e9.zip +0 -0
  39. package/.yarn/cache/@opentelemetry-instrumentation-ioredis-npm-0.47.1-81202950dd-828999d2d5.zip +0 -0
  40. package/.yarn/cache/@opentelemetry-instrumentation-kafkajs-npm-0.7.1-576980f7ca-84e04579a8.zip +0 -0
  41. package/.yarn/cache/@opentelemetry-instrumentation-knex-npm-0.44.1-189f1469b7-e80a201b59.zip +0 -0
  42. package/.yarn/cache/@opentelemetry-instrumentation-koa-npm-0.47.1-b6790ae058-3bb9d41cf2.zip +0 -0
  43. package/.yarn/cache/@opentelemetry-instrumentation-lru-memoizer-npm-0.44.1-9797c03424-93df72f85e.zip +0 -0
  44. package/.yarn/cache/@opentelemetry-instrumentation-memcached-npm-0.43.1-e19ea54eb5-93857d00de.zip +0 -0
  45. package/.yarn/cache/@opentelemetry-instrumentation-mongodb-npm-0.52.0-1504cf67fd-a0d88afea9.zip +0 -0
  46. package/.yarn/cache/@opentelemetry-instrumentation-mongoose-npm-0.46.1-a846c79f5b-05ed52c5b7.zip +0 -0
  47. package/.yarn/cache/@opentelemetry-instrumentation-mysql-npm-0.45.1-362b5aa9f9-4117cda307.zip +0 -0
  48. package/.yarn/cache/@opentelemetry-instrumentation-mysql2-npm-0.45.2-11fa75524d-626fb29535.zip +0 -0
  49. package/.yarn/cache/@opentelemetry-instrumentation-nestjs-core-npm-0.44.1-d236b31d92-8fec82978c.zip +0 -0
  50. package/.yarn/cache/@opentelemetry-instrumentation-net-npm-0.43.1-af85cc9995-613d8a4b45.zip +0 -0
  51. package/.yarn/cache/@opentelemetry-instrumentation-npm-0.57.2-c480e6a5c7-8a494d2ea4.zip +0 -0
  52. package/.yarn/cache/@opentelemetry-instrumentation-pg-npm-0.51.1-7088d5dfa2-ebd36407a5.zip +0 -0
  53. package/.yarn/cache/@opentelemetry-instrumentation-pino-npm-0.46.1-7f37c636df-97dca1180d.zip +0 -0
  54. package/.yarn/cache/@opentelemetry-instrumentation-redis-4-npm-0.46.1-8e5d68a0bc-9350ab6d7c.zip +0 -0
  55. package/.yarn/cache/@opentelemetry-instrumentation-redis-npm-0.46.1-cd801212ee-52bfba4804.zip +0 -0
  56. package/.yarn/cache/@opentelemetry-instrumentation-restify-npm-0.45.1-02ab1eb140-db8addeb6d.zip +0 -0
  57. package/.yarn/cache/@opentelemetry-instrumentation-router-npm-0.44.1-5949767675-ffa9d2d0d0.zip +0 -0
  58. package/.yarn/cache/@opentelemetry-instrumentation-socket.io-npm-0.46.1-9d45e12557-de6df872b1.zip +0 -0
  59. package/.yarn/cache/@opentelemetry-instrumentation-tedious-npm-0.18.1-4409343a78-b46ef75a59.zip +0 -0
  60. package/.yarn/cache/@opentelemetry-instrumentation-undici-npm-0.10.1-9a8b9f0c5f-0f54bd14c9.zip +0 -0
  61. package/.yarn/cache/@opentelemetry-instrumentation-winston-npm-0.44.1-bd903159a0-9eea2912b1.zip +0 -0
  62. package/.yarn/cache/@opentelemetry-otlp-exporter-base-npm-0.57.2-9e7a510489-6bacc1dc96.zip +0 -0
  63. package/.yarn/cache/@opentelemetry-otlp-grpc-exporter-base-npm-0.57.2-f1366e7045-e947850f50.zip +0 -0
  64. package/.yarn/cache/@opentelemetry-otlp-transformer-npm-0.57.2-c2ce9fef04-6e67aa4ec0.zip +0 -0
  65. package/.yarn/cache/@opentelemetry-propagation-utils-npm-0.30.16-95a5675c60-eef5ca1b64.zip +0 -0
  66. package/.yarn/cache/@opentelemetry-propagator-b3-npm-1.30.1-590a976998-19e7a7667a.zip +0 -0
  67. package/.yarn/cache/@opentelemetry-propagator-jaeger-npm-1.30.1-7b2134bf11-ac8bab25e8.zip +0 -0
  68. package/.yarn/cache/@opentelemetry-redis-common-npm-0.36.2-15106e7250-b0a6f2c2dc.zip +0 -0
  69. package/.yarn/cache/@opentelemetry-resource-detector-alibaba-cloud-npm-0.30.1-c45df5f73c-04c1ae5b56.zip +0 -0
  70. package/.yarn/cache/@opentelemetry-resource-detector-aws-npm-1.12.0-a2ac2d249e-a3a678bde6.zip +0 -0
  71. package/.yarn/cache/@opentelemetry-resource-detector-azure-npm-0.6.1-89985e9e64-df9114159c.zip +0 -0
  72. package/.yarn/cache/@opentelemetry-resource-detector-container-npm-0.6.1-0e50d40971-e1fde0eec0.zip +0 -0
  73. package/.yarn/cache/@opentelemetry-resource-detector-gcp-npm-0.33.1-d8f6b8ac77-966e78efff.zip +0 -0
  74. package/.yarn/cache/@opentelemetry-resources-npm-1.30.1-1afce2cc97-a930d52fcd.zip +0 -0
  75. package/.yarn/cache/@opentelemetry-sdk-logs-npm-0.57.2-11059307d9-5e14cb81ee.zip +0 -0
  76. package/.yarn/cache/@opentelemetry-sdk-metrics-npm-1.30.1-1232d12cd6-b74d16b1a0.zip +0 -0
  77. package/.yarn/cache/@opentelemetry-sdk-node-npm-0.57.2-c0d3e9229f-e8a726e5d6.zip +0 -0
  78. package/.yarn/cache/@opentelemetry-sdk-trace-base-npm-1.30.1-6263d5195f-212c19fb25.zip +0 -0
  79. package/.yarn/cache/@opentelemetry-sdk-trace-node-npm-1.30.1-6bc52726d5-e9122c45b5.zip +0 -0
  80. package/.yarn/cache/@opentelemetry-semantic-conventions-npm-1.28.0-942b4f4e95-1d708afa65.zip +0 -0
  81. package/.yarn/cache/@opentelemetry-semantic-conventions-npm-1.30.0-ed4337027d-53d3489f11.zip +0 -0
  82. package/.yarn/cache/@opentelemetry-sql-common-npm-0.40.1-8e555e0757-2352974053.zip +0 -0
  83. package/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.34.9-ee6556627d-8.zip +0 -0
  84. package/.yarn/cache/@types-aws-lambda-npm-8.10.147-4e6dba6123-697348cb90.zip +0 -0
  85. package/.yarn/cache/@types-bunyan-npm-1.8.11-950d8551a4-9c8bf737bc.zip +0 -0
  86. package/.yarn/cache/@types-memcached-npm-2.2.10-80a23c7b39-c95e2ed494.zip +0 -0
  87. package/.yarn/cache/@types-mysql-npm-2.15.26-e8ee291ec4-c43395643a.zip +0 -0
  88. package/.yarn/cache/@types-node-npm-22.13.9-565bb4cd14-d36ae841fa.zip +0 -0
  89. package/.yarn/cache/@types-pg-npm-8.11.11-c5a8a91498-50c4a80348.zip +0 -0
  90. package/.yarn/cache/@types-pg-npm-8.6.1-6de7239b4b-a44710ff06.zip +0 -0
  91. package/.yarn/cache/@types-pg-pool-npm-2.0.6-ebe4ae949f-cc54ce9711.zip +0 -0
  92. package/.yarn/cache/@types-shimmer-npm-1.2.0-ff593a1ec3-f081a31d82.zip +0 -0
  93. package/.yarn/cache/@types-tedious-npm-4.0.14-11edc4a73d-88505dda8b.zip +0 -0
  94. package/.yarn/cache/{@typescript-eslint-eslint-plugin-npm-8.25.0-f1ecf3f166-8e6f525d9c.zip → @typescript-eslint-eslint-plugin-npm-8.26.0-64bda8e44c-fbfc0e65b9.zip} +0 -0
  95. package/.yarn/cache/{@typescript-eslint-parser-npm-8.25.0-31c155428a-5de468b96b.zip → @typescript-eslint-parser-npm-8.26.0-80aadd4d9c-6d8a8fcca1.zip} +0 -0
  96. package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.26.0-ef399f862d-b1d35e8b4e.zip +0 -0
  97. package/.yarn/cache/{@typescript-eslint-type-utils-npm-8.25.0-948ec177d4-ee4bccb650.zip → @typescript-eslint-type-utils-npm-8.26.0-f34f57bfb3-eab175e5be.zip} +0 -0
  98. package/.yarn/cache/@typescript-eslint-types-npm-8.26.0-6090977dc6-dea8535575.zip +0 -0
  99. package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.26.0-352c786ebb-492ad542c1.zip +0 -0
  100. package/.yarn/cache/@typescript-eslint-utils-npm-8.26.0-50b78242aa-6bb6e7c9bd.zip +0 -0
  101. package/.yarn/cache/@typescript-eslint-visitor-keys-npm-8.26.0-ff1c3f4568-4209794bbd.zip +0 -0
  102. package/.yarn/cache/acorn-import-attributes-npm-1.9.5-d1e666eb35-1c0c49b6a2.zip +0 -0
  103. package/.yarn/cache/axios-npm-1.8.1-8a5eaf948f-3c434b86bb.zip +0 -0
  104. package/.yarn/cache/bignumber.js-npm-9.1.2-c2228c6a4a-582c03af77.zip +0 -0
  105. package/.yarn/cache/extend-npm-3.0.2-e1ca07ac54-a50a8309ca.zip +0 -0
  106. package/.yarn/cache/forwarded-parse-npm-2.1.2-8cf38fd641-fca4df8898.zip +0 -0
  107. package/.yarn/cache/gaxios-npm-6.7.1-11467afb7c-ed59526553.zip +0 -0
  108. package/.yarn/cache/gcp-metadata-npm-6.1.1-049b8b370a-7dffe884fd.zip +0 -0
  109. package/.yarn/cache/google-logging-utils-npm-0.0.2-598ff18186-270de74cde.zip +0 -0
  110. package/.yarn/cache/import-in-the-middle-npm-1.13.0-923c4ecf3f-f7a62d6fa1.zip +0 -0
  111. package/.yarn/cache/json-bigint-npm-1.0.0-8e35bcb143-c67bb93ccb.zip +0 -0
  112. package/.yarn/cache/{koa-npm-2.15.4-5a729e75eb-cd2bf396fa.zip → koa-npm-2.16.0-fccb365a23-01be3231d4.zip} +0 -0
  113. package/.yarn/cache/module-details-from-path-npm-1.0.3-396d5203b4-378a8a2601.zip +0 -0
  114. package/.yarn/cache/obuf-npm-1.1.2-8db5fae8dd-41a2ba310e.zip +0 -0
  115. package/.yarn/cache/pg-int8-npm-1.0.1-5cd67f3e22-a1e3a05a69.zip +0 -0
  116. package/.yarn/cache/pg-numeric-npm-1.0.2-9026ec3427-8899f8200c.zip +0 -0
  117. package/.yarn/cache/pg-protocol-npm-1.7.1-5571ffdced-88df68e8c0.zip +0 -0
  118. package/.yarn/cache/pg-types-npm-2.2.0-a3360226c4-bf4ec3f594.zip +0 -0
  119. package/.yarn/cache/pg-types-npm-4.0.2-771d83bf15-c4b813382d.zip +0 -0
  120. package/.yarn/cache/postgres-array-npm-2.0.0-4f49dc1389-0e1e659888.zip +0 -0
  121. package/.yarn/cache/postgres-array-npm-3.0.2-da6a3f1fed-5955f9dffe.zip +0 -0
  122. package/.yarn/cache/postgres-bytea-npm-1.0.0-8c2b81fa73-d844ae4ca7.zip +0 -0
  123. package/.yarn/cache/postgres-bytea-npm-3.0.0-5de4c664f6-5f917a003f.zip +0 -0
  124. package/.yarn/cache/postgres-date-npm-1.0.7-aadfe5531e-5745001d47.zip +0 -0
  125. package/.yarn/cache/postgres-date-npm-2.1.0-710ac64466-5c573b0602.zip +0 -0
  126. package/.yarn/cache/postgres-interval-npm-1.2.0-ca6414744d-746b71f938.zip +0 -0
  127. package/.yarn/cache/postgres-interval-npm-3.0.0-936c769b98-c7a1cf006d.zip +0 -0
  128. package/.yarn/cache/postgres-range-npm-1.1.4-018d46d348-460af8c882.zip +0 -0
  129. package/.yarn/cache/require-in-the-middle-npm-7.5.2-90474f7e4b-1b282e3b8b.zip +0 -0
  130. package/.yarn/cache/shimmer-npm-1.2.1-8b50bf3206-aa0d6252ad.zip +0 -0
  131. package/.yarn/cache/typescript-npm-5.8.2-b95d637f6a-7f9e3d7ac1.zip +0 -0
  132. package/.yarn/cache/typescript-patch-ef570fb450-a58d19ff98.zip +0 -0
  133. package/.yarn/cache/uuid-npm-9.0.1-39a8442bc6-39931f6da7.zip +0 -0
  134. package/.yarn/install-state.gz +0 -0
  135. package/modules/api-svc/package.json +10 -6
  136. package/modules/api-svc/src/InboundServer/handlers.js +4 -4
  137. package/modules/api-svc/src/InboundServer/index.js +3 -3
  138. package/modules/api-svc/src/InboundServer/middlewares.js +15 -20
  139. package/modules/api-svc/src/OutboundServer/handlers.js +1 -1
  140. package/modules/api-svc/src/OutboundServer/middlewares.js +9 -4
  141. package/modules/api-svc/src/index.js +2 -2
  142. package/modules/api-svc/src/lib/cache.js +1 -1
  143. package/modules/api-svc/src/lib/model/InboundTransfersModel.js +5 -5
  144. package/modules/api-svc/src/lib/model/OutboundTransfersModel.js +52 -13
  145. package/modules/api-svc/src/lib/router.js +4 -6
  146. package/modules/api-svc/test/unit/api/transfers/transfers.test.js +1 -2
  147. package/modules/api-svc/test/unit/api/transfers/utils.js +3 -0
  148. package/modules/api-svc/test/unit/lib/model/OutboundTransfersModel.test.js +27 -9
  149. package/modules/api-svc/test/unit/lib/model/PartiesModel.test.js +2 -1
  150. package/modules/api-svc/test/unit/lib/model/QuotesModel.test.js +2 -1
  151. package/modules/api-svc/test/unit/lib/model/TransfersModel.test.js +2 -1
  152. package/modules/api-svc/test/unit/mockLogger.js +6 -4
  153. package/modules/outbound-command-event-handler/package.json +5 -5
  154. package/modules/outbound-domain-event-handler/package.json +4 -4
  155. package/modules/private-shared-lib/package.json +5 -5
  156. package/package.json +5 -5
  157. package/.yarn/cache/typescript-npm-5.7.3-e71b273452-6c38b1e989.zip +0 -0
  158. package/.yarn/cache/typescript-patch-eafcb0b70d-633cd749d6.zip +0 -0
@@ -231,7 +231,7 @@ class Server extends EventEmitter {
231
231
  );
232
232
  this.inboundServer.on('error', (...args) => {
233
233
  const errMessage = 'Unhandled error in Inbound Server';
234
- this.logger.push({ args }).log(errMessage);
234
+ this.logger.push({ args }).error(errMessage);
235
235
  this.emit('error', errMessage);
236
236
  });
237
237
  await this.inboundServer.start();
@@ -251,7 +251,7 @@ class Server extends EventEmitter {
251
251
  );
252
252
  this.outboundServer.on('error', (...args) => {
253
253
  const errMessage = 'Unhandled error in Outbound Server';
254
- this.logger.push({ args }).log(errMessage);
254
+ this.logger.push({ args }).error(errMessage);
255
255
  this.emit('error', errMessage);
256
256
  });
257
257
  await this.outboundServer.start();
@@ -217,7 +217,7 @@ class Cache {
217
217
 
218
218
  this.subscribe(channel, (_, message) => {
219
219
  try {
220
- this._logger.push({ channel, message, needParse }).log('subscribeToOneMessageWithTimer is done');
220
+ this._logger.push({ channel, message, needParse }).debug('subscribeToOneMessageWithTimer is done');
221
221
  resolve(needParse ? JSON.parse(message) : message);
222
222
  } catch (err) {
223
223
  this._logger.push({ channel, err }).warn(`error in subscribeToOneMessageWithTimer: ${err.message}`);
@@ -595,9 +595,9 @@ class InboundTransfersModel {
595
595
 
596
596
  return res;
597
597
  } catch (err) {
598
- this._logger.push({ err }).log('Error in postFxQuotes');
598
+ this._logger.push({ err }).error('Error in postFxQuotes');
599
599
  const mojaloopError = await this._handleError(err);
600
- this._logger.push({ mojaloopError }).log(`Sending error response to ${sourceFspId}`);
600
+ this._logger.push({ mojaloopError }).info(`Sending error response to ${sourceFspId}`);
601
601
  return this._mojaloopRequests
602
602
  .putFxQuotesError(body.conversionRequestId, mojaloopError, sourceFspId);
603
603
  }
@@ -646,7 +646,7 @@ class InboundTransfersModel {
646
646
  return 'No response from FX backend';
647
647
  }
648
648
 
649
- this._logger.log(`fxTransfer accepted by backend returning homeTransactionId: ${beResponse.homeTransactionId} for mojaloop commitRequestId: ${body.commitRequestId}`);
649
+ this._logger.info(`fxTransfer accepted by backend returning homeTransactionId: ${beResponse.homeTransactionId} for mojaloop commitRequestId: ${body.commitRequestId}`);
650
650
  this.data.homeTransactionId = beResponse.homeTransactionId;
651
651
 
652
652
  // create a mojaloop fxTransfer fulfil response
@@ -663,9 +663,9 @@ class InboundTransfersModel {
663
663
 
664
664
  return res;
665
665
  } catch (err) {
666
- this._logger.push({ err }).log('Error in postFxTransfer');
666
+ this._logger.push({ err }).error('Error in postFxTransfer');
667
667
  const mojaloopError = await this._handleError(err);
668
- this._logger.push({ mojaloopError }).log(`Sending error response to ${sourceFspId}`);
668
+ this._logger.push({ mojaloopError }).info(`Sending error response to ${sourceFspId}`);
669
669
  return this._mojaloopRequests
670
670
  .putFxTransfersError(body.commitRequestId, mojaloopError, sourceFspId);
671
671
  }
@@ -26,10 +26,12 @@
26
26
  ******/
27
27
  'use strict';
28
28
 
29
+ const { randomBytes } = require('node:crypto');
29
30
  const safeStringify = require('fast-safe-stringify');
30
31
  const StateMachine = require('javascript-state-machine');
31
- const { Enum, Util: {id: idGenerator} } = require('@mojaloop/central-services-shared');
32
+ const { Enum, Util: { id: idGenerator } } = require('@mojaloop/central-services-shared');
32
33
  const { Ilp, MojaloopRequests } = require('@mojaloop/sdk-standard-components');
34
+
33
35
  const { API_TYPES } = require('../../constants');
34
36
  const dto = require('../dto');
35
37
  const shared = require('./lib/shared');
@@ -226,6 +228,7 @@ class OutboundTransfersModel {
226
228
  // add a transferId if one is not present e.g. on first submission
227
229
  if(!this.data.hasOwnProperty('transferId')) {
228
230
  this.data.transferId = this._idGenerator();
231
+ this.#generateTraceId();
229
232
  }
230
233
 
231
234
  // initialize the transfer state machine to its starting state
@@ -435,8 +438,13 @@ class OutboundTransfersModel {
435
438
  // a GET /parties request to the switch
436
439
  try {
437
440
  latencyTimerDone = this.metrics.partyLookupLatency.startTimer();
438
- const res = await this._requests.getParties(this.data.to.idType, this.data.to.idValue,
439
- this.data.to.idSubValue, this.data.to.fspId);
441
+ const res = await this._requests.getParties(
442
+ this.data.to.idType,
443
+ this.data.to.idValue,
444
+ this.data.to.idSubValue,
445
+ this.data.to.fspId,
446
+ this.#createOtelHeaders()
447
+ );
440
448
 
441
449
  this.data.getPartiesRequest = res.originalRequest;
442
450
 
@@ -545,8 +553,13 @@ class OutboundTransfersModel {
545
553
  // a GET /parties request to the switch
546
554
  try {
547
555
  latencyTimerDone = this.metrics.partyLookupLatency.startTimer();
548
- const res = await this._requests.getParties(this.data.to.idType, this.data.to.idValue,
549
- this.data.to.idSubValue);
556
+ const res = await this._requests.getParties(
557
+ this.data.to.idType,
558
+ this.data.to.idValue,
559
+ this.data.to.idSubValue,
560
+ undefined,
561
+ this.#createOtelHeaders()
562
+ );
550
563
  this.data.getPartiesRequest = res.originalRequest;
551
564
  this.metrics.partyLookupRequests.inc();
552
565
  this._logger.isErrorEnabled && this._logger.push({ peer: res }).error('Party lookup sent to peer');
@@ -577,7 +590,11 @@ class OutboundTransfersModel {
577
590
 
578
591
  const subscribing = this._cache.subscribeToOneMessageWithTimer(channel);
579
592
 
580
- const resp = await this._requests.postFxQuotes(payload, payload.conversionTerms.counterPartyFsp);
593
+ const resp = await this._requests.postFxQuotes(
594
+ payload,
595
+ payload.conversionTerms.counterPartyFsp,
596
+ this.#createOtelHeaders()
597
+ );
581
598
 
582
599
  const { originalRequest } = resp;
583
600
  // Setting the fxQuoteRequest to have the fspiop payload
@@ -720,7 +737,7 @@ class OutboundTransfersModel {
720
737
  // a POST /quotes request to the switch
721
738
  try {
722
739
  latencyTimerDone = this.metrics.quoteRequestLatency.startTimer();
723
- const res = await this._requests.postQuotes(quote, this.data.to.fspId);
740
+ const res = await this._requests.postQuotes(quote, this.data.to.fspId, this.#createOtelHeaders());
724
741
 
725
742
  this.data.quoteRequest = {
726
743
  body: quote,
@@ -816,7 +833,7 @@ class OutboundTransfersModel {
816
833
 
817
834
  const subscribing = this._cache.subscribeToOneMessageWithTimer(channel);
818
835
 
819
- const { originalRequest } = await this._requests.postFxTransfers(payload, payload.counterPartyFsp);
836
+ const { originalRequest } = await this._requests.postFxTransfers(payload, payload.counterPartyFsp, this.#createOtelHeaders());
820
837
  this.data.fxTransferRequest = { body: payload , headers: originalRequest.headers };
821
838
  this._logger.push({ originalRequest }).verbose('fxTransfers request is sent to hub');
822
839
 
@@ -931,8 +948,12 @@ class OutboundTransfersModel {
931
948
  completedTimestamp: (new Date()).toISOString(),
932
949
  transferState: TransferState.COMMITTED,
933
950
  };
934
- const res = this._requests.patchTransfers(this.data.transferId,
935
- patchNotification, this.data.quoteResponseSource);
951
+ const res = this._requests.patchTransfers(
952
+ this.data.transferId,
953
+ patchNotification,
954
+ this.data.quoteResponseSource,
955
+ this.#createOtelHeaders()
956
+ );
936
957
  this.data.patch = res.originalRequest;
937
958
  this._logger.isInfoEnabled && this._logger.info(`PATCH final notification sent to peer for transfer ${this.data.transferId}`);
938
959
  }
@@ -963,15 +984,16 @@ class OutboundTransfersModel {
963
984
  // a POST /transfers request to the switch
964
985
  try {
965
986
  latencyTimerDone = this.metrics.transferLatency.startTimer();
987
+ const headers = this.#createOtelHeaders();
966
988
 
967
989
  let res;
968
990
  if (this._apiType === API_TYPES.iso20022) {
969
991
  // Pass in quote request as context if needed for ISO20022 message generation
970
- res = await this._requests.postTransfers(prepare, this.data.quoteResponseSource, {
992
+ res = await this._requests.postTransfers(prepare, this.data.quoteResponseSource, headers, {
971
993
  isoPostQuoteResponse: this.data.quoteResponse.originalIso20022QuoteResponse
972
994
  });
973
995
  } else {
974
- res = await this._requests.postTransfers(prepare, this.data.quoteResponseSource, {});
996
+ res = await this._requests.postTransfers(prepare, this.data.quoteResponseSource, headers, {});
975
997
  }
976
998
 
977
999
  this.data.prepare = {
@@ -1050,7 +1072,7 @@ class OutboundTransfersModel {
1050
1072
  // now we have a timeout handler and a cache subscriber hooked up we can fire off
1051
1073
  // a GET /transfers request to the switch
1052
1074
  try {
1053
- const res = await this._requests.getTransfers(this.data.transferId);
1075
+ const res = await this._requests.getTransfers(this.data.transferId, undefined, this.#createOtelHeaders());
1054
1076
  this._logger.isVerboseEnabled && this._logger.push({ peer: res }).verbose(`getTransfers ${this.data.transferId} sent to peer`);
1055
1077
  }
1056
1078
  catch(err) {
@@ -1493,6 +1515,23 @@ class OutboundTransfersModel {
1493
1515
  throw err;
1494
1516
  }
1495
1517
  }
1518
+
1519
+ #createOtelHeaders() {
1520
+ const { traceId } = this.data;
1521
+ const spanId = randomBytes(8).toString('hex');
1522
+ const flags = '01';
1523
+
1524
+ return Object.freeze({
1525
+ traceparent: `00-${traceId}-${spanId}-${flags}`,
1526
+ });
1527
+ }
1528
+
1529
+ #generateTraceId() {
1530
+ // todo: add possibility to generate traceId based on transferId
1531
+ this.data.traceId = randomBytes(16).toString('hex');
1532
+ this._logger.isVerboseEnabled && this._logger.verbose(`generated traceId: ${this.data.traceId}`);
1533
+ return this.data.traceId;
1534
+ }
1496
1535
  }
1497
1536
 
1498
1537
  module.exports = OutboundTransfersModel;
@@ -31,19 +31,17 @@
31
31
  const { Enum } = require('@mojaloop/central-services-shared');
32
32
  const { ReturnCodes } = Enum.Http;
33
33
 
34
- const router = (handlerMap) => async (ctx, next) => {
34
+ const router = (handlerMap) => async function routeHandling (ctx, next) {
35
35
  const handlers = handlerMap[ctx.state.path.pattern];
36
- const handler = handlers ? handlers[ctx.method.toLowerCase()] : undefined;
37
- if (!handlers || !handler) {
36
+ const handler = handlers?.[ctx.method.toLowerCase()];
37
+
38
+ if (!handler) {
38
39
  ctx.state.logger.isErrorEnabled && ctx.state.logger.error('No handler found');
39
40
  ctx.response.status = ReturnCodes.NOTFOUND.CODE;
40
41
  // TODO: response content according to API spec. Should probably actually be a 404 here.
41
42
  ctx.response.body = { statusCode: 404, message: 'Not found' };
42
43
  }
43
44
  else {
44
- if (!ctx.state.logExcludePaths.includes(ctx.path)) {
45
- ctx.state.logger.isDebugEnabled && ctx.state.logger.push({handler}).debug('Found handler');
46
- }
47
45
  await handler(ctx);
48
46
  }
49
47
  await next();
@@ -150,8 +150,7 @@ describe('Outbound Transfers API', () => {
150
150
  2000)),
151
151
  },
152
152
  };
153
- return testPostTransfers(putBodyFn, 504,
154
- postTransfersErrorTimeoutResponse);
153
+ return testPostTransfers(putBodyFn, 504, postTransfersErrorTimeoutResponse);
155
154
  });
156
155
 
157
156
  test('should return mojaloop error response on party resolution', () => {
@@ -226,6 +226,7 @@ function createPostTransfersTester({
226
226
  if(body.transferState.prepare) {
227
227
  delete body.transferState.prepare;
228
228
  }
229
+ delete body.transferState.traceId;
229
230
  }
230
231
  if(body.quoteResponse) {
231
232
  delete body.quoteResponse.headers;
@@ -248,6 +249,8 @@ function createPostTransfersTester({
248
249
  if(body.quoteResponse?.originalIso20022QuoteResponse) {
249
250
  delete body.quoteResponse.originalIso20022QuoteResponse;
250
251
  }
252
+ delete body.traceId;
253
+
251
254
  expect(body).toEqual(responseBody);
252
255
  const responseValidator = new OpenAPIResponseValidator(apiSpecsOutbound.paths['/transfers'].post);
253
256
  const err = responseValidator.validateResponse(responseCode, body);
@@ -85,6 +85,18 @@ describe('OutboundTransfersModel Tests', () => {
85
85
  let cache;
86
86
  let metricsClient;
87
87
 
88
+ const createAndInitModel = async (customConfig = {}) => {
89
+ const model = new Model({
90
+ cache,
91
+ logger,
92
+ metricsClient,
93
+ ...config,
94
+ ...customConfig
95
+ });
96
+ await model.initialize(JSON.parse(JSON.stringify(transferRequest)));
97
+ return model;
98
+ };
99
+
88
100
  /**
89
101
  *
90
102
  * @param {Object} opts
@@ -202,17 +214,20 @@ describe('OutboundTransfersModel Tests', () => {
202
214
  });
203
215
 
204
216
  test('initializes to starting state', async () => {
205
- const model = new Model({
206
- cache,
207
- logger,
208
- metricsClient,
209
- ...config,
210
- });
211
-
212
- await model.initialize(JSON.parse(JSON.stringify(transferRequest)));
217
+ const model = await createAndInitModel();
213
218
  expect(StateMachine.__instance.state).toBe('start');
219
+ expect(model.data.transferId).toEqual(expect.any(String));
220
+ expect(model.data.traceId).toEqual(expect.any(String));
221
+ expect(model.data.traceId.length).toBe(32);
214
222
  });
215
223
 
224
+ // test('should generate traceId based on transferId value', async () => {
225
+ // const model = await createAndInitModel();
226
+ // expect(model.data.transferId.length).toBe(26);
227
+ // expect(model.data.traceId.length).toBe(32);
228
+ // // todo: check traceID value
229
+ // });
230
+
216
231
  test('executes all three transfer stages without halting when AUTO_ACCEPT_PARTY and AUTO_ACCEPT_QUOTES are true', async () => {
217
232
  config.autoAcceptParty = true;
218
233
  config.autoAcceptQuotes = true;
@@ -520,8 +535,11 @@ describe('OutboundTransfersModel Tests', () => {
520
535
  expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE);
521
536
  expect(StateMachine.__instance.state).toBe('payeeResolved');
522
537
 
538
+ const otelHeaders = expect.objectContaining({
539
+ traceparent: expect.any(String)
540
+ });
523
541
  // check getParties mojaloop requests method was called with the correct arguments
524
- expect(MojaloopRequests.__getParties).toHaveBeenCalledWith(req.to.idType, req.to.idValue, req.to.idSubValue, testFspId);
542
+ expect(MojaloopRequests.__getParties).toHaveBeenCalledWith(req.to.idType, req.to.idValue, req.to.idSubValue, testFspId, otelHeaders);
525
543
  });
526
544
 
527
545
  test('resolves multiple payees and halts', async () => {
@@ -372,7 +372,8 @@ describe('PartiesModel', () => {
372
372
  expect(result).toEqual({the: 'response'});
373
373
  expect(model.requestAction).toHaveBeenCalledTimes(1);
374
374
  expect(model.getResponse).toHaveBeenCalledTimes(1);
375
- expect(model.context.logger.debug.mock.calls).toEqual([
375
+ const lastLogCalls = model.context.logger.debug.mock.calls.slice(-3)
376
+ expect(lastLogCalls).toEqual([
376
377
  ['State machine transitioned \'init\': none -> start'],
377
378
  ['Action called successfully'],
378
379
  [`Persisted model in cache: ${cacheKey}`],
@@ -345,7 +345,8 @@ describe('QuotesModel', () => {
345
345
  expect(result).toEqual({the: 'response'});
346
346
  expect(model.requestAction).toHaveBeenCalledTimes(1);
347
347
  expect(model.getResponse).toHaveBeenCalledTimes(1);
348
- expect(model.context.logger.debug.mock.calls).toEqual([
348
+ const lastLogCalls = model.context.logger.debug.mock.calls.slice(-3)
349
+ expect(lastLogCalls).toEqual([
349
350
  ['State machine transitioned \'init\': none -> start'],
350
351
  ['Action called successfully'],
351
352
  [`Persisted model in cache: ${cacheKey}`],
@@ -351,7 +351,8 @@ describe('TransfersModel', () => {
351
351
  expect(result).toEqual({the: 'response'});
352
352
  expect(model.requestAction).toHaveBeenCalledTimes(1);
353
353
  expect(model.getResponse).toHaveBeenCalledTimes(1);
354
- expect(model.context.logger.debug.mock.calls).toEqual([
354
+ const lastLogCalls = model.context.logger.debug.mock.calls.slice(-3)
355
+ expect(lastLogCalls).toEqual([
355
356
  ['State machine transitioned \'init\': none -> start'],
356
357
  ['Action called successfully'],
357
358
  [`Persisted model in cache: ${cacheKey}`],
@@ -54,10 +54,12 @@ function mockLogger(context, keepQuiet) {
54
54
  isInfoEnabled: jest.fn(() => true),
55
55
  isFatalEnabled: jest.fn(() => true)
56
56
  };
57
- return {
58
- ...methods,
59
- push: jest.fn(() => methods)
60
- };
57
+ const mockLogger = ({
58
+ ...methods,
59
+ push: jest.fn(() => mockLogger)
60
+ })
61
+
62
+ return mockLogger;
61
63
  }
62
64
  return new Logger.Logger();
63
65
  }
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@mojaloop/api-snippets": "17.8.0",
45
- "@mojaloop/central-services-shared": "18.19.0",
45
+ "@mojaloop/central-services-shared": "18.21.0",
46
46
  "@mojaloop/logging-bc-client-lib": "0.5.8",
47
47
  "@mojaloop/logging-bc-public-types-lib": "0.5.4",
48
48
  "@mojaloop/sdk-scheme-adapter-private-shared-lib": "workspace:^",
@@ -59,13 +59,13 @@
59
59
  "@types/convict": "6.1.6",
60
60
  "@types/express": "5.0.0",
61
61
  "@types/jest": "29.5.14",
62
- "@types/node": "22.13.5",
62
+ "@types/node": "22.13.9",
63
63
  "@types/node-cache": "4.2.5",
64
64
  "@types/supertest": "6.0.2",
65
65
  "@types/swagger-ui-express": "4.1.8",
66
66
  "@types/yamljs": "0.2.34",
67
- "@typescript-eslint/eslint-plugin": "8.25.0",
68
- "@typescript-eslint/parser": "8.25.0",
67
+ "@typescript-eslint/eslint-plugin": "8.26.0",
68
+ "@typescript-eslint/parser": "8.26.0",
69
69
  "copyfiles": "2.4.1",
70
70
  "eslint": "9.15.0",
71
71
  "jest": "29.7.0",
@@ -75,7 +75,7 @@
75
75
  "standard-version": "9.5.0",
76
76
  "ts-jest": "29.2.6",
77
77
  "ts-node": "10.9.2",
78
- "typescript": "5.7.3"
78
+ "typescript": "5.8.2"
79
79
  },
80
80
  "nodemonConfig": {
81
81
  "watch": [
@@ -56,13 +56,13 @@
56
56
  "@types/convict": "6.1.6",
57
57
  "@types/express": "5.0.0",
58
58
  "@types/jest": "29.5.14",
59
- "@types/node": "22.13.5",
59
+ "@types/node": "22.13.9",
60
60
  "@types/node-cache": "4.2.5",
61
61
  "@types/supertest": "6.0.2",
62
62
  "@types/swagger-ui-express": "4.1.8",
63
63
  "@types/yamljs": "0.2.34",
64
- "@typescript-eslint/eslint-plugin": "8.25.0",
65
- "@typescript-eslint/parser": "8.25.0",
64
+ "@typescript-eslint/eslint-plugin": "8.26.0",
65
+ "@typescript-eslint/parser": "8.26.0",
66
66
  "copyfiles": "2.4.1",
67
67
  "eslint": "9.15.0",
68
68
  "jest": "29.7.0",
@@ -72,7 +72,7 @@
72
72
  "standard-version": "9.5.0",
73
73
  "ts-jest": "29.2.6",
74
74
  "ts-node": "10.9.2",
75
- "typescript": "5.7.3"
75
+ "typescript": "5.8.2"
76
76
  },
77
77
  "nodemonConfig": {
78
78
  "watch": [
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@mojaloop/api-snippets": "17.8.0",
33
- "@mojaloop/central-services-shared": "18.19.0",
33
+ "@mojaloop/central-services-shared": "18.21.0",
34
34
  "@mojaloop/logging-bc-public-types-lib": "0.5.4",
35
35
  "@mojaloop/platform-shared-lib-messaging-types-lib": "0.7.1",
36
36
  "@mojaloop/platform-shared-lib-nodejs-kafka-client-lib": "0.5.18",
@@ -40,10 +40,10 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@eslint/compat": "1.2.7",
43
- "@types/node": "22.13.5",
43
+ "@types/node": "22.13.9",
44
44
  "@types/uuid": "10.0.0",
45
- "@typescript-eslint/eslint-plugin": "8.25.0",
46
- "@typescript-eslint/parser": "8.25.0",
45
+ "@typescript-eslint/eslint-plugin": "8.26.0",
46
+ "@typescript-eslint/parser": "8.26.0",
47
47
  "eslint": "9.15.0",
48
48
  "jest": "29.7.0",
49
49
  "npm-check-updates": "16.7.10",
@@ -51,7 +51,7 @@
51
51
  "standard-version": "9.5.0",
52
52
  "ts-jest": "29.2.6",
53
53
  "tslib": "2.8.1",
54
- "typescript": "5.7.3"
54
+ "typescript": "5.8.2"
55
55
  },
56
56
  "standard-version": {
57
57
  "scripts": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mojaloop/sdk-scheme-adapter",
3
- "version": "24.1.3",
3
+ "version": "24.2.0-csi-1210.0",
4
4
  "description": "mojaloop sdk-scheme-adapter",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/mojaloop/sdk-scheme-adapter",
@@ -82,10 +82,10 @@
82
82
  },
83
83
  "devDependencies": {
84
84
  "@types/jest": "29.5.14",
85
- "@types/node": "22.13.5",
85
+ "@types/node": "22.13.9",
86
86
  "@types/node-cache": "4.2.5",
87
- "@typescript-eslint/eslint-plugin": "8.25.0",
88
- "@typescript-eslint/parser": "8.25.0",
87
+ "@typescript-eslint/eslint-plugin": "8.26.0",
88
+ "@typescript-eslint/parser": "8.26.0",
89
89
  "audit-ci": "7.1.0",
90
90
  "eslint": "9.15.0",
91
91
  "eslint-config-airbnb-typescript": "18.0.0",
@@ -98,7 +98,7 @@
98
98
  "standard-version": "9.5.0",
99
99
  "ts-jest": "29.2.6",
100
100
  "ts-node": "10.9.2",
101
- "typescript": "5.7.3",
101
+ "typescript": "5.8.2",
102
102
  "yarn-audit-fix": "10.1.1"
103
103
  },
104
104
  "overrides": {