From b2534dacf5c8227a7d6c908b5b4f523a83c2e244 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Tue, 28 Jun 2022 12:02:02 +0300 Subject: [PATCH 01/39] MBP-604: Pull changes from mojaloop-connector. --- docs/dfspInboundApi.yaml | 11 + package-lock.json | 19 -- src/ControlAgent/index.js | 19 +- src/ControlServer/index.js | 20 +- src/InboundServer/index.js | 70 +--- src/OAuthTestServer/index.js | 13 - src/OutboundServer/index.js | 64 +--- src/TestServer/index.js | 31 -- src/index.js | 305 +++++++++--------- src/lib/model/InboundTransfersModel.js | 16 +- test/unit/ControlClient.test.js | 44 --- test/unit/ControlServer.test.js | 60 ---- test/unit/api/utils.js | 14 +- test/unit/data/defaultConfig.json | 1 - test/unit/index.test.js | 64 +--- .../lib/model/InboundTransfersModel.test.js | 47 +++ .../data/notificationAbortedToPayee.json | 10 + .../data/notificationReservedToPayee.json | 10 + 18 files changed, 299 insertions(+), 519 deletions(-) create mode 100644 test/unit/lib/model/data/notificationAbortedToPayee.json create mode 100644 test/unit/lib/model/data/notificationReservedToPayee.json diff --git a/docs/dfspInboundApi.yaml b/docs/dfspInboundApi.yaml index f7d3a4bd0..cfea0d6e4 100644 --- a/docs/dfspInboundApi.yaml +++ b/docs/dfspInboundApi.yaml @@ -832,6 +832,17 @@ components: homeTransactionId: type: string description: Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. + fulfilment: + $ref: '#/components/schemas/IlpFulfilment' + description: Fulfilment from the DFSP backend, used for testing purposes to inject an invalid fulfilment via a rule. + transferState: + $ref: '#/components/schemas/transferState' + description: Transfer state from the DFSP backend, used for testing purposes to inject an desired transfer state via a rule. + example: ABORTED + completedTimestamp: + $ref: '#/components/schemas/timestamp' + description: Completed timestamp from the DFSP backend, used for testing purposes to inject a given completed timestamp via a rule. + example: "2020-05-19T08:38:08.699-04:00" transferDetailsResponse: type: object diff --git a/package-lock.json b/package-lock.json index 6b8067879..ee3ec08f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8215,19 +8215,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -25089,12 +25076,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", diff --git a/src/ControlAgent/index.js b/src/ControlAgent/index.js index 40eb6ade2..3f1bdc074 100644 --- a/src/ControlAgent/index.js +++ b/src/ControlAgent/index.js @@ -22,10 +22,10 @@ // It expects new configuration to be supplied as an array of JSON patches. It therefore exposes // the current configuration to -const assert = require('assert').strict; const ws = require('ws'); const jsonPatch = require('fast-json-patch'); const { generateSlug } = require('random-word-slugs'); +const _ = require('lodash'); /************************************************************************** * The message protocol messages, verbs, and errors @@ -163,15 +163,6 @@ class Client extends ws { this.close(); } - reconfigure({ logger = this._logger, port = 0, appConfig = this._appConfig }) { - assert(port === this._socket.remotePort, 'Cannot reconfigure running port'); - return () => { - this._logger = logger; - this._appConfig = appConfig; - this._logger.log('restarted'); - }; - } - // Handle incoming message from the server. _handle(data) { // TODO: json-schema validation of received message- should be pretty straight-forward @@ -187,7 +178,13 @@ class Client extends ws { switch (msg.msg) { case MESSAGE.CONFIGURATION: switch (msg.verb) { - case VERB.NOTIFY: + case VERB.NOTIFY: { + const dup = JSON.parse(JSON.stringify(this._appConfig)); // fast-json-patch explicitly mutates + _.merge(dup, msg.data); + this._logger.push({ oldConf: this._appConfig, newConf: dup }).log('Emitting new configuration'); + this.emit(EVENT.RECONFIGURE, dup); + break; + } case VERB.PATCH: { const dup = JSON.parse(JSON.stringify(this._appConfig)); // fast-json-patch explicitly mutates jsonPatch.applyPatch(dup, msg.data); diff --git a/src/ControlServer/index.js b/src/ControlServer/index.js index 9f22c04c6..9efd700f9 100644 --- a/src/ControlServer/index.js +++ b/src/ControlServer/index.js @@ -22,11 +22,11 @@ // It expects new configuration to be supplied as an array of JSON patches. It therefore exposes // the current configuration to -const assert = require('assert').strict; const ws = require('ws'); const jsonPatch = require('fast-json-patch'); const { generateSlug } = require('random-word-slugs'); +const _ = require('lodash'); /************************************************************************** @@ -217,17 +217,6 @@ class Server extends ws.Server { this._logger.log('Control server shutdown complete'); } - reconfigure({ logger = this._logger, port = 0, appConfig = this._appConfig }) { - assert(port === this._port, 'Cannot reconfigure running port'); - return () => { - const reconfigureClientLogger = - ({ logger: clientLogger }) => clientLogger.configure(logger); - this._clientData.values(reconfigureClientLogger); - this._logger = logger; - this._appConfig = appConfig; - this._logger.log('restarted'); - }; - } async notifyClientsOfCurrentConfig() { const updateConfMsg = build.CONFIGURATION.NOTIFY(this._appConfig); @@ -261,6 +250,13 @@ class Server extends ws.Server { case VERB.READ: client.send(build.CONFIGURATION.NOTIFY(this._appConfig, msg.id)); break; + case VERB.NOTIFY: { + const dup = JSON.parse(JSON.stringify(this._appConfig)); // fast-json-patch explicitly mutates + _.merge(dup, msg.data); + this._logger.push({ oldConf: this._appConfig, newConf: dup }).log('Emitting new configuration'); + this.emit(EVENT.RECONFIGURE, dup); + break; + } case VERB.PATCH: { // TODO: validate the incoming patch? Or assume clients have used the // client library? diff --git a/src/InboundServer/index.js b/src/InboundServer/index.js index 13c40465b..a25142665 100644 --- a/src/InboundServer/index.js +++ b/src/InboundServer/index.js @@ -18,33 +18,19 @@ const fs = require('fs'); const path = require('path'); const EventEmitter = require('events'); -const { WSO2Auth } = require('@mojaloop/sdk-standard-components'); - const Validate = require('../lib/validate'); const router = require('../lib/router'); const handlers = require('./handlers'); const middlewares = require('./middlewares'); -const check = require('../lib/check'); class InboundApi extends EventEmitter { - constructor(conf, logger, cache, validator) { + constructor(conf, logger, cache, validator, wso2) { super({ captureExceptions: true }); this._conf = conf; this._cache = cache; - this._wso2 = { - auth: new WSO2Auth({ - ...conf.wso2.auth, - logger, - tlsCreds: conf.inbound.tls.mutualTLS.enabled && conf.inbound.tls.creds, - }), - retryWso2AuthFailureTimes: conf.wso2.requestAuthFailureRetryTimes, - }; - this._wso2.auth.on('error', (msg) => { - this.emit('error', 'WSO2 auth error in InboundApi', msg); - }); if (conf.validateInboundJws) { - this._jwsVerificationKeys = conf.pm4mlEnabled ? conf.peerJWSKeys : InboundApi._GetJwsKeys(conf.jwsVerificationKeysDirectory); + this._jwsVerificationKeys = conf.pm4mlEnabled ? conf.peerJWSKeys : InboundApi._GetJwsKeys(conf.jwsVerificationKeysDirectory); } this._api = InboundApi._SetupApi({ conf, @@ -52,19 +38,15 @@ class InboundApi extends EventEmitter { validator, cache, jwsVerificationKeys: this._jwsVerificationKeys, - wso2: this._wso2, + wso2, }); } async start() { this._startJwsWatcher(); - if (!this._conf.testingDisableWSO2AuthStart) { - await this._wso2.auth.start(); - } } stop() { - this._wso2.auth.stop(); if (this._keyWatcher) { this._keyWatcher.close(); this._keyWatcher = null; @@ -145,7 +127,7 @@ class InboundApi extends EventEmitter { } class InboundServer extends EventEmitter { - constructor(conf, logger, cache) { + constructor(conf, logger, cache, wso2) { super({ captureExceptions: true }); this._conf = conf; this._validator = new Validate(); @@ -154,7 +136,8 @@ class InboundServer extends EventEmitter { conf, this._logger.push({ component: 'api' }), cache, - this._validator + this._validator, + wso2, ); this._api.on('error', (...args) => { this.emit('error', ...args); @@ -173,52 +156,17 @@ class InboundServer extends EventEmitter { await this._validator.initialise(apiSpecs); await this._api.start(); await new Promise((resolve) => this._server.listen(this._conf.inbound.port, resolve)); - this._logger.log(`Serving outbound API on port ${this._conf.inbound.port}`); + this._logger.log(`Serving inbound API on port ${this._conf.inbound.port}`); } async stop() { - if (this._server) { + if (this._server.listening) { await new Promise(resolve => this._server.close(resolve)); - this._server = null; - } - if (this._api) { - await this._api.stop(); - this._api = null; } + await this._api.stop(); this._logger.log('inbound shut down complete'); } - async reconfigure(conf, logger, cache) { - // It may be possible to extract the socket from an existing HTTP/HTTPS server and replace - // it in a new server of the other type, as Node's HTTP and HTTPS servers both eventually - // are subclasses of net.Server. This wasn't considered as a requirement at the time of - // writing. - assert( - this._conf.inbound.tls.mutualTLS.enabled === conf.inbound.tls.mutualTLS.enabled, - 'Cannot live-restart an HTTPS server as HTTP or vice versa', - ); - const newApi = new InboundApi(conf, logger, cache, this._validator); - await newApi.start(); - return () => { - this._logger = logger; - this._cache = cache; - // TODO: .tls might be undefined, causing an.. err.. undefined dereference.. - const tlsCredsChanged = check.notDeepEqual( - conf.inbound.tls.creds, - this._conf.inbound.tls.creds - ); - if (this._conf.inbound.tls.mutualTLS.enabled && tlsCredsChanged) { - this._server.setSecureContext(conf.inbound.tls.creds); - } - this._server.removeAllListeners('request'); - this._server.on('request', newApi.callback()); - this._api.stop(); - this._api = newApi; - this._conf = conf; - this._logger.log('restarted'); - }; - } - _createServer(tlsEnabled, tlsCreds, handler) { if (!tlsEnabled) { return http.createServer(handler); diff --git a/src/OAuthTestServer/index.js b/src/OAuthTestServer/index.js index 3272a7394..c12fce8aa 100644 --- a/src/OAuthTestServer/index.js +++ b/src/OAuthTestServer/index.js @@ -10,7 +10,6 @@ 'use strict'; -const { assert } = require('assert'); const express = require('express'); const bodyParser = require('body-parser'); const OAuth2Server = require('oauth2-server'); @@ -28,7 +27,6 @@ class OAuthTestServer { * @param {Logger} conf.logger Logger */ constructor({ port, clientKey, clientSecret, logger }) { - this._api = null; this._port = port; this._logger = logger; this._clientKey = clientKey; @@ -65,17 +63,6 @@ class OAuthTestServer { this._logger.log('OAuth2 Test Server shut down complete'); } - async reconfigure({ port, clientKey, clientSecret, logger }) { - assert(port === this._port, 'Cannot reconfigure running port'); - return () => { - this._port = port; - this._logger = logger; - this.stop().then(() => this.start()); - this._api = OAuthTestServer._SetupApi({ clientKey, clientSecret }); - this._logger.log('restarted'); - }; - } - handleResponse(req, res, response) { if (response.status === 302) { const location = response.headers.location; diff --git a/src/OutboundServer/index.js b/src/OutboundServer/index.js index 42b70dcc8..d3294ff0d 100644 --- a/src/OutboundServer/index.js +++ b/src/OutboundServer/index.js @@ -18,8 +18,6 @@ const path = require('path'); const EventEmitter = require('events'); const cors = require('@koa/cors'); -const { WSO2Auth } = require('@mojaloop/sdk-standard-components'); - const Validate = require('../lib/validate'); const router = require('../lib/router'); const handlers = require('./handlers'); @@ -28,7 +26,7 @@ const middlewares = require('./middlewares'); const endpointRegex = /\/.*/g; class OutboundApi extends EventEmitter { - constructor(conf, logger, cache, validator, metricsClient) { + constructor(conf, logger, cache, validator, metricsClient, wso2) { super({ captureExceptions: true }); this._logger = logger; this._api = new Koa(); @@ -36,26 +34,10 @@ class OutboundApi extends EventEmitter { this._cache = cache; this._metricsClient = metricsClient; - this._wso2 = { - auth: new WSO2Auth({ - ...this._conf.wso2.auth, - logger: this._logger, - tlsCreds: this._conf.outbound.tls.mutualTLS.enabled && this._conf.outbound.tls.creds, - }), - retryWso2AuthFailureTimes: conf.wso2.requestAuthFailureRetryTimes, - }; - this._wso2.auth.on('error', (msg) => { - this.emit('error', 'WSO2 auth error in OutboundApi', msg); - }); - - // use CORS - // https://github.com/koajs/cors - this._api.use(cors()); - this._api.use(middlewares.createErrorHandler(this._logger)); this._api.use(middlewares.createRequestIdGenerator()); this._api.use(koaBody()); // outbound always expects application/json - this._api.use(middlewares.applyState({ cache, wso2: this._wso2, conf, metricsClient })); + this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient })); this._api.use(middlewares.createLogger(this._logger)); //Note that we strip off any path on peerEndpoint config after the origin. @@ -67,7 +49,7 @@ class OutboundApi extends EventEmitter { peerEndpoint: conf.peerEndpoint.replace(endpointRegex, ''), proxyConfig: conf.proxyConfig, logger: this._logger, - wso2Auth: this._wso2.auth, + wso2Auth: wso2.auth, tls: conf.outbound.tls, })); } @@ -76,15 +58,9 @@ class OutboundApi extends EventEmitter { this._api.use(router(handlers)); } - async start() { - if (!this._conf.testingDisableWSO2AuthStart) { - await this._wso2.auth.start(); - } - } + start() {} - async stop() { - this._wso2.auth.stop(); - } + stop() {} callback() { return this._api.callback(); @@ -92,7 +68,7 @@ class OutboundApi extends EventEmitter { } class OutboundServer extends EventEmitter { - constructor(conf, logger, cache, metricsClient) { + constructor(conf, logger, cache, metricsClient, wso2) { super({ captureExceptions: true }); this._validator = new Validate(); this._conf = conf; @@ -103,7 +79,8 @@ class OutboundServer extends EventEmitter { this._logger.push({ component: 'api' }), cache, this._validator, - metricsClient + metricsClient, + wso2, ); this._api.on('error', (...args) => { this.emit('error', ...args); @@ -121,30 +98,11 @@ class OutboundServer extends EventEmitter { } async stop() { - if (this._server) { + if (this._server.listening) { await new Promise(resolve => this._server.close(resolve)); - this._server = null; } - if (this._api) { - await this._api.stop(); - this._api = null; - } - this._logger.log('Shut down complete'); - } - - async reconfigure(conf, logger, cache, metricsClient) { - const newApi = new OutboundApi(conf, logger, cache, this._validator, metricsClient); - await newApi.start(); - return () => { - this._logger = logger; - this._cache = cache; - this._server.removeAllListeners('request'); - this._server.on('request', newApi.callback()); - this._api.stop(); - this._api = newApi; - this._conf = conf; - this._logger.log('restarted'); - }; + await this._api.stop(); + this._logger.log('outbound shut down complete'); } } diff --git a/src/TestServer/index.js b/src/TestServer/index.js index 5e54a1528..5c08e3056 100644 --- a/src/TestServer/index.js +++ b/src/TestServer/index.js @@ -11,7 +11,6 @@ const Koa = require('koa'); const ws = require('ws'); -const assert = require('assert').strict; const http = require('http'); const yaml = require('js-yaml'); const fs = require('fs').promises; @@ -211,36 +210,6 @@ class TestServer { } this._logger.log('Test server shutdown complete'); } - - async reconfigure({ port, logger, cache }) { - assert(port === this._port, 'Cannot reconfigure running port'); - const newApi = new TestApi(logger, cache, this._validator); - const newWsApi = new WsServer(logger.push({ component: 'websocket-server' }), cache); - await newWsApi.start(); - - return () => { - const oldWsApi = this._wsapi; - this._logger = logger; - this._cache = cache; - this._wsapi = newWsApi; - this._api = newApi; - this._server.removeAllListeners('upgrade'); - this._server.on('upgrade', (req, socket, head) => { - this._wsapi.handleUpgrade(req, socket, head, (ws) => - this._wsapi.emit('connection', ws, req)); - }); - this._server.removeAllListeners('request'); - this._server.on('request', newApi.callback()); - // TODO: we can't guarantee client implementations. Therefore we can't guarantee - // reconnect logic/behaviour. Therefore instead of closing all websocket client - // connections as we do below, we should replace handlers. - oldWsApi.stop().catch((err) => { - this._logger.push({ err }).log('Error stopping websocket server during reconfigure'); - }); - - this._logger.log('restarted'); - }; - } } module.exports = TestServer; diff --git a/src/index.js b/src/index.js index 08dea7b54..fb4666e0e 100644 --- a/src/index.js +++ b/src/index.js @@ -10,11 +10,10 @@ 'use strict'; -const assert = require('assert/strict'); const { hostname } = require('os'); +const _ = require('lodash'); const config = require('./config'); const EventEmitter = require('events'); -const _ = require('lodash'); const InboundServer = require('./InboundServer'); const OutboundServer = require('./OutboundServer'); @@ -30,8 +29,7 @@ const OutboundServerMiddleware = require('./OutboundServer/middlewares.js'); const Router = require('./lib/router'); const Validate = require('./lib/validate'); const Cache = require('./lib/cache'); -const check = require('./lib/check'); -const { Logger } = require('@mojaloop/sdk-standard-components'); +const { Logger, WSO2Auth } = require('@mojaloop/sdk-standard-components'); const LOG_ID = { INBOUND: { app: 'mojaloop-connector-inbound-api' }, @@ -64,11 +62,24 @@ class Server extends EventEmitter { logger: this.logger.push(LOG_ID.METRICS) }); + this.wso2 = { + auth: new WSO2Auth({ + ...conf.wso2.auth, + logger, + tlsCreds: conf.outbound.tls.mutualTLS.enabled && conf.outbound.tls.creds, + }), + retryWso2AuthFailureTimes: conf.wso2.requestAuthFailureRetryTimes, + }; + this.wso2.auth.on('error', (msg) => { + this.emit('error', 'WSO2 auth error in InboundApi', msg); + }); + this.inboundServer = new InboundServer( this.conf, this.logger.push(LOG_ID.INBOUND), this.cache, - this.metricsClient + this.metricsClient, + this.wso2, ); this.inboundServer.on('error', (...args) => { this.logger.push({ args }).log('Unhandled error in Inbound Server'); @@ -79,76 +90,63 @@ class Server extends EventEmitter { this.conf, this.logger.push(LOG_ID.OUTBOUND), this.cache, - this.metricsClient + this.metricsClient, + this.wso2, ); this.outboundServer.on('error', (...args) => { this.logger.push({ args }).log('Unhandled error in Outbound Server'); this.emit('error', 'Unhandled error in Outbound Server'); }); - this.oauthTestServer = new OAuthTestServer({ - clientKey: this.conf.oauthTestServer.clientKey, - clientSecret: this.conf.oauthTestServer.clientSecret, - port: this.conf.oauthTestServer.listenPort, - logger: this.logger.push(LOG_ID.OAUTHTEST), - }); + if (this.conf.oauthTestServer.enabled) { + this.oauthTestServer = new OAuthTestServer({ + clientKey: this.conf.oauthTestServer.clientKey, + clientSecret: this.conf.oauthTestServer.clientSecret, + port: this.conf.oauthTestServer.listenPort, + logger: this.logger.push(LOG_ID.OAUTHTEST), + }); + } - this.testServer = new TestServer({ - port: this.conf.test.port, - logger: this.logger.push(LOG_ID.TEST), - cache: this.cache, - }); + if (this.conf.enableTestFeatures) { + this.testServer = new TestServer({ + port: this.conf.test.port, + logger: this.logger.push(LOG_ID.TEST), + cache: this.cache, + }); + } + } + + async start() { + await this.cache.connect(); + await this.wso2.auth.start(); + + // We only start the control client if we're running within Mojaloop Payment Manager. + // The control server is the Payment Manager Management API Service. + // We only start the client to connect to and listen to the Management API service for + // management protocol messages e.g configuration changes, certicate updates etc. + if (this.conf.pm4mlEnabled) { + const RESTART_INTERVAL_MS = 10000; + this.controlClient = await ControlAgent.Client.Create({ + address: this.conf.control.mgmtAPIWsUrl, + port: this.conf.control.mgmtAPIWsPort, + logger: this.logger.push(LOG_ID.CONTROL), + appConfig: this.conf, + }); + this.controlClient.on(ControlAgent.EVENT.RECONFIGURE, this.restart.bind(this)); + this.controlClient.on('close', () => setTimeout(() => this.restart(_.merge({}, this.conf, { control: { stopped: Date.now() } })), RESTART_INTERVAL_MS)); + } + + await Promise.all([ + this.inboundServer.start(), + this.outboundServer.start(), + this.metricsServer.start(), + this.testServer?.start(), + this.oauthTestServer?.start(), + ]); } async restart(newConf) { - // Figuring out what config is necessary in each server and component is a pretty big job - // that we'll have to save for later. For now, when the config changes, we'll restart - // more than we might have to. - // We'll do this by: - // 0. creating a new instance of the logger, if necessary - // 1. creating a new instance of the cache, if necessary - // 2. calling the async reconfigure method of each of the servers as necessary- this will - // return a synchronous function that we can call to swap over the server events and - // object properties to the new ones. It will: - // 1. remove the `request` listener for each of the HTTP servers - // 2. add the new appropriate `request` listener - // This results in a completely synchronous listener changeover to the new config and - // therefore hopefully avoids any concurrency issues arising from restarting different - // servers or components concurrently. - // TODO: in the sense of being able to reason about the code, it would make some sense to - // turn the config items or object passed to each server into an event emitter, or pass an - // additional event emitter to the server constructor for the server to listen to and act - // on changes. Before this, however, it's probably necessary to ensure each server gets - // _only_ the config it needs, not the entire config object. - // Further: it might be possible to use Object.observe for this functionality. - // TODO: what happens if this is run concurrently? I.e. if it is called twice in rapid - // succession. This question probably needs to be asked of the reconfigure message on every - // server. - // Note that it should be possible to reconfigure ports on a running server by reassigning - // servers, e.g. - // this.inboundServer._server = createHttpServer(); - // this.inboundServer._server.listen(newPort); - // If there are conflicts, for example if the new configuration specifies the new inbound - // port to be the same value as the old outbound port, this will require either - // 1. some juggling of HTTP servers, e.g. - // const oldInboundServer = this.inboundServer._server; - // this.inboundServer._server = this.outboundServer._server; - // .. etc. - // 2. some juggling of sockets between servers, if possible - // 3. rearchitecting of the servers, perhaps splitting the .start() method on the servers - // to an .init() and .listen() methods, with the latter optionally taking an HTTP server - // as argument - // This _might_ introduce some confusion/complexity for existing websocket clients, but as - // the event handlers _should_ not be modified this shouldn't be a problem. A careful - // analysis of this will be necessary. - assert(newConf.inbound.port === this.conf.inbound.port - && newConf.outbound.port === this.conf.outbound.port - && newConf.test.port === this.conf.test.port - && newConf.oauthTestServer.listenPort === this.conf.oauthTestServer.listenPort - && newConf.control.mgmtAPIWsPort === this.conf.control.mgmtAPIWsPort, - 'Cannot reconfigure ports on running server'); - const doNothing = () => {}; - const updateLogger = check.notDeepEqual(newConf.logIndent, this.conf.logIndent); + const updateLogger = !_.isEqual(newConf.logIndent, this.conf.logIndent); if (updateLogger) { this.logger = new Logger.Logger({ context: { @@ -159,14 +157,13 @@ class Server extends EventEmitter { stringify: Logger.buildStringify({ space: this.conf.logIndent }), }); } + let oldCache; - const updateCache = ( - updateLogger || - check.notDeepEqual(this.conf.cacheConfig, newConf.cacheConfig) || - check.notDeepEqual(this.conf.enableTestFeatures, newConf.enableTestFeatures) - ); + const updateCache = !_.isEqual(this.conf.cacheConfig, newConf.cacheConfig) + || !_.isEqual(this.conf.enableTestFeatures, newConf.enableTestFeatures); if (updateCache) { oldCache = this.cache; + await this.cache.disconnect(); this.cache = new Cache({ ...newConf.cacheConfig, logger: this.logger.push(LOG_ID.CACHE), @@ -174,84 +171,104 @@ class Server extends EventEmitter { }); await this.cache.connect(); } - const confChanged = !check.deepEqual(newConf, this.conf); - // TODO: find better naming than "restart", because that's not really what's happening. - const [restartInboundServer, restartOutboundServer, restartControlClient] = confChanged - ? await Promise.all([ - this.inboundServer.reconfigure(newConf, this.logger.push(LOG_ID.INBOUND), this.cache), - this.outboundServer.reconfigure(newConf, this.logger.push(LOG_ID.OUTBOUND), this.cache, this.metricsClient), - this.controlClient.reconfigure({ - logger: this.logger.push(LOG_ID.CONTROL), - port: newConf.control.mgmtAPIWsPort, - appConfig: newConf - }), - ]) - : [doNothing, doNothing, doNothing]; - const updateOAuthTestServer = ( - updateLogger || check.notDeepEqual(newConf.oauthTestServer, this.conf.oauthTestServer) - ); - const restartOAuthTestServer = updateOAuthTestServer - ? await this.oauthTestServer.reconfigure({ - clientKey: this.conf.oauthTestServer.clientKey, - clientSecret: this.conf.oauthTestServer.clientSecret, - port: this.conf.oauthTestServer.listenPort, - logger: this.logger.push(LOG_ID.OAUTHTEST), - }) - : doNothing; - const updateTestServer = ( - updateLogger || updateCache || check.notDeepEqual(newConf.test.port, this.conf.test.port) - ); - const restartTestServer = updateTestServer - ? await this.testServer.reconfigure({ - port: newConf.test.port, - logger: this.logger.push(LOG_ID.TEST), - cache: this.cache, - }) - : doNothing; - // You may not return an async restart function. Perform any required async activity in the - // reconfigure function and return a sync restart function. See the note at the top of this - // file. - [restartTestServer, restartOAuthTestServer, restartInboundServer, restartOutboundServer, restartControlClient] - .map(f => assert(Promise.resolve(f) !== f, 'Restart functions must be synchronous')); - restartTestServer(); - restartOAuthTestServer(); - restartInboundServer(); - restartOutboundServer(); - restartControlClient(); - this.conf = newConf; - await Promise.all([ - oldCache && oldCache.disconnect(), - ]); - } - async start() { - await this.cache.connect(); + const updateWSO2 = !_.isEqual(this.conf.wso2, newConf.wso2) + || !_.isEqual(this.conf.outbound.tls, newConf.outbound.tls); + if (updateWSO2) { + this.wso2.auth.stop(); + this.wso2.auth = new WSO2Auth({ + ...newConf.wso2.auth, + logger: this.logger, + tlsCreds: newConf.outbound.tls.mutualTLS.enabled && newConf.outbound.tls.creds, + }); + this.wso2.retryWso2AuthFailureTimes = newConf.wso2.requestAuthFailureRetryTimes; + this.wso2.auth.on('error', (msg) => { + this.emit('error', 'WSO2 auth error in InboundApi', msg); + }); + await this.wso2.auth.start(); + } - const startTestServer = this.conf.enableTestFeatures ? this.testServer.start() : null; - const startOauthTestServer = this.conf.oauthTestServer.enabled - ? this.oauthTestServer.start() - : null; + const updateInboundServer = !_.isEqual(this.conf.inbound, newConf.inbound); + if (updateInboundServer) { + await this.inboundServer.stop(); + this.inboundServer = new InboundServer( + newConf, + this.logger.push(LOG_ID.INBOUND), + this.cache, + this.metricsClient, + this.wso2, + ); + this.inboundServer.on('error', (...args) => { + this.logger.push({ args }).log('Unhandled error in Inbound Server'); + this.emit('error', 'Unhandled error in Inbound Server'); + }); + await this.inboundServer.start(); + } - // We only start the control client if we're running within Mojaloop Payment Manager. - // The control server is the Payment Manager Management API Service. - // We only start the client to connect to and listen to the Management API service for - // management protocol messages e.g configuration changes, certificate updates etc. - if (this.conf.pm4mlEnabled) { - this.controlClient = await ControlAgent.Client.Create({ - address: this.conf.control.mgmtAPIWsUrl, - port: this.conf.control.mgmtAPIWsPort, - logger: this.logger.push(LOG_ID.CONTROL), - appConfig: this.conf, + const updateOutboundServer = !_.isEqual(this.conf.outbound, newConf.outbound); + if (updateOutboundServer) { + await this.outboundServer.stop(); + this.outboundServer = new OutboundServer( + newConf, + this.logger.push(LOG_ID.OUTBOUND), + this.cache, + this.metricsClient, + this.wso2, + ); + this.outboundServer.on('error', (...args) => { + this.logger.push({ args }).log('Unhandled error in Outbound Server'); + this.emit('error', 'Unhandled error in Outbound Server'); }); - this.controlClient.on(ControlAgent.EVENT.RECONFIGURE, this.restart.bind(this)); + await this.outboundServer.start(); } + const updateControlClient = !_.isEqual(this.conf.control, newConf.control); + if (updateControlClient) { + await this.controlClient?.stop(); + if (this.conf.pm4mlEnabled) { + const RESTART_INTERVAL_MS = 10000; + this.controlClient = await ControlAgent.Client.Create({ + address: newConf.control.mgmtAPIWsUrl, + port: newConf.control.mgmtAPIWsPort, + logger: this.logger.push(LOG_ID.CONTROL), + appConfig: newConf, + }); + this.controlClient.on(ControlAgent.EVENT.RECONFIGURE, this.restart.bind(this)); + this.controlClient.on('close', () => setTimeout(() => this.restart(_.merge({}, newConf, { control: { stopped: Date.now() } })), RESTART_INTERVAL_MS)); + } + } + + const updateOAuthTestServer = !_.isEqual(newConf.oauthTestServer, this.conf.oauthTestServer); + if (updateOAuthTestServer) { + await this.oauthTestServer?.stop(); + if (this.conf.oauthTestServer.enabled) { + this.oauthTestServer = new OAuthTestServer({ + clientKey: newConf.oauthTestServer.clientKey, + clientSecret: newConf.oauthTestServer.clientSecret, + port: newConf.oauthTestServer.listenPort, + logger: this.logger.push(LOG_ID.OAUTHTEST), + }); + await this.oauthTestServer.start(); + } + } + + const updateTestServer = !_.isEqual(newConf.test.port, this.conf.test.port); + if (updateTestServer) { + await this.testServer?.stop(); + if (this.conf.enableTestFeatures) { + this.testServer = new TestServer({ + port: newConf.test.port, + logger: this.logger.push(LOG_ID.TEST), + cache: this.cache, + }); + await this.testServer.start(); + } + } + + this.conf = newConf; + await Promise.all([ - this.inboundServer.start(), - this.outboundServer.start(), - this.metricsServer.start(), - startTestServer, - startOauthTestServer, + oldCache?.disconnect(), ]); } @@ -259,9 +276,9 @@ class Server extends EventEmitter { return Promise.all([ this.inboundServer.stop(), this.outboundServer.stop(), - this.oauthTestServer.stop(), - this.testServer.stop(), - this.controlClient.stop(), + this.oauthTestServer?.stop(), + this.testServer?.stop(), + this.controlClient?.stop(), this.metricsServer.stop(), ]); } diff --git a/src/lib/model/InboundTransfersModel.js b/src/lib/model/InboundTransfersModel.js index da7c27f9e..099821e22 100644 --- a/src/lib/model/InboundTransfersModel.js +++ b/src/lib/model/InboundTransfersModel.js @@ -389,9 +389,9 @@ class InboundTransfersModel { // create a mojaloop transfer fulfil response const mojaloopResponse = { - completedTimestamp: new Date(), - transferState: this._reserveNotification ? 'RESERVED' : 'COMMITTED', - fulfilment: fulfilment, + completedTimestamp: response.completedTimestamp || new Date(), + transferState: response.transferState || (this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED), + fulfilment: response.fulfilment || fulfilment, ...response.extensionList && { extensionList: { extension: response.extensionList, @@ -406,7 +406,7 @@ class InboundTransfersModel { headers: res.originalRequest.headers, body: res.originalRequest.body, }; - this.data.currentState = this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED; + this.data.currentState = response.transferState || (this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED); await this._save(); return res; } catch(err) { @@ -788,10 +788,14 @@ class InboundTransfersModel { // if the transfer was successful in the switch, set the overall transfer state to COMPLETED this.data.currentState = TransferStateEnum.COMPLETED; } + else if(body.transferState === 'ABORTED') { + // if the transfer was ABORTED in the switch, set the overall transfer state to ABORTED + this.data.currentState = TransferStateEnum.ABORTED; + } else { // if the final notification has anything other than COMMITTED as the final state, set an error // in the transfer state. - this.data.currentState == TransferStateEnum.ERROR_OCCURED; + this.data.currentState = TransferStateEnum.ERROR_OCCURED; this.data.lastError = 'Final notification state not COMMITTED'; } @@ -800,7 +804,7 @@ class InboundTransfersModel { const res = await this._backendRequests.putTransfersNotification(this.data, transferId); return res; } catch (err) { - this._logger.push({ err }).log('Error notifying backend of final transfer state'); + this._logger.push({ err }).log(`Error notifying backend of final transfer state equal to: ${body.transferState}`); } } diff --git a/test/unit/ControlClient.test.js b/test/unit/ControlClient.test.js index a808aceea..ac033ba50 100644 --- a/test/unit/ControlClient.test.js +++ b/test/unit/ControlClient.test.js @@ -1,14 +1,9 @@ const ControlAgent = require('~/ControlAgent'); const TestControlServer = require('./ControlServer'); -const InboundServer = require('~/InboundServer'); -const OutboundServer = require('~/OutboundServer'); -const TestServer = require('~/TestServer'); -const defaultConfig = require('./data/defaultConfig.json'); const { Logger } = require('@mojaloop/sdk-standard-components'); jest.mock('~/lib/cache'); -const Cache = require('~/lib/cache'); // TODO: // - diff against master to determine what else needs testing @@ -72,42 +67,3 @@ describe('ControlAgent', () => { }); }); }); - -describe('Server reconfigure methods', () => { - let conf, logger, cache; - - const isPromise = (o) => Promise.resolve(o) === o; - - beforeEach(() => { - conf = JSON.parse(JSON.stringify(defaultConfig)); - logger = new Logger.Logger({ stringify: () => '' }); - cache = new Cache({ ...conf.cacheConfig, logger: logger.push({ component: 'cache' }) }); - }); - - test('InboundServer reconfigure method returns sync function', async () => { - const server = new InboundServer(conf, logger, cache); - const res = await server.reconfigure(conf, logger, cache); - expect(isPromise(res)).toEqual(false); - }); - - test('OutboundServer reconfigure method returns sync function', async () => { - const server = new OutboundServer(conf, logger, cache); - const res = await server.reconfigure(conf, logger, cache); - expect(isPromise(res)).toEqual(false); - }); - - test('TestServer reconfigure method returns sync function', async () => { - const server = new TestServer({ logger, cache }); - const res = await server.reconfigure({ logger, cache }); - expect(isPromise(res)).toEqual(false); - }); - - test('ControlClient reconfigure method returns sync function', async () => { - const server = new TestControlServer.Server({ logger, appConfig: { ...conf, control: { port: 4005 }}}); - const client = await ControlAgent.Client.Create({ port: 4005, logger, appConfig: {} }); - const res = await client.reconfigure({ logger, port: 4005, appConfig: {} }); - expect(isPromise(res)).toEqual(false); - await client.close(); - await server.close(); - }); -}); diff --git a/test/unit/ControlServer.test.js b/test/unit/ControlServer.test.js index 9aca70930..158c406ad 100644 --- a/test/unit/ControlServer.test.js +++ b/test/unit/ControlServer.test.js @@ -1,13 +1,8 @@ const ControlServer = require('~/ControlServer'); -const InboundServer = require('~/InboundServer'); -const OutboundServer = require('~/OutboundServer'); -const TestServer = require('~/TestServer'); -const defaultConfig = require('./data/defaultConfig.json'); const { Logger } = require('@mojaloop/sdk-standard-components'); jest.mock('~/lib/cache'); -const Cache = require('~/lib/cache'); // TODO: // - diff against master to determine what else needs testing @@ -67,60 +62,5 @@ describe('ControlServer', () => { const newConfEventData = await newConfigEvent; expect(newConfEventData).toEqual(changedConfig); }); - - it('sends new config to clients when instructed', async () => { - const client2 = await ControlServer.Client.Create({ - address: 'localhost', - port: server.address().port, - logger - }); - const changedConfig = { ...appConfig, some: 'thing' }; - await client.send(ControlServer.build.CONFIGURATION.PATCH(appConfig, changedConfig)); - const restart = server.reconfigure({ appConfig: changedConfig }); - restart(); - await server.notifyClientsOfCurrentConfig(); - const [notification, notification2] = - await Promise.all([client.receive(), client2.receive()]); - const expected = ControlServer.build.CONFIGURATION.NOTIFY(changedConfig, notification.id); - expect(JSON.stringify(notification)).toEqual(expected); - expect(JSON.stringify(notification2)).toEqual(expected); - }); - }); -}); - -describe('Server reconfigure methods', () => { - let conf, logger, cache; - - const isPromise = (o) => Promise.resolve(o) === o; - - beforeEach(() => { - conf = JSON.parse(JSON.stringify(defaultConfig)); - logger = new Logger.Logger({ stringify: () => '' }); - cache = new Cache({ ...conf.cacheConfig, logger: logger.push({ component: 'cache' }) }); - }); - - test('InboundServer reconfigure method returns sync function', async () => { - const server = new InboundServer(conf, logger, cache); - const res = await server.reconfigure(conf, logger, cache); - expect(isPromise(res)).toEqual(false); - }); - - test('OutboundServer reconfigure method returns sync function', async () => { - const server = new OutboundServer(conf, logger, cache); - const res = await server.reconfigure(conf, logger, cache); - expect(isPromise(res)).toEqual(false); - }); - - test('TestServer reconfigure method returns sync function', async () => { - const server = new TestServer({ logger, cache }); - const res = await server.reconfigure({ logger, cache }); - expect(isPromise(res)).toEqual(false); - }); - - test('ControlServer reconfigure method returns sync function', async () => { - const server = new ControlServer.Server({ logger, appConfig: {} }); - const res = await server.reconfigure({ logger, appConfig: {} }); - expect(isPromise(res)).toEqual(false); - await server.close(); }); }); diff --git a/test/unit/api/utils.js b/test/unit/api/utils.js index 229066a1b..ec5a02e3b 100644 --- a/test/unit/api/utils.js +++ b/test/unit/api/utils.js @@ -7,7 +7,7 @@ const Validate = require('~/lib/validate'); const InboundServer = require('~/InboundServer'); const OutboundServer = require('~/OutboundServer'); const { MetricsClient } = require('~/lib/metrics'); -const { Logger } = require('@mojaloop/sdk-standard-components'); +const { Logger, WSO2Auth } = require('@mojaloop/sdk-standard-components'); const Cache = require('~/lib/cache'); /** @@ -50,11 +50,19 @@ const createTestServers = async (config) => { defConfig.requestProcessingTimeoutSeconds = 2; const metricsClient = new MetricsClient(); metricsClient._prometheusRegister.clear(); - const serverOutbound = new OutboundServer(defConfig, logger, cache, metricsClient); + const wso2 = { + auth: new WSO2Auth({ + ...defConfig.wso2.auth, + logger, + tlsCreds: defConfig.outbound.tls.mutualTLS.enabled && defConfig.outbound.tls.creds, + }), + retryWso2AuthFailureTimes: defConfig.wso2.requestAuthFailureRetryTimes, + }; + const serverOutbound = new OutboundServer(defConfig, logger, cache, metricsClient, wso2); await serverOutbound.start(); const reqOutbound = supertest(serverOutbound._server); - const serverInbound = new InboundServer(defConfig, logger, cache); + const serverInbound = new InboundServer(defConfig, logger, cache, wso2); await serverInbound.start(); const reqInbound = supertest(serverInbound._server); diff --git a/test/unit/data/defaultConfig.json b/test/unit/data/defaultConfig.json index 78ef70ad5..74bf7c48d 100644 --- a/test/unit/data/defaultConfig.json +++ b/test/unit/data/defaultConfig.json @@ -54,7 +54,6 @@ "port": 6379 }, "enableTestFeatures": false, - "testingDisableWSO2AuthStart": true, "oauthTestServer": { "enabled": false, "listenPort": 6000 diff --git a/test/unit/index.test.js b/test/unit/index.test.js index 6f86d2035..50cd92b16 100644 --- a/test/unit/index.test.js +++ b/test/unit/index.test.js @@ -17,7 +17,6 @@ jest.mock('dotenv', () => ({ const promClient = require('prom-client'); const defaultConfig = require('./data/defaultConfig.json'); const { Logger } = require('@mojaloop/sdk-standard-components'); -const { MetricsClient } = require('~/lib/metrics'); const TestControlServer = require('./ControlServer'); @@ -35,24 +34,6 @@ describe('index.js', () => { promClient.register.clear(); }); - test('WSO2 error events in OutboundServer propagate to top-level server', () => { - const logger = new Logger.Logger({ stringify: () => '' }); - const svr = new index.Server(defaultConfig, logger); - const cb = jest.fn(); - svr.on('error', cb); - svr.outboundServer._api._wso2.auth.emit('error', 'msg'); - expect(cb).toHaveBeenCalledTimes(1); - }); - - test('WSO2 error events in InboundServer propagate to top-level server', () => { - const logger = new Logger.Logger({ stringify: () => '' }); - const svr = new index.Server(defaultConfig, logger); - const cb = jest.fn(); - svr.on('error', cb); - svr.inboundServer._api._wso2.auth.emit('error', 'msg'); - expect(cb).toHaveBeenCalledTimes(1); - }); - test('Exports expected modules', () => { expect(typeof(index.Server)).toBe('function'); expect(typeof(index.InboundServerMiddleware)).toBe('object'); @@ -77,6 +58,7 @@ describe('Server', () => { conf.control.port = conf.control.mgmtAPIWsPort; controlServer = new TestControlServer.Server({ logger, appConfig: conf }); server = new index.Server(conf, logger); + server.restart = jest.fn(); await server.start(); }); @@ -95,53 +77,13 @@ describe('Server', () => { }); it('reconfigures and restarts constituent servers when triggered by control client', async () => { - const [restartInbound, restartOutbound, restartControl, restartOAuthTest, restartTest] = - Array.from({ length: 5 }).map(() => jest.fn()); - server.inboundServer.reconfigure = jest.fn(() => restartInbound); - server.outboundServer.reconfigure = jest.fn(() => restartOutbound); - server.testServer.reconfigure = jest.fn(() => restartTest); - server.oauthTestServer.reconfigure = jest.fn(() => restartOAuthTest); - server.controlClient.reconfigure = jest.fn(() => restartControl); - await controlServer.broadcastConfigChange(newConf); // We wait for the servers to get restarted await new Promise((wait) => setTimeout(wait, 1000)); - expect(server.inboundServer.reconfigure).toHaveBeenCalledTimes(1); - expect(server.inboundServer.reconfigure).toHaveBeenCalledWith( - newConf, expect.any(Logger.Logger), expect.any(index.Cache) - ); - expect(server.outboundServer.reconfigure).toHaveBeenCalledTimes(1); - const metricsClient = new MetricsClient(); - expect(server.outboundServer.reconfigure).toHaveBeenCalledWith( - newConf, expect.any(Logger.Logger), expect.any(index.Cache), metricsClient - ); - expect(server.controlClient.reconfigure).toHaveBeenCalledTimes(1); - expect(server.controlClient.reconfigure).toHaveBeenCalledWith({ - logger: expect.any(Logger.Logger), - port: newConf.control.port, - appConfig: newConf - }); - expect(server.testServer.reconfigure).toHaveBeenCalledTimes(1); - expect(server.testServer.reconfigure).toHaveBeenCalledWith({ - logger: expect.any(Logger.Logger), - cache: expect.any(index.Cache), - port: newConf.test.port - }); - expect(server.oauthTestServer.reconfigure).toHaveBeenCalledTimes(1); - expect(server.oauthTestServer.reconfigure).toHaveBeenCalledWith({ - logger: expect.any(Logger.Logger), - clientKey: newConf.oauthTestServer.clientKey, - clientSecret: newConf.oauthTestServer.clientSecret, - port: newConf.oauthTestServer.listenPort, - }); - - expect(restartInbound).toHaveBeenCalledTimes(1); - expect(restartOutbound).toHaveBeenCalledTimes(1); - expect(restartTest).toHaveBeenCalledTimes(1); - expect(restartOAuthTest).toHaveBeenCalledTimes(1); - expect(restartControl).toHaveBeenCalledTimes(1); + expect(server.restart).toHaveBeenCalledTimes(1); + expect(server.restart).toHaveBeenCalledWith(newConf); }); }); }); diff --git a/test/unit/lib/model/InboundTransfersModel.test.js b/test/unit/lib/model/InboundTransfersModel.test.js index 9e6cdc691..14e3d45c4 100644 --- a/test/unit/lib/model/InboundTransfersModel.test.js +++ b/test/unit/lib/model/InboundTransfersModel.test.js @@ -28,6 +28,8 @@ const getTransfersMojaloopResponse = require('./data/getTransfersMojaloopRespons const getBulkTransfersBackendResponse = require('./data/getBulkTransfersBackendResponse'); const getBulkTransfersMojaloopResponse = require('./data/getBulkTransfersMojaloopResponse'); const notificationToPayee = require('./data/notificationToPayee'); +const notificationAbortedToPayee = require('./data/notificationAbortedToPayee'); +const notificationReservedToPayee = require('./data/notificationReservedToPayee'); describe('inboundModel', () => { let config; @@ -759,6 +761,51 @@ describe('inboundModel', () => { expect(call[0]).toEqual(expectedRequest); expect(call[1]).toEqual(transferId); }); + + test('sends ABORTED notification to fsp backend', async () => { + BackendRequests.__putTransfersNotification = jest.fn().mockReturnValue(Promise.resolve({})); + const notif = JSON.parse(JSON.stringify(notificationAbortedToPayee)); + + const expectedRequest = { + currentState: 'ABORTED', + finalNotification: notif.data, + }; + + const model = new Model({ + ...config, + cache, + logger, + }); + + await model.sendNotificationToPayee(notif.data, transferId); + expect(BackendRequests.__putTransfersNotification).toHaveBeenCalledTimes(1); + const call = BackendRequests.__putTransfersNotification.mock.calls[0]; + expect(call[0]).toEqual(expectedRequest); + expect(call[1]).toEqual(transferId); + }); + + test('sends RESERVED notification to fsp backend', async () => { + BackendRequests.__putTransfersNotification = jest.fn().mockReturnValue(Promise.resolve({})); + const notif = JSON.parse(JSON.stringify(notificationReservedToPayee)); + + const expectedRequest = { + finalNotification: notif.data, + lastError: 'Final notification state not COMMITTED', + }; + + const model = new Model({ + ...config, + cache, + logger, + }); + + await model.sendNotificationToPayee(notif.data, transferId); + expect(BackendRequests.__putTransfersNotification).toHaveBeenCalledTimes(1); + const call = BackendRequests.__putTransfersNotification.mock.calls[0]; + expect(call[0]).toEqual(expectedRequest); + expect(call[1]).toEqual(transferId); + }); + }); describe('error handling:', () => { diff --git a/test/unit/lib/model/data/notificationAbortedToPayee.json b/test/unit/lib/model/data/notificationAbortedToPayee.json new file mode 100644 index 000000000..523f65d8c --- /dev/null +++ b/test/unit/lib/model/data/notificationAbortedToPayee.json @@ -0,0 +1,10 @@ +{ + "type": "notificationToPayee", + "headers": { + "fspiop-source": "SWITCH" + }, + "data": { + "completedTimestamp": "2017-11-15T14:16:09.663+01:00", + "transferState": "ABORTED" + } +} diff --git a/test/unit/lib/model/data/notificationReservedToPayee.json b/test/unit/lib/model/data/notificationReservedToPayee.json new file mode 100644 index 000000000..6a8d50899 --- /dev/null +++ b/test/unit/lib/model/data/notificationReservedToPayee.json @@ -0,0 +1,10 @@ +{ + "type": "notificationToPayee", + "headers": { + "fspiop-source": "SWITCH" + }, + "data": { + "completedTimestamp": "2017-11-15T14:16:09.663+01:00", + "transferState": "RESERVED" + } +} From 5d85df86df21f47c72502b0ff9507e791b627b3c Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Wed, 29 Jun 2022 16:04:02 +0300 Subject: [PATCH 02/39] Fix test cases. --- package-lock.json | 6916 +++++++---------- package.json | 38 +- src/ControlServer/index.js | 6 +- src/TestServer/index.js | 8 +- src/lib/metrics.js | 2 +- test/unit/ControlClient.test.js | 2 +- test/unit/ControlServer/index.js | 40 +- test/unit/index.test.js | 2 +- .../lib/model/OutboundTransfersModel.test.js | 2 +- 9 files changed, 2747 insertions(+), 4269 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee3ec08f8..b146eb314 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,11 +11,11 @@ "dependencies": { "@koa/cors": "^3.1.0", "@mojaloop/central-services-shared": "17.0.2", - "@mojaloop/sdk-standard-components": "^17.0.1", + "@mojaloop/sdk-standard-components": "^17.0.4", "ajv": "8.11.0", - "axios": "^0.21.4", + "axios": "^0.27.2", "co-body": "^6.1.0", - "dotenv": "^10.0.0", + "dotenv": "^16.0.1", "env-var": "^7.0.1", "express": "^4.17.2", "fast-json-patch": "^3.1.1", @@ -23,36 +23,36 @@ "js-yaml": "^4.1.0", "json-schema-ref-parser": "^9.0.9", "koa": "^2.13.1", - "koa-body": "^4.2.0", + "koa-body": "^5.0.0", "lodash": "^4.17.21", "module-alias": "^2.2.2", "oauth2-server": "^4.0.0-dev.2", - "openapi-jsonschema-parameters": "^9.3.0", - "prom-client": "^12.0.0", + "openapi-jsonschema-parameters": "^12.0.0", + "prom-client": "^14.0.1", "promise-timeout": "^1.3.0", "random-word-slugs": "^0.1.6", - "redis": "^3.1.2", + "redis": "^4.1.0", "uuidv4": "^6.2.12", - "ws": "^7.5.5" + "ws": "^8.8.0" }, "devDependencies": { "@babel/core": "^7.15.5", "@babel/preset-env": "^7.15.6", - "@mojaloop/api-snippets": "^13.0.9", + "@mojaloop/api-snippets": "^14.0.0", "@redocly/openapi-cli": "^1.0.0-beta.59", - "@types/jest": "^27.0.1", - "babel-jest": "^27.2.0", - "eslint": "^7.32.0", - "eslint-config-airbnb-base": "^14.2.1", + "@types/jest": "^28.1.3", + "babel-jest": "^28.1.1", + "eslint": "^8.18.0", + "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jest": "^24.4.0", - "jest": "^27.2.0", - "jest-junit": "^12.2.0", + "eslint-plugin-jest": "^26.5.3", + "jest": "^28.1.1", + "jest-junit": "^13.2.0", "nock": "^13.1.3", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^11.8.5", - "openapi-response-validator": "^9.3.0", - "openapi-typescript": "^4.0.2", + "npm-check-updates": "^14.0.2", + "openapi-response-validator": "^12.0.0", + "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", "standard-version": "^9.3.1", "supertest": "^6.1.6", @@ -1971,23 +1971,23 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { @@ -2006,15 +2006,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", @@ -2030,19 +2021,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2173,12 +2151,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, @@ -2249,20 +2227,20 @@ } }, "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.1.tgz", + "integrity": "sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/console/node_modules/ansi-styles": { @@ -2336,42 +2314,43 @@ } }, "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.1.tgz", + "integrity": "sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/reporters": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^28.0.2", + "jest-config": "^28.1.1", + "jest-haste-map": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.1", + "jest-resolve-dependencies": "^28.1.1", + "jest-runner": "^28.1.1", + "jest-runtime": "^28.1.1", + "jest-snapshot": "^28.1.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", + "jest-watcher": "^28.1.1", "micromatch": "^4.0.4", + "pretty-format": "^28.1.1", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2453,85 +2432,110 @@ } }, "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.1.tgz", + "integrity": "sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^28.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.1.tgz", + "integrity": "sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==", + "dev": true, + "dependencies": { + "expect": "^28.1.1", + "jest-snapshot": "^28.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.1.tgz", + "integrity": "sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.1.tgz", + "integrity": "sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^28.1.1", + "@sinonjs/fake-timers": "^9.1.1", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^28.1.1", + "jest-mock": "^28.1.1", + "jest-util": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.1.tgz", + "integrity": "sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^28.1.1", + "@jest/expect": "^28.1.1", + "@jest/types": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.1.tgz", + "integrity": "sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", + "@jridgewell/trace-mapping": "^0.3.7", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1", + "jest-worker": "^28.1.1", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "v8-to-istanbul": "^9.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2612,74 +2616,86 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", + "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.23.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", + "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.1.tgz", + "integrity": "sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/types": "^28.1.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz", + "integrity": "sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", + "@jest/test-result": "^28.1.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "jest-haste-map": "^28.1.1", + "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.1.tgz", + "integrity": "sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.1", + "@jridgewell/trace-mapping": "^0.3.7", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.1", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/transform/node_modules/ansi-styles": { @@ -2752,20 +2768,34 @@ "node": ">=8" } }, + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.1.tgz", + "integrity": "sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==", "dev": true, "dependencies": { + "@jest/schemas": "^28.0.2", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/types/node_modules/ansi-styles": { @@ -2944,82 +2974,39 @@ } }, "node_modules/@mojaloop/api-snippets": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-13.0.11.tgz", - "integrity": "sha512-rjY/WnEexmsXKY7BsyXNvD2nv8Vco6YP426cXstvUmDHNnha+xnkZL0665a4PfuT4C/ckF5D9AFi1pg7Jo+Rfw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.0.0.tgz", + "integrity": "sha512-jpJonOSFS+xPeyGn8vIhhjGhG/em1GrprED50rifawb6znfBjR2D9ISkwTOLL2lKrUN+X4fHZo4LGEZEwpHvxQ==", "dev": true, "dependencies": { - "commander": "^2.19.0", - "jest-ts-auto-mock": "^2.0.0", - "js-yaml": "^3.14.1", - "json-refs": "^3.0.12", - "openapi-types": "^7.0.1", - "openapi-typescript": "^2.4.2", - "ts-auto-mock": "^3.3.0", - "ttypescript": "^1.5.12" + "commander": "^9.2.0", + "jest-ts-auto-mock": "^2.1.0", + "js-yaml": "^4.1.0", + "json-refs": "^3.0.15", + "openapi-types": "^11.0.1", + "openapi-typescript": "^5.3.0", + "ts-auto-mock": "^3.6.2", + "ttypescript": "^1.5.13" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@mojaloop/api-snippets/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@mojaloop/api-snippets/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": "=16.x" } }, - "node_modules/@mojaloop/api-snippets/node_modules/openapi-typescript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-2.5.0.tgz", - "integrity": "sha512-Pjt7pTz9kq0ayf4j0X9FumtgkbBWTFeI/tE/NsMxHfxwKRU/9rBwnesCMAGtekJAQGOsNUMJZgzJZjNOx8IfnA==", + "node_modules/@mojaloop/api-snippets/node_modules/commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", "dev": true, - "dependencies": { - "js-yaml": "^4.0.0", - "kleur": "^4.1.3", - "meow": "^9.0.0", - "prettier": "^2.2.1" - }, - "bin": { - "openapi-typescript": "bin/cli.js" - }, "engines": { - "node": ">= 10.0.0" + "node": "^12.20.0 || >=14" } }, - "node_modules/@mojaloop/api-snippets/node_modules/openapi-typescript/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@mojaloop/api-snippets/node_modules/openapi-types": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-11.1.0.tgz", + "integrity": "sha512-ZW+Jf12flFF6DXSij8DGL3svDA4RtSyHXjC/xB/JAh18gg3uVfVIFLvCfScUMowrpvlkxsMMbErakbth2g3/iQ==", "dev": true }, - "node_modules/@mojaloop/api-snippets/node_modules/openapi-typescript/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@mojaloop/central-services-error-handling": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/@mojaloop/central-services-error-handling/-/central-services-error-handling-12.0.3.tgz", @@ -3073,18 +3060,6 @@ "node": "=16.x" } }, - "node_modules/@mojaloop/central-services-metrics/node_modules/prom-client": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", - "integrity": "sha512-HxTArb6fkOntQHoRGvv4qd/BkorjliiuO2uSWC2KC17MUTKYttWdDoXX/vxOhQdkoECEM9BBH0pj2l8G8kev6w==", - "peer": true, - "dependencies": { - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@mojaloop/central-services-shared": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-17.0.2.tgz", @@ -3140,36 +3115,6 @@ } } }, - "node_modules/@mojaloop/central-services-shared/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/@mojaloop/central-services-shared/node_modules/dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@mojaloop/central-services-shared/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@mojaloop/event-sdk": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/@mojaloop/event-sdk/-/event-sdk-11.0.2.tgz", @@ -3204,9 +3149,9 @@ } }, "node_modules/@mojaloop/sdk-standard-components": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.0.3.tgz", - "integrity": "sha512-1+MmeIWy1kimP7RPJLbnIZFpzyQXCJlXBr7r6+DO8zWb3/wklXMZNEbMy1OsF+CMea5K/VO6r5dyA6MOQpVS+g==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.0.4.tgz", + "integrity": "sha512-GZ4VosRTWNWwCvWbUQ7QDTiKSb0BJLjoME+3pPRpKQOtMj1KjVsPwOSCW3aY52D/wQ9qKFfWFq1T8oR7LomeAw==", "dependencies": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", @@ -3251,13 +3196,16 @@ } }, "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", "dev": true, "dependencies": { - "@gar/promisify": "^1.0.1", + "@gar/promisify": "^1.1.3", "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/fs/node_modules/semver": { @@ -3276,19 +3224,32 @@ } }, "node_modules/@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", + "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/@npmcli/git/node_modules/semver": { @@ -3306,6 +3267,18 @@ "node": ">=10" } }, + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", @@ -3323,43 +3296,52 @@ } }, "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, "dependencies": { "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.2.tgz", + "integrity": "sha512-fCSOS4L4yKRjX+FoWkGHugihBgUK+EjATJn6gfmZnRCt620OqRB8Mrtu/LMv7m1dMrTFVGdywsDq8wFGpyZKDA==", "dev": true, "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@protobufjs/aspromise": { @@ -3426,6 +3408,59 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", "peer": true }, + "node_modules/@redis/bloom": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.0.2.tgz", + "integrity": "sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.0.tgz", + "integrity": "sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA==", + "dependencies": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/graph": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.0.1.tgz", + "integrity": "sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.3.tgz", + "integrity": "sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.0.6.tgz", + "integrity": "sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.3.tgz", + "integrity": "sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, "node_modules/@redocly/ajv": { "version": "8.6.4", "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.4.tgz", @@ -3528,6 +3563,12 @@ "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", "dev": true }, + "node_modules/@sinclair/typebox": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", + "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -3547,9 +3588,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" @@ -3568,12 +3609,12 @@ } }, "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 10" } }, "node_modules/@tsconfig/node10": { @@ -3656,9 +3697,9 @@ } }, "node_modules/@types/formidable": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", - "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz", + "integrity": "sha512-uvMcdn/KK3maPOaVUAc3HEYbCEhjaGFwww4EsX6IJfWIJ1tzHtDHczuImH3GKdusPnAAmzB07St90uabZeCKPA==", "dependencies": { "@types/node": "*" } @@ -3707,13 +3748,13 @@ } }, "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==", "dev": true, "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "jest-matcher-utils": "^28.0.0", + "pretty-format": "^28.0.0" } }, "node_modules/@types/json-schema": { @@ -3774,9 +3815,9 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -3788,59 +3829,17 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3848,12 +3847,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3861,21 +3860,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3902,28 +3901,68 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "node_modules/@typescript-eslint/utils": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.29.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, "node_modules/abbrev": { "version": "1.1.1", @@ -3943,25 +3982,15 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/acorn-jsx": { @@ -3973,15 +4002,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/add-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", @@ -4125,15 +4145,6 @@ "string-width": "^4.1.0" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -4183,8 +4194,7 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "peer": true + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "node_modules/are-we-there-yet": { "version": "2.0.0", @@ -4280,8 +4290,7 @@ "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/ascli": { "version": "1.0.1", @@ -4293,15 +4302,6 @@ "optjs": "~3.2.2" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, "node_modules/assert-node-version": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/assert-node-version/-/assert-node-version-1.0.3.tgz", @@ -4324,24 +4324,6 @@ "semver": "bin/semver" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -4376,46 +4358,44 @@ "node": ">=12" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "follow-redirects": "^1.14.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.1.tgz", + "integrity": "sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==", "dev": true, "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^28.1.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^28.1.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "@babel/core": "^7.8.0" @@ -4517,18 +4497,18 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz", + "integrity": "sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { @@ -4594,16 +4574,16 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz", + "integrity": "sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^28.1.1", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -4638,15 +4618,6 @@ "resolved": "https://registry.npmjs.org/bath-es5/-/bath-es5-3.0.3.tgz", "integrity": "sha512-PdCioDToH3t84lP40kUFCKWCOCH389Dl1kbC8FGoqOwamxsmqxxnJSXdkTOsPoNHXjem4+sJ+bbNoQm5zeCqxg==" }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/bignumber.js": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-5.0.0.tgz", @@ -4870,12 +4841,6 @@ "integrity": "sha512-UcQusNAX7nnuXf9tvvLRC6DtZ8/YkDJRtTIbiA5ayb8MehwtSwtkvd5ZTXNLUTTtU6J/yJsi+1LJXqgRz1obwg==", "peer": true }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browserslist": { "version": "4.20.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", @@ -4926,10 +4891,28 @@ "dev": true }, "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/bytebuffer": { "version": "5.0.1", @@ -4961,32 +4944,81 @@ } }, "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", "unique-filename": "^1.1.1" }, "engines": { - "node": ">= 10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/cache-content-type": { @@ -5110,12 +5142,6 @@ } ] }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, "node_modules/center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -5310,6 +5336,14 @@ "mimic-response": "^1.0.0" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -5412,7 +5446,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "peer": true, "bin": { "color-support": "bin.js" } @@ -6284,30 +6317,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -6317,32 +6326,6 @@ "node": ">=8" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -6398,12 +6381,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -6494,14 +6471,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -6550,7 +6519,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", - "dev": true, "dependencies": { "asap": "^2.0.0", "wrappy": "1" @@ -6567,12 +6535,12 @@ } }, "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/dir-glob": { @@ -6632,27 +6600,6 @@ } ] }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -6704,11 +6651,11 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/dotgitignore": { @@ -6781,16 +6728,6 @@ "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", "dev": true }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -6820,12 +6757,12 @@ "dev": true }, "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" @@ -6878,18 +6815,6 @@ "once": "^1.4.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz", @@ -7040,132 +6965,45 @@ "node": ">=0.8.0" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -7173,28 +7011,29 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", - "object.entries": "^1.1.2" + "object.entries": "^1.1.5", + "semver": "^6.3.0" }, "engines": { - "node": ">= 6" + "node": "^10.12.0 || >=12.0.0" }, "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1" + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" } }, "node_modules/eslint-import-resolver-node": { @@ -7360,64 +7199,61 @@ "dev": true }, "node_modules/eslint-plugin-jest": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz", - "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.5.3.tgz", + "integrity": "sha512-sICclUqJQnR1bFRZGLN2jnSVsYOsmPYYnroGCIMVSvTS3y8XR3yjzy1EcTQmk6typ5pRgyIWzbjqxK6cZHEZuQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "^4.0.1" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": ">= 4", - "eslint": ">=5" + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { "optional": true + }, + "jest": { + "optional": true } } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", @@ -7426,13 +7262,13 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/ajv": { @@ -7466,15 +7302,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7521,6 +7348,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/eslint/node_modules/globals": { "version": "13.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", @@ -7545,40 +7384,12 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7604,26 +7415,17 @@ } }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esprima": { @@ -7651,15 +7453,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -7672,7 +7465,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -7681,15 +7474,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -7754,18 +7538,19 @@ } }, "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.1.tgz", + "integrity": "sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^28.1.1", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/expected-node-version": { @@ -7864,26 +7649,11 @@ } ] }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "node_modules/extensible-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/extensible-error/-/extensible-error-1.0.2.tgz", "integrity": "sha512-kXU1FiTsGT8PyMKtFM074RK/VBpzwuQJicAHqBpsPDeTXBQiSALPjkjKXlyKdG/GP6lR7bBaEkq8qdoO2geu9g==" }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7955,12 +7725,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -8098,36 +7862,29 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "node_modules/formidable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "node_modules/formidable/node_modules/qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "engines": { + "node": ">=0.6" + }, "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/forwarded": { @@ -8215,6 +7972,19 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -8273,6 +8043,14 @@ "node": ">=10" } }, + "node_modules/generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==", + "engines": { + "node": ">= 4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8409,15 +8187,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/git-raw-commits": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", @@ -8671,15 +8440,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", @@ -9050,7 +8810,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true, "engines": { "node": ">=8" } @@ -9081,18 +8840,6 @@ "node": ">=10" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -9182,12 +8929,12 @@ } }, "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "@tootallnate/once": "1", + "@tootallnate/once": "2", "agent-base": "6", "debug": "4" }, @@ -9195,21 +8942,6 @@ "node": ">= 6" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/http2-client": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", @@ -9394,21 +9126,45 @@ } }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/ilp-packet": { @@ -9834,12 +9590,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -9972,12 +9722,6 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -10071,20 +9815,21 @@ "integrity": "sha512-BwhYxQ1OPenBPXC735RgfB+ZUG8H3kjsx8hrYTgWnoy6TPipEy4fiicyhT2lxRKAXq9pG7CfFT8a2HLr6Hmwxg==" }, "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.1.tgz", + "integrity": "sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", + "@jest/core": "^28.1.1", + "@jest/types": "^28.1.1", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^28.1.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -10096,47 +9841,46 @@ } }, "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", + "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.1.tgz", + "integrity": "sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.1", + "@jest/expect": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^28.1.1", + "jest-matcher-utils": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-runtime": "^28.1.1", + "jest-snapshot": "^28.1.1", + "jest-util": "^28.1.1", + "pretty-format": "^28.1.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-circus/node_modules/ansi-styles": { @@ -10210,29 +9954,29 @@ } }, "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.1.tgz", + "integrity": "sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/types": "^28.1.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^28.1.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -10313,44 +10057,73 @@ "node": ">=8" } }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.1.tgz", + "integrity": "sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.1", + "@jest/types": "^28.1.1", + "babel-jest": "^28.1.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^28.1.1", + "jest-environment-node": "^28.1.1", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.1", + "jest-runner": "^28.1.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { + "@types/node": "*", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "ts-node": { "optional": true } @@ -10427,18 +10200,18 @@ } }, "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.1.tgz", + "integrity": "sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-diff/node_modules/ansi-styles": { @@ -10512,31 +10285,31 @@ } }, "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.1.tgz", + "integrity": "sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.1", + "pretty-format": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-each/node_modules/ansi-styles": { @@ -10609,182 +10382,65 @@ "node": ">=8" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.1.tgz", + "integrity": "sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.1", + "@jest/fake-timers": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^28.1.1", + "jest-util": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.1.tgz", + "integrity": "sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^28.1.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.1", + "jest-worker": "^28.1.1", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "optionalDependencies": { "fsevents": "^2.3.2" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-junit": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-12.3.0.tgz", - "integrity": "sha512-+NmE5ogsEjFppEl90GChrk7xgz8xzvF0f+ZT5AnhW6suJC93gvQtmQjfyjDnE0Z2nXJqEkxF0WXlvjG/J+wn/g==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", + "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", - "strip-ansi": "^5.2.0", + "strip-ansi": "^6.0.1", "uuid": "^8.3.2", "xml": "^1.0.1" }, @@ -10792,53 +10448,32 @@ "node": ">=10.12.0" } }, - "node_modules/jest-junit/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-junit/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz", + "integrity": "sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==", "dev": true, "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz", + "integrity": "sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-diff": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { @@ -10912,23 +10547,23 @@ } }, "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.1.tgz", + "integrity": "sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-message-util/node_modules/ansi-styles": { @@ -11002,16 +10637,16 @@ } }, "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.1.tgz", + "integrity": "sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/node": "*" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-pnp-resolver": { @@ -11032,47 +10667,45 @@ } }, "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.1.tgz", + "integrity": "sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^28.1.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz", + "integrity": "sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-resolve/node_modules/ansi-styles": { @@ -11146,35 +10779,35 @@ } }, "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.1.tgz", + "integrity": "sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/environment": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.10.2", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.1", + "jest-haste-map": "^28.1.1", + "jest-leak-detector": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-resolve": "^28.1.1", + "jest-runtime": "^28.1.1", + "jest-util": "^28.1.1", + "jest-watcher": "^28.1.1", + "jest-worker": "^28.1.1", + "source-map-support": "0.5.13", "throat": "^6.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-runner/node_modules/ansi-styles": { @@ -11248,36 +10881,36 @@ } }, "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.1.tgz", + "integrity": "sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.1", + "@jest/fake-timers": "^28.1.1", + "@jest/globals": "^28.1.1", + "@jest/source-map": "^28.0.2", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-mock": "^28.1.1", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.1", + "jest-snapshot": "^28.1.1", + "jest-util": "^28.1.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-runtime/node_modules/ansi-styles": { @@ -11350,50 +10983,38 @@ "node": ">=8" } }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.1.tgz", + "integrity": "sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", + "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^28.1.1", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^28.1.1", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.1", + "jest-matcher-utils": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^28.1.1", + "semver": "^7.3.5" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-snapshot/node_modules/ansi-styles": { @@ -11491,12 +11112,12 @@ } }, "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.1.tgz", + "integrity": "sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11504,7 +11125,7 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-util/node_modules/ansi-styles": { @@ -11578,20 +11199,20 @@ } }, "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.1.tgz", + "integrity": "sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^28.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-validate/node_modules/ansi-styles": { @@ -11677,21 +11298,22 @@ } }, "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.1.tgz", + "integrity": "sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.10.2", + "jest-util": "^28.1.1", "string-length": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-watcher/node_modules/ansi-styles": { @@ -11765,9 +11387,9 @@ } }, "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.1.tgz", + "integrity": "sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -11775,7 +11397,7 @@ "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-worker/node_modules/has-flag": { @@ -11843,70 +11465,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -12007,12 +11565,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "node_modules/json-schema-ref-parser": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", @@ -12152,21 +11704,6 @@ "semver": "bin/semver" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/jwa": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", @@ -12215,15 +11752,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", @@ -12258,13 +11786,13 @@ } }, "node_modules/koa-body": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", - "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-5.0.0.tgz", + "integrity": "sha512-nHwEODrQGiyKBILCWO8QSS40C87cKr2cp3y/Cw8u9Z8w5t0CdSkGm3+y9WK5BIAlPpo9tTw5RtSbxpVyG79vmw==", "dependencies": { - "@types/formidable": "^1.0.31", + "@types/formidable": "^2.0.4", "co-body": "^5.1.1", - "formidable": "^1.1.1" + "formidable": "^2.0.1" } }, "node_modules/koa-body/node_modules/co-body": { @@ -12384,64 +11912,6 @@ "node": ">= 0.8.0" } }, - "node_modules/libnpmconfig": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", - "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", - "deprecated": "This module is not used anymore. npm config is parsed by npm itself and by @npmcli/config", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - } - }, - "node_modules/libnpmconfig/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpmconfig/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpmconfig/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpmconfig/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -12594,12 +12064,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, "node_modules/logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -12668,30 +12132,39 @@ "peer": true }, "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "engines": { - "node": ">= 10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/makeerror": { @@ -12783,74 +12256,27 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" } }, "node_modules/merge-descriptors": { @@ -13017,20 +12443,20 @@ } }, "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dev": true, "dependencies": { - "minipass": "^3.1.0", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { - "encoding": "^0.1.12" + "encoding": "^0.1.13" } }, "node_modules/minipass-flush": { @@ -13266,107 +12692,74 @@ } }, "node_modules/node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", "dev": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^12.22 || ^14.13 || >=16" } }, - "node_modules/node-gyp/node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/node-gyp/node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/node-gyp/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/node-gyp/node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/node-gyp/node_modules/semver": { @@ -13384,41 +12777,6 @@ "node": ">=10" } }, - "node_modules/node-gyp/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/node-gyp/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-gyp/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -13531,45 +12889,46 @@ } }, "node_modules/npm-check-updates": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.8.5.tgz", - "integrity": "sha512-IYSHjlWe8UEugDy7X0qjBeJwcni4DlcWdBK4QQEbwgkNlEDlXyd4yQJYWFumKaJzrp/n5/EcvaboXsBD1Er/pw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-14.0.2.tgz", + "integrity": "sha512-rVetP51QHbbbcDhTBkQv+h+EEZbLx1ehPgqT6F9MH3Z23O8tS2Jb7PWusIWCM04qhp2IXu6D3u1sjagG0H7SLw==", "dev": true, "dependencies": { "chalk": "^4.1.2", "cint": "^8.2.1", - "cli-table": "^0.3.6", - "commander": "^6.2.1", + "cli-table": "^0.3.11", + "commander": "^9.3.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", "fp-and-or": "^0.1.3", "get-stdin": "^8.0.0", "globby": "^11.0.4", - "hosted-git-info": "^4.0.2", + "hosted-git-info": "^5.0.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", - "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", - "minimatch": "^3.0.4", + "minimatch": "^5.1.0", "p-map": "^4.0.0", - "pacote": "^11.3.5", + "pacote": "^13.6.0", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts": "^2.4.1", - "rc-config-loader": "^4.0.0", + "prompts": "^2.4.2", + "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.5", + "semver": "^7.3.7", "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", "spawn-please": "^1.0.0", - "update-notifier": "^5.1.0" + "update-notifier": "^5.1.0", + "yaml": "^2.1.1" }, "bin": { - "ncu": "bin/cli.js", - "npm-check-updates": "bin/cli.js" + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" }, "engines": { - "node": ">=10.17" + "node": ">=14" } }, "node_modules/npm-check-updates/node_modules/ansi-styles": { @@ -13587,6 +12946,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/npm-check-updates/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -13622,12 +12990,12 @@ "dev": true }, "node_modules/npm-check-updates/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", "dev": true, "engines": { - "node": ">= 6" + "node": "^12.20.0 || >=14" } }, "node_modules/npm-check-updates/node_modules/find-up": { @@ -13655,6 +13023,27 @@ "node": ">=8" } }, + "node_modules/npm-check-updates/node_modules/hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-check-updates/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/npm-check-updates/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -13670,6 +13059,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-check-updates/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -13715,6 +13116,16 @@ "node": ">=10" } }, + "node_modules/npm-check-updates/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/npm-check-updates/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13727,16 +13138,25 @@ "node": ">=8" } }, + "node_modules/npm-check-updates/node_modules/yaml": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", + "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, "dependencies": { "semver": "^7.1.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-install-checks/node_modules/semver": { @@ -13761,17 +13181,39 @@ "dev": true }, "node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/npm-package-arg/node_modules/semver": { @@ -13790,33 +13232,76 @@ } }, "node_modules/npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.0.tgz", + "integrity": "sha512-a04sqF6FbkyOAFA19AA0e94gS7Et5T2/IMj3VOT9nOF2RaRdVPQ1Q17Fb/HaDRFs+gbC7HOmhVZ29adpWgmDZg==", "dev": true, "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^1.1.2", "npm-normalize-package-bin": "^1.0.1" }, "bin": { "npm-packlist": "bin/index.js" }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { "node": ">=10" } }, "node_modules/npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", "dev": true, "dependencies": { - "npm-install-checks": "^4.0.0", + "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest/node_modules/semver": { @@ -13835,20 +13320,21 @@ } }, "node_modules/npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-run-path": { @@ -13894,12 +13380,6 @@ "node": ">=0.10.0" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "node_modules/oas-kit-common": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", @@ -14054,15 +13534,6 @@ "node": ">= 6" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/oauth2-server": { "version": "4.0.0-dev.3", "resolved": "https://registry.npmjs.org/oauth2-server/-/oauth2-server-4.0.0-dev.3.tgz", @@ -14091,6 +13562,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -14254,34 +13726,23 @@ "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==" }, "node_modules/openapi-jsonschema-parameters": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-jsonschema-parameters/-/openapi-jsonschema-parameters-9.3.1.tgz", - "integrity": "sha512-WeP/7nh4VAZFhtf5+FbA2HQQPD/a13+xf8uCd3QqpynSzBmcdkstb/kg8Uk4Hmqh5WlNkTGpxnjMxqSw6sHcWw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-jsonschema-parameters/-/openapi-jsonschema-parameters-12.0.0.tgz", + "integrity": "sha512-OqPabvo3qEUpgG2blD+CqAUNC+/RNYsUKEqY3vSAu2syxrabRNxtaagLhA5WdieVQPLFuOlSX13TFUu8R/+kbA==", "dependencies": { - "openapi-types": "^9.3.1" + "openapi-types": "^12.0.0" } }, - "node_modules/openapi-jsonschema-parameters/node_modules/openapi-types": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz", - "integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw==" - }, "node_modules/openapi-response-validator": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-response-validator/-/openapi-response-validator-9.3.1.tgz", - "integrity": "sha512-2AOzHAbrwdj5DNL3u+BadhfmL3mlc3mmCv6cSAsEjoMncpOOVd95JyMf0j0XUyJigJ8/ILxnhETfg35vt1pGSQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-response-validator/-/openapi-response-validator-12.0.0.tgz", + "integrity": "sha512-02zzantcJFYBeBeDJVLLNUushxMYkdM4tD9+V1BM7U/witfEc++IX0C/GRuEa1KJ/TTLvnzsXbyR/o/9DipUKg==", "dev": true, "dependencies": { "ajv": "^8.4.0", - "openapi-types": "^9.3.1" + "openapi-types": "^12.0.0" } }, - "node_modules/openapi-response-validator/node_modules/openapi-types": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz", - "integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw==", - "dev": true - }, "node_modules/openapi-sampler": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.3.0.tgz", @@ -14308,45 +13769,38 @@ "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==" }, "node_modules/openapi-types": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-7.2.3.tgz", - "integrity": "sha512-olbaNxz12R27+mTyJ/ZAFEfUruauHH27AkeQHDHRq5AF0LdNkK1SSV7EourXQDK+4aX7dv2HtyirAGK06WMAsA==", - "dev": true + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.0.tgz", + "integrity": "sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==" }, "node_modules/openapi-typescript": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-4.5.0.tgz", - "integrity": "sha512-++gWZLTKmbZP608JHMerllAs84HzULWfVjfH7otkWBLrKxUvzHMFqI6R4JSW1LoNDZnS4KKiRTZW66Fxyp6z4Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.0.tgz", + "integrity": "sha512-YUtsWQ01igvx0xRmJvtzpHsxtvnSORrGMDTXFY1zs3znljsJDvhsUe7XrKoNP2eUmiOIwBXQMoM8M5V+nEnIrw==", "dev": true, "dependencies": { - "hosted-git-info": "^3.0.8", "js-yaml": "^4.1.0", - "kleur": "^4.1.4", - "meow": "^9.0.0", "mime": "^3.0.0", - "node-fetch": "^2.6.6", - "prettier": "^2.5.1", - "slash": "^3.0.0", - "tiny-glob": "^0.2.9" + "prettier": "^2.6.2", + "tiny-glob": "^0.2.9", + "undici": "^5.4.0", + "yargs-parser": "^21.0.1" }, "bin": { "openapi-typescript": "bin/cli.js" }, "engines": { - "node": ">= 12.0.0", + "node": ">= 14.0.0", "npm": ">= 7.0.0" } }, - "node_modules/openapi-typescript/node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "node_modules/openapi-typescript/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/opn": { @@ -14492,36 +13946,38 @@ } }, "node_modules/pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", + "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", "dev": true, "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" + "ssri": "^9.0.0", + "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/parent-module": { @@ -14577,12 +14033,6 @@ "integrity": "sha512-hb50xDyEo8boMtyzB1IdVE4KcTNVbIirk/ZqC8na1irOf/70DyZS30y1FIIAUe9jyHJk9s2QoZ4aBNHR9NXHsg==", "peer": true }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", @@ -14677,12 +14127,6 @@ "through": "~2.3" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -14848,17 +14292,18 @@ } }, "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.1.tgz", + "integrity": "sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==", "dev": true, "dependencies": { + "@jest/schemas": "^28.0.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -14873,6 +14318,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -14889,9 +14343,9 @@ } }, "node_modules/prom-client": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", - "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", + "integrity": "sha512-HxTArb6fkOntQHoRGvv4qd/BkorjliiuO2uSWC2KC17MUTKYttWdDoXX/vxOhQdkoECEM9BBH0pj2l8G8kev6w==", "dependencies": { "tdigest": "^0.1.1" }, @@ -15010,12 +14464,6 @@ "node": ">= 0.10" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -15175,9 +14623,9 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "node_modules/read": { @@ -15192,6 +14640,21 @@ "node": ">=0.8" } }, + "node_modules/read-package-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", + "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/read-package-json-fast": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", @@ -15205,6 +14668,97 @@ "node": ">=10" } }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", + "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/read-package-json/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -15320,34 +14874,16 @@ } }, "node_modules/redis": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", - "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.0.tgz", + "integrity": "sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg==", "dependencies": { - "denque": "^1.5.0", - "redis-commands": "^1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-redis" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" + "@redis/bloom": "1.0.2", + "@redis/client": "1.1.0", + "@redis/graph": "1.0.1", + "@redis/json": "1.0.3", + "@redis/search": "1.0.6", + "@redis/time-series": "1.0.3" } }, "node_modules/redis-mock": { @@ -15359,17 +14895,6 @@ "node": ">=6" } }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/reftools": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", @@ -15524,84 +15049,6 @@ "node": ">=0.10" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15862,18 +15309,6 @@ "entities": "^2.0.0" } }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -16235,6 +15670,27 @@ "ws": "^7.4.2" } }, + "node_modules/simple-websocket/node_modules/ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -16250,56 +15706,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -16325,9 +15731,9 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "dependencies": { "agent-base": "^6.0.2", @@ -16347,9 +15753,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -16457,41 +15863,16 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "dependencies": { "minipass": "^3.1.1" }, "engines": { - "node": ">= 8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/stack-trace": { @@ -16849,33 +16230,6 @@ "node": ">= 6" } }, - "node_modules/superagent/node_modules/formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", - "dev": true, - "dependencies": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/superagent/node_modules/formidable/node_modules/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/superagent/node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -17133,33 +16487,11 @@ "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, "node_modules/tar": { @@ -17314,32 +16646,6 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/traceparent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/traceparent/-/traceparent-1.0.0.tgz", @@ -17425,19 +16731,6 @@ } } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ts-node/node_modules/acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", @@ -17532,24 +16825,6 @@ "typescript": ">=3.2.2" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -17663,6 +16938,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz", + "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==", + "dev": true, + "engines": { + "node": ">=12.18" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -17733,15 +17017,6 @@ "node": ">=8" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -17937,28 +17212,19 @@ "peer": true }, "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -17970,12 +17236,15 @@ } }, "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "dependencies": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/vary": { @@ -17986,41 +17255,6 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -18030,44 +17264,6 @@ "makeerror": "1.0.12" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -18617,11 +17813,11 @@ } }, "node_modules/ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -18651,18 +17847,6 @@ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -20186,19 +19370,19 @@ } }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { @@ -20214,15 +19398,6 @@ "uri-js": "^4.2.2" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "globals": { "version": "13.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", @@ -20232,16 +19407,6 @@ "type-fest": "^0.20.2" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -20361,12 +19526,12 @@ } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } @@ -20424,16 +19589,16 @@ "dev": true }, "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.1.tgz", + "integrity": "sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1", "slash": "^3.0.0" }, "dependencies": { @@ -20489,36 +19654,37 @@ } }, "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.1.tgz", + "integrity": "sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/reporters": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^28.0.2", + "jest-config": "^28.1.1", + "jest-haste-map": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.1", + "jest-resolve-dependencies": "^28.1.1", + "jest-runner": "^28.1.1", + "jest-runtime": "^28.1.1", + "jest-snapshot": "^28.1.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", + "jest-watcher": "^28.1.1", "micromatch": "^4.0.4", + "pretty-format": "^28.1.1", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" @@ -20576,73 +19742,92 @@ } }, "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.1.tgz", + "integrity": "sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==", "dev": true, "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^28.1.1" + } + }, + "@jest/expect": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.1.tgz", + "integrity": "sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==", + "dev": true, + "requires": { + "expect": "^28.1.1", + "jest-snapshot": "^28.1.1" + } + }, + "@jest/expect-utils": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.1.tgz", + "integrity": "sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2" } }, "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.1.tgz", + "integrity": "sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^28.1.1", + "@sinonjs/fake-timers": "^9.1.1", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^28.1.1", + "jest-mock": "^28.1.1", + "jest-util": "^28.1.1" } }, "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.1.tgz", + "integrity": "sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^28.1.1", + "@jest/expect": "^28.1.1", + "@jest/types": "^28.1.1" } }, "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.1.tgz", + "integrity": "sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", + "@jridgewell/trace-mapping": "^0.3.7", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1", + "jest-worker": "^28.1.1", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "v8-to-istanbul": "^9.0.0" }, "dependencies": { "ansi-styles": { @@ -20696,62 +19881,71 @@ } } }, + "@jest/schemas": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", + "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.23.3" + } + }, "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", + "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.7", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.1.tgz", + "integrity": "sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/types": "^28.1.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz", + "integrity": "sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", + "@jest/test-result": "^28.1.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "jest-haste-map": "^28.1.1", + "slash": "^3.0.0" } }, "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.1.tgz", + "integrity": "sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.1", + "@jridgewell/trace-mapping": "^0.3.7", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.1", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" }, "dependencies": { "ansi-styles": { @@ -20802,19 +19996,30 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.1.tgz", + "integrity": "sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==", "dev": true, "requires": { + "@jest/schemas": "^28.0.2", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "dependencies": { @@ -20956,68 +20161,32 @@ } }, "@mojaloop/api-snippets": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-13.0.11.tgz", - "integrity": "sha512-rjY/WnEexmsXKY7BsyXNvD2nv8Vco6YP426cXstvUmDHNnha+xnkZL0665a4PfuT4C/ckF5D9AFi1pg7Jo+Rfw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.0.0.tgz", + "integrity": "sha512-jpJonOSFS+xPeyGn8vIhhjGhG/em1GrprED50rifawb6znfBjR2D9ISkwTOLL2lKrUN+X4fHZo4LGEZEwpHvxQ==", "dev": true, "requires": { - "commander": "^2.19.0", - "jest-ts-auto-mock": "^2.0.0", - "js-yaml": "^3.14.1", - "json-refs": "^3.0.12", - "openapi-types": "^7.0.1", - "openapi-typescript": "^2.4.2", - "ts-auto-mock": "^3.3.0", - "ttypescript": "^1.5.12" + "commander": "^9.2.0", + "jest-ts-auto-mock": "^2.1.0", + "js-yaml": "^4.1.0", + "json-refs": "^3.0.15", + "openapi-types": "^11.0.1", + "openapi-typescript": "^5.3.0", + "ts-auto-mock": "^3.6.2", + "ttypescript": "^1.5.13" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true }, - "openapi-typescript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-2.5.0.tgz", - "integrity": "sha512-Pjt7pTz9kq0ayf4j0X9FumtgkbBWTFeI/tE/NsMxHfxwKRU/9rBwnesCMAGtekJAQGOsNUMJZgzJZjNOx8IfnA==", - "dev": true, - "requires": { - "js-yaml": "^4.0.0", - "kleur": "^4.1.3", - "meow": "^9.0.0", - "prettier": "^2.2.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - } - } + "openapi-types": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-11.1.0.tgz", + "integrity": "sha512-ZW+Jf12flFF6DXSij8DGL3svDA4RtSyHXjC/xB/JAh18gg3uVfVIFLvCfScUMowrpvlkxsMMbErakbth2g3/iQ==", + "dev": true } } }, @@ -21073,17 +20242,6 @@ "peer": true, "requires": { "prom-client": "14.0.1" - }, - "dependencies": { - "prom-client": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", - "integrity": "sha512-HxTArb6fkOntQHoRGvv4qd/BkorjliiuO2uSWC2KC17MUTKYttWdDoXX/vxOhQdkoECEM9BBH0pj2l8G8kev6w==", - "peer": true, - "requires": { - "tdigest": "^0.1.1" - } - } } }, "@mojaloop/central-services-shared": { @@ -21108,32 +20266,6 @@ "uuid4": "2.0.2", "widdershins": "^4.0.1", "yaml": "2.1.0" - }, - "dependencies": { - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } } }, "@mojaloop/event-sdk": { @@ -21159,9 +20291,9 @@ } }, "@mojaloop/sdk-standard-components": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.0.3.tgz", - "integrity": "sha512-1+MmeIWy1kimP7RPJLbnIZFpzyQXCJlXBr7r6+DO8zWb3/wklXMZNEbMy1OsF+CMea5K/VO6r5dyA6MOQpVS+g==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.0.4.tgz", + "integrity": "sha512-GZ4VosRTWNWwCvWbUQ7QDTiKSb0BJLjoME+3pPRpKQOtMj1KjVsPwOSCW3aY52D/wQ9qKFfWFq1T8oR7LomeAw==", "requires": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", @@ -21197,12 +20329,12 @@ } }, "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", "dev": true, "requires": { - "@gar/promisify": "^1.0.1", + "@gar/promisify": "^1.1.3", "semver": "^7.3.5" }, "dependencies": { @@ -21218,21 +20350,28 @@ } }, "@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", + "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", "dev": true, "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -21240,6 +20379,17 @@ "dev": true, "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } @@ -21255,9 +20405,9 @@ } }, "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -21265,30 +20415,30 @@ } }, "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true }, "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, "requires": { "infer-owner": "^1.0.4" } }, "@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.2.tgz", + "integrity": "sha512-fCSOS4L4yKRjX+FoWkGHugihBgUK+EjATJn6gfmZnRCt620OqRB8Mrtu/LMv7m1dMrTFVGdywsDq8wFGpyZKDA==", "dev": true, "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" } }, "@protobufjs/aspromise": { @@ -21355,6 +20505,46 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", "peer": true }, + "@redis/bloom": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.0.2.tgz", + "integrity": "sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw==", + "requires": {} + }, + "@redis/client": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.0.tgz", + "integrity": "sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA==", + "requires": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "yallist": "4.0.0" + } + }, + "@redis/graph": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.0.1.tgz", + "integrity": "sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ==", + "requires": {} + }, + "@redis/json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.3.tgz", + "integrity": "sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q==", + "requires": {} + }, + "@redis/search": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.0.6.tgz", + "integrity": "sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA==", + "requires": {} + }, + "@redis/time-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.3.tgz", + "integrity": "sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA==", + "requires": {} + }, "@redocly/ajv": { "version": "8.6.4", "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.4.tgz", @@ -21441,6 +20631,12 @@ } } }, + "@sinclair/typebox": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", + "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "dev": true + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -21457,9 +20653,9 @@ } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -21475,9 +20671,9 @@ } }, "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, "@tsconfig/node10": { @@ -21560,9 +20756,9 @@ } }, "@types/formidable": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", - "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz", + "integrity": "sha512-uvMcdn/KK3maPOaVUAc3HEYbCEhjaGFwww4EsX6IJfWIJ1tzHtDHczuImH3GKdusPnAAmzB07St90uabZeCKPA==", "requires": { "@types/node": "*" } @@ -21611,13 +20807,13 @@ } }, "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "jest-matcher-utils": "^28.0.0", + "pretty-format": "^28.0.0" } }, "@types/json-schema": { @@ -21678,9 +20874,9 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -21692,59 +20888,34 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - } - } - }, "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0" } }, "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { @@ -21759,21 +20930,47 @@ } } }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "@typescript-eslint/utils": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } } }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true + "@typescript-eslint/visitor-keys": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.29.0", + "eslint-visitor-keys": "^3.3.0" + } }, "abbrev": { "version": "1.1.1", @@ -21790,21 +20987,11 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -21812,12 +20999,6 @@ "dev": true, "requires": {} }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, "add-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", @@ -21925,12 +21106,6 @@ "string-width": "^4.1.0" } }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -21965,8 +21140,7 @@ "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "peer": true + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "are-we-there-yet": { "version": "2.0.0", @@ -22041,8 +21215,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "ascli": { "version": "1.0.1", @@ -22054,15 +21227,6 @@ "optjs": "~3.2.2" } }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, "assert-node-version": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/assert-node-version/-/assert-node-version-1.0.3.tgz", @@ -22081,18 +21245,6 @@ } } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -22126,37 +21278,37 @@ } } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } } }, "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.1.tgz", + "integrity": "sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==", "dev": true, "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^28.1.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^28.1.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -22236,14 +21388,14 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz", + "integrity": "sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, @@ -22298,12 +21450,12 @@ } }, "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz", + "integrity": "sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^28.1.1", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -22330,15 +21482,6 @@ "resolved": "https://registry.npmjs.org/bath-es5/-/bath-es5-3.0.3.tgz", "integrity": "sha512-PdCioDToH3t84lP40kUFCKWCOCH389Dl1kbC8FGoqOwamxsmqxxnJSXdkTOsPoNHXjem4+sJ+bbNoQm5zeCqxg==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "bignumber.js": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-5.0.0.tgz", @@ -22508,12 +21651,6 @@ "integrity": "sha512-UcQusNAX7nnuXf9tvvLRC6DtZ8/YkDJRtTIbiA5ayb8MehwtSwtkvd5ZTXNLUTTtU6J/yJsi+1LJXqgRz1obwg==", "peer": true }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browserslist": { "version": "4.20.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", @@ -22548,10 +21685,24 @@ "dev": true }, "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } }, "bytebuffer": { "version": "5.0.1", @@ -22576,29 +21727,68 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", "unique-filename": "^1.1.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "cache-content-type": { @@ -22684,12 +21874,6 @@ "integrity": "sha512-Sd6pjJHF27LzCB7pT7qs+kuX2ndurzCzkpJl6Qct7LPSZ9jn0bkOA8mdgMgmqnQAWLVOOGjLpc+66V57eLtb1g==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -22836,6 +22020,11 @@ "mimic-response": "^1.0.0" } }, + "cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -22923,8 +22112,7 @@ "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "peer": true + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "colorette": { "version": "1.4.0", @@ -23597,55 +22785,12 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -23683,12 +22828,6 @@ } } }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -23758,11 +22897,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -23795,7 +22929,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", - "dev": true, "requires": { "asap": "^2.0.0", "wrappy": "1" @@ -23809,9 +22942,9 @@ "peer": true }, "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true }, "dir-glob": { @@ -23856,23 +22989,6 @@ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, "domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -23906,9 +23022,9 @@ } }, "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" }, "dotgitignore": { "version": "2.1.0", @@ -23967,16 +23083,6 @@ "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -24002,9 +23108,9 @@ "dev": true }, "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", "dev": true }, "emoji-regex": { @@ -24050,15 +23156,6 @@ "once": "^1.4.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz", @@ -24173,123 +23270,49 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -24308,16 +23331,7 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" + "color-convert": "^2.0.1" } }, "chalk": { @@ -24351,6 +23365,15 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, "globals": { "version": "13.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", @@ -24366,31 +23389,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24409,14 +23413,15 @@ } }, "eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "requires": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", - "object.entries": "^1.1.2" + "object.entries": "^1.1.5", + "semver": "^6.3.0" } }, "eslint-import-resolver-node": { @@ -24558,64 +23563,56 @@ } }, "eslint-plugin-jest": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz", - "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.5.3.tgz", + "integrity": "sha512-sICclUqJQnR1bFRZGLN2jnSVsYOsmPYYnroGCIMVSvTS3y8XR3yjzy1EcTQmk6typ5pRgyIWzbjqxK6cZHEZuQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "^4.0.1" + "@typescript-eslint/utils": "^5.10.0" } }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { @@ -24631,14 +23628,6 @@ "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { @@ -24648,20 +23637,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -24713,15 +23694,16 @@ "dev": true }, "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.1.tgz", + "integrity": "sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^28.1.1", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1" } }, "expected-node-version": { @@ -24796,23 +23778,11 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extensible-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/extensible-error/-/extensible-error-1.0.2.tgz", "integrity": "sha512-kXU1FiTsGT8PyMKtFM074RK/VBpzwuQJicAHqBpsPDeTXBQiSALPjkjKXlyKdG/GP6lR7bBaEkq8qdoO2geu9g==" }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -24881,12 +23851,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -24988,28 +23952,24 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "formidable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, + "dependencies": { + "qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" + } } }, - "formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -25076,6 +24036,12 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -25122,6 +24088,11 @@ "wide-align": "^1.1.2" } }, + "generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==" + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -25224,15 +24195,6 @@ "get-intrinsic": "^1.1.1" } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "git-raw-commits": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", @@ -25412,14 +24374,6 @@ "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - } } }, "globrex": { @@ -25709,8 +24663,7 @@ "hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" }, "highlight.js": { "version": "10.7.3", @@ -25731,15 +24684,6 @@ "lru-cache": "^6.0.0" } }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -25809,27 +24753,16 @@ } }, "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "requires": { - "@tootallnate/once": "1", + "@tootallnate/once": "2", "agent-base": "6", "debug": "4" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "http2-client": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", @@ -25980,18 +24913,38 @@ } }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "ilp-packet": { @@ -26297,12 +25250,6 @@ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -26396,12 +25343,6 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -26476,49 +25417,49 @@ "integrity": "sha512-BwhYxQ1OPenBPXC735RgfB+ZUG8H3kjsx8hrYTgWnoy6TPipEy4fiicyhT2lxRKAXq9pG7CfFT8a2HLr6Hmwxg==" }, "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.1.tgz", + "integrity": "sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==", "dev": true, "requires": { - "@jest/core": "^27.5.1", + "@jest/core": "^28.1.1", + "@jest/types": "^28.1.1", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^28.1.1" } }, "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", + "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" } }, "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.1.tgz", + "integrity": "sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.1", + "@jest/expect": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^28.1.1", + "jest-matcher-utils": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-runtime": "^28.1.1", + "jest-snapshot": "^28.1.1", + "jest-util": "^28.1.1", + "pretty-format": "^28.1.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -26576,23 +25517,23 @@ } }, "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.1.tgz", + "integrity": "sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==", "dev": true, "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/types": "^28.1.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^28.1.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "dependencies": { "ansi-styles": { @@ -26643,37 +25584,56 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true } } }, "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.1.tgz", + "integrity": "sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==", "dev": true, "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.1", + "@jest/types": "^28.1.1", + "babel-jest": "^28.1.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^28.1.1", + "jest-environment-node": "^28.1.1", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.1", + "jest-runner": "^28.1.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -26730,15 +25690,15 @@ } }, "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.1.tgz", + "integrity": "sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" }, "dependencies": { "ansi-styles": { @@ -26793,25 +25753,25 @@ } }, "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.1.tgz", + "integrity": "sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.1", + "pretty-format": "^28.1.1" }, "dependencies": { "ansi-styles": { @@ -26865,187 +25825,78 @@ } } }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.1.tgz", + "integrity": "sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.1", + "@jest/fake-timers": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^28.1.1", + "jest-util": "^28.1.1" } }, "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.1.tgz", + "integrity": "sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^28.1.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.1", + "jest-worker": "^28.1.1", "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "walker": "^1.0.8" } }, "jest-junit": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-12.3.0.tgz", - "integrity": "sha512-+NmE5ogsEjFppEl90GChrk7xgz8xzvF0f+ZT5AnhW6suJC93gvQtmQjfyjDnE0Z2nXJqEkxF0WXlvjG/J+wn/g==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", + "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", "dev": true, "requires": { "mkdirp": "^1.0.4", - "strip-ansi": "^5.2.0", + "strip-ansi": "^6.0.1", "uuid": "^8.3.2", "xml": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } } }, "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz", + "integrity": "sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==", "dev": true, "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" } }, "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz", + "integrity": "sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-diff": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" }, "dependencies": { "ansi-styles": { @@ -27100,18 +25951,18 @@ } }, "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.1.tgz", + "integrity": "sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -27168,12 +26019,12 @@ } }, "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.1.tgz", + "integrity": "sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/node": "*" } }, @@ -27185,24 +26036,23 @@ "requires": {} }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", "dev": true }, "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.1.tgz", + "integrity": "sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^28.1.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^28.1.1", + "jest-validate": "^28.1.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -27260,42 +26110,41 @@ } }, "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz", + "integrity": "sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.1" } }, "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.1.tgz", + "integrity": "sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.1", + "@jest/environment": "^28.1.1", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.10.2", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.1", + "jest-haste-map": "^28.1.1", + "jest-leak-detector": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-resolve": "^28.1.1", + "jest-runtime": "^28.1.1", + "jest-util": "^28.1.1", + "jest-watcher": "^28.1.1", + "jest-worker": "^28.1.1", + "source-map-support": "0.5.13", "throat": "^6.0.1" }, "dependencies": { @@ -27351,31 +26200,31 @@ } }, "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.1.tgz", + "integrity": "sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.1", + "@jest/fake-timers": "^28.1.1", + "@jest/globals": "^28.1.1", + "@jest/source-map": "^28.0.2", + "@jest/test-result": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-mock": "^28.1.1", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.1", + "jest-snapshot": "^28.1.1", + "jest-util": "^28.1.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -27427,48 +26276,39 @@ "dev": true, "requires": { "has-flag": "^4.0.0" - } - } - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" + } + } } }, "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.1.tgz", + "integrity": "sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==", "dev": true, "requires": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.1", + "@jest/transform": "^28.1.1", + "@jest/types": "^28.1.1", + "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^28.1.1", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^28.1.1", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.1", + "jest-matcher-utils": "^28.1.1", + "jest-message-util": "^28.1.1", + "jest-util": "^28.1.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^28.1.1", + "semver": "^7.3.5" }, "dependencies": { "ansi-styles": { @@ -27539,12 +26379,12 @@ "requires": {} }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.1.tgz", + "integrity": "sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -27604,17 +26444,17 @@ } }, "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.1.tgz", + "integrity": "sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^28.1.1" }, "dependencies": { "ansi-styles": { @@ -27675,17 +26515,18 @@ } }, "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.1.tgz", + "integrity": "sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^28.1.1", + "@jest/types": "^28.1.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.10.2", + "jest-util": "^28.1.1", "string-length": "^4.0.1" }, "dependencies": { @@ -27741,9 +26582,9 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.1.tgz", + "integrity": "sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==", "dev": true, "requires": { "@types/node": "*", @@ -27798,55 +26639,6 @@ "argparse": "^2.0.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - } - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -27931,12 +26723,6 @@ } } }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "json-schema-ref-parser": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", @@ -28047,18 +26833,6 @@ } } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "jwa": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", @@ -28101,12 +26875,6 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true - }, "koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", @@ -28164,13 +26932,13 @@ } }, "koa-body": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", - "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-5.0.0.tgz", + "integrity": "sha512-nHwEODrQGiyKBILCWO8QSS40C87cKr2cp3y/Cw8u9Z8w5t0CdSkGm3+y9WK5BIAlPpo9tTw5RtSbxpVyG79vmw==", "requires": { - "@types/formidable": "^1.0.31", + "@types/formidable": "^2.0.4", "co-body": "^5.1.1", - "formidable": "^1.1.1" + "formidable": "^2.0.1" }, "dependencies": { "co-body": { @@ -28243,53 +27011,6 @@ "type-check": "~0.4.0" } }, - "libnpmconfig": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", - "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - } - } - }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -28429,12 +27150,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, "logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -28488,27 +27203,35 @@ "peer": true }, "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + } } }, "makeerror": { @@ -28602,40 +27325,6 @@ "p-is-promise": "^2.0.0" } }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -28755,15 +27444,15 @@ } }, "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dev": true, "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", + "encoding": "^0.1.13", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" } }, "minipass-flush": { @@ -28948,95 +27637,59 @@ } }, "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", "dev": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, "requires": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" } }, "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" } }, "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" } }, "semver": { @@ -29047,35 +27700,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } } } }, @@ -29168,38 +27792,39 @@ } }, "npm-check-updates": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.8.5.tgz", - "integrity": "sha512-IYSHjlWe8UEugDy7X0qjBeJwcni4DlcWdBK4QQEbwgkNlEDlXyd4yQJYWFumKaJzrp/n5/EcvaboXsBD1Er/pw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-14.0.2.tgz", + "integrity": "sha512-rVetP51QHbbbcDhTBkQv+h+EEZbLx1ehPgqT6F9MH3Z23O8tS2Jb7PWusIWCM04qhp2IXu6D3u1sjagG0H7SLw==", "dev": true, "requires": { "chalk": "^4.1.2", "cint": "^8.2.1", - "cli-table": "^0.3.6", - "commander": "^6.2.1", + "cli-table": "^0.3.11", + "commander": "^9.3.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", "fp-and-or": "^0.1.3", "get-stdin": "^8.0.0", "globby": "^11.0.4", - "hosted-git-info": "^4.0.2", + "hosted-git-info": "^5.0.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", - "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", - "minimatch": "^3.0.4", + "minimatch": "^5.1.0", "p-map": "^4.0.0", - "pacote": "^11.3.5", + "pacote": "^13.6.0", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts": "^2.4.1", - "rc-config-loader": "^4.0.0", + "prompts": "^2.4.2", + "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.5", + "semver": "^7.3.7", "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", "spawn-please": "^1.0.0", - "update-notifier": "^5.1.0" + "update-notifier": "^5.1.0", + "yaml": "^2.1.1" }, "dependencies": { "ansi-styles": { @@ -29211,6 +27836,15 @@ "color-convert": "^2.0.1" } }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -29237,9 +27871,9 @@ "dev": true }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", "dev": true }, "find-up": { @@ -29258,6 +27892,23 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + } + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -29267,6 +27918,15 @@ "p-locate": "^5.0.0" } }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -29294,6 +27954,16 @@ "lru-cache": "^6.0.0" } }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -29302,13 +27972,19 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yaml": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", + "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", + "dev": true } } }, "npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, "requires": { "semver": "^7.1.1" @@ -29332,16 +28008,34 @@ "dev": true }, "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "dependencies": { + "hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + } + } + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -29354,27 +28048,60 @@ } }, "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.0.tgz", + "integrity": "sha512-a04sqF6FbkyOAFA19AA0e94gS7Et5T2/IMj3VOT9nOF2RaRdVPQ1Q17Fb/HaDRFs+gbC7HOmhVZ29adpWgmDZg==", "dev": true, "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^1.1.2", "npm-normalize-package-bin": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", "dev": true, "requires": { - "npm-install-checks": "^4.0.0", + "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" }, "dependencies": { "semver": { @@ -29389,17 +28116,18 @@ } }, "npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", + "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", "dev": true, "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" } }, "npm-run-path": { @@ -29436,12 +28164,6 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "oas-kit-common": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", @@ -29569,12 +28291,6 @@ } } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, "oauth2-server": { "version": "4.0.0-dev.3", "resolved": "https://registry.npmjs.org/oauth2-server/-/oauth2-server-4.0.0-dev.3.tgz", @@ -29598,7 +28314,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "peer": true }, "object-inspect": { "version": "1.12.2", @@ -29722,36 +28439,21 @@ } }, "openapi-jsonschema-parameters": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-jsonschema-parameters/-/openapi-jsonschema-parameters-9.3.1.tgz", - "integrity": "sha512-WeP/7nh4VAZFhtf5+FbA2HQQPD/a13+xf8uCd3QqpynSzBmcdkstb/kg8Uk4Hmqh5WlNkTGpxnjMxqSw6sHcWw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-jsonschema-parameters/-/openapi-jsonschema-parameters-12.0.0.tgz", + "integrity": "sha512-OqPabvo3qEUpgG2blD+CqAUNC+/RNYsUKEqY3vSAu2syxrabRNxtaagLhA5WdieVQPLFuOlSX13TFUu8R/+kbA==", "requires": { - "openapi-types": "^9.3.1" - }, - "dependencies": { - "openapi-types": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz", - "integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw==" - } + "openapi-types": "^12.0.0" } }, "openapi-response-validator": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-response-validator/-/openapi-response-validator-9.3.1.tgz", - "integrity": "sha512-2AOzHAbrwdj5DNL3u+BadhfmL3mlc3mmCv6cSAsEjoMncpOOVd95JyMf0j0XUyJigJ8/ILxnhETfg35vt1pGSQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-response-validator/-/openapi-response-validator-12.0.0.tgz", + "integrity": "sha512-02zzantcJFYBeBeDJVLLNUushxMYkdM4tD9+V1BM7U/witfEc++IX0C/GRuEa1KJ/TTLvnzsXbyR/o/9DipUKg==", "dev": true, "requires": { "ajv": "^8.4.0", - "openapi-types": "^9.3.1" - }, - "dependencies": { - "openapi-types": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz", - "integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw==", - "dev": true - } + "openapi-types": "^12.0.0" } }, "openapi-sampler": { @@ -29782,36 +28484,29 @@ } }, "openapi-types": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-7.2.3.tgz", - "integrity": "sha512-olbaNxz12R27+mTyJ/ZAFEfUruauHH27AkeQHDHRq5AF0LdNkK1SSV7EourXQDK+4aX7dv2HtyirAGK06WMAsA==", - "dev": true + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.0.tgz", + "integrity": "sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==" }, "openapi-typescript": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-4.5.0.tgz", - "integrity": "sha512-++gWZLTKmbZP608JHMerllAs84HzULWfVjfH7otkWBLrKxUvzHMFqI6R4JSW1LoNDZnS4KKiRTZW66Fxyp6z4Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.0.tgz", + "integrity": "sha512-YUtsWQ01igvx0xRmJvtzpHsxtvnSORrGMDTXFY1zs3znljsJDvhsUe7XrKoNP2eUmiOIwBXQMoM8M5V+nEnIrw==", "dev": true, "requires": { - "hosted-git-info": "^3.0.8", "js-yaml": "^4.1.0", - "kleur": "^4.1.4", - "meow": "^9.0.0", "mime": "^3.0.0", - "node-fetch": "^2.6.6", - "prettier": "^2.5.1", - "slash": "^3.0.0", - "tiny-glob": "^0.2.9" + "prettier": "^2.6.2", + "tiny-glob": "^0.2.9", + "undici": "^5.4.0", + "yargs-parser": "^21.0.1" }, "dependencies": { - "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true } } }, @@ -29916,30 +28611,32 @@ } }, "pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", + "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", "dev": true, "requires": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" + "ssri": "^9.0.0", + "tar": "^6.1.11" } }, "parent-module": { @@ -29980,12 +28677,6 @@ "integrity": "sha512-hb50xDyEo8boMtyzB1IdVE4KcTNVbIirk/ZqC8na1irOf/70DyZS30y1FIIAUe9jyHJk9s2QoZ4aBNHR9NXHsg==", "peer": true }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "parse5-htmlparser2-tree-adapter": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", @@ -30061,12 +28752,6 @@ "through": "~2.3" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -30184,14 +28869,15 @@ "dev": true }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.1.tgz", + "integrity": "sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==", "dev": true, "requires": { + "@jest/schemas": "^28.0.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { @@ -30202,6 +28888,12 @@ } } }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -30215,9 +28907,9 @@ "dev": true }, "prom-client": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", - "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", + "integrity": "sha512-HxTArb6fkOntQHoRGvv4qd/BkorjliiuO2uSWC2KC17MUTKYttWdDoXX/vxOhQdkoECEM9BBH0pj2l8G8kev6w==", "requires": { "tdigest": "^0.1.1" } @@ -30314,12 +29006,6 @@ "ipaddr.js": "1.9.1" } }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -30436,9 +29122,9 @@ } }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "read": { @@ -30450,6 +29136,89 @@ "mute-stream": "~0.0.4" } }, + "read-package-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", + "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + } + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "normalize-package-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", + "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "read-package-json-fast": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", @@ -30552,40 +29321,24 @@ } }, "redis": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", - "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.0.tgz", + "integrity": "sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg==", "requires": { - "denque": "^1.5.0", - "redis-commands": "^1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0" + "@redis/bloom": "1.0.2", + "@redis/client": "1.1.0", + "@redis/graph": "1.0.1", + "@redis/json": "1.0.3", + "@redis/search": "1.0.6", + "@redis/time-series": "1.0.3" } }, - "redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" - }, "redis-mock": { "version": "0.56.3", "resolved": "https://registry.npmjs.org/redis-mock/-/redis-mock-0.56.3.tgz", "integrity": "sha512-ynaJhqk0Qf3Qajnwvy4aOjS4Mdf9IBkELWtjd+NYhpiqu4QCNq6Vf3Q7c++XRPGiKiwRj9HWr0crcwy7EiPjYQ==", "dev": true }, - "redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "requires": { - "redis-errors": "^1.0.0" - } - }, "reftools": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", @@ -30703,69 +29456,6 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -30951,15 +29641,6 @@ } } }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -31250,6 +29931,15 @@ "randombytes": "^2.1.0", "readable-stream": "^3.6.0", "ws": "^7.4.2" + }, + "dependencies": { + "ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "dev": true, + "requires": {} + } } }, "sisteransi": { @@ -31264,43 +29954,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -31318,9 +29971,9 @@ } }, "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "requires": { "agent-base": "^6.0.2", @@ -31334,9 +29987,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -31431,27 +30084,10 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -31713,26 +30349,6 @@ "mime-types": "^2.1.12" } }, - "formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", - "dev": true, - "requires": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true - } - } - }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -31931,25 +30547,6 @@ } } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, "tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -32075,26 +30672,6 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, "traceparent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/traceparent/-/traceparent-1.0.0.tgz", @@ -32148,13 +30725,6 @@ "yn": "3.1.1" }, "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "peer": true - }, "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", @@ -32229,21 +30799,6 @@ "resolve": ">=1.9.0" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -32326,6 +30881,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "undici": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz", + "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -32381,12 +30942,6 @@ "crypto-random-string": "^2.0.0" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -32539,22 +31094,14 @@ "peer": true }, "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } + "convert-source-map": "^1.6.0" } }, "validate-npm-package-license": { @@ -32568,12 +31115,12 @@ } }, "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "requires": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" } }, "vary": { @@ -32581,35 +31128,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -32619,38 +31137,6 @@ "makeerror": "1.0.12" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -33081,9 +31567,9 @@ } }, "ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "requires": {} }, "xdg-basedir": { @@ -33098,18 +31584,6 @@ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index b919dfeaf..fe64abd9c 100644 --- a/package.json +++ b/package.json @@ -55,11 +55,11 @@ "dependencies": { "@koa/cors": "^3.1.0", "@mojaloop/central-services-shared": "17.0.2", - "@mojaloop/sdk-standard-components": "^17.0.1", + "@mojaloop/sdk-standard-components": "^17.0.4", "ajv": "8.11.0", - "axios": "^0.21.4", + "axios": "^0.27.2", "co-body": "^6.1.0", - "dotenv": "^10.0.0", + "dotenv": "^16.0.1", "env-var": "^7.0.1", "express": "^4.17.2", "fast-json-patch": "^3.1.1", @@ -67,36 +67,36 @@ "js-yaml": "^4.1.0", "json-schema-ref-parser": "^9.0.9", "koa": "^2.13.1", - "koa-body": "^4.2.0", + "koa-body": "^5.0.0", "lodash": "^4.17.21", "module-alias": "^2.2.2", "oauth2-server": "^4.0.0-dev.2", - "openapi-jsonschema-parameters": "^9.3.0", - "prom-client": "^12.0.0", + "openapi-jsonschema-parameters": "^12.0.0", + "prom-client": "^14.0.1", "promise-timeout": "^1.3.0", "random-word-slugs": "^0.1.6", - "redis": "^3.1.2", + "redis": "^4.1.0", "uuidv4": "^6.2.12", - "ws": "^7.5.5" + "ws": "^8.8.0" }, "devDependencies": { "@babel/core": "^7.15.5", "@babel/preset-env": "^7.15.6", - "@mojaloop/api-snippets": "^13.0.9", + "@mojaloop/api-snippets": "^14.0.0", "@redocly/openapi-cli": "^1.0.0-beta.59", - "@types/jest": "^27.0.1", - "babel-jest": "^27.2.0", - "eslint": "^7.32.0", - "eslint-config-airbnb-base": "^14.2.1", + "@types/jest": "^28.1.3", + "babel-jest": "^28.1.1", + "eslint": "^8.18.0", + "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jest": "^24.4.0", - "jest": "^27.2.0", - "jest-junit": "^12.2.0", + "eslint-plugin-jest": "^26.5.3", + "jest": "^28.1.1", + "jest-junit": "^13.2.0", "nock": "^13.1.3", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^11.8.5", - "openapi-response-validator": "^9.3.0", - "openapi-typescript": "^4.0.2", + "npm-check-updates": "^14.0.2", + "openapi-response-validator": "^12.0.0", + "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", "standard-version": "^9.3.1", "supertest": "^6.1.6", diff --git a/src/ControlServer/index.js b/src/ControlServer/index.js index 9efd700f9..3cef99759 100644 --- a/src/ControlServer/index.js +++ b/src/ControlServer/index.js @@ -213,7 +213,11 @@ class Server extends ws.Server { // Close the server then wait for all the client sockets to close async stop() { - await new Promise(this.close.bind(this)); + const closing = new Promise(resolve => this.close(resolve)); + for (const client of this.clients) { + client.terminate(); + } + await closing; this._logger.log('Control server shutdown complete'); } diff --git a/src/TestServer/index.js b/src/TestServer/index.js index 5c08e3056..d39c62d00 100644 --- a/src/TestServer/index.js +++ b/src/TestServer/index.js @@ -83,7 +83,11 @@ class WsServer extends ws.Server { // Close the server then wait for all the client sockets to close async stop() { - await new Promise(resolve => this.close(resolve)); + const closing = new Promise(resolve => this.close(resolve)); + for (const client of this.clients) { + client.terminate(); + } + await closing; // If we don't wait for all clients to close before shutting down, the socket close // handlers will be called after we return from this function, resulting in behaviour // occurring after the server tells the user it has shutdown. @@ -200,7 +204,7 @@ class TestServer { async stop() { if (this._wsapi) { this._logger.log('Shutting down websocket server'); - this._wsapi.stop(); + await this._wsapi.stop(); this._wsapi = null; } if (this._server) { diff --git a/src/lib/metrics.js b/src/lib/metrics.js index f8c99354c..425b99e6c 100644 --- a/src/lib/metrics.js +++ b/src/lib/metrics.js @@ -134,7 +134,7 @@ class MetricsServer { this._logger.log('Metrics request received'); ctx.response.set('Content-Type', this._prometheusRegister.contentType); - ctx.response.body = this._prometheusRegister.metrics(); + ctx.response.body = await this._prometheusRegister.metrics(); }); return result; diff --git a/test/unit/ControlClient.test.js b/test/unit/ControlClient.test.js index ac033ba50..9badaa5af 100644 --- a/test/unit/ControlClient.test.js +++ b/test/unit/ControlClient.test.js @@ -61,7 +61,7 @@ describe('ControlAgent', () => { const newConfigEvent = new Promise( (resolve) => client.on(ControlAgent.EVENT.RECONFIGURE, resolve) ); - await server.broadcastConfigChange(changedConfig); + server.broadcastConfigChange(changedConfig); const newConfEventData = await newConfigEvent; expect(newConfEventData).toEqual(changedConfig); }); diff --git a/test/unit/ControlServer/index.js b/test/unit/ControlServer/index.js index 870a4ec74..03eaf9f4d 100644 --- a/test/unit/ControlServer/index.js +++ b/test/unit/ControlServer/index.js @@ -139,7 +139,11 @@ class Server extends ws.Server { // Close the server then wait for all the client sockets to close async stop() { - await new Promise(this.close.bind(this)); + const closing = new Promise(resolve => this.close(resolve)); + for (const client of this.clients) { + client.terminate(); + } + await closing; this._logger.log('Control server shutdown complete'); } @@ -186,9 +190,7 @@ class Server extends ws.Server { * from other modules. */ registerInternalEvents() { - ControlServerEventEmitter.on(INTERNAL_EVENTS.SERVER.BROADCAST_CONFIG_CHANGE, (params) => { - this.broadcastConfigChange(params); - }); + ControlServerEventEmitter.on(INTERNAL_EVENTS.SERVER.BROADCAST_CONFIG_CHANGE, (params) => this.broadcastConfigChange(params)); } /** @@ -196,28 +198,22 @@ class Server extends ws.Server { * * @param {object} params Updated configuration */ - async broadcastConfigChange(updatedConfig) { + broadcastConfigChange(updatedConfig) { const updateConfMsg = build.CONFIGURATION.PATCH({}, updatedConfig, generateSlug(4)); - const errorLogger = (socket, message) => (err) => - this._logger - .push({ message, ip: this._clientData.get(socket).ip, err }) - .log('Error sending JWS keys notification to client'); - return await this.broadcast(updateConfMsg, errorLogger); + this.broadcast(updateConfMsg); } /** - * Broadcasts a protocol message to all connected clients. - * - * @param {string} msg - * @param {object} errorLogger - */ - async broadcast(msg, errorLogger) { - const sendToAllClients = (msg, errorLogger) => Promise.all( - [...this.clients.values()].map((socket) => - (new Promise((resolve) => socket.send(msg, resolve))).catch(errorLogger(socket, msg)) - ) - ); - return await sendToAllClients(msg, errorLogger); + * Broadcasts a protocol message to all connected clients. + * + * @param {string} msg + */ + broadcast(msg) { + this.clients.forEach((client) => { + if (client.readyState === ws.WebSocket.OPEN) { + client.send(msg); + } + }); } } diff --git a/test/unit/index.test.js b/test/unit/index.test.js index 50cd92b16..b59f451c1 100644 --- a/test/unit/index.test.js +++ b/test/unit/index.test.js @@ -77,7 +77,7 @@ describe('Server', () => { }); it('reconfigures and restarts constituent servers when triggered by control client', async () => { - await controlServer.broadcastConfigChange(newConf); + controlServer.broadcastConfigChange(newConf); // We wait for the servers to get restarted await new Promise((wait) => setTimeout(wait, 1000)); diff --git a/test/unit/lib/model/OutboundTransfersModel.test.js b/test/unit/lib/model/OutboundTransfersModel.test.js index 8986554d5..b3349ab7d 100644 --- a/test/unit/lib/model/OutboundTransfersModel.test.js +++ b/test/unit/lib/model/OutboundTransfersModel.test.js @@ -1526,7 +1526,7 @@ describe('outboundModel', () => { testTlsServer(false)); test('Outbound transfers model should record metrics', async () => { - const metrics = metricsClient._prometheusRegister.metrics(); + const metrics = await metricsClient._prometheusRegister.metrics(); expect(metrics).toBeTruthy(); expect(metrics).toEqual(expect.stringContaining('mojaloop_connector_outbound_party_lookup_request_count')); From b99fb365a2f06b463db96ecaab48de69003a3ed3 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Thu, 30 Jun 2022 11:30:36 +0300 Subject: [PATCH 03/39] fix lint errors. --- src/OutboundServer/index.js | 1 - src/lib/model/OutboundTransfersModel.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OutboundServer/index.js b/src/OutboundServer/index.js index d3294ff0d..23571fa98 100644 --- a/src/OutboundServer/index.js +++ b/src/OutboundServer/index.js @@ -16,7 +16,6 @@ const yaml = require('js-yaml'); const fs = require('fs'); const path = require('path'); const EventEmitter = require('events'); -const cors = require('@koa/cors'); const Validate = require('../lib/validate'); const router = require('../lib/router'); diff --git a/src/lib/model/OutboundTransfersModel.js b/src/lib/model/OutboundTransfersModel.js index 607c640af..075ed4333 100644 --- a/src/lib/model/OutboundTransfersModel.js +++ b/src/lib/model/OutboundTransfersModel.js @@ -163,7 +163,7 @@ class OutboundTransfersModel { if(!this.data.hasOwnProperty('direction')) { this.data.direction = 'OUTBOUND'; } - if(this.data.skipPartyLookup && typeof(this.data.to.fspId) === undefined) { + if(this.data.skipPartyLookup && !this.data.to.fspId) { throw new Error('fspId of to party must be specific id when skipPartyLookup is truthy'); } From 621b0d9f891992df9202b3624858b8c52aad3eef Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Thu, 30 Jun 2022 13:40:10 +0300 Subject: [PATCH 04/39] Update src/InboundServer/index.js Co-authored-by: Kevin Leyow --- src/InboundServer/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/InboundServer/index.js b/src/InboundServer/index.js index a25142665..fe50e0825 100644 --- a/src/InboundServer/index.js +++ b/src/InboundServer/index.js @@ -30,6 +30,9 @@ class InboundApi extends EventEmitter { this._cache = cache; if (conf.validateInboundJws) { + // peerJWSKey is a special config option specifically for Payment Manager for Mojaloop + // that is populated by a management api. + // This map supersedes local keys that would be loaded in by jwsVerificationKeysDirectory. this._jwsVerificationKeys = conf.pm4mlEnabled ? conf.peerJWSKeys : InboundApi._GetJwsKeys(conf.jwsVerificationKeysDirectory); } this._api = InboundApi._SetupApi({ From 0b46b78845398b4fad0b735a786f57fe0619829b Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Thu, 30 Jun 2022 16:43:38 +0300 Subject: [PATCH 05/39] fix audit errors. --- audit-resolve.json | 79 ++++++++++++++++++++++++++++++++++++++++------ package-lock.json | 4 +-- package.json | 2 +- 3 files changed, 73 insertions(+), 12 deletions(-) diff --git a/audit-resolve.json b/audit-resolve.json index 9fbf5713a..274f05a15 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -486,14 +486,12 @@ "expiresAt": 1653664079920 }, "1067553|swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1654209013381, - "expiresAt": 1656800991863 + "decision": "postpone", + "madeAt": 1656596524528 }, "1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { - "decision": "ignore", - "madeAt": 1654209015474, - "expiresAt": 1656800991863 + "decision": "postpone", + "madeAt": 1656596525090 }, "1068310|widdershins>markdown-it>yargs>yargs-parser": { "decision": "ignore", @@ -576,9 +574,8 @@ "expiresAt": 1656800991863 }, "1070412|ejs": { - "decision": "ignore", - "madeAt": 1654209011201, - "expiresAt": 1656800991863 + "decision": "postpone", + "madeAt": 1656596500726 }, "1070483|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { "decision": "ignore", @@ -594,6 +591,70 @@ "decision": "ignore", "madeAt": 1654872423852, "expiresAt": 1657464405390 + }, + "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { + "decision": "postpone", + "madeAt": 1656596498420 + }, + "1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { + "decision": "postpone", + "madeAt": 1656596499491 + }, + "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": { + "decision": "postpone", + "madeAt": 1656596500726 + }, + "1070412|shins>ejs": { + "decision": "postpone", + "madeAt": 1656596500726 + }, + "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": { + "decision": "postpone", + "madeAt": 1656596501402 + }, + "1070030|shins>ejs>markdown-it": { + "decision": "postpone", + "madeAt": 1656596501402 + }, + "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { + "decision": "postpone", + "madeAt": 1656596501969 + }, + "1068155|shins>ejs>markdown-it>sanitize-html": { + "decision": "postpone", + "madeAt": 1656596501969 + }, + "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { + "decision": "postpone", + "madeAt": 1656596502516 + }, + "1070260|shins>ejs>markdown-it>sanitize-html": { + "decision": "postpone", + "madeAt": 1656596502517 + }, + "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { + "decision": "postpone", + "madeAt": 1656596524528 + }, + "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": { + "decision": "postpone", + "madeAt": 1656596525090 + }, + "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": { + "decision": "postpone", + "madeAt": 1656596525465 + }, + "1067553|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer": { + "decision": "postpone", + "madeAt": 1656596524528 + }, + "1067946|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { + "decision": "postpone", + "madeAt": 1656596525090 + }, + "1068310|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": { + "decision": "postpone", + "madeAt": 1656596525465 } }, "rules": {}, diff --git a/package-lock.json b/package-lock.json index b146eb314..ef058937a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.0", + "version": "15.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.0", + "version": "15.1.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index fe64abd9c..22ad5ae46 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.0", + "version": "15.1.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 390e226d530ac4387c65854d1d9d0b7c131e011a Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Thu, 30 Jun 2022 16:49:08 +0300 Subject: [PATCH 06/39] bump packages. --- package-lock.json | 4148 +++++++++++++++++++++++++-------------------- package.json | 12 +- 2 files changed, 2297 insertions(+), 1863 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef058937a..7451b1add 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,21 +36,21 @@ "ws": "^8.8.0" }, "devDependencies": { - "@babel/core": "^7.15.5", - "@babel/preset-env": "^7.15.6", + "@babel/core": "^7.18.6", + "@babel/preset-env": "^7.18.6", "@mojaloop/api-snippets": "^14.0.0", "@redocly/openapi-cli": "^1.0.0-beta.59", "@types/jest": "^28.1.3", - "babel-jest": "^28.1.1", + "babel-jest": "^28.1.2", "eslint": "^8.18.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-jest": "^26.5.3", - "jest": "^28.1.1", - "jest-junit": "^13.2.0", + "jest": "^28.1.2", + "jest-junit": "^14.0.0", "nock": "^13.1.3", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^14.0.2", + "npm-check-updates": "^15.0.0", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", @@ -316,41 +316,41 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", - "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", + "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", - "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", + "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.5", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.5", - "@babel/types": "^7.18.4", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helpers": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -366,13 +366,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "dependencies": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, "engines": { @@ -380,12 +380,12 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.0", + "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" }, @@ -394,38 +394,38 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", + "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", + "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", + "@babel/compat-data": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" }, @@ -437,18 +437,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", - "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", + "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -458,13 +458,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", - "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" }, "engines": { "node": ">=6.9.0" @@ -493,233 +493,237 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", + "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", + "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", + "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", + "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", + "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-wrap-function": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", - "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", + "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", - "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.2" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", + "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", + "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", + "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -728,9 +732,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", - "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", + "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -740,12 +744,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", - "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -755,14 +759,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", - "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", + "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -772,13 +776,14 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", - "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", + "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -789,13 +794,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", - "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -805,13 +810,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", - "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -822,12 +827,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -838,12 +843,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", - "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", + "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -854,12 +859,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", - "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -870,12 +875,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", - "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", + "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -886,12 +891,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", - "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -902,12 +907,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -918,16 +923,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", - "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", + "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.17.12" + "@babel/plugin-transform-parameters": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -937,12 +942,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -953,13 +958,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", - "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", + "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -970,13 +975,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", - "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -986,14 +991,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", - "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1004,13 +1009,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", - "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=4" @@ -1095,12 +1100,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", - "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1236,12 +1241,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", - "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1251,12 +1256,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", - "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1266,14 +1271,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", - "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1283,12 +1288,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1298,12 +1303,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", - "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", + "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1313,18 +1318,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", - "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", + "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, "engines": { @@ -1335,12 +1340,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", - "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", + "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1350,12 +1355,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", - "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", + "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1365,13 +1370,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1381,12 +1386,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", - "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", + "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1396,13 +1401,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1412,12 +1417,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", - "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", + "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1427,14 +1432,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", + "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1444,12 +1449,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", - "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", + "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1459,12 +1464,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1474,13 +1479,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", - "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1491,14 +1496,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", - "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1509,15 +1514,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", - "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", + "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1528,13 +1533,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", - "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1544,13 +1549,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", - "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1560,12 +1565,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", - "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1575,13 +1580,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1591,12 +1596,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", - "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", + "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1606,12 +1611,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1621,12 +1626,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", - "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" }, "engines": { @@ -1637,12 +1642,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", - "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1652,12 +1657,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1667,13 +1672,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", - "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", + "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1683,12 +1688,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1698,12 +1703,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", - "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", + "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1713,12 +1718,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", - "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", + "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1728,12 +1733,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", + "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1743,13 +1748,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1759,38 +1764,38 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", - "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-async-generator-functions": "^7.17.12", - "@babel/plugin-proposal-class-properties": "^7.17.12", - "@babel/plugin-proposal-class-static-block": "^7.18.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.17.12", - "@babel/plugin-proposal-json-strings": "^7.17.12", - "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.18.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-private-methods": "^7.17.12", - "@babel/plugin-proposal-private-property-in-object": "^7.17.12", - "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", + "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-import-assertions": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1800,43 +1805,43 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.17.12", - "@babel/plugin-transform-async-to-generator": "^7.17.12", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.17.12", - "@babel/plugin-transform-classes": "^7.17.12", - "@babel/plugin-transform-computed-properties": "^7.17.12", - "@babel/plugin-transform-destructuring": "^7.18.0", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.17.12", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.18.1", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.17.12", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.18.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.2", - "@babel/plugin-transform-modules-systemjs": "^7.18.0", - "@babel/plugin-transform-modules-umd": "^7.18.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", - "@babel/plugin-transform-new-target": "^7.17.12", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.17.12", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.18.0", - "@babel/plugin-transform-reserved-words": "^7.17.12", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.17.12", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.18.2", - "@babel/plugin-transform-typeof-symbol": "^7.17.12", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.6", + "@babel/plugin-transform-classes": "^7.18.6", + "@babel/plugin-transform-computed-properties": "^7.18.6", + "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.6", + "@babel/plugin-transform-function-name": "^7.18.6", + "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.6", + "@babel/plugin-transform-typeof-symbol": "^7.18.6", + "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.2", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", + "@babel/types": "^7.18.6", + "babel-plugin-polyfill-corejs2": "^0.3.1", + "babel-plugin-polyfill-corejs3": "^0.5.2", + "babel-plugin-polyfill-regenerator": "^0.3.1", "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, @@ -1875,33 +1880,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", - "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.5", - "@babel/types": "^7.18.4", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", + "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1910,12 +1915,12 @@ } }, "node_modules/@babel/types": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", - "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", + "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2314,15 +2319,15 @@ } }, "node_modules/@jest/core": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.1.tgz", - "integrity": "sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.2.tgz", + "integrity": "sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ==", "dev": true, "dependencies": { "@jest/console": "^28.1.1", - "@jest/reporters": "^28.1.1", + "@jest/reporters": "^28.1.2", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -2331,15 +2336,15 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^28.0.2", - "jest-config": "^28.1.1", + "jest-config": "^28.1.2", "jest-haste-map": "^28.1.1", "jest-message-util": "^28.1.1", "jest-regex-util": "^28.0.2", "jest-resolve": "^28.1.1", - "jest-resolve-dependencies": "^28.1.1", - "jest-runner": "^28.1.1", - "jest-runtime": "^28.1.1", - "jest-snapshot": "^28.1.1", + "jest-resolve-dependencies": "^28.1.2", + "jest-runner": "^28.1.2", + "jest-runtime": "^28.1.2", + "jest-snapshot": "^28.1.2", "jest-util": "^28.1.1", "jest-validate": "^28.1.1", "jest-watcher": "^28.1.1", @@ -2432,12 +2437,12 @@ } }, "node_modules/@jest/environment": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.1.tgz", - "integrity": "sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.2.tgz", + "integrity": "sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q==", "dev": true, "dependencies": { - "@jest/fake-timers": "^28.1.1", + "@jest/fake-timers": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "jest-mock": "^28.1.1" @@ -2447,13 +2452,13 @@ } }, "node_modules/@jest/expect": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.1.tgz", - "integrity": "sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.2.tgz", + "integrity": "sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw==", "dev": true, "dependencies": { "expect": "^28.1.1", - "jest-snapshot": "^28.1.1" + "jest-snapshot": "^28.1.2" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -2472,13 +2477,13 @@ } }, "node_modules/@jest/fake-timers": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.1.tgz", - "integrity": "sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.2.tgz", + "integrity": "sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg==", "dev": true, "dependencies": { "@jest/types": "^28.1.1", - "@sinonjs/fake-timers": "^9.1.1", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", "jest-message-util": "^28.1.1", "jest-mock": "^28.1.1", @@ -2489,13 +2494,13 @@ } }, "node_modules/@jest/globals": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.1.tgz", - "integrity": "sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.2.tgz", + "integrity": "sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.1", - "@jest/expect": "^28.1.1", + "@jest/environment": "^28.1.2", + "@jest/expect": "^28.1.2", "@jest/types": "^28.1.1" }, "engines": { @@ -2503,17 +2508,17 @@ } }, "node_modules/@jest/reporters": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.1.tgz", - "integrity": "sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.2.tgz", + "integrity": "sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^28.1.1", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.13", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -2532,7 +2537,7 @@ "string-length": "^4.0.1", "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.0" + "v8-to-istanbul": "^9.0.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -2629,12 +2634,12 @@ } }, "node_modules/@jest/source-map": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", - "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.13", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" }, @@ -2673,14 +2678,14 @@ } }, "node_modules/@jest/transform": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.1.tgz", - "integrity": "sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.2.tgz", + "integrity": "sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^28.1.1", - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.13", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", @@ -2768,19 +2773,6 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, "node_modules/@jest/types": { "version": "28.1.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.1.tgz", @@ -3344,6 +3336,31 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", + "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/npm-conf": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.4.tgz", + "integrity": "sha512-o5YFq/+ksEJMbSzzkaQDHlp00aonLDU5xNPVTRL12hTWBbVSSeWXxPukq75h+mvXnoOWT95vV2u1HSTw2C4XOw==", + "dev": true, + "dependencies": { + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -3570,12 +3587,15 @@ "dev": true }, "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "node_modules/@sinonjs/commons": { @@ -3597,15 +3617,15 @@ } }, "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, "dependencies": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=14.16" } }, "node_modules/@tootallnate/once": { @@ -3696,6 +3716,18 @@ "@types/node": "*" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "node_modules/@types/formidable": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz", @@ -3723,6 +3755,12 @@ "@types/node": "*" } }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3757,6 +3795,12 @@ "pretty-format": "^28.0.0" } }, + "node_modules/@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -3768,6 +3812,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", @@ -3803,6 +3856,15 @@ "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", "dev": true }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -4381,12 +4443,12 @@ } }, "node_modules/babel-jest": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.1.tgz", - "integrity": "sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.2.tgz", + "integrity": "sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q==", "dev": true, "dependencies": { - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^28.1.1", @@ -4700,121 +4762,142 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", + "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", "dev": true, "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/boxen/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", + "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.14.0.tgz", + "integrity": "sha512-hQnTQkFjL5ik6HF2fTAM8ycbr94UbQXK364wF930VHb0dfBJ5JBP8qwrR8TaK9zwUEk7meruo2JAUDMwvuxd/w==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5033,19 +5116,28 @@ "node": ">= 6.0.0" } }, + "node_modules/cacheable-lookup": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", + "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", "dev": true, "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "engines": { "node": ">=8" @@ -5286,12 +5378,12 @@ } }, "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5515,6 +5607,19 @@ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, + "node_modules/compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5584,21 +5689,60 @@ "typedarray": "^0.0.6" } }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/configstore/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/configstore/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "node_modules/confusing-browser-globals": { @@ -6283,12 +6427,30 @@ } }, "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/css-select": { @@ -6382,15 +6544,30 @@ } }, "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "dependencies": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dedent": { @@ -6437,10 +6614,13 @@ } }, "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/define-properties": { "version": "1.1.4", @@ -6722,10 +6902,10 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, "node_modules/ecdsa-sig-formatter": { @@ -6944,12 +7124,15 @@ } }, "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escape-html": { @@ -7862,6 +8045,12 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, + "node_modules/form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", + "dev": true + }, "node_modules/formidable": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", @@ -8447,37 +8636,30 @@ "dev": true }, "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", "dev": true, "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" + "node": ">=14.16" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/graceful-fs": { @@ -8798,12 +8980,15 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/hexoid": { @@ -8947,6 +9132,31 @@ "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==" }, + "node_modules/http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -9217,12 +9427,12 @@ } }, "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/import-local": { @@ -9395,23 +9605,17 @@ } }, "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "dependencies": { - "ci-info": "^2.0.0" + "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" } }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "node_modules/is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", @@ -9529,12 +9733,12 @@ } }, "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9706,10 +9910,13 @@ } }, "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", + "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/isarray": { "version": "1.0.0", @@ -9815,15 +10022,15 @@ "integrity": "sha512-BwhYxQ1OPenBPXC735RgfB+ZUG8H3kjsx8hrYTgWnoy6TPipEy4fiicyhT2lxRKAXq9pG7CfFT8a2HLr6Hmwxg==" }, "node_modules/jest": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.1.tgz", - "integrity": "sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.2.tgz", + "integrity": "sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg==", "dev": true, "dependencies": { - "@jest/core": "^28.1.1", + "@jest/core": "^28.1.2", "@jest/types": "^28.1.1", "import-local": "^3.0.2", - "jest-cli": "^28.1.1" + "jest-cli": "^28.1.2" }, "bin": { "jest": "bin/jest.js" @@ -9854,13 +10061,13 @@ } }, "node_modules/jest-circus": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.1.tgz", - "integrity": "sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.2.tgz", + "integrity": "sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.1", - "@jest/expect": "^28.1.1", + "@jest/environment": "^28.1.2", + "@jest/expect": "^28.1.2", "@jest/test-result": "^28.1.1", "@jest/types": "^28.1.1", "@types/node": "*", @@ -9871,8 +10078,8 @@ "jest-each": "^28.1.1", "jest-matcher-utils": "^28.1.1", "jest-message-util": "^28.1.1", - "jest-runtime": "^28.1.1", - "jest-snapshot": "^28.1.1", + "jest-runtime": "^28.1.2", + "jest-snapshot": "^28.1.2", "jest-util": "^28.1.1", "pretty-format": "^28.1.1", "slash": "^3.0.0", @@ -9954,19 +10161,19 @@ } }, "node_modules/jest-cli": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.1.tgz", - "integrity": "sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.2.tgz", + "integrity": "sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw==", "dev": true, "dependencies": { - "@jest/core": "^28.1.1", + "@jest/core": "^28.1.2", "@jest/test-result": "^28.1.1", "@jest/types": "^28.1.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^28.1.1", + "jest-config": "^28.1.2", "jest-util": "^28.1.1", "jest-validate": "^28.1.1", "prompts": "^2.0.1", @@ -10085,26 +10292,26 @@ } }, "node_modules/jest-config": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.1.tgz", - "integrity": "sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.2.tgz", + "integrity": "sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^28.1.1", "@jest/types": "^28.1.1", - "babel-jest": "^28.1.1", + "babel-jest": "^28.1.2", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.1", - "jest-environment-node": "^28.1.1", + "jest-circus": "^28.1.2", + "jest-environment-node": "^28.1.2", "jest-get-type": "^28.0.2", "jest-regex-util": "^28.0.2", "jest-resolve": "^28.1.1", - "jest-runner": "^28.1.1", + "jest-runner": "^28.1.2", "jest-util": "^28.1.1", "jest-validate": "^28.1.1", "micromatch": "^4.0.4", @@ -10383,13 +10590,13 @@ } }, "node_modules/jest-environment-node": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.1.tgz", - "integrity": "sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.2.tgz", + "integrity": "sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.1", - "@jest/fake-timers": "^28.1.1", + "@jest/environment": "^28.1.2", + "@jest/fake-timers": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "jest-mock": "^28.1.1", @@ -10434,9 +10641,9 @@ } }, "node_modules/jest-junit": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", - "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-14.0.0.tgz", + "integrity": "sha512-kALvBDegstTROfDGXH71UGD7k5g7593Y1wuX1wpWT+QTYcBbmtuGOA8UlAt56zo/B2eMIOcaOVEON3j0VXVa4g==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -10696,13 +10903,13 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz", - "integrity": "sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz", + "integrity": "sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg==", "dev": true, "dependencies": { "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.1" + "jest-snapshot": "^28.1.2" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10779,27 +10986,27 @@ } }, "node_modules/jest-runner": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.1.tgz", - "integrity": "sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.2.tgz", + "integrity": "sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A==", "dev": true, "dependencies": { "@jest/console": "^28.1.1", - "@jest/environment": "^28.1.1", + "@jest/environment": "^28.1.2", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.10.2", "graceful-fs": "^4.2.9", "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.1", + "jest-environment-node": "^28.1.2", "jest-haste-map": "^28.1.1", "jest-leak-detector": "^28.1.1", "jest-message-util": "^28.1.1", "jest-resolve": "^28.1.1", - "jest-runtime": "^28.1.1", + "jest-runtime": "^28.1.2", "jest-util": "^28.1.1", "jest-watcher": "^28.1.1", "jest-worker": "^28.1.1", @@ -10881,17 +11088,17 @@ } }, "node_modules/jest-runtime": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.1.tgz", - "integrity": "sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.2.tgz", + "integrity": "sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.1", - "@jest/fake-timers": "^28.1.1", - "@jest/globals": "^28.1.1", - "@jest/source-map": "^28.0.2", + "@jest/environment": "^28.1.2", + "@jest/fake-timers": "^28.1.2", + "@jest/globals": "^28.1.2", + "@jest/source-map": "^28.1.2", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -10904,7 +11111,7 @@ "jest-mock": "^28.1.1", "jest-regex-util": "^28.0.2", "jest-resolve": "^28.1.1", - "jest-snapshot": "^28.1.1", + "jest-snapshot": "^28.1.2", "jest-util": "^28.1.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" @@ -10984,9 +11191,9 @@ } }, "node_modules/jest-snapshot": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.1.tgz", - "integrity": "sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.2.tgz", + "integrity": "sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -10995,7 +11202,7 @@ "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", "@jest/expect-utils": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", @@ -11478,9 +11685,9 @@ } }, "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "node_modules/json-parse-better-errors": { @@ -11735,12 +11942,13 @@ } }, "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.2.tgz", + "integrity": "sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==", "dev": true, "dependencies": { - "json-buffer": "3.0.0" + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" } }, "node_modules/kind-of": { @@ -11752,6 +11960,15 @@ "node": ">=0.10.0" } }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", @@ -11860,15 +12077,18 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, "dependencies": { - "package-json": "^6.3.0" + "package-json": "^8.1.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lazy-cache": { @@ -12091,12 +12311,15 @@ } }, "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lru-cache": { @@ -12850,12 +13073,15 @@ } }, "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm-audit-resolver": { @@ -12889,9 +13115,9 @@ } }, "node_modules/npm-check-updates": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-14.0.2.tgz", - "integrity": "sha512-rVetP51QHbbbcDhTBkQv+h+EEZbLx1ehPgqT6F9MH3Z23O8tS2Jb7PWusIWCM04qhp2IXu6D3u1sjagG0H7SLw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.0.tgz", + "integrity": "sha512-m1bvBaZO0fa+rnBvVmKYjmBA4iECWArc/sO28xyghflCq95w5zg3NdM6JPWeCB3v8uezp+owLdO4SQfHW6X6zA==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -12909,10 +13135,10 @@ "lodash": "^4.17.21", "minimatch": "^5.1.0", "p-map": "^4.0.0", - "pacote": "^13.6.0", + "pacote": "^13.6.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts": "^2.4.2", + "prompts-ncu": "^2.5.0", "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", @@ -12920,7 +13146,7 @@ "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^1.0.0", - "update-notifier": "^5.1.0", + "update-notifier": "^6.0.2", "yaml": "^2.1.1" }, "bin": { @@ -12928,7 +13154,7 @@ "npm-check-updates": "build/src/bin/cli.js" }, "engines": { - "node": ">=14" + "node": ">=14.14" } }, "node_modules/npm-check-updates/node_modules/ansi-styles": { @@ -13850,12 +14076,12 @@ } }, "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12.20" } }, "node_modules/p-defer": { @@ -13931,18 +14157,36 @@ } }, "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", "dev": true, "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/pacote": { @@ -14267,15 +14511,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", @@ -14408,10 +14643,23 @@ "node": ">= 6" } }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/prompts-ncu": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.0.tgz", + "integrity": "sha512-a9WdInrG7zSlmfzDszmF3r8O4grZRI8+ChV0LtagHRT4dH7F+kxkrwFPGxeS83FZgAGBx3AXoLP+c4kGJb1P3w==", + "dev": true, + "dependencies": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts-ncu/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, "engines": { "node": ">=6" @@ -14426,6 +14674,12 @@ "node": ">= 8" } }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, "node_modules/protobufjs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", @@ -14482,15 +14736,18 @@ } }, "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, "dependencies": { - "escape-goat": "^2.0.0" + "escape-goat": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/q": { @@ -14965,9 +15222,9 @@ } }, "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "dependencies": { "regenerate": "^1.4.2", @@ -14982,27 +15239,30 @@ } }, "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", + "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", "dev": true, "dependencies": { - "rc": "1.2.8" + "@pnpm/npm-conf": "^1.0.4" }, "engines": { - "node": ">=6.0.0" + "node": ">=14" } }, "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "dependencies": { - "rc": "^1.2.8" + "rc": "1.2.8" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/regjsgen": { @@ -15087,6 +15347,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -15118,12 +15384,21 @@ } }, "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", "dev": true, "dependencies": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" + } + }, + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/retry": { @@ -15318,15 +15593,33 @@ } }, "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, "dependencies": { - "semver": "^6.3.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver-utils": { @@ -16618,15 +16911,6 @@ "node": ">=4" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -17006,15 +17290,18 @@ } }, "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "dependencies": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unpipe": { @@ -17026,91 +17313,45 @@ } }, "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "dev": true, "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/update-notifier/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -17126,18 +17367,6 @@ "node": ">=10" } }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -17151,18 +17380,6 @@ "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -17673,15 +17890,68 @@ } }, "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "dependencies": { - "string-width": "^4.0.0" + "string-width": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/window-size": { @@ -17801,15 +18071,16 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/ws": { @@ -17833,12 +18104,15 @@ } }, "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xml": { @@ -18210,35 +18484,35 @@ } }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", - "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", + "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", "dev": true }, "@babel/core": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", - "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", + "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.5", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.5", - "@babel/types": "^7.18.4", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helpers": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -18247,23 +18521,23 @@ } }, "@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "requires": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.0.0", + "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" } @@ -18271,59 +18545,59 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", + "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-compilation-targets": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", + "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", + "@babel/compat-data": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", - "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", + "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", - "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" } }, "@babel/helper-define-polyfill-provider": { @@ -18343,365 +18617,367 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", + "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", "dev": true }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", + "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", + "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", + "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", + "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-wrap-function": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-replace-supers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", - "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", + "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-simple-access": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", - "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "requires": { - "@babel/types": "^7.18.2" + "@babel/types": "^7.18.6" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", + "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", + "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helpers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", + "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", - "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", + "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", - "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", - "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", + "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", - "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", + "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", - "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", - "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", - "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", + "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", - "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", - "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", + "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", - "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", - "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", + "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.17.12" + "@babel/plugin-transform-parameters": "^7.18.6" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", - "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", + "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", - "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", - "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", - "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-async-generators": { @@ -18759,12 +19035,12 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", - "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-import-meta": { @@ -18858,363 +19134,363 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", - "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", - "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", - "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", - "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", + "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-classes": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", - "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", + "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", - "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", + "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", - "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", + "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", - "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", + "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-for-of": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", - "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", + "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", + "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-literals": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", - "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", + "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", - "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", - "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", - "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", + "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", - "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", - "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", - "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", - "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", + "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", - "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", - "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", - "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", + "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", - "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", + "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", - "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", + "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", + "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", - "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-async-generator-functions": "^7.17.12", - "@babel/plugin-proposal-class-properties": "^7.17.12", - "@babel/plugin-proposal-class-static-block": "^7.18.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.17.12", - "@babel/plugin-proposal-json-strings": "^7.17.12", - "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.18.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-private-methods": "^7.17.12", - "@babel/plugin-proposal-private-property-in-object": "^7.17.12", - "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", + "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-import-assertions": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -19224,43 +19500,43 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.17.12", - "@babel/plugin-transform-async-to-generator": "^7.17.12", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.17.12", - "@babel/plugin-transform-classes": "^7.17.12", - "@babel/plugin-transform-computed-properties": "^7.17.12", - "@babel/plugin-transform-destructuring": "^7.18.0", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.17.12", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.18.1", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.17.12", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.18.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.2", - "@babel/plugin-transform-modules-systemjs": "^7.18.0", - "@babel/plugin-transform-modules-umd": "^7.18.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", - "@babel/plugin-transform-new-target": "^7.17.12", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.17.12", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.18.0", - "@babel/plugin-transform-reserved-words": "^7.17.12", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.17.12", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.18.2", - "@babel/plugin-transform-typeof-symbol": "^7.17.12", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.6", + "@babel/plugin-transform-classes": "^7.18.6", + "@babel/plugin-transform-computed-properties": "^7.18.6", + "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.6", + "@babel/plugin-transform-function-name": "^7.18.6", + "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.6", + "@babel/plugin-transform-typeof-symbol": "^7.18.6", + "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.2", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", + "@babel/types": "^7.18.6", + "babel-plugin-polyfill-corejs2": "^0.3.1", + "babel-plugin-polyfill-corejs3": "^0.5.2", + "babel-plugin-polyfill-regenerator": "^0.3.1", "core-js-compat": "^3.22.1", "semver": "^6.3.0" } @@ -19287,41 +19563,41 @@ } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/traverse": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", - "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.5", - "@babel/types": "^7.18.4", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", + "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", - "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", + "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -19654,15 +19930,15 @@ } }, "@jest/core": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.1.tgz", - "integrity": "sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.2.tgz", + "integrity": "sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ==", "dev": true, "requires": { "@jest/console": "^28.1.1", - "@jest/reporters": "^28.1.1", + "@jest/reporters": "^28.1.2", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -19671,15 +19947,15 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^28.0.2", - "jest-config": "^28.1.1", + "jest-config": "^28.1.2", "jest-haste-map": "^28.1.1", "jest-message-util": "^28.1.1", "jest-regex-util": "^28.0.2", "jest-resolve": "^28.1.1", - "jest-resolve-dependencies": "^28.1.1", - "jest-runner": "^28.1.1", - "jest-runtime": "^28.1.1", - "jest-snapshot": "^28.1.1", + "jest-resolve-dependencies": "^28.1.2", + "jest-runner": "^28.1.2", + "jest-runtime": "^28.1.2", + "jest-snapshot": "^28.1.2", "jest-util": "^28.1.1", "jest-validate": "^28.1.1", "jest-watcher": "^28.1.1", @@ -19742,25 +20018,25 @@ } }, "@jest/environment": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.1.tgz", - "integrity": "sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.2.tgz", + "integrity": "sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q==", "dev": true, "requires": { - "@jest/fake-timers": "^28.1.1", + "@jest/fake-timers": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "jest-mock": "^28.1.1" } }, "@jest/expect": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.1.tgz", - "integrity": "sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.2.tgz", + "integrity": "sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw==", "dev": true, "requires": { "expect": "^28.1.1", - "jest-snapshot": "^28.1.1" + "jest-snapshot": "^28.1.2" } }, "@jest/expect-utils": { @@ -19773,13 +20049,13 @@ } }, "@jest/fake-timers": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.1.tgz", - "integrity": "sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.2.tgz", + "integrity": "sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg==", "dev": true, "requires": { "@jest/types": "^28.1.1", - "@sinonjs/fake-timers": "^9.1.1", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", "jest-message-util": "^28.1.1", "jest-mock": "^28.1.1", @@ -19787,28 +20063,28 @@ } }, "@jest/globals": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.1.tgz", - "integrity": "sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.2.tgz", + "integrity": "sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg==", "dev": true, "requires": { - "@jest/environment": "^28.1.1", - "@jest/expect": "^28.1.1", + "@jest/environment": "^28.1.2", + "@jest/expect": "^28.1.2", "@jest/types": "^28.1.1" } }, "@jest/reporters": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.1.tgz", - "integrity": "sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.2.tgz", + "integrity": "sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^28.1.1", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.13", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -19827,7 +20103,7 @@ "string-length": "^4.0.1", "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.0" + "v8-to-istanbul": "^9.0.1" }, "dependencies": { "ansi-styles": { @@ -19891,12 +20167,12 @@ } }, "@jest/source-map": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", - "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.13", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" } @@ -19926,14 +20202,14 @@ } }, "@jest/transform": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.1.tgz", - "integrity": "sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.2.tgz", + "integrity": "sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg==", "dev": true, "requires": { "@babel/core": "^7.11.6", "@jest/types": "^28.1.1", - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.13", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", @@ -19996,16 +20272,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } } } }, @@ -20441,6 +20707,25 @@ "read-package-json-fast": "^2.0.3" } }, + "@pnpm/network.ca-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", + "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.10" + } + }, + "@pnpm/npm-conf": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.4.tgz", + "integrity": "sha512-o5YFq/+ksEJMbSzzkaQDHlp00aonLDU5xNPVTRL12hTWBbVSSeWXxPukq75h+mvXnoOWT95vV2u1HSTw2C4XOw==", + "dev": true, + "requires": { + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + } + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -20638,9 +20923,9 @@ "dev": true }, "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true }, "@sinonjs/commons": { @@ -20662,12 +20947,12 @@ } }, "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.1" } }, "@tootallnate/once": { @@ -20755,6 +21040,18 @@ "@types/node": "*" } }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "@types/formidable": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz", @@ -20782,6 +21079,12 @@ "@types/node": "*" } }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -20816,6 +21119,12 @@ "pretty-format": "^28.0.0" } }, + "@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -20827,6 +21136,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", @@ -20862,6 +21180,15 @@ "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", "dev": true }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -21300,12 +21627,12 @@ } }, "babel-jest": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.1.tgz", - "integrity": "sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.2.tgz", + "integrity": "sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q==", "dev": true, "requires": { - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^28.1.1", @@ -21550,81 +21877,87 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", + "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", "dev": true, "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" }, "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true }, "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", + "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "color-name": "~1.1.4" + "ansi-regex": "^6.0.1" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "type-fest": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.14.0.tgz", + "integrity": "sha512-hQnTQkFjL5ik6HF2fTAM8ycbr94UbQXK364wF930VHb0dfBJ5JBP8qwrR8TaK9zwUEk7meruo2JAUDMwvuxd/w==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true } } }, @@ -21800,19 +22133,25 @@ "ylru": "^1.2.0" } }, + "cacheable-lookup": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", + "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==", + "dev": true + }, "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", "dev": true, "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "dependencies": { "get-stream": { @@ -21982,9 +22321,9 @@ "dev": true }, "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true }, "cli-table": { @@ -22170,6 +22509,16 @@ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, + "compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + } + }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -22229,18 +22578,50 @@ "typedarray": "^0.0.6" } }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } } }, "confusing-browser-globals": { @@ -22763,10 +23144,21 @@ } }, "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } }, "css-select": { "version": "5.1.0", @@ -22829,12 +23221,20 @@ } }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } } }, "dedent": { @@ -22872,9 +23272,9 @@ "dev": true }, "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, "define-properties": { @@ -23077,10 +23477,10 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, "ecdsa-sig-formatter": { @@ -23255,9 +23655,9 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true }, "escape-html": { @@ -23952,6 +24352,12 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, + "form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", + "dev": true + }, "formidable": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", @@ -24383,33 +24789,24 @@ "dev": true }, "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" } }, "graceful-fs": { @@ -24655,9 +25052,9 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "dev": true }, "hexoid": { @@ -24768,6 +25165,24 @@ "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==" }, + "http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "dependencies": { + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + } + } + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -24989,9 +25404,9 @@ } }, "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, "import-local": { @@ -25119,20 +25534,12 @@ "dev": true }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - } + "ci-info": "^3.2.0" } }, "is-core-module": { @@ -25213,9 +25620,9 @@ "dev": true }, "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true }, "is-number": { @@ -25327,9 +25734,9 @@ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" }, "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", + "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", "dev": true }, "isarray": { @@ -25417,15 +25824,15 @@ "integrity": "sha512-BwhYxQ1OPenBPXC735RgfB+ZUG8H3kjsx8hrYTgWnoy6TPipEy4fiicyhT2lxRKAXq9pG7CfFT8a2HLr6Hmwxg==" }, "jest": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.1.tgz", - "integrity": "sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.2.tgz", + "integrity": "sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg==", "dev": true, "requires": { - "@jest/core": "^28.1.1", + "@jest/core": "^28.1.2", "@jest/types": "^28.1.1", "import-local": "^3.0.2", - "jest-cli": "^28.1.1" + "jest-cli": "^28.1.2" } }, "jest-changed-files": { @@ -25439,13 +25846,13 @@ } }, "jest-circus": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.1.tgz", - "integrity": "sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.2.tgz", + "integrity": "sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ==", "dev": true, "requires": { - "@jest/environment": "^28.1.1", - "@jest/expect": "^28.1.1", + "@jest/environment": "^28.1.2", + "@jest/expect": "^28.1.2", "@jest/test-result": "^28.1.1", "@jest/types": "^28.1.1", "@types/node": "*", @@ -25456,8 +25863,8 @@ "jest-each": "^28.1.1", "jest-matcher-utils": "^28.1.1", "jest-message-util": "^28.1.1", - "jest-runtime": "^28.1.1", - "jest-snapshot": "^28.1.1", + "jest-runtime": "^28.1.2", + "jest-snapshot": "^28.1.2", "jest-util": "^28.1.1", "pretty-format": "^28.1.1", "slash": "^3.0.0", @@ -25517,19 +25924,19 @@ } }, "jest-cli": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.1.tgz", - "integrity": "sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.2.tgz", + "integrity": "sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw==", "dev": true, "requires": { - "@jest/core": "^28.1.1", + "@jest/core": "^28.1.2", "@jest/test-result": "^28.1.1", "@jest/types": "^28.1.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^28.1.1", + "jest-config": "^28.1.2", "jest-util": "^28.1.1", "jest-validate": "^28.1.1", "prompts": "^2.0.1", @@ -25609,26 +26016,26 @@ } }, "jest-config": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.1.tgz", - "integrity": "sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.2.tgz", + "integrity": "sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA==", "dev": true, "requires": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^28.1.1", "@jest/types": "^28.1.1", - "babel-jest": "^28.1.1", + "babel-jest": "^28.1.2", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.1", - "jest-environment-node": "^28.1.1", + "jest-circus": "^28.1.2", + "jest-environment-node": "^28.1.2", "jest-get-type": "^28.0.2", "jest-regex-util": "^28.0.2", "jest-resolve": "^28.1.1", - "jest-runner": "^28.1.1", + "jest-runner": "^28.1.2", "jest-util": "^28.1.1", "jest-validate": "^28.1.1", "micromatch": "^4.0.4", @@ -25826,13 +26233,13 @@ } }, "jest-environment-node": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.1.tgz", - "integrity": "sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.2.tgz", + "integrity": "sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw==", "dev": true, "requires": { - "@jest/environment": "^28.1.1", - "@jest/fake-timers": "^28.1.1", + "@jest/environment": "^28.1.2", + "@jest/fake-timers": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "jest-mock": "^28.1.1", @@ -25866,9 +26273,9 @@ } }, "jest-junit": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", - "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-14.0.0.tgz", + "integrity": "sha512-kALvBDegstTROfDGXH71UGD7k5g7593Y1wuX1wpWT+QTYcBbmtuGOA8UlAt56zo/B2eMIOcaOVEON3j0VXVa4g==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -26110,37 +26517,37 @@ } }, "jest-resolve-dependencies": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz", - "integrity": "sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz", + "integrity": "sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg==", "dev": true, "requires": { "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.1" + "jest-snapshot": "^28.1.2" } }, "jest-runner": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.1.tgz", - "integrity": "sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.2.tgz", + "integrity": "sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A==", "dev": true, "requires": { "@jest/console": "^28.1.1", - "@jest/environment": "^28.1.1", + "@jest/environment": "^28.1.2", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.10.2", "graceful-fs": "^4.2.9", "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.1", + "jest-environment-node": "^28.1.2", "jest-haste-map": "^28.1.1", "jest-leak-detector": "^28.1.1", "jest-message-util": "^28.1.1", "jest-resolve": "^28.1.1", - "jest-runtime": "^28.1.1", + "jest-runtime": "^28.1.2", "jest-util": "^28.1.1", "jest-watcher": "^28.1.1", "jest-worker": "^28.1.1", @@ -26200,17 +26607,17 @@ } }, "jest-runtime": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.1.tgz", - "integrity": "sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.2.tgz", + "integrity": "sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw==", "dev": true, "requires": { - "@jest/environment": "^28.1.1", - "@jest/fake-timers": "^28.1.1", - "@jest/globals": "^28.1.1", - "@jest/source-map": "^28.0.2", + "@jest/environment": "^28.1.2", + "@jest/fake-timers": "^28.1.2", + "@jest/globals": "^28.1.2", + "@jest/source-map": "^28.1.2", "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -26223,7 +26630,7 @@ "jest-mock": "^28.1.1", "jest-regex-util": "^28.0.2", "jest-resolve": "^28.1.1", - "jest-snapshot": "^28.1.1", + "jest-snapshot": "^28.1.2", "jest-util": "^28.1.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" @@ -26281,9 +26688,9 @@ } }, "jest-snapshot": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.1.tgz", - "integrity": "sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.2.tgz", + "integrity": "sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -26292,7 +26699,7 @@ "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", "@jest/expect-utils": "^28.1.1", - "@jest/transform": "^28.1.1", + "@jest/transform": "^28.1.2", "@jest/types": "^28.1.1", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", @@ -26646,9 +27053,9 @@ "dev": true }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "json-parse-better-errors": { @@ -26861,12 +27268,13 @@ } }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.2.tgz", + "integrity": "sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==", "dev": true, "requires": { - "json-buffer": "3.0.0" + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" } }, "kind-of": { @@ -26875,6 +27283,12 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", @@ -26974,12 +27388,12 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, "requires": { - "package-json": "^6.3.0" + "package-json": "^8.1.0" } }, "lazy-cache": { @@ -27174,9 +27588,9 @@ "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==" }, "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true }, "lru-cache": { @@ -27760,9 +28174,9 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true }, "npm-audit-resolver": { @@ -27792,9 +28206,9 @@ } }, "npm-check-updates": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-14.0.2.tgz", - "integrity": "sha512-rVetP51QHbbbcDhTBkQv+h+EEZbLx1ehPgqT6F9MH3Z23O8tS2Jb7PWusIWCM04qhp2IXu6D3u1sjagG0H7SLw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.0.tgz", + "integrity": "sha512-m1bvBaZO0fa+rnBvVmKYjmBA4iECWArc/sO28xyghflCq95w5zg3NdM6JPWeCB3v8uezp+owLdO4SQfHW6X6zA==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -27812,10 +28226,10 @@ "lodash": "^4.17.21", "minimatch": "^5.1.0", "p-map": "^4.0.0", - "pacote": "^13.6.0", + "pacote": "^13.6.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts": "^2.4.2", + "prompts-ncu": "^2.5.0", "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", @@ -27823,7 +28237,7 @@ "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^1.0.0", - "update-notifier": "^5.1.0", + "update-notifier": "^6.0.2", "yaml": "^2.1.1" }, "dependencies": { @@ -28548,9 +28962,9 @@ } }, "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true }, "p-defer": { @@ -28599,15 +29013,26 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", "dev": true, "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "pacote": { @@ -28856,12 +29281,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true - }, "prettier": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", @@ -28960,12 +29379,22 @@ "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" + } + }, + "prompts-ncu": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.0.tgz", + "integrity": "sha512-a9WdInrG7zSlmfzDszmF3r8O4grZRI8+ChV0LtagHRT4dH7F+kxkrwFPGxeS83FZgAGBx3AXoLP+c4kGJb1P3w==", + "dev": true, + "requires": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" }, "dependencies": { "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true } } @@ -28976,6 +29405,12 @@ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, "protobufjs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", @@ -29021,12 +29456,12 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, "requires": { - "escape-goat": "^2.0.0" + "escape-goat": "^4.0.0" } }, "q": { @@ -29391,9 +29826,9 @@ "dev": true }, "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "requires": { "regenerate": "^1.4.2", @@ -29405,21 +29840,21 @@ } }, "registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", + "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", "dev": true, "requires": { - "rc": "1.2.8" + "@pnpm/npm-conf": "^1.0.4" } }, "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "requires": { - "rc": "^1.2.8" + "rc": "1.2.8" } }, "regjsgen": { @@ -29482,6 +29917,12 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -29504,12 +29945,20 @@ "dev": true }, "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", "dev": true, "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } } }, "retry": { @@ -29647,12 +30096,23 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, "requires": { - "semver": "^6.3.0" + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "semver-utils": { @@ -30653,12 +31113,6 @@ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -30934,12 +31388,12 @@ } }, "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "requires": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" } }, "unpipe": { @@ -30948,65 +31402,31 @@ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "dev": true, "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true }, "semver": { @@ -31017,15 +31437,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -31042,15 +31453,6 @@ "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -31456,12 +31858,46 @@ } }, "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "requires": { - "string-width": "^4.0.0" + "string-width": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } } }, "window-size": { @@ -31555,15 +31991,13 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" } }, "ws": { @@ -31573,9 +32007,9 @@ "requires": {} }, "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true }, "xml": { diff --git a/package.json b/package.json index 22ad5ae46..00704de25 100644 --- a/package.json +++ b/package.json @@ -80,21 +80,21 @@ "ws": "^8.8.0" }, "devDependencies": { - "@babel/core": "^7.15.5", - "@babel/preset-env": "^7.15.6", + "@babel/core": "^7.18.6", + "@babel/preset-env": "^7.18.6", "@mojaloop/api-snippets": "^14.0.0", "@redocly/openapi-cli": "^1.0.0-beta.59", "@types/jest": "^28.1.3", - "babel-jest": "^28.1.1", + "babel-jest": "^28.1.2", "eslint": "^8.18.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-jest": "^26.5.3", - "jest": "^28.1.1", - "jest-junit": "^13.2.0", + "jest": "^28.1.2", + "jest-junit": "^14.0.0", "nock": "^13.1.3", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^14.0.2", + "npm-check-updates": "^15.0.0", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", From 92210a766e67c0343bb8ab9815c96b6251591e0d Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Thu, 30 Jun 2022 16:53:19 +0300 Subject: [PATCH 07/39] update constributors list. --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 00704de25..21f4030e6 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,8 @@ "Shashikant Hirugade ", "Paweł Marzec ", "Kevin Leyow " + "Miguel de Barros ", + "Yevhen Kyriukha " ], "license": "Apache-2.0", "licenses": [ From d572a6c31e480ef23ccc3d47f40d2f9770c509ca Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 15:22:13 +0300 Subject: [PATCH 08/39] Refactor to use new Redis API. --- src/config.js | 5 +- src/index.js | 6 +- src/lib/cache.js | 277 ++++++------------ test/__mocks__/redis.js | 77 +++-- test/config/integration.env | 3 +- test/integration/lib/cache.test.js | 3 +- test/integration/testEnv.js | 5 +- test/unit/InboundServer.test.js | 16 +- test/unit/TestServer.test.js | 2 +- test/unit/api/accounts/accounts.test.js | 4 +- test/unit/api/transfers/transfers.test.js | 2 +- test/unit/api/utils.js | 2 +- test/unit/config.test.js | 3 +- test/unit/data/defaultConfig.json | 5 +- test/unit/index.test.js | 3 +- test/unit/lib/cache.test.js | 11 +- test/unit/lib/model/AccountsModel.test.js | 7 +- .../lib/model/InboundTransfersModel.test.js | 32 +- .../lib/model/OutboundBulkQuotesModel.test.js | 7 +- .../model/OutboundBulkTransfersModel.test.js | 3 +- .../model/OutboundRequestToPayModel.test.js | 7 +- .../OutboundRequestToPayTransferModel.test.js | 7 +- .../lib/model/OutboundTransfersModel.test.js | 3 +- .../common/PersistentStateMachine.test.js | 7 +- test/unit/lib/model/data/defaultConfig.json | 5 +- 25 files changed, 201 insertions(+), 301 deletions(-) diff --git a/src/config.js b/src/config.js index 15821e3f0..85746a10a 100644 --- a/src/config.js +++ b/src/config.js @@ -129,10 +129,7 @@ module.exports = { jwsSignPutParties: env.get('JWS_SIGN_PUT_PARTIES').default('false').asBool(), jwsSigningKey: env.get('JWS_SIGNING_KEY_PATH').asFileContent(), jwsVerificationKeysDirectory: env.get('JWS_VERIFICATION_KEYS_DIRECTORY').asString(), - cacheConfig: { - host: env.get('CACHE_HOST').required().asString(), - port: env.get('CACHE_PORT').required().asPortNumber(), - }, + cacheUrl: env.get('CACHE_URL').default('redis://redis:6379').asUrlString(), enableTestFeatures: env.get('ENABLE_TEST_FEATURES').default('false').asBool(), oauthTestServer: { enabled: env.get('ENABLE_OAUTH_TOKEN_ENDPOINT').default('false').asBool(), diff --git a/src/index.js b/src/index.js index fb4666e0e..ad8983371 100644 --- a/src/index.js +++ b/src/index.js @@ -50,7 +50,7 @@ class Server extends EventEmitter { this.conf = conf; this.logger = logger; this.cache = new Cache({ - ...conf.cacheConfig, + cacheUrl: conf.cacheUrl, logger: this.logger.push(LOG_ID.CACHE), enableTestFeatures: conf.enableTestFeatures, }); @@ -159,13 +159,13 @@ class Server extends EventEmitter { } let oldCache; - const updateCache = !_.isEqual(this.conf.cacheConfig, newConf.cacheConfig) + const updateCache = !_.isEqual(this.conf.cacheUrl, newConf.cacheUrl) || !_.isEqual(this.conf.enableTestFeatures, newConf.enableTestFeatures); if (updateCache) { oldCache = this.cache; await this.cache.disconnect(); this.cache = new Cache({ - ...newConf.cacheConfig, + cacheUrl: newConf.cacheUrl, logger: this.logger.push(LOG_ID.CACHE), enableTestFeatures: newConf.enableTestFeatures, }); diff --git a/src/lib/cache.js b/src/lib/cache.js index 14ee52143..3c2d5c96d 100644 --- a/src/lib/cache.js +++ b/src/lib/cache.js @@ -10,7 +10,6 @@ 'use strict'; -const util = require('util'); const redis = require('redis'); const CONN_ST = { @@ -27,11 +26,12 @@ class Cache { constructor(config) { this._config = config; - if(!config.host || !config.port || !config.logger) { - throw new Error('Cache config requires host, port and logger properties'); + if(!config.cacheUrl || !config.logger) { + throw new Error('Cache config requires cacheUrl and logger properties'); } this._logger = config.logger; + this._url = config.cacheUrl; // a redis connection to handle get, set and publish operations this._client = null; @@ -78,9 +78,6 @@ class Cache { this._inProgressConnection = Promise.all([this._getClient(), this._getClient()]); [this._client, this._subscriptionClient] = await this._inProgressConnection; - // hook up our sub message handler - this._subscriptionClient.on('message', this._onMessage.bind(this)); - if (this._config.enableTestFeatures) { this.setTestMode(true); } @@ -124,8 +121,8 @@ class Cache { } this._connectionState = CONN_ST.DISCONNECTING; this._inProgressDisconnection = Promise.all([ - new Promise(resolve => this._client.quit(resolve)), - new Promise(resolve => this._subscriptionClient.quit(resolve)) + this._client.quit(), + this._subscriptionClient.quit() ]); this._client = null; this._subscriptionClient = null; @@ -143,30 +140,36 @@ class Cache { * @returns {Promise} - Promise that resolves with an integer callback Id to submit in unsubscribe request */ async subscribe(channel, callback) { - return new Promise((resolve, reject) => { - this._subscriptionClient.subscribe(channel, (err) => { - if(err) { - this._logger.log(`Error subscribing to channel ${channel}: ${err.stack || util.inspect(err)}`); - return reject(err); - } - - this._logger.log(`Subscribed to cache pub/sub channel ${channel}`); - - if(!this._callbacks[channel]) { - // if this is the first subscriber for this channel we init the hashmap - this._callbacks[channel] = {}; + // get an id for this callback + const id = this._callbackId++; + + if(!this._callbacks[channel]) { + // if this is the first subscriber for this channel we init the hashmap + this._callbacks[channel] = { [id]: callback }; + await this._subscriptionClient.subscribe(channel, (msg) => { + // we have some callbacks to make + for (const [id, cb] of Object.entries(this._callbacks[channel])) { + this._logger.log(`Cache message received on channel ${channel}. Making callback with id ${id}`); + + // call the callback with the channel name, message and callbackId... + // ...(which is useful for unsubscribe) + try { + cb(channel, msg, id); + } catch (err) { + this._logger + .push({ callbackId: id, err }) + .log('Unhandled error in cache subscription handler'); + } } + }); + } else { + this._callbacks[channel][id] = callback; + } - // get an id for this callback - const id = this._callbackId++; - - // store the callback against the channel/id - this._callbacks[channel][id] = callback; + // store the callback against the channel/id + this._logger.log(`Subscribed to cache pub/sub channel ${channel}`); - // return the id we gave the callback - return resolve(id); - }); - }); + return id; } @@ -177,88 +180,59 @@ class Cache { * @param callbackId {integer} - id of the callback to remove */ async unsubscribe(channel, callbackId) { - return new Promise((resolve, reject) => { - if(this._callbacks[channel] && this._callbacks[channel][callbackId]) { - delete this._callbacks[channel][callbackId]; - this._logger.log(`Cache unsubscribed callbackId ${callbackId} from channel ${channel}`); - - if(Object.keys(this._callbacks[channel]).length < 1) { - //no more callbacks for this channel - delete this._callbacks[channel]; - } - - return resolve(); + if(this._callbacks[channel] && this._callbacks[channel][callbackId]) { + delete this._callbacks[channel][callbackId]; + this._logger.log(`Cache unsubscribed callbackId ${callbackId} from channel ${channel}`); + + if(Object.keys(this._callbacks[channel]).length < 1) { + //no more callbacks for this channel + delete this._callbacks[channel]; + await this._subscriptionClient.unsubscribe(channel); } - + } else { // we should not be asked to unsubscribe from a subscription we do not have. Raise this as a promise // rejection so it can be spotted. It may indiate a logic bug somewhere else this._logger.log(`Cache not subscribed to channel ${channel} for callbackId ${callbackId}`); - return reject(new Error(`Channel ${channel} does not have a callback with id ${callbackId} subscribed`)); - }); - } - - - /** - * Handler for published messages - */ - async _onMessage(channel, msg) { - if(this._callbacks[channel]) { - // we have some callbacks to make - Object.keys(this._callbacks[channel]).forEach(k => { - this._logger.log(`Cache message received on channel ${channel}. Making callback with id ${k}`); - - // call the callback with the channel name, message and callbackId... - // ...(which is useful for unsubscribe) - try { - this._callbacks[channel][k](channel, msg, k); - } catch (err) { - this._logger - .push({ callbackId: k, err }) - .log('Unhandled error in cache subscription handler'); - } - }); + throw new Error(`Channel ${channel} does not have a callback with id ${callbackId} subscribed`); } } - /** * Returns a new redis client * * @returns {object} - a connected REDIS client * */ async _getClient() { - return new Promise((resolve, reject) => { - const client = redis.createClient(this._config); + const client = redis.createClient({ url: this._url }); - client.on('error', (err) => { - this._logger.push({ err }).log('Error from REDIS client getting subscriber'); - return reject(err); - }); + client.on('error', (err) => { + this._logger.push({ err }).log('Error from REDIS client getting subscriber'); + }); - client.on('reconnecting', (err) => { - this._logger.push({ err }).log('REDIS client Reconnecting'); - return reject(err); - }); + client.on('reconnecting', (err) => { + this._logger.push({ err }).log('REDIS client Reconnecting'); + }); - client.on('subscribe', (channel, count) => { - this._logger.push({ channel, count }).log('REDIS client subscribe'); - // On a subscribe event, ensure that testFeatures are enabled. - // This is required here in the advent of a disconnect/reconnect event. Redis client will re-subscribe all subscriptions, but previously enabledTestFeatures will be lost. - // Handling this on the on subscribe event will ensure its always configured. - if (this._config.enableTestFeatures) { - this.setTestMode(true); - } - }); + client.on('subscribe', (channel, count) => { + this._logger.push({ channel, count }).log('REDIS client subscribe'); + // On a subscribe event, ensure that testFeatures are enabled. + // This is required here in the advent of a disconnect/reconnect event. Redis client will re-subscribe all subscriptions, but previously enabledTestFeatures will be lost. + // Handling this on the on subscribe event will ensure its always configured. + if (this._config.enableTestFeatures) { + // this.setTestMode(true); + } + }); - client.on('connect', () => { - this._logger.log(`REDIS client connected at: ${this._config.host}:${this._config.port}`); - }); + client.on('connect', () => { + this._logger.log(`REDIS client connected at: ${this._url}`); + }); - client.on('ready', () => { - this._logger.log(`Connected to REDIS at: ${this._config.host}:${this._config.port}`); - return resolve(client); - }); + client.on('ready', () => { + this._logger.log(`Connected to REDIS at: ${this._url}`); }); + await client.connect(); + + return client; } @@ -270,23 +244,11 @@ class Cache { * @returns {Promise} - Promise that will resolve with redis replies or reject with an error */ async publish(channelName, value) { - return new Promise((resolve, reject) => { - if(typeof(value) !== 'string') { - // ALWAYS publish string values - value = JSON.stringify(value); - } - - // note that we publish on the non-SUBSCRIBE connection - this._client.publish(channelName, value, (err, replies) => { - if(err) { - this._logger.push({ channelName, err }).log(`Error publishing to channel ${channelName}`); - return reject(err); - } - - this._logger.push({ channelName, value }).log(`Published to channel ${channelName}`); - return resolve(replies); - }); - }); + if(typeof(value) !== 'string') { + // ALWAYS publish string values + value = JSON.stringify(value); + } + await this._client.publish(channelName, value); } @@ -297,22 +259,11 @@ class Cache { * @param value {stirng} - cache value */ async set(key, value) { - return new Promise((resolve, reject) => { - //if we are given an object, turn it into a string - if(typeof(value) !== 'string') { - value = JSON.stringify(value); - } - - this._client.set(key, value, (err, replies) => { - if(err) { - this._logger.push({ key, value, err }).log(`Error setting cache key: ${key}`); - return reject(err); - } - - this._logger.push({ key, value, replies }).log(`Set cache key: ${key}`); - return resolve(replies); - }); - }); + //if we are given an object, turn it into a string + if(typeof(value) !== 'string') { + value = JSON.stringify(value); + } + await this._client.set(key, value); } /** @@ -322,22 +273,11 @@ class Cache { * @param value {string} - cache value */ async add(key, value) { - return new Promise((resolve, reject) => { - //if we are given an object, turn it into a string - if(typeof(value) !== 'string') { - value = JSON.stringify(value); - } - - this._client.sadd(key, value, (err, replies) => { - if(err) { - this._logger.push({ key, value, err }).log(`Error setting cache key: ${key}`); - return reject(err); - } - - this._logger.push({ key, value, replies }).log(`Add cache key: ${key}`); - return resolve(replies); - }); - }); + //if we are given an object, turn it into a string + if(typeof(value) !== 'string') { + value = JSON.stringify(value); + } + await this._client.sAdd(key, value); } /** @@ -346,28 +286,7 @@ class Cache { * @param key {string} - cache key */ async members(key) { - return new Promise((resolve, reject) => { - this._client.smembers(key, (err, value) => { - if(err) { - this._logger.push({ key, err }).log(`Error getting cache key: ${key}`); - return reject(err); - } - - this._logger.push({ key, value }).log(`Got cache key: ${key}`); - - if(typeof(value) === 'string') { - try { - value = JSON.parse(value); - } - catch(err) { - this._logger.push({ err }).log('Error parsing JSON cache value'); - return reject(err); - } - } - - return resolve(value); - }); - }); + return this._client.sMembers(key); } /** @@ -376,28 +295,16 @@ class Cache { * @param key {string} - cache key */ async get(key) { - return new Promise((resolve, reject) => { - this._client.get(key, (err, value) => { - if(err) { - this._logger.push({ key, err }).log(`Error getting cache key: ${key}`); - return reject(err); - } - - this._logger.push({ key, value }).log(`Got cache key: ${key}`); - - if(typeof(value) === 'string') { - try { - value = JSON.parse(value); - } - catch(err) { - this._logger.push({ err }).log('Error parsing JSON cache value'); - return reject(err); - } - } - - return resolve(value); - }); - }); + let value = await this._client.get(key); + if(typeof(value) === 'string') { + try { + value = JSON.parse(value); + } + catch(err) { + this._logger.push({ err }).log('Error parsing JSON cache value'); + } + } + return value; } } diff --git a/test/__mocks__/redis.js b/test/__mocks__/redis.js index 5eb864f2d..f849faca0 100644 --- a/test/__mocks__/redis.js +++ b/test/__mocks__/redis.js @@ -1,53 +1,78 @@ /************************************************************************** - * (C) Copyright ModusBox Inc. 2019 - All rights reserved. * + * (C) Copyright ModusBox Inc. 2020 - All rights reserved. * * * * This file is made available under the terms of the license agreement * * specified in the corresponding source code repository. * * * * ORIGINAL AUTHOR: * - * James Bush - james.bush@modusbox.com * + * Yevhen Kyriukha - yevhen.kyriukha@modusbox.com * **************************************************************************/ -'use strict'; - const redisMock = require('redis-mock'); +const { promisify } = require('util'); + +const { EventEmitter } = require('events'); + +const events = {}; -// redis-mock currently ignores callback argument, the following class fix this +// redis-mock currently ignores callback arguments, the following class fixes that class RedisClient extends redisMock.RedisClient { - constructor(options, stream, redisMock) { - super(options, stream, redisMock); + constructor(opts) { + super(opts); + events[opts.cacheUrl] = events[opts.cacheUrl] || new EventEmitter(); + this.events = events[opts.cacheUrl]; } - _executeCallback(...args) { - if (typeof args[args.length - 1] === 'function') { - const callback = args[args.length - 1]; - const argList = Array.prototype.slice.call(args, 0, args.length - 1); - callback(null, argList); - } + async subscribe(...args) { + this.events.on(...args); + // return promisify(super.subscribe.bind(this))(...args); } - config(...args) { - this._executeCallback(...args); + async unsubscribe(channel) { + this.events.removeAllListeners(channel); } - subscribe(...args) { - super.subscribe(...args); - this._executeCallback(...args); + async publish(...args) { + process.nextTick(() => this.events.emit(...args)); } - publish(...args) { - super.publish(...args); - this._executeCallback(...args); + set(...args) { + return promisify(super.set.bind(this))(...args); } - set(...args) { - super.set(...args); - this._executeCallback(...args); + get(...args) { + return promisify(super.get.bind(this))(...args); + } + + keys(...args) { + return promisify(super.keys.bind(this))(...args); + } + + end() { + this.events.removeAllListeners(); } -} + connect() {} + async disconnect() { + return this.end(); + } + + async quit() { + return this.end(); + } + + sAdd(...args) { + return promisify(super.sadd.bind(this))(...args); + } + + sMembers(...args) { + return promisify(super.smembers.bind(this))(...args); + } + + config() {} +} module.exports = { - createClient: (options = {host: 'localhost', port: 6380}, stream, redisMock) => new RedisClient(options, stream, redisMock), + createClient: (opts) => new RedisClient(opts), }; diff --git a/test/config/integration.env b/test/config/integration.env index 3b0a81e17..88c55c172 100644 --- a/test/config/integration.env +++ b/test/config/integration.env @@ -43,8 +43,7 @@ JWS_VERIFICATION_KEYS_DIRECTORY=/jwsVerificationKeys LOG_INDENT=0 # REDIS CACHE CONNECTION -CACHE_HOST=redis -CACHE_PORT=6379 +CACHE_URL=redis://redis:6379 CACHE_SHOULD_EXPIRE=false CACHE_EXPIRY_SECONDS=3600 diff --git a/test/integration/lib/cache.test.js b/test/integration/lib/cache.test.js index 29ca831b8..3b7524d0c 100644 --- a/test/integration/lib/cache.test.js +++ b/test/integration/lib/cache.test.js @@ -37,8 +37,7 @@ const { Logger } = require('@mojaloop/sdk-standard-components'); const env = require('../testEnv'); const defaultCacheConfig = { - host: env.redis.host, - port: env.redis.port, + cacheUrl: env.redisUrl, logger: null }; diff --git a/test/integration/testEnv.js b/test/integration/testEnv.js index 80a75ddb3..451b9169a 100644 --- a/test/integration/testEnv.js +++ b/test/integration/testEnv.js @@ -1,7 +1,4 @@ module.exports = { OutboundHostURI: 'http://localhost:4001', - redis: { - host: 'localhost', - port: 6379 - } + redisUrl: 'redis://localhost:6379', }; diff --git a/test/unit/InboundServer.test.js b/test/unit/InboundServer.test.js index bf52d1659..4729ebbf5 100644 --- a/test/unit/InboundServer.test.js +++ b/test/unit/InboundServer.test.js @@ -45,7 +45,7 @@ describe('Inbound Server', () => { serverConfig.validateInboundJws = validateInboundJws; serverConfig.validateInboundPutPartiesJws = validateInboundPutPartiesJws; const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const svr = new InboundServer(serverConfig, logger, cache); await svr.start(); await supertest(svr._server) @@ -61,7 +61,7 @@ describe('Inbound Server', () => { async function testPartiesHeaderValidation(contentType, expectedStatusCode, expectedBody = null) { const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const svr = new InboundServer(serverConfig, logger, cache); await svr.start(); const result = await supertest(svr._server) @@ -141,7 +141,7 @@ describe('Inbound Server', () => { serverConfig.validateInboundJws = validateInboundJws; serverConfig.validateInboundPutPartiesJws = validateInboundPutPartiesJws; const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const svr = new InboundServer(serverConfig, logger, cache); await svr.start(); await supertest(svr._server) @@ -158,7 +158,7 @@ describe('Inbound Server', () => { async function testQuotesHeaderValidation(contentType, expectedStatusCode, expectedBody = null) { const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const svr = new InboundServer(serverConfig, logger, cache); await svr.start(); const result = await supertest(svr._server) @@ -232,7 +232,7 @@ describe('Inbound Server', () => { serverConfig.validateInboundJws = validateInboundJws; serverConfig.validateInboundPutPartiesJws = validateInboundPutPartiesJws; const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const svr = new InboundServer(serverConfig, logger, cache); await svr.start(); await supertest(svr._server) @@ -249,7 +249,7 @@ describe('Inbound Server', () => { async function testParticipantsHeaderValidation(contentType, expectedStatusCode, expectedBody = null) { const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const svr = new InboundServer(serverConfig, logger, cache); await svr.start(); const result = await supertest(svr._server) @@ -336,7 +336,7 @@ describe('Inbound Server', () => { async function testTlsServer(enableTls) { defConfig.inbound.tls.mutualTLS.enabled = enableTls; const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...defConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: defConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); const server = new InboundServer(defConfig, logger, cache); await server.start(); if (enableTls) { @@ -369,7 +369,7 @@ describe('Inbound Server', () => { fs.writeFileSync(mockFilePath, 'foo-key'); serverConfig.jwsVerificationKeysDirectory = keysDir; const logger = new Logger.Logger({ stringify: () => '' }); - const cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }) }); + const cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); svr = new InboundServer(serverConfig, logger, cache); await svr.start(); }); diff --git a/test/unit/TestServer.test.js b/test/unit/TestServer.test.js index ddcc61fb0..39c344d66 100644 --- a/test/unit/TestServer.test.js +++ b/test/unit/TestServer.test.js @@ -50,7 +50,7 @@ describe('Test Server', () => { ...JSON.parse(JSON.stringify(defaultConfig)), enableTestFeatures: true, }; - cache = new Cache({ ...serverConfig.cacheConfig, logger: logger.push({ component: 'cache' }), enableTestFeatures: true }); + cache = new Cache({ cacheUrl: serverConfig.cacheUrl, logger: logger.push({ component: 'cache' }), enableTestFeatures: true }); testServer = new TestServer({ logger, cache }); await testServer.start(); diff --git a/test/unit/api/accounts/accounts.test.js b/test/unit/api/accounts/accounts.test.js index 77109ee57..7588b9dcd 100644 --- a/test/unit/api/accounts/accounts.test.js +++ b/test/unit/api/accounts/accounts.test.js @@ -35,7 +35,7 @@ describe('Outbound Accounts API', () => { beforeAll(async () => { validatorsInfo = await createValidators(); - redisClient = redis.createClient(); + redisClient = redis.createClient(defaultConfig); }); beforeEach(async () => { @@ -52,7 +52,7 @@ describe('Outbound Accounts API', () => { }); afterAll(async () => { - redisClient.end(); + // redisClient.end(); }); describe('POST /accounts', () => { diff --git a/test/unit/api/transfers/transfers.test.js b/test/unit/api/transfers/transfers.test.js index 2ca4e2c83..0a121938e 100644 --- a/test/unit/api/transfers/transfers.test.js +++ b/test/unit/api/transfers/transfers.test.js @@ -42,7 +42,7 @@ describe('Outbound Transfers API', () => { beforeAll(async () => { validatorsInfo = await createValidators(); - redisClient = redis.createClient(); + redisClient = redis.createClient({ cacheUrl: 'redis://dummy:1234' }); }); beforeEach(async () => { diff --git a/test/unit/api/utils.js b/test/unit/api/utils.js index ec5a02e3b..f1737ce97 100644 --- a/test/unit/api/utils.js +++ b/test/unit/api/utils.js @@ -43,7 +43,7 @@ const createTestServers = async (config) => { const logger = new Logger.Logger({ stringify: () => '' }); const defConfig = JSON.parse(JSON.stringify(config)); const cache = new Cache({ - ...defConfig.cacheConfig, + cacheUrl: defConfig.cacheUrl, logger: logger.push({ component: 'cache' }) }); await cache.connect(); diff --git a/test/unit/config.test.js b/test/unit/config.test.js index f978b0bc2..1ab3085e0 100644 --- a/test/unit/config.test.js +++ b/test/unit/config.test.js @@ -26,8 +26,7 @@ describe('config', () => { env = { ...process.env }; process.env.PEER_ENDPOINT = '172.17.0.3:4000'; process.env.BACKEND_ENDPOINT = '172.17.0.5:4000'; - process.env.CACHE_HOST = '172.17.0.2'; - process.env.CACHE_PORT = '6379'; + process.env.CACHE_URL = 'redis://172.17.0.2:6379'; process.env.MGMT_API_WS_URL = '0.0.0.0'; certDir = fs.mkdtempSync(path.join(os.tmpdir(), 'jest-')); }); diff --git a/test/unit/data/defaultConfig.json b/test/unit/data/defaultConfig.json index 74bf7c48d..80159bdea 100644 --- a/test/unit/data/defaultConfig.json +++ b/test/unit/data/defaultConfig.json @@ -49,10 +49,7 @@ "jwsSignPutParties": false, "jwsSigningKey": "/jwsSigningKey.key", "jwsVerificationKeysDirectory": null, - "cacheConfig": { - "host": "localhost", - "port": 6379 - }, + "cacheUrl": "redis://localhost:6379", "enableTestFeatures": false, "oauthTestServer": { "enabled": false, diff --git a/test/unit/index.test.js b/test/unit/index.test.js index b59f451c1..6ddf33848 100644 --- a/test/unit/index.test.js +++ b/test/unit/index.test.js @@ -23,8 +23,7 @@ const TestControlServer = require('./ControlServer'); process.env.PEER_ENDPOINT = '172.17.0.3:4000'; process.env.BACKEND_ENDPOINT = '172.17.0.5:4000'; -process.env.CACHE_HOST = '172.17.0.2'; -process.env.CACHE_PORT = '6379'; +process.env.CACHE_URL = 'redis://172.17.0.2:6379'; process.env.MGMT_API_WS_URL = '0.0.0.0'; const index = require('~/index.js'); diff --git a/test/unit/lib/cache.test.js b/test/unit/lib/cache.test.js index 62c1a95b6..ac799077f 100644 --- a/test/unit/lib/cache.test.js +++ b/test/unit/lib/cache.test.js @@ -18,9 +18,8 @@ const { Logger } = require('@mojaloop/sdk-standard-components'); const createCache = async() => { const logger = new Logger.Logger({ context: { app: 'model-unit-tests-cache' }, stringify: () => '' }); const cache = new Cache({ - host: 'dummyhost', - port: 1234, - logger, + cacheUrl: 'redis://dummy:1234', + logger, }); await cache.connect(); return cache; @@ -75,11 +74,11 @@ describe('Cache', () => { expect(cbId1).toBe(0); // now we have subscribed, inject a message. - cache.publish(chan1, msg1); + return cache.publish(chan1, msg1); }); }); - // create a second promise that only gets resoled if the second subscription gets the + // create a second promise that only gets resolved if the second subscription gets the // correct message const cb2Promise = new Promise((resolve) => { const mockCb2 = jest.fn((cn, msg) => { @@ -99,7 +98,7 @@ describe('Cache', () => { expect(cbId2).toBe(1); // now we have subscribed, inject a message. - cache.publish(chan2, msg2); + return cache.publish(chan2, msg2); }); }); diff --git a/test/unit/lib/model/AccountsModel.test.js b/test/unit/lib/model/AccountsModel.test.js index 48d7eae99..fd8404c50 100644 --- a/test/unit/lib/model/AccountsModel.test.js +++ b/test/unit/lib/model/AccountsModel.test.js @@ -93,10 +93,9 @@ describe('AccountsModel', () => { beforeEach(async () => { cache = new Cache({ - host: 'dummycachehost', - port: 1234, - logger, - }); + cacheUrl: 'redis://dummy:1234', + logger, + }); await cache.connect(); }); diff --git a/test/unit/lib/model/InboundTransfersModel.test.js b/test/unit/lib/model/InboundTransfersModel.test.js index 14e3d45c4..6d7f6fe6a 100644 --- a/test/unit/lib/model/InboundTransfersModel.test.js +++ b/test/unit/lib/model/InboundTransfersModel.test.js @@ -65,8 +65,7 @@ describe('inboundModel', () => { })); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -134,8 +133,7 @@ describe('inboundModel', () => { BackendRequests.__postBulkQuotes = jest.fn().mockReturnValue(Promise.resolve(mockArgs.internalBulkQuoteResponse)); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -191,8 +189,7 @@ describe('inboundModel', () => { BackendRequests.__postTransactionRequests = jest.fn().mockReturnValue(Promise.resolve(mockTxnReqArgs.internalTransactionRequestResponse)); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -228,8 +225,7 @@ describe('inboundModel', () => { BackendRequests.__getOTP = jest.fn().mockReturnValue(Promise.resolve(mockArgs.internalGetOTPResponse)); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -270,8 +266,7 @@ describe('inboundModel', () => { })); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -549,8 +544,7 @@ describe('inboundModel', () => { BackendRequests.__postBulkTransfers = jest.fn().mockReturnValue(Promise.resolve({})); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -729,8 +723,7 @@ describe('inboundModel', () => { beforeEach(async () => { cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); @@ -761,7 +754,7 @@ describe('inboundModel', () => { expect(call[0]).toEqual(expectedRequest); expect(call[1]).toEqual(transferId); }); - + test('sends ABORTED notification to fsp backend', async () => { BackendRequests.__putTransfersNotification = jest.fn().mockReturnValue(Promise.resolve({})); const notif = JSON.parse(JSON.stringify(notificationAbortedToPayee)); @@ -783,7 +776,7 @@ describe('inboundModel', () => { expect(call[0]).toEqual(expectedRequest); expect(call[1]).toEqual(transferId); }); - + test('sends RESERVED notification to fsp backend', async () => { BackendRequests.__putTransfersNotification = jest.fn().mockReturnValue(Promise.resolve({})); const notif = JSON.parse(JSON.stringify(notificationReservedToPayee)); @@ -804,16 +797,15 @@ describe('inboundModel', () => { const call = BackendRequests.__putTransfersNotification.mock.calls[0]; expect(call[0]).toEqual(expectedRequest); expect(call[1]).toEqual(transferId); - }); - + }); + }); describe('error handling:', () => { let cache; beforeEach(async () => { cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); diff --git a/test/unit/lib/model/OutboundBulkQuotesModel.test.js b/test/unit/lib/model/OutboundBulkQuotesModel.test.js index 67e333d18..c3bb09716 100644 --- a/test/unit/lib/model/OutboundBulkQuotesModel.test.js +++ b/test/unit/lib/model/OutboundBulkQuotesModel.test.js @@ -91,10 +91,9 @@ describe('OutboundBulkQuotesModel', () => { MojaloopRequests.__putBulkQuotesError = jest.fn(() => Promise.resolve()); cache = new Cache({ - host: 'dummycachehost', - port: 1234, - logger, - }); + cacheUrl: 'redis://dummy:1234', + logger, + }); await cache.connect(); }); diff --git a/test/unit/lib/model/OutboundBulkTransfersModel.test.js b/test/unit/lib/model/OutboundBulkTransfersModel.test.js index 80d10ab02..7d5346865 100644 --- a/test/unit/lib/model/OutboundBulkTransfersModel.test.js +++ b/test/unit/lib/model/OutboundBulkTransfersModel.test.js @@ -83,8 +83,7 @@ describe('outboundBulkTransferModel', () => { MojaloopRequests.__postBulkTransfers = jest.fn(() => Promise.resolve()); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); diff --git a/test/unit/lib/model/OutboundRequestToPayModel.test.js b/test/unit/lib/model/OutboundRequestToPayModel.test.js index 9b4d50138..20dcc9531 100644 --- a/test/unit/lib/model/OutboundRequestToPayModel.test.js +++ b/test/unit/lib/model/OutboundRequestToPayModel.test.js @@ -71,10 +71,9 @@ describe('outboundModel', () => { MojaloopRequests.__postTransactionRequests = jest.fn(() => Promise.resolve()); cache = new Cache({ - host: 'dummycachehost', - port: 1234, - logger, - }); + cacheUrl: 'redis://dummy:1234', + logger, + }); await cache.connect(); }); diff --git a/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js b/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js index dcb4b3df5..7fb2466be 100644 --- a/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +++ b/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js @@ -71,10 +71,9 @@ describe('outboundRequestToPayTransferModel', () => { MojaloopRequests.__postTransfers = jest.fn(() => Promise.resolve()); cache = new Cache({ - host: 'dummycachehost', - port: 1234, - logger, - }); + cacheUrl: 'redis://dummy:1234', + logger, + }); await cache.connect(); }); diff --git a/test/unit/lib/model/OutboundTransfersModel.test.js b/test/unit/lib/model/OutboundTransfersModel.test.js index b3349ab7d..541dca3f9 100644 --- a/test/unit/lib/model/OutboundTransfersModel.test.js +++ b/test/unit/lib/model/OutboundTransfersModel.test.js @@ -163,8 +163,7 @@ describe('outboundModel', () => { } })); cache = new Cache({ - host: 'dummycachehost', - port: 1234, + cacheUrl: 'redis://dummy:1234', logger, }); await cache.connect(); diff --git a/test/unit/lib/model/common/PersistentStateMachine.test.js b/test/unit/lib/model/common/PersistentStateMachine.test.js index cd4d522fd..9d187c75a 100644 --- a/test/unit/lib/model/common/PersistentStateMachine.test.js +++ b/test/unit/lib/model/common/PersistentStateMachine.test.js @@ -72,10 +72,9 @@ describe('PersistentStateMachine', () => { data = { the: 'data' }; cache = new Cache({ - host: 'dummycachehost', - port: 1234, - logger, - }); + cacheUrl: 'redis://dummy:1234', + logger, + }); // mock cache set & get cache.get = jest.fn(async () => data); cache.set = jest.fn(async () => 'cache set replies'); diff --git a/test/unit/lib/model/data/defaultConfig.json b/test/unit/lib/model/data/defaultConfig.json index 2b2e1bc99..7ec677686 100644 --- a/test/unit/lib/model/data/defaultConfig.json +++ b/test/unit/lib/model/data/defaultConfig.json @@ -38,10 +38,7 @@ "jwsSignPutParties": false, "jwsSigningKey": "/jwsSigningKey.key", "jwsVerificationKeysDirectory": null, - "cacheConfig": { - "host": "localhost", - "port": 6379 - }, + "cacheUrl": "redis://localhost:6379", "enableTestFeatures": false, "oauthTestServer": { "enabled": false, From 0c70d0e3526fe03d2fef1049556e96279268699f Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 15:33:04 +0300 Subject: [PATCH 09/39] fix api call. --- src/lib/cache.js | 2 +- test/__mocks__/redis.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/cache.js b/src/lib/cache.js index 3c2d5c96d..e619ffcb4 100644 --- a/src/lib/cache.js +++ b/src/lib/cache.js @@ -101,7 +101,7 @@ class Cache { this._logger .push({ 'notify-keyspace-events': mode }) .log('Configuring Redis to emit keyevent events'); - this._client.config('SET', 'notify-keyspace-events', mode); + await this._client.configSet('notify-keyspace-events', mode); } async disconnect() { diff --git a/test/__mocks__/redis.js b/test/__mocks__/redis.js index f849faca0..cbd32d590 100644 --- a/test/__mocks__/redis.js +++ b/test/__mocks__/redis.js @@ -70,7 +70,7 @@ class RedisClient extends redisMock.RedisClient { return promisify(super.smembers.bind(this))(...args); } - config() {} + configSet() {} } module.exports = { From fd03323cbe267c16d8c90c3a8b9abe9aa7ff743e Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 15:36:59 +0300 Subject: [PATCH 10/39] fix audit errors. --- audit-resolve.json | 652 +++------------------------------------------ 1 file changed, 30 insertions(+), 622 deletions(-) diff --git a/audit-resolve.json b/audit-resolve.json index 274f05a15..15fa1a544 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -1,660 +1,68 @@ { "decisions": { - "1556|@mojaloop/central-services-shared>widdershins>node-fetch": { - "decision": "fix", - "madeAt": 1624032509533 - }, - "1589|@mojaloop/central-services-shared>rc>ini": { - "decision": "fix", - "madeAt": 1624032519962 - }, - "1654|@mojaloop/central-services-shared>widdershins>swagger2openapi>yargs>y18n": { - "decision": "fix", - "madeAt": 1624032531602 - }, - "1654|@mojaloop/central-services-shared>widdershins>yargs>y18n": { - "decision": "fix", - "madeAt": 1624032531602 - }, - "1673|@mojaloop/central-services-shared>openapi-backend>lodash": { - "decision": "fix", - "madeAt": 1624032541954 - }, - "1673|@mojaloop/central-services-shared>shins>sanitize-html>lodash": { - "decision": "fix", - "madeAt": 1624032541954 - }, - "1673|koa2-oauth-server>00unidentified>lodash": { - "decision": "fix", - "madeAt": 1624032544849 - }, - "1500|@mojaloop/central-services-shared>widdershins>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1631785234887, - "expiresAt": 1632390016480 - }, - "1675|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1631785236962, - "expiresAt": 1632390016480 - }, - "1676|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1631785236962, - "expiresAt": 1632390016480 - }, - "1766|@mojaloop/central-services-shared>widdershins>urijs": { - "decision": "fix", - "madeAt": 1627405029179 - }, - "1779|@mojaloop/event-sdk>grpc>@mapbox/node-pre-gyp>tar": { - "decision": "fix", - "madeAt": 1631785230676 - }, - "1780|@mojaloop/event-sdk>grpc>@mapbox/node-pre-gyp>tar": { - "decision": "fix", - "madeAt": 1631785230676 - }, - "1781|@mojaloop/event-sdk>grpc>@mapbox/node-pre-gyp>tar": { - "decision": "fix", - "madeAt": 1631785230676 - }, - "1002401|@mojaloop/event-sdk>@grpc/proto-loader>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>wrap-ansi>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/event-sdk>@grpc/proto-loader>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/event-sdk>@grpc/proto-loader>yargs>cliui>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716056413, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716073663, - "expiresAt": 1637308004771 - }, - "1002401|@mojaloop/central-services-shared>widdershins>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1634716073664, - "expiresAt": 1637308004771 - }, - "1002865|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1634716077764, - "expiresAt": 1637308004771 - }, - "1002866|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1634716077764, - "expiresAt": 1637308004771 - }, - "1003019|@mojaloop/central-services-shared>widdershins>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1634716081521, - "expiresAt": 1637308004771 - }, - "1004946|@mojaloop/event-sdk>@grpc/proto-loader>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175753, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175753, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175753, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175753, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>wrap-ansi>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/event-sdk>@grpc/proto-loader>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004946|@mojaloop/event-sdk>@grpc/proto-loader>yargs>cliui>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879175754, - "expiresAt": 1647471172307 - }, - "1004854|@mojaloop/central-services-shared>widdershins>openapi-sampler>json-pointer": { - "decision": "ignore", - "madeAt": 1644879153322, - "expiresAt": 1647471110577 - }, - "1004869|@mojaloop/central-services-shared>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1644879154472, - "expiresAt": 1647471110577 - }, - "1004869|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1644879154472, - "expiresAt": 1647471110577 - }, - "1004946|@mojaloop/central-services-shared>widdershins>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879155619, - "expiresAt": 1647471110577 - }, - "1004946|@mojaloop/central-services-shared>widdershins>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1644879155619, - "expiresAt": 1647471110577 - }, - "1005383|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1644879156746, - "expiresAt": 1647471110577 - }, - "1005384|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1644879156746, - "expiresAt": 1647471110577 - }, - "1005534|@mojaloop/central-services-shared>widdershins>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1644879157837, - "expiresAt": 1647471110577 - }, - "1006865|axios>follow-redirects": { - "decision": "fix", - "madeAt": 1644879138577 - }, - "1006865|@mojaloop/central-services-shared>axios>follow-redirects": { - "decision": "fix", - "madeAt": 1644879138577 - }, - "1007023|axios>follow-redirects": { - "decision": "fix", - "madeAt": 1644879138577 - }, - "1007023|@mojaloop/central-services-shared>axios>follow-redirects": { - "decision": "fix", - "madeAt": 1644879138577 - }, - "1006899|@mojaloop/central-services-shared>widdershins>node-fetch": { - "decision": "fix", - "madeAt": 1644879149946 - }, - "1006899|@mojaloop/event-sdk>grpc>@mapbox/node-pre-gyp>node-fetch": { - "decision": "fix", - "madeAt": 1644879149946 - }, - "1006846|@mojaloop/central-services-shared>shins>sanitize-html>postcss": { - "decision": "ignore", - "madeAt": 1644879158938, - "expiresAt": 1647471110577 - }, - "1006886|@mojaloop/central-services-shared>shins>markdown-it": { - "decision": "ignore", - "madeAt": 1644879160175, - "expiresAt": 1647471110577 - }, - "1007017|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>ajv": { - "decision": "ignore", - "madeAt": 1644879161354, - "expiresAt": 1647471110577 - }, - "1064587|@mojaloop/central-services-shared>widdershins>urijs": { - "decision": "fix", - "madeAt": 1647565572809 - }, - "1064606|@mojaloop/central-services-shared>widdershins>urijs": { - "decision": "fix", - "madeAt": 1647565572809 - }, - "1067233|@mojaloop/central-services-shared>widdershins>urijs": { - "decision": "fix", - "madeAt": 1647565572809 - }, - "1064843|@mojaloop/event-sdk>@grpc/proto-loader>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>wrap-ansi>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/event-sdk>@grpc/proto-loader>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608486, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>oas-resolver>yargs>cliui>wrap-ansi>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608487, - "expiresAt": 1650157604921 - }, - "1064843|@mojaloop/event-sdk>@grpc/proto-loader>yargs>cliui>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565608487, - "expiresAt": 1650157604921 - }, - "1064661|@mojaloop/central-services-shared>shins>markdown-it": { - "decision": "ignore", - "madeAt": 1647565592292, - "expiresAt": 1650157555692 - }, - "1064744|@mojaloop/central-services-shared>widdershins>openapi-sampler>json-pointer": { - "decision": "ignore", - "madeAt": 1647565593879, - "expiresAt": 1650157555692 - }, - "1064761|@mojaloop/central-services-shared>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1647565594838, - "expiresAt": 1650157555692 - }, - "1064761|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1647565594838, - "expiresAt": 1650157555692 - }, - "1064843|@mojaloop/central-services-shared>widdershins>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565599016, - "expiresAt": 1650157555692 - }, - "1064843|@mojaloop/central-services-shared>widdershins>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "ignore", - "madeAt": 1647565599016, - "expiresAt": 1650157555692 - }, - "1065159|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>ajv": { - "decision": "ignore", - "madeAt": 1647565600359, - "expiresAt": 1650157555692 - }, - "1065367|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1647565601450, - "expiresAt": 1650157555692 - }, - "1065368|@mojaloop/central-services-shared>shins>sanitize-html": { - "decision": "ignore", - "madeAt": 1647565601450, - "expiresAt": 1650157555692 - }, - "1065523|@mojaloop/central-services-shared>widdershins>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1647565602524, - "expiresAt": 1650157555692 - }, - "1069972|@mojaloop/central-services-shared>@mojaloop/event-sdk>moment": { - "decision": "ignore", - "madeAt": 1649898254012, - "expiresAt": 1652490250295 - }, - "1069972|@mojaloop/event-sdk>moment": { - "decision": "ignore", - "madeAt": 1649898254012, - "expiresAt": 1652490250295 - }, - "1067456|@mojaloop/central-services-shared>widdershins>markdown-it": { - "decision": "ignore", - "madeAt": 1649898255401, - "expiresAt": 1652490250295 - }, - "1068310|@mojaloop/central-services-shared>widdershins>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1654208208192, - "expiresAt": 1656800189114 - }, - "1067946|ajv": { - "decision": "ignore", - "madeAt": 1649898257344, - "expiresAt": 1652490250295 - }, - "1070030|@mojaloop/central-services-shared>widdershins>markdown-it": { - "decision": "ignore", - "madeAt": 1652982823332, - "expiresAt": 1655574816261 - }, - "1070030|@mojaloop/central-services-shared>shins>markdown-it": { - "decision": "ignore", - "madeAt": 1654208210848, - "expiresAt": 1656800189114 - }, - "1068154|@mojaloop/central-services-shared>shins>sanitize-html": { + "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { "decision": "ignore", - "madeAt": 1650459474362, - "expiresAt": 1653051469252 + "madeAt": 1656678986448 }, - "1068155|@mojaloop/central-services-shared>shins>sanitize-html": { + "1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { "decision": "ignore", - "madeAt": 1654208203284, - "expiresAt": 1656800189114 + "madeAt": 1656678989848 }, - "1070245|@mojaloop/central-services-shared>@mojaloop/event-sdk>moment": { + "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": { "decision": "ignore", - "madeAt": 1651072086111, - "expiresAt": 1653664079920 + "madeAt": 1656678992376 }, - "1070245|@mojaloop/event-sdk>moment": { + "1070412|ejs": { "decision": "ignore", - "madeAt": 1651072086111, - "expiresAt": 1653664079920 + "madeAt": 1656678992376 }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>moment>shins>markdown-it": { + "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": { "decision": "ignore", - "madeAt": 1651072088351, - "expiresAt": 1653664079920 + "madeAt": 1656678994778 }, "1070030|widdershins>markdown-it": { "decision": "ignore", - "madeAt": 1654209004788, - "expiresAt": 1656800991863 + "madeAt": 1656678994778 }, - "1068154|@mojaloop/central-services-shared>@mojaloop/event-sdk>moment>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1651072089481, - "expiresAt": 1653664079920 - }, - "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>moment>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1651072090420, - "expiresAt": 1653664079920 - }, - "1070250|ansi-regex": { - "decision": "ignore", - "madeAt": 1651072091389, - "expiresAt": 1653664079920 - }, - "1070252|ansi-regex": { + "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { "decision": "ignore", - "madeAt": 1651072092335, - "expiresAt": 1653664079920 + "madeAt": 1656678996760 }, - "1070256|ejs": { + "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { "decision": "ignore", - "madeAt": 1651072093304, - "expiresAt": 1653664079920 + "madeAt": 1656678998753 }, - "1067536|json-pointer": { + "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { "decision": "ignore", - "madeAt": 1651072094695, - "expiresAt": 1653664079920 + "madeAt": 1656679000803 }, "1067553|swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "postpone", - "madeAt": 1656596524528 - }, - "1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { - "decision": "postpone", - "madeAt": 1656596525090 - }, - "1068310|widdershins>markdown-it>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1654209017825, - "expiresAt": 1656800991863 - }, - "1070260|@mojaloop/central-services-shared>shins>sanitize-html": { "decision": "ignore", - "madeAt": 1654208205836, - "expiresAt": 1656800189114 + "madeAt": 1656679000803 }, - "1068155|@mojaloop/central-services-shared>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1652981366297, - "expiresAt": 1655573359219 - }, - "1070260|@mojaloop/central-services-shared>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1652981367363, - "expiresAt": 1655573359219 - }, - "1070030|shins>markdown-it": { - "decision": "ignore", - "madeAt": 1654872421648, - "expiresAt": 1657464405390 - }, - "1068310|@mojaloop/central-services-shared>widdershins>markdown-it>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1652982824567, - "expiresAt": 1655574816261 - }, - "1068155|shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1652982826025, - "expiresAt": 1655574816261 - }, - "1070260|shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1652982827137, - "expiresAt": 1655574816261 - }, - "1067553|@mojaloop/central-services-shared>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1654208197641, - "expiresAt": 1656800189114 - }, - "1067553|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1654208197642, - "expiresAt": 1656800189114 - }, - "1067946|@mojaloop/central-services-shared>widdershins>swagger2openapi>oas-validator>ajv": { - "decision": "ignore", - "madeAt": 1654208200360, - "expiresAt": 1656800189114 - }, - "1070412|@mojaloop/central-services-shared>shins>ejs": { - "decision": "ignore", - "madeAt": 1654208217831, - "expiresAt": 1656800189114 - }, - "1070449|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { - "decision": "ignore", - "madeAt": 1654209002758, - "expiresAt": 1656800991863 - }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it": { - "decision": "ignore", - "madeAt": 1654209004788, - "expiresAt": 1656800991863 - }, - "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1654209006663, - "expiresAt": 1656800991863 - }, - "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": { + "1067553|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer": { "decision": "ignore", - "madeAt": 1654209008676, - "expiresAt": 1656800991863 - }, - "1070412|ejs": { - "decision": "postpone", - "madeAt": 1656596500726 + "madeAt": 1656679000804 }, - "1070483|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { + "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": { "decision": "ignore", - "madeAt": 1654872419659, - "expiresAt": 1657464405390 + "madeAt": 1656679005322 }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>widdershins>markdown-it": { + "1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { "decision": "ignore", - "madeAt": 1654872421648, - "expiresAt": 1657464405390 + "madeAt": 1656679005322 }, - "1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>widdershins>markdown-it>yargs>yargs-parser": { + "1067946|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { "decision": "ignore", - "madeAt": 1654872423852, - "expiresAt": 1657464405390 - }, - "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { - "decision": "postpone", - "madeAt": 1656596498420 - }, - "1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { - "decision": "postpone", - "madeAt": 1656596499491 - }, - "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": { - "decision": "postpone", - "madeAt": 1656596500726 - }, - "1070412|shins>ejs": { - "decision": "postpone", - "madeAt": 1656596500726 - }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": { - "decision": "postpone", - "madeAt": 1656596501402 - }, - "1070030|shins>ejs>markdown-it": { - "decision": "postpone", - "madeAt": 1656596501402 - }, - "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { - "decision": "postpone", - "madeAt": 1656596501969 - }, - "1068155|shins>ejs>markdown-it>sanitize-html": { - "decision": "postpone", - "madeAt": 1656596501969 - }, - "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { - "decision": "postpone", - "madeAt": 1656596502516 - }, - "1070260|shins>ejs>markdown-it>sanitize-html": { - "decision": "postpone", - "madeAt": 1656596502517 - }, - "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "postpone", - "madeAt": 1656596524528 - }, - "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": { - "decision": "postpone", - "madeAt": 1656596525090 + "madeAt": 1656679005322 }, "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": { - "decision": "postpone", - "madeAt": 1656596525465 - }, - "1067553|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "postpone", - "madeAt": 1656596524528 - }, - "1067946|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { - "decision": "postpone", - "madeAt": 1656596525090 + "decision": "ignore", + "madeAt": 1656679007475 }, "1068310|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": { - "decision": "postpone", - "madeAt": 1656596525465 + "decision": "ignore", + "madeAt": 1656679007475 } }, "rules": {}, From 300d60ab1154c99427eca302a6070cc95b4d9e47 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 15:39:19 +0300 Subject: [PATCH 11/39] bump version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7451b1add..0ea0f656a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.1.0", + "version": "16.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.1.0", + "version": "16.0.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 21f4030e6..7fa59eaf5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.1.0", + "version": "16.0.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 7594667a8d16ee8ac0cb78088757c9af754904ab Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 15:53:06 +0300 Subject: [PATCH 12/39] fix audit errors. --- audit-resolve.json | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/audit-resolve.json b/audit-resolve.json index 15fa1a544..9b937e88b 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -10,15 +10,15 @@ }, "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": { "decision": "ignore", - "madeAt": 1656678992376 + "madeAt": 1656679958470 }, "1070412|ejs": { "decision": "ignore", - "madeAt": 1656678992376 + "madeAt": 1656679958471 }, "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": { "decision": "ignore", - "madeAt": 1656678994778 + "madeAt": 1656679961621 }, "1070030|widdershins>markdown-it": { "decision": "ignore", @@ -26,11 +26,11 @@ }, "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { "decision": "ignore", - "madeAt": 1656678996760 + "madeAt": 1656679964361 }, "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { "decision": "ignore", - "madeAt": 1656678998753 + "madeAt": 1656679966871 }, "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { "decision": "ignore", @@ -63,6 +63,22 @@ "1068310|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": { "decision": "ignore", "madeAt": 1656679007475 + }, + "1070412|shins>ejs": { + "decision": "ignore", + "madeAt": 1656679958471 + }, + "1070030|shins>ejs>markdown-it": { + "decision": "ignore", + "madeAt": 1656679961621 + }, + "1068155|shins>ejs>markdown-it>sanitize-html": { + "decision": "ignore", + "madeAt": 1656679964361 + }, + "1070260|shins>ejs>markdown-it>sanitize-html": { + "decision": "ignore", + "madeAt": 1656679966871 } }, "rules": {}, From a663d9f3251d511842ef0886e17db3a981769e46 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 15:57:47 +0300 Subject: [PATCH 13/39] update packages. --- package-lock.json | 72 +++++++++++++++++++++++------------------------ package.json | 8 +++--- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ea0f656a..0bf4d3184 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "prom-client": "^14.0.1", "promise-timeout": "^1.3.0", "random-word-slugs": "^0.1.6", - "redis": "^4.1.0", + "redis": "^4.1.1", "uuidv4": "^6.2.12", "ws": "^8.8.0" }, @@ -40,7 +40,7 @@ "@babel/preset-env": "^7.18.6", "@mojaloop/api-snippets": "^14.0.0", "@redocly/openapi-cli": "^1.0.0-beta.59", - "@types/jest": "^28.1.3", + "@types/jest": "^28.1.4", "babel-jest": "^28.1.2", "eslint": "^8.18.0", "eslint-config-airbnb-base": "^15.0.0", @@ -48,9 +48,9 @@ "eslint-plugin-jest": "^26.5.3", "jest": "^28.1.2", "jest-junit": "^14.0.0", - "nock": "^13.1.3", + "nock": "^13.2.8", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^15.0.0", + "npm-check-updates": "^15.0.1", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", @@ -3434,9 +3434,9 @@ } }, "node_modules/@redis/client": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.0.tgz", - "integrity": "sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.1.tgz", + "integrity": "sha512-IGGyazghVYuqsXv7/AxzMS0HmCPj0JRQX4l0XZ52BdJTUv2lNSnPgfWEE65HnC2gZCEO7STyaJbNultn1i0Y3g==", "dependencies": { "cluster-key-slot": "1.1.0", "generic-pool": "3.8.2", @@ -3786,9 +3786,9 @@ } }, "node_modules/@types/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==", + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.4.tgz", + "integrity": "sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==", "dev": true, "dependencies": { "jest-matcher-utils": "^28.0.0", @@ -12851,9 +12851,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node_modules/nock": { - "version": "13.2.7", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.7.tgz", - "integrity": "sha512-R6NUw7RIPtKwgK7jskuKoEi4VFMqIHtV2Uu9K/Uegc4TA5cqe+oNMYslZcUmnVNQCTG6wcSqUBaGTDd7sq5srg==", + "version": "13.2.8", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.8.tgz", + "integrity": "sha512-JT42FrXfQRpfyL4cnbBEJdf4nmBpVP0yoCcSBr+xkT8Q1y3pgtaCKHGAAOIFcEJ3O3t0QbVAmid0S0f2bj3Wpg==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -13115,9 +13115,9 @@ } }, "node_modules/npm-check-updates": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.0.tgz", - "integrity": "sha512-m1bvBaZO0fa+rnBvVmKYjmBA4iECWArc/sO28xyghflCq95w5zg3NdM6JPWeCB3v8uezp+owLdO4SQfHW6X6zA==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.1.tgz", + "integrity": "sha512-sQcWKnylLVeP+Ys0c22uCKwo4RSgirgZ16qZK2qBxd04LYYTO9ZeM3HLZgaO8CLd9NJOYXLZAA2CTLRO3up7qg==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -15131,12 +15131,12 @@ } }, "node_modules/redis": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.0.tgz", - "integrity": "sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.1.tgz", + "integrity": "sha512-vVLYD0RMiDH4YQ1dtmtNU0RX5MAsvEA35Wj+4ZhrSNZXtGK87ktQ0lmI3O3Qn/omoIW456wfOUanqI/RNxagLw==", "dependencies": { "@redis/bloom": "1.0.2", - "@redis/client": "1.1.0", + "@redis/client": "1.1.1", "@redis/graph": "1.0.1", "@redis/json": "1.0.3", "@redis/search": "1.0.6", @@ -20797,9 +20797,9 @@ "requires": {} }, "@redis/client": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.0.tgz", - "integrity": "sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.1.tgz", + "integrity": "sha512-IGGyazghVYuqsXv7/AxzMS0HmCPj0JRQX4l0XZ52BdJTUv2lNSnPgfWEE65HnC2gZCEO7STyaJbNultn1i0Y3g==", "requires": { "cluster-key-slot": "1.1.0", "generic-pool": "3.8.2", @@ -21110,9 +21110,9 @@ } }, "@types/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==", + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.4.tgz", + "integrity": "sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==", "dev": true, "requires": { "jest-matcher-utils": "^28.0.0", @@ -28002,9 +28002,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nock": { - "version": "13.2.7", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.7.tgz", - "integrity": "sha512-R6NUw7RIPtKwgK7jskuKoEi4VFMqIHtV2Uu9K/Uegc4TA5cqe+oNMYslZcUmnVNQCTG6wcSqUBaGTDd7sq5srg==", + "version": "13.2.8", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.8.tgz", + "integrity": "sha512-JT42FrXfQRpfyL4cnbBEJdf4nmBpVP0yoCcSBr+xkT8Q1y3pgtaCKHGAAOIFcEJ3O3t0QbVAmid0S0f2bj3Wpg==", "dev": true, "requires": { "debug": "^4.1.0", @@ -28206,9 +28206,9 @@ } }, "npm-check-updates": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.0.tgz", - "integrity": "sha512-m1bvBaZO0fa+rnBvVmKYjmBA4iECWArc/sO28xyghflCq95w5zg3NdM6JPWeCB3v8uezp+owLdO4SQfHW6X6zA==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.1.tgz", + "integrity": "sha512-sQcWKnylLVeP+Ys0c22uCKwo4RSgirgZ16qZK2qBxd04LYYTO9ZeM3HLZgaO8CLd9NJOYXLZAA2CTLRO3up7qg==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -29756,12 +29756,12 @@ } }, "redis": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.0.tgz", - "integrity": "sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.1.tgz", + "integrity": "sha512-vVLYD0RMiDH4YQ1dtmtNU0RX5MAsvEA35Wj+4ZhrSNZXtGK87ktQ0lmI3O3Qn/omoIW456wfOUanqI/RNxagLw==", "requires": { "@redis/bloom": "1.0.2", - "@redis/client": "1.1.0", + "@redis/client": "1.1.1", "@redis/graph": "1.0.1", "@redis/json": "1.0.3", "@redis/search": "1.0.6", diff --git a/package.json b/package.json index 7fa59eaf5..4639431a1 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "prom-client": "^14.0.1", "promise-timeout": "^1.3.0", "random-word-slugs": "^0.1.6", - "redis": "^4.1.0", + "redis": "^4.1.1", "uuidv4": "^6.2.12", "ws": "^8.8.0" }, @@ -85,7 +85,7 @@ "@babel/preset-env": "^7.18.6", "@mojaloop/api-snippets": "^14.0.0", "@redocly/openapi-cli": "^1.0.0-beta.59", - "@types/jest": "^28.1.3", + "@types/jest": "^28.1.4", "babel-jest": "^28.1.2", "eslint": "^8.18.0", "eslint-config-airbnb-base": "^15.0.0", @@ -93,9 +93,9 @@ "eslint-plugin-jest": "^26.5.3", "jest": "^28.1.2", "jest-junit": "^14.0.0", - "nock": "^13.1.3", + "nock": "^13.2.8", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^15.0.0", + "npm-check-updates": "^15.0.1", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", From 0646b348629cc05bf36d917fc81eccc7b7310931 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 16:25:45 +0300 Subject: [PATCH 14/39] fix audit errors. --- audit-resolve.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/audit-resolve.json b/audit-resolve.json index 9b937e88b..79c1f9057 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -22,7 +22,7 @@ }, "1070030|widdershins>markdown-it": { "decision": "ignore", - "madeAt": 1656678994778 + "madeAt": 1656681873020 }, "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { "decision": "ignore", @@ -79,6 +79,22 @@ "1070260|shins>ejs>markdown-it>sanitize-html": { "decision": "ignore", "madeAt": 1656679966871 + }, + "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it": { + "decision": "ignore", + "madeAt": 1656681873020 + }, + "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": { + "decision": "ignore", + "madeAt": 1656681876693 + }, + "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": { + "decision": "ignore", + "madeAt": 1656681880214 + }, + "1068310|widdershins>markdown-it>yargs>yargs-parser": { + "decision": "ignore", + "madeAt": 1656681883038 } }, "rules": {}, From ca1e25e5998fefa6d9fa911641b22998bdc6f2e1 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 17:29:09 +0300 Subject: [PATCH 15/39] revert version change. --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0bf4d3184..e20c4b8ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "16.0.0", + "version": "15.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "16.0.0", + "version": "15.0.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 4639431a1..3984ac651 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "16.0.0", + "version": "15.0.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From b6bdae034f1c27332c701c1b4671c4e26c6d5fce Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Fri, 1 Jul 2022 18:01:41 +0300 Subject: [PATCH 16/39] uncomment test feature. --- src/lib/cache.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/cache.js b/src/lib/cache.js index e619ffcb4..23a37714f 100644 --- a/src/lib/cache.js +++ b/src/lib/cache.js @@ -219,7 +219,7 @@ class Cache { // This is required here in the advent of a disconnect/reconnect event. Redis client will re-subscribe all subscriptions, but previously enabledTestFeatures will be lost. // Handling this on the on subscribe event will ensure its always configured. if (this._config.enableTestFeatures) { - // this.setTestMode(true); + this.setTestMode(true); } }); From d5bb66adb600bdf56fcaf33e6fae2612467e3108 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Fri, 1 Jul 2022 15:34:35 +0000 Subject: [PATCH 17/39] chore(release): 15.0.1 [skip ci] --- CHANGELOG.md | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02d2f518f..1a9589562 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +### [15.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.0...v15.0.1) (2022-07-01) + ## [15.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v14.0.0...v15.0.0) (2022-06-17) diff --git a/package-lock.json b/package-lock.json index e20c4b8ff..086b96337 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.0", + "version": "15.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.0", + "version": "15.0.1", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 3984ac651..90faff9d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.0", + "version": "15.0.1", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From ff0f29b7ce560565ee21cf6ae84118e1b391b5b5 Mon Sep 17 00:00:00 2001 From: Kevin Leyow Date: Fri, 1 Jul 2022 10:52:47 -0500 Subject: [PATCH 18/39] chore!: add dummy pr to major version bump due to unsquashed title (#327) chore(snapshot): 15.0.2-snapshot.0 --- package-lock.json | 4 ++-- package.json | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 086b96337..0079f4484 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.1", + "version": "15.0.2-snapshot.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.1", + "version": "15.0.2-snapshot.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 90faff9d0..8acf7b28c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.1", + "version": "15.0.2-snapshot.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", @@ -29,7 +29,8 @@ "updates:update": "npm run dep:update && npm install", "dep:check": "npx ncu -e 2", "dep:update": "npx ncu -u", - "release": "standard-version --releaseCommitMessageFormat 'chore(release): {{currentTag}} [skip ci]'" + "release": "standard-version --releaseCommitMessageFormat 'chore(release): {{currentTag}} [skip ci]'", + "snapshot": "standard-version --no-verify --skip.changelog --prerelease snapshot --releaseCommitMessageFormat 'chore(snapshot): {{currentTag}}'" }, "author": "Matt Kingston, James Bush, ModusBox Inc.", "contributors": [ From 0071c65c3665239d0a482e76498f9eec5c288043 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Fri, 1 Jul 2022 16:02:36 +0000 Subject: [PATCH 19/39] chore(release): 16.0.0 [skip ci] --- CHANGELOG.md | 11 +++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a9589562..98f3a3118 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +## [16.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v16.0.0) (2022-07-01) + + +### ⚠ BREAKING CHANGES + +* add dummy pr to major version bump due to unsquashed title (#327) + +### Chore + +* 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)) + ### [15.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.0...v15.0.1) (2022-07-01) ## [15.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v14.0.0...v15.0.0) (2022-06-17) diff --git a/package-lock.json b/package-lock.json index 0079f4484..0bf4d3184 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.2-snapshot.0", + "version": "16.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.2-snapshot.0", + "version": "16.0.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 8acf7b28c..069385518 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "15.0.2-snapshot.0", + "version": "16.0.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 64faddea8307aa0c19d56466d0afe8f8208c4d66 Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Mon, 4 Jul 2022 15:52:04 +0300 Subject: [PATCH 20/39] feat: suppress health check logs (#328) Suppress health check logs. --- src/InboundServer/index.js | 6 ++++-- src/InboundServer/middlewares.js | 16 ++++++++++++---- src/OutboundServer/index.js | 5 +++-- src/OutboundServer/middlewares.js | 8 ++++++-- src/TestServer/index.js | 6 ++++-- src/lib/metrics.js | 2 -- src/lib/router.js | 4 +++- src/lib/validate.js | 11 ++++++++++- 8 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/InboundServer/index.js b/src/InboundServer/index.js index fe50e0825..98e83b1f1 100644 --- a/src/InboundServer/index.js +++ b/src/InboundServer/index.js @@ -23,6 +23,8 @@ const router = require('../lib/router'); const handlers = require('./handlers'); const middlewares = require('./middlewares'); +const logExcludePaths = ['/']; + class InboundApi extends EventEmitter { constructor(conf, logger, cache, validator, wso2) { super({ captureExceptions: true }); @@ -99,7 +101,7 @@ class InboundApi extends EventEmitter { api.use(middlewares.createJwsValidator(logger, jwsVerificationKeys, jwsExclusions)); } - api.use(middlewares.applyState({ cache, wso2, conf })); + api.use(middlewares.applyState({ cache, wso2, conf, logExcludePaths })); api.use(middlewares.createLogger(logger)); api.use(middlewares.createRequestValidator(validator)); api.use(middlewares.assignFspiopIdentifier()); @@ -133,7 +135,7 @@ class InboundServer extends EventEmitter { constructor(conf, logger, cache, wso2) { super({ captureExceptions: true }); this._conf = conf; - this._validator = new Validate(); + this._validator = new Validate({ logExcludePaths }); this._logger = logger; this._api = new InboundApi( conf, diff --git a/src/InboundServer/middlewares.js b/src/InboundServer/middlewares.js index ec6883865..1ea19c9c2 100644 --- a/src/InboundServer/middlewares.js +++ b/src/InboundServer/middlewares.js @@ -353,13 +353,17 @@ const createLogger = (logger) => async (ctx, next) => { path: ctx.path, method: ctx.method }}); - ctx.state.logger.push({ body: ctx.request.body }).log('Request received'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + ctx.state.logger.push({body: ctx.request.body}).log('Request received'); + } try { await next(); } catch (err) { ctx.state.logger.push(err).log('Error'); } - await ctx.state.logger.log('Request processed'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + await ctx.state.logger.log('Request processed'); + } }; @@ -369,10 +373,14 @@ const createLogger = (logger) => async (ctx, next) => { * @return {Function} */ const createRequestValidator = (validator) => async (ctx, next) => { - ctx.state.logger.log('Validating request'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + ctx.state.logger.log('Validating request'); + } try { ctx.state.path = validator.validateRequest(ctx, ctx.state.logger); - ctx.state.logger.log('Request passed validation'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + ctx.state.logger.log('Request passed validation'); + } await next(); } catch (err) { ctx.state.logger.push({ err }).log('Request failed validation.'); diff --git a/src/OutboundServer/index.js b/src/OutboundServer/index.js index 23571fa98..6b804b596 100644 --- a/src/OutboundServer/index.js +++ b/src/OutboundServer/index.js @@ -23,6 +23,7 @@ const handlers = require('./handlers'); const middlewares = require('./middlewares'); const endpointRegex = /\/.*/g; +const logExcludePaths = ['/']; class OutboundApi extends EventEmitter { constructor(conf, logger, cache, validator, metricsClient, wso2) { @@ -36,7 +37,7 @@ class OutboundApi extends EventEmitter { this._api.use(middlewares.createErrorHandler(this._logger)); this._api.use(middlewares.createRequestIdGenerator()); this._api.use(koaBody()); // outbound always expects application/json - this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient })); + this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient, logExcludePaths })); this._api.use(middlewares.createLogger(this._logger)); //Note that we strip off any path on peerEndpoint config after the origin. @@ -69,7 +70,7 @@ class OutboundApi extends EventEmitter { class OutboundServer extends EventEmitter { constructor(conf, logger, cache, metricsClient, wso2) { super({ captureExceptions: true }); - this._validator = new Validate(); + this._validator = new Validate({ logExcludePaths }); this._conf = conf; this._logger = logger; this._server = null; diff --git a/src/OutboundServer/middlewares.js b/src/OutboundServer/middlewares.js index 06a82a80b..0c167ceee 100644 --- a/src/OutboundServer/middlewares.js +++ b/src/OutboundServer/middlewares.js @@ -20,10 +20,14 @@ const { applyState, createErrorHandler, createLogger, createRequestIdGenerator } * @return {Function} */ const createRequestValidator = (validator) => async (ctx, next) => { - ctx.state.logger.log('Validating request'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + ctx.state.logger.log('Validating request'); + } try { ctx.state.path = validator.validateRequest(ctx, ctx.state.logger); - ctx.state.logger.log('Request passed validation'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + ctx.state.logger.log('Request passed validation'); + } await next(); } catch (err) { ctx.state.logger.push({ err }).log('Request failed validation.'); diff --git a/src/TestServer/index.js b/src/TestServer/index.js index d39c62d00..119937bf1 100644 --- a/src/TestServer/index.js +++ b/src/TestServer/index.js @@ -21,6 +21,8 @@ const router = require('../lib/router'); const handlers = require('./handlers'); const middlewares = require('../InboundServer/middlewares'); +const logExcludePaths = ['/']; + const getWsIp = (req) => [ req.socket.remoteAddress, ...( @@ -36,7 +38,7 @@ class TestApi { this._api.use(middlewares.createErrorHandler(logger)); this._api.use(middlewares.createRequestIdGenerator()); - this._api.use(middlewares.applyState({ cache })); + this._api.use(middlewares.applyState({ cache, logExcludePaths })); this._api.use(middlewares.createLogger(logger)); this._api.use(middlewares.createRequestValidator(validator)); @@ -174,7 +176,7 @@ class TestServer { constructor({ port, logger, cache }) { this._port = port; this._logger = logger; - this._validator = new Validate(); + this._validator = new Validate({ logExcludePaths }); this._api = new TestApi(this._logger.push({ component: 'api' }), this._validator, cache); this._server = http.createServer(this._api.callback()); // TODO: why does this appear to need to be called after creating this._server (try reorder diff --git a/src/lib/metrics.js b/src/lib/metrics.js index 425b99e6c..3b8743c58 100644 --- a/src/lib/metrics.js +++ b/src/lib/metrics.js @@ -131,8 +131,6 @@ class MetricsServer { result.use(koaBody()); result.use(async ctx => { - this._logger.log('Metrics request received'); - ctx.response.set('Content-Type', this._prometheusRegister.contentType); ctx.response.body = await this._prometheusRegister.metrics(); }); diff --git a/src/lib/router.js b/src/lib/router.js index 79521f4f9..ecfbfdf99 100644 --- a/src/lib/router.js +++ b/src/lib/router.js @@ -21,7 +21,9 @@ module.exports = (handlerMap) => async (ctx, next) => { ctx.response.body = { statusCode: 404, message: 'Not found' }; } else { - ctx.state.logger.push({ handler }).log('Found handler'); + if (!ctx.state.logExcludePaths.includes(ctx.path)) { + ctx.state.logger.push({handler}).log('Found handler'); + } await handler(ctx); } await next(); diff --git a/src/lib/validate.js b/src/lib/validate.js index d0a1e5ec6..025492b4d 100644 --- a/src/lib/validate.js +++ b/src/lib/validate.js @@ -125,6 +125,13 @@ const transformApiDoc = apiDoc => ({ }); class Validator { + /** + * @param {{logExcludePaths: string[]}} [opts] + */ + + constructor(opts) { + this.logExcludePaths = opts?.logExcludePaths || []; + } // apiDoc // POJO representing apiDoc API spec. Example: // const v = new Validator(require('./apiDoc.json')); @@ -163,7 +170,9 @@ class Validator { } result.params = Object.assign({}, ...path.match(result.matcher.regex).slice(1).map((m, i) => ({ [result.matcher.params[i]]: m}))); - logger.push({ path, result }).log('Matched path'); + if (!this.logExcludePaths.includes(path)) { + logger.push({path, result}).log('Matched path'); + } return result; } From 751f0a06d18be4579c313ee144a2730785d73e94 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Mon, 4 Jul 2022 13:02:00 +0000 Subject: [PATCH 21/39] chore(release): 17.0.0 [skip ci] --- CHANGELOG.md | 17 +++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98f3a3118..659946e70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,21 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +## [17.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v17.0.0) (2022-07-04) + + +### ⚠ BREAKING CHANGES + +* add dummy pr to major version bump due to unsquashed title (#327) + +### Features + +* suppress health check logs ([#328](https://github.com/mojaloop/sdk-scheme-adapter/issues/328)) ([64fadde](https://github.com/mojaloop/sdk-scheme-adapter/commit/64faddea8307aa0c19d56466d0afe8f8208c4d66)) + + +### Chore + +* 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)) +* **release:** 16.0.0 [skip ci] ([0071c65](https://github.com/mojaloop/sdk-scheme-adapter/commit/0071c65c3665239d0a482e76498f9eec5c288043)) + ## [16.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v16.0.0) (2022-07-01) diff --git a/package-lock.json b/package-lock.json index 0bf4d3184..17b609829 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "16.0.0", + "version": "17.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "16.0.0", + "version": "17.0.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 069385518..5610b63bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "16.0.0", + "version": "17.0.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 962420f6fed02722c5a9aeee6c108b6fbc9f021d Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Mon, 4 Jul 2022 18:50:01 +0300 Subject: [PATCH 22/39] fix: creating inbound server (#329) * fix creating InboundServer * update circleci node image. * Revert "update circleci node image." This reverts commit 5a38cb0af7c6b4e47a3cf1060fb45d4d66a18582. * remove SHELL=sh from audit commands. * Use per commit dep cache. --- .circleci/config.yml | 18 ++-- package-lock.json | 214 +++++++++++++++++++++++++++---------------- package.json | 12 +-- src/index.js | 2 - 4 files changed, 151 insertions(+), 95 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 233be43d3..bf8d6c308 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -93,7 +93,7 @@ jobs: name: Delete build dependencies command: apk del build-dependencies - save_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} paths: - node_modules @@ -105,7 +105,7 @@ jobs: command: *defaults_Dependencies - checkout - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Execute unit tests command: npm run test @@ -125,7 +125,7 @@ jobs: chmod +x ~/docker-compose sudo mv ~/docker-compose /usr/local/bin/docker-compose - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Set up NVM command: | @@ -171,7 +171,7 @@ jobs: command: *defaults_Dependencies - checkout - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Execute unit tests command: npm run build:openapi && npm run validate:api @@ -184,7 +184,7 @@ jobs: command: *defaults_Dependencies - checkout - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Create dir for lint results command: mkdir -p /lintresults @@ -202,7 +202,7 @@ jobs: command: *defaults_Dependencies - checkout - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Create dir for test results command: mkdir -p ./audit/results @@ -222,7 +222,7 @@ jobs: - run: <<: *defaults_license_scanner - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Prune non-production packages before running license-scanner command: npm prune --production @@ -324,7 +324,7 @@ jobs: command: *defaults_Dependencies - checkout - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Configure git command: | @@ -413,7 +413,7 @@ jobs: name: Install general dependencies command: *defaults_Dependencies - restore_cache: - key: dependency-cache-v3-{{ checksum "package-lock.json" }} + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: setup environment vars for LATEST release command: | diff --git a/package-lock.json b/package-lock.json index 17b609829..e4d4cd986 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@koa/cors": "^3.1.0", "@mojaloop/central-services-shared": "17.0.2", - "@mojaloop/sdk-standard-components": "^17.0.4", + "@mojaloop/sdk-standard-components": "^17.1.0", "ajv": "8.11.0", "axios": "^0.27.2", "co-body": "^6.1.0", @@ -42,7 +42,7 @@ "@redocly/openapi-cli": "^1.0.0-beta.59", "@types/jest": "^28.1.4", "babel-jest": "^28.1.2", - "eslint": "^8.18.0", + "eslint": "^8.19.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-jest": "^26.5.3", @@ -50,12 +50,12 @@ "jest-junit": "^14.0.0", "nock": "^13.2.8", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^15.0.1", + "npm-check-updates": "^15.0.2", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", "standard-version": "^9.3.1", - "supertest": "^6.1.6", + "supertest": "^6.2.4", "swagger-cli": "^4.0.4" }, "engines": { @@ -3141,9 +3141,9 @@ } }, "node_modules/@mojaloop/sdk-standard-components": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.0.4.tgz", - "integrity": "sha512-GZ4VosRTWNWwCvWbUQ7QDTiKSb0BJLjoME+3pPRpKQOtMj1KjVsPwOSCW3aY52D/wQ9qKFfWFq1T8oR7LomeAw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.1.0.tgz", + "integrity": "sha512-MGiNGTpMIpTsMVWL/TpiFH4lO8whuNbUezvHl60SE09zUaQXJBZWfcfzDxmBtR85p6i9+4139djADwZRFORBHw==", "dependencies": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", @@ -4429,19 +4429,6 @@ "form-data": "^4.0.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/babel-jest": { "version": "28.1.2", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.2.tgz", @@ -7149,9 +7136,9 @@ } }, "node_modules/eslint": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", - "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.0", @@ -8045,6 +8032,19 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/form-data-encoder": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", @@ -13115,9 +13115,9 @@ } }, "node_modules/npm-check-updates": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.1.tgz", - "integrity": "sha512-sQcWKnylLVeP+Ys0c22uCKwo4RSgirgZ16qZK2qBxd04LYYTO9ZeM3HLZgaO8CLd9NJOYXLZAA2CTLRO3up7qg==", + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.2.tgz", + "integrity": "sha512-ZSmNUm2Cl8K7VZBhLY4/AE2NHmZfR4glKoRZIeJrgg5bvFP1LhRBU3tdS+IX1+MLoUvpF2L+Q7oD5QO+nBOm+Q==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -16509,21 +16509,47 @@ "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/superagent/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/superagent/node_modules/mime": { + "node_modules/supertest": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.4.tgz", + "integrity": "sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^8.0.0" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/supertest/node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", @@ -16535,7 +16561,7 @@ "node": ">=4.0.0" } }, - "node_modules/superagent/node_modules/semver": { + "node_modules/supertest/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", @@ -16550,17 +16576,26 @@ "node": ">=10" } }, - "node_modules/supertest": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.3.tgz", - "integrity": "sha512-3GSdMYTMItzsSYjnIcljxMVZKPW1J9kYHZY+7yLfD0wpPwww97GeImZC1oOk0S5+wYl2niJwuFusBJqwLqYM3g==", + "node_modules/supertest/node_modules/superagent": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.0.tgz", + "integrity": "sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg==", "dev": true, "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", "methods": "^1.1.2", - "superagent": "^7.1.3" + "mime": "2.6.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.4.0 <13 || >=14" } }, "node_modules/supports-color": { @@ -20557,9 +20592,9 @@ } }, "@mojaloop/sdk-standard-components": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.0.4.tgz", - "integrity": "sha512-GZ4VosRTWNWwCvWbUQ7QDTiKSb0BJLjoME+3pPRpKQOtMj1KjVsPwOSCW3aY52D/wQ9qKFfWFq1T8oR7LomeAw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.1.0.tgz", + "integrity": "sha512-MGiNGTpMIpTsMVWL/TpiFH4lO8whuNbUezvHl60SE09zUaQXJBZWfcfzDxmBtR85p6i9+4139djADwZRFORBHw==", "requires": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", @@ -21612,18 +21647,6 @@ "requires": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } } }, "babel-jest": { @@ -23671,9 +23694,9 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", - "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", @@ -24352,6 +24375,16 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "form-data-encoder": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", @@ -28206,9 +28239,9 @@ } }, "npm-check-updates": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.1.tgz", - "integrity": "sha512-sQcWKnylLVeP+Ys0c22uCKwo4RSgirgZ16qZK2qBxd04LYYTO9ZeM3HLZgaO8CLd9NJOYXLZAA2CTLRO3up7qg==", + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.2.tgz", + "integrity": "sha512-ZSmNUm2Cl8K7VZBhLY4/AE2NHmZfR4glKoRZIeJrgg5bvFP1LhRBU3tdS+IX1+MLoUvpF2L+Q7oD5QO+nBOm+Q==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -30798,17 +30831,6 @@ "semver": "^7.3.7" }, "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -30827,13 +30849,49 @@ } }, "supertest": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.3.tgz", - "integrity": "sha512-3GSdMYTMItzsSYjnIcljxMVZKPW1J9kYHZY+7yLfD0wpPwww97GeImZC1oOk0S5+wYl2niJwuFusBJqwLqYM3g==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.4.tgz", + "integrity": "sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA==", "dev": true, "requires": { "methods": "^1.1.2", - "superagent": "^7.1.3" + "superagent": "^8.0.0" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "superagent": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.0.tgz", + "integrity": "sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg==", + "dev": true, + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" + } + } } }, "supports-color": { diff --git a/package.json b/package.json index 5610b63bb..042181023 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "~": "src" }, "scripts": { - "audit:resolve": "SHELL=sh resolve-audit --production", - "audit:check": "SHELL=sh check-audit --production", + "audit:resolve": "resolve-audit --production", + "audit:check": "check-audit --production", "build": "npm run build:openapi; npm run build:dto:outbound", "build:openapi": "npm run build:openapi:inbound && npm run build:openapi:outbound", "build:openapi:inbound": "openapi bundle --output ./src/InboundServer/api.yaml --ext yaml ./src/InboundServer/api_template.yaml", @@ -57,7 +57,7 @@ "dependencies": { "@koa/cors": "^3.1.0", "@mojaloop/central-services-shared": "17.0.2", - "@mojaloop/sdk-standard-components": "^17.0.4", + "@mojaloop/sdk-standard-components": "^17.1.0", "ajv": "8.11.0", "axios": "^0.27.2", "co-body": "^6.1.0", @@ -88,7 +88,7 @@ "@redocly/openapi-cli": "^1.0.0-beta.59", "@types/jest": "^28.1.4", "babel-jest": "^28.1.2", - "eslint": "^8.18.0", + "eslint": "^8.19.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-jest": "^26.5.3", @@ -96,12 +96,12 @@ "jest-junit": "^14.0.0", "nock": "^13.2.8", "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^15.0.1", + "npm-check-updates": "^15.0.2", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.0", "redis-mock": "^0.56.3", "standard-version": "^9.3.1", - "supertest": "^6.1.6", + "supertest": "^6.2.4", "swagger-cli": "^4.0.4" } } diff --git a/src/index.js b/src/index.js index ad8983371..640fd5127 100644 --- a/src/index.js +++ b/src/index.js @@ -78,7 +78,6 @@ class Server extends EventEmitter { this.conf, this.logger.push(LOG_ID.INBOUND), this.cache, - this.metricsClient, this.wso2, ); this.inboundServer.on('error', (...args) => { @@ -195,7 +194,6 @@ class Server extends EventEmitter { newConf, this.logger.push(LOG_ID.INBOUND), this.cache, - this.metricsClient, this.wso2, ); this.inboundServer.on('error', (...args) => { From d71bbbe38f6676cbf1fecd239f78f7318a776520 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Mon, 4 Jul 2022 16:00:27 +0000 Subject: [PATCH 23/39] chore(release): 17.0.1 [skip ci] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 659946e70..1c90b3052 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +### [17.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v17.0.0...v17.0.1) (2022-07-04) + + +### Bug Fixes + +* creating inbound server ([#329](https://github.com/mojaloop/sdk-scheme-adapter/issues/329)) ([962420f](https://github.com/mojaloop/sdk-scheme-adapter/commit/962420f6fed02722c5a9aeee6c108b6fbc9f021d)) + ## [17.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v17.0.0) (2022-07-04) diff --git a/package-lock.json b/package-lock.json index e4d4cd986..d3b12ed76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.0", + "version": "17.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.0", + "version": "17.0.1", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.1.0", diff --git a/package.json b/package.json index 042181023..f5f653e95 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.0", + "version": "17.0.1", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From f7e450cc2568f70f6c9abbb39d9c2186787c31b7 Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Mon, 11 Jul 2022 15:46:26 +0200 Subject: [PATCH 24/39] fix(mojaloop/#2811): sdk-scheme-adapter sending incorrect transferState on a PUT transfers Callback (#331) fix(mojaloop/#2811): sdk-scheme-adapter sending incorrect transferState on a PUT transfers Callback - https://github.com/mojaloop/project/issues/2811 - fixed transfer-state for callback-response by PayeeFSP to use FSPIOP `TransferState` & `BulkTransferState` Enums from central-services-shared - re-factored & consolidated enums into a common `SDKStateEnum` which is used for all `currentState` assignments and comparisons - removed duplicate/unnecessary enums - updated unit tests to use enums - updated dependencies - fixed audit issue - Fixed image-scan issue as docker image used a root user by adding a non-root user 'ml-user' - re-aligned Dockerfile working directory to /opt/app for consistency across ml-projects - aligned CI config for consistency across ml-projects fix(mojaloop/#2816): SDK-Scheme-Adapter is missing/incorrect bulkTransferState on a PUT /bulkTransfer/{id} Callback by the PayeeFSP- https://github.com/mojaloop/project/issues/2816 - fixed bad enum mapping for bulkTransferState for `COMPLETED` (it was `COMMITTED`) - added missed bulkTransferState enum for `REJECTED` BREAKING CHANGE: docker image now uses `/opt/app` instead of the root folder which will impact config mounts, and the secrets folder is no longer included in the docker image which aligns with best practices. Both these changes should NOT be a breaking change but I have marked them as such to make this change more obvious. --- .circleci/config.yml | 631 +++++++++++++----- .dockerignore | 20 +- Dockerfile | 17 +- audit-resolve.json | 98 +-- docker-compose.yml | 5 +- package-lock.json | 99 ++- package.json | 34 +- src/lib/model/AccountsModel.js | 11 +- src/lib/model/Async2SyncModel.js | 7 +- src/lib/model/InboundTransfersModel.js | 32 +- src/lib/model/OutboundBulkQuotesModel.js | 11 +- src/lib/model/OutboundBulkTransfersModel.js | 11 +- src/lib/model/OutboundRequestToPayModel.js | 15 +- .../OutboundRequestToPayTransferModel.js | 18 +- src/lib/model/OutboundTransfersModel.js | 19 +- src/lib/model/common/BackendError.js | 14 +- src/lib/model/common/Enums.js | 30 + src/lib/model/common/index.js | 5 +- test/config/integration.env | 4 +- test/integration/lib/Outbound/parties.test.js | 3 +- test/integration/lib/Outbound/quotes.test.js | 4 +- .../lib/Outbound/simpleTransfers.test.js | 3 +- test/unit/inboundApi/handlers.test.js | 4 +- test/unit/lib/model/AccountsModel.test.js | 3 +- .../lib/model/InboundTransfersModel.test.js | 16 +- .../lib/model/OutboundBulkQuotesModel.test.js | 8 +- .../model/OutboundBulkTransfersModel.test.js | 7 +- .../model/OutboundRequestToPayModel.test.js | 5 +- .../OutboundRequestToPayTransferModel.test.js | 7 +- .../lib/model/OutboundTransfersModel.test.js | 71 +- test/unit/lib/model/PartiesModel.test.js | 3 +- test/unit/lib/model/QuotesModel.test.js | 3 +- test/unit/lib/model/TransfersModel.test.js | 3 +- .../data/getBulkTransfersBackendResponse.json | 2 +- .../getBulkTransfersMojaloopResponse.json | 2 +- 35 files changed, 760 insertions(+), 465 deletions(-) create mode 100644 src/lib/model/common/Enums.js diff --git a/.circleci/config.yml b/.circleci/config.yml index bf8d6c308..35e3ea8be 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,11 +7,10 @@ version: 2.1 # Orbs used in this pipeline ### orbs: - anchore: anchore/anchore-engine@1.6.0 - slack: circleci/slack@3.4.2 - pr-tools: mojaloop/pr-tools@0.1.10 - github-release: h-matsuo/github-release@0.1.3 - + anchore: anchore/anchore-engine@1.9.0 + slack: circleci/slack@4.9.3 # Ref: https://github.com/mojaloop/ci-config/tree/master/slack-templates + pr-tools: mojaloop/pr-tools@0.1.10 # Ref: https://github.com/mojaloop/ci-config/ + gh: circleci/github-cli@2.1.0 ## # defaults @@ -19,24 +18,18 @@ orbs: # YAML defaults templates, in alphabetical order ## defaults_Dependencies: &defaults_Dependencies | + apk --no-cache add bash apk --no-cache add git apk --no-cache add ca-certificates apk --no-cache add curl apk --no-cache add openssh-client - apk --no-cache add bash - apk add --no-cache -t build-dependencies make gcc g++ python3 libtool autoconf automake + apk add --no-cache -t build-dependencies make gcc g++ python3 libtool autoconf automake jq + apk add --no-cache -t openssl ncurses coreutils libgcc linux-headers grep util-linux binutils findutils npm config set unsafe-perm true npm install -g node-gyp defaults_awsCliDependencies: &defaults_awsCliDependencies | - apk upgrade --no-cache - apk --no-cache add \ - python3 \ - py3-pip \ - groff \ - less \ - mailcap - pip3 install --upgrade pip awscli==1.14.5 s3cmd==2.0.1 python-magic + apk --no-cache add aws-cli defaults_license_scanner: &defaults_license_scanner name: Install and set up license-scanner @@ -44,10 +37,12 @@ defaults_license_scanner: &defaults_license_scanner git clone https://github.com/mojaloop/license-scanner /tmp/license-scanner cd /tmp/license-scanner && make build default-files set-up +## remove defaults_npm_auth: &defaults_npm_auth name: Update NPM registry auth token command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc +## remove defaults_npm_publish_release: &defaults_npm_publish_release name: Publish NPM $RELEASE_TAG artifact command: | @@ -55,6 +50,31 @@ defaults_npm_publish_release: &defaults_npm_publish_release echo "Publishing tag $RELEASE_TAG" npm publish --tag $RELEASE_TAG --access public +defaults_export_version_from_package: &defaults_export_version_from_package + name: Format the changelog into the github release body and get release tag + command: | + git diff --no-indent-heuristic master~1 HEAD CHANGELOG.md | sed -n '/^+[^+]/ s/^+//p' > /tmp/changes + echo 'export RELEASE_CHANGES=`cat /tmp/changes`' >> $BASH_ENV + echo 'export RELEASE_TAG=`cat package-lock.json | jq -r .version`' >> $BASH_ENV + +defaults_configure_git: &defaults_configure_git + name: Configure git + command: | + git config user.email ${GIT_CI_EMAIL} + git config user.name ${GIT_CI_USER} + +defaults_configure_nvm: &defaults_configure_nvm + name: Configure NVM + command: | + touch $HOME/.profile + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + echo "Installing Node version: $(cat .nvmrc)" + nvm install $(cat .nvmrc) + nvm alias default $(cat .nvmrc) + nvm use $(cat .nvmrc) + ## # Executors # @@ -64,11 +84,11 @@ executors: default-docker: working_directory: /home/circleci/project docker: - - image: node:16.15.0-alpine + - image: node:16.15.0-alpine # Ref: https://hub.docker.com/_/node?tab=tags&page=1&name=alpine default-machine: machine: - image: ubuntu-2004:202010-01 + image: ubuntu-2004:current # Ref: https://circleci.com/developer/machine/image/ubuntu-2004 ## # Jobs @@ -84,19 +104,45 @@ jobs: command: *defaults_Dependencies - checkout - run: - name: Access npm folder as root - command: cd $(npm root -g)/npm + <<: *defaults_configure_nvm - run: - name: Update NPM install (using `npm ci`) + name: Update NPM install command: npm ci - - run: - name: Delete build dependencies - command: apk del build-dependencies - save_cache: key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} paths: - node_modules + test-dependencies: + executor: default-docker + steps: + - run: + name: Install general dependencies + command: *defaults_Dependencies + - checkout + - run: + <<: *defaults_configure_nvm + - restore_cache: + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: Execute dependency tests + command: npm run dep:check + + test-lint: + executor: default-docker + steps: + - run: + name: Install general dependencies + command: *defaults_Dependencies + - checkout + - run: + <<: *defaults_configure_nvm + - restore_cache: + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: Execute lint tests + command: npm run lint + test-unit: executor: default-docker steps: @@ -104,6 +150,8 @@ jobs: name: Install general dependencies command: *defaults_Dependencies - checkout + - run: + <<: *defaults_configure_nvm - restore_cache: key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: @@ -119,20 +167,9 @@ jobs: steps: - checkout - run: - name: Install Docker Compose - command: | - curl -L https://github.com/docker/compose/releases/download/1.28.2/docker-compose-`uname -s`-`uname -m` > ~/docker-compose - chmod +x ~/docker-compose - sudo mv ~/docker-compose /usr/local/bin/docker-compose + <<: *defaults_configure_nvm - restore_cache: key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: Set up NVM - command: | - echo ${NVM_DIR} - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" - nvm install v16.14 - nvm alias default v16.14 - run: name: Start docker-compose command: | @@ -142,15 +179,11 @@ jobs: - run: name: Execute Wait4 script command: | - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" chmod +x ./docker/wait4/wait4.js - # chmod +x ./docker/wait4/setup_hosts_file.sh - # sh -c "./docker/wait4/setup_hosts_file.sh" sh -c "./docker/wait4/wait4.js cicd-integration-tests" - run: name: Execute integration tests command: | - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" npm ci npm run test:int - run: @@ -176,24 +209,6 @@ jobs: name: Execute unit tests command: npm run build:openapi && npm run validate:api - lint: - executor: default-docker - steps: - - run: - name: Install general dependencies - command: *defaults_Dependencies - - checkout - - restore_cache: - key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: Create dir for lint results - command: mkdir -p /lintresults - - run: - name: Execute linting - command: (npm run lint > /lintresults/results.txt) - - store_artifacts: - path: /lintresults - vulnerability-check: executor: default-docker steps: @@ -201,6 +216,8 @@ jobs: name: Install general dependencies command: *defaults_Dependencies - checkout + - run: + <<: *defaults_configure_nvm - restore_cache: key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: @@ -211,6 +228,7 @@ jobs: command: npm run audit:check --silent -- --json > ./audit/results/auditResults.json - store_artifacts: path: ./audit/results + prefix: audit audit-licenses: executor: default-docker @@ -232,27 +250,9 @@ jobs: - store_artifacts: path: /tmp/license-scanner/results - build-local: - executor: default-machine - steps: - - checkout - - run: - name: Build Docker local image for testing - command: | - echo "Building Docker image: local" - docker build -t mojaloop/$CIRCLE_PROJECT_REPONAME:local . - - run: - name: Save docker image to workspace - command: docker save -o /tmp/docker-image.tar mojaloop/$CIRCLE_PROJECT_REPONAME:local - - persist_to_workspace: - root: /tmp - paths: - - ./docker-image.tar - license-scan: executor: default-machine steps: - - checkout - attach_workspace: at: /tmp - run: @@ -262,15 +262,39 @@ jobs: <<: *defaults_license_scanner - run: name: Run the license-scanner - command: cd /tmp/license-scanner && mode=docker dockerImages=mojaloop/$CIRCLE_PROJECT_REPONAME:local make run + command: cd /tmp/license-scanner && mode=docker dockerImages=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG make run - store_artifacts: path: /tmp/license-scanner/results + prefix: licenses image-scan: executor: anchore/anchore_engine steps: - setup_remote_docker - checkout + - run: + name: Setup Slack config + command: | + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='GitHub Release'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG='${RELEASE_TAG} on ${CIRCLE_BRANCH} branch'" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV + echo "export SLACK_CUSTOM_MSG='Anchore Image Scan failed for: \`${DOCKER_ORG}/${CIRCLE_PROJECT_REPONAME}:${CIRCLE_TAG}\`'" >> $BASH_ENV + - run: + name: Install docker dependencies for anchore + command: | + apk add --update py-pip docker python3-dev libffi-dev openssl-dev gcc libc-dev make jq npm + - run: + name: Install general dependencies + command: | + apk --no-cache add git + apk --no-cache add ca-certificates + apk --no-cache add curl + apk --no-cache add openssh-client + apk add --no-cache -t build-dependencies make gcc g++ python3 libtool autoconf automake + npm config set unsafe-perm true + npm install -g node-gyp - run: name: Install AWS CLI dependencies command: *defaults_awsCliDependencies @@ -279,42 +303,78 @@ jobs: - run: name: Load the pre-built docker image from workspace command: docker load -i /tmp/docker-image.tar + - run: + name: Download the mojaloop/ci-config repo + command: | + git clone https://github.com/mojaloop/ci-config /tmp/ci-config + # Generate the mojaloop anchore-policy + cd /tmp/ci-config/container-scanning && ./mojaloop-policy-generator.js /tmp/mojaloop-policy.json + - run: + name: Pull base image locally + command: | + docker pull node:16.15.0-alpine + # Analyze the base and derived image + # Note: It seems images are scanned in parallel, so preloading the base image result doesn't give us any real performance gain - anchore/analyze_local_image: - dockerfile_path: ./Dockerfile - image_name: mojaloop/${CIRCLE_PROJECT_REPONAME}:local - # Anchore bug: if policy_failure is `true`, reports don't get written - we manually check for failures below + # Force the older version, version 0.7.0 was just published, and is broken + anchore_version: v0.6.1 + image_name: "docker.io/node:16.15.0-alpine $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG" policy_failure: false timeout: '500' + # Note: if the generated policy is invalid, this will fallback to the default policy, which we don't want! + policy_bundle_file_path: /tmp/mojaloop-policy.json - run: - name: Evaluate Failures. - command: | - if [[ ! $(which jq) ]]; then - (set +o pipefail; apk add jq || apt-get install -y jq || yum install -y jq) - fi - if [[ $(ls anchore-reports/*content-os*.json 2> /dev/null) ]]; then - printf "\n%s\n" "The following OS packages are installed:" - jq '[.content | sort_by(.package) | .[] | {package: .package, version: .version}]' anchore-reports/*content-os*.json - fi - if [[ $(ls anchore-reports/*vuln*.json 2> /dev/null) ]]; then - printf "\n%s\n" "The following vulnerabilities were found:" - jq '[.vulnerabilities | group_by(.package) | .[] | {package: .[0].package, vuln: [.[].vuln]}]' anchore-reports/*vuln*.json - fi - # - run: - # name: Upload Anchore reports to s3 - # command: | - # aws s3 cp anchore-reports ${AWS_S3_DIR_ANCHORE_REPORTS}/${CIRCLE_PROJECT_REPONAME}/ --recursive - # aws s3 rm ${AWS_S3_DIR_ANCHORE_REPORTS}/latest/ --recursive --exclude "*" --include "${CIRCLE_PROJECT_REPONAME}*" - # aws s3 cp anchore-reports ${AWS_S3_DIR_ANCHORE_REPORTS}/latest/ --recursive - - # TODO: Enable this when we want to increase the strictness of our security policies - # failCount=$(cat anchore-reports/*policy*.json | grep 'fail' | wc -l) - # echo "FailCount is: ${failCount}" - # if [ $failCount -gt 0 ]; then - # printf "Failed with a policy failure count of: ${failCount}" - # exit 1 - # fi + name: Upload Anchore reports to s3 + command: | + aws s3 cp anchore-reports ${AWS_S3_DIR_ANCHORE_REPORTS}/${CIRCLE_PROJECT_REPONAME}/ --recursive + aws s3 rm ${AWS_S3_DIR_ANCHORE_REPORTS}/latest/ --recursive --exclude "*" --include "${CIRCLE_PROJECT_REPONAME}*" + aws s3 cp anchore-reports ${AWS_S3_DIR_ANCHORE_REPORTS}/latest/ --recursive + - run: + name: Evaluate failures + command: /tmp/ci-config/container-scanning/anchore-result-diff.js anchore-reports/node_16.15.0-alpine-policy.json anchore-reports/${CIRCLE_PROJECT_REPONAME}*-policy.json - store_artifacts: path: anchore-reports + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE + + build-local: + executor: default-machine + steps: + - checkout + - run: + name: Build Docker local image for testing + command: | + echo "Building Docker image: local" + docker build -t $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local . + - run: + name: Save docker image to workspace + command: docker save -o /tmp/docker-image-local.tar $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local + - persist_to_workspace: + root: /tmp + paths: + - ./docker-image-local.tar + + build: + executor: default-machine + steps: + - attach_workspace: + at: /tmp + - run: + name: Load the pre-built docker local image from workspace + command: docker load -i /tmp/docker-image-local.tar + - run: + name: Re-tag the image + command: | + echo "Re-tagging Docker image: $CIRCLE_TAG" + docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG + - run: + name: Save the new docker image to workspace + command: docker save -o /tmp/docker-image.tar $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG + - persist_to_workspace: + root: /tmp + paths: + - ./docker-image.tar release: executor: default-docker @@ -323,26 +383,30 @@ jobs: name: Install general dependencies command: *defaults_Dependencies - checkout + - run: + <<: *defaults_configure_nvm - restore_cache: - key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} + keys: + - dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: - name: Configure git - command: | - git config user.email ${GIT_CI_EMAIL} - git config user.name ${GIT_CI_USER} - git checkout ${CIRCLE_BRANCH} + <<: *defaults_configure_git - run: - name: Configure ssh + name: Setup Slack config command: | - mkdir -p ~/.ssh - ssh-keyscan -p 443 ssh.github.com >> ~/.ssh/known_hosts - ssh-keyscan github.com >> ~/.ssh/known_hosts + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='GitHub Release'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG='${RELEASE_TAG} on ${CIRCLE_BRANCH} branch'" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV - run: name: Generate changelog and bump package version - command: npm run release + command: npm run release -- --no-verify - run: name: Push the release command: git push --follow-tags origin ${CIRCLE_BRANCH} + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE github-release: executor: default-machine @@ -351,77 +415,236 @@ jobs: name: Install git command: | sudo apt-get update && sudo apt-get install -y git + - gh/install - checkout + - run: + <<: *defaults_configure_git - run: name: Fetch updated release branch command: | - git config user.email ${GIT_CI_EMAIL} - git config user.name ${GIT_CI_USER} git fetch origin git checkout origin/${CIRCLE_BRANCH} - run: - # Note: this is rather imperfect, but will do for now - name: Format the changelog into the github release body and get release tag - command: | - git diff --no-indent-heuristic master~1 HEAD CHANGELOG.md | sed -n '/^+[^+]/ s/^+//p' > /tmp/changes - echo 'export RELEASE_CHANGES=`cat /tmp/changes`' >> $BASH_ENV - echo 'export RELEASE_TAG=`cat package-lock.json | jq -r .version`' >> $BASH_ENV + <<: *defaults_export_version_from_package - run: - name: check the release changes + name: Check the release changes command: | echo "Changes are: ${RELEASE_CHANGES}" - - github-release/create: - github-token-variable: ${GITHUB_TOKEN} - tag: v${RELEASE_TAG} - title: v${RELEASE_TAG} Release - description: ${RELEASE_CHANGES} - file-path: CHANGELOG.md - - slack/status: - webhook: "$SLACK_WEBHOOK_ANNOUNCEMENT" - success_message: '*"${CIRCLE_PROJECT_REPONAME}"* - Release \`"v${RELEASE_TAG}"\` \nhttps://github.com/mojaloop/"${CIRCLE_PROJECT_REPONAME}"/releases/tag/"v${RELEASE_TAG}"' + - run: + name: Setup Slack config + command: | + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='Github Release'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG=v${RELEASE_TAG}" >> $BASH_ENV + echo "export SLACK_RELEASE_URL=https://github.com/mojaloop/${CIRCLE_PROJECT_REPONAME}/releases/tag/v${RELEASE_TAG}" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV + - run: + name: Create Release + command: | + gh release create "v${RELEASE_TAG}" --title "v${RELEASE_TAG} Release" --draft=false --notes "${RELEASE_CHANGES}" ./CHANGELOG.md + - slack/notify: + event: pass + template: SLACK_TEMP_RELEASE_SUCCESS + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE publish-docker: executor: default-machine steps: - checkout + - run: + name: Setup for LATEST release + command: | + echo "export RELEASE_TAG=$RELEASE_TAG_PROD" >> $BASH_ENV + echo "RELEASE_TAG=$RELEASE_TAG_PROD" + + PACKAGE_VERSION=$(cat package-lock.json | jq -r .version) + echo "export PACKAGE_VERSION=${PACKAGE_VERSION}" >> $BASH_ENV + echo "PACKAGE_VERSION=${PACKAGE_VERSION}" + - run: + name: Setup Slack config + command: | + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='Docker Release'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG=v${CIRCLE_TAG:1}" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV - attach_workspace: at: /tmp - run: name: Load the pre-built docker image from workspace - command: docker load -i /tmp/docker-image.tar + command: | + docker load -i /tmp/docker-image.tar - run: name: Login to Docker Hub command: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: name: Re-tag pre built image command: | - docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:latest - docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG + docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG + - run: + name: Publish Docker image $CIRCLE_TAG & Latest tag to Docker Hub + command: | + echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG" + docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG + echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG" + docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG + - run: + name: Set Image Digest + command: | + IMAGE_DIGEST=$(docker inspect $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:v${CIRCLE_TAG:1} | jq '.[0].RepoDigests | .[]') + echo "IMAGE_DIGEST=${IMAGE_DIGEST}" + echo "export IMAGE_DIGEST=${IMAGE_DIGEST}" >> $BASH_ENV + - run: + name: Update Slack config + command: | + echo "export SLACK_RELEASE_URL='https://hub.docker.com/layers/${CIRCLE_PROJECT_REPONAME}/${DOCKER_ORG}/${CIRCLE_PROJECT_REPONAME}/v${CIRCLE_TAG:1}/images/${IMAGE_DIGEST}?context=explore'" | sed -r "s/${DOCKER_ORG}\/${CIRCLE_PROJECT_REPONAME}@sha256:/sha256-/g" >> $BASH_ENV + - slack/notify: + event: pass + template: SLACK_TEMP_RELEASE_SUCCESS + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE + + publish-docker-snapshot: + executor: default-machine + steps: + - checkout + - run: + name: Setup for SNAPSHOT release + command: | + echo "export RELEASE_TAG=$RELEASE_TAG_SNAPSHOT" >> $BASH_ENV + echo "RELEASE_TAG=$RELEASE_TAG_SNAPSHOT" + + PACKAGE_VERSION=$(cat package-lock.json | jq -r .version) + echo "export PACKAGE_VERSION=${PACKAGE_VERSION}" >> $BASH_ENV + echo "PACKAGE_VERSION=${PACKAGE_VERSION}" + - run: + name: Setup Slack config + command: | + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='Docker Release'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG=v${CIRCLE_TAG:1}" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV + - attach_workspace: + at: /tmp + - run: + name: Load the pre-built docker image from workspace + command: | + docker load -i /tmp/docker-image.tar + - run: + name: Login to Docker Hub + command: docker login -u $DOCKER_USER -p $DOCKER_PASS + - run: + name: Re-tag pre built image + command: | + docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG - run: name: Publish Docker image $CIRCLE_TAG & Latest tag to Docker Hub command: | echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG" docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG - echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:latest" - docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:latest + echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG" + docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG + - run: + name: Set Image Digest + command: | + IMAGE_DIGEST=$(docker inspect $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:v${CIRCLE_TAG:1} | jq '.[0].RepoDigests | .[]') + echo "IMAGE_DIGEST=${IMAGE_DIGEST}" + echo "export IMAGE_DIGEST=${IMAGE_DIGEST}" >> $BASH_ENV + - run: + name: Update Slack config + command: | + echo "export SLACK_RELEASE_URL='https://hub.docker.com/layers/${CIRCLE_PROJECT_REPONAME}/${DOCKER_ORG}/${CIRCLE_PROJECT_REPONAME}/v${CIRCLE_TAG:1}/images/${IMAGE_DIGEST}?context=explore'" | sed -r "s/${DOCKER_ORG}\/${CIRCLE_PROJECT_REPONAME}@sha256:/sha256-/g" >> $BASH_ENV + - slack/notify: + event: pass + template: SLACK_TEMP_RELEASE_SUCCESS + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE publish-npm: executor: default-docker steps: + - run: + name: Install general dependencies + command: *defaults_Dependencies - checkout + - restore_cache: + key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: Setup for LATEST release + command: | + echo "export RELEASE_TAG=$RELEASE_TAG_PROD" >> $BASH_ENV + echo "RELEASE_TAG=$RELEASE_TAG_PROD" + + PACKAGE_VERSION=$(cat package-lock.json | jq -r .version) + echo "export PACKAGE_VERSION=${PACKAGE_VERSION}" >> $BASH_ENV + echo "PACKAGE_VERSION=${PACKAGE_VERSION}" + - run: + name: Setup Slack config + command: | + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='NPM Release'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG=v${CIRCLE_TAG:1}" >> $BASH_ENV + echo "export SLACK_RELEASE_URL=https://www.npmjs.com/package/@mojaloop/${CIRCLE_PROJECT_REPONAME}/v/${CIRCLE_TAG:1}" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV + - run: + <<: *defaults_npm_auth + - run: + <<: *defaults_npm_publish_release + - slack/notify: + event: pass + template: SLACK_TEMP_RELEASE_SUCCESS + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE + + publish-npm-snapshot: + executor: default-docker + steps: - run: name: Install general dependencies command: *defaults_Dependencies + - checkout - restore_cache: key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - run: - name: setup environment vars for LATEST release + name: Setup for SNAPSHOT release command: | - echo 'export RELEASE_TAG=$RELEASE_TAG_PROD' >> $BASH_ENV + echo "export RELEASE_TAG=${RELEASE_TAG_SNAPSHOT}" >> $BASH_ENV + echo "RELEASE_TAG=${RELEASE_TAG_SNAPSHOT}" + + echo "Override package version: ${CIRCLE_TAG:1}" + npx standard-version --skip.tag --skip.commit --skip.changelog --release-as ${CIRCLE_TAG:1} + + PACKAGE_VERSION=$(cat package-lock.json | jq -r .version) + echo "export PACKAGE_VERSION=${PACKAGE_VERSION}" >> $BASH_ENV + echo "PACKAGE_VERSION=${PACKAGE_VERSION}" + - run: + name: Setup Slack config + command: | + echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV + echo "export SLACK_RELEASE_TYPE='NPM Snapshot'" >> $BASH_ENV + echo "export SLACK_RELEASE_TAG=v${CIRCLE_TAG:1}" >> $BASH_ENV + echo "export SLACK_RELEASE_URL=https://www.npmjs.com/package/@mojaloop/${CIRCLE_PROJECT_REPONAME}/v/${CIRCLE_TAG:1}" >> $BASH_ENV + echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV + echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV - run: <<: *defaults_npm_auth - run: <<: *defaults_npm_publish_release + - slack/notify: + event: pass + template: SLACK_TEMP_RELEASE_SUCCESS + - slack/notify: + event: fail + template: SLACK_TEMP_RELEASE_FAILURE + ## # Workflows # @@ -442,8 +665,7 @@ workflows: ignore: - /feature*/ - /bugfix*/ - - - test-unit: + - test-dependencies: context: org-global requires: - setup @@ -454,8 +676,7 @@ workflows: ignore: - /feature*/ - /bugfix*/ - - - validate-openapi: + - test-lint: context: org-global requires: - setup @@ -466,8 +687,18 @@ workflows: ignore: - /feature*/ - /bugfix*/ - - - lint: + - test-unit: + context: org-global + requires: + - setup + filters: + tags: + only: /.*/ + branches: + ignore: + - /feature*/ + - /bugfix*/ + - validate-openapi: context: org-global requires: - setup @@ -478,7 +709,6 @@ workflows: ignore: - /feature*/ - /bugfix*/ - - test-integration: context: org-global requires: @@ -490,7 +720,6 @@ workflows: ignore: - /feature*/ - /bugfix*/ - - vulnerability-check: context: org-global requires: @@ -513,64 +742,75 @@ workflows: ignore: - /feature*/ - /bugfix*/ - - build-local: context: org-global requires: - - test-integration - - validate-openapi - - test-unit + - setup filters: tags: - only: /v[0-9]+(\.[0-9]+)*(\-snapshot)?/ + only: /.*/ branches: ignore: - /feature*/ - /bugfix*/ - - - image-scan: + - build: context: org-global requires: + - setup + - test-dependencies + - test-lint + - test-unit + - test-integration + - vulnerability-check + - audit-licenses - build-local + - validate-openapi filters: tags: - only: /v[0-9]+(\.[0-9]+)*(\-snapshot)?/ + only: /v[0-9]+(\.[0-9]+)*(\-snapshot(\.[0-9]+)?)?(\-hotfix(\.[0-9]+)?)?(\-perf(\.[0-9]+)?)?/ branches: ignore: - - /feature*/ - - /bugfix*/ - + - /.*/ - license-scan: context: org-global requires: - - build-local + - build filters: tags: - only: /v[0-9]+(\.[0-9]+)*(\-snapshot)?/ + only: /v[0-9]+(\.[0-9]+)*(\-snapshot(\.[0-9]+)?)?(\-hotfix(\.[0-9]+)?)?(\-perf(\.[0-9]+)?)?/ branches: ignore: - - /feature*/ - - /bugfix*/ - + - /.*/ + - image-scan: + context: org-global + requires: + - build + filters: + tags: + only: /v[0-9]+(\.[0-9]+)*(\-snapshot(\.[0-9]+)?)?(\-hotfix(\.[0-9]+)?)?(\-perf(\.[0-9]+)?)?/ + branches: + ignore: + - /.*/ # New commits to master release automatically - release: context: org-global requires: - - build-local - pr-tools/pr-title-check - - validate-openapi + - test-dependencies + - test-lint - test-unit + - build + - test-integration - vulnerability-check - audit-licenses - - test-integration - license-scan - image-scan + - validate-openapi filters: branches: only: - master - /release\/v.*/ - - github-release: context: org-global requires: @@ -580,40 +820,81 @@ workflows: only: - master - /release\/v.*/ - - publish-docker: context: org-global requires: - - build-local - pr-tools/pr-title-check + - test-dependencies + - test-lint + - test-unit + - build + - test-integration + - vulnerability-check + - audit-licenses + - license-scan + - image-scan - validate-openapi + filters: + tags: + only: /v[0-9]+(\.[0-9]+)*/ + branches: + ignore: + - /.*/ + - publish-docker-snapshot: + context: org-global + requires: + - pr-tools/pr-title-check + - test-dependencies + - test-lint - test-unit + - build - vulnerability-check - audit-licenses - test-integration - license-scan - image-scan + - validate-openapi filters: tags: - only: /.*/ + only: /v[0-9]+(\.[0-9]+)*\-snapshot+((\.[0-9]+)?)/ branches: ignore: - /.*/ - - publish-npm: context: org-global requires: - pr-tools/pr-title-check + - test-dependencies + - test-lint + - test-unit + - vulnerability-check + - audit-licenses + - test-integration + - license-scan + - image-scan - validate-openapi + filters: + tags: + only: /v[0-9]+(\.[0-9]+)*/ + branches: + ignore: + - /.*/ + - publish-npm-snapshot: + context: org-global + requires: + - pr-tools/pr-title-check + - test-dependencies + - test-lint - test-unit - vulnerability-check - audit-licenses - test-integration - license-scan - image-scan + - validate-openapi filters: tags: - only: /.*/ + only: /v[0-9]+(\.[0-9]+)*\-snapshot+((\.[0-9]+)?)/ branches: ignore: - /.*/ diff --git a/.dockerignore b/.dockerignore index 38c81075c..f30343f28 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,18 @@ -*node_modules* -*junit.xml* +deploy/ +coverage/ +node_modules/ +.dockerignore +.editorconfig +.git/ +.gitignore +.istanbul.yml +circle.yml +docker-compose.circle.yml +docker-compose.dev.yml +docker-compose.functional.yml +docker-compose.yml +Dockerfile +LICENSE +README.md +sonar-project.properties +.devspace/ diff --git a/Dockerfile b/Dockerfile index cce3ba422..65f1e29e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ RUN apk add --no-cache git python3 build-base EXPOSE 3000 -WORKDIR /src +WORKDIR /opt/app # This is super-ugly, but it means we don't have to re-run npm install every time any of the source # files change- only when any dependencies change- which is a superior developer experience when @@ -12,7 +12,12 @@ WORKDIR /src COPY ./package.json . COPY ./package-lock.json . RUN npm ci --only=production + +COPY src /opt/app/src + FROM node:16.15.0-alpine +WORKDIR /opt/app + ARG BUILD_DATE ARG VCS_URL @@ -28,8 +33,10 @@ LABEL org.label-schema.vcs-ref=$VCS_REF LABEL org.label-schema.url="https://mojaloop.io/" LABEL org.label-schema.version=$VERSION -COPY --from=builder /src/ /src -COPY ./src ./src -COPY ./secrets / +# Create a non-root user: ml-user +RUN adduser -D ml-user +USER ml-user + +COPY --chown=ml-user --from=builder /opt/app . -CMD ["node", "src/index.js"] +CMD ["npm", "run", "start"] diff --git a/audit-resolve.json b/audit-resolve.json index 79c1f9057..978cf010c 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -2,99 +2,63 @@ "decisions": { "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { "decision": "ignore", - "madeAt": 1656678986448 + "madeAt": 1657188195403, + "expiresAt": 1659780190646 }, "1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { "decision": "ignore", - "madeAt": 1656678989848 + "madeAt": 1657188196343, + "expiresAt": 1659780190646 }, - "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": { + "1080944|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { "decision": "ignore", - "madeAt": 1656679958470 + "madeAt": 1657188197274, + "expiresAt": 1659780190646 }, - "1070412|ejs": { - "decision": "ignore", - "madeAt": 1656679958471 - }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": { + "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it": { "decision": "ignore", - "madeAt": 1656679961621 + "madeAt": 1657188198190, + "expiresAt": 1659780190646 }, "1070030|widdershins>markdown-it": { "decision": "ignore", - "madeAt": 1656681873020 + "madeAt": 1657188198190, + "expiresAt": 1659780190646 }, - "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { + "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": { "decision": "ignore", - "madeAt": 1656679964361 + "madeAt": 1657188199040, + "expiresAt": 1659780190646 }, - "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": { + "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": { "decision": "ignore", - "madeAt": 1656679966871 + "madeAt": 1657188199954, + "expiresAt": 1659780190646 }, - "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": { + "1070412|ejs": { "decision": "ignore", - "madeAt": 1656679000803 + "madeAt": 1657188200902, + "expiresAt": 1659780190646 }, "1067553|swagger2openapi>better-ajv-errors>jsonpointer": { "decision": "ignore", - "madeAt": 1656679000803 - }, - "1067553|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1656679000804 - }, - "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": { - "decision": "ignore", - "madeAt": 1656679005322 + "madeAt": 1657188201786, + "expiresAt": 1659780190646 }, "1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { "decision": "ignore", - "madeAt": 1656679005322 - }, - "1067946|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { - "decision": "ignore", - "madeAt": 1656679005322 - }, - "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": { - "decision": "ignore", - "madeAt": 1656679007475 - }, - "1068310|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1656679007475 + "madeAt": 1657188202661, + "expiresAt": 1659780190646 }, - "1070412|shins>ejs": { - "decision": "ignore", - "madeAt": 1656679958471 - }, - "1070030|shins>ejs>markdown-it": { - "decision": "ignore", - "madeAt": 1656679961621 - }, - "1068155|shins>ejs>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1656679964361 - }, - "1070260|shins>ejs>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1656679966871 - }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it": { - "decision": "ignore", - "madeAt": 1656681873020 - }, - "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1656681876693 - }, - "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": { + "1068310|widdershins>markdown-it>yargs>yargs-parser": { "decision": "ignore", - "madeAt": 1656681880214 + "madeAt": 1657188203603, + "expiresAt": 1659780190646 }, - "1068310|widdershins>markdown-it>yargs>yargs-parser": { + "1080969|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { "decision": "ignore", - "madeAt": 1656681883038 + "madeAt": 1657217280998, + "expiresAt": 1659809259103 } }, "rules": {}, diff --git a/docker-compose.yml b/docker-compose.yml index 33b4bcae9..d943a6a02 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,9 +22,10 @@ services: - "4002:4002" depends_on: - redis - command: sh -c "/wait4/wait4.js sdk-scheme-adapter; node src/index.js" + command: sh -c "/tmp/wait4/wait4.js sdk-scheme-adapter && npm run start" volumes: - - ./docker/wait4:/wait4 + - ./docker/wait4:/tmp/wait4 + - ./secrets:/opt/app/secrets ml-testing-toolkit: networks: diff --git a/package-lock.json b/package-lock.json index d3b12ed76..eaeb744ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,28 +1,28 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.1", + "version": "17.0.2-snapshot.12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.1", + "version": "17.0.2-snapshot.12", "license": "Apache-2.0", "dependencies": { - "@koa/cors": "^3.1.0", + "@koa/cors": "^3.3.0", "@mojaloop/central-services-shared": "17.0.2", "@mojaloop/sdk-standard-components": "^17.1.0", "ajv": "8.11.0", "axios": "^0.27.2", "co-body": "^6.1.0", "dotenv": "^16.0.1", - "env-var": "^7.0.1", - "express": "^4.17.2", + "env-var": "^7.1.1", + "express": "^4.18.1", "fast-json-patch": "^3.1.1", "javascript-state-machine": "^3.1.0", "js-yaml": "^4.1.0", "json-schema-ref-parser": "^9.0.9", - "koa": "^2.13.1", + "koa": "^2.13.4", "koa-body": "^5.0.0", "lodash": "^4.17.21", "module-alias": "^2.2.2", @@ -31,30 +31,30 @@ "prom-client": "^14.0.1", "promise-timeout": "^1.3.0", "random-word-slugs": "^0.1.6", - "redis": "^4.1.1", - "uuidv4": "^6.2.12", + "redis": "^4.2.0", + "uuidv4": "^6.2.13", "ws": "^8.8.0" }, "devDependencies": { "@babel/core": "^7.18.6", "@babel/preset-env": "^7.18.6", "@mojaloop/api-snippets": "^14.0.0", - "@redocly/openapi-cli": "^1.0.0-beta.59", + "@redocly/openapi-cli": "^1.0.0-beta.94", "@types/jest": "^28.1.4", "babel-jest": "^28.1.2", "eslint": "^8.19.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.24.2", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^26.5.3", "jest": "^28.1.2", "jest-junit": "^14.0.0", "nock": "^13.2.8", - "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^15.0.2", + "npm-audit-resolver": "^3.0.0-7", + "npm-check-updates": "^15.2.1", "openapi-response-validator": "^12.0.0", - "openapi-typescript": "^5.4.0", + "openapi-typescript": "^5.4.1", "redis-mock": "^0.56.3", - "standard-version": "^9.3.1", + "standard-version": "^9.5.0", "supertest": "^6.2.4", "swagger-cli": "^4.0.4" }, @@ -3434,9 +3434,9 @@ } }, "node_modules/@redis/client": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.1.tgz", - "integrity": "sha512-IGGyazghVYuqsXv7/AxzMS0HmCPj0JRQX4l0XZ52BdJTUv2lNSnPgfWEE65HnC2gZCEO7STyaJbNultn1i0Y3g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.2.0.tgz", + "integrity": "sha512-a8Nlw5fv2EIAFJxTDSSDVUT7yfBGpZO96ybZXzQpgkyLg/dxtQ1uiwTc0EGfzg1mrPjZokeBSEGTbGXekqTNOg==", "dependencies": { "cluster-key-slot": "1.1.0", "generic-pool": "3.8.2", @@ -13115,9 +13115,9 @@ } }, "node_modules/npm-check-updates": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.2.tgz", - "integrity": "sha512-ZSmNUm2Cl8K7VZBhLY4/AE2NHmZfR4glKoRZIeJrgg5bvFP1LhRBU3tdS+IX1+MLoUvpF2L+Q7oD5QO+nBOm+Q==", + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.1.tgz", + "integrity": "sha512-UreoHjcbDYggZm4I8OX/Lp+QZZ8xrCDP+8xygchMBkax8mmOzL7VJ/cEvgWb99eYEZup6MuOoDaRCZUajwwG9g==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -13138,7 +13138,7 @@ "pacote": "^13.6.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts-ncu": "^2.5.0", + "prompts-ncu": "^2.5.1", "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", @@ -14000,9 +14000,9 @@ "integrity": "sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==" }, "node_modules/openapi-typescript": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.0.tgz", - "integrity": "sha512-YUtsWQ01igvx0xRmJvtzpHsxtvnSORrGMDTXFY1zs3znljsJDvhsUe7XrKoNP2eUmiOIwBXQMoM8M5V+nEnIrw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", + "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", "dev": true, "dependencies": { "js-yaml": "^4.1.0", @@ -14016,8 +14016,7 @@ "openapi-typescript": "bin/cli.js" }, "engines": { - "node": ">= 14.0.0", - "npm": ">= 7.0.0" + "node": ">= 14.0.0" } }, "node_modules/openapi-typescript/node_modules/yargs-parser": { @@ -14644,9 +14643,9 @@ } }, "node_modules/prompts-ncu": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.0.tgz", - "integrity": "sha512-a9WdInrG7zSlmfzDszmF3r8O4grZRI8+ChV0LtagHRT4dH7F+kxkrwFPGxeS83FZgAGBx3AXoLP+c4kGJb1P3w==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", + "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", "dev": true, "dependencies": { "kleur": "^4.0.1", @@ -15131,12 +15130,12 @@ } }, "node_modules/redis": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.1.tgz", - "integrity": "sha512-vVLYD0RMiDH4YQ1dtmtNU0RX5MAsvEA35Wj+4ZhrSNZXtGK87ktQ0lmI3O3Qn/omoIW456wfOUanqI/RNxagLw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.2.0.tgz", + "integrity": "sha512-bCR0gKVhIXFg8zCQjXEANzgI01DDixtPZgIUZHBCmwqixnu+MK3Tb2yqGjh+HCLASQVVgApiwhNkv+FoedZOGQ==", "dependencies": { "@redis/bloom": "1.0.2", - "@redis/client": "1.1.1", + "@redis/client": "1.2.0", "@redis/graph": "1.0.1", "@redis/json": "1.0.3", "@redis/search": "1.0.6", @@ -20832,9 +20831,9 @@ "requires": {} }, "@redis/client": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.1.tgz", - "integrity": "sha512-IGGyazghVYuqsXv7/AxzMS0HmCPj0JRQX4l0XZ52BdJTUv2lNSnPgfWEE65HnC2gZCEO7STyaJbNultn1i0Y3g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.2.0.tgz", + "integrity": "sha512-a8Nlw5fv2EIAFJxTDSSDVUT7yfBGpZO96ybZXzQpgkyLg/dxtQ1uiwTc0EGfzg1mrPjZokeBSEGTbGXekqTNOg==", "requires": { "cluster-key-slot": "1.1.0", "generic-pool": "3.8.2", @@ -28239,9 +28238,9 @@ } }, "npm-check-updates": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.0.2.tgz", - "integrity": "sha512-ZSmNUm2Cl8K7VZBhLY4/AE2NHmZfR4glKoRZIeJrgg5bvFP1LhRBU3tdS+IX1+MLoUvpF2L+Q7oD5QO+nBOm+Q==", + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.1.tgz", + "integrity": "sha512-UreoHjcbDYggZm4I8OX/Lp+QZZ8xrCDP+8xygchMBkax8mmOzL7VJ/cEvgWb99eYEZup6MuOoDaRCZUajwwG9g==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -28262,7 +28261,7 @@ "pacote": "^13.6.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts-ncu": "^2.5.0", + "prompts-ncu": "^2.5.1", "rc-config-loader": "^4.1.0", "remote-git-tags": "^3.0.0", "rimraf": "^3.0.2", @@ -28936,9 +28935,9 @@ "integrity": "sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==" }, "openapi-typescript": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.0.tgz", - "integrity": "sha512-YUtsWQ01igvx0xRmJvtzpHsxtvnSORrGMDTXFY1zs3znljsJDvhsUe7XrKoNP2eUmiOIwBXQMoM8M5V+nEnIrw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", + "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", "dev": true, "requires": { "js-yaml": "^4.1.0", @@ -29415,9 +29414,9 @@ } }, "prompts-ncu": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.0.tgz", - "integrity": "sha512-a9WdInrG7zSlmfzDszmF3r8O4grZRI8+ChV0LtagHRT4dH7F+kxkrwFPGxeS83FZgAGBx3AXoLP+c4kGJb1P3w==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", + "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", "dev": true, "requires": { "kleur": "^4.0.1", @@ -29789,12 +29788,12 @@ } }, "redis": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.1.1.tgz", - "integrity": "sha512-vVLYD0RMiDH4YQ1dtmtNU0RX5MAsvEA35Wj+4ZhrSNZXtGK87ktQ0lmI3O3Qn/omoIW456wfOUanqI/RNxagLw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.2.0.tgz", + "integrity": "sha512-bCR0gKVhIXFg8zCQjXEANzgI01DDixtPZgIUZHBCmwqixnu+MK3Tb2yqGjh+HCLASQVVgApiwhNkv+FoedZOGQ==", "requires": { "@redis/bloom": "1.0.2", - "@redis/client": "1.1.1", + "@redis/client": "1.2.0", "@redis/graph": "1.0.1", "@redis/json": "1.0.3", "@redis/search": "1.0.6", diff --git a/package.json b/package.json index f5f653e95..0630cc51c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.1", + "version": "17.0.2-snapshot.12", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", @@ -11,8 +11,9 @@ "~": "src" }, "scripts": { - "audit:resolve": "resolve-audit --production", - "audit:check": "check-audit --production", + "start": "node src/index.js", + "audit:resolve": "npx resolve-audit --production", + "audit:check": "npx check-audit --production", "build": "npm run build:openapi; npm run build:dto:outbound", "build:openapi": "npm run build:openapi:inbound && npm run build:openapi:outbound", "build:openapi:inbound": "openapi bundle --output ./src/InboundServer/api.yaml --ext yaml ./src/InboundServer/api_template.yaml", @@ -20,7 +21,8 @@ "build:dto:outbound": "openapi-typescript ./src/OutboundServer/api.yaml --output ./src/OutboundServer/api_interfaces/openapi.d.ts", "lint": "eslint ./src/", "lint:fix": "eslint ./src/ --fix", - "test": "jest --ci --reporters=default --reporters=jest-junit --env=node test/unit/", + "test": "npm run test:unit", + "test:unit": "jest --runInBand --ci --reporters=default --reporters=jest-junit --env=node test/unit/", "test:int": "jest --ci --reporters=default --reporters=jest-junit --env=node test/integration", "validate:api": "npm run validate:api:in; npm run validate:api:out", "validate:api:in": "swagger-cli validate ./src/InboundServer/api.yaml", @@ -55,20 +57,20 @@ "url": "git@github.com:mojaloop/sdk-scheme-adapter.git" }, "dependencies": { - "@koa/cors": "^3.1.0", + "@koa/cors": "^3.3.0", "@mojaloop/central-services-shared": "17.0.2", "@mojaloop/sdk-standard-components": "^17.1.0", "ajv": "8.11.0", "axios": "^0.27.2", "co-body": "^6.1.0", "dotenv": "^16.0.1", - "env-var": "^7.0.1", - "express": "^4.17.2", + "env-var": "^7.1.1", + "express": "^4.18.1", "fast-json-patch": "^3.1.1", "javascript-state-machine": "^3.1.0", "js-yaml": "^4.1.0", "json-schema-ref-parser": "^9.0.9", - "koa": "^2.13.1", + "koa": "^2.13.4", "koa-body": "^5.0.0", "lodash": "^4.17.21", "module-alias": "^2.2.2", @@ -77,30 +79,30 @@ "prom-client": "^14.0.1", "promise-timeout": "^1.3.0", "random-word-slugs": "^0.1.6", - "redis": "^4.1.1", - "uuidv4": "^6.2.12", + "redis": "^4.2.0", + "uuidv4": "^6.2.13", "ws": "^8.8.0" }, "devDependencies": { "@babel/core": "^7.18.6", "@babel/preset-env": "^7.18.6", "@mojaloop/api-snippets": "^14.0.0", - "@redocly/openapi-cli": "^1.0.0-beta.59", + "@redocly/openapi-cli": "^1.0.0-beta.94", "@types/jest": "^28.1.4", "babel-jest": "^28.1.2", "eslint": "^8.19.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.24.2", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^26.5.3", "jest": "^28.1.2", "jest-junit": "^14.0.0", "nock": "^13.2.8", - "npm-audit-resolver": "^3.0.0-0", - "npm-check-updates": "^15.0.2", + "npm-audit-resolver": "^3.0.0-7", + "npm-check-updates": "^15.2.1", "openapi-response-validator": "^12.0.0", - "openapi-typescript": "^5.4.0", + "openapi-typescript": "^5.4.1", "redis-mock": "^0.56.3", - "standard-version": "^9.3.1", + "standard-version": "^9.5.0", "supertest": "^6.2.4", "swagger-cli": "^4.0.4" } diff --git a/src/lib/model/AccountsModel.js b/src/lib/model/AccountsModel.js index 6f73db582..4f2ccac6a 100644 --- a/src/lib/model/AccountsModel.js +++ b/src/lib/model/AccountsModel.js @@ -16,10 +16,7 @@ const StateMachine = require('javascript-state-machine'); const { MojaloopRequests, Errors } = require('@mojaloop/sdk-standard-components'); const { BackendError } = require('./common'); -const stateEnum = { - 'ERROR_OCCURRED': 'ERROR_OCCURRED', - 'COMPLETED': 'COMPLETED', -}; +const { SDKStateEnum } = require('./common'); /** @@ -283,11 +280,11 @@ class AccountsModel { switch(this._data.currentState) { case 'succeeded': - resp.currentState = stateEnum.COMPLETED; + resp.currentState = SDKStateEnum.COMPLETED; break; case 'errored': - resp.currentState = stateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; default: @@ -295,7 +292,7 @@ class AccountsModel { `Account model response being returned from an unexpected state: ${this._data.currentState}. ` + 'Returning ERROR_OCCURRED state' ); - resp.currentState = stateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; } return resp; diff --git a/src/lib/model/Async2SyncModel.js b/src/lib/model/Async2SyncModel.js index 366062a07..f79e018e3 100644 --- a/src/lib/model/Async2SyncModel.js +++ b/src/lib/model/Async2SyncModel.js @@ -12,6 +12,7 @@ const util = require('util'); const PSM = require('./common').PersistentStateMachine; +const { SDKStateEnum } = require('./common'); const MojaloopRequests = require('@mojaloop/sdk-standard-components').MojaloopRequests; const deferredJob = require('./lib').deferredJob; @@ -123,9 +124,9 @@ function generate({ } const mapCurrentState = { - start: 'WAITING_FOR_ACTION', - succeeded: 'COMPLETED', - errored: 'ERROR_OCCURRED' + start: SDKStateEnum.WAITING_FOR_ACTION, + succeeded: SDKStateEnum.COMPLETED, + errored: SDKStateEnum.ERROR_OCCURRED }; /** diff --git a/src/lib/model/InboundTransfersModel.js b/src/lib/model/InboundTransfersModel.js index 099821e22..1d620a78e 100644 --- a/src/lib/model/InboundTransfersModel.js +++ b/src/lib/model/InboundTransfersModel.js @@ -22,7 +22,9 @@ const { Errors, } = require('@mojaloop/sdk-standard-components'); const shared = require('./lib/shared'); -const { TransferStateEnum } = require('./common'); +const { SDKStateEnum } = require('./common'); +const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState; +const FSPIOPBulkTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.BulkTransferState; /** * Models the operations required for performing inbound transfers @@ -74,7 +76,7 @@ class InboundTransfersModel { updateStateWithError(err) { this.data.lastError = err; - this.data.currentState = TransferStateEnum.ERROR_OCCURRED; + this.data.currentState = SDKStateEnum.ERROR_OCCURRED; return this._save(); } @@ -188,7 +190,7 @@ class InboundTransfersModel { headers: request.headers, body: request.body }, - currentState: TransferStateEnum.QUOTE_REQUEST_RECEIVED, + currentState: SDKStateEnum.QUOTE_REQUEST_RECEIVED, initiatedTimestamp: new Date().toISOString(), }; @@ -237,7 +239,7 @@ class InboundTransfersModel { headers: res.originalRequest.headers, body: res.originalRequest.body, }; - this.data.currentState = TransferStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE; + this.data.currentState = SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE; await this._save(); return res; } @@ -342,7 +344,7 @@ class InboundTransfersModel { // persist our state so we have a record if we crash during processing the prepare this.data.prepare = request; - this.data.currentState = TransferStateEnum.PREPARE_RECEIVED; + this.data.currentState = SDKStateEnum.PREPARE_RECEIVED; await this._save(); // Calculate or retrieve fulfilment and condition @@ -390,7 +392,7 @@ class InboundTransfersModel { // create a mojaloop transfer fulfil response const mojaloopResponse = { completedTimestamp: response.completedTimestamp || new Date(), - transferState: response.transferState || (this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED), + transferState: response.transferState || (this._reserveNotification ? FSPIOPTransferStateEnum.RESERVED : FSPIOPTransferStateEnum.COMMITTED), fulfilment: response.fulfilment || fulfilment, ...response.extensionList && { extensionList: { @@ -406,7 +408,7 @@ class InboundTransfersModel { headers: res.originalRequest.headers, body: res.originalRequest.body, }; - this.data.currentState = response.transferState || (this._reserveNotification ? TransferStateEnum.RESERVED : TransferStateEnum.COMPLETED); + this.data.currentState = response.transferState || (this._reserveNotification ? SDKStateEnum.RESERVED : SDKStateEnum.COMPLETED); await this._save(); return res; } catch(err) { @@ -649,7 +651,7 @@ class InboundTransfersModel { if (individualTransferErrors.length) { // TODO: Verify and align with actual schema for bulk transfers error endpoint const mojaloopErrorResponse = { - bulkTransferState: 'REJECTED', + bulkTransferState: FSPIOPBulkTransferStateEnum.REJECTED, // eslint-disable-next-line no-unused-vars individualTransferResults: individualTransferErrors.map(({ transferId, transferError }) => ({ transferId, @@ -679,7 +681,7 @@ class InboundTransfersModel { // create a mojaloop transfer fulfil response const mojaloopResponse = { completedTimestamp: new Date(), - bulkTransferState: 'COMMITTED', + bulkTransferState: FSPIOPBulkTransferStateEnum.COMPLETED, }; if (response.individualTransferResults && response.individualTransferResults.length) { @@ -784,18 +786,18 @@ class InboundTransfersModel { // tag the final notification body on to the state this.data.finalNotification = body; - if(body.transferState === 'COMMITTED') { + if(body.transferState === FSPIOPTransferStateEnum.COMMITTED) { // if the transfer was successful in the switch, set the overall transfer state to COMPLETED - this.data.currentState = TransferStateEnum.COMPLETED; + this.data.currentState = SDKStateEnum.COMPLETED; } - else if(body.transferState === 'ABORTED') { + else if(body.transferState === FSPIOPTransferStateEnum.ABORTED) { // if the transfer was ABORTED in the switch, set the overall transfer state to ABORTED - this.data.currentState = TransferStateEnum.ABORTED; + this.data.currentState = SDKStateEnum.ABORTED; } else { // if the final notification has anything other than COMMITTED as the final state, set an error // in the transfer state. - this.data.currentState = TransferStateEnum.ERROR_OCCURED; + this.data.currentState = SDKStateEnum.ERROR_OCCURED; this.data.lastError = 'Final notification state not COMMITTED'; } @@ -845,7 +847,7 @@ class InboundTransfersModel { originalError: err.stack || util.inspect(err), mojaloopError: mojaloopError, }; - this.data.currentState = TransferStateEnum.ERROR_OCCURRED; + this.data.currentState = SDKStateEnum.ERROR_OCCURRED; await this._save(); } return mojaloopError; diff --git a/src/lib/model/OutboundBulkQuotesModel.js b/src/lib/model/OutboundBulkQuotesModel.js index 950219193..725dbc8d9 100644 --- a/src/lib/model/OutboundBulkQuotesModel.js +++ b/src/lib/model/OutboundBulkQuotesModel.js @@ -17,10 +17,7 @@ const { MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const shared = require('./lib/shared'); const { BackendError } = require('./common'); -const stateEnum = { - 'ERROR_OCCURRED': 'ERROR_OCCURRED', - 'COMPLETED': 'COMPLETED', -}; +const { SDKStateEnum } = require('./common'); /** @@ -381,16 +378,16 @@ class OutboundBulkQuotesModel { switch(this.data.currentState) { case 'succeeded': - resp.currentState = stateEnum.COMPLETED; + resp.currentState = SDKStateEnum.COMPLETED; break; case 'errored': - resp.currentState = stateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; default: this._logger.log(`Bulk quote model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`); - resp.currentState = stateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; } diff --git a/src/lib/model/OutboundBulkTransfersModel.js b/src/lib/model/OutboundBulkTransfersModel.js index e79997563..151c50ab3 100644 --- a/src/lib/model/OutboundBulkTransfersModel.js +++ b/src/lib/model/OutboundBulkTransfersModel.js @@ -16,10 +16,7 @@ const StateMachine = require('javascript-state-machine'); const { MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const { BackendError } = require('./common'); -const stateEnum = { - 'ERROR_OCCURRED': 'ERROR_OCCURRED', - 'COMPLETED': 'COMPLETED', -}; +const { SDKStateEnum } = require('./common'); /** * Models the state machine and operations required for performing an outbound bulk transfer @@ -373,16 +370,16 @@ class OutboundBulkTransfersModel { switch(this.data.currentState) { case 'succeeded': - resp.currentState = stateEnum.COMPLETED; + resp.currentState = SDKStateEnum.COMPLETED; break; case 'errored': - resp.currentState = stateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; default: this._logger.log(`Bulk transfer model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`); - resp.currentState = stateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; } diff --git a/src/lib/model/OutboundRequestToPayModel.js b/src/lib/model/OutboundRequestToPayModel.js index 0ad13e1f9..617e6591a 100644 --- a/src/lib/model/OutboundRequestToPayModel.js +++ b/src/lib/model/OutboundRequestToPayModel.js @@ -17,12 +17,7 @@ const { MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const { BackendError } = require('./common'); const PartiesModel = require('./PartiesModel'); -const transferStateEnum = { - 'WAITING_FOR_PARTY_ACCEPTANCE': 'WAITING_FOR_PARTY_ACCEPTANCE', - 'WAITING_FOR_QUOTE_ACCEPTANCE': 'WAITING_FOR_QUOTE_ACCEPTANCE', - 'ERROR_OCCURRED': 'ERROR_OCCURRED', - 'COMPLETED': 'COMPLETED', -}; +const { SDKStateEnum } = require('./common'); class OutboundRequestToPayModel { @@ -480,20 +475,20 @@ class OutboundRequestToPayModel { switch(this.data.currentState) { case 'payeeResolved': - resp.currentState = transferStateEnum.WAITING_FOR_PARTY_ACCEPTANCE; + resp.currentState = SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE; break; case 'succeeded': - resp.currentState = transferStateEnum.COMPLETED; + resp.currentState = SDKStateEnum.COMPLETED; break; case 'errored': - resp.currentState = transferStateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; default: this._logger.log(`Transaction Request model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`); - resp.currentState = transferStateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; } diff --git a/src/lib/model/OutboundRequestToPayTransferModel.js b/src/lib/model/OutboundRequestToPayTransferModel.js index 17505f7cb..f9890bc26 100644 --- a/src/lib/model/OutboundRequestToPayTransferModel.js +++ b/src/lib/model/OutboundRequestToPayTransferModel.js @@ -18,13 +18,7 @@ const shared = require('./lib/shared'); const { BackendError } = require('./common'); const PartiesModel = require('./PartiesModel'); -const requestToPayTransferStateEnum = { - 'WAITING_FOR_QUOTE_ACCEPTANCE': 'WAITING_FOR_QUOTE_ACCEPTANCE', - 'WAITING_FOR_OTP_ACCEPTANCE': 'WAITING_FOR_OTP_ACCEPTANCE', - 'ERROR_OCCURRED': 'ERROR_OCCURRED', - 'COMPLETED': 'COMPLETED', -}; - +const { SDKStateEnum } = require('./common'); /** * Models the state machine and operations required for performing an outbound transfer @@ -826,24 +820,24 @@ class OutboundRequestToPayTransferModel { switch(this.data.currentState) { case 'quoteReceived': - resp.currentState = requestToPayTransferStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE; + resp.currentState = SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE; break; case 'otpReceived': - resp.currentState = requestToPayTransferStateEnum.WAITING_FOR_OTP_ACCEPTANCE; + resp.currentState = SDKStateEnum.WAITING_FOR_OTP_ACCEPTANCE; break; case 'succeeded': - resp.currentState = requestToPayTransferStateEnum.COMPLETED; + resp.currentState = SDKStateEnum.COMPLETED; break; case 'errored': - resp.currentState = requestToPayTransferStateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; default: this._logger.log(`Transfer model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`); - resp.currentState = requestToPayTransferStateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; } diff --git a/src/lib/model/OutboundTransfersModel.js b/src/lib/model/OutboundTransfersModel.js index 075ed4333..7ab3b4bb7 100644 --- a/src/lib/model/OutboundTransfersModel.js +++ b/src/lib/model/OutboundTransfersModel.js @@ -15,7 +15,8 @@ const { uuid } = require('uuidv4'); const StateMachine = require('javascript-state-machine'); const { Ilp, MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const shared = require('./lib/shared'); -const { BackendError, TransferStateEnum } = require('./common'); +const { BackendError, SDKStateEnum } = require('./common'); +const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState; const PartiesModel = require('./PartiesModel'); /** @@ -685,7 +686,7 @@ class OutboundTransfersModel { if(this._checkIlp && !this._ilp.validateFulfil(fulfil.body.fulfilment, this.data.quoteResponse.body.condition)) { throw new Error('Invalid fulfilment received from peer DFSP.'); } - if(this._sendFinalNotificationIfRequested && fulfil.body.transferState === 'RESERVED') { + if(this._sendFinalNotificationIfRequested && fulfil.body.transferState === FSPIOPTransferStateEnum.RESERVED) { // we need to send a PATCH notification back to say we have committed the transfer. // Note that this is normally a switch only responsibility but the capability is // implemented here to support testing use cases where the mojaloop-connector is @@ -695,7 +696,7 @@ class OutboundTransfersModel { // we will use the current server time as committed timestamp. const patchNotification = { completedTimestamp: (new Date()).toISOString(), - transferState: 'COMMITTED', + transferState: FSPIOPTransferStateEnum.COMMITTED, }; const res = this._requests.patchTransfers(this.data.transferId, patchNotification, this.data.quoteResponseSource); @@ -885,28 +886,28 @@ class OutboundTransfersModel { switch(this.data.currentState) { case 'payeeResolved': - resp.currentState = TransferStateEnum.WAITING_FOR_PARTY_ACCEPTANCE; + resp.currentState = SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE; break; case 'quoteReceived': - resp.currentState = TransferStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE; + resp.currentState = SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE; break; case 'succeeded': - resp.currentState = TransferStateEnum.COMPLETED; + resp.currentState = SDKStateEnum.COMPLETED; break; case 'aborted': - resp.currentState = TransferStateEnum.ABORTED; + resp.currentState = SDKStateEnum.ABORTED; break; case 'errored': - resp.currentState = TransferStateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; default: this._logger.log(`Transfer model response being returned from an unexpected state: ${this.data.currentState}. Returning ERROR_OCCURRED state`); - resp.currentState = TransferStateEnum.ERROR_OCCURRED; + resp.currentState = SDKStateEnum.ERROR_OCCURRED; break; } diff --git a/src/lib/model/common/BackendError.js b/src/lib/model/common/BackendError.js index 2fcd76e8f..4b35593ec 100644 --- a/src/lib/model/common/BackendError.js +++ b/src/lib/model/common/BackendError.js @@ -10,17 +10,6 @@ 'use strict'; -const TransferStateEnum = { - 'WAITING_FOR_PARTY_ACCEPTANCE': 'WAITING_FOR_PARTY_ACCEPTANCE', - 'QUOTE_REQUEST_RECEIVED': 'QUOTE_REQUEST_RECEIVED', - 'WAITING_FOR_QUOTE_ACCEPTANCE': 'WAITING_FOR_QUOTE_ACCEPTANCE', - 'PREPARE_RECEIVED': 'PREPARE_RECEIVED', - 'ERROR_OCCURRED': 'ERROR_OCCURRED', - 'COMPLETED': 'COMPLETED', - 'ABORTED': 'ABORTED', - 'RESERVED': 'RESERVED', -}; - class BackendError extends Error { constructor(msg, httpStatusCode) { super(msg); @@ -45,6 +34,5 @@ class BackendError extends Error { module.exports = { - BackendError, - TransferStateEnum, + BackendError }; diff --git a/src/lib/model/common/Enums.js b/src/lib/model/common/Enums.js new file mode 100644 index 000000000..8c9f83082 --- /dev/null +++ b/src/lib/model/common/Enums.js @@ -0,0 +1,30 @@ + +/************************************************************************** + * (C) Copyright ModusBox Inc. 2019 - All rights reserved. * + * * + * This file is made available under the terms of the license agreement * + * specified in the corresponding source code repository. * + * * + * ORIGINAL AUTHOR: * + * Yevhen Kyriukha - yevhen.kyriukha@modusbox.com * + **************************************************************************/ + +'use strict'; + +// NOTE: Stick all common SDK ENUMS here. SDKStateEnum is the first attempt at consolidating and cleaning up ENUMS in the SDK. + +const SDKStateEnum = { + WAITING_FOR_ACTION: 'WAITING_FOR_ACTION', + WAITING_FOR_PARTY_ACCEPTANCE: 'WAITING_FOR_PARTY_ACCEPTANCE', + QUOTE_REQUEST_RECEIVED: 'QUOTE_REQUEST_RECEIVED', + WAITING_FOR_QUOTE_ACCEPTANCE: 'WAITING_FOR_QUOTE_ACCEPTANCE', + PREPARE_RECEIVED: 'PREPARE_RECEIVED', + ERROR_OCCURRED: 'ERROR_OCCURRED', + COMPLETED: 'COMPLETED', + ABORTED: 'ABORTED', + RESERVED: 'RESERVED', +}; + +module.exports = { + SDKStateEnum, +}; diff --git a/src/lib/model/common/index.js b/src/lib/model/common/index.js index 2aa968f30..1ec95dcc1 100644 --- a/src/lib/model/common/index.js +++ b/src/lib/model/common/index.js @@ -9,11 +9,12 @@ **************************************************************************/ 'use strict'; -const { BackendError, TransferStateEnum } = require('./BackendError'); +const { SDKStateEnum } = require('./Enums'); +const { BackendError } = require('./BackendError'); const PersistentStateMachine = require('./PersistentStateMachine'); module.exports = { BackendError, - TransferStateEnum, + SDKStateEnum, PersistentStateMachine }; diff --git a/test/config/integration.env b/test/config/integration.env index 88c55c172..0e9d22089 100644 --- a/test/config/integration.env +++ b/test/config/integration.env @@ -26,8 +26,8 @@ JWS_SIGN=false JWS_SIGN_PUT_PARTIES=false # Path to JWS signing key (private key of THIS DFSP) -JWS_SIGNING_KEY_PATH=/jwsSigningKey.key -JWS_VERIFICATION_KEYS_DIRECTORY=/jwsVerificationKeys +JWS_SIGNING_KEY_PATH=secrets/jwsSigningKey.key +JWS_VERIFICATION_KEYS_DIRECTORY=secrets/jwsVerificationKeys # Location of certs and key required for TLS # IN_CA_CERT_PATH=./secrets/cacert.pem diff --git a/test/integration/lib/Outbound/parties.test.js b/test/integration/lib/Outbound/parties.test.js index eed8bf9ef..1677b6eb0 100644 --- a/test/integration/lib/Outbound/parties.test.js +++ b/test/integration/lib/Outbound/parties.test.js @@ -2,6 +2,7 @@ const axios = require('axios'); const env = require('../../testEnv'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); jest.dontMock('redis'); @@ -12,7 +13,7 @@ describe('/parties', () => { const res = await axios.get(getPartiesURI); expect(res.status).toEqual(200); - expect(res.data.currentState).toEqual('COMPLETED'); + expect(res.data.currentState).toEqual(SDKStateEnum.COMPLETED); expect(typeof res.data.party).toEqual('object'); expect(typeof res.data.party.body).toEqual('object'); expect(typeof res.data.party.headers).toEqual('object'); diff --git a/test/integration/lib/Outbound/quotes.test.js b/test/integration/lib/Outbound/quotes.test.js index 898da31d7..e4ca533ff 100644 --- a/test/integration/lib/Outbound/quotes.test.js +++ b/test/integration/lib/Outbound/quotes.test.js @@ -4,6 +4,8 @@ const axios = require('axios'); const { uuid } = require('uuidv4'); const env = require('../../testEnv'); const quotesPostRequest = require('./data/quotesPostRequest.json'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); + jest.dontMock('redis'); @@ -28,7 +30,7 @@ describe('/quotes', () => { }); expect(res.status).toEqual(200); - expect(res.data.currentState).toEqual('COMPLETED'); + expect(res.data.currentState).toEqual(SDKStateEnum.COMPLETED); expect(typeof res.data.quotes).toEqual('object'); expect(typeof res.data.quotes.body).toEqual('object'); expect(typeof res.data.quotes.headers).toEqual('object'); diff --git a/test/integration/lib/Outbound/simpleTransfers.test.js b/test/integration/lib/Outbound/simpleTransfers.test.js index 7edfba57a..b0001e969 100644 --- a/test/integration/lib/Outbound/simpleTransfers.test.js +++ b/test/integration/lib/Outbound/simpleTransfers.test.js @@ -4,6 +4,7 @@ const axios = require('axios'); const { uuid } = require('uuidv4'); const env = require('../../testEnv'); const transfersPostRequest = require('./data/transfersPostRequest.json'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); jest.dontMock('redis'); @@ -37,7 +38,7 @@ describe('/simpleTransfers', () => { }); expect(res.status).toEqual(200); - expect(res.data.currentState).toEqual('COMPLETED'); + expect(res.data.currentState).toEqual(SDKStateEnum.COMPLETED); expect(typeof res.data.transfer).toEqual('object'); expect(typeof res.data.transfer.body).toEqual('object'); expect(typeof res.data.transfer.headers).toEqual('object'); diff --git a/test/unit/inboundApi/handlers.test.js b/test/unit/inboundApi/handlers.test.js index 2ee98efa3..89558162d 100644 --- a/test/unit/inboundApi/handlers.test.js +++ b/test/unit/inboundApi/handlers.test.js @@ -22,6 +22,8 @@ const mockArguments = require('./data/mockArguments'); const mockTransactionRequestData = require('./data/mockTransactionRequest'); const { Logger } = require('@mojaloop/sdk-standard-components'); +const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState; + describe('Inbound API handlers:', () => { let mockArgs; let mockTransactionRequest; @@ -549,7 +551,7 @@ describe('Inbound API handlers:', () => { }, body: { - transferState: 'COMMITTED', + transferState: FSPIOPTransferStateEnum.COMMITTED, completedTimestamp: '2020-08-18T09:39:33.552Z' } }, diff --git a/test/unit/lib/model/AccountsModel.test.js b/test/unit/lib/model/AccountsModel.test.js index fd8404c50..96df14412 100644 --- a/test/unit/lib/model/AccountsModel.test.js +++ b/test/unit/lib/model/AccountsModel.test.js @@ -19,6 +19,7 @@ const { AccountsModel } = require('~/lib/model'); const StateMachine = require('javascript-state-machine'); const { MojaloopRequests, Logger } = require('@mojaloop/sdk-standard-components'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); const defaultConfig = require('./data/defaultConfig'); const transferRequest = require('./data/transferRequest'); @@ -83,7 +84,7 @@ describe('AccountsModel', () => { (Math.floor(count / MAX_ITEMS_PER_REQUEST) + ((count % MAX_ITEMS_PER_REQUEST) ? 1 : 0)); expect(MojaloopRequests.__postParticipants).toHaveBeenCalledTimes(expectedRequestsCount); - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); } diff --git a/test/unit/lib/model/InboundTransfersModel.test.js b/test/unit/lib/model/InboundTransfersModel.test.js index 6d7f6fe6a..65928e04b 100644 --- a/test/unit/lib/model/InboundTransfersModel.test.js +++ b/test/unit/lib/model/InboundTransfersModel.test.js @@ -31,6 +31,10 @@ const notificationToPayee = require('./data/notificationToPayee'); const notificationAbortedToPayee = require('./data/notificationAbortedToPayee'); const notificationReservedToPayee = require('./data/notificationReservedToPayee'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); +const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState; +const FSPIOPBulkTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.BulkTransferState; + describe('inboundModel', () => { let config; let mockArgs; @@ -324,7 +328,7 @@ describe('inboundModel', () => { const call = MojaloopRequests.__putTransfers.mock.calls[0]; expect(call[0]).toEqual(TRANSFER_ID); expect(call[1]).toEqual(getTransfersMojaloopResponse); - expect(call[1].transferState).toEqual('COMMITTED'); + expect(call[1].transferState).toEqual(FSPIOPTransferStateEnum.COMMITTED); }); test('getTransfer should not return fulfillment from payer', async () => { @@ -345,7 +349,7 @@ describe('inboundModel', () => { const call = MojaloopRequests.__putTransfers.mock.calls[0]; expect(call[0]).toEqual(TRANSFER_ID); expect(call[1]).toEqual({...getTransfersMojaloopResponse, fulfilment: undefined}); - expect(call[1].transferState).toEqual('COMMITTED'); + expect(call[1].transferState).toEqual(FSPIOPTransferStateEnum.COMMITTED); }); test('getTransfer should return not found error', async () => { @@ -601,7 +605,7 @@ describe('inboundModel', () => { const call = MojaloopRequests.__putBulkTransfers.mock.calls[0]; expect(call[0]).toEqual(BULK_TRANSFER_ID); expect(call[1]).toEqual(getBulkTransfersMojaloopResponse); - expect(call[1].bulkTransferState).toEqual('COMMITTED'); + expect(call[1].bulkTransferState).toEqual(FSPIOPBulkTransferStateEnum.COMPLETED); }); test('getBulkTransfer should not return fulfillment from payer', async () => { @@ -621,7 +625,7 @@ describe('inboundModel', () => { const call = MojaloopRequests.__putBulkTransfers.mock.calls[0]; expect(call[0]).toEqual(BULK_TRANSFER_ID); - expect(call[1].bulkTransferState).toEqual('COMMITTED'); + expect(call[1].bulkTransferState).toEqual(FSPIOPBulkTransferStateEnum.COMPLETED); const expectedResponse = {...getBulkTransfersMojaloopResponse}; expectedResponse.individualTransferResults[0].fulfilment = undefined; expect(call[1]).toMatchObject(expectedResponse); @@ -738,7 +742,7 @@ describe('inboundModel', () => { const notif = JSON.parse(JSON.stringify(notificationToPayee)); const expectedRequest = { - currentState: 'COMPLETED', + currentState: SDKStateEnum.COMPLETED, finalNotification: notif.data, }; @@ -760,7 +764,7 @@ describe('inboundModel', () => { const notif = JSON.parse(JSON.stringify(notificationAbortedToPayee)); const expectedRequest = { - currentState: 'ABORTED', + currentState: SDKStateEnum.ABORTED, finalNotification: notif.data, }; diff --git a/test/unit/lib/model/OutboundBulkQuotesModel.test.js b/test/unit/lib/model/OutboundBulkQuotesModel.test.js index c3bb09716..bb621b891 100644 --- a/test/unit/lib/model/OutboundBulkQuotesModel.test.js +++ b/test/unit/lib/model/OutboundBulkQuotesModel.test.js @@ -20,6 +20,8 @@ const Model = require('~/lib/model').OutboundBulkQuotesModel; const { MojaloopRequests, Logger } = require('@mojaloop/sdk-standard-components'); const StateMachine = require('javascript-state-machine'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); + const defaultConfig = require('./data/defaultConfig'); const bulkQuoteRequest = require('./data/bulkQuoteRequest'); const bulkQuoteResponseTemplate = require('./data/bulkQuoteResponse'); @@ -74,7 +76,7 @@ describe('OutboundBulkQuotesModel', () => { await expect(model.run()).rejects.toThrowError(expectError); } else { const result = await model.run(); - await expect(result.currentState).toBe('COMPLETED'); + await expect(result.currentState).toBe(SDKStateEnum.COMPLETED); } } @@ -139,7 +141,7 @@ describe('OutboundBulkQuotesModel', () => { expect(MojaloopRequests.__getBulkQuotes).toHaveBeenCalledTimes(1); // check we stopped at succeeded state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -174,7 +176,7 @@ describe('OutboundBulkQuotesModel', () => { expect(MojaloopRequests.__postBulkQuotes).toHaveBeenCalledTimes(1); // check we stopped at 'succeeded' state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); diff --git a/test/unit/lib/model/OutboundBulkTransfersModel.test.js b/test/unit/lib/model/OutboundBulkTransfersModel.test.js index 7d5346865..ce0ce9f50 100644 --- a/test/unit/lib/model/OutboundBulkTransfersModel.test.js +++ b/test/unit/lib/model/OutboundBulkTransfersModel.test.js @@ -19,6 +19,7 @@ const Model = require('~/lib/model').OutboundBulkTransfersModel; const { MojaloopRequests, Logger } = require('@mojaloop/sdk-standard-components'); const StateMachine = require('javascript-state-machine'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); const defaultConfig = require('./data/defaultConfig'); const bulkTransferRequest = require('./data/bulkTransferRequest'); @@ -70,7 +71,7 @@ describe('outboundBulkTransferModel', () => { await expect(model.run()).rejects.toThrowError(expectError); } else { const result = await model.run(); - await expect(result.currentState).toBe('COMPLETED'); + await expect(result.currentState).toBe(SDKStateEnum.COMPLETED); } } @@ -136,7 +137,7 @@ describe('outboundBulkTransferModel', () => { expect(MojaloopRequests.__postBulkTransfers).toHaveBeenCalledTimes(1); // check we stopped at succeeded state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -168,7 +169,7 @@ describe('outboundBulkTransferModel', () => { expect(MojaloopRequests.__getBulkTransfers).toHaveBeenCalledTimes(1); // check we stopped at succeeded state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); diff --git a/test/unit/lib/model/OutboundRequestToPayModel.test.js b/test/unit/lib/model/OutboundRequestToPayModel.test.js index 20dcc9531..48dfe0a3e 100644 --- a/test/unit/lib/model/OutboundRequestToPayModel.test.js +++ b/test/unit/lib/model/OutboundRequestToPayModel.test.js @@ -20,6 +20,7 @@ const PartiesModel = require('~/lib/model').PartiesModel; const { MojaloopRequests, Logger } = require('@mojaloop/sdk-standard-components'); const StateMachine = require('javascript-state-machine'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); const defaultConfig = require('./data/defaultConfig'); const requestToPayRequest = require('./data/requestToPayRequest'); @@ -124,7 +125,7 @@ describe('outboundModel', () => { expect(MojaloopRequests.__postTransactionRequests).toHaveBeenCalledTimes(1); // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(result.requestToPayState).toBe('RECEIVED'); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -157,7 +158,7 @@ describe('outboundModel', () => { const result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); }); diff --git a/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js b/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js index 7fb2466be..9a7a1ad49 100644 --- a/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +++ b/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js @@ -19,6 +19,7 @@ const Model = require('~/lib/model').OutboundRequestToPayTransferModel; const { MojaloopRequests, Logger } = require('@mojaloop/sdk-standard-components'); const StateMachine = require('javascript-state-machine'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); const defaultConfig = require('./data/defaultConfig'); const requestToPayTransferRequest = require('./data/requestToPayTransferRequest'); @@ -154,7 +155,7 @@ describe('outboundRequestToPayTransferModel', () => { expect(MojaloopRequests.__postTransfers).toHaveBeenCalledTimes(1); // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -183,7 +184,7 @@ describe('outboundRequestToPayTransferModel', () => { // let result = await resultPromise; // // check we stopped at quoteReceived state - // expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + // expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); // expect(StateMachine.__instance.state).toBe('quoteReceived'); // const requestToPayTransactionId = requestToPayTransferRequest.requestToPayTransactionId; @@ -235,7 +236,7 @@ describe('outboundRequestToPayTransferModel', () => { // result = await resultPromise; // // check we stopped at quoteReceived state - // expect(result.currentState).toBe('COMPLETED'); + // expect(result.currentState).toBe(SDKStateEnum.COMPLETED); // expect(StateMachine.__instance.state).toBe('succeeded'); // }); diff --git a/test/unit/lib/model/OutboundTransfersModel.test.js b/test/unit/lib/model/OutboundTransfersModel.test.js index 541dca3f9..c101cb11f 100644 --- a/test/unit/lib/model/OutboundTransfersModel.test.js +++ b/test/unit/lib/model/OutboundTransfersModel.test.js @@ -28,6 +28,9 @@ const payeeParty = require('./data/payeeParty'); const quoteResponseTemplate = require('./data/quoteResponse'); const transferFulfil = require('./data/transferFulfil'); +const { SDKStateEnum } = require('../../../../src/lib/model/common'); +const FSPIOPTransferStateEnum = require('@mojaloop/central-services-shared').Enum.Transfers.TransferState; + const genPartyId = (party) => { const { partyIdType, partyIdentifier, partySubIdOrType } = party.body.party.partyIdInfo; return PartiesModel.channelName({ @@ -134,7 +137,7 @@ describe('outboundModel', () => { await expect(model.run()).rejects.toThrowError(expectError); } else { const result = await model.run(); - await expect(result.currentState).toBe('COMPLETED'); + await expect(result.currentState).toBe(SDKStateEnum.COMPLETED); } } @@ -250,7 +253,7 @@ describe('outboundModel', () => { expect(MojaloopRequests.__patchTransfers).toHaveBeenCalledTimes(0); // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -275,7 +278,7 @@ describe('outboundModel', () => { return Promise.resolve(dummyRequestsModuleResponse); }); const pb = JSON.parse(JSON.stringify(transferFulfil)); - pb.data.body.transferState = 'RESERVED'; + pb.data.body.transferState = FSPIOPTransferStateEnum.RESERVED; MojaloopRequests.__postTransfers = jest.fn((postTransfersBody, destFspId) => { //ensure that the `MojaloopRequests.postTransfers` method has been called with the correct arguments // set as the destination FSPID, picked up from the header's value `fspiop-source` @@ -307,13 +310,13 @@ describe('outboundModel', () => { expect(MojaloopRequests.__postTransfers).toHaveBeenCalledTimes(1); expect(MojaloopRequests.__patchTransfers).toHaveBeenCalledTimes(1); expect(MojaloopRequests.__patchTransfers.mock.calls[0][0]).toEqual(model.data.transferId); - expect(MojaloopRequests.__patchTransfers.mock.calls[0][1].transferState).toEqual('COMMITTED'); + expect(MojaloopRequests.__patchTransfers.mock.calls[0][1].transferState).toEqual(FSPIOPTransferStateEnum.COMMITTED); expect(MojaloopRequests.__patchTransfers.mock.calls[0][1].completedTimestamp).not.toBeUndefined(); expect(MojaloopRequests.__patchTransfers.mock.calls[0][2]).toEqual(quoteResponse.data.headers['fspiop-source']); // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -396,7 +399,7 @@ describe('outboundModel', () => { expect(MojaloopRequests.__patchTransfers).toHaveBeenCalledTimes(0); // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -429,7 +432,7 @@ describe('outboundModel', () => { expect(MojaloopRequests.__getTransfers).toHaveBeenCalledTimes(1); // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -458,7 +461,7 @@ describe('outboundModel', () => { const result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); }); @@ -490,7 +493,7 @@ describe('outboundModel', () => { const result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); // check getParties mojaloop requests method was called with the correct arguments @@ -521,7 +524,7 @@ describe('outboundModel', () => { // wait for the model to reach a terminal state const result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); expect(result.to[0].fspId).toEqual('FirstFspId'); expect(result.to[1].fspId).toEqual('SecondFspId'); @@ -552,7 +555,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); const transferId = result.transferId; @@ -579,7 +582,7 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); }); @@ -613,7 +616,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); expect(result.amount).toEqual(initialAmount); @@ -648,7 +651,7 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); // check the accept party key got merged to the state @@ -692,7 +695,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); expect(result.amount).toEqual(initialAmount); @@ -742,7 +745,7 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); // check the accept party key got merged to the state @@ -785,7 +788,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); expect(result.amount).toEqual(initialAmount); @@ -821,7 +824,7 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); // check the accept party key got merged to the state @@ -868,7 +871,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); }); @@ -897,7 +900,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); const transferId = result.transferId; @@ -919,7 +922,7 @@ describe('outboundModel', () => { result = await model.run({ resume: { acceptParty: false } }); // check we stopped at quoteReceived state - expect(result.currentState).toBe('ABORTED'); + expect(result.currentState).toBe(SDKStateEnum.ABORTED); expect(result.abortedReason).toBe('Payee rejected by backend'); expect(StateMachine.__instance.state).toBe('aborted'); }); @@ -949,7 +952,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); const transferId = result.transferId; @@ -977,13 +980,13 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); // now run the model again. this should trigger abort as the quote was not accepted result = await model.run({ acceptQuote: false }); - expect(result.currentState).toBe('ABORTED'); + expect(result.currentState).toBe(SDKStateEnum.ABORTED); expect(result.abortedReason).toBe('Quote rejected by backend'); expect(StateMachine.__instance.state).toBe('aborted'); }); @@ -1039,7 +1042,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); const transferId = result.transferId; @@ -1067,20 +1070,20 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); // now run the model again. this should trigger abort as the quote was not accepted result = await model.run({ acceptQuote: false }); - expect(result.currentState).toBe('ABORTED'); + expect(result.currentState).toBe(SDKStateEnum.ABORTED); expect(result.abortedReason).toBe('Quote rejected by backend'); expect(StateMachine.__instance.state).toBe('aborted'); // now run the model again. this should get the same result as previous one result = await model.run({ acceptQuote: false }); - expect(result.currentState).toBe('ABORTED'); + expect(result.currentState).toBe(SDKStateEnum.ABORTED); expect(result.abortedReason).toBe('Quote rejected by backend'); expect(StateMachine.__instance.state).toBe('aborted'); }); @@ -1110,7 +1113,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('WAITING_FOR_PARTY_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_PARTY_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('payeeResolved'); const transferId = result.transferId; @@ -1138,7 +1141,7 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); // load a new model from the saved state @@ -1164,7 +1167,7 @@ describe('outboundModel', () => { result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -1216,7 +1219,7 @@ describe('outboundModel', () => { const result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -1268,7 +1271,7 @@ describe('outboundModel', () => { const result = await resultPromise; // check we stopped at payeeResolved state - expect(result.currentState).toBe('COMPLETED'); + expect(result.currentState).toBe(SDKStateEnum.COMPLETED); expect(StateMachine.__instance.state).toBe('succeeded'); }); @@ -1569,7 +1572,7 @@ describe('outboundModel', () => { let result = await resultPromise; // check we stopped at quoteReceived state - expect(result.currentState).toBe('WAITING_FOR_QUOTE_ACCEPTANCE'); + expect(result.currentState).toBe(SDKStateEnum.WAITING_FOR_QUOTE_ACCEPTANCE); expect(StateMachine.__instance.state).toBe('quoteReceived'); }); diff --git a/test/unit/lib/model/PartiesModel.test.js b/test/unit/lib/model/PartiesModel.test.js index ff5b7ce91..6b6e018a2 100644 --- a/test/unit/lib/model/PartiesModel.test.js +++ b/test/unit/lib/model/PartiesModel.test.js @@ -16,6 +16,7 @@ jest.mock('@mojaloop/sdk-standard-components'); const { uuid } = require('uuidv4'); const Model = require('~/lib/model').PartiesModel; const PSM = require('~/lib/model/common').PersistentStateMachine; +const { SDKStateEnum } = require('~/lib/model/common'); const { MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const defaultConfig = require('./data/defaultConfig'); const mockLogger = require('../../mockLogger'); @@ -403,7 +404,7 @@ describe('PartiesModel', () => { expect(model.context.data.currentState).toEqual('errored'); expect(err.requestActionState).toEqual( { ...data, - currentState: 'ERROR_OCCURRED', + currentState: SDKStateEnum.ERROR_OCCURRED, }); } }); diff --git a/test/unit/lib/model/QuotesModel.test.js b/test/unit/lib/model/QuotesModel.test.js index 328eb696f..cd99930ad 100644 --- a/test/unit/lib/model/QuotesModel.test.js +++ b/test/unit/lib/model/QuotesModel.test.js @@ -16,6 +16,7 @@ jest.mock('@mojaloop/sdk-standard-components'); const { uuid } = require('uuidv4'); const Model = require('~/lib/model').QuotesModel; const PSM = require('~/lib/model/common').PersistentStateMachine; +const { SDKStateEnum } = require('~/lib/model/common'); const { MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const defaultConfig = require('./data/defaultConfig'); const mockLogger = require('../../mockLogger'); @@ -381,7 +382,7 @@ describe('QuotesModel', () => { expect(model.context.data.currentState).toEqual('errored'); expect(err.requestActionState).toEqual( { ...data, - currentState: 'ERROR_OCCURRED', + currentState: SDKStateEnum.ERROR_OCCURRED, }); } }); diff --git a/test/unit/lib/model/TransfersModel.test.js b/test/unit/lib/model/TransfersModel.test.js index 9203a0de1..263d4ea79 100644 --- a/test/unit/lib/model/TransfersModel.test.js +++ b/test/unit/lib/model/TransfersModel.test.js @@ -16,6 +16,7 @@ jest.mock('@mojaloop/sdk-standard-components'); const { uuid } = require('uuidv4'); const Model = require('~/lib/model').TransfersModel; const PSM = require('~/lib/model/common').PersistentStateMachine; +const { SDKStateEnum } = require('~/lib/model/common'); const { MojaloopRequests } = require('@mojaloop/sdk-standard-components'); const defaultConfig = require('./data/defaultConfig'); const mockLogger = require('../../mockLogger'); @@ -386,7 +387,7 @@ describe('TransfersModel', () => { expect(model.context.data.currentState).toEqual('errored'); expect(err.requestActionState).toEqual( { ...data, - currentState: 'ERROR_OCCURRED', + currentState: SDKStateEnum.ERROR_OCCURRED, }); } }); diff --git a/test/unit/lib/model/data/getBulkTransfersBackendResponse.json b/test/unit/lib/model/data/getBulkTransfersBackendResponse.json index d644eabe0..3f1a18e9f 100644 --- a/test/unit/lib/model/data/getBulkTransfersBackendResponse.json +++ b/test/unit/lib/model/data/getBulkTransfersBackendResponse.json @@ -26,7 +26,7 @@ } ] }, - "bulkTransferState": "COMMITTED", + "bulkTransferState": "COMPLETED", "timestamp": "2019-11-15T14:16:09.663", "note": "test payment", "extensions": [ diff --git a/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json b/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json index e7e58fa98..ea783de58 100644 --- a/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json +++ b/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json @@ -12,7 +12,7 @@ } ] }, - "bulkTransferState": "COMMITTED", + "bulkTransferState": "COMPLETED", "individualTransferResults": [ { "transferId": "fake-transfer-id", From 650047699ce7679d21a08daa1fb3cf2956b0e514 Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Mon, 11 Jul 2022 15:58:43 +0200 Subject: [PATCH 25/39] fix: updated dependencies --- package-lock.json | 28 +++++++--------------------- package.json | 2 +- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index eaeb744ee..6d6a93d0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ "jest-junit": "^14.0.0", "nock": "^13.2.8", "npm-audit-resolver": "^3.0.0-7", - "npm-check-updates": "^15.2.1", + "npm-check-updates": "^15.2.6", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.1", "redis-mock": "^0.56.3", @@ -5343,12 +5343,6 @@ "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, - "node_modules/cint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", - "integrity": "sha512-gyWqJHXgDFPNx7PEyFJotutav+al92TTC3dWlMFyTETlOyKBQMZb7Cetqmj3GlrnSILHwSJRwf4mIGzc7C5lXw==", - "dev": true - }, "node_modules/cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -13115,13 +13109,12 @@ } }, "node_modules/npm-check-updates": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.1.tgz", - "integrity": "sha512-UreoHjcbDYggZm4I8OX/Lp+QZZ8xrCDP+8xygchMBkax8mmOzL7VJ/cEvgWb99eYEZup6MuOoDaRCZUajwwG9g==", + "version": "15.2.6", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.6.tgz", + "integrity": "sha512-lXihP+6EjHW74ENE6YYW2feUmdsfK4evus2ZTCyTd0QSnmHdx0bcHpiHsjgqjPtIqgHPJXLCrV6gd3JGYZg3xg==", "dev": true, "dependencies": { "chalk": "^4.1.2", - "cint": "^8.2.1", "cli-table": "^0.3.11", "commander": "^9.3.0", "fast-memoize": "^2.5.2", @@ -22324,12 +22317,6 @@ "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, - "cint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", - "integrity": "sha512-gyWqJHXgDFPNx7PEyFJotutav+al92TTC3dWlMFyTETlOyKBQMZb7Cetqmj3GlrnSILHwSJRwf4mIGzc7C5lXw==", - "dev": true - }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -28238,13 +28225,12 @@ } }, "npm-check-updates": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.1.tgz", - "integrity": "sha512-UreoHjcbDYggZm4I8OX/Lp+QZZ8xrCDP+8xygchMBkax8mmOzL7VJ/cEvgWb99eYEZup6MuOoDaRCZUajwwG9g==", + "version": "15.2.6", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.6.tgz", + "integrity": "sha512-lXihP+6EjHW74ENE6YYW2feUmdsfK4evus2ZTCyTd0QSnmHdx0bcHpiHsjgqjPtIqgHPJXLCrV6gd3JGYZg3xg==", "dev": true, "requires": { "chalk": "^4.1.2", - "cint": "^8.2.1", "cli-table": "^0.3.11", "commander": "^9.3.0", "fast-memoize": "^2.5.2", diff --git a/package.json b/package.json index 0630cc51c..0560b2dcc 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "jest-junit": "^14.0.0", "nock": "^13.2.8", "npm-audit-resolver": "^3.0.0-7", - "npm-check-updates": "^15.2.1", + "npm-check-updates": "^15.2.6", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.1", "redis-mock": "^0.56.3", From 57e358e9b0308765ca74345c60e7791a451114d4 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Mon, 11 Jul 2022 14:23:14 +0000 Subject: [PATCH 26/39] chore(release): 18.0.0 [skip ci] --- CHANGELOG.md | 12 ++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c90b3052..94735d0da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,16 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +## [18.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v17.0.1...v18.0.0) (2022-07-11) + + +### ⚠ BREAKING CHANGES + +* **mojaloop/#2811:** docker image now uses `/opt/app` instead of the root folder which will impact config mounts, and the secrets folder is no longer included in the docker image which aligns with best practices. Both these changes should NOT be a breaking change but I have marked them as such to make this change more obvious. + +### Bug Fixes + +* **mojaloop/#2811:** sdk-scheme-adapter sending incorrect transferState on a PUT transfers Callback ([#331](https://github.com/mojaloop/sdk-scheme-adapter/issues/331)) ([f7e450c](https://github.com/mojaloop/sdk-scheme-adapter/commit/f7e450cc2568f70f6c9abbb39d9c2186787c31b7)), closes [mojaloop/#2811](https://github.com/mojaloop/sdk-scheme-adapter/issues/2811) [mojaloop/#2811](https://github.com/mojaloop/sdk-scheme-adapter/issues/2811) [mojaloop/#2816](https://github.com/mojaloop/sdk-scheme-adapter/issues/2816) +* updated dependencies ([6500476](https://github.com/mojaloop/sdk-scheme-adapter/commit/650047699ce7679d21a08daa1fb3cf2956b0e514)) + ### [17.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v17.0.0...v17.0.1) (2022-07-04) diff --git a/package-lock.json b/package-lock.json index 6d6a93d0c..a50267e35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.2-snapshot.12", + "version": "18.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.2-snapshot.12", + "version": "18.0.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.3.0", diff --git a/package.json b/package.json index 0560b2dcc..bf6153a94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "17.0.2-snapshot.12", + "version": "18.0.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 602b3abfe861123623768e2a1c3497063ce4b909 Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Tue, 12 Jul 2022 12:32:20 +0200 Subject: [PATCH 27/39] chore: added .npmignore so that the test folder is not included when publishing packages (#332) * chore: added .npmignore so that the test folder is not included when publishing packages * chore: fixes for audit-resolve --- .npmignore | 2 ++ audit-resolve.json | 5 +++++ 2 files changed, 7 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000..1640b92cc --- /dev/null +++ b/.npmignore @@ -0,0 +1,2 @@ +# Ignore tests for publishing +test/* diff --git a/audit-resolve.json b/audit-resolve.json index 978cf010c..a7963b3bd 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -59,6 +59,11 @@ "decision": "ignore", "madeAt": 1657217280998, "expiresAt": 1659809259103 + }, + "1081008|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { + "decision": "ignore", + "madeAt": 1657621042651, + "expiresAt": 1660213039412 } }, "rules": {}, From 7f9e0277ff760ad22ab29dc3abee20322030d7dc Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Tue, 12 Jul 2022 13:56:45 +0200 Subject: [PATCH 28/39] chore: uodated deps (#333) * chore: added .npmignore so that the test folder is not included when publishing packages * chore: fixes for audit-resolve * chore: updated dependencies --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a50267e35..870c6d74c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@koa/cors": "^3.3.0", "@mojaloop/central-services-shared": "17.0.2", - "@mojaloop/sdk-standard-components": "^17.1.0", + "@mojaloop/sdk-standard-components": "^17.1.1", "ajv": "8.11.0", "axios": "^0.27.2", "co-body": "^6.1.0", @@ -3141,9 +3141,9 @@ } }, "node_modules/@mojaloop/sdk-standard-components": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.1.0.tgz", - "integrity": "sha512-MGiNGTpMIpTsMVWL/TpiFH4lO8whuNbUezvHl60SE09zUaQXJBZWfcfzDxmBtR85p6i9+4139djADwZRFORBHw==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.1.1.tgz", + "integrity": "sha512-B7THI7zKh3eOjOAM+agA9YsiJvN3qVgm/UYqkHKsMP4q2r6gn850YEWynCcvNT4OpMHNnn/ilMVzoeUUu/VZHA==", "dependencies": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", @@ -20584,9 +20584,9 @@ } }, "@mojaloop/sdk-standard-components": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.1.0.tgz", - "integrity": "sha512-MGiNGTpMIpTsMVWL/TpiFH4lO8whuNbUezvHl60SE09zUaQXJBZWfcfzDxmBtR85p6i9+4139djADwZRFORBHw==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-17.1.1.tgz", + "integrity": "sha512-B7THI7zKh3eOjOAM+agA9YsiJvN3qVgm/UYqkHKsMP4q2r6gn850YEWynCcvNT4OpMHNnn/ilMVzoeUUu/VZHA==", "requires": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", diff --git a/package.json b/package.json index bf6153a94..f49f96442 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "dependencies": { "@koa/cors": "^3.3.0", "@mojaloop/central-services-shared": "17.0.2", - "@mojaloop/sdk-standard-components": "^17.1.0", + "@mojaloop/sdk-standard-components": "^17.1.1", "ajv": "8.11.0", "axios": "^0.27.2", "co-body": "^6.1.0", From 11ee1e6b16b259d367a93319fb0f4ac18d735ea8 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Tue, 12 Jul 2022 12:03:05 +0000 Subject: [PATCH 29/39] chore(release): 18.0.1 [skip ci] --- CHANGELOG.md | 8 ++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94735d0da..c8204106b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +### [18.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v18.0.0...v18.0.1) (2022-07-12) + + +### Chore + +* added .npmignore so that the test folder is not included when publishing packages ([#332](https://github.com/mojaloop/sdk-scheme-adapter/issues/332)) ([602b3ab](https://github.com/mojaloop/sdk-scheme-adapter/commit/602b3abfe861123623768e2a1c3497063ce4b909)) +* uodated deps ([#333](https://github.com/mojaloop/sdk-scheme-adapter/issues/333)) ([7f9e027](https://github.com/mojaloop/sdk-scheme-adapter/commit/7f9e0277ff760ad22ab29dc3abee20322030d7dc)) + ## [18.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v17.0.1...v18.0.0) (2022-07-11) diff --git a/package-lock.json b/package-lock.json index 870c6d74c..26078edd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.0", + "version": "18.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.0", + "version": "18.0.1", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.3.0", diff --git a/package.json b/package.json index f49f96442..2a77d06c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.0", + "version": "18.0.1", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 415bb3380a17cfd35841095bb9b2f399e969f5c6 Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Tue, 12 Jul 2022 16:55:33 +0200 Subject: [PATCH 30/39] chore: updates to readme for header badges [skip ci] (#334) - updated readme to include docker-pulls --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0bb9729e6..ae58146bb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ [![Git Commit](https://img.shields.io/github/last-commit/mojaloop/sdk-scheme-adapter.svg?style=flat)](https://github.com/mojaloop/sdk-scheme-adapter/commits/master) [![Git Releases](https://img.shields.io/github/release/mojaloop/sdk-scheme-adapter.svg?style=flat)](https://github.com/mojaloop/sdk-scheme-adapter/releases) +[![Docker pulls](https://img.shields.io/docker/pulls/mojaloop/sdk-scheme-adapter.svg?style=flat)](https://hub.docker.com/r/mojaloop/sdk-scheme-adapter) [![Npm Version](https://img.shields.io/npm/v/@mojaloop/sdk-scheme-adapter.svg?style=flat)](https://www.npmjs.com/package/@mojaloop/sdk-scheme-adapter) [![NPM Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/npm/@mojaloop/sdk-scheme-adapter.svg?style=flat)](https://www.npmjs.com/package/@mojaloop/sdk-scheme-adapter) [![CircleCI](https://circleci.com/gh/mojaloop/sdk-scheme-adapter.svg?style=svg)](https://circleci.com/gh/mojaloop/sdk-scheme-adapter) From e29e158807d1c758e18418752339b8b10d42377b Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Wed, 27 Jul 2022 20:12:38 +0200 Subject: [PATCH 31/39] fix: ws-connection-issue (#339) - downgraded ws lib dependency from v8.x to v7.5.5 due to breaking change that cause intermitant disconnections - added ncurc.yaml file with ws lib dependency added with an appropriate comment - added @mojaloop/api-snippets to dep:check ignore list as it requires PR [sdk-scheme-adapter/pull/340](https://github.com/mojaloop/sdk-scheme-adapter/pull/340) has been merged --- .ncurc.yaml | 7 + CODEOWNERS | 32 +- audit-resolve.json | 30 + package-lock.json | 2229 ++++++++++++++---------------- package.json | 24 +- test/unit/ControlServer/index.js | 2 +- 6 files changed, 1156 insertions(+), 1168 deletions(-) create mode 100644 .ncurc.yaml diff --git a/.ncurc.yaml b/.ncurc.yaml new file mode 100644 index 000000000..f8d8ffd0a --- /dev/null +++ b/.ncurc.yaml @@ -0,0 +1,7 @@ +## Add a TODO comment indicating the reason for each rejected dependency upgrade added to this list, and what should be done to resolve it (i.e. handle it through a story, etc). +reject: [ + ## TODO: Breaking changes to ws lib dependency will need to be addressed in a future story. ref https://github.com/websockets/ws/releases/tag/8.0.0. + "ws", + ## TODO: This will need to be removed, and upgraded once this PR https://github.com/mojaloop/sdk-scheme-adapter/pull/340 has been merged + "@mojaloop/api-snippets" +] diff --git a/CODEOWNERS b/CODEOWNERS index 0fba45d95..99feef54f 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,32 @@ -* james.bush@modusbox.com +# This is a comment. +# Each line is a file pattern followed by one or more owners. +## These owners will be the default owners for everything in +## the repo. Unless a later match takes precedence, +## @global-owner1 and @global-owner2 will be requested for +## review when someone opens a pull request. +#* @global-owner1 @global-owner2 * yevhen.kyriukha@modusbox.com +* @mdebarros @elnyry-sam-k @vijayg10 @kleyow +## Order is important; the last matching pattern takes the most +## precedence. When someone opens a pull request that only +## modifies JS files, only @js-owner and not the global +## owner(s) will be requested for a review. +# *.js @js-owner +## You can also use email addresses if you prefer. They'll be +## used to look up users just like we do for commit author +## emails. +#*.go docs@example.com +# In this example, @doctocat owns any files in the build/logs +# directory at the root of the repository and any of its +# subdirectories. +# /build/logs/ @doctocat +## The `docs/*` pattern will match files like +## `docs/getting-started.md` but not further nested files like +## `docs/build-app/troubleshooting.md`. +# docs/* docs@example.com +## In this example, @octocat owns any file in an apps directory +## anywhere in your repository. +#apps/ @octocat +## In this example, @doctocat owns any file in the `/docs` +## directory in the root of your repository. +#/docs/ @doctocat \ No newline at end of file diff --git a/audit-resolve.json b/audit-resolve.json index a7963b3bd..b752e4da3 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -64,6 +64,36 @@ "decision": "ignore", "madeAt": 1657621042651, "expiresAt": 1660213039412 + }, + "1081761|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { + "decision": "ignore", + "madeAt": 1658860721215, + "expiresAt": 1661452716888 + }, + "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>widdershins>markdown-it": { + "decision": "ignore", + "madeAt": 1658860722876, + "expiresAt": 1661452716888 + }, + "1070030|shins>markdown-it": { + "decision": "ignore", + "madeAt": 1658860722876, + "expiresAt": 1661452716888 + }, + "1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>widdershins>markdown-it>yargs>yargs-parser": { + "decision": "ignore", + "madeAt": 1658860723959, + "expiresAt": 1661452716888 + }, + "1068155|shins>markdown-it>sanitize-html": { + "decision": "ignore", + "madeAt": 1658860724884, + "expiresAt": 1661452716888 + }, + "1070260|shins>markdown-it>sanitize-html": { + "decision": "ignore", + "madeAt": 1658860725792, + "expiresAt": 1661452716888 } }, "rules": {}, diff --git a/package-lock.json b/package-lock.json index 26078edd6..bc63b9950 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.1", + "version": "18.0.2-snapshot.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.1", + "version": "18.0.2-snapshot.2", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.3.0", @@ -33,24 +33,24 @@ "random-word-slugs": "^0.1.6", "redis": "^4.2.0", "uuidv4": "^6.2.13", - "ws": "^8.8.0" + "ws": "^7.5.5" }, "devDependencies": { - "@babel/core": "^7.18.6", - "@babel/preset-env": "^7.18.6", - "@mojaloop/api-snippets": "^14.0.0", + "@babel/core": "^7.18.9", + "@babel/preset-env": "^7.18.9", + "@mojaloop/api-snippets": "^14.2.0", "@redocly/openapi-cli": "^1.0.0-beta.94", - "@types/jest": "^28.1.4", - "babel-jest": "^28.1.2", - "eslint": "^8.19.0", + "@types/jest": "^28.1.6", + "babel-jest": "^28.1.3", + "eslint": "^8.20.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^26.5.3", - "jest": "^28.1.2", + "eslint-plugin-jest": "^26.6.0", + "jest": "^28.1.3", "jest-junit": "^14.0.0", - "nock": "^13.2.8", + "nock": "^13.2.9", "npm-audit-resolver": "^3.0.0-7", - "npm-check-updates": "^15.2.6", + "npm-check-updates": "^16.0.1", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.1", "redis-mock": "^0.56.3", @@ -327,30 +327,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -366,12 +366,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -419,12 +419,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -493,9 +493,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -514,13 +514,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "dependencies": { "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -539,12 +539,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", - "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -563,19 +563,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -594,9 +594,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -621,16 +621,16 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", - "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -649,12 +649,12 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", - "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -705,14 +705,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "dependencies": { "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -732,9 +732,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -759,14 +759,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", - "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -843,12 +843,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", - "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -875,12 +875,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", - "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -923,16 +923,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", - "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.6" + "@babel/plugin-transform-parameters": "^7.18.8" }, "engines": { "node": ">=6.9.0" @@ -958,13 +958,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", - "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1303,12 +1303,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", - "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1318,17 +1318,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", - "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1340,12 +1340,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", - "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1355,12 +1355,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", - "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1386,12 +1386,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", - "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1417,9 +1417,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", - "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1432,14 +1432,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", - "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1449,12 +1449,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", - "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1514,14 +1514,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", - "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1596,9 +1596,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", - "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1672,13 +1672,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", - "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1703,12 +1703,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", - "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1718,12 +1718,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", - "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1764,29 +1764,29 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz", + "integrity": "sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", "@babel/plugin-proposal-async-generator-functions": "^7.18.6", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.18.6", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", @@ -1808,37 +1808,37 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.6", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", + "@babel/types": "^7.18.9", "babel-plugin-polyfill-corejs2": "^0.3.1", "babel-plugin-polyfill-corejs3": "^0.5.2", "babel-plugin-polyfill-regenerator": "^0.3.1", @@ -1894,19 +1894,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1915,9 +1915,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", @@ -2232,16 +2232,16 @@ } }, "node_modules/@jest/console": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.1.tgz", - "integrity": "sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0" }, "engines": { @@ -2319,37 +2319,37 @@ } }, "node_modules/@jest/core": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.2.tgz", - "integrity": "sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "dependencies": { - "@jest/console": "^28.1.1", - "@jest/reporters": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.0.2", - "jest-config": "^28.1.2", - "jest-haste-map": "^28.1.1", - "jest-message-util": "^28.1.1", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-resolve-dependencies": "^28.1.2", - "jest-runner": "^28.1.2", - "jest-runtime": "^28.1.2", - "jest-snapshot": "^28.1.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", - "jest-watcher": "^28.1.1", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", "micromatch": "^4.0.4", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" @@ -2437,37 +2437,37 @@ } }, "node_modules/@jest/environment": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.2.tgz", - "integrity": "sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^28.1.1" + "jest-mock": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/expect": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.2.tgz", - "integrity": "sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", "dev": true, "dependencies": { - "expect": "^28.1.1", - "jest-snapshot": "^28.1.2" + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.1.tgz", - "integrity": "sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", "dev": true, "dependencies": { "jest-get-type": "^28.0.2" @@ -2477,47 +2477,47 @@ } }, "node_modules/@jest/fake-timers": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.2.tgz", - "integrity": "sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^28.1.1", - "jest-mock": "^28.1.1", - "jest-util": "^28.1.1" + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/globals": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.2.tgz", - "integrity": "sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.2", - "@jest/expect": "^28.1.2", - "@jest/types": "^28.1.1" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/reporters": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.2.tgz", - "integrity": "sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.1", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@jridgewell/trace-mapping": "^0.3.13", "@types/node": "*", "chalk": "^4.0.0", @@ -2530,9 +2530,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", - "jest-worker": "^28.1.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -2622,12 +2622,12 @@ } }, "node_modules/@jest/schemas": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", - "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.23.3" + "@sinclair/typebox": "^0.24.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -2648,13 +2648,13 @@ } }, "node_modules/@jest/test-result": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.1.tgz", - "integrity": "sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", "dev": true, "dependencies": { - "@jest/console": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -2663,14 +2663,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz", - "integrity": "sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", "dev": true, "dependencies": { - "@jest/test-result": "^28.1.1", + "@jest/test-result": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", + "jest-haste-map": "^28.1.3", "slash": "^3.0.0" }, "engines": { @@ -2678,22 +2678,22 @@ } }, "node_modules/@jest/transform": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.2.tgz", - "integrity": "sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@jridgewell/trace-mapping": "^0.3.13", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", + "jest-haste-map": "^28.1.3", "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.1", + "jest-util": "^28.1.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -2774,12 +2774,12 @@ } }, "node_modules/@jest/types": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.1.tgz", - "integrity": "sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", "dev": true, "dependencies": { - "@jest/schemas": "^28.0.2", + "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -2966,17 +2966,18 @@ } }, "node_modules/@mojaloop/api-snippets": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.0.0.tgz", - "integrity": "sha512-jpJonOSFS+xPeyGn8vIhhjGhG/em1GrprED50rifawb6znfBjR2D9ISkwTOLL2lKrUN+X4fHZo4LGEZEwpHvxQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.2.0.tgz", + "integrity": "sha512-g7pnMenw2VOIKPdaql43FyyIEbdhV5cJv0M0cc0kLBX9WlSlRQn2Lkn906VQq8vB+EKUFF0TxfevFqaqZ/6VeQ==", "dev": true, "dependencies": { - "commander": "^9.2.0", + "@apidevtools/json-schema-ref-parser": "^9.0.9", + "commander": "^9.4.0", "jest-ts-auto-mock": "^2.1.0", "js-yaml": "^4.1.0", "json-refs": "^3.0.15", - "openapi-types": "^11.0.1", - "openapi-typescript": "^5.3.0", + "openapi-types": "^12.0.0", + "openapi-typescript": "^5.4.1", "ts-auto-mock": "^3.6.2", "ttypescript": "^1.5.13" }, @@ -2985,20 +2986,14 @@ } }, "node_modules/@mojaloop/api-snippets/node_modules/commander": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "dev": true, "engines": { "node": "^12.20.0 || >=14" } }, - "node_modules/@mojaloop/api-snippets/node_modules/openapi-types": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-11.1.0.tgz", - "integrity": "sha512-ZW+Jf12flFF6DXSij8DGL3svDA4RtSyHXjC/xB/JAh18gg3uVfVIFLvCfScUMowrpvlkxsMMbErakbth2g3/iQ==", - "dev": true - }, "node_modules/@mojaloop/central-services-error-handling": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/@mojaloop/central-services-error-handling/-/central-services-error-handling-12.0.3.tgz", @@ -3581,9 +3576,9 @@ "dev": true }, "node_modules/@sinclair/typebox": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", - "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "version": "0.24.20", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", + "integrity": "sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ==", "dev": true }, "node_modules/@sindresorhus/is": { @@ -3786,9 +3781,9 @@ } }, "node_modules/@types/jest": { - "version": "28.1.4", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.4.tgz", - "integrity": "sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==", + "version": "28.1.6", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", + "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", "dev": true, "dependencies": { "jest-matcher-utils": "^28.0.0", @@ -4430,15 +4425,15 @@ } }, "node_modules/babel-jest": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.2.tgz", - "integrity": "sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", "dev": true, "dependencies": { - "@jest/transform": "^28.1.2", + "@jest/transform": "^28.1.3", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.1", + "babel-preset-jest": "^28.1.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -4546,9 +4541,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz", - "integrity": "sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -4623,12 +4618,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz", - "integrity": "sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^28.1.1", + "babel-plugin-jest-hoist": "^28.1.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -7130,9 +7125,9 @@ } }, "node_modules/eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", - "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.0", @@ -7363,9 +7358,9 @@ "dev": true }, "node_modules/eslint-plugin-jest": { - "version": "26.5.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.5.3.tgz", - "integrity": "sha512-sICclUqJQnR1bFRZGLN2jnSVsYOsmPYYnroGCIMVSvTS3y8XR3yjzy1EcTQmk6typ5pRgyIWzbjqxK6cZHEZuQ==", + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.6.0.tgz", + "integrity": "sha512-f8n46/97ZFdU4KqeQYqO8AEVGIhHWvkpgNBWHH3jrM28/y8llnbf3IjfIKv6p2pZIMinK1PCqbbROxs9Eud02Q==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -7702,16 +7697,16 @@ } }, "node_modules/expect": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.1.tgz", - "integrity": "sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", "dev": true, "dependencies": { - "@jest/expect-utils": "^28.1.1", + "@jest/expect-utils": "^28.1.3", "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1" + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -9998,9 +9993,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -10016,15 +10011,15 @@ "integrity": "sha512-BwhYxQ1OPenBPXC735RgfB+ZUG8H3kjsx8hrYTgWnoy6TPipEy4fiicyhT2lxRKAXq9pG7CfFT8a2HLr6Hmwxg==" }, "node_modules/jest": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.2.tgz", - "integrity": "sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "dependencies": { - "@jest/core": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", "import-local": "^3.0.2", - "jest-cli": "^28.1.2" + "jest-cli": "^28.1.3" }, "bin": { "jest": "bin/jest.js" @@ -10042,43 +10037,58 @@ } }, "node_modules/jest-changed-files": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", - "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "dependencies": { "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-circus": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.2.tgz", - "integrity": "sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.2", - "@jest/expect": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.1", - "jest-matcher-utils": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-runtime": "^28.1.2", - "jest-snapshot": "^28.1.2", - "jest-util": "^28.1.1", - "pretty-format": "^28.1.1", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10142,6 +10152,21 @@ "node": ">=8" } }, + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10155,21 +10180,21 @@ } }, "node_modules/jest-cli": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.2.tgz", - "integrity": "sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "dependencies": { - "@jest/core": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^28.1.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -10286,31 +10311,31 @@ } }, "node_modules/jest-config": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.2.tgz", - "integrity": "sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.1", - "@jest/types": "^28.1.1", - "babel-jest": "^28.1.2", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.2", - "jest-environment-node": "^28.1.2", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", "jest-get-type": "^28.0.2", "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-runner": "^28.1.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -10401,15 +10426,15 @@ } }, "node_modules/jest-diff": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.1.tgz", - "integrity": "sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^28.1.1", "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10498,16 +10523,16 @@ } }, "node_modules/jest-each": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.1.tgz", - "integrity": "sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "jest-get-type": "^28.0.2", - "jest-util": "^28.1.1", - "pretty-format": "^28.1.1" + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10584,17 +10609,17 @@ } }, "node_modules/jest-environment-node": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.2.tgz", - "integrity": "sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.2", - "@jest/fake-timers": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^28.1.1", - "jest-util": "^28.1.1" + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10610,20 +10635,20 @@ } }, "node_modules/jest-haste-map": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.1.tgz", - "integrity": "sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.1", - "jest-worker": "^28.1.1", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -10650,28 +10675,28 @@ } }, "node_modules/jest-leak-detector": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz", - "integrity": "sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "dependencies": { "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz", - "integrity": "sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^28.1.1", + "jest-diff": "^28.1.3", "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10748,18 +10773,18 @@ } }, "node_modules/jest-message-util": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.1.tgz", - "integrity": "sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -10838,12 +10863,12 @@ } }, "node_modules/jest-mock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.1.tgz", - "integrity": "sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/node": "*" }, "engines": { @@ -10877,17 +10902,17 @@ } }, "node_modules/jest-resolve": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.1.tgz", - "integrity": "sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", + "jest-haste-map": "^28.1.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -10897,13 +10922,13 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz", - "integrity": "sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "dependencies": { "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.2" + "jest-snapshot": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -10980,32 +11005,32 @@ } }, "node_modules/jest-runner": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.2.tgz", - "integrity": "sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "dependencies": { - "@jest/console": "^28.1.1", - "@jest/environment": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.10.2", "graceful-fs": "^4.2.9", "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.2", - "jest-haste-map": "^28.1.1", - "jest-leak-detector": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-resolve": "^28.1.1", - "jest-runtime": "^28.1.2", - "jest-util": "^28.1.1", - "jest-watcher": "^28.1.1", - "jest-worker": "^28.1.1", - "source-map-support": "0.5.13", - "throat": "^6.0.1" + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -11069,6 +11094,21 @@ "node": ">=8" } }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11082,31 +11122,31 @@ } }, "node_modules/jest-runtime": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.2.tgz", - "integrity": "sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.2", - "@jest/fake-timers": "^28.1.2", - "@jest/globals": "^28.1.2", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-mock": "^28.1.1", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-snapshot": "^28.1.2", - "jest-util": "^28.1.1", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -11185,9 +11225,9 @@ } }, "node_modules/jest-snapshot": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.2.tgz", - "integrity": "sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -11195,23 +11235,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^28.1.1", + "expect": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.1", + "jest-diff": "^28.1.3", "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.1", - "jest-matcher-utils": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "natural-compare": "^1.4.0", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "semver": "^7.3.5" }, "engines": { @@ -11313,12 +11353,12 @@ } }, "node_modules/jest-util": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.1.tgz", - "integrity": "sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11400,17 +11440,17 @@ } }, "node_modules/jest-validate": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.1.tgz", - "integrity": "sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", "dev": true, "dependencies": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -11499,18 +11539,18 @@ } }, "node_modules/jest-watcher": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.1.tgz", - "integrity": "sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", "dev": true, "dependencies": { - "@jest/test-result": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.10.2", - "jest-util": "^28.1.1", + "jest-util": "^28.1.3", "string-length": "^4.0.1" }, "engines": { @@ -11588,9 +11628,9 @@ } }, "node_modules/jest-worker": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.1.tgz", - "integrity": "sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "dependencies": { "@types/node": "*", @@ -12845,9 +12885,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node_modules/nock": { - "version": "13.2.8", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.8.tgz", - "integrity": "sha512-JT42FrXfQRpfyL4cnbBEJdf4nmBpVP0yoCcSBr+xkT8Q1y3pgtaCKHGAAOIFcEJ3O3t0QbVAmid0S0f2bj3Wpg==", + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -13109,12 +13149,12 @@ } }, "node_modules/npm-check-updates": { - "version": "15.2.6", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.6.tgz", - "integrity": "sha512-lXihP+6EjHW74ENE6YYW2feUmdsfK4evus2ZTCyTd0QSnmHdx0bcHpiHsjgqjPtIqgHPJXLCrV6gd3JGYZg3xg==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.0.1.tgz", + "integrity": "sha512-wEGC9bWsxVVccwIplXLj3f902qORq5tuK1ai/Plwk/Wtt/rzbN8u3+lpZh811Cn71ZAFIAPver4l+i31nbxfJA==", "dev": true, "dependencies": { - "chalk": "^4.1.2", + "chalk": "^5.0.1", "cli-table": "^0.3.11", "commander": "^9.3.0", "fast-memoize": "^2.5.2", @@ -13150,21 +13190,6 @@ "node": ">=14.14" } }, - "node_modules/npm-check-updates/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/npm-check-updates/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -13175,39 +13200,17 @@ } }, "node_modules/npm-check-updates/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/npm-check-updates/node_modules/commander": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", @@ -13233,15 +13236,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/npm-check-updates/node_modules/hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -13345,18 +13339,6 @@ "source-map": "^0.6.0" } }, - "node_modules/npm-check-updates/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm-check-updates/node_modules/yaml": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", @@ -14519,12 +14501,12 @@ } }, "node_modules/pretty-format": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.1.tgz", - "integrity": "sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "dependencies": { - "@jest/schemas": "^28.0.2", + "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" @@ -15955,27 +15937,6 @@ "ws": "^7.4.2" } }, - "node_modules/simple-websocket/node_modules/ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -16888,12 +16849,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -18111,11 +18066,11 @@ } }, "node_modules/ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { - "node": ">=10.0.0" + "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -18519,27 +18474,27 @@ } }, "@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "dev": true }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -18548,12 +18503,12 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -18591,12 +18546,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -18644,9 +18599,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true }, "@babel/helper-explode-assignable-expression": { @@ -18659,13 +18614,13 @@ } }, "@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "requires": { "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-hoist-variables": { @@ -18678,12 +18633,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", - "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { @@ -18696,19 +18651,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-optimise-call-expression": { @@ -18721,9 +18676,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -18739,16 +18694,16 @@ } }, "@babel/helper-replace-supers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", - "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-simple-access": { @@ -18761,12 +18716,12 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", - "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { @@ -18802,14 +18757,14 @@ } }, "@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "requires": { "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/highlight": { @@ -18823,9 +18778,9 @@ } }, "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -18838,14 +18793,14 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", - "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -18892,12 +18847,12 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", - "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, @@ -18912,12 +18867,12 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", - "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -18942,16 +18897,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", - "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.6" + "@babel/plugin-transform-parameters": "^7.18.8" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -18965,13 +18920,13 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", - "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -19199,46 +19154,46 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", - "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-classes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", - "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", - "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", - "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-dotall-regex": { @@ -19252,12 +19207,12 @@ } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", - "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { @@ -19271,32 +19226,32 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", - "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", - "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", - "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { @@ -19332,14 +19287,14 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", - "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } @@ -19384,9 +19339,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", - "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -19430,13 +19385,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", - "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { @@ -19449,21 +19404,21 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", - "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", - "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-escapes": { @@ -19486,29 +19441,29 @@ } }, "@babel/preset-env": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz", + "integrity": "sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", "@babel/plugin-proposal-async-generator-functions": "^7.18.6", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.18.6", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", @@ -19530,37 +19485,37 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.6", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", + "@babel/types": "^7.18.9", "babel-plugin-polyfill-corejs2": "^0.3.1", "babel-plugin-polyfill-corejs3": "^0.5.2", "babel-plugin-polyfill-regenerator": "^0.3.1", @@ -19601,27 +19556,27 @@ } }, "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", @@ -19892,16 +19847,16 @@ "dev": true }, "@jest/console": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.1.tgz", - "integrity": "sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0" }, "dependencies": { @@ -19957,37 +19912,37 @@ } }, "@jest/core": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.2.tgz", - "integrity": "sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "requires": { - "@jest/console": "^28.1.1", - "@jest/reporters": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.0.2", - "jest-config": "^28.1.2", - "jest-haste-map": "^28.1.1", - "jest-message-util": "^28.1.1", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-resolve-dependencies": "^28.1.2", - "jest-runner": "^28.1.2", - "jest-runtime": "^28.1.2", - "jest-snapshot": "^28.1.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", - "jest-watcher": "^28.1.1", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", "micromatch": "^4.0.4", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" @@ -20045,72 +20000,72 @@ } }, "@jest/environment": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.2.tgz", - "integrity": "sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "requires": { - "@jest/fake-timers": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^28.1.1" + "jest-mock": "^28.1.3" } }, "@jest/expect": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.2.tgz", - "integrity": "sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", "dev": true, "requires": { - "expect": "^28.1.1", - "jest-snapshot": "^28.1.2" + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" } }, "@jest/expect-utils": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.1.tgz", - "integrity": "sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", "dev": true, "requires": { "jest-get-type": "^28.0.2" } }, "@jest/fake-timers": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.2.tgz", - "integrity": "sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^28.1.1", - "jest-mock": "^28.1.1", - "jest-util": "^28.1.1" + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" } }, "@jest/globals": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.2.tgz", - "integrity": "sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "requires": { - "@jest/environment": "^28.1.2", - "@jest/expect": "^28.1.2", - "@jest/types": "^28.1.1" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" } }, "@jest/reporters": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.2.tgz", - "integrity": "sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.1", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@jridgewell/trace-mapping": "^0.3.13", "@types/node": "*", "chalk": "^4.0.0", @@ -20123,9 +20078,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", - "jest-worker": "^28.1.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -20185,12 +20140,12 @@ } }, "@jest/schemas": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", - "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", "dev": true, "requires": { - "@sinclair/typebox": "^0.23.3" + "@sinclair/typebox": "^0.24.1" } }, "@jest/source-map": { @@ -20205,46 +20160,46 @@ } }, "@jest/test-result": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.1.tgz", - "integrity": "sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", "dev": true, "requires": { - "@jest/console": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz", - "integrity": "sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", "dev": true, "requires": { - "@jest/test-result": "^28.1.1", + "@jest/test-result": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", + "jest-haste-map": "^28.1.3", "slash": "^3.0.0" } }, "@jest/transform": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.2.tgz", - "integrity": "sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@jridgewell/trace-mapping": "^0.3.13", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", + "jest-haste-map": "^28.1.3", "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.1", + "jest-util": "^28.1.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -20303,12 +20258,12 @@ } }, "@jest/types": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.1.tgz", - "integrity": "sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", "dev": true, "requires": { - "@jest/schemas": "^28.0.2", + "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -20454,31 +20409,26 @@ } }, "@mojaloop/api-snippets": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.0.0.tgz", - "integrity": "sha512-jpJonOSFS+xPeyGn8vIhhjGhG/em1GrprED50rifawb6znfBjR2D9ISkwTOLL2lKrUN+X4fHZo4LGEZEwpHvxQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.2.0.tgz", + "integrity": "sha512-g7pnMenw2VOIKPdaql43FyyIEbdhV5cJv0M0cc0kLBX9WlSlRQn2Lkn906VQq8vB+EKUFF0TxfevFqaqZ/6VeQ==", "dev": true, "requires": { - "commander": "^9.2.0", + "@apidevtools/json-schema-ref-parser": "^9.0.9", + "commander": "^9.4.0", "jest-ts-auto-mock": "^2.1.0", "js-yaml": "^4.1.0", "json-refs": "^3.0.15", - "openapi-types": "^11.0.1", - "openapi-typescript": "^5.3.0", + "openapi-types": "^12.0.0", + "openapi-typescript": "^5.4.1", "ts-auto-mock": "^3.6.2", "ttypescript": "^1.5.13" }, "dependencies": { "commander": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", - "dev": true - }, - "openapi-types": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-11.1.0.tgz", - "integrity": "sha512-ZW+Jf12flFF6DXSij8DGL3svDA4RtSyHXjC/xB/JAh18gg3uVfVIFLvCfScUMowrpvlkxsMMbErakbth2g3/iQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "dev": true } } @@ -20944,9 +20894,9 @@ } }, "@sinclair/typebox": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", - "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "version": "0.24.20", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", + "integrity": "sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ==", "dev": true }, "@sindresorhus/is": { @@ -21137,9 +21087,9 @@ } }, "@types/jest": { - "version": "28.1.4", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.4.tgz", - "integrity": "sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==", + "version": "28.1.6", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", + "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", "dev": true, "requires": { "jest-matcher-utils": "^28.0.0", @@ -21642,15 +21592,15 @@ } }, "babel-jest": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.2.tgz", - "integrity": "sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", "dev": true, "requires": { - "@jest/transform": "^28.1.2", + "@jest/transform": "^28.1.3", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.1", + "babel-preset-jest": "^28.1.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -21730,9 +21680,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz", - "integrity": "sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -21792,12 +21742,12 @@ } }, "babel-preset-jest": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz", - "integrity": "sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^28.1.1", + "babel-plugin-jest-hoist": "^28.1.3", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -23680,9 +23630,9 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", - "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", @@ -23972,9 +23922,9 @@ } }, "eslint-plugin-jest": { - "version": "26.5.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.5.3.tgz", - "integrity": "sha512-sICclUqJQnR1bFRZGLN2jnSVsYOsmPYYnroGCIMVSvTS3y8XR3yjzy1EcTQmk6typ5pRgyIWzbjqxK6cZHEZuQ==", + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.6.0.tgz", + "integrity": "sha512-f8n46/97ZFdU4KqeQYqO8AEVGIhHWvkpgNBWHH3jrM28/y8llnbf3IjfIKv6p2pZIMinK1PCqbbROxs9Eud02Q==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" @@ -24103,16 +24053,16 @@ "dev": true }, "expect": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.1.tgz", - "integrity": "sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", "dev": true, "requires": { - "@jest/expect-utils": "^28.1.1", + "@jest/expect-utils": "^28.1.3", "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1" + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" } }, "expected-node-version": { @@ -25828,9 +25778,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -25843,52 +25793,63 @@ "integrity": "sha512-BwhYxQ1OPenBPXC735RgfB+ZUG8H3kjsx8hrYTgWnoy6TPipEy4fiicyhT2lxRKAXq9pG7CfFT8a2HLr6Hmwxg==" }, "jest": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.2.tgz", - "integrity": "sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "requires": { - "@jest/core": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", "import-local": "^3.0.2", - "jest-cli": "^28.1.2" + "jest-cli": "^28.1.3" } }, "jest-changed-files": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", - "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "requires": { "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } } }, "jest-circus": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.2.tgz", - "integrity": "sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "requires": { - "@jest/environment": "^28.1.2", - "@jest/expect": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.1", - "jest-matcher-utils": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-runtime": "^28.1.2", - "jest-snapshot": "^28.1.2", - "jest-util": "^28.1.1", - "pretty-format": "^28.1.1", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "dependencies": { "ansi-styles": { @@ -25931,6 +25892,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25943,21 +25913,21 @@ } }, "jest-cli": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.2.tgz", - "integrity": "sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "requires": { - "@jest/core": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^28.1.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -26035,31 +26005,31 @@ } }, "jest-config": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.2.tgz", - "integrity": "sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.1", - "@jest/types": "^28.1.1", - "babel-jest": "^28.1.2", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.2", - "jest-environment-node": "^28.1.2", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", "jest-get-type": "^28.0.2", "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-runner": "^28.1.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -26116,15 +26086,15 @@ } }, "jest-diff": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.1.tgz", - "integrity": "sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^28.1.1", "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -26188,16 +26158,16 @@ } }, "jest-each": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.1.tgz", - "integrity": "sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "jest-get-type": "^28.0.2", - "jest-util": "^28.1.1", - "pretty-format": "^28.1.1" + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -26252,17 +26222,17 @@ } }, "jest-environment-node": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.2.tgz", - "integrity": "sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", "dev": true, "requires": { - "@jest/environment": "^28.1.2", - "@jest/fake-timers": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^28.1.1", - "jest-util": "^28.1.1" + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" } }, "jest-get-type": { @@ -26272,12 +26242,12 @@ "dev": true }, "jest-haste-map": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.1.tgz", - "integrity": "sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -26285,8 +26255,8 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.1", - "jest-worker": "^28.1.1", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "micromatch": "^4.0.4", "walker": "^1.0.8" } @@ -26304,25 +26274,25 @@ } }, "jest-leak-detector": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz", - "integrity": "sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "requires": { "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" } }, "jest-matcher-utils": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz", - "integrity": "sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^28.1.1", + "jest-diff": "^28.1.3", "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -26377,18 +26347,18 @@ } }, "jest-message-util": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.1.tgz", - "integrity": "sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -26445,12 +26415,12 @@ } }, "jest-mock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.1.tgz", - "integrity": "sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/node": "*" } }, @@ -26468,17 +26438,17 @@ "dev": true }, "jest-resolve": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.1.tgz", - "integrity": "sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", + "jest-haste-map": "^28.1.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -26536,42 +26506,42 @@ } }, "jest-resolve-dependencies": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz", - "integrity": "sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "requires": { "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.2" + "jest-snapshot": "^28.1.3" } }, "jest-runner": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.2.tgz", - "integrity": "sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "requires": { - "@jest/console": "^28.1.1", - "@jest/environment": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.10.2", "graceful-fs": "^4.2.9", "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.2", - "jest-haste-map": "^28.1.1", - "jest-leak-detector": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-resolve": "^28.1.1", - "jest-runtime": "^28.1.2", - "jest-util": "^28.1.1", - "jest-watcher": "^28.1.1", - "jest-worker": "^28.1.1", - "source-map-support": "0.5.13", - "throat": "^6.0.1" + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "dependencies": { "ansi-styles": { @@ -26614,6 +26584,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -26626,31 +26605,31 @@ } }, "jest-runtime": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.2.tgz", - "integrity": "sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", "dev": true, "requires": { - "@jest/environment": "^28.1.2", - "@jest/fake-timers": "^28.1.2", - "@jest/globals": "^28.1.2", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-mock": "^28.1.1", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-snapshot": "^28.1.2", - "jest-util": "^28.1.1", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -26707,9 +26686,9 @@ } }, "jest-snapshot": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.2.tgz", - "integrity": "sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -26717,23 +26696,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.1", - "@jest/transform": "^28.1.2", - "@jest/types": "^28.1.1", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^28.1.1", + "expect": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.1", + "jest-diff": "^28.1.3", "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.1", - "jest-matcher-utils": "^28.1.1", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "natural-compare": "^1.4.0", - "pretty-format": "^28.1.1", + "pretty-format": "^28.1.3", "semver": "^7.3.5" }, "dependencies": { @@ -26805,12 +26784,12 @@ "requires": {} }, "jest-util": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.1.tgz", - "integrity": "sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -26870,17 +26849,17 @@ } }, "jest-validate": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.1.tgz", - "integrity": "sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", "dev": true, "requires": { - "@jest/types": "^28.1.1", + "@jest/types": "^28.1.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^28.1.1" + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -26941,18 +26920,18 @@ } }, "jest-watcher": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.1.tgz", - "integrity": "sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", "dev": true, "requires": { - "@jest/test-result": "^28.1.1", - "@jest/types": "^28.1.1", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.10.2", - "jest-util": "^28.1.1", + "jest-util": "^28.1.3", "string-length": "^4.0.1" }, "dependencies": { @@ -27008,9 +26987,9 @@ } }, "jest-worker": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.1.tgz", - "integrity": "sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "requires": { "@types/node": "*", @@ -28021,9 +28000,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nock": { - "version": "13.2.8", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.8.tgz", - "integrity": "sha512-JT42FrXfQRpfyL4cnbBEJdf4nmBpVP0yoCcSBr+xkT8Q1y3pgtaCKHGAAOIFcEJ3O3t0QbVAmid0S0f2bj3Wpg==", + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -28225,12 +28204,12 @@ } }, "npm-check-updates": { - "version": "15.2.6", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.2.6.tgz", - "integrity": "sha512-lXihP+6EjHW74ENE6YYW2feUmdsfK4evus2ZTCyTd0QSnmHdx0bcHpiHsjgqjPtIqgHPJXLCrV6gd3JGYZg3xg==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.0.1.tgz", + "integrity": "sha512-wEGC9bWsxVVccwIplXLj3f902qORq5tuK1ai/Plwk/Wtt/rzbN8u3+lpZh811Cn71ZAFIAPver4l+i31nbxfJA==", "dev": true, "requires": { - "chalk": "^4.1.2", + "chalk": "^5.0.1", "cli-table": "^0.3.11", "commander": "^9.3.0", "fast-memoize": "^2.5.2", @@ -28259,15 +28238,6 @@ "yaml": "^2.1.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -28278,28 +28248,9 @@ } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true }, "commander": { @@ -28318,12 +28269,6 @@ "path-exists": "^4.0.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -28396,15 +28341,6 @@ "source-map": "^0.6.0" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "yaml": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", @@ -29306,12 +29242,12 @@ "dev": true }, "pretty-format": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.1.tgz", - "integrity": "sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "requires": { - "@jest/schemas": "^28.0.2", + "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" @@ -30409,15 +30345,6 @@ "randombytes": "^2.1.0", "readable-stream": "^3.6.0", "ws": "^7.4.2" - }, - "dependencies": { - "ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "dev": true, - "requires": {} - } } }, "sisteransi": { @@ -31109,12 +31036,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -32044,9 +31965,9 @@ } }, "ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, "xdg-basedir": { diff --git a/package.json b/package.json index 2a77d06c0..0f0c712b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.1", + "version": "18.0.2-snapshot.2", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", @@ -81,24 +81,24 @@ "random-word-slugs": "^0.1.6", "redis": "^4.2.0", "uuidv4": "^6.2.13", - "ws": "^8.8.0" + "ws": "^7.5.5" }, "devDependencies": { - "@babel/core": "^7.18.6", - "@babel/preset-env": "^7.18.6", - "@mojaloop/api-snippets": "^14.0.0", + "@babel/core": "^7.18.9", + "@babel/preset-env": "^7.18.9", + "@mojaloop/api-snippets": "^14.2.0", "@redocly/openapi-cli": "^1.0.0-beta.94", - "@types/jest": "^28.1.4", - "babel-jest": "^28.1.2", - "eslint": "^8.19.0", + "@types/jest": "^28.1.6", + "babel-jest": "^28.1.3", + "eslint": "^8.20.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^26.5.3", - "jest": "^28.1.2", + "eslint-plugin-jest": "^26.6.0", + "jest": "^28.1.3", "jest-junit": "^14.0.0", - "nock": "^13.2.8", + "nock": "^13.2.9", "npm-audit-resolver": "^3.0.0-7", - "npm-check-updates": "^15.2.6", + "npm-check-updates": "^16.0.1", "openapi-response-validator": "^12.0.0", "openapi-typescript": "^5.4.1", "redis-mock": "^0.56.3", diff --git a/test/unit/ControlServer/index.js b/test/unit/ControlServer/index.js index 03eaf9f4d..930524285 100644 --- a/test/unit/ControlServer/index.js +++ b/test/unit/ControlServer/index.js @@ -210,7 +210,7 @@ class Server extends ws.Server { */ broadcast(msg) { this.clients.forEach((client) => { - if (client.readyState === ws.WebSocket.OPEN) { + if (client.readyState === ws.OPEN) { client.send(msg); } }); From dd542e686f57d4900d618cdafd279e7cfbcece59 Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Wed, 27 Jul 2022 18:18:48 +0000 Subject: [PATCH 32/39] chore(release): 18.0.2 [skip ci] --- CHANGELOG.md | 12 ++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8204106b..335a27a46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,16 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +### [18.0.2](https://github.com/mojaloop/sdk-scheme-adapter/compare/v18.0.1...v18.0.2) (2022-07-27) + + +### Bug Fixes + +* ws-connection-issue ([#339](https://github.com/mojaloop/sdk-scheme-adapter/issues/339)) ([e29e158](https://github.com/mojaloop/sdk-scheme-adapter/commit/e29e158807d1c758e18418752339b8b10d42377b)) + + +### Chore + +* updates to readme for header badges [skip ci] ([#334](https://github.com/mojaloop/sdk-scheme-adapter/issues/334)) ([415bb33](https://github.com/mojaloop/sdk-scheme-adapter/commit/415bb3380a17cfd35841095bb9b2f399e969f5c6)) + ### [18.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v18.0.0...v18.0.1) (2022-07-12) diff --git a/package-lock.json b/package-lock.json index bc63b9950..b7d39cf13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.2-snapshot.2", + "version": "18.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.2-snapshot.2", + "version": "18.0.2", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.3.0", diff --git a/package.json b/package.json index 0f0c712b8..08fd13091 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.2-snapshot.2", + "version": "18.0.2", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 92eb4918fcbebc4532ebd1434aa7c565822e15bd Mon Sep 17 00:00:00 2001 From: Yevhen Kyriukha Date: Thu, 28 Jul 2022 17:52:59 +0300 Subject: [PATCH 33/39] feat!: use updated outbound OpenAPI specification from api-snippets (#340) * feat!: use updated outbound OpenAPI specification from api-snippets * use audit-ci for audit check. * move api-snippets to deps. --- .circleci/config.yml | 132 +- README.md | 8 +- audit-ci.jsonc | 16 + audit-resolve.json | 101 - package-lock.json | 337 +- package.json | 15 +- src/InboundServer/api.yaml | 96 +- src/OutboundServer/api.yaml | 2884 ----------------- src/OutboundServer/api_interfaces/index.d.ts | 101 - .../api_interfaces/openapi.d.ts | 1388 -------- .../components/parameters/bulkQuoteId.yaml | 9 - .../components/parameters/bulkTransferId.yaml | 9 - .../parameters/requestToPayTransactionId.yaml | 9 - .../components/parameters/transferId.yaml | 9 - .../responses/accountsCreationCompleted.yaml | 5 - .../responses/accountsCreationError.yaml | 5 - .../responses/accountsCreationTimeout.yaml | 5 - .../responses/bulkQuoteBadRequest.yaml | 5 - .../responses/bulkQuoteServerError.yaml | 5 - .../responses/bulkQuoteSuccess.yaml | 5 - .../responses/bulkQuoteTimeout.yaml | 5 - .../responses/bulkTransferBadRequest.yaml | 5 - .../responses/bulkTransferServerError.yaml | 5 - .../responses/bulkTransferSuccess.yaml | 5 - .../responses/bulkTransferTimeout.yaml | 5 - .../responses/partiesByIdError404.yaml | 9 - .../responses/partiesByIdSuccess.yaml | 5 - .../responses/quotesPostSuccess.yaml | 5 - .../responses/quotesServerError.yaml | 5 - .../responses/requestToPaySuccess.yaml | 5 - .../requestToPayTransferBadRequest.yaml | 5 - .../requestToPayTransferSuccess.yaml | 5 - .../responses/simpleTransfersPostSuccess.yaml | 5 - .../responses/simpleTransfersServerError.yaml | 5 - .../responses/transferBadRequest.yaml | 5 - .../responses/transferServerError.yaml | 5 - .../components/responses/transferSuccess.yaml | 5 - .../components/responses/transferTimeout.yaml | 5 - .../schemas/accountCreationStatus.yaml | 18 - .../schemas/accountsCreationState.yaml | 4 - .../components/schemas/accountsRequest.yaml | 20 - .../components/schemas/accountsResponse.yaml | 24 - .../schemas/async2SyncCurrentState.yaml | 5 - .../schemas/bulkQuoteErrorResponse.yaml | 8 - .../components/schemas/bulkQuoteRequest.yaml | 26 - .../components/schemas/bulkQuoteResponse.yaml | 21 - .../components/schemas/bulkQuoteStatus.yaml | 4 - .../schemas/bulkQuoteStatusResponse.yaml | 17 - .../schemas/bulkTransferErrorResponse.yaml | 8 - .../schemas/bulkTransferRequest.yaml | 26 - .../schemas/bulkTransferResponse.yaml | 16 - .../schemas/bulkTransferStatus.yaml | 4 - .../schemas/bulkTransferStatusResponse.yaml | 17 - .../schemas/errorAccountsResponse.yaml | 8 - .../schemas/errorQuotesResponse.yaml | 9 - .../components/schemas/errorResponse.yaml | 8 - .../schemas/errorSimpleTransfersResponse.yaml | 3 - .../schemas/errorTransferResponse.yaml | 8 - .../schemas/extensionListEmptiable.yaml | 6 - .../components/schemas/individualQuote.yaml | 32 - .../schemas/individualQuoteResult.yaml | 28 - .../schemas/individualTransfer.yaml | 32 - .../schemas/individualTransferFulfilment.yaml | 13 - .../schemas/individualTransferResult.yaml | 41 - .../components/schemas/mojaloopError.yaml | 5 - .../mojaloopTransactionRequestState.yaml | 2 - .../schemas/partiesByIdResponse.yaml | 20 - .../components/schemas/quote.yaml | 3 - .../components/schemas/quoteError.yaml | 16 - .../components/schemas/quotesPostRequest.yaml | 13 - .../schemas/quotesPostResponse.yaml | 56 - .../schemas/requestToPayRequest.yaml | 39 - .../schemas/requestToPayResponse.yaml | 41 - .../schemas/requestToPayTransferRequest.yaml | 42 - .../schemas/requestToPayTransferResponse.yaml | 58 - .../schemas/simpleTransferServerError.yaml | 5 - .../schemas/simpleTransfersPostRequest.yaml | 12 - .../schemas/simpleTransfersPostResponse.yaml | 18 - .../components/schemas/transactionType.yaml | 4 - .../transferContinuationAcceptOTP.yaml | 9 - .../transferContinuationAcceptParty.yaml | 8 - .../transferContinuationAcceptQuote.yaml | 9 - .../components/schemas/transferError.yaml | 16 - .../schemas/transferFulfilment.yaml | 3 - .../components/schemas/transferParty.yaml | 40 - .../components/schemas/transferRequest.yaml | 40 - .../components/schemas/transferResponse.yaml | 84 - .../components/schemas/transferStatus.yaml | 6 - .../schemas/transferStatusResponse.yaml | 20 - src/OutboundServer/api_template/health.yaml | 12 - src/OutboundServer/api_template/openapi.yaml | 52 - .../api_template/paths/accounts.yaml | 26 - .../api_template/paths/bulkQuotes.yaml | 23 - .../paths/bulkQuotes_bulkQuoteId.yaml | 24 - .../api_template/paths/bulkTransfers.yaml | 23 - .../paths/bulkTransfers_bulkTransferId.yaml | 24 - .../api_template/paths/parties_Type_ID.yaml | 20 - .../paths/parties_Type_ID_SubId.yaml | 22 - .../api_template/paths/quotes.yaml | 20 - .../api_template/paths/requestToPay.yaml | 22 - .../paths/requestToPayTransfer.yaml | 57 - ...PayTransfer_requestToPayTransactionId.yaml | 34 - .../api_template/paths/simpleTransfers.yaml | 19 - .../api_template/paths/transfers.yaml | 55 - .../paths/transfers_transferId.yaml | 58 - src/OutboundServer/index.js | 2 +- test/unit/api/utils.js | 13 +- 107 files changed, 263 insertions(+), 6456 deletions(-) create mode 100644 audit-ci.jsonc delete mode 100644 audit-resolve.json delete mode 100644 src/OutboundServer/api.yaml delete mode 100644 src/OutboundServer/api_interfaces/index.d.ts delete mode 100644 src/OutboundServer/api_interfaces/openapi.d.ts delete mode 100644 src/OutboundServer/api_template/components/parameters/bulkQuoteId.yaml delete mode 100644 src/OutboundServer/api_template/components/parameters/bulkTransferId.yaml delete mode 100644 src/OutboundServer/api_template/components/parameters/requestToPayTransactionId.yaml delete mode 100644 src/OutboundServer/api_template/components/parameters/transferId.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/accountsCreationCompleted.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/accountsCreationError.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/accountsCreationTimeout.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkQuoteBadRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkQuoteServerError.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkQuoteSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkQuoteTimeout.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkTransferBadRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkTransferServerError.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkTransferSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/bulkTransferTimeout.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/partiesByIdError404.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/partiesByIdSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/quotesPostSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/quotesServerError.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/requestToPaySuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/requestToPayTransferBadRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/requestToPayTransferSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/simpleTransfersPostSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/simpleTransfersServerError.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/transferBadRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/transferServerError.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/transferSuccess.yaml delete mode 100644 src/OutboundServer/api_template/components/responses/transferTimeout.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/accountsCreationState.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/accountsRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/accountsResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/async2SyncCurrentState.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkQuoteErrorResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkQuoteRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkQuoteResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkQuoteStatus.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkQuoteStatusResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkTransferErrorResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkTransferRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkTransferResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkTransferStatus.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/bulkTransferStatusResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/errorAccountsResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/errorQuotesResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/errorResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/errorSimpleTransfersResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/errorTransferResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/individualQuote.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/individualQuoteResult.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/individualTransfer.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/individualTransferFulfilment.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/individualTransferResult.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/mojaloopError.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/partiesByIdResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/quote.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/quoteError.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/requestToPayTransferResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/simpleTransferServerError.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/simpleTransfersPostResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transactionType.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferContinuationAcceptOTP.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferContinuationAcceptParty.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferContinuationAcceptQuote.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferError.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferParty.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferRequest.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferResponse.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferStatus.yaml delete mode 100644 src/OutboundServer/api_template/components/schemas/transferStatusResponse.yaml delete mode 100644 src/OutboundServer/api_template/health.yaml delete mode 100644 src/OutboundServer/api_template/openapi.yaml delete mode 100644 src/OutboundServer/api_template/paths/accounts.yaml delete mode 100644 src/OutboundServer/api_template/paths/bulkQuotes.yaml delete mode 100644 src/OutboundServer/api_template/paths/bulkQuotes_bulkQuoteId.yaml delete mode 100644 src/OutboundServer/api_template/paths/bulkTransfers.yaml delete mode 100644 src/OutboundServer/api_template/paths/bulkTransfers_bulkTransferId.yaml delete mode 100644 src/OutboundServer/api_template/paths/parties_Type_ID.yaml delete mode 100644 src/OutboundServer/api_template/paths/parties_Type_ID_SubId.yaml delete mode 100644 src/OutboundServer/api_template/paths/quotes.yaml delete mode 100644 src/OutboundServer/api_template/paths/requestToPay.yaml delete mode 100644 src/OutboundServer/api_template/paths/requestToPayTransfer.yaml delete mode 100644 src/OutboundServer/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml delete mode 100644 src/OutboundServer/api_template/paths/simpleTransfers.yaml delete mode 100644 src/OutboundServer/api_template/paths/transfers.yaml delete mode 100644 src/OutboundServer/api_template/paths/transfers_transferId.yaml diff --git a/.circleci/config.yml b/.circleci/config.yml index 35e3ea8be..2fb2fb1ae 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -37,19 +37,6 @@ defaults_license_scanner: &defaults_license_scanner git clone https://github.com/mojaloop/license-scanner /tmp/license-scanner cd /tmp/license-scanner && make build default-files set-up -## remove -defaults_npm_auth: &defaults_npm_auth - name: Update NPM registry auth token - command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc - -## remove -defaults_npm_publish_release: &defaults_npm_publish_release - name: Publish NPM $RELEASE_TAG artifact - command: | - source $BASH_ENV - echo "Publishing tag $RELEASE_TAG" - npm publish --tag $RELEASE_TAG --access public - defaults_export_version_from_package: &defaults_export_version_from_package name: Format the changelog into the github release body and get release tag command: | @@ -225,7 +212,7 @@ jobs: command: mkdir -p ./audit/results - run: name: Check for new npm vulnerabilities - command: npm run audit:check --silent -- --json > ./audit/results/auditResults.json + command: npm run audit:check -- -o json > ./audit/results/auditResults.json - store_artifacts: path: ./audit/results prefix: audit @@ -566,85 +553,6 @@ jobs: event: fail template: SLACK_TEMP_RELEASE_FAILURE - publish-npm: - executor: default-docker - steps: - - run: - name: Install general dependencies - command: *defaults_Dependencies - - checkout - - restore_cache: - key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: Setup for LATEST release - command: | - echo "export RELEASE_TAG=$RELEASE_TAG_PROD" >> $BASH_ENV - echo "RELEASE_TAG=$RELEASE_TAG_PROD" - - PACKAGE_VERSION=$(cat package-lock.json | jq -r .version) - echo "export PACKAGE_VERSION=${PACKAGE_VERSION}" >> $BASH_ENV - echo "PACKAGE_VERSION=${PACKAGE_VERSION}" - - run: - name: Setup Slack config - command: | - echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV - echo "export SLACK_RELEASE_TYPE='NPM Release'" >> $BASH_ENV - echo "export SLACK_RELEASE_TAG=v${CIRCLE_TAG:1}" >> $BASH_ENV - echo "export SLACK_RELEASE_URL=https://www.npmjs.com/package/@mojaloop/${CIRCLE_PROJECT_REPONAME}/v/${CIRCLE_TAG:1}" >> $BASH_ENV - echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV - echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV - - run: - <<: *defaults_npm_auth - - run: - <<: *defaults_npm_publish_release - - slack/notify: - event: pass - template: SLACK_TEMP_RELEASE_SUCCESS - - slack/notify: - event: fail - template: SLACK_TEMP_RELEASE_FAILURE - - publish-npm-snapshot: - executor: default-docker - steps: - - run: - name: Install general dependencies - command: *defaults_Dependencies - - checkout - - restore_cache: - key: dependency-cache-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: Setup for SNAPSHOT release - command: | - echo "export RELEASE_TAG=${RELEASE_TAG_SNAPSHOT}" >> $BASH_ENV - echo "RELEASE_TAG=${RELEASE_TAG_SNAPSHOT}" - - echo "Override package version: ${CIRCLE_TAG:1}" - npx standard-version --skip.tag --skip.commit --skip.changelog --release-as ${CIRCLE_TAG:1} - - PACKAGE_VERSION=$(cat package-lock.json | jq -r .version) - echo "export PACKAGE_VERSION=${PACKAGE_VERSION}" >> $BASH_ENV - echo "PACKAGE_VERSION=${PACKAGE_VERSION}" - - run: - name: Setup Slack config - command: | - echo "export SLACK_PROJECT_NAME=${CIRCLE_PROJECT_REPONAME}" >> $BASH_ENV - echo "export SLACK_RELEASE_TYPE='NPM Snapshot'" >> $BASH_ENV - echo "export SLACK_RELEASE_TAG=v${CIRCLE_TAG:1}" >> $BASH_ENV - echo "export SLACK_RELEASE_URL=https://www.npmjs.com/package/@mojaloop/${CIRCLE_PROJECT_REPONAME}/v/${CIRCLE_TAG:1}" >> $BASH_ENV - echo "export SLACK_BUILD_ID=${CIRCLE_BUILD_NUM}" >> $BASH_ENV - echo "export SLACK_CI_URL=${CIRCLE_BUILD_URL}" >> $BASH_ENV - - run: - <<: *defaults_npm_auth - - run: - <<: *defaults_npm_publish_release - - slack/notify: - event: pass - template: SLACK_TEMP_RELEASE_SUCCESS - - slack/notify: - event: fail - template: SLACK_TEMP_RELEASE_FAILURE - ## # Workflows # @@ -860,41 +768,3 @@ workflows: branches: ignore: - /.*/ - - publish-npm: - context: org-global - requires: - - pr-tools/pr-title-check - - test-dependencies - - test-lint - - test-unit - - vulnerability-check - - audit-licenses - - test-integration - - license-scan - - image-scan - - validate-openapi - filters: - tags: - only: /v[0-9]+(\.[0-9]+)*/ - branches: - ignore: - - /.*/ - - publish-npm-snapshot: - context: org-global - requires: - - pr-tools/pr-title-check - - test-dependencies - - test-lint - - test-unit - - vulnerability-check - - audit-licenses - - test-integration - - license-scan - - image-scan - - validate-openapi - filters: - tags: - only: /v[0-9]+(\.[0-9]+)*\-snapshot+((\.[0-9]+)?)/ - branches: - ignore: - - /.*/ diff --git a/README.md b/README.md index ae58146bb..395c2cffd 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ For information on the background and context of this project please see the pre DFSP backends must implement the [DFSP Inbound API](docs/dfspInboundApi.yaml) in order for the scheme adapter to make incoming transfers i.e. to receive funds to a customer account. -DFSP backends can call the [DFSP Outbound API](/src/outboundApi/api.yaml) in order to make outgoing transfers i.e. to send funds from a customer account. +DFSP backends can call the [DFSP Outbound API](https://github.com/mojaloop/api-snippets/blob/master/docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml) in order to make outgoing transfers i.e. to send funds from a customer account. ## Docker Image @@ -192,12 +192,6 @@ To rebuild the inbound interface run npm run build:openapi:inbound ``` -To rebuild the outbound interface run - -```bash -npm run build:openapi:outbound -``` - ## Automated Releases As part of our CI/CD process, we use a combination of CircleCI, standard-version diff --git a/audit-ci.jsonc b/audit-ci.jsonc new file mode 100644 index 000000000..8b8472af6 --- /dev/null +++ b/audit-ci.jsonc @@ -0,0 +1,16 @@ +{ + "$schema": "https://github.com/IBM/audit-ci/raw/main/docs/schema.json", + "moderate": true, + "allowlist": [ + "GHSA-v88g-cgmw-v5xw", + "GHSA-phwq-j96m-2c2q", + "GHSA-282f-qqgm-c34q", + "GHSA-6vfc-qv3f-vr6c", + "GHSA-wc69-rhjr-hc9g", + "GHSA-g954-5hwp-pp24", + "GHSA-mjxr-4v3x-q3m4", + "GHSA-rjqq-98f6-6j3r", + "GHSA-3cvr-822r-rqcc", + "GHSA-p9pc-299p-vxgp" + ] +} diff --git a/audit-resolve.json b/audit-resolve.json deleted file mode 100644 index b752e4da3..000000000 --- a/audit-resolve.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "decisions": { - "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { - "decision": "ignore", - "madeAt": 1657188195403, - "expiresAt": 1659780190646 - }, - "1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": { - "decision": "ignore", - "madeAt": 1657188196343, - "expiresAt": 1659780190646 - }, - "1080944|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { - "decision": "ignore", - "madeAt": 1657188197274, - "expiresAt": 1659780190646 - }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it": { - "decision": "ignore", - "madeAt": 1657188198190, - "expiresAt": 1659780190646 - }, - "1070030|widdershins>markdown-it": { - "decision": "ignore", - "madeAt": 1657188198190, - "expiresAt": 1659780190646 - }, - "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1657188199040, - "expiresAt": 1659780190646 - }, - "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1657188199954, - "expiresAt": 1659780190646 - }, - "1070412|ejs": { - "decision": "ignore", - "madeAt": 1657188200902, - "expiresAt": 1659780190646 - }, - "1067553|swagger2openapi>better-ajv-errors>jsonpointer": { - "decision": "ignore", - "madeAt": 1657188201786, - "expiresAt": 1659780190646 - }, - "1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": { - "decision": "ignore", - "madeAt": 1657188202661, - "expiresAt": 1659780190646 - }, - "1068310|widdershins>markdown-it>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1657188203603, - "expiresAt": 1659780190646 - }, - "1080969|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { - "decision": "ignore", - "madeAt": 1657217280998, - "expiresAt": 1659809259103 - }, - "1081008|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { - "decision": "ignore", - "madeAt": 1657621042651, - "expiresAt": 1660213039412 - }, - "1081761|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": { - "decision": "ignore", - "madeAt": 1658860721215, - "expiresAt": 1661452716888 - }, - "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>widdershins>markdown-it": { - "decision": "ignore", - "madeAt": 1658860722876, - "expiresAt": 1661452716888 - }, - "1070030|shins>markdown-it": { - "decision": "ignore", - "madeAt": 1658860722876, - "expiresAt": 1661452716888 - }, - "1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>widdershins>markdown-it>yargs>yargs-parser": { - "decision": "ignore", - "madeAt": 1658860723959, - "expiresAt": 1661452716888 - }, - "1068155|shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1658860724884, - "expiresAt": 1661452716888 - }, - "1070260|shins>markdown-it>sanitize-html": { - "decision": "ignore", - "madeAt": 1658860725792, - "expiresAt": 1661452716888 - } - }, - "rules": {}, - "version": 1 -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b7d39cf13..0d899ad2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.3.0", + "@mojaloop/api-snippets": "^14.2.2", "@mojaloop/central-services-shared": "17.0.2", "@mojaloop/sdk-standard-components": "^17.1.1", "ajv": "8.11.0", @@ -38,9 +39,9 @@ "devDependencies": { "@babel/core": "^7.18.9", "@babel/preset-env": "^7.18.9", - "@mojaloop/api-snippets": "^14.2.0", "@redocly/openapi-cli": "^1.0.0-beta.94", "@types/jest": "^28.1.6", + "audit-ci": "^6.3.0", "babel-jest": "^28.1.3", "eslint": "^8.20.0", "eslint-config-airbnb-base": "^15.0.0", @@ -1945,7 +1946,6 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -1958,7 +1958,6 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -2877,7 +2876,6 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2894,8 +2892,7 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", @@ -2966,10 +2963,9 @@ } }, "node_modules/@mojaloop/api-snippets": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.2.0.tgz", - "integrity": "sha512-g7pnMenw2VOIKPdaql43FyyIEbdhV5cJv0M0cc0kLBX9WlSlRQn2Lkn906VQq8vB+EKUFF0TxfevFqaqZ/6VeQ==", - "dev": true, + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.2.2.tgz", + "integrity": "sha512-zSkm/fqJXPBI42zXI1mITL5QKbr7wo69fMZvldDbJM/5cMkpWxYKjwOI2zlAPo4j7wiEDv5gPSJP/pzVpzN2KQ==", "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.0.9", "commander": "^9.4.0", @@ -2989,7 +2985,6 @@ "version": "9.4.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", - "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -3636,28 +3631,24 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, "peer": true }, "node_modules/@types/babel__core": { @@ -4042,7 +4033,6 @@ "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -4270,7 +4260,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, "peer": true }, "node_modules/argparse": { @@ -4395,6 +4384,82 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/audit-ci": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/audit-ci/-/audit-ci-6.3.0.tgz", + "integrity": "sha512-rVCn4J7SUMQw2A21E3PPLzMz70A5RqWIx5BzvuU0iKeEGuuC6vGE00eeo4mFEnr439WdvI9i2lCXnmgABqLSeQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "escape-string-regexp": "^4.0.0", + "event-stream": "4.0.1", + "jju": "^1.4.0", + "JSONStream": "^1.3.5", + "readline-transform": "1.0.0", + "semver": "^7.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "audit-ci": "dist/bin.js" + }, + "engines": { + "node": ">=12.9.0" + } + }, + "node_modules/audit-ci/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/audit-ci/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/audit-ci/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/audit-ci/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/audit-resolve-core": { "version": "3.0.0-3", "resolved": "https://registry.npmjs.org/audit-resolve-core/-/audit-resolve-core-3.0.0-3.tgz", @@ -5580,8 +5645,7 @@ "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "node_modules/compress-brotli": { "version": "1.3.8", @@ -6327,8 +6391,7 @@ "node_modules/cookiejar": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" }, "node_modules/cookies": { "version": "0.8.0", @@ -6385,7 +6448,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, "peer": true }, "node_modules/cross-spawn": { @@ -6684,7 +6746,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, "peer": true, "engines": { "node": ">=0.3.1" @@ -7591,7 +7652,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -8150,19 +8210,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -8595,8 +8642,7 @@ "node_modules/globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" }, "node_modules/globby": { "version": "11.1.0", @@ -8621,8 +8667,7 @@ "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" }, "node_modules/got": { "version": "12.1.0", @@ -8665,7 +8710,6 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dev": true, "dependencies": { "lodash": "^4.17.15" } @@ -9609,7 +9653,6 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -11347,7 +11390,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/jest-ts-auto-mock/-/jest-ts-auto-mock-2.1.0.tgz", "integrity": "sha512-ubL0pweKUHQNY2xCgwXjYllEQMgpKDojcEODpraQVevHqBFBsFDJZkpZp/2JsmujMu4TNJPzmSugXOLfKndmlQ==", - "dev": true, "peerDependencies": { "ts-auto-mock": "^3.5.0" } @@ -11757,7 +11799,6 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", - "dev": true, "dependencies": { "commander": "~4.1.1", "graphlib": "^2.1.8", @@ -11779,7 +11820,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -11788,7 +11828,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "engines": { "node": ">= 6" } @@ -11797,7 +11836,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -12245,8 +12283,7 @@ "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -12385,7 +12422,6 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, "peer": true }, "node_modules/make-fetch-happen": { @@ -12580,7 +12616,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -12593,7 +12628,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, "bin": { "mime": "cli.js" }, @@ -12856,8 +12890,7 @@ "node_modules/native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", - "dev": true + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -13978,7 +14011,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", - "dev": true, "dependencies": { "js-yaml": "^4.1.0", "mime": "^3.0.0", @@ -13998,7 +14030,6 @@ "version": "21.0.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true, "engines": { "node": ">=12" } @@ -14311,7 +14342,6 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", - "dev": true, "dependencies": { "native-promise-only": "^0.8.1", "superagent": "^7.1.6" @@ -14320,8 +14350,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -14489,7 +14518,6 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -15091,6 +15119,15 @@ "node": ">=8.10.0" } }, + "node_modules/readline-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/readline-transform/-/readline-transform-1.0.0.tgz", + "integrity": "sha512-7KA6+N9IGat52d83dvxnApAWN+MtVb1MiVuMR/cf1O4kYsJG+g/Aav0AHcHKsb6StinayfPLne0+fMX2sOzAKg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -15308,7 +15345,6 @@ "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, "dependencies": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -15947,7 +15983,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -16444,7 +16479,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", - "dev": true, "dependencies": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.3", @@ -16466,7 +16500,6 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, "bin": { "mime": "cli.js" }, @@ -16478,7 +16511,6 @@ "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -16600,7 +16632,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -16867,7 +16898,6 @@ "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, "dependencies": { "globalyzer": "0.1.0", "globrex": "^0.1.2" @@ -16939,7 +16969,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/ts-auto-mock/-/ts-auto-mock-3.6.2.tgz", "integrity": "sha512-ApHKLw1TlYd7SjS2k99yb0ZwIshwznSgIyRkw4IA9/OeHK1sXorOpApG+a7UTq1aVVDlzTTRTibqPH8gS6AOcA==", - "dev": true, "dependencies": { "lodash-es": "^4.17.21", "micromatch": "^4.0.5", @@ -16957,7 +16986,6 @@ "version": "10.8.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz", "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==", - "dev": true, "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -17001,7 +17029,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, "peer": true, "engines": { "node": ">=0.4.0" @@ -17078,7 +17105,6 @@ "version": "1.5.13", "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.13.tgz", "integrity": "sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==", - "dev": true, "dependencies": { "resolve": ">=1.9.0" }, @@ -17155,7 +17181,6 @@ "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", - "dev": true, "peer": true, "bin": { "tsc": "bin/tsc", @@ -17208,7 +17233,6 @@ "version": "5.5.1", "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz", "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==", - "dev": true, "engines": { "node": ">=12.18" } @@ -17407,7 +17431,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, "peer": true }, "node_modules/v8-to-istanbul": { @@ -18236,7 +18259,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, "peer": true, "engines": { "node": ">=6" @@ -19598,7 +19620,6 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, "peer": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" @@ -19608,7 +19629,6 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, "peer": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -20335,8 +20355,7 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { "version": "1.1.1", @@ -20347,8 +20366,7 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { "version": "0.3.13", @@ -20409,10 +20427,9 @@ } }, "@mojaloop/api-snippets": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.2.0.tgz", - "integrity": "sha512-g7pnMenw2VOIKPdaql43FyyIEbdhV5cJv0M0cc0kLBX9WlSlRQn2Lkn906VQq8vB+EKUFF0TxfevFqaqZ/6VeQ==", - "dev": true, + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@mojaloop/api-snippets/-/api-snippets-14.2.2.tgz", + "integrity": "sha512-zSkm/fqJXPBI42zXI1mITL5QKbr7wo69fMZvldDbJM/5cMkpWxYKjwOI2zlAPo4j7wiEDv5gPSJP/pzVpzN2KQ==", "requires": { "@apidevtools/json-schema-ref-parser": "^9.0.9", "commander": "^9.4.0", @@ -20428,8 +20445,7 @@ "commander": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", - "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", - "dev": true + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" } } }, @@ -20942,28 +20958,24 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, "peer": true }, "@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, "peer": true }, "@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, "peer": true }, "@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, "peer": true }, "@types/babel__core": { @@ -21293,8 +21305,7 @@ "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" }, "acorn-jsx": { "version": "5.3.2", @@ -21460,7 +21471,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, "peer": true }, "argparse": { @@ -21563,6 +21573,60 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "audit-ci": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/audit-ci/-/audit-ci-6.3.0.tgz", + "integrity": "sha512-rVCn4J7SUMQw2A21E3PPLzMz70A5RqWIx5BzvuU0iKeEGuuC6vGE00eeo4mFEnr439WdvI9i2lCXnmgABqLSeQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "escape-string-regexp": "^4.0.0", + "event-stream": "4.0.1", + "jju": "^1.4.0", + "JSONStream": "^1.3.5", + "readline-transform": "1.0.0", + "semver": "^7.0.0", + "yargs": "^17.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } + } + }, "audit-resolve-core": { "version": "3.0.0-3", "resolved": "https://registry.npmjs.org/audit-resolve-core/-/audit-resolve-core-3.0.0-3.tgz", @@ -22465,8 +22529,7 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "compress-brotli": { "version": "1.3.8", @@ -23043,8 +23106,7 @@ "cookiejar": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" }, "cookies": { "version": "0.8.0", @@ -23088,7 +23150,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, "peer": true }, "cross-spawn": { @@ -23297,7 +23358,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, "peer": true }, "diff-sequences": { @@ -23977,8 +24037,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.4.0", @@ -24411,12 +24470,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -24734,8 +24787,7 @@ "globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" }, "globby": { "version": "11.1.0", @@ -24754,8 +24806,7 @@ "globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" }, "got": { "version": "12.1.0", @@ -24792,7 +24843,6 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dev": true, "requires": { "lodash": "^4.17.15" } @@ -25515,7 +25565,6 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -26780,7 +26829,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/jest-ts-auto-mock/-/jest-ts-auto-mock-2.1.0.tgz", "integrity": "sha512-ubL0pweKUHQNY2xCgwXjYllEQMgpKDojcEODpraQVevHqBFBsFDJZkpZp/2JsmujMu4TNJPzmSugXOLfKndmlQ==", - "dev": true, "requires": {} }, "jest-util": { @@ -27089,7 +27137,6 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", - "dev": true, "requires": { "commander": "~4.1.1", "graphlib": "^2.1.8", @@ -27105,7 +27152,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -27113,14 +27159,12 @@ "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -27489,8 +27533,7 @@ "lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "lodash.camelcase": { "version": "4.3.0", @@ -27611,7 +27654,6 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, "peer": true }, "make-fetch-happen": { @@ -27772,7 +27814,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -27781,8 +27822,7 @@ "mime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" }, "mime-db": { "version": "1.52.0", @@ -27974,8 +28014,7 @@ "native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", - "dev": true + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==" }, "natural-compare": { "version": "1.4.0", @@ -28860,7 +28899,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", - "dev": true, "requires": { "js-yaml": "^4.1.0", "mime": "^3.0.0", @@ -28873,8 +28911,7 @@ "yargs-parser": { "version": "21.0.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" } } }, @@ -29100,7 +29137,6 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", - "dev": true, "requires": { "native-promise-only": "^0.8.1", "superagent": "^7.1.6" @@ -29109,8 +29145,7 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "0.1.7", @@ -29238,8 +29273,7 @@ "prettier": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" }, "pretty-format": { "version": "28.1.3", @@ -29699,6 +29733,12 @@ "picomatch": "^2.2.1" } }, + "readline-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/readline-transform/-/readline-transform-1.0.0.tgz", + "integrity": "sha512-7KA6+N9IGat52d83dvxnApAWN+MtVb1MiVuMR/cf1O4kYsJG+g/Aav0AHcHKsb6StinayfPLne0+fMX2sOzAKg==", + "dev": true + }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -29864,7 +29904,6 @@ "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, "requires": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -30356,8 +30395,7 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "smart-buffer": { "version": "4.2.0", @@ -30728,7 +30766,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", - "dev": true, "requires": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.3", @@ -30746,14 +30783,12 @@ "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -30844,8 +30879,7 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "swagger-cli": { "version": "4.0.4", @@ -31054,7 +31088,6 @@ "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, "requires": { "globalyzer": "0.1.0", "globrex": "^0.1.2" @@ -31114,7 +31147,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/ts-auto-mock/-/ts-auto-mock-3.6.2.tgz", "integrity": "sha512-ApHKLw1TlYd7SjS2k99yb0ZwIshwznSgIyRkw4IA9/OeHK1sXorOpApG+a7UTq1aVVDlzTTRTibqPH8gS6AOcA==", - "dev": true, "requires": { "lodash-es": "^4.17.21", "micromatch": "^4.0.5", @@ -31125,7 +31157,6 @@ "version": "10.8.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz", "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==", - "dev": true, "peer": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", @@ -31147,7 +31178,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, "peer": true } } @@ -31212,7 +31242,6 @@ "version": "1.5.13", "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.13.tgz", "integrity": "sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==", - "dev": true, "requires": { "resolve": ">=1.9.0" } @@ -31266,7 +31295,6 @@ "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", - "dev": true, "peer": true }, "uc.micro": { @@ -31302,8 +31330,7 @@ "undici": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz", - "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==", - "dev": true + "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -31456,7 +31483,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, "peer": true }, "v8-to-istanbul": { @@ -32080,7 +32106,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, "peer": true }, "yocto-queue": { diff --git a/package.json b/package.json index 08fd13091..5f12f39cc 100644 --- a/package.json +++ b/package.json @@ -12,21 +12,17 @@ }, "scripts": { "start": "node src/index.js", - "audit:resolve": "npx resolve-audit --production", - "audit:check": "npx check-audit --production", - "build": "npm run build:openapi; npm run build:dto:outbound", - "build:openapi": "npm run build:openapi:inbound && npm run build:openapi:outbound", + "audit:check": "npx audit-ci --config ./audit-ci.jsonc", + "build": "npm run build:openapi", + "build:openapi": "npm run build:openapi:inbound", "build:openapi:inbound": "openapi bundle --output ./src/InboundServer/api.yaml --ext yaml ./src/InboundServer/api_template.yaml", - "build:openapi:outbound": "openapi bundle --output ./src/OutboundServer/api.yaml --ext yaml ./src/OutboundServer/api_template/openapi.yaml", - "build:dto:outbound": "openapi-typescript ./src/OutboundServer/api.yaml --output ./src/OutboundServer/api_interfaces/openapi.d.ts", "lint": "eslint ./src/", "lint:fix": "eslint ./src/ --fix", "test": "npm run test:unit", "test:unit": "jest --runInBand --ci --reporters=default --reporters=jest-junit --env=node test/unit/", "test:int": "jest --ci --reporters=default --reporters=jest-junit --env=node test/integration", - "validate:api": "npm run validate:api:in; npm run validate:api:out", + "validate:api": "npm run validate:api:in", "validate:api:in": "swagger-cli validate ./src/InboundServer/api.yaml", - "validate:api:out": "swagger-cli validate ./src/OutboundServer/api.yaml", "updates:check": "npm run dep:check", "updates:update": "npm run dep:update && npm install", "dep:check": "npx ncu -e 2", @@ -58,6 +54,7 @@ }, "dependencies": { "@koa/cors": "^3.3.0", + "@mojaloop/api-snippets": "^14.2.2", "@mojaloop/central-services-shared": "17.0.2", "@mojaloop/sdk-standard-components": "^17.1.1", "ajv": "8.11.0", @@ -86,9 +83,9 @@ "devDependencies": { "@babel/core": "^7.18.9", "@babel/preset-env": "^7.18.9", - "@mojaloop/api-snippets": "^14.2.0", "@redocly/openapi-cli": "^1.0.0-beta.94", "@types/jest": "^28.1.6", + "audit-ci": "^6.3.0", "babel-jest": "^28.1.3", "eslint": "^8.20.0", "eslint-config-airbnb-base": "^15.0.0", diff --git a/src/InboundServer/api.yaml b/src/InboundServer/api.yaml index 69ee514a4..37f3a4f0b 100644 --- a/src/InboundServer/api.yaml +++ b/src/InboundServer/api.yaml @@ -8,7 +8,7 @@ info: license: name: Open API for FSP Interoperability (FSPIOP) paths: - '/participants/{ID}/error': + /participants/{ID}/error: put: description: >- If there is an error during FSP information creation in the server, the @@ -57,7 +57,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/participants/{ID}': + /participants/{ID}: put: description: >- The callback `PUT /participants/{ID}` is used to inform the client of @@ -104,7 +104,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/participants/{Type}/{ID}/error': + /participants/{Type}/{ID}/error: put: description: >- If the server is unable to find, create or delete the associated FSP of @@ -154,7 +154,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/participants/{Type}/{ID}/{SubId}/error': + /participants/{Type}/{ID}/{SubId}/error: put: description: >- If the server is unable to find, create or delete the associated FSP of @@ -205,7 +205,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/participants/{Type}/{ID}/{SubId}': + /participants/{Type}/{ID}/{SubId}: parameters: - $ref: '#/components/parameters/Type' - $ref: '#/components/parameters/ID' @@ -375,7 +375,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/participants/{Type}/{ID}': + /participants/{Type}/{ID}: parameters: - $ref: '#/components/parameters/Type' - $ref: '#/components/parameters/ID' @@ -594,7 +594,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/parties/{Type}/{ID}': + /parties/{Type}/{ID}: parameters: - $ref: '#/components/parameters/Type' - $ref: '#/components/parameters/ID' @@ -676,7 +676,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/parties/{Type}/{ID}/error': + /parties/{Type}/{ID}/error: put: description: >- If the server is unable to find Party information of the provided @@ -726,7 +726,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/parties/{Type}/{ID}/{SubId}': + /parties/{Type}/{ID}/{SubId}: parameters: - $ref: '#/components/parameters/Type' - $ref: '#/components/parameters/ID' @@ -809,7 +809,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/parties/{Type}/{ID}/{SubId}/error': + /parties/{Type}/{ID}/{SubId}/error: put: description: >- If the server is unable to find Party information of the provided @@ -860,7 +860,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/transactionRequests/{ID}/error': + /transactionRequests/{ID}/error: put: description: >- If the server is unable to find or create a transaction request, or @@ -911,7 +911,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/transactionRequests/{ID}': + /transactionRequests/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1041,7 +1041,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/quotes/{ID}/error': + /quotes/{ID}/error: put: description: >- If the server is unable to find or create a quote, or some other @@ -1091,7 +1091,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/quotes/{ID}': + /quotes/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1218,7 +1218,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/authorizations/{ID}': + /authorizations/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1331,7 +1331,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/authorizations/{ID}/error': + /authorizations/{ID}/error: put: description: >- If the server is unable to find the transaction request, or another @@ -1380,7 +1380,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/transfers/{ID}/error': + /transfers/{ID}/error: put: description: >- If the server is unable to find or create a transfer, or another @@ -1430,7 +1430,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/transfers/{ID}': + /transfers/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1599,7 +1599,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/transactions/{ID}': + /transactions/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1680,7 +1680,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/transactions/{ID}/error': + /transactions/{ID}/error: put: description: >- If the server is unable to find or create a transaction, or another @@ -1729,7 +1729,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/bulkQuotes/{ID}/error': + /bulkQuotes/{ID}/error: put: description: >- If the server is unable to find or create a bulk quote, or another @@ -1779,7 +1779,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/bulkQuotes/{ID}': + /bulkQuotes/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1860,7 +1860,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/bulkTransfers/{ID}': + /bulkTransfers/{ID}: parameters: - $ref: '#/components/parameters/ID' - $ref: '#/components/parameters/Content-Type' @@ -1989,7 +1989,7 @@ paths: $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' - '/bulkTransfers/{ID}/error': + /bulkTransfers/{ID}/error: put: description: >- If the server is unable to find or create a bulk transfer, or another @@ -2169,7 +2169,7 @@ components: required: true schema: type: string - description: 'The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`.' + description: The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. SubId: name: SubId in: path @@ -2192,7 +2192,7 @@ components: ErrorCode: title: ErrorCode type: string - pattern: '^[1-9]\d{3}$' + pattern: ^[1-9]\d{3}$ description: >- The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading @@ -2568,7 +2568,7 @@ components: ParticipantsIDPutResponse: title: ParticipantsIDPutResponse type: object - description: 'The object sent in the PUT /participants/{ID} callback.' + description: The object sent in the PUT /participants/{ID} callback. properties: partyList: type: array @@ -2645,7 +2645,7 @@ components: MerchantClassificationCode: title: MerchantClassificationCode type: string - pattern: '^[\d]{1,4}$' + pattern: ^[\d]{1,4}$ description: >- A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, @@ -2731,7 +2731,7 @@ components: PartiesTypeIDPutResponse: title: PartiesTypeIDPutResponse type: object - description: 'The object sent in the PUT /parties/{Type}/{ID} callback.' + description: The object sent in the PUT /parties/{Type}/{ID} callback. properties: party: $ref: '#/components/schemas/Party' @@ -2755,7 +2755,7 @@ components: TransactionRequestsIDPutResponse: title: TransactionRequestsIDPutResponse type: object - description: 'The object sent in the PUT /transactionRequests/{ID} callback.' + description: The object sent in the PUT /transactionRequests/{ID} callback. properties: transactionId: $ref: '#/components/schemas/CorrelationId' @@ -2768,7 +2768,7 @@ components: Amount: title: Amount type: string - pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$' + pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$ description: >- The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This @@ -2825,7 +2825,7 @@ components: TransactionSubScenario: title: TransactionSubScenario type: string - pattern: '^[A-Z_]{1,32}$' + pattern: ^[A-Z_]{1,32}$ description: >- Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type). @@ -2884,7 +2884,7 @@ components: BalanceOfPayments: title: BalanceOfPayments type: string - pattern: '^[1-9]\d{2}$' + pattern: ^[1-9]\d{2}$ description: >- (BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String @@ -3013,7 +3013,7 @@ components: IlpPacket: title: IlpPacket type: string - pattern: '^[A-Za-z0-9-_]+[=]{0,2}$' + pattern: ^[A-Za-z0-9-_]+[=]{0,2}$ minLength: 1 maxLength: 32768 description: Information for recipient (transport layer information). @@ -3022,13 +3022,13 @@ components: IlpCondition: title: IlpCondition type: string - pattern: '^[A-Za-z0-9-_]{43}$' + pattern: ^[A-Za-z0-9-_]{43}$ maxLength: 48 description: Condition that must be attached to the transfer by the Payer. QuotesIDPutResponse: title: QuotesIDPutResponse type: object - description: 'The object sent in the PUT /quotes/{ID} callback.' + description: The object sent in the PUT /quotes/{ID} callback. properties: transferAmount: $ref: '#/components/schemas/Money' @@ -3110,7 +3110,7 @@ components: OtpValue: title: OtpValue type: string - pattern: '^\d{3,10}$' + pattern: ^\d{3,10}$ description: >- The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more @@ -3124,7 +3124,7 @@ components: U2FPIN: title: U2FPIN type: string - pattern: '^\S{1,64}$' + pattern: ^\S{1,64}$ minLength: 1 maxLength: 64 description: > @@ -3133,7 +3133,7 @@ components: Integer: title: Integer type: string - pattern: '^[1-9]\d*$' + pattern: ^[1-9]\d*$ description: >- The API data type Integer is a JSON String consisting of digits only. Negative numbers and leading zeroes are not allowed. The data type is @@ -3164,7 +3164,7 @@ components: - $ref: '#/components/schemas/OtpValue' - $ref: '#/components/schemas/QRCODE' - $ref: '#/components/schemas/U2FPinValue' - pattern: '^\d{3,10}$|^\S{1,64}$' + pattern: ^\d{3,10}$|^\S{1,64}$ description: >- Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type. @@ -3196,7 +3196,7 @@ components: AuthorizationsIDPutResponse: title: AuthorizationsIDPutResponse type: object - description: 'The object sent in the PUT /authorizations/{ID} callback.' + description: The object sent in the PUT /authorizations/{ID} callback. properties: authenticationInfo: $ref: '#/components/schemas/AuthenticationInfo' @@ -3207,7 +3207,7 @@ components: IlpFulfilment: title: IlpFulfilment type: string - pattern: '^[A-Za-z0-9-_]{43}$' + pattern: ^[A-Za-z0-9-_]{43}$ maxLength: 48 description: Fulfilment that must be attached to the transfer by the Payee. example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8 @@ -3234,7 +3234,7 @@ components: TransfersIDPutResponse: title: TransfersIDPutResponse type: object - description: 'The object sent in the PUT /transfers/{ID} callback.' + description: The object sent in the PUT /transfers/{ID} callback. properties: fulfilment: $ref: '#/components/schemas/IlpFulfilment' @@ -3249,7 +3249,7 @@ components: TransfersIDPatchResponse: title: TransfersIDPatchResponse type: object - description: 'PATCH /transfers/{ID} object' + description: PATCH /transfers/{ID} object properties: completedTimestamp: $ref: '#/components/schemas/DateTime' @@ -3307,13 +3307,13 @@ components: Code: title: Code type: string - pattern: '^[0-9a-zA-Z]{4,32}$' + pattern: ^[0-9a-zA-Z]{4,32}$ description: Any code/token returned by the Payee FSP (TokenCode Type). example: Test-Code TransactionsIDPutResponse: title: TransactionsIDPutResponse type: object - description: 'The object sent in the PUT /transactions/{ID} callback.' + description: The object sent in the PUT /transactions/{ID} callback. properties: completedTimestamp: $ref: '#/components/schemas/DateTime' @@ -3355,7 +3355,7 @@ components: BulkQuotesIDPutResponse: title: BulkQuotesIDPutResponse type: object - description: 'The object sent in the PUT /bulkQuotes/{ID} callback.' + description: The object sent in the PUT /bulkQuotes/{ID} callback. properties: individualQuoteResults: type: array @@ -3415,7 +3415,7 @@ components: BulkTransfersIDPutResponse: title: BulkTransfersIDPutResponse type: object - description: 'The object sent in the PUT /bulkTransfers/{ID} callback.' + description: The object sent in the PUT /bulkTransfers/{ID} callback. properties: completedTimestamp: $ref: '#/components/schemas/DateTime' diff --git a/src/OutboundServer/api.yaml b/src/OutboundServer/api.yaml deleted file mode 100644 index 18974e920..000000000 --- a/src/OutboundServer/api.yaml +++ /dev/null @@ -1,2884 +0,0 @@ -openapi: 3.0.1 -info: - title: Mojaloop SDK Outbound Scheme Adapter API - description: > - Specification for the Mojaloop SDK Scheme Adapter Outbound Transfers API - - - This API can be used by DFSP backends to simplify the process of sending - funds to other parties within a Mojaloop scheme. - - - Please see other documentation on - https://github.com/mojaloop/sdk-scheme-adapter for more information. - - - **Note on terminology:** The term "Switch" is equal to the term "Hub", and - the term "FSP" is equal to the term "DFSP". - license: - name: 'Apache License Version 2.0, January 2004' - url: 'https://github.com/mojaloop/documentation/blob/master/LICENSE.md' - version: 2.0.0 -paths: - /: - get: - summary: Health check endpoint - description: >- - This endpoint allows a user of the SDK scheme adapter to check the - outbound transfers service is listening. - tags: - - Health - responses: - '200': - description: >- - Returns empty body if the scheme adapter outbound transfers service - is running. - /transfers: - post: - summary: Sends money from one account to another - description: > - The HTTP request `POST /transfers` is used to request the movement of - funds from payer DFSP to payee DFSP. - - The underlying Mojaloop API has three stages for money transfer: - - 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. - 2. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. - 3. Transfer. The enactment of the previously agreed "contract" - - This method has several modes of operation. - - - If the configuration variables `AUTO_ACCEPT_PARTIES` is set to - `"false"` this method will terminate when the payee party has been - resolved and return the payee party details. - If the payee wishes to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the payee party) is required to continue the operation. - The scheme adapter will then proceed with quotation stage... - - - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` - this method will terminate and return the quotation when it has been - received from the payee DFSP. - If the payee wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - The scheme adapter will then proceed with the transfer state. - - If the configuration variables `AUTO_ACCEPT_PARTIES` and - `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block - until all three transfer stages are complete. Upon completion it will - return the entire set of transfer details received during the operation. - - - Combinations of settings for `AUTO_ACCEPT...` configuration variables - allow the scheme adapter user to decide which mode of operation best - suits their use cases. i.e. the scheme adapter can be configured to - "break" the three stage transfer at these points in order to execute - backend logic such as party verification, quoted fees assessments etc... - tags: - - Transfers - requestBody: - description: Transfer request body - content: - application/json: - schema: - $ref: '#/components/schemas/transferRequest' - required: true - responses: - '200': - $ref: '#/components/responses/transferSuccess' - '400': - $ref: '#/components/responses/transferBadRequest' - '500': - $ref: '#/components/responses/transferServerError' - '504': - $ref: '#/components/responses/transferTimeout' - '/transfers/{transferId}': - put: - summary: >- - Continues a transfer that has paused at the quote stage in order to - accept or reject payee party and/or quote - description: > - The HTTP request `PUT /transfers/{transferId}` is used to continue a - transfer initiated via the `POST /transfers` method that has halted - after party lookup and/or quotation stage. - - - The request body should contain either the "acceptParty" or - "acceptQuote" property set to `true` as required to continue the - transfer. - - - See the description of the `POST /transfers` HTTP method for more - information on modes of transfer. - tags: - - Transfers - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/transferContinuationAcceptParty' - - $ref: '#/components/schemas/transferContinuationAcceptQuote' - parameters: - - $ref: '#/components/parameters/transferId' - responses: - '200': - $ref: '#/components/responses/transferSuccess' - '500': - $ref: '#/components/responses/transferServerError' - '504': - $ref: '#/components/responses/transferTimeout' - get: - summary: Retrieves information for a specific transfer - description: >- - The HTTP request `GET /transfers/{transferId}` is used to get - information regarding a transfer created or requested earlier. The - `{transferId}` in the URI should contain the `transferId` that was used - for the creation of the transfer. - tags: - - Transfers - parameters: - - $ref: '#/components/parameters/transferId' - responses: - '200': - description: Transfer information successfully retrieved - content: - application/json: - schema: - $ref: '#/components/schemas/transferStatusResponse' - '500': - description: An error occurred processing the transfer - content: - application/json: - schema: - $ref: '#/components/schemas/errorResponse' - /bulkTransfers: - post: - summary: Sends money from one account to multiple accounts - description: > - The HTTP request `POST /bulkTransfers` is used to request the movement - of funds from payer DFSP to payees' DFSP. - tags: - - BulkTransfers - requestBody: - description: Bulk transfer request body - content: - application/json: - schema: - $ref: '#/components/schemas/bulkTransferRequest' - required: true - responses: - '202': - $ref: '#/components/responses/bulkTransferAccepted' - '400': - $ref: '#/components/responses/bulkTransferBadRequest' - '500': - $ref: '#/components/schemas/errorResponse' - '/bulkTransfers/{bulkTransferId}': - put: - summary: Amends the bulk transfer request - description: >- - The HTTP request `PUT /bulkTransfers/{bulkTransferId}` is used to amend - information regarding a bulk transfer, i.e. when autoAcceptParty or autoAcceptQuote - is false then the payer need to provide confirmation to proceed with further processing - of the request. The `{bulkTransferId}` in the URI should contain the `bulkTransferId` that - was used for the creation of the bulk transfer. - tags: - - BulkTransfers - parameters: - - $ref: '#/components/parameters/bulkTransferId' - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/bulkTransferContinuationAcceptParty' - - $ref: '#/components/schemas/bulkTransferContinuationAcceptQuote' - responses: - '202': - description: Bulk transfer information successfully amended - '400': - $ref: '#/components/responses/bulkTransferPutBadRequest' - '500': - description: An error occurred processing the bulk transfer - content: - application/json: - schema: - $ref: '#/components/schemas/errorResponse' - /bulkQuotes: - post: - summary: Request bulk quotes for the provided financial transactions - description: > - The HTTP request `POST /bulkQuotes` is used to request a bulk quote to - fascilitate funds transfer from payer DFSP to payees' DFSP. - tags: - - BulkQuotes - requestBody: - description: Bulk quote request body - content: - application/json: - schema: - $ref: '#/components/schemas/bulkQuoteRequest' - required: true - responses: - '200': - $ref: '#/components/responses/bulkQuoteSuccess' - '400': - $ref: '#/components/responses/bulkQuoteBadRequest' - '500': - $ref: '#/components/responses/bulkQuoteServerError' - '504': - $ref: '#/components/responses/bulkQuoteTimeout' - '/bulkQuotes/{bulkQuoteId}': - get: - summary: Retrieves information for a specific bulk quote - description: >- - The HTTP request `GET /bulkQuotes/{bulktQuoteId}` is used to get - information regarding a bulk quote created or requested earlier. The - `{bulkQuoteId}` in the URI should contain the `bulkQuoteId` that was - used for the creation of the bulk quote. - tags: - - BulkQuotes - parameters: - - $ref: '#/components/parameters/bulkQuoteId' - responses: - '200': - description: Bulk quote information successfully retrieved - content: - application/json: - schema: - $ref: '#/components/schemas/bulkQuoteStatusResponse' - '500': - description: An error occurred processing the bulk quote - content: - application/json: - schema: - $ref: '#/components/schemas/errorResponse' - /requestToPay: - post: - summary: Receiver requesting funds from Sender - description: > - The HTTP request `POST /requestToPay` is used to support Pull Funds - pattern where in a receiver can request for funds from the Sender. - - The underlying API has two stages: - - 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. - 2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee. - tags: - - RequestToPay - requestBody: - description: RequestToPay request body - content: - application/json: - schema: - $ref: '#/components/schemas/requestToPayRequest' - required: true - responses: - '200': - $ref: '#/components/responses/requestToPaySuccess' - /requestToPayTransfer: - post: - summary: >- - Used to trigger funds from customer fsp account to merchant fsp account. - This is a follow-up request to requestToPay. - description: > - The HTTP request `POST /requestToPayTransfer` is used to request the - movement of funds from payer DFSP to payee DFSP. - - The underlying Mojaloop API has three stages for money transfer: - - 1. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. - 2. Authorization. This facilitates getting OTP from payee DFSP. - 3. Transfer. The enactment of the previously agreed "contract" - - This method has several modes of operation. - - - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` - this method will terminate and return the quotation when it has been - received from the payee DFSP. - If the payee wished to proceed with the otp, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - The scheme adapter will then proceed with the transfer state. - - - If the configuration variable `AUTO_ACCEPT_OTP` is set to `"false"` - this method will terminate and return the otp when it has been received - from the payee DFSP. - If the payer wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - The scheme adapter will then proceed with the transfer state. - - If the configuration variables `AUTO_ACCEPT_PARTIES` and - `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block - until all three transfer stages are complete. Upon completion it will - return the entire set of transfer details received during the operation. - - - Combinations of settings for `AUTO_ACCEPT...` configuration variables - allow the scheme adapter user to decide which mode of operation best - suits their use cases. i.e. the scheme adapter can be configured to - "break" the three stage transfer at these points in order to execute - backend logic such as party verification, quoted fees assessments etc... - tags: - - RequestToPayTransfer - requestBody: - description: Request To Pay Transfer request body - content: - application/json: - schema: - $ref: '#/components/schemas/requestToPayTransferRequest' - required: true - responses: - '200': - $ref: '#/components/responses/requestToPayTransferSuccess' - '400': - $ref: '#/components/responses/requestToPayTransferBadRequest' - '500': - $ref: '#/components/responses/transferServerError' - '504': - $ref: '#/components/responses/transferTimeout' - '/requestToPayTransfer/{requestToPayTransactionId}': - put: - summary: >- - Continues a transfer that has paused at the otp stage in order to accept - or reject quote - description: > - The HTTP request `PUT /transfers/{transferId}` is used to continue a - transfer initiated via the `POST /transfers` method that has halted - after party lookup and/or quotation stage. - - - The request body should contain either the "acceptOTP" or "acceptQuote" - property set to `true` as required to continue the transfer. - - - See the description of the `POST /requestToPayTransfer` HTTP method for - more information on modes of transfer. - tags: - - RequestToPayTransferID - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/transferContinuationAcceptQuote' - - $ref: '#/components/schemas/transferContinuationAcceptOTP' - parameters: - - $ref: '#/components/parameters/requestToPayTransactionId' - responses: - '200': - $ref: '#/components/responses/transferSuccess' - '500': - $ref: '#/components/responses/transferServerError' - '504': - $ref: '#/components/responses/transferTimeout' - /accounts: - post: - summary: Create accounts on the Account Lookup Service - description: >- - The HTTP request `POST /accounts` is used to create account information - on the Account Lookup Service (ALS) regarding the provided list of - identities. - - - Caller DFSP is used as the account source FSP information - tags: - - Accounts - requestBody: - description: Identities list request body - content: - application/json: - schema: - $ref: '#/components/schemas/accountsRequest' - required: true - responses: - '200': - $ref: '#/components/responses/accountsCreationCompleted' - '400': - $ref: '#/components/responses/accountsCreationError' - '500': - $ref: '#/components/responses/accountsCreationError' - '504': - $ref: '#/components/responses/accountsCreationTimeout' - '/parties/{Type}/{ID}': - parameters: - - $ref: '#/components/parameters/Type' - - $ref: '#/components/parameters/ID' - get: - description: >- - The HTTP request GET /parties// (or GET /parties///) is used to lookup - information regarding the requested Party, defined by , and optionally - (for example, GET /parties/MSISDN/123456789, or GET - /parties/BUSINESS/shoecompany/employee1). - summary: PartiesByTypeAndID - tags: - - parties - operationId: PartiesByTypeAndID - responses: - '200': - $ref: '#/components/responses/partiesByIdSuccess' - '404': - $ref: '#/components/responses/partiesByIdError404' - '/parties/{Type}/{ID}/{SubId}': - parameters: - - $ref: '#/components/parameters/Type' - - $ref: '#/components/parameters/ID' - - $ref: '#/components/parameters/SubId' - get: - description: >- - The HTTP request GET /parties// (or GET /parties///) is used to lookup - information regarding the requested Party, defined by , and optionally - (for example, GET /parties/MSISDN/123456789, or GET - /parties/BUSINESS/shoecompany/employee1). - summary: PartiesSubIdByTypeAndID - tags: - - parties - operationId: PartiesSubIdByTypeAndID - responses: - '200': - $ref: '#/components/responses/partiesByIdSuccess' - '404': - $ref: '#/components/responses/partiesByIdError404' - /quotes: - post: - summary: Quotes endpoint - description: is used to request quotes from other DFSP - tags: - - quotes - operationId: QuotesPost - requestBody: - description: Quotes request payload - content: - application/json: - schema: - $ref: '#/components/schemas/quotesPostRequest' - required: true - responses: - '200': - $ref: '#/components/responses/quotesPostSuccess' - '500': - $ref: '#/components/responses/quotesServerError' - /simpleTransfers: - post: - summary: Simple Transfers endpoint - description: is used to request a transfer - tags: - - transfers - operationId: SimpleTransfersPost - requestBody: - description: Simple Transfer request payload - content: - application/json: - schema: - $ref: '#/components/schemas/simpleTransfersPostRequest' - required: true - responses: - '200': - $ref: '#/components/responses/simpleTransfersPostSuccess' - '500': - $ref: '#/components/responses/simpleTransfersServerError' -components: - schemas: - autoAcceptPartyOption: - type: object - required: - - enabled - properties: - enabled: - type: boolean - enum: - - false - - true - autoAcceptQuote: - type: object - required: - - enabled - properties: - enabled: - type: boolean - enum: - - true - - false - perTransferFeeLimits: - type: array - minItems: 0 - items: - $ref: '#/components/schemas/bulkPerTransferFeeLimit' - TransactionInitiatorType: - title: TransactionInitiatorType - type: string - enum: - - CONSUMER - - AGENT - - BUSINESS - - DEVICE - description: |- - Below are the allowed values for the enumeration. - - CONSUMER - Consumer is the initiator of the transaction. - - AGENT - Agent is the initiator of the transaction. - - BUSINESS - Business is the initiator of the transaction. - - DEVICE - Device is the initiator of the transaction. - example: CONSUMER - PartyIdType: - title: PartyIdType - type: string - enum: - - MSISDN - - EMAIL - - PERSONAL_ID - - BUSINESS - - DEVICE - - ACCOUNT_ID - - IBAN - - ALIAS - - CONSENT - - THIRD_PARTY_LINK - description: > - Below are the allowed values for the enumeration. - - - MSISDN - An MSISDN (Mobile Station International Subscriber Directory - - Number, that is, the phone number) is used as reference to a - participant. - - The MSISDN identifier should be in international format according to the - - [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). - - Optionally, the MSISDN may be prefixed by a single plus sign, indicating - the - - international prefix. - - - EMAIL - An email is used as reference to a - - participant. The format of the email should be according to the - informational - - [RFC 3696](https://tools.ietf.org/html/rfc3696). - - - PERSONAL_ID - A personal identifier is used as reference to a - participant. - - Examples of personal identification are passport number, birth - certificate - - number, and national registration number. The identifier number is added - in - - the PartyIdentifier element. The personal identifier type is added in - the - - PartySubIdOrType element. - - - BUSINESS - A specific Business (for example, an organization or a - company) - - is used as reference to a participant. The BUSINESS identifier can be in - any - - format. To make a transaction connected to a specific username or bill - number - - in a Business, the PartySubIdOrType element should be used. - - - DEVICE - A specific device (for example, a POS or ATM) ID connected to - a - - specific business or organization is used as reference to a Party. - - For referencing a specific device under a specific business or - organization, - - use the PartySubIdOrType element. - - - ACCOUNT_ID - A bank account number or FSP account ID should be used as - - reference to a participant. The ACCOUNT_ID identifier can be in any - format, - - as formats can greatly differ depending on country and FSP. - - - IBAN - A bank account number or FSP account ID is used as reference to - a - - participant. The IBAN identifier can consist of up to 34 alphanumeric - - characters and should be entered without whitespace. - - - ALIAS An alias is used as reference to a participant. The alias should - be - - created in the FSP as an alternative reference to an account owner. - - Another example of an alias is a username in the FSP system. - - The ALIAS identifier can be in any format. It is also possible to use - the - - PartySubIdOrType element for identifying an account under an Alias - defined - - by the PartyIdentifier. - - - CONSENT - A Consent represents an agreement between a PISP, a Customer - and - - a DFSP which allows the PISP permission to perform actions on behalf of - the - - customer. A Consent has an authoritative source: either the DFSP who - issued - - the Consent, or an Auth Service which administers the Consent. - - - THIRD_PARTY_LINK - A Third Party Link represents an agreement between - a PISP, - - a DFSP, and a specific Customer's account at the DFSP. The content of - the link - - is created by the DFSP at the time when it gives permission to the PISP - for - - specific access to a given account. - example: PERSONAL_ID - PartyIdentifier: - title: PartyIdentifier - type: string - minLength: 1 - maxLength: 128 - description: Identifier of the Party. - example: '16135551212' - PartySubIdOrType: - title: PartySubIdOrType - type: string - minLength: 1 - maxLength: 128 - description: >- - Either a sub-identifier of a PartyIdentifier, or a sub-type of the - PartyIdType, normally a PersonalIdentifierType. - Name: - title: Name - type: string - pattern: '^(?!\s*$)[\w .,''-]{1,128}$' - description: >- - The API data type Name is a JSON String, restricted by a regular - expression to avoid characters which are generally not used in a name. - - - Regular Expression - The regular expression for restricting the Name - type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a - string consisting of whitespace only, all Unicode characters are - allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) - and space characters ( ). - - - **Note:** In some programming languages, Unicode support must be - specifically enabled. For example, if Java is used, the flag - UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters. - FirstName: - title: FirstName - type: string - minLength: 1 - maxLength: 128 - pattern: >- - ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} - .,''-]{1,128}$ - description: First name of the Party (Name Type). - example: Henrik - MiddleName: - title: MiddleName - type: string - minLength: 1 - maxLength: 128 - pattern: >- - ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} - .,''-]{1,128}$ - description: Middle name of the Party (Name Type). - example: Johannes - LastName: - title: LastName - type: string - minLength: 1 - maxLength: 128 - pattern: >- - ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} - .,''-]{1,128}$ - description: Last name of the Party (Name Type). - example: Karlsson - DateOfBirth: - title: DateofBirth (type Date) - type: string - pattern: >- - ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ - description: Date of Birth of the Party. - example: '1966-06-16' - MerchantClassificationCode: - title: MerchantClassificationCode - type: string - pattern: '^[\d]{1,4}$' - description: >- - A limited set of pre-defined numbers. This list would be a limited set - of numbers identifying a set of popular merchant types like School Fees, - Pubs and Restaurants, Groceries, etc. - FspId: - title: FspId - type: string - minLength: 1 - maxLength: 32 - description: FSP identifier. - ExtensionKey: - title: ExtensionKey - type: string - minLength: 1 - maxLength: 32 - description: Extension key. - ExtensionValue: - title: ExtensionValue - type: string - minLength: 1 - maxLength: 128 - description: Extension value. - Extension: - title: Extension - type: object - description: Data model for the complex type Extension. - properties: - key: - $ref: '#/components/schemas/ExtensionKey' - value: - $ref: '#/components/schemas/ExtensionValue' - required: - - key - - value - extensionListEmptiable: - type: array - items: - $ref: '#/components/schemas/Extension' - minItems: 0 - maxItems: 16 - bulkPartyLookupResponse: - description: >- - The object sent back to the payer for confirmation of payee parties. - It's basically the same object as the original bulk transfer request - with party information is added for all the payees - type: object - required: - - bulkHomeTransactionID - - from - - individualTransfers - properties: - bulkHomeTransactionID: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - options: - $ref: '#/components/schemas/bulkTransferOptions' - from: - $ref: '#/components/schemas/Party' - individualTransfers: - description: List of individual transfers in a bulk transfer. - type: array - minItems: 1 - maxItems: 1000 - items: - allOf: - - $ref: '#/components/schemas/individualTransfer' - - type: object - required: - - transactionId - properties: - transactionId: - $ref: '#/components/schemas/CorrelationId' - - extensions: - $ref: '#/components/schemas/ExtensionList' - lastError: - description: > - Object representing the last error to occur during a party discovery process. - This may be a Mojaloop API error returned from another entity in the - scheme or an object representing other types of error e.g. - exceptions that may occur inside the scheme adapter. - $ref: '#/components/schemas/partyError' - bulkQuoteRequestResponse: - description: >- - The object sent back to the payer for confirmation of quotes. - It's basically the same object as the original bulk transfer request - with quote information added for all the transfers - type: object - required: - - bulkHomeTransactionID - - from - - individualTransfers - properties: - bulkHomeTransactionID: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - options: - $ref: '#/components/schemas/bulkTransferOptions' - from: - $ref: '#/components/schemas/Party' - individualTransfers: - description: List of individual transfers in a bulk transfer. - type: array - minItems: 1 - maxItems: 1000 - items: - allOf: - - $ref: '#/components/schemas/individualTransfer' - - type: object - required: - - transactionId - properties: - transactionId: - $ref: '#/components/schemas/CorrelationId' - - type: object - required: - - quoteResponse - properties: - quoteResponse: - $ref: '#/components/schemas/QuotesIDPutResponse' - extensions: - $ref: '#/components/schemas/ExtensionList' - lastError: - description: > - Object representing the last error to occur during a party discovery process. - This may be a Mojaloop API error returned from another entity in the - scheme or an object representing other types of error e.g. - exceptions that may occur inside the scheme adapter. - $ref: '#/components/schemas/partyError' - - bulkTransferContinuationAcceptParty: - description: >- - The object sent back as confirmation of payee parties when autoAcceptParty is false. - type: object - required: - - bulkHomeTransactionID - - individualTransfers - properties: - bulkHomeTransactionID: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - individualTransfers: - description: List of individual transfers in a bulk transfer with accept party information. - type: array - minItems: 1 - maxItems: 1000 - items: - allOf: - - $ref: '#/components/schemas/individualTransferAccept' - - $ref: '#/components/schemas/transferContinuationAcceptParty' - bulkTransferContinuationAcceptQuote: - description: >- - The object sent back as confirmation of quotes when autoAcceptQuotes is false. - type: object - required: - - bulkHomeTransactionID - - individualTransfers - properties: - bulkHomeTransactionID: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - individualTransfers: - description: List of individual transfers in a bulk transfer. - type: array - minItems: 1 - maxItems: 1000 - items: - allOf: - - $ref: '#/components/schemas/individualTransferAccept' - - $ref: '#/components/schemas/transferContinuationAcceptQuote' - bulkTransferOptions: - type: object - required: - - autoAcceptParty - - autoAcceptQuote - - bulkExpiration - properties: - onlyValidateParty: - description: >- - Set to true if only party validation is required. - This means the quotes and transfers will not run. This is useful - for only party resolution. - type: boolean - autoAcceptParty: - $ref: '#/components/schemas/autoAcceptPartyOption' - autoAcceptQuote: - description: >- - Set to true if the quote response is accepted without confirmation from the payer. - The fees applied by the payee will be acceptable to the payer abiding by the limits - set by optional 'perTransferFeeLimits' array. - type: object - oneOf: - - $ref: '#/components/schemas/autoAcceptQuote' - skipPartyLookup: - description: >- - Set to true if supplying an FSPID for the payee party and no party - resolution is needed. This may be useful if a previous party - resolution has been performed. - type: boolean - synchronous: - description: >- - Set to true if the bulkTransfer requests need be handled synchronous. - Otherwise the requests will be handled asynchronously, meaning there will - be callbacks whenever the processing is done - type: boolean - bulkExpiration: - $ref: '#/components/schemas/DateTime' - bulkPerTransferFeeLimit: - type: object - required: - - currency - - amount - properties: - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transferParty: - type: object - required: - - idType - - idValue - properties: - type: - $ref: '#/components/schemas/TransactionInitiatorType' - idType: - $ref: '#/components/schemas/PartyIdType' - idValue: - $ref: '#/components/schemas/PartyIdentifier' - idSubValue: - $ref: '#/components/schemas/PartySubIdOrType' - displayName: - $ref: '#/components/schemas/Name' - firstName: - $ref: '#/components/schemas/FirstName' - middleName: - $ref: '#/components/schemas/MiddleName' - lastName: - $ref: '#/components/schemas/LastName' - dateOfBirth: - $ref: '#/components/schemas/DateOfBirth' - merchantClassificationCode: - $ref: '#/components/schemas/MerchantClassificationCode' - fspId: - $ref: '#/components/schemas/FspId' - extensionList: - $ref: '#/components/schemas/extensionListEmptiable' - AmountType: - title: AmountType - type: string - enum: - - SEND - - RECEIVE - description: >- - Below are the allowed values for the enumeration AmountType. - - - SEND - Amount the Payer would like to send, that is, the amount that - should be withdrawn from the Payer account including any fees. - - - RECEIVE - Amount the Payer would like the Payee to receive, that is, - the amount that should be sent to the receiver exclusive of any fees. - example: RECEIVE - Currency: - title: Currency - description: >- - The currency codes defined in [ISO - 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter - alphabetic codes are used as the standard naming representation for - currencies. - type: string - minLength: 3 - maxLength: 3 - enum: - - AED - - AFN - - ALL - - AMD - - ANG - - AOA - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XCD - - XDR - - XOF - - XPF - - XTS - - XXX - - YER - - ZAR - - ZMW - - ZWD - Amount: - title: Amount - type: string - pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$' - description: >- - The API data type Amount is a JSON String in a canonical format that is - restricted by a regular expression for interoperability reasons. This - pattern does not allow any trailing zeroes at all, but allows an amount - without a minor currency unit. It also only allows four digits in the - minor currency unit; a negative value is not allowed. Using more than 18 - digits in the major currency unit is not allowed. - example: '123.45' - transactionType: - type: string - enum: - - TRANSFER - description: Type of transaction. - Note: - title: Note - type: string - minLength: 1 - maxLength: 128 - description: Memo assigned to transaction. - example: Note sent to Payee. - transferRequest: - type: object - required: - - homeTransactionId - - from - - to - - amountType - - currency - - amount - - transactionType - properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transactionType: - $ref: '#/components/schemas/transactionType' - note: - $ref: '#/components/schemas/Note' - quoteRequestExtensions: - $ref: '#/components/schemas/extensionListEmptiable' - transferRequestExtensions: - $ref: '#/components/schemas/extensionListEmptiable' - skipPartyLookup: - description: >- - Set to true if supplying an FSPID for the payee party and no party - resolution is needed. This may be useful if a previous party - resolution has been performed. - type: boolean - CorrelationId: - title: CorrelationId - type: string - pattern: >- - ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ - description: >- - Identifier that correlates all messages of the same sequence. The API - data type UUID (Universally Unique Identifier) is a JSON String in - canonical format, conforming to [RFC - 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a - regular expression for interoperability reasons. A UUID is always 36 - characters long, 32 hexadecimal symbols and 4 dashes (‘-‘). - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - transferStatus: - type: string - enum: - - ERROR_OCCURRED - - WAITING_FOR_PARTY_ACCEPTANCE - - WAITING_FOR_QUOTE_ACCEPTANCE - - COMPLETED - Money: - title: Money - type: object - description: Data model for the complex type Money. - properties: - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - required: - - currency - - amount - DateTime: - title: DateTime - type: string - pattern: >- - ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$ - description: >- - The API data type DateTime is a JSON String in a lexical format that is - restricted by a regular expression for interoperability reasons. The - format is according to [ISO - 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed - in a combined date, time and time zone format. A more readable version - of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are - "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z - indicates Zulu time zone, same as UTC). - example: '2016-05-24T08:38:08.699-04:00' - Latitude: - title: Latitude - type: string - pattern: >- - ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$ - description: >- - The API data type Latitude is a JSON String in a lexical format that is - restricted by a regular expression for interoperability reasons. - example: '+45.4215' - Longitude: - title: Longitude - type: string - pattern: >- - ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$ - description: >- - The API data type Longitude is a JSON String in a lexical format that is - restricted by a regular expression for interoperability reasons. - example: '+75.6972' - GeoCode: - title: GeoCode - type: object - description: >- - Data model for the complex type GeoCode. Indicates the geographic - location from where the transaction was initiated. - properties: - latitude: - $ref: '#/components/schemas/Latitude' - longitude: - $ref: '#/components/schemas/Longitude' - required: - - latitude - - longitude - IlpPacket: - title: IlpPacket - type: string - pattern: '^[A-Za-z0-9-_]+[=]{0,2}$' - minLength: 1 - maxLength: 32768 - description: Information for recipient (transport layer information). - example: >- - AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA - IlpCondition: - title: IlpCondition - type: string - pattern: '^[A-Za-z0-9-_]{43}$' - maxLength: 48 - description: Condition that must be attached to the transfer by the Payer. - ExtensionList: - title: ExtensionList - type: object - description: >- - Data model for the complex type ExtensionList. An optional list of - extensions, specific to deployment. - properties: - extension: - type: array - items: - $ref: '#/components/schemas/Extension' - minItems: 1 - maxItems: 16 - description: Number of Extension elements. - required: - - extension - QuotesIDPutResponse: - title: QuotesIDPutResponse - type: object - description: 'The object sent in the PUT /quotes/{ID} callback.' - properties: - transferAmount: - $ref: '#/components/schemas/Money' - payeeReceiveAmount: - $ref: '#/components/schemas/Money' - payeeFspFee: - $ref: '#/components/schemas/Money' - payeeFspCommission: - $ref: '#/components/schemas/Money' - expiration: - $ref: '#/components/schemas/DateTime' - geoCode: - $ref: '#/components/schemas/GeoCode' - ilpPacket: - $ref: '#/components/schemas/IlpPacket' - condition: - $ref: '#/components/schemas/IlpCondition' - extensionList: - $ref: '#/components/schemas/ExtensionList' - required: - - transferAmount - - expiration - - ilpPacket - - condition - IlpFulfilment: - title: IlpFulfilment - type: string - pattern: '^[A-Za-z0-9-_]{43}$' - maxLength: 48 - description: Fulfilment that must be attached to the transfer by the Payee. - example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8 - TransferState: - title: TransferState - type: string - enum: - - RECEIVED - - RESERVED - - COMMITTED - - ABORTED - description: >- - Below are the allowed values for the enumeration. - - - RECEIVED - Next ledger has received the transfer. - - - RESERVED - Next ledger has reserved the transfer. - - - COMMITTED - Next ledger has successfully performed the transfer. - - - ABORTED - Next ledger has aborted the transfer due to a rejection or - failure to perform the transfer. - example: RESERVED - TransfersIDPutResponse: - title: TransfersIDPutResponse - type: object - description: 'The object sent in the PUT /transfers/{ID} callback.' - properties: - fulfilment: - $ref: '#/components/schemas/IlpFulfilment' - completedTimestamp: - $ref: '#/components/schemas/DateTime' - transferState: - $ref: '#/components/schemas/TransferState' - extensionList: - $ref: '#/components/schemas/ExtensionList' - required: - - transferState - ErrorCode: - title: ErrorCode - type: string - pattern: '^[1-9]\d{3}$' - description: >- - The API data type ErrorCode is a JSON String of four characters, - consisting of digits only. Negative numbers are not allowed. A leading - zero is not allowed. Each error code in the API is a four-digit number, - for example, 1234, where the first number (1 in the example) represents - the high-level error category, the second number (2 in the example) - represents the low-level error category, and the last two numbers (34 in - the example) represent the specific error. - example: '5100' - ErrorDescription: - title: ErrorDescription - type: string - minLength: 1 - maxLength: 128 - description: Error description string. - ErrorInformation: - title: ErrorInformation - type: object - description: Data model for the complex type ErrorInformation. - properties: - errorCode: - $ref: '#/components/schemas/ErrorCode' - errorDescription: - $ref: '#/components/schemas/ErrorDescription' - extensionList: - $ref: '#/components/schemas/ExtensionList' - required: - - errorCode - - errorDescription - mojaloopError: - type: object - properties: - errorInformation: - $ref: '#/components/schemas/ErrorInformation' - transferError: - type: object - description: >- - This object represents a Mojaloop API error received at any time during - the transfer process - properties: - httpStatusCode: - type: integer - description: >- - The HTTP status code returned to the caller. This is the same as the - actual HTTP status code returned with the response. - mojaloopError: - description: >- - If a transfer process results in an error callback during the - asynchronous Mojaloop API exchange, this property will contain the - underlying Mojaloop API error object. - $ref: '#/components/schemas/mojaloopError' - validationError: - type: object - description: >- - This object represents an error occurred during the initial validation of individual transfers in bulk - properties: - httpStatusCode: - type: integer - description: >- - The HTTP status code returned to the caller. This is the same as the - actual HTTP status code returned with the response. - mojaloopError: - description: >- - If a transfer process results in an error callback during the - asynchronous Mojaloop API exchange, this property will contain the - underlying Mojaloop API error object. - $ref: '#/components/schemas/mojaloopError' - partyError: - type: object - description: >- - This object represents a Mojaloop API error received at any time during - the party discovery process - properties: - httpStatusCode: - type: integer - description: >- - The HTTP status code returned to the caller. This is the same as the - actual HTTP status code returned with the response. - mojaloopError: - description: >- - If a transfer process results in an error callback during the - asynchronous Mojaloop API exchange, this property will contain the - underlying Mojaloop API error object. - $ref: '#/components/schemas/mojaloopError' - transferResponse: - type: object - required: - - homeTransactionId - - from - - to - - amountType - - currency - - amount - - transactionType - properties: - transferId: - $ref: '#/components/schemas/CorrelationId' - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transactionType: - $ref: '#/components/schemas/transactionType' - note: - $ref: '#/components/schemas/Note' - currentState: - $ref: '#/components/schemas/transferStatus' - quoteId: - $ref: '#/components/schemas/CorrelationId' - getPartiesResponse: - type: object - required: - - body - properties: - body: - type: object - headers: - type: object - quoteResponse: - type: object - required: - - body - properties: - body: - $ref: '#/components/schemas/QuotesIDPutResponse' - headers: - type: object - quoteResponseSource: - type: string - description: > - FSPID of the entity that supplied the quote response. This may not - be the same as the FSPID of the entity which owns the end user - account in the case of a FOREX transfer. i.e. it may be a FOREX - gateway. - fulfil: - type: object - required: - - body - properties: - body: - $ref: '#/components/schemas/TransfersIDPutResponse' - headers: - type: object - lastError: - description: > - Object representing the last error to occur during a transfer - process. This may be a Mojaloop API error returned from another - entity in the scheme or an object representing other types of error - e.g. exceptions that may occur inside the scheme adapter. - $ref: '#/components/schemas/transferError' - skipPartyLookup: - description: >- - Set to true if supplying an FSPID for the payee party and no party - resolution is needed. This may be useful if a previous party - resolution has been performed. - type: boolean - errorResponse: - type: object - properties: - statusCode: - type: string - description: Error code as string. - message: - type: string - description: Error message text. - errorTransferResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - transferState - properties: - transferState: - $ref: '#/components/schemas/transferResponse' - transferStatusResponse: - type: object - required: - - transferId - - currentState - - fulfil - properties: - transferId: - $ref: '#/components/schemas/CorrelationId' - currentState: - $ref: '#/components/schemas/transferStatus' - fulfil: - type: object - required: - - body - properties: - body: - $ref: '#/components/schemas/TransfersIDPutResponse' - headers: - type: object - transferContinuationAcceptParty: - type: object - required: - - acceptParty - properties: - acceptParty: - type: boolean - enum: - - true - transferContinuationAcceptQuote: - type: object - required: - - acceptQuote - properties: - acceptQuote: - type: boolean - enum: - - true - - false - individualTransfer: - title: IndividualTransfer - type: object - description: Data model for the complex type 'individualTransfer'. - properties: - homeTransactionId: - $ref: '#/components/schemas/CorrelationId' - to: - $ref: '#/components/schemas/Party' - reference: - description: Payer Loan reference - type: string - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - # transactionType: - # $ref: '#/components/schemas/transactionType' - # transferValidStatus: - # description: >- - # Set to true when the transfer request is valid - # type: boolean - note: - $ref: '#/components/schemas/Note' - quoteRequestExtensions: - $ref: '#/components/schemas/ExtensionList' - transferRequestExtensions: - $ref: '#/components/schemas/ExtensionList' - lastError: - description: > - Object representing the error occured during initial validation. - $ref: '#/components/schemas/validationError' - required: - - homeTransactionId - - to - - amountType - - currency - - amount - # - transactionType - # - transferValidStatus - individualTransferAccept: - title: IndividualTransfer - type: object - description: Data model for the 'individualTransfer' while accepting party or quote. - properties: - homeTransactionId: - $ref: '#/components/schemas/CorrelationId' - transactionId: - $ref: '#/components/schemas/CorrelationId' - required: - - homeTransactionId - - transactionId - - bulkTransferRequest: - type: object - required: - - bulkHomeTransactionID - - options - - from - - individualTransfers - properties: - bulkHomeTransactionID: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - options: - $ref: '#/components/schemas/bulkTransferOptions' - from: - $ref: '#/components/schemas/Party' - individualTransfers: - description: List of individual transfers in a bulk transfer. - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: '#/components/schemas/individualTransfer' - extensions: - $ref: '#/components/schemas/ExtensionList' - individualTransferResult: - type: object - properties: - transferId: - $ref: '#/components/schemas/CorrelationId' - homeTransactionId: - $ref: '#/components/schemas/CorrelationId' - transactionId: - $ref: '#/components/schemas/CorrelationId' - to: - $ref: '#/components/schemas/Party' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transactionType: - $ref: '#/components/schemas/transactionType' - note: - $ref: '#/components/schemas/Note' - quoteId: - $ref: '#/components/schemas/CorrelationId' - quoteResponse: - $ref: '#/components/schemas/QuotesIDPutResponse' - fulfil: - $ref: '#/components/schemas/TransfersIDPutResponse' - quoteRequestExtensions: - $ref: '#/components/schemas/ExtensionList' - transferRequestExtensions: - $ref: '#/components/schemas/ExtensionList' - lastError: - description: > - Object representing the last error to occur during a transfer - process. This may be a Mojaloop API error returned from another - entity in the scheme or an object representing other types of error - e.g. exceptions that may occur inside the scheme adapter. - $ref: '#/components/schemas/transferError' - bulkTransferResponse: - type: object - required: - - bulkHomeTransactionID - - from - - bulkExpiration - - individualTransferResults - properties: - bulkHomeTransactionID: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - bulkExpiration: - $ref: '#/components/schemas/DateTime' - currentState: - $ref: '#/components/schemas/bulkTransferStatus' - individualTransferResults: - type: array - maxItems: 1000 - items: - $ref: '#/components/schemas/individualTransferResult' - description: List of individual transfer result in a bulk transfer response. - extensions: - $ref: '#/components/schemas/ExtensionList' - bulkAcceptPartyErrorResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - bulkTansferState - properties: - bulkTransferState: - allOf: - - $ref: '#/components/schemas/bulkTransferContinuationAcceptParty' - - $ref: '#/components/schemas/partyError' - bulkAcceptQuoteErrorResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - bulkTansferState - properties: - bulkTransferState: - allOf: - - $ref: '#/components/schemas/bulkTransferContinuationAcceptQuote' - - $ref: '#/components/schemas/quoteError' - bulkTransferErrorResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - bulkTansferState - properties: - bulkTransferState: - $ref: '#/components/schemas/bulkTransferResponse' - bulkTransferStatus: - type: string - enum: - - ERROR_OCCURRED - - WAITING_FOR_PARTY_ACCEPTANCE - - WAITING_FOR_QUOTE_ACCEPTANCE - - COMPLETED - individualTransferFulfilment: - type: object - description: >- - A Mojaloop API transfer fulfilment for individual transfers in a bulk - transfer - properties: - fulfilment: - $ref: '#/components/schemas/IlpFulfilment' - description: > - Fulfilment of the condition specified with the transaction. - Mandatory if transfer has completed successfully. - extensionList: - $ref: '#/components/schemas/ExtensionList' - description: 'Optional extension, specific to deployment.' - bulkTransferStatusResponse: - type: object - required: - - bulkTransferId - - currentState - - fulfils - properties: - bulkTransferId: - $ref: '#/components/schemas/CorrelationId' - currentState: - $ref: '#/components/schemas/bulkTransferStatus' - fulfils: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: '#/components/schemas/individualTransferFulfilment' - individualQuote: - title: IndividualQuote - type: object - description: Data model for the complex type 'individualQuote'. - properties: - quoteId: - $ref: '#/components/schemas/CorrelationId' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transactionType: - $ref: '#/components/schemas/transactionType' - note: - $ref: '#/components/schemas/Note' - extensions: - $ref: '#/components/schemas/ExtensionList' - required: - - quoteId - - to - - amountType - - currency - - transactionType - bulkQuoteRequest: - type: object - required: - - homeTransactionId - - from - - individualQuotes - properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - bulkQuoteId: - $ref: '#/components/schemas/CorrelationId' - from: - $ref: '#/components/schemas/transferParty' - individualQuotes: - description: List of individual quotes in a bulk quote. - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: '#/components/schemas/individualQuote' - extensions: - $ref: '#/components/schemas/ExtensionList' - quoteError: - type: object - description: >- - This object represents a Mojaloop API error received at any time during - the quote process - properties: - httpStatusCode: - type: integer - description: >- - The HTTP status code returned to the caller. This is the same as the - actual HTTP status code returned with the response. - mojaloopError: - description: >- - If a quote process results in an error callback during the - asynchronous Mojaloop API exchange, this property will contain the - underlying Mojaloop API error object. - $ref: '#/components/schemas/mojaloopError' - individualQuoteResult: - type: object - properties: - quoteId: - $ref: '#/components/schemas/CorrelationId' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transactionType: - $ref: '#/components/schemas/transactionType' - note: - $ref: '#/components/schemas/Note' - lastError: - description: > - Object representing the last error to occur during a quote process. - This may be a Mojaloop API error returned from another entity in the - scheme or an object representing other types of error e.g. - exceptions that may occur inside the scheme adapter. - $ref: '#/components/schemas/quoteError' - bulkQuoteResponse: - type: object - required: - - from - - individualQuoteResults - properties: - quoteId: - $ref: '#/components/schemas/CorrelationId' - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - individualQuoteResults: - type: array - maxItems: 1000 - items: - $ref: '#/components/schemas/individualQuoteResult' - description: List of individualQuoteResults in a bulk transfer response. - bulkQuoteErrorResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - bulkTansferState - properties: - bulkQuoteState: - $ref: '#/components/schemas/bulkQuoteResponse' - bulkQuoteStatus: - type: string - enum: - - ERROR_OCCURRED - - COMPLETED - bulkQuoteStatusResponse: - type: object - required: - - bulkQuoteId - - currentState - - individualQuotes - properties: - bulkQuoteId: - $ref: '#/components/schemas/CorrelationId' - currentState: - $ref: '#/components/schemas/bulkQuoteStatus' - individualQuotes: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: '#/components/schemas/individualQuote' - TransactionScenario: - title: TransactionScenario - type: string - enum: - - DEPOSIT - - WITHDRAWAL - - TRANSFER - - PAYMENT - - REFUND - description: >- - Below are the allowed values for the enumeration. - - - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a - normal scenario, electronic funds are transferred from a Business - account to a Consumer account, and physical cash is given from the - Consumer to the Business User. - - - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. - In a normal scenario, electronic funds are transferred from a Consumer’s - account to a Business account, and physical cash is given from the - Business User to the Consumer. - - - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to - Consumer) transaction. - - - PAYMENT - Usually used for performing a transaction from a Consumer to - a Merchant or Organization, but could also be for a B2B (Business to - Business) payment. The transaction could be online for a purchase in an - Internet store, in a physical store where both the Consumer and Business - User are present, a bill payment, a donation, and so on. - - - REFUND - Used for performing a refund of transaction. - example: DEPOSIT - TransactionSubScenario: - title: TransactionSubScenario - type: string - pattern: '^[A-Z_]{1,32}$' - description: >- - Possible sub-scenario, defined locally within the scheme (UndefinedEnum - Type). - example: LOCALLY_DEFINED_SUBSCENARIO - TransactionInitiator: - title: TransactionInitiator - type: string - enum: - - PAYER - - PAYEE - description: >- - Below are the allowed values for the enumeration. - - - PAYER - Sender of funds is initiating the transaction. The account to - send from is either owned by the Payer or is connected to the Payer in - some way. - - - PAYEE - Recipient of the funds is initiating the transaction by - sending a transaction request. The Payer must approve the transaction, - either automatically by a pre-generated OTP or by pre-approval of the - Payee, or by manually approving in his or her own Device. - example: PAYEE - RefundReason: - title: RefundReason - type: string - minLength: 1 - maxLength: 128 - description: Reason for the refund. - example: Free text indicating reason for the refund. - Refund: - title: Refund - type: object - description: Data model for the complex type Refund. - properties: - originalTransactionId: - $ref: '#/components/schemas/CorrelationId' - refundReason: - $ref: '#/components/schemas/RefundReason' - required: - - originalTransactionId - BalanceOfPayments: - title: BalanceOfPayments - type: string - pattern: '^[1-9]\d{2}$' - description: >- - (BopCode) The API data type - [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String - of 3 characters, consisting of digits only. Negative numbers are not - allowed. A leading zero is not allowed. - example: '123' - TransactionType: - title: TransactionType - type: object - description: Data model for the complex type TransactionType. - properties: - scenario: - $ref: '#/components/schemas/TransactionScenario' - subScenario: - $ref: '#/components/schemas/TransactionSubScenario' - initiator: - $ref: '#/components/schemas/TransactionInitiator' - initiatorType: - $ref: '#/components/schemas/TransactionInitiatorType' - refundInfo: - $ref: '#/components/schemas/Refund' - balanceOfPayments: - $ref: '#/components/schemas/BalanceOfPayments' - required: - - scenario - - initiator - - initiatorType - requestToPayRequest: - type: object - required: - - homeTransactionId - - from - - to - - amountType - - currency - - amount - - scenario - - initiator - - initiatorType - properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - scenario: - $ref: '#/components/schemas/TransactionType' - initiator: - $ref: '#/components/schemas/TransactionInitiator' - initiatorType: - $ref: '#/components/schemas/TransactionInitiatorType' - AuthenticationType: - title: AuthenticationType - type: string - enum: - - OTP - - QRCODE - - U2F - description: |- - Below are the allowed values for the enumeration AuthenticationType. - - OTP - One-time password generated by the Payer FSP. - - QRCODE - QR code used as One Time Password. - - U2F - U2F is a new addition isolated to Thirdparty stream. - example: OTP - TransactionRequestState: - title: TransactionRequestState - type: string - enum: - - RECEIVED - - PENDING - - ACCEPTED - - REJECTED - description: |- - Below are the allowed values for the enumeration. - - RECEIVED - Payer FSP has received the transaction from the Payee FSP. - - PENDING - Payer FSP has sent the transaction request to the Payer. - - ACCEPTED - Payer has approved the transaction. - - REJECTED - Payer has rejected the transaction. - example: RECEIVED - requestToPayResponse: - type: object - required: - - transactionRequestId - - from - - to - - amountType - - currency - - amount - - transactionType - - requestToPayState - properties: - transactionRequestId: - $ref: '#/components/schemas/CorrelationId' - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - scenario: - $ref: '#/components/schemas/TransactionType' - initiator: - $ref: '#/components/schemas/TransactionInitiator' - initiatorType: - $ref: '#/components/schemas/TransactionInitiatorType' - authenticationType: - $ref: '#/components/schemas/AuthenticationType' - requestToPayState: - $ref: '#/components/schemas/TransactionRequestState' - requestToPayTransferRequest: - type: object - required: - - requestToPayTransactionId - - from - - to - - amountType - - currency - - amount - - scenario - - initiator - - initiatorType - properties: - requestToPayTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - scenario: - $ref: '#/components/schemas/TransactionType' - initiator: - $ref: '#/components/schemas/TransactionInitiator' - initiatorType: - $ref: '#/components/schemas/TransactionInitiatorType' - note: - $ref: '#/components/schemas/Note' - requestToPayTransferResponse: - type: object - required: - - requestToPayTransactionId - - from - - to - - amountType - - currency - - amount - - transactionType - properties: - transferId: - $ref: '#/components/schemas/CorrelationId' - requestToPayTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - transactionType: - $ref: '#/components/schemas/transactionType' - note: - $ref: '#/components/schemas/Note' - currentState: - $ref: '#/components/schemas/transferStatus' - quoteId: - $ref: '#/components/schemas/CorrelationId' - quoteResponse: - $ref: '#/components/schemas/QuotesIDPutResponse' - quoteResponseSource: - type: string - description: > - FSPID of the entity that supplied the quote response. This may not - be the same as the FSPID of the entity which owns the end user - account in the case of a FOREX transfer. i.e. it may be a FOREX - gateway. - fulfil: - $ref: '#/components/schemas/TransfersIDPutResponse' - lastError: - description: > - Object representing the last error to occur during a transfer - process. This may be a Mojaloop API error returned from another - entity in the scheme or an object representing other types of error - e.g. exceptions that may occur inside the scheme adapter. - $ref: '#/components/schemas/transferError' - transferContinuationAcceptOTP: - type: object - required: - - acceptOTP - properties: - acceptOTP: - type: boolean - enum: - - true - - false - accountsRequest: - type: array - items: - type: object - required: - - idType - - idValue - - currency - properties: - idType: - $ref: '#/components/schemas/PartyIdType' - idValue: - $ref: '#/components/schemas/PartyIdentifier' - idSubValue: - $ref: '#/components/schemas/PartySubIdOrType' - currency: - $ref: '#/components/schemas/Currency' - accountCreationStatus: - type: array - items: - type: object - required: - - idType - - idValue - properties: - idType: - $ref: '#/components/schemas/PartyIdType' - idValue: - $ref: '#/components/schemas/PartyIdentifier' - idSubValue: - $ref: '#/components/schemas/PartySubIdOrType' - error: - $ref: '#/components/schemas/errorResponse' - accountsCreationState: - type: string - enum: - - ERROR_OCCURRED - - COMPLETED - accountsResponse: - type: object - required: - - accounts - properties: - modelId: - $ref: '#/components/schemas/CorrelationId' - accounts: - $ref: '#/components/schemas/accountsRequest' - response: - $ref: '#/components/schemas/accountCreationStatus' - currentState: - $ref: '#/components/schemas/accountsCreationState' - lastError: - $ref: '#/components/schemas/transferError' - postAccountsResponse: - type: object - required: - - body - properties: - body: - type: object - headers: - type: object - errorAccountsResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - executionState - properties: - executionState: - $ref: '#/components/schemas/accountsResponse' - PartyIdInfo: - title: PartyIdInfo - type: object - description: Data model for the complex type PartyIdInfo. - properties: - partyIdType: - $ref: '#/components/schemas/PartyIdType' - partyIdentifier: - $ref: '#/components/schemas/PartyIdentifier' - partySubIdOrType: - $ref: '#/components/schemas/PartySubIdOrType' - fspId: - $ref: '#/components/schemas/FspId' - extensionList: - $ref: '#/components/schemas/ExtensionList' - required: - - partyIdType - - partyIdentifier - PartyName: - title: PartyName - type: string - minLength: 1 - maxLength: 128 - description: Name of the Party. Could be a real name or a nickname. - PartyComplexName: - title: PartyComplexName - type: object - description: Data model for the complex type PartyComplexName. - properties: - firstName: - $ref: '#/components/schemas/FirstName' - middleName: - $ref: '#/components/schemas/MiddleName' - lastName: - $ref: '#/components/schemas/LastName' - PartyPersonalInfo: - title: PartyPersonalInfo - type: object - description: Data model for the complex type PartyPersonalInfo. - properties: - complexName: - $ref: '#/components/schemas/PartyComplexName' - dateOfBirth: - $ref: '#/components/schemas/DateOfBirth' - Party: - title: Party - type: object - description: Data model for the complex type Party. - properties: - partyIdInfo: - $ref: '#/components/schemas/PartyIdInfo' - merchantClassificationCode: - $ref: '#/components/schemas/MerchantClassificationCode' - name: - $ref: '#/components/schemas/PartyName' - personalInfo: - $ref: '#/components/schemas/PartyPersonalInfo' - required: - - partyIdInfo - async2SyncCurrentState: - type: string - enum: - - WAITING_FOR_ACTION - - COMPLETED - - ERROR_OCCURRED - partiesByIdResponse: - title: partiesByIdResponse - type: object - description: 'GET /parties/{Type}/{ID} response object' - properties: - party: - properties: - body: - $ref: '#/components/schemas/Party' - description: Information regarding the requested Party. - headers: - type: object - required: - - body - - headers - currentState: - $ref: '#/components/schemas/async2SyncCurrentState' - required: - - party - - currentState - QuotesPostRequest: - title: QuotesPostRequest - type: object - description: The object sent in the POST /quotes request. - properties: - quoteId: - $ref: '#/components/schemas/CorrelationId' - description: >- - Common ID between the FSPs for the quote object, decided by the - Payer FSP. The ID should be reused for resends of the same quote for - a transaction. A new ID should be generated for each new quote for a - transaction. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - transactionId: - $ref: '#/components/schemas/CorrelationId' - description: >- - Common ID (decided by the Payer FSP) between the FSPs for the future - transaction object. The actual transaction will be created as part - of a successful transfer process. The ID should be reused for - resends of the same quote for a transaction. A new ID should be - generated for each new quote for a transaction. - example: a8323bc6-c228-4df2-ae82-e5a997baf899 - transactionRequestId: - $ref: '#/components/schemas/CorrelationId' - description: Identifies an optional previously-sent transaction request. - example: a8323bc6-c228-4df2-ae82-e5a997baf890 - payee: - $ref: '#/components/schemas/Party' - description: Information about the Payee in the proposed financial transaction. - payer: - $ref: '#/components/schemas/Party' - description: Information about the Payer in the proposed financial transaction. - amountType: - $ref: '#/components/schemas/AmountType' - description: 'SEND for send amount, RECEIVE for receive amount.' - example: SEND - amount: - $ref: '#/components/schemas/Money' - description: >- - Depending on amountType - If SEND - The amount the Payer would like - to send, that is, the amount that should be withdrawn from the Payer - account including any fees. The amount is updated by each - participating entity in the transaction. If RECEIVE - The amount the - Payee should receive, that is, the amount that should be sent to the - receiver exclusive any fees. The amount is not updated by any of the - participating entities. - fees: - $ref: '#/components/schemas/Money' - description: >- - The fees in the transaction. The fees element should be empty if - fees should be non-disclosed. The fees element should be non-empty - if fees should be disclosed. - transactionType: - $ref: '#/components/schemas/TransactionType' - description: Type of transaction for which the quote is requested. - geoCode: - $ref: '#/components/schemas/GeoCode' - description: >- - Longitude and Latitude of the initiating Party. Can be used to - detect fraud. - note: - $ref: '#/components/schemas/Note' - description: A memo that will be attached to the transaction. - example: Free-text memo. - expiration: - $ref: '#/components/schemas/DateTime' - description: >- - Expiration is optional. It can be set to get a quick failure in case - the peer FSP takes too long to respond. Also, it may be beneficial - for Consumer, Agent, and Merchant to know that their request has a - time limit. - example: '2016-05-24T08:38:08.699-04:00' - extensionList: - $ref: '#/components/schemas/ExtensionList' - description: 'Optional extension, specific to deployment.' - required: - - quoteId - - transactionId - - payee - - payer - - amountType - - amount - - transactionType - quotesPostRequest: - title: QuotesPostRequest - type: object - properties: - fspId: - title: destination DFSP requested to calculate the quote - $ref: '#/components/schemas/FspId' - quotesPostRequest: - $ref: '#/components/schemas/QuotesPostRequest' - required: - - fspId - - quotesPostRequest - quotesPostResponse: - title: QuotesPostResponse - type: object - properties: - quotes: - title: QuotesIDPutResponse - type: object - description: 'The object sent in the PUT /quotes/{ID} callback.' - properties: - body: - type: object - properties: - transferAmount: - $ref: '#/components/schemas/Money' - payeeReceiveAmount: - $ref: '#/components/schemas/Money' - payeeFspFee: - $ref: '#/components/schemas/Money' - payeeFspCommission: - $ref: '#/components/schemas/Money' - expiration: - type: string - description: >- - Date and time until when the quotation is valid and can be - honored when used in the subsequent transaction. - example: '2016-05-24T08:38:08.699-04:00' - geoCode: - $ref: '#/components/schemas/GeoCode' - ilpPacket: - $ref: '#/components/schemas/IlpPacket' - condition: - $ref: '#/components/schemas/IlpCondition' - extensionList: - $ref: '#/components/schemas/ExtensionList' - required: - - transferAmount - - expiration - - ilpPacket - - condition - headers: - type: object - required: - - body - - headers - currentState: - $ref: '#/components/schemas/async2SyncCurrentState' - required: - - quotes - - currentState - errorQuotesResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - TransfersPostRequest: - title: TransfersPostRequest - type: object - description: The object sent in the POST /transfers request. - properties: - transferId: - $ref: '#/components/schemas/CorrelationId' - payeeFsp: - $ref: '#/components/schemas/FspId' - payerFsp: - $ref: '#/components/schemas/FspId' - amount: - $ref: '#/components/schemas/Money' - ilpPacket: - $ref: '#/components/schemas/IlpPacket' - condition: - $ref: '#/components/schemas/IlpCondition' - expiration: - $ref: '#/components/schemas/DateTime' - extensionList: - $ref: '#/components/schemas/ExtensionList' - required: - - transferId - - payeeFsp - - payerFsp - - amount - - ilpPacket - - condition - - expiration - simpleTransfersPostRequest: - title: SimpleTransfersPostRequest - type: object - properties: - fspId: - $ref: '#/components/schemas/FspId' - transfersPostRequest: - $ref: '#/components/schemas/TransfersPostRequest' - required: - - fspId - - transfersPostRequest - simpleTransfersPostResponse: - title: SimpleTransfersPostResponse - type: object - properties: - transfer: - properties: - body: - $ref: '#/components/schemas/TransfersIDPutResponse' - headers: - type: object - required: - - body - - headers - currentState: - $ref: '#/components/schemas/async2SyncCurrentState' - required: - - transfer - - currentState - errorSimpleTransfersResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - responses: - transferSuccess: - description: Transfer completed successfully - content: - application/json: - schema: - $ref: '#/components/schemas/transferResponse' - transferBadRequest: - description: 'Malformed or missing required body, headers or parameters' - content: - application/json: - schema: - $ref: '#/components/schemas/errorTransferResponse' - transferServerError: - description: An error occurred processing the transfer - content: - application/json: - schema: - $ref: '#/components/schemas/errorTransferResponse' - transferTimeout: - description: Timeout occurred processing the transfer - content: - application/json: - schema: - $ref: '#/components/schemas/errorTransferResponse' - bulkTransferSuccess: - description: Bulk transfer completed successfully - content: - application/json: - schema: - $ref: '#/components/schemas/bulkTransferResponse' - bulkTransferAccepted: - description: Bulk transfer accepted successfully - bulkPartyLookupResponse: - description: Bulk party lookup completed successfully - content: - application/json: - schema: - $ref: '#/components/schemas/bulkPartyLookupResponse' - bulkTransferPutBadRequest: - description: 'Malformed or missing required body, headers or parameters' - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/bulkAcceptPartyErrorResponse' - - $ref: '#/components/schemas/bulkAcceptQuoteErrorResponse' - bulkTransferBadRequest: - description: 'Malformed or missing required body, headers or parameters' - content: - application/json: - schema: - $ref: '#/components/schemas/bulkTransferErrorResponse' - bulkTransferServerError: - description: An error occurred processing the bulk transfer - content: - application/json: - schema: - $ref: '#/components/schemas/bulkTransferErrorResponse' - bulkTransferTimeout: - description: Timeout occurred processing the bulk transfer - content: - application/json: - schema: - $ref: '#/components/schemas/bulkTransferErrorResponse' - bulkQuoteSuccess: - description: Bulk quote completed successfully - content: - application/json: - schema: - $ref: '#/components/schemas/bulkQuoteResponse' - bulkQuoteBadRequest: - description: 'Malformed or missing required body, headers or parameters' - content: - application/json: - schema: - $ref: '#/components/schemas/bulkQuoteErrorResponse' - bulkQuoteServerError: - description: An error occurred processing the bulk quote - content: - application/json: - schema: - $ref: '#/components/schemas/bulkQuoteErrorResponse' - bulkQuoteTimeout: - description: Timeout occurred processing the bulk quote - content: - application/json: - schema: - $ref: '#/components/schemas/bulkQuoteErrorResponse' - requestToPaySuccess: - description: Request to Pay completed successfully - content: - application/json: - schema: - $ref: '#/components/schemas/requestToPayResponse' - requestToPayTransferSuccess: - description: Transfer completed successfully - content: - application/json: - schema: - $ref: '#/components/schemas/requestToPayTransferResponse' - requestToPayTransferBadRequest: - description: 'Malformed or missing required body, headers or parameters' - content: - application/json: - schema: - $ref: '#/components/schemas/errorTransferResponse' - accountsCreationCompleted: - description: Accounts creation completed - content: - application/json: - schema: - $ref: '#/components/schemas/accountsResponse' - accountsCreationError: - description: An error occurred creating accounts - content: - application/json: - schema: - $ref: '#/components/schemas/errorAccountsResponse' - accountsCreationTimeout: - description: Timeout occurred creating accounts - content: - application/json: - schema: - $ref: '#/components/schemas/errorAccountsResponse' - partiesByIdSuccess: - description: PartiesByIdSuccess - content: - application/json: - schema: - $ref: '#/components/schemas/partiesByIdResponse' - partiesByIdError404: - description: PartiesByIdError404 - content: - application/json: - schema: - type: object - properties: - errorInformation: - $ref: '#/components/schemas/ErrorInformation' - quotesPostSuccess: - description: sync response from POST /quotes - content: - application/json: - schema: - $ref: '#/components/schemas/quotesPostResponse' - quotesServerError: - description: An error occurred processing the quotes request - content: - application/json: - schema: - $ref: '#/components/schemas/errorQuotesResponse' - simpleTransfersPostSuccess: - description: sync response from POST /simpleTransfers - content: - application/json: - schema: - $ref: '#/components/schemas/simpleTransfersPostResponse' - simpleTransfersServerError: - description: An error occurred processing the simple transfers request - content: - application/json: - schema: - $ref: '#/components/schemas/errorSimpleTransfersResponse' - parameters: - transferId: - name: transferId - in: path - required: true - schema: - $ref: '#/components/schemas/CorrelationId' - description: >- - Identifier of the transfer to continue as returned in the response to a - `POST /transfers` request. - bulkTransferId: - name: bulkTransferId - in: path - required: true - schema: - $ref: '#/components/schemas/CorrelationId' - description: >- - Identifier of the bulk transfer to continue as returned in the response - to a `POST /bulkTransfers` request. - bulkQuoteId: - name: bulkQuoteId - in: path - required: true - schema: - $ref: '#/components/schemas/CorrelationId' - description: >- - Identifier of the bulk transfer to continue as returned in the response - to a `POST /bulkTransfers` request. - requestToPayTransactionId: - name: requestToPayTransactionId - in: path - required: true - schema: - $ref: '#/components/schemas/CorrelationId' - description: >- - Identifier of the merchant request to pay transfer to continue as - returned in the response to a `POST /requestToPayTransfer` request. - Type: - name: Type - in: path - required: true - schema: - type: string - description: 'The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`.' - ID: - name: ID - in: path - required: true - schema: - type: string - description: The identifier value. - SubId: - name: SubId - in: path - required: true - schema: - type: string - description: >- - A sub-identifier of the party identifier, or a sub-type of the party - identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. diff --git a/src/OutboundServer/api_interfaces/index.d.ts b/src/OutboundServer/api_interfaces/index.d.ts deleted file mode 100644 index aae4ef840..000000000 --- a/src/OutboundServer/api_interfaces/index.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { components } from './openapi' -export * as openapi from './openapi' -export declare namespace Schemas { - type TransactionInitiatorType = components['schemas']['TransactionInitiatorType']; - type PartyIdType = components['schemas']['PartyIdType']; - type PartyIdentifier = components['schemas']['PartyIdentifier']; - type PartySubIdOrType = components['schemas']['PartySubIdOrType']; - type Name = components['schemas']['Name']; - type FirstName = components['schemas']['FirstName']; - type MiddleName = components['schemas']['MiddleName']; - type LastName = components['schemas']['LastName']; - type DateOfBirth = components['schemas']['DateOfBirth']; - type MerchantClassificationCode = components['schemas']['MerchantClassificationCode']; - type FspId = components['schemas']['FspId']; - type ExtensionKey = components['schemas']['ExtensionKey']; - type ExtensionValue = components['schemas']['ExtensionValue']; - type Extension = components['schemas']['Extension']; - type extensionListEmptiable = components['schemas']['extensionListEmptiable']; - type transferParty = components['schemas']['transferParty']; - type AmountType = components['schemas']['AmountType']; - type Currency = components['schemas']['Currency']; - type Amount = components['schemas']['Amount']; - type transactionType = components['schemas']['transactionType']; - type Note = components['schemas']['Note']; - type transferRequest = components['schemas']['transferRequest']; - type CorrelationId = components['schemas']['CorrelationId']; - type transferStatus = components['schemas']['transferStatus']; - type Money = components['schemas']['Money']; - type DateTime = components['schemas']['DateTime']; - type Latitude = components['schemas']['Latitude']; - type Longitude = components['schemas']['Longitude']; - type GeoCode = components['schemas']['GeoCode']; - type IlpPacket = components['schemas']['IlpPacket']; - type IlpCondition = components['schemas']['IlpCondition']; - type ExtensionList = components['schemas']['ExtensionList']; - type QuotesIDPutResponse = components['schemas']['QuotesIDPutResponse']; - type IlpFulfilment = components['schemas']['IlpFulfilment']; - type TransferState = components['schemas']['TransferState']; - type TransfersIDPutResponse = components['schemas']['TransfersIDPutResponse']; - type ErrorCode = components['schemas']['ErrorCode']; - type ErrorDescription = components['schemas']['ErrorDescription']; - type ErrorInformation = components['schemas']['ErrorInformation']; - type mojaloopError = components['schemas']['mojaloopError']; - type transferError = components['schemas']['transferError']; - type transferResponse = components['schemas']['transferResponse']; - type errorResponse = components['schemas']['errorResponse']; - type errorTransferResponse = components['schemas']['errorTransferResponse']; - type transferStatusResponse = components['schemas']['transferStatusResponse']; - type transferContinuationAcceptParty = components['schemas']['transferContinuationAcceptParty']; - type transferContinuationAcceptQuote = components['schemas']['transferContinuationAcceptQuote']; - type individualTransfer = components['schemas']['individualTransfer']; - type bulkTransferRequest = components['schemas']['bulkTransferRequest']; - type individualTransferResult = components['schemas']['individualTransferResult']; - type bulkTransferResponse = components['schemas']['bulkTransferResponse']; - type bulkTransferErrorResponse = components['schemas']['bulkTransferErrorResponse']; - type bulkTransferStatus = components['schemas']['bulkTransferStatus']; - type individualTransferFulfilment = components['schemas']['individualTransferFulfilment']; - type bulkTransferStatusResponse = components['schemas']['bulkTransferStatusResponse']; - type individualQuote = components['schemas']['individualQuote']; - type bulkQuoteRequest = components['schemas']['bulkQuoteRequest']; - type quoteError = components['schemas']['quoteError']; - type individualQuoteResult = components['schemas']['individualQuoteResult']; - type bulkQuoteResponse = components['schemas']['bulkQuoteResponse']; - type bulkQuoteErrorResponse = components['schemas']['bulkQuoteErrorResponse']; - type bulkQuoteStatus = components['schemas']['bulkQuoteStatus']; - type bulkQuoteStatusResponse = components['schemas']['bulkQuoteStatusResponse']; - type TransactionScenario = components['schemas']['TransactionScenario']; - type TransactionSubScenario = components['schemas']['TransactionSubScenario']; - type TransactionInitiator = components['schemas']['TransactionInitiator']; - type RefundReason = components['schemas']['RefundReason']; - type Refund = components['schemas']['Refund']; - type BalanceOfPayments = components['schemas']['BalanceOfPayments']; - type TransactionType = components['schemas']['TransactionType']; - type requestToPayRequest = components['schemas']['requestToPayRequest']; - type AuthenticationType = components['schemas']['AuthenticationType']; - type TransactionRequestState = components['schemas']['TransactionRequestState']; - type requestToPayResponse = components['schemas']['requestToPayResponse']; - type requestToPayTransferRequest = components['schemas']['requestToPayTransferRequest']; - type requestToPayTransferResponse = components['schemas']['requestToPayTransferResponse']; - type transferContinuationAcceptOTP = components['schemas']['transferContinuationAcceptOTP']; - type accountsRequest = components['schemas']['accountsRequest']; - type accountCreationStatus = components['schemas']['accountCreationStatus']; - type accountsCreationState = components['schemas']['accountsCreationState']; - type accountsResponse = components['schemas']['accountsResponse']; - type errorAccountsResponse = components['schemas']['errorAccountsResponse']; - type PartyIdInfo = components['schemas']['PartyIdInfo']; - type PartyName = components['schemas']['PartyName']; - type PartyComplexName = components['schemas']['PartyComplexName']; - type PartyPersonalInfo = components['schemas']['PartyPersonalInfo']; - type Party = components['schemas']['Party']; - type async2SyncCurrentState = components['schemas']['async2SyncCurrentState']; - type partiesByIdResponse = components['schemas']['partiesByIdResponse']; - type QuotesPostRequest = components['schemas']['QuotesPostRequest']; - type quotesPostRequest = components['schemas']['quotesPostRequest']; - type quotesPostResponse = components['schemas']['quotesPostResponse']; - type errorQuotesResponse = components['schemas']['errorQuotesResponse']; - type TransfersPostRequest = components['schemas']['TransfersPostRequest']; - type simpleTransfersPostRequest = components['schemas']['simpleTransfersPostRequest']; - type simpleTransfersPostResponse = components['schemas']['simpleTransfersPostResponse']; - type errorSimpleTransfersResponse = components['schemas']['errorSimpleTransfersResponse']; -} diff --git a/src/OutboundServer/api_interfaces/openapi.d.ts b/src/OutboundServer/api_interfaces/openapi.d.ts deleted file mode 100644 index 5a90b87db..000000000 --- a/src/OutboundServer/api_interfaces/openapi.d.ts +++ /dev/null @@ -1,1388 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -export interface paths { - "/": { - /** This endpoint allows a user of the SDK scheme adapter to check the outbound transfers service is listening. */ - get: { - responses: { - /** Returns empty body if the scheme adapter outbound transfers service is running. */ - 200: unknown; - }; - }; - }; - "/transfers": { - /** - * The HTTP request `POST /transfers` is used to request the movement of funds from payer DFSP to payee DFSP. - * The underlying Mojaloop API has three stages for money transfer: - * - * 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. - * 2. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. - * 3. Transfer. The enactment of the previously agreed "contract" - * - * This method has several modes of operation. - * - If the configuration variables `AUTO_ACCEPT_PARTIES` is set to `"false"` this method will terminate when the payee party has been resolved and return the payee party details. - * If the payee wishes to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the payee party) is required to continue the operation. - * The scheme adapter will then proceed with quotation stage... - * - * - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` this method will terminate and return the quotation when it has been received from the payee DFSP. - * If the payee wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - * The scheme adapter will then proceed with the transfer state. - * - * If the configuration variables `AUTO_ACCEPT_PARTIES` and `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block until all three transfer stages are complete. Upon completion it will return the entire set of transfer details received during the operation. - * - * Combinations of settings for `AUTO_ACCEPT...` configuration variables allow the scheme adapter user to decide which mode of operation best suits their use cases. i.e. the scheme adapter can be configured to "break" the three stage transfer at these points in order to execute backend logic such as party verification, quoted fees assessments etc... - */ - post: { - responses: { - 200: components["responses"]["transferSuccess"]; - 400: components["responses"]["transferBadRequest"]; - 500: components["responses"]["transferServerError"]; - 504: components["responses"]["transferTimeout"]; - }; - /** Transfer request body */ - requestBody: { - content: { - "application/json": components["schemas"]["transferRequest"]; - }; - }; - }; - }; - "/transfers/{transferId}": { - /** The HTTP request `GET /transfers/{transferId}` is used to get information regarding a transfer created or requested earlier. The `{transferId}` in the URI should contain the `transferId` that was used for the creation of the transfer. */ - get: { - parameters: { - path: { - /** Identifier of the transfer to continue as returned in the response to a `POST /transfers` request. */ - transferId: components["parameters"]["transferId"]; - }; - }; - responses: { - /** Transfer information successfully retrieved */ - 200: { - content: { - "application/json": components["schemas"]["transferStatusResponse"]; - }; - }; - /** An error occurred processing the transfer */ - 500: { - content: { - "application/json": components["schemas"]["errorResponse"]; - }; - }; - }; - }; - /** - * The HTTP request `PUT /transfers/{transferId}` is used to continue a transfer initiated via the `POST /transfers` method that has halted after party lookup and/or quotation stage. - * - * The request body should contain either the "acceptParty" or "acceptQuote" property set to `true` as required to continue the transfer. - * - * See the description of the `POST /transfers` HTTP method for more information on modes of transfer. - */ - put: { - parameters: { - path: { - /** Identifier of the transfer to continue as returned in the response to a `POST /transfers` request. */ - transferId: components["parameters"]["transferId"]; - }; - }; - responses: { - 200: components["responses"]["transferSuccess"]; - 500: components["responses"]["transferServerError"]; - 504: components["responses"]["transferTimeout"]; - }; - requestBody: { - content: { - "application/json": - | components["schemas"]["transferContinuationAcceptParty"] - | components["schemas"]["transferContinuationAcceptQuote"]; - }; - }; - }; - }; - "/bulkTransfers": { - /** The HTTP request `POST /bulkTransfers` is used to request the movement of funds from payer DFSP to payees' DFSP. */ - post: { - responses: { - 200: components["responses"]["bulkTransferSuccess"]; - 400: components["responses"]["bulkTransferBadRequest"]; - 500: components["responses"]["bulkTransferServerError"]; - 504: components["responses"]["bulkTransferTimeout"]; - }; - /** Bulk transfer request body */ - requestBody: { - content: { - "application/json": components["schemas"]["bulkTransferRequest"]; - }; - }; - }; - }; - "/bulkTransfers/{bulkTransferId}": { - /** The HTTP request `GET /bulkTransfers/{bulktTransferId}` is used to get information regarding a bulk transfer created or requested earlier. The `{bulkTransferId}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer. */ - get: { - parameters: { - path: { - /** Identifier of the bulk transfer to continue as returned in the response to a `POST /bulkTransfers` request. */ - bulkTransferId: components["parameters"]["bulkTransferId"]; - }; - }; - responses: { - /** Bulk transfer information successfully retrieved */ - 200: { - content: { - "application/json": components["schemas"]["bulkTransferStatusResponse"]; - }; - }; - /** An error occurred processing the bulk transfer */ - 500: { - content: { - "application/json": components["schemas"]["errorResponse"]; - }; - }; - }; - }; - }; - "/bulkQuotes": { - /** The HTTP request `POST /bulkQuotes` is used to request a bulk quote to fascilitate funds transfer from payer DFSP to payees' DFSP. */ - post: { - responses: { - 200: components["responses"]["bulkQuoteSuccess"]; - 400: components["responses"]["bulkQuoteBadRequest"]; - 500: components["responses"]["bulkQuoteServerError"]; - 504: components["responses"]["bulkQuoteTimeout"]; - }; - /** Bulk quote request body */ - requestBody: { - content: { - "application/json": components["schemas"]["bulkQuoteRequest"]; - }; - }; - }; - }; - "/bulkQuotes/{bulkQuoteId}": { - /** The HTTP request `GET /bulkQuotes/{bulktQuoteId}` is used to get information regarding a bulk quote created or requested earlier. The `{bulkQuoteId}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote. */ - get: { - parameters: { - path: { - /** Identifier of the bulk transfer to continue as returned in the response to a `POST /bulkTransfers` request. */ - bulkQuoteId: components["parameters"]["bulkQuoteId"]; - }; - }; - responses: { - /** Bulk quote information successfully retrieved */ - 200: { - content: { - "application/json": components["schemas"]["bulkQuoteStatusResponse"]; - }; - }; - /** An error occurred processing the bulk quote */ - 500: { - content: { - "application/json": components["schemas"]["errorResponse"]; - }; - }; - }; - }; - }; - "/requestToPay": { - /** - * The HTTP request `POST /requestToPay` is used to support Pull Funds pattern where in a receiver can request for funds from the Sender. - * The underlying API has two stages: - * - * 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. - * 2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee. - */ - post: { - responses: { - 200: components["responses"]["requestToPaySuccess"]; - }; - /** RequestToPay request body */ - requestBody: { - content: { - "application/json": components["schemas"]["requestToPayRequest"]; - }; - }; - }; - }; - "/requestToPayTransfer": { - /** - * The HTTP request `POST /requestToPayTransfer` is used to request the movement of funds from payer DFSP to payee DFSP. - * The underlying Mojaloop API has three stages for money transfer: - * - * 1. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. - * 2. Authorization. This facilitates getting OTP from payee DFSP. - * 3. Transfer. The enactment of the previously agreed "contract" - * - * This method has several modes of operation. - * - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` this method will terminate and return the quotation when it has been received from the payee DFSP. - * If the payee wished to proceed with the otp, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - * The scheme adapter will then proceed with the transfer state. - * - * - If the configuration variable `AUTO_ACCEPT_OTP` is set to `"false"` this method will terminate and return the otp when it has been received from the payee DFSP. - * If the payer wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - * The scheme adapter will then proceed with the transfer state. - * - * If the configuration variables `AUTO_ACCEPT_PARTIES` and `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block until all three transfer stages are complete. Upon completion it will return the entire set of transfer details received during the operation. - * - * Combinations of settings for `AUTO_ACCEPT...` configuration variables allow the scheme adapter user to decide which mode of operation best suits their use cases. i.e. the scheme adapter can be configured to "break" the three stage transfer at these points in order to execute backend logic such as party verification, quoted fees assessments etc... - */ - post: { - responses: { - 200: components["responses"]["requestToPayTransferSuccess"]; - 400: components["responses"]["requestToPayTransferBadRequest"]; - 500: components["responses"]["transferServerError"]; - 504: components["responses"]["transferTimeout"]; - }; - /** Request To Pay Transfer request body */ - requestBody: { - content: { - "application/json": components["schemas"]["requestToPayTransferRequest"]; - }; - }; - }; - }; - "/requestToPayTransfer/{requestToPayTransactionId}": { - /** - * The HTTP request `PUT /transfers/{transferId}` is used to continue a transfer initiated via the `POST /transfers` method that has halted after party lookup and/or quotation stage. - * - * The request body should contain either the "acceptOTP" or "acceptQuote" property set to `true` as required to continue the transfer. - * - * See the description of the `POST /requestToPayTransfer` HTTP method for more information on modes of transfer. - */ - put: { - parameters: { - path: { - /** Identifier of the merchant request to pay transfer to continue as returned in the response to a `POST /requestToPayTransfer` request. */ - requestToPayTransactionId: components["parameters"]["requestToPayTransactionId"]; - }; - }; - responses: { - 200: components["responses"]["transferSuccess"]; - 500: components["responses"]["transferServerError"]; - 504: components["responses"]["transferTimeout"]; - }; - requestBody: { - content: { - "application/json": - | components["schemas"]["transferContinuationAcceptQuote"] - | components["schemas"]["transferContinuationAcceptOTP"]; - }; - }; - }; - }; - "/accounts": { - /** - * The HTTP request `POST /accounts` is used to create account information on the Account Lookup Service (ALS) regarding the provided list of identities. - * - * Caller DFSP is used as the account source FSP information - */ - post: { - responses: { - 200: components["responses"]["accountsCreationCompleted"]; - 400: components["responses"]["accountsCreationError"]; - 500: components["responses"]["accountsCreationError"]; - 504: components["responses"]["accountsCreationTimeout"]; - }; - /** Identities list request body */ - requestBody: { - content: { - "application/json": components["schemas"]["accountsRequest"]; - }; - }; - }; - }; - "/parties/{Type}/{ID}": { - /** The HTTP request GET /parties// (or GET /parties///) is used to lookup information regarding the requested Party, defined by , and optionally (for example, GET /parties/MSISDN/123456789, or GET /parties/BUSINESS/shoecompany/employee1). */ - get: operations["PartiesByTypeAndID"]; - parameters: { - path: { - /** The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. */ - Type: components["parameters"]["Type"]; - /** The identifier value. */ - ID: components["parameters"]["ID"]; - }; - }; - }; - "/parties/{Type}/{ID}/{SubId}": { - /** The HTTP request GET /parties// (or GET /parties///) is used to lookup information regarding the requested Party, defined by , and optionally (for example, GET /parties/MSISDN/123456789, or GET /parties/BUSINESS/shoecompany/employee1). */ - get: operations["PartiesSubIdByTypeAndID"]; - parameters: { - path: { - /** The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. */ - Type: components["parameters"]["Type"]; - /** The identifier value. */ - ID: components["parameters"]["ID"]; - /** A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. */ - SubId: components["parameters"]["SubId"]; - }; - }; - }; - "/quotes": { - /** is used to request quotes from other DFSP */ - post: operations["QuotesPost"]; - }; - "/simpleTransfers": { - /** is used to request a transfer */ - post: operations["SimpleTransfersPost"]; - }; -} - -export interface components { - schemas: { - /** - * Below are the allowed values for the enumeration. - * - CONSUMER - Consumer is the initiator of the transaction. - * - AGENT - Agent is the initiator of the transaction. - * - BUSINESS - Business is the initiator of the transaction. - * - DEVICE - Device is the initiator of the transaction. - */ - TransactionInitiatorType: "CONSUMER" | "AGENT" | "BUSINESS" | "DEVICE"; - /** - * Below are the allowed values for the enumeration. - * - MSISDN - An MSISDN (Mobile Station International Subscriber Directory - * Number, that is, the phone number) is used as reference to a participant. - * The MSISDN identifier should be in international format according to the - * [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). - * Optionally, the MSISDN may be prefixed by a single plus sign, indicating the - * international prefix. - * - EMAIL - An email is used as reference to a - * participant. The format of the email should be according to the informational - * [RFC 3696](https://tools.ietf.org/html/rfc3696). - * - PERSONAL_ID - A personal identifier is used as reference to a participant. - * Examples of personal identification are passport number, birth certificate - * number, and national registration number. The identifier number is added in - * the PartyIdentifier element. The personal identifier type is added in the - * PartySubIdOrType element. - * - BUSINESS - A specific Business (for example, an organization or a company) - * is used as reference to a participant. The BUSINESS identifier can be in any - * format. To make a transaction connected to a specific username or bill number - * in a Business, the PartySubIdOrType element should be used. - * - DEVICE - A specific device (for example, a POS or ATM) ID connected to a - * specific business or organization is used as reference to a Party. - * For referencing a specific device under a specific business or organization, - * use the PartySubIdOrType element. - * - ACCOUNT_ID - A bank account number or FSP account ID should be used as - * reference to a participant. The ACCOUNT_ID identifier can be in any format, - * as formats can greatly differ depending on country and FSP. - * - IBAN - A bank account number or FSP account ID is used as reference to a - * participant. The IBAN identifier can consist of up to 34 alphanumeric - * characters and should be entered without whitespace. - * - ALIAS An alias is used as reference to a participant. The alias should be - * created in the FSP as an alternative reference to an account owner. - * Another example of an alias is a username in the FSP system. - * The ALIAS identifier can be in any format. It is also possible to use the - * PartySubIdOrType element for identifying an account under an Alias defined - * by the PartyIdentifier. - * - CONSENT - A Consent represents an agreement between a PISP, a Customer and - * a DFSP which allows the PISP permission to perform actions on behalf of the - * customer. A Consent has an authoritative source: either the DFSP who issued - * the Consent, or an Auth Service which administers the Consent. - * - THIRD_PARTY_LINK - A Third Party Link represents an agreement between a PISP, - * a DFSP, and a specific Customer's account at the DFSP. The content of the link - * is created by the DFSP at the time when it gives permission to the PISP for - * specific access to a given account. - */ - PartyIdType: - | "MSISDN" - | "EMAIL" - | "PERSONAL_ID" - | "BUSINESS" - | "DEVICE" - | "ACCOUNT_ID" - | "IBAN" - | "ALIAS" - | "CONSENT" - | "THIRD_PARTY_LINK"; - /** Identifier of the Party. */ - PartyIdentifier: string; - /** Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType. */ - PartySubIdOrType: string; - /** - * The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name. - * - * Regular Expression - The regular expression for restricting the Name type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ). - * - * **Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters. - */ - Name: string; - /** First name of the Party (Name Type). */ - FirstName: string; - /** Middle name of the Party (Name Type). */ - MiddleName: string; - /** Last name of the Party (Name Type). */ - LastName: string; - /** Date of Birth of the Party. */ - DateOfBirth: string; - /** A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc. */ - MerchantClassificationCode: string; - /** FSP identifier. */ - FspId: string; - /** Extension key. */ - ExtensionKey: string; - /** Extension value. */ - ExtensionValue: string; - /** Data model for the complex type Extension. */ - Extension: { - key: components["schemas"]["ExtensionKey"]; - value: components["schemas"]["ExtensionValue"]; - }; - extensionListEmptiable: components["schemas"]["Extension"][]; - transferParty: { - type?: components["schemas"]["TransactionInitiatorType"]; - idType: components["schemas"]["PartyIdType"]; - idValue: components["schemas"]["PartyIdentifier"]; - idSubValue?: components["schemas"]["PartySubIdOrType"]; - displayName?: components["schemas"]["Name"]; - firstName?: components["schemas"]["FirstName"]; - middleName?: components["schemas"]["MiddleName"]; - lastName?: components["schemas"]["LastName"]; - dateOfBirth?: components["schemas"]["DateOfBirth"]; - merchantClassificationCode?: components["schemas"]["MerchantClassificationCode"]; - fspId?: components["schemas"]["FspId"]; - extensionList?: components["schemas"]["extensionListEmptiable"]; - }; - /** - * Below are the allowed values for the enumeration AmountType. - * - SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. - * - RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees. - */ - AmountType: "SEND" | "RECEIVE"; - /** The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies. */ - Currency: - | "AED" - | "AFN" - | "ALL" - | "AMD" - | "ANG" - | "AOA" - | "ARS" - | "AUD" - | "AWG" - | "AZN" - | "BAM" - | "BBD" - | "BDT" - | "BGN" - | "BHD" - | "BIF" - | "BMD" - | "BND" - | "BOB" - | "BRL" - | "BSD" - | "BTN" - | "BWP" - | "BYN" - | "BZD" - | "CAD" - | "CDF" - | "CHF" - | "CLP" - | "CNY" - | "COP" - | "CRC" - | "CUC" - | "CUP" - | "CVE" - | "CZK" - | "DJF" - | "DKK" - | "DOP" - | "DZD" - | "EGP" - | "ERN" - | "ETB" - | "EUR" - | "FJD" - | "FKP" - | "GBP" - | "GEL" - | "GGP" - | "GHS" - | "GIP" - | "GMD" - | "GNF" - | "GTQ" - | "GYD" - | "HKD" - | "HNL" - | "HRK" - | "HTG" - | "HUF" - | "IDR" - | "ILS" - | "IMP" - | "INR" - | "IQD" - | "IRR" - | "ISK" - | "JEP" - | "JMD" - | "JOD" - | "JPY" - | "KES" - | "KGS" - | "KHR" - | "KMF" - | "KPW" - | "KRW" - | "KWD" - | "KYD" - | "KZT" - | "LAK" - | "LBP" - | "LKR" - | "LRD" - | "LSL" - | "LYD" - | "MAD" - | "MDL" - | "MGA" - | "MKD" - | "MMK" - | "MNT" - | "MOP" - | "MRO" - | "MUR" - | "MVR" - | "MWK" - | "MXN" - | "MYR" - | "MZN" - | "NAD" - | "NGN" - | "NIO" - | "NOK" - | "NPR" - | "NZD" - | "OMR" - | "PAB" - | "PEN" - | "PGK" - | "PHP" - | "PKR" - | "PLN" - | "PYG" - | "QAR" - | "RON" - | "RSD" - | "RUB" - | "RWF" - | "SAR" - | "SBD" - | "SCR" - | "SDG" - | "SEK" - | "SGD" - | "SHP" - | "SLL" - | "SOS" - | "SPL" - | "SRD" - | "STD" - | "SVC" - | "SYP" - | "SZL" - | "THB" - | "TJS" - | "TMT" - | "TND" - | "TOP" - | "TRY" - | "TTD" - | "TVD" - | "TWD" - | "TZS" - | "UAH" - | "UGX" - | "USD" - | "UYU" - | "UZS" - | "VEF" - | "VND" - | "VUV" - | "WST" - | "XAF" - | "XCD" - | "XDR" - | "XOF" - | "XPF" - | "XTS" - | "XXX" - | "YER" - | "ZAR" - | "ZMW" - | "ZWD"; - /** The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed. */ - Amount: string; - /** Type of transaction. */ - transactionType: "TRANSFER"; - /** Memo assigned to transaction. */ - Note: string; - transferRequest: { - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - transactionType: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - quoteRequestExtensions?: components["schemas"]["extensionListEmptiable"]; - transferRequestExtensions?: components["schemas"]["extensionListEmptiable"]; - /** Set to true if supplying an FSPID for the payee party and no party resolution is needed. This may be useful is a previous party resolution has been performed. */ - skipPartyLookup?: boolean; - }; - /** Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘). */ - CorrelationId: string; - transferStatus: - | "ERROR_OCCURRED" - | "WAITING_FOR_PARTY_ACCEPTANCE" - | "WAITING_FOR_QUOTE_ACCEPTANCE" - | "COMPLETED"; - /** Data model for the complex type Money. */ - Money: { - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - }; - /** The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z indicates Zulu time zone, same as UTC). */ - DateTime: string; - /** The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. */ - Latitude: string; - /** The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. */ - Longitude: string; - /** Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated. */ - GeoCode: { - latitude: components["schemas"]["Latitude"]; - longitude: components["schemas"]["Longitude"]; - }; - /** Information for recipient (transport layer information). */ - IlpPacket: string; - /** Condition that must be attached to the transfer by the Payer. */ - IlpCondition: string; - /** Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment. */ - ExtensionList: { - /** Number of Extension elements. */ - extension: components["schemas"]["Extension"][]; - }; - /** The object sent in the PUT /quotes/{ID} callback. */ - QuotesIDPutResponse: { - transferAmount: components["schemas"]["Money"]; - payeeReceiveAmount?: components["schemas"]["Money"]; - payeeFspFee?: components["schemas"]["Money"]; - payeeFspCommission?: components["schemas"]["Money"]; - expiration: components["schemas"]["DateTime"]; - geoCode?: components["schemas"]["GeoCode"]; - ilpPacket: components["schemas"]["IlpPacket"]; - condition: components["schemas"]["IlpCondition"]; - extensionList?: components["schemas"]["ExtensionList"]; - }; - /** Fulfilment that must be attached to the transfer by the Payee. */ - IlpFulfilment: string; - /** - * Below are the allowed values for the enumeration. - * - RECEIVED - Next ledger has received the transfer. - * - RESERVED - Next ledger has reserved the transfer. - * - COMMITTED - Next ledger has successfully performed the transfer. - * - ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer. - */ - TransferState: "RECEIVED" | "RESERVED" | "COMMITTED" | "ABORTED"; - /** The object sent in the PUT /transfers/{ID} callback. */ - TransfersIDPutResponse: { - fulfilment?: components["schemas"]["IlpFulfilment"]; - completedTimestamp?: components["schemas"]["DateTime"]; - transferState: components["schemas"]["TransferState"]; - extensionList?: components["schemas"]["ExtensionList"]; - }; - /** The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error. */ - ErrorCode: string; - /** Error description string. */ - ErrorDescription: string; - /** Data model for the complex type ErrorInformation. */ - ErrorInformation: { - errorCode: components["schemas"]["ErrorCode"]; - errorDescription: components["schemas"]["ErrorDescription"]; - extensionList?: components["schemas"]["ExtensionList"]; - }; - mojaloopError: { - errorInformation?: components["schemas"]["ErrorInformation"]; - }; - /** This object represents a Mojaloop API error received at any time during the transfer process */ - transferError: { - /** The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response. */ - httpStatusCode?: number; - /** If a transfer process results in an error callback during the asynchronous Mojaloop API exchange, this property will contain the underlying Mojaloop API error object. */ - mojaloopError?: components["schemas"]["mojaloopError"]; - }; - transferResponse: { - transferId?: components["schemas"]["CorrelationId"]; - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - transactionType: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - currentState?: components["schemas"]["transferStatus"]; - quoteId?: components["schemas"]["CorrelationId"]; - getPartiesResponse?: { - body: { [key: string]: unknown }; - headers?: { [key: string]: unknown }; - }; - quoteResponse?: { - body: components["schemas"]["QuotesIDPutResponse"]; - headers?: { [key: string]: unknown }; - }; - /** FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. */ - quoteResponseSource?: string; - fulfil?: { - body: components["schemas"]["TransfersIDPutResponse"]; - headers?: { [key: string]: unknown }; - }; - /** Object representing the last error to occur during a transfer process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ - lastError?: components["schemas"]["transferError"]; - /** Set to true if supplying an FSPID for the payee party and no party resolution is needed. This may be useful is a previous party resolution has been performed. */ - skipPartyLookup?: boolean; - }; - errorResponse: { - /** Error code as string. */ - statusCode?: string; - /** Error message text. */ - message?: string; - }; - errorTransferResponse: components["schemas"]["errorResponse"] & { - transferState: components["schemas"]["transferResponse"]; - }; - transferStatusResponse: { - transferId: components["schemas"]["CorrelationId"]; - currentState: components["schemas"]["transferStatus"]; - fulfil: { - body: components["schemas"]["TransfersIDPutResponse"]; - headers?: { [key: string]: unknown }; - }; - }; - transferContinuationAcceptParty: { - acceptParty: true; - }; - transferContinuationAcceptQuote: { - acceptQuote: true | false; - }; - /** Data model for the complex type 'individualTransfer'. */ - individualTransfer: { - transferId: components["schemas"]["CorrelationId"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount?: components["schemas"]["Amount"]; - transactionType: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - extensions?: components["schemas"]["ExtensionList"]; - }; - bulkTransferRequest: { - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId: string; - bulkTransferId?: components["schemas"]["CorrelationId"]; - from: components["schemas"]["transferParty"]; - /** List of individual transfers in a bulk transfer. */ - individualTransfers: components["schemas"]["individualTransfer"][]; - extensions?: components["schemas"]["ExtensionList"]; - }; - individualTransferResult: { - transferId?: components["schemas"]["CorrelationId"]; - to?: components["schemas"]["transferParty"]; - amountType?: components["schemas"]["AmountType"]; - currency?: components["schemas"]["Currency"]; - amount?: components["schemas"]["Amount"]; - transactionType?: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - quoteId?: components["schemas"]["CorrelationId"]; - quoteResponse?: components["schemas"]["QuotesIDPutResponse"]; - /** FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. */ - quoteResponseSource?: string; - fulfil?: components["schemas"]["TransfersIDPutResponse"]; - /** Object representing the last error to occur during a transfer process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ - lastError?: components["schemas"]["transferError"]; - }; - bulkTransferResponse: { - transferId?: components["schemas"]["CorrelationId"]; - from: components["schemas"]["transferParty"]; - /** List of individual transfer result in a bulk transfer response. */ - individualTransferResults: components["schemas"]["individualTransferResult"][]; - }; - bulkTransferErrorResponse: components["schemas"]["errorResponse"] & - ({ - bulkTransferState?: components["schemas"]["bulkTransferResponse"]; - } & { - bulkTansferState: unknown; - }); - bulkTransferStatus: "ERROR_OCCURRED" | "COMPLETED"; - /** A Mojaloop API transfer fulfilment for individual transfers in a bulk transfer */ - individualTransferFulfilment: { - /** Fulfilment of the condition specified with the transaction. Mandatory if transfer has completed successfully. */ - fulfilment?: components["schemas"]["IlpFulfilment"]; - /** Optional extension, specific to deployment. */ - extensionList?: components["schemas"]["ExtensionList"]; - }; - bulkTransferStatusResponse: { - bulkTransferId: components["schemas"]["CorrelationId"]; - currentState: components["schemas"]["bulkTransferStatus"]; - fulfils: components["schemas"]["individualTransferFulfilment"][]; - }; - /** Data model for the complex type 'individualQuote'. */ - individualQuote: { - quoteId: components["schemas"]["CorrelationId"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount?: components["schemas"]["Amount"]; - transactionType: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - extensions?: components["schemas"]["ExtensionList"]; - }; - bulkQuoteRequest: { - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId: string; - bulkQuoteId?: components["schemas"]["CorrelationId"]; - from: components["schemas"]["transferParty"]; - /** List of individual quotes in a bulk quote. */ - individualQuotes: components["schemas"]["individualQuote"][]; - extensions?: components["schemas"]["ExtensionList"]; - }; - /** This object represents a Mojaloop API error received at any time during the quote process */ - quoteError: { - /** The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response. */ - httpStatusCode?: number; - /** If a quote process results in an error callback during the asynchronous Mojaloop API exchange, this property will contain the underlying Mojaloop API error object. */ - mojaloopError?: components["schemas"]["mojaloopError"]; - }; - individualQuoteResult: { - quoteId?: components["schemas"]["CorrelationId"]; - to?: components["schemas"]["transferParty"]; - amountType?: components["schemas"]["AmountType"]; - currency?: components["schemas"]["Currency"]; - amount?: components["schemas"]["Amount"]; - transactionType?: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - /** Object representing the last error to occur during a quote process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ - lastError?: components["schemas"]["quoteError"]; - }; - bulkQuoteResponse: { - quoteId?: components["schemas"]["CorrelationId"]; - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId?: string; - from: components["schemas"]["transferParty"]; - /** List of individualQuoteResults in a bulk transfer response. */ - individualQuoteResults: components["schemas"]["individualQuoteResult"][]; - }; - bulkQuoteErrorResponse: components["schemas"]["errorResponse"] & - ({ - bulkQuoteState?: components["schemas"]["bulkQuoteResponse"]; - } & { - bulkTansferState: unknown; - }); - bulkQuoteStatus: "ERROR_OCCURRED" | "COMPLETED"; - bulkQuoteStatusResponse: { - bulkQuoteId: components["schemas"]["CorrelationId"]; - currentState: components["schemas"]["bulkQuoteStatus"]; - individualQuotes: components["schemas"]["individualQuote"][]; - }; - /** - * Below are the allowed values for the enumeration. - * - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a normal scenario, electronic funds are transferred from a Business account to a Consumer account, and physical cash is given from the Consumer to the Business User. - * - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. In a normal scenario, electronic funds are transferred from a Consumer’s account to a Business account, and physical cash is given from the Business User to the Consumer. - * - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to Consumer) transaction. - * - PAYMENT - Usually used for performing a transaction from a Consumer to a Merchant or Organization, but could also be for a B2B (Business to Business) payment. The transaction could be online for a purchase in an Internet store, in a physical store where both the Consumer and Business User are present, a bill payment, a donation, and so on. - * - REFUND - Used for performing a refund of transaction. - */ - TransactionScenario: - | "DEPOSIT" - | "WITHDRAWAL" - | "TRANSFER" - | "PAYMENT" - | "REFUND"; - /** Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type). */ - TransactionSubScenario: string; - /** - * Below are the allowed values for the enumeration. - * - PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way. - * - PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device. - */ - TransactionInitiator: "PAYER" | "PAYEE"; - /** Reason for the refund. */ - RefundReason: string; - /** Data model for the complex type Refund. */ - Refund: { - originalTransactionId: components["schemas"]["CorrelationId"]; - refundReason?: components["schemas"]["RefundReason"]; - }; - /** (BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. */ - BalanceOfPayments: string; - /** Data model for the complex type TransactionType. */ - TransactionType: { - scenario: components["schemas"]["TransactionScenario"]; - subScenario?: components["schemas"]["TransactionSubScenario"]; - initiator: components["schemas"]["TransactionInitiator"]; - initiatorType: components["schemas"]["TransactionInitiatorType"]; - refundInfo?: components["schemas"]["Refund"]; - balanceOfPayments?: components["schemas"]["BalanceOfPayments"]; - }; - requestToPayRequest: { - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - scenario: components["schemas"]["TransactionType"]; - initiator: components["schemas"]["TransactionInitiator"]; - initiatorType: components["schemas"]["TransactionInitiatorType"]; - }; - /** - * Below are the allowed values for the enumeration AuthenticationType. - * - OTP - One-time password generated by the Payer FSP. - * - QRCODE - QR code used as One Time Password. - * - U2F - U2F is a new addition isolated to Thirdparty stream. - */ - AuthenticationType: "OTP" | "QRCODE" | "U2F"; - /** - * Below are the allowed values for the enumeration. - * - RECEIVED - Payer FSP has received the transaction from the Payee FSP. - * - PENDING - Payer FSP has sent the transaction request to the Payer. - * - ACCEPTED - Payer has approved the transaction. - * - REJECTED - Payer has rejected the transaction. - */ - TransactionRequestState: "RECEIVED" | "PENDING" | "ACCEPTED" | "REJECTED"; - requestToPayResponse: { - transactionRequestId: components["schemas"]["CorrelationId"]; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - scenario?: components["schemas"]["TransactionType"]; - initiator?: components["schemas"]["TransactionInitiator"]; - initiatorType?: components["schemas"]["TransactionInitiatorType"]; - authenticationType?: components["schemas"]["AuthenticationType"]; - requestToPayState: components["schemas"]["TransactionRequestState"]; - } & { - transactionType: unknown; - }; - requestToPayTransferRequest: { - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - requestToPayTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - scenario: components["schemas"]["TransactionType"]; - initiator: components["schemas"]["TransactionInitiator"]; - initiatorType: components["schemas"]["TransactionInitiatorType"]; - note?: components["schemas"]["Note"]; - }; - requestToPayTransferResponse: { - transferId?: components["schemas"]["CorrelationId"]; - /** Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - requestToPayTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - transactionType: components["schemas"]["transactionType"]; - note?: components["schemas"]["Note"]; - currentState?: components["schemas"]["transferStatus"]; - quoteId?: components["schemas"]["CorrelationId"]; - quoteResponse?: components["schemas"]["QuotesIDPutResponse"]; - /** FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. */ - quoteResponseSource?: string; - fulfil?: components["schemas"]["TransfersIDPutResponse"]; - /** Object representing the last error to occur during a transfer process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ - lastError?: components["schemas"]["transferError"]; - }; - transferContinuationAcceptOTP: { - acceptOTP: true | false; - }; - accountsRequest: { - idType: components["schemas"]["PartyIdType"]; - idValue: components["schemas"]["PartyIdentifier"]; - idSubValue?: components["schemas"]["PartySubIdOrType"]; - currency: components["schemas"]["Currency"]; - }[]; - accountCreationStatus: { - idType: components["schemas"]["PartyIdType"]; - idValue: components["schemas"]["PartyIdentifier"]; - idSubValue?: components["schemas"]["PartySubIdOrType"]; - error?: components["schemas"]["errorResponse"]; - }[]; - accountsCreationState: "ERROR_OCCURRED" | "COMPLETED"; - accountsResponse: { - modelId?: components["schemas"]["CorrelationId"]; - accounts: components["schemas"]["accountsRequest"]; - response?: components["schemas"]["accountCreationStatus"]; - currentState?: components["schemas"]["accountsCreationState"]; - lastError?: components["schemas"]["transferError"]; - postAccountsResponse?: { - body: { [key: string]: unknown }; - headers?: { [key: string]: unknown }; - }; - }; - errorAccountsResponse: components["schemas"]["errorResponse"] & { - executionState: components["schemas"]["accountsResponse"]; - }; - /** Data model for the complex type PartyIdInfo. */ - PartyIdInfo: { - partyIdType: components["schemas"]["PartyIdType"]; - partyIdentifier: components["schemas"]["PartyIdentifier"]; - partySubIdOrType?: components["schemas"]["PartySubIdOrType"]; - fspId?: components["schemas"]["FspId"]; - extensionList?: components["schemas"]["ExtensionList"]; - }; - /** Name of the Party. Could be a real name or a nickname. */ - PartyName: string; - /** Data model for the complex type PartyComplexName. */ - PartyComplexName: { - firstName?: components["schemas"]["FirstName"]; - middleName?: components["schemas"]["MiddleName"]; - lastName?: components["schemas"]["LastName"]; - }; - /** Data model for the complex type PartyPersonalInfo. */ - PartyPersonalInfo: { - complexName?: components["schemas"]["PartyComplexName"]; - dateOfBirth?: components["schemas"]["DateOfBirth"]; - }; - /** Data model for the complex type Party. */ - Party: { - partyIdInfo: components["schemas"]["PartyIdInfo"]; - merchantClassificationCode?: components["schemas"]["MerchantClassificationCode"]; - name?: components["schemas"]["PartyName"]; - personalInfo?: components["schemas"]["PartyPersonalInfo"]; - }; - async2SyncCurrentState: - | "WAITING_FOR_ACTION" - | "COMPLETED" - | "ERROR_OCCURRED"; - /** GET /parties/{Type}/{ID} response object */ - partiesByIdResponse: { - party: { - /** Information regarding the requested Party. */ - body: components["schemas"]["Party"]; - headers: { [key: string]: unknown }; - }; - currentState: components["schemas"]["async2SyncCurrentState"]; - }; - /** The object sent in the POST /quotes request. */ - QuotesPostRequest: { - /** Common ID between the FSPs for the quote object, decided by the Payer FSP. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction. */ - quoteId: components["schemas"]["CorrelationId"]; - /** Common ID (decided by the Payer FSP) between the FSPs for the future transaction object. The actual transaction will be created as part of a successful transfer process. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction. */ - transactionId: components["schemas"]["CorrelationId"]; - /** Identifies an optional previously-sent transaction request. */ - transactionRequestId?: components["schemas"]["CorrelationId"]; - /** Information about the Payee in the proposed financial transaction. */ - payee: components["schemas"]["Party"]; - /** Information about the Payer in the proposed financial transaction. */ - payer: components["schemas"]["Party"]; - /** SEND for send amount, RECEIVE for receive amount. */ - amountType: components["schemas"]["AmountType"]; - /** Depending on amountType - If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities. */ - amount: components["schemas"]["Money"]; - /** The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed. */ - fees?: components["schemas"]["Money"]; - /** Type of transaction for which the quote is requested. */ - transactionType: components["schemas"]["TransactionType"]; - /** Longitude and Latitude of the initiating Party. Can be used to detect fraud. */ - geoCode?: components["schemas"]["GeoCode"]; - /** A memo that will be attached to the transaction. */ - note?: components["schemas"]["Note"]; - /** Expiration is optional. It can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, and Merchant to know that their request has a time limit. */ - expiration?: components["schemas"]["DateTime"]; - /** Optional extension, specific to deployment. */ - extensionList?: components["schemas"]["ExtensionList"]; - }; - quotesPostRequest: { - fspId: components["schemas"]["FspId"]; - quotesPostRequest: components["schemas"]["QuotesPostRequest"]; - }; - quotesPostResponse: { - /** The object sent in the PUT /quotes/{ID} callback. */ - quotes: { - body: { - transferAmount: components["schemas"]["Money"]; - payeeReceiveAmount?: components["schemas"]["Money"]; - payeeFspFee?: components["schemas"]["Money"]; - payeeFspCommission?: components["schemas"]["Money"]; - /** Date and time until when the quotation is valid and can be honored when used in the subsequent transaction. */ - expiration: string; - geoCode?: components["schemas"]["GeoCode"]; - ilpPacket: components["schemas"]["IlpPacket"]; - condition: components["schemas"]["IlpCondition"]; - extensionList?: components["schemas"]["ExtensionList"]; - }; - headers: { [key: string]: unknown }; - }; - currentState: components["schemas"]["async2SyncCurrentState"]; - }; - errorQuotesResponse: components["schemas"]["errorResponse"] & { - [key: string]: unknown; - }; - /** The object sent in the POST /transfers request. */ - TransfersPostRequest: { - transferId: components["schemas"]["CorrelationId"]; - payeeFsp: components["schemas"]["FspId"]; - payerFsp: components["schemas"]["FspId"]; - amount: components["schemas"]["Money"]; - ilpPacket: components["schemas"]["IlpPacket"]; - condition: components["schemas"]["IlpCondition"]; - expiration: components["schemas"]["DateTime"]; - extensionList?: components["schemas"]["ExtensionList"]; - }; - simpleTransfersPostRequest: { - fspId: components["schemas"]["FspId"]; - transfersPostRequest: components["schemas"]["TransfersPostRequest"]; - }; - simpleTransfersPostResponse: { - transfer: { - body: components["schemas"]["TransfersIDPutResponse"]; - headers: { [key: string]: unknown }; - }; - currentState: components["schemas"]["async2SyncCurrentState"]; - }; - errorSimpleTransfersResponse: components["schemas"]["errorResponse"] & { - [key: string]: unknown; - }; - }; - responses: { - /** Transfer completed successfully */ - transferSuccess: { - content: { - "application/json": components["schemas"]["transferResponse"]; - }; - }; - /** Malformed or missing required body, headers or parameters */ - transferBadRequest: { - content: { - "application/json": components["schemas"]["errorTransferResponse"]; - }; - }; - /** An error occurred processing the transfer */ - transferServerError: { - content: { - "application/json": components["schemas"]["errorTransferResponse"]; - }; - }; - /** Timeout occurred processing the transfer */ - transferTimeout: { - content: { - "application/json": components["schemas"]["errorTransferResponse"]; - }; - }; - /** Bulk transfer completed successfully */ - bulkTransferSuccess: { - content: { - "application/json": components["schemas"]["bulkTransferResponse"]; - }; - }; - /** Malformed or missing required body, headers or parameters */ - bulkTransferBadRequest: { - content: { - "application/json": components["schemas"]["bulkTransferErrorResponse"]; - }; - }; - /** An error occurred processing the bulk transfer */ - bulkTransferServerError: { - content: { - "application/json": components["schemas"]["bulkTransferErrorResponse"]; - }; - }; - /** Timeout occurred processing the bulk transfer */ - bulkTransferTimeout: { - content: { - "application/json": components["schemas"]["bulkTransferErrorResponse"]; - }; - }; - /** Bulk quote completed successfully */ - bulkQuoteSuccess: { - content: { - "application/json": components["schemas"]["bulkQuoteResponse"]; - }; - }; - /** Malformed or missing required body, headers or parameters */ - bulkQuoteBadRequest: { - content: { - "application/json": components["schemas"]["bulkQuoteErrorResponse"]; - }; - }; - /** An error occurred processing the bulk quote */ - bulkQuoteServerError: { - content: { - "application/json": components["schemas"]["bulkQuoteErrorResponse"]; - }; - }; - /** Timeout occurred processing the bulk quote */ - bulkQuoteTimeout: { - content: { - "application/json": components["schemas"]["bulkQuoteErrorResponse"]; - }; - }; - /** Request to Pay completed successfully */ - requestToPaySuccess: { - content: { - "application/json": components["schemas"]["requestToPayResponse"]; - }; - }; - /** Transfer completed successfully */ - requestToPayTransferSuccess: { - content: { - "application/json": components["schemas"]["requestToPayTransferResponse"]; - }; - }; - /** Malformed or missing required body, headers or parameters */ - requestToPayTransferBadRequest: { - content: { - "application/json": components["schemas"]["errorTransferResponse"]; - }; - }; - /** Accounts creation completed */ - accountsCreationCompleted: { - content: { - "application/json": components["schemas"]["accountsResponse"]; - }; - }; - /** An error occurred creating accounts */ - accountsCreationError: { - content: { - "application/json": components["schemas"]["errorAccountsResponse"]; - }; - }; - /** Timeout occurred creating accounts */ - accountsCreationTimeout: { - content: { - "application/json": components["schemas"]["errorAccountsResponse"]; - }; - }; - /** PartiesByIdSuccess */ - partiesByIdSuccess: { - content: { - "application/json": components["schemas"]["partiesByIdResponse"]; - }; - }; - /** PartiesByIdError404 */ - partiesByIdError404: { - content: { - "application/json": { - errorInformation?: components["schemas"]["ErrorInformation"]; - }; - }; - }; - /** sync response from POST /quotes */ - quotesPostSuccess: { - content: { - "application/json": components["schemas"]["quotesPostResponse"]; - }; - }; - /** An error occurred processing the quotes request */ - quotesServerError: { - content: { - "application/json": components["schemas"]["errorQuotesResponse"]; - }; - }; - /** sync response from POST /simpleTransfers */ - simpleTransfersPostSuccess: { - content: { - "application/json": components["schemas"]["simpleTransfersPostResponse"]; - }; - }; - /** An error occurred processing the simple transfers request */ - simpleTransfersServerError: { - content: { - "application/json": components["schemas"]["errorSimpleTransfersResponse"]; - }; - }; - }; - parameters: { - /** Identifier of the transfer to continue as returned in the response to a `POST /transfers` request. */ - transferId: components["schemas"]["CorrelationId"]; - /** Identifier of the bulk transfer to continue as returned in the response to a `POST /bulkTransfers` request. */ - bulkTransferId: components["schemas"]["CorrelationId"]; - /** Identifier of the bulk transfer to continue as returned in the response to a `POST /bulkTransfers` request. */ - bulkQuoteId: components["schemas"]["CorrelationId"]; - /** Identifier of the merchant request to pay transfer to continue as returned in the response to a `POST /requestToPayTransfer` request. */ - requestToPayTransactionId: components["schemas"]["CorrelationId"]; - /** The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. */ - Type: string; - /** The identifier value. */ - ID: string; - /** A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. */ - SubId: string; - }; -} - -export interface operations { - /** The HTTP request GET /parties// (or GET /parties///) is used to lookup information regarding the requested Party, defined by , and optionally (for example, GET /parties/MSISDN/123456789, or GET /parties/BUSINESS/shoecompany/employee1). */ - PartiesByTypeAndID: { - parameters: { - path: { - /** The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. */ - Type: components["parameters"]["Type"]; - /** The identifier value. */ - ID: components["parameters"]["ID"]; - }; - }; - responses: { - 200: components["responses"]["partiesByIdSuccess"]; - 404: components["responses"]["partiesByIdError404"]; - }; - }; - /** The HTTP request GET /parties// (or GET /parties///) is used to lookup information regarding the requested Party, defined by , and optionally (for example, GET /parties/MSISDN/123456789, or GET /parties/BUSINESS/shoecompany/employee1). */ - PartiesSubIdByTypeAndID: { - parameters: { - path: { - /** The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. */ - Type: components["parameters"]["Type"]; - /** The identifier value. */ - ID: components["parameters"]["ID"]; - /** A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. */ - SubId: components["parameters"]["SubId"]; - }; - }; - responses: { - 200: components["responses"]["partiesByIdSuccess"]; - 404: components["responses"]["partiesByIdError404"]; - }; - }; - /** is used to request quotes from other DFSP */ - QuotesPost: { - responses: { - 200: components["responses"]["quotesPostSuccess"]; - 500: components["responses"]["quotesServerError"]; - }; - /** Quotes request payload */ - requestBody: { - content: { - "application/json": components["schemas"]["quotesPostRequest"]; - }; - }; - }; - /** is used to request a transfer */ - SimpleTransfersPost: { - responses: { - 200: components["responses"]["simpleTransfersPostSuccess"]; - 500: components["responses"]["simpleTransfersServerError"]; - }; - /** Simple Transfer request payload */ - requestBody: { - content: { - "application/json": components["schemas"]["simpleTransfersPostRequest"]; - }; - }; - }; -} - -export interface external {} diff --git a/src/OutboundServer/api_template/components/parameters/bulkQuoteId.yaml b/src/OutboundServer/api_template/components/parameters/bulkQuoteId.yaml deleted file mode 100644 index e8d986b9e..000000000 --- a/src/OutboundServer/api_template/components/parameters/bulkQuoteId.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: bulkQuoteId -in: path -required: true -schema: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml -description: >- - Identifier of the bulk transfer to continue as returned in the response to a - `POST /bulkTransfers` request. diff --git a/src/OutboundServer/api_template/components/parameters/bulkTransferId.yaml b/src/OutboundServer/api_template/components/parameters/bulkTransferId.yaml deleted file mode 100644 index 8ad85cebb..000000000 --- a/src/OutboundServer/api_template/components/parameters/bulkTransferId.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: bulkTransferId -in: path -required: true -schema: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml -description: >- - Identifier of the bulk transfer to continue as returned in the response to a - `POST /bulkTransfers` request. diff --git a/src/OutboundServer/api_template/components/parameters/requestToPayTransactionId.yaml b/src/OutboundServer/api_template/components/parameters/requestToPayTransactionId.yaml deleted file mode 100644 index 9ddea9732..000000000 --- a/src/OutboundServer/api_template/components/parameters/requestToPayTransactionId.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: requestToPayTransactionId -in: path -required: true -schema: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml -description: >- - Identifier of the merchant request to pay transfer to continue as returned in - the response to a `POST /requestToPayTransfer` request. diff --git a/src/OutboundServer/api_template/components/parameters/transferId.yaml b/src/OutboundServer/api_template/components/parameters/transferId.yaml deleted file mode 100644 index b741f6341..000000000 --- a/src/OutboundServer/api_template/components/parameters/transferId.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: transferId -in: path -required: true -schema: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml -description: >- - Identifier of the transfer to continue as returned in the response to a `POST - /transfers` request. diff --git a/src/OutboundServer/api_template/components/responses/accountsCreationCompleted.yaml b/src/OutboundServer/api_template/components/responses/accountsCreationCompleted.yaml deleted file mode 100644 index e861bd29f..000000000 --- a/src/OutboundServer/api_template/components/responses/accountsCreationCompleted.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Accounts creation completed -content: - application/json: - schema: - $ref: ../schemas/accountsResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/accountsCreationError.yaml b/src/OutboundServer/api_template/components/responses/accountsCreationError.yaml deleted file mode 100644 index 3ca5a2ac6..000000000 --- a/src/OutboundServer/api_template/components/responses/accountsCreationError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred creating accounts -content: - application/json: - schema: - $ref: ../schemas/errorAccountsResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/accountsCreationTimeout.yaml b/src/OutboundServer/api_template/components/responses/accountsCreationTimeout.yaml deleted file mode 100644 index 73e82b733..000000000 --- a/src/OutboundServer/api_template/components/responses/accountsCreationTimeout.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Timeout occurred creating accounts -content: - application/json: - schema: - $ref: ../schemas/errorAccountsResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkQuoteBadRequest.yaml b/src/OutboundServer/api_template/components/responses/bulkQuoteBadRequest.yaml deleted file mode 100644 index f32720e67..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkQuoteBadRequest.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: 'Malformed or missing required body, headers or parameters' -content: - application/json: - schema: - $ref: ../schemas/bulkQuoteErrorResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkQuoteServerError.yaml b/src/OutboundServer/api_template/components/responses/bulkQuoteServerError.yaml deleted file mode 100644 index 79e5559fb..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkQuoteServerError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred processing the bulk quote -content: - application/json: - schema: - $ref: ../schemas/bulkQuoteErrorResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkQuoteSuccess.yaml b/src/OutboundServer/api_template/components/responses/bulkQuoteSuccess.yaml deleted file mode 100644 index 4eca647a8..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkQuoteSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Bulk quote completed successfully -content: - application/json: - schema: - $ref: ../schemas/bulkQuoteResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkQuoteTimeout.yaml b/src/OutboundServer/api_template/components/responses/bulkQuoteTimeout.yaml deleted file mode 100644 index 8ffd7cb64..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkQuoteTimeout.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Timeout occurred processing the bulk quote -content: - application/json: - schema: - $ref: ../schemas/bulkQuoteErrorResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkTransferBadRequest.yaml b/src/OutboundServer/api_template/components/responses/bulkTransferBadRequest.yaml deleted file mode 100644 index 765e343f9..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkTransferBadRequest.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: 'Malformed or missing required body, headers or parameters' -content: - application/json: - schema: - $ref: ../schemas/bulkTransferErrorResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkTransferServerError.yaml b/src/OutboundServer/api_template/components/responses/bulkTransferServerError.yaml deleted file mode 100644 index 6a15edb39..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkTransferServerError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred processing the bulk transfer -content: - application/json: - schema: - $ref: ../schemas/bulkTransferErrorResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkTransferSuccess.yaml b/src/OutboundServer/api_template/components/responses/bulkTransferSuccess.yaml deleted file mode 100644 index 02ac2383d..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkTransferSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Bulk transfer completed successfully -content: - application/json: - schema: - $ref: ../schemas/bulkTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/bulkTransferTimeout.yaml b/src/OutboundServer/api_template/components/responses/bulkTransferTimeout.yaml deleted file mode 100644 index 2e56d2ec4..000000000 --- a/src/OutboundServer/api_template/components/responses/bulkTransferTimeout.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Timeout occurred processing the bulk transfer -content: - application/json: - schema: - $ref: ../schemas/bulkTransferErrorResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/partiesByIdError404.yaml b/src/OutboundServer/api_template/components/responses/partiesByIdError404.yaml deleted file mode 100644 index d80e1a195..000000000 --- a/src/OutboundServer/api_template/components/responses/partiesByIdError404.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: PartiesByIdError404 -content: - application/json: - schema: - type: object - properties: - errorInformation: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ErrorInformation.yaml diff --git a/src/OutboundServer/api_template/components/responses/partiesByIdSuccess.yaml b/src/OutboundServer/api_template/components/responses/partiesByIdSuccess.yaml deleted file mode 100644 index f2952e967..000000000 --- a/src/OutboundServer/api_template/components/responses/partiesByIdSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: PartiesByIdSuccess -content: - application/json: - schema: - $ref: ../schemas/partiesByIdResponse.yaml \ No newline at end of file diff --git a/src/OutboundServer/api_template/components/responses/quotesPostSuccess.yaml b/src/OutboundServer/api_template/components/responses/quotesPostSuccess.yaml deleted file mode 100644 index 6d3f489cd..000000000 --- a/src/OutboundServer/api_template/components/responses/quotesPostSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: sync response from POST /quotes -content: - application/json: - schema: - $ref: ../schemas/quotesPostResponse.yaml \ No newline at end of file diff --git a/src/OutboundServer/api_template/components/responses/quotesServerError.yaml b/src/OutboundServer/api_template/components/responses/quotesServerError.yaml deleted file mode 100644 index f312ba987..000000000 --- a/src/OutboundServer/api_template/components/responses/quotesServerError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred processing the quotes request -content: - application/json: - schema: - $ref: ../schemas/errorQuotesResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/requestToPaySuccess.yaml b/src/OutboundServer/api_template/components/responses/requestToPaySuccess.yaml deleted file mode 100644 index 2014ec8b9..000000000 --- a/src/OutboundServer/api_template/components/responses/requestToPaySuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Request to Pay completed successfully -content: - application/json: - schema: - $ref: ../schemas/requestToPayResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/requestToPayTransferBadRequest.yaml b/src/OutboundServer/api_template/components/responses/requestToPayTransferBadRequest.yaml deleted file mode 100644 index c66fccbe5..000000000 --- a/src/OutboundServer/api_template/components/responses/requestToPayTransferBadRequest.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: 'Malformed or missing required body, headers or parameters' -content: - application/json: - schema: - $ref: ../schemas/errorTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/requestToPayTransferSuccess.yaml b/src/OutboundServer/api_template/components/responses/requestToPayTransferSuccess.yaml deleted file mode 100644 index c59135784..000000000 --- a/src/OutboundServer/api_template/components/responses/requestToPayTransferSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Transfer completed successfully -content: - application/json: - schema: - $ref: ../schemas/requestToPayTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/simpleTransfersPostSuccess.yaml b/src/OutboundServer/api_template/components/responses/simpleTransfersPostSuccess.yaml deleted file mode 100644 index a474babff..000000000 --- a/src/OutboundServer/api_template/components/responses/simpleTransfersPostSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: sync response from POST /simpleTransfers -content: - application/json: - schema: - $ref: ../schemas/simpleTransfersPostResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/simpleTransfersServerError.yaml b/src/OutboundServer/api_template/components/responses/simpleTransfersServerError.yaml deleted file mode 100644 index 4a250775e..000000000 --- a/src/OutboundServer/api_template/components/responses/simpleTransfersServerError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred processing the simple transfers request -content: - application/json: - schema: - $ref: ../schemas/errorSimpleTransfersResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/transferBadRequest.yaml b/src/OutboundServer/api_template/components/responses/transferBadRequest.yaml deleted file mode 100644 index c66fccbe5..000000000 --- a/src/OutboundServer/api_template/components/responses/transferBadRequest.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: 'Malformed or missing required body, headers or parameters' -content: - application/json: - schema: - $ref: ../schemas/errorTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/transferServerError.yaml b/src/OutboundServer/api_template/components/responses/transferServerError.yaml deleted file mode 100644 index af6acc48e..000000000 --- a/src/OutboundServer/api_template/components/responses/transferServerError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred processing the transfer -content: - application/json: - schema: - $ref: ../schemas/errorTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/transferSuccess.yaml b/src/OutboundServer/api_template/components/responses/transferSuccess.yaml deleted file mode 100644 index f6a20abf3..000000000 --- a/src/OutboundServer/api_template/components/responses/transferSuccess.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Transfer completed successfully -content: - application/json: - schema: - $ref: ../schemas/transferResponse.yaml diff --git a/src/OutboundServer/api_template/components/responses/transferTimeout.yaml b/src/OutboundServer/api_template/components/responses/transferTimeout.yaml deleted file mode 100644 index cb1191f4d..000000000 --- a/src/OutboundServer/api_template/components/responses/transferTimeout.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Timeout occurred processing the transfer -content: - application/json: - schema: - $ref: ../schemas/errorTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml b/src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml deleted file mode 100644 index 0ea0952b6..000000000 --- a/src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +++ /dev/null @@ -1,18 +0,0 @@ -type: array -items: - type: object - required: - - idType - - idValue - properties: - idType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/thirdparty/v1_0/openapi3/components/schemas/PartyIdType.yaml - idValue: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/PartyIdentifier.yaml - idSubValue: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/PartySubIdOrType.yaml - error: - $ref: ./errorResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/accountsCreationState.yaml b/src/OutboundServer/api_template/components/schemas/accountsCreationState.yaml deleted file mode 100644 index 742301312..000000000 --- a/src/OutboundServer/api_template/components/schemas/accountsCreationState.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: string -enum: - - ERROR_OCCURRED - - COMPLETED diff --git a/src/OutboundServer/api_template/components/schemas/accountsRequest.yaml b/src/OutboundServer/api_template/components/schemas/accountsRequest.yaml deleted file mode 100644 index c485e5f61..000000000 --- a/src/OutboundServer/api_template/components/schemas/accountsRequest.yaml +++ /dev/null @@ -1,20 +0,0 @@ -type: array -items: - type: object - required: - - idType - - idValue - - currency - properties: - idType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/thirdparty/v1_0/openapi3/components/schemas/PartyIdType.yaml - idValue: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/PartyIdentifier.yaml - idSubValue: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/PartySubIdOrType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml diff --git a/src/OutboundServer/api_template/components/schemas/accountsResponse.yaml b/src/OutboundServer/api_template/components/schemas/accountsResponse.yaml deleted file mode 100644 index 133bc7cc6..000000000 --- a/src/OutboundServer/api_template/components/schemas/accountsResponse.yaml +++ /dev/null @@ -1,24 +0,0 @@ -type: object -required: - - accounts -properties: - modelId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - accounts: - $ref: ./accountsRequest.yaml - response: - $ref: ./accountCreationStatus.yaml - currentState: - $ref: ./accountsCreationState.yaml - lastError: - $ref: ./transferError.yaml - postAccountsResponse: - type: object - required: - - body - properties: - body: - type: object - headers: - type: object diff --git a/src/OutboundServer/api_template/components/schemas/async2SyncCurrentState.yaml b/src/OutboundServer/api_template/components/schemas/async2SyncCurrentState.yaml deleted file mode 100644 index 212ece551..000000000 --- a/src/OutboundServer/api_template/components/schemas/async2SyncCurrentState.yaml +++ /dev/null @@ -1,5 +0,0 @@ -type: string -enum: - - 'WAITING_FOR_ACTION' - - 'COMPLETED' - - 'ERROR_OCCURRED' diff --git a/src/OutboundServer/api_template/components/schemas/bulkQuoteErrorResponse.yaml b/src/OutboundServer/api_template/components/schemas/bulkQuoteErrorResponse.yaml deleted file mode 100644 index 692b357b3..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkQuoteErrorResponse.yaml +++ /dev/null @@ -1,8 +0,0 @@ -allOf: - - $ref: ./errorResponse.yaml - - type: object - required: - - bulkTansferState - properties: - bulkQuoteState: - $ref: ./bulkQuoteResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/bulkQuoteRequest.yaml b/src/OutboundServer/api_template/components/schemas/bulkQuoteRequest.yaml deleted file mode 100644 index 7a2b60648..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkQuoteRequest.yaml +++ /dev/null @@ -1,26 +0,0 @@ -type: object -required: - - homeTransactionId - - from - - individualQuotes -properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - bulkQuoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - from: - $ref: ./transferParty.yaml - individualQuotes: - description: List of individual quotes in a bulk quote. - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: ./individualQuote.yaml - extensions: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ExtensionList.yaml diff --git a/src/OutboundServer/api_template/components/schemas/bulkQuoteResponse.yaml b/src/OutboundServer/api_template/components/schemas/bulkQuoteResponse.yaml deleted file mode 100644 index 1a86ad2ed..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkQuoteResponse.yaml +++ /dev/null @@ -1,21 +0,0 @@ -type: object -required: - - from - - individualQuoteResults -properties: - quoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: ./transferParty.yaml - individualQuoteResults: - type: array - maxItems: 1000 - items: - $ref: ./individualQuoteResult.yaml - description: List of individualQuoteResults in a bulk transfer response. diff --git a/src/OutboundServer/api_template/components/schemas/bulkQuoteStatus.yaml b/src/OutboundServer/api_template/components/schemas/bulkQuoteStatus.yaml deleted file mode 100644 index 742301312..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkQuoteStatus.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: string -enum: - - ERROR_OCCURRED - - COMPLETED diff --git a/src/OutboundServer/api_template/components/schemas/bulkQuoteStatusResponse.yaml b/src/OutboundServer/api_template/components/schemas/bulkQuoteStatusResponse.yaml deleted file mode 100644 index 5180c02dc..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkQuoteStatusResponse.yaml +++ /dev/null @@ -1,17 +0,0 @@ -type: object -required: - - bulkQuoteId - - currentState - - individualQuotes -properties: - bulkQuoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - currentState: - $ref: ./bulkQuoteStatus.yaml - individualQuotes: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: ./individualQuote.yaml diff --git a/src/OutboundServer/api_template/components/schemas/bulkTransferErrorResponse.yaml b/src/OutboundServer/api_template/components/schemas/bulkTransferErrorResponse.yaml deleted file mode 100644 index 08d066918..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkTransferErrorResponse.yaml +++ /dev/null @@ -1,8 +0,0 @@ -allOf: - - $ref: ./errorResponse.yaml - - type: object - required: - - bulkTansferState - properties: - bulkTransferState: - $ref: ./bulkTransferResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/bulkTransferRequest.yaml b/src/OutboundServer/api_template/components/schemas/bulkTransferRequest.yaml deleted file mode 100644 index 1d53b5b2d..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkTransferRequest.yaml +++ /dev/null @@ -1,26 +0,0 @@ -type: object -required: - - homeTransactionId - - from - - individualTransfers -properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - bulkTransferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - from: - $ref: ./transferParty.yaml - individualTransfers: - description: List of individual transfers in a bulk transfer. - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: ./individualTransfer.yaml - extensions: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ExtensionList.yaml diff --git a/src/OutboundServer/api_template/components/schemas/bulkTransferResponse.yaml b/src/OutboundServer/api_template/components/schemas/bulkTransferResponse.yaml deleted file mode 100644 index c0a9bbaad..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkTransferResponse.yaml +++ /dev/null @@ -1,16 +0,0 @@ -type: object -required: - - from - - individualTransferResults -properties: - transferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - from: - $ref: ./transferParty.yaml - individualTransferResults: - type: array - maxItems: 1000 - items: - $ref: ./individualTransferResult.yaml - description: List of individual transfer result in a bulk transfer response. diff --git a/src/OutboundServer/api_template/components/schemas/bulkTransferStatus.yaml b/src/OutboundServer/api_template/components/schemas/bulkTransferStatus.yaml deleted file mode 100644 index 742301312..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkTransferStatus.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: string -enum: - - ERROR_OCCURRED - - COMPLETED diff --git a/src/OutboundServer/api_template/components/schemas/bulkTransferStatusResponse.yaml b/src/OutboundServer/api_template/components/schemas/bulkTransferStatusResponse.yaml deleted file mode 100644 index 720bfcca9..000000000 --- a/src/OutboundServer/api_template/components/schemas/bulkTransferStatusResponse.yaml +++ /dev/null @@ -1,17 +0,0 @@ -type: object -required: - - bulkTransferId - - currentState - - fulfils -properties: - bulkTransferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - currentState: - $ref: ./bulkTransferStatus.yaml - fulfils: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: ./individualTransferFulfilment.yaml diff --git a/src/OutboundServer/api_template/components/schemas/errorAccountsResponse.yaml b/src/OutboundServer/api_template/components/schemas/errorAccountsResponse.yaml deleted file mode 100644 index 68020fbcd..000000000 --- a/src/OutboundServer/api_template/components/schemas/errorAccountsResponse.yaml +++ /dev/null @@ -1,8 +0,0 @@ -allOf: - - $ref: ./errorResponse.yaml - - type: object - required: - - executionState - properties: - executionState: - $ref: ./accountsResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/errorQuotesResponse.yaml b/src/OutboundServer/api_template/components/schemas/errorQuotesResponse.yaml deleted file mode 100644 index c9da400e6..000000000 --- a/src/OutboundServer/api_template/components/schemas/errorQuotesResponse.yaml +++ /dev/null @@ -1,9 +0,0 @@ -allOf: - - $ref: ./errorResponse.yaml - - type: object - # TODO: refactor to have proper response - # required: - # - transferState - # properties: - # currentState: - # $ref: ./transferResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/errorResponse.yaml b/src/OutboundServer/api_template/components/schemas/errorResponse.yaml deleted file mode 100644 index 5501ba689..000000000 --- a/src/OutboundServer/api_template/components/schemas/errorResponse.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - statusCode: - type: string - description: Error code as string. - message: - type: string - description: Error message text. diff --git a/src/OutboundServer/api_template/components/schemas/errorSimpleTransfersResponse.yaml b/src/OutboundServer/api_template/components/schemas/errorSimpleTransfersResponse.yaml deleted file mode 100644 index 256ecdd37..000000000 --- a/src/OutboundServer/api_template/components/schemas/errorSimpleTransfersResponse.yaml +++ /dev/null @@ -1,3 +0,0 @@ -allOf: - - $ref: ./errorResponse.yaml - - type: object diff --git a/src/OutboundServer/api_template/components/schemas/errorTransferResponse.yaml b/src/OutboundServer/api_template/components/schemas/errorTransferResponse.yaml deleted file mode 100644 index bd4b79d8b..000000000 --- a/src/OutboundServer/api_template/components/schemas/errorTransferResponse.yaml +++ /dev/null @@ -1,8 +0,0 @@ -allOf: - - $ref: ./errorResponse.yaml - - type: object - required: - - transferState - properties: - transferState: - $ref: ./transferResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml b/src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml deleted file mode 100644 index e4c6c0564..000000000 --- a/src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: array -items: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Extension.yaml -minItems: 0 -maxItems: 16 diff --git a/src/OutboundServer/api_template/components/schemas/individualQuote.yaml b/src/OutboundServer/api_template/components/schemas/individualQuote.yaml deleted file mode 100644 index a08643725..000000000 --- a/src/OutboundServer/api_template/components/schemas/individualQuote.yaml +++ /dev/null @@ -1,32 +0,0 @@ -title: IndividualQuote -type: object -description: Data model for the complex type 'individualQuote'. -properties: - quoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - extensions: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ExtensionList.yaml -required: - - quoteId - - to - - amountType - - currency - - transactionType diff --git a/src/OutboundServer/api_template/components/schemas/individualQuoteResult.yaml b/src/OutboundServer/api_template/components/schemas/individualQuoteResult.yaml deleted file mode 100644 index 2cc39a7d9..000000000 --- a/src/OutboundServer/api_template/components/schemas/individualQuoteResult.yaml +++ /dev/null @@ -1,28 +0,0 @@ -type: object -properties: - quoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - lastError: - description: > - Object representing the last error to occur during a quote process. This - may be a Mojaloop API error returned from another entity in the scheme or - an object representing other types of error e.g. exceptions that may occur - inside the scheme adapter. - $ref: ./quoteError.yaml diff --git a/src/OutboundServer/api_template/components/schemas/individualTransfer.yaml b/src/OutboundServer/api_template/components/schemas/individualTransfer.yaml deleted file mode 100644 index 7e40c57fe..000000000 --- a/src/OutboundServer/api_template/components/schemas/individualTransfer.yaml +++ /dev/null @@ -1,32 +0,0 @@ -title: IndividualTransfer -type: object -description: Data model for the complex type 'individualTransfer'. -properties: - transferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - extensions: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ExtensionList.yaml -required: - - transferId - - to - - amountType - - currency - - transactionType diff --git a/src/OutboundServer/api_template/components/schemas/individualTransferFulfilment.yaml b/src/OutboundServer/api_template/components/schemas/individualTransferFulfilment.yaml deleted file mode 100644 index 1ebf8a9b1..000000000 --- a/src/OutboundServer/api_template/components/schemas/individualTransferFulfilment.yaml +++ /dev/null @@ -1,13 +0,0 @@ -type: object -description: A Mojaloop API transfer fulfilment for individual transfers in a bulk transfer -properties: - fulfilment: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/IlpFulfilment.yaml - description: > - Fulfilment of the condition specified with the transaction. Mandatory if - transfer has completed successfully. - extensionList: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ExtensionList.yaml - description: 'Optional extension, specific to deployment.' diff --git a/src/OutboundServer/api_template/components/schemas/individualTransferResult.yaml b/src/OutboundServer/api_template/components/schemas/individualTransferResult.yaml deleted file mode 100644 index 263716174..000000000 --- a/src/OutboundServer/api_template/components/schemas/individualTransferResult.yaml +++ /dev/null @@ -1,41 +0,0 @@ -type: object -properties: - transferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - quoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - quoteResponse: - $ref: ./quote.yaml - quoteResponseSource: - type: string - description: > - FSPID of the entity that supplied the quote response. This may not be the - same as the FSPID of the entity which owns the end user account in the - case of a FOREX transfer. i.e. it may be a FOREX gateway. - fulfil: - $ref: ./transferFulfilment.yaml - lastError: - description: > - Object representing the last error to occur during a transfer process. - This may be a Mojaloop API error returned from another entity in the - scheme or an object representing other types of error e.g. exceptions that - may occur inside the scheme adapter. - $ref: ./transferError.yaml diff --git a/src/OutboundServer/api_template/components/schemas/mojaloopError.yaml b/src/OutboundServer/api_template/components/schemas/mojaloopError.yaml deleted file mode 100644 index c6a6e8b24..000000000 --- a/src/OutboundServer/api_template/components/schemas/mojaloopError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -type: object -properties: - errorInformation: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ErrorInformation.yaml diff --git a/src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml b/src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml deleted file mode 100644 index 43e9ea59f..000000000 --- a/src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +++ /dev/null @@ -1,2 +0,0 @@ -$ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionRequestState.yaml diff --git a/src/OutboundServer/api_template/components/schemas/partiesByIdResponse.yaml b/src/OutboundServer/api_template/components/schemas/partiesByIdResponse.yaml deleted file mode 100644 index a22784ce9..000000000 --- a/src/OutboundServer/api_template/components/schemas/partiesByIdResponse.yaml +++ /dev/null @@ -1,20 +0,0 @@ - title: partiesByIdResponse - type: object - description: 'GET /parties/{Type}/{ID} response object' - properties: - party: - properties: - body: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/thirdparty/v1_0/openapi3/components/schemas/Party.yaml - description: Information regarding the requested Party. - headers: - type: object - required: - - body - - headers - currentState: - $ref: ../schemas/async2SyncCurrentState.yaml - required: - - party - - currentState diff --git a/src/OutboundServer/api_template/components/schemas/quote.yaml b/src/OutboundServer/api_template/components/schemas/quote.yaml deleted file mode 100644 index de261db5b..000000000 --- a/src/OutboundServer/api_template/components/schemas/quote.yaml +++ /dev/null @@ -1,3 +0,0 @@ -description: Mojaloop API response to a quote request -$ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/QuotesIDPutResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/quoteError.yaml b/src/OutboundServer/api_template/components/schemas/quoteError.yaml deleted file mode 100644 index 8f0f0eb93..000000000 --- a/src/OutboundServer/api_template/components/schemas/quoteError.yaml +++ /dev/null @@ -1,16 +0,0 @@ -type: object -description: >- - This object represents a Mojaloop API error received at any time during the - quote process -properties: - httpStatusCode: - type: integer - description: >- - The HTTP status code returned to the caller. This is the same as the - actual HTTP status code returned with the response. - mojaloopError: - description: >- - If a quote process results in an error callback during the asynchronous - Mojaloop API exchange, this property will contain the underlying Mojaloop - API error object. - $ref: ./mojaloopError.yaml diff --git a/src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml b/src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml deleted file mode 100644 index a5a2d40c4..000000000 --- a/src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +++ /dev/null @@ -1,13 +0,0 @@ -title: QuotesPostRequest -type: object -properties: - fspId: - title: destination DFSP requested to calculate the quote - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/FspId.yaml - quotesPostRequest: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/thirdparty/v1_0/openapi3/components/schemas/QuotesPostRequest.yaml -required: - - fspId - - quotesPostRequest diff --git a/src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml b/src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml deleted file mode 100644 index 43bb4831a..000000000 --- a/src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +++ /dev/null @@ -1,56 +0,0 @@ -title: QuotesPostResponse -type: object -properties: - quotes: - title: QuotesIDPutResponse - type: object - description: 'The object sent in the PUT /quotes/{ID} callback.' - properties: - body: - type: object - properties: - transferAmount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Money.yaml - payeeReceiveAmount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Money.yaml - payeeFspFee: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Money.yaml - payeeFspCommission: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Money.yaml - expiration: - type: string - description: >- - Date and time until when the quotation is valid and can be honored when - used in the subsequent transaction. - example: '2016-05-24T08:38:08.699-04:00' - geoCode: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/GeoCode.yaml - ilpPacket: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/IlpPacket.yaml - condition: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/IlpCondition.yaml - extensionList: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/ExtensionList.yaml - required: - - transferAmount - - expiration - - ilpPacket - - condition - headers: - type: object - required: - - body - - headers - currentState: - $ref: ../schemas/async2SyncCurrentState.yaml -required: - - quotes - - currentState diff --git a/src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml b/src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml deleted file mode 100644 index b2e305b7c..000000000 --- a/src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +++ /dev/null @@ -1,39 +0,0 @@ -type: object -required: - - homeTransactionId - - from - - to - - amountType - - currency - - amount - - scenario - - initiator - - initiatorType -properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: ./transferParty.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - scenario: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionType.yaml - initiator: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiator.yaml - initiatorType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiatorType.yaml diff --git a/src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml b/src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml deleted file mode 100644 index dcef53c19..000000000 --- a/src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +++ /dev/null @@ -1,41 +0,0 @@ -type: object -required: - - transactionRequestId - - from - - to - - amountType - - currency - - amount - - transactionType - - requestToPayState -properties: - transactionRequestId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - from: - $ref: ./transferParty.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - scenario: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionType.yaml - initiator: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiator.yaml - initiatorType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiatorType.yaml - authenticationType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AuthenticationType.yaml - requestToPayState: - $ref: ./mojaloopTransactionRequestState.yaml diff --git a/src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml b/src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml deleted file mode 100644 index a04ba300b..000000000 --- a/src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +++ /dev/null @@ -1,42 +0,0 @@ -type: object -required: - - requestToPayTransactionId - - from - - to - - amountType - - currency - - amount - - scenario - - initiator - - initiatorType -properties: - requestToPayTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: ./transferParty.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - scenario: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionType.yaml - initiator: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiator.yaml - initiatorType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiatorType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml diff --git a/src/OutboundServer/api_template/components/schemas/requestToPayTransferResponse.yaml b/src/OutboundServer/api_template/components/schemas/requestToPayTransferResponse.yaml deleted file mode 100644 index 6c20eea8a..000000000 --- a/src/OutboundServer/api_template/components/schemas/requestToPayTransferResponse.yaml +++ /dev/null @@ -1,58 +0,0 @@ -type: object -required: - - requestToPayTransactionId - - from - - to - - amountType - - currency - - amount - - transactionType -properties: - transferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - requestToPayTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: ./transferParty.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - currentState: - $ref: ./transferStatus.yaml - quoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - quoteResponse: - $ref: ./quote.yaml - quoteResponseSource: - type: string - description: > - FSPID of the entity that supplied the quote response. This may not be the - same as the FSPID of the entity which owns the end user account in the - case of a FOREX transfer. i.e. it may be a FOREX gateway. - fulfil: - $ref: ./transferFulfilment.yaml - lastError: - description: > - Object representing the last error to occur during a transfer process. - This may be a Mojaloop API error returned from another entity in the - scheme or an object representing other types of error e.g. exceptions that - may occur inside the scheme adapter. - $ref: ./transferError.yaml diff --git a/src/OutboundServer/api_template/components/schemas/simpleTransferServerError.yaml b/src/OutboundServer/api_template/components/schemas/simpleTransferServerError.yaml deleted file mode 100644 index 4a250775e..000000000 --- a/src/OutboundServer/api_template/components/schemas/simpleTransferServerError.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: An error occurred processing the simple transfers request -content: - application/json: - schema: - $ref: ../schemas/errorSimpleTransfersResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml b/src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml deleted file mode 100644 index 5f6ac5db3..000000000 --- a/src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +++ /dev/null @@ -1,12 +0,0 @@ -title: SimpleTransfersPostRequest -type: object -properties: - fspId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/FspId.yaml - transfersPostRequest: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransfersPostRequest.yaml -required: - - fspId - - transfersPostRequest diff --git a/src/OutboundServer/api_template/components/schemas/simpleTransfersPostResponse.yaml b/src/OutboundServer/api_template/components/schemas/simpleTransfersPostResponse.yaml deleted file mode 100644 index 7b254d0cf..000000000 --- a/src/OutboundServer/api_template/components/schemas/simpleTransfersPostResponse.yaml +++ /dev/null @@ -1,18 +0,0 @@ -title: SimpleTransfersPostResponse -type: object -properties: - transfer: - properties: - body: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransfersIDPutResponse.yaml - headers: - type: object - required: - - body - - headers - currentState: - $ref: ../schemas/async2SyncCurrentState.yaml -required: - - transfer - - currentState diff --git a/src/OutboundServer/api_template/components/schemas/transactionType.yaml b/src/OutboundServer/api_template/components/schemas/transactionType.yaml deleted file mode 100644 index b87ea2af2..000000000 --- a/src/OutboundServer/api_template/components/schemas/transactionType.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: string -enum: - - TRANSFER -description: Type of transaction. diff --git a/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptOTP.yaml b/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptOTP.yaml deleted file mode 100644 index 23ad4e618..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptOTP.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -required: - - acceptOTP -properties: - acceptOTP: - type: boolean - enum: - - true - - false diff --git a/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptParty.yaml b/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptParty.yaml deleted file mode 100644 index 88dd027ca..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptParty.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -required: - - acceptParty -properties: - acceptParty: - type: boolean - enum: - - true diff --git a/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptQuote.yaml b/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptQuote.yaml deleted file mode 100644 index 106fae46d..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferContinuationAcceptQuote.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -required: - - acceptQuote -properties: - acceptQuote: - type: boolean - enum: - - true - - false diff --git a/src/OutboundServer/api_template/components/schemas/transferError.yaml b/src/OutboundServer/api_template/components/schemas/transferError.yaml deleted file mode 100644 index 733fcf713..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferError.yaml +++ /dev/null @@ -1,16 +0,0 @@ -type: object -description: >- - This object represents a Mojaloop API error received at any time during the - transfer process -properties: - httpStatusCode: - type: integer - description: >- - The HTTP status code returned to the caller. This is the same as the - actual HTTP status code returned with the response. - mojaloopError: - description: >- - If a transfer process results in an error callback during the asynchronous - Mojaloop API exchange, this property will contain the underlying Mojaloop - API error object. - $ref: ./mojaloopError.yaml diff --git a/src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml b/src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml deleted file mode 100644 index b430d3625..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +++ /dev/null @@ -1,3 +0,0 @@ -description: A Mojaloop API transfer fulfilment -$ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransfersIDPutResponse.yaml diff --git a/src/OutboundServer/api_template/components/schemas/transferParty.yaml b/src/OutboundServer/api_template/components/schemas/transferParty.yaml deleted file mode 100644 index 75087bb3e..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferParty.yaml +++ /dev/null @@ -1,40 +0,0 @@ -type: object -required: - - idType - - idValue -properties: - type: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/TransactionInitiatorType.yaml - idType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/thirdparty/v1_0/openapi3/components/schemas/PartyIdType.yaml - idValue: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/PartyIdentifier.yaml - idSubValue: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/PartySubIdOrType.yaml - displayName: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Name.yaml - firstName: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/FirstName.yaml - middleName: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/MiddleName.yaml - lastName: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/LastName.yaml - dateOfBirth: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/DateOfBirth.yaml - merchantClassificationCode: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/MerchantClassificationCode.yaml - fspId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/FspId.yaml - extensionList: - $ref: ./extensionListEmptiable.yaml diff --git a/src/OutboundServer/api_template/components/schemas/transferRequest.yaml b/src/OutboundServer/api_template/components/schemas/transferRequest.yaml deleted file mode 100644 index 6aecf4f03..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferRequest.yaml +++ /dev/null @@ -1,40 +0,0 @@ -type: object -required: - - homeTransactionId - - from - - to - - amountType - - currency - - amount - - transactionType -properties: - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: ./transferParty.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - quoteRequestExtensions: - $ref: ./extensionListEmptiable.yaml - transferRequestExtensions: - $ref: ./extensionListEmptiable.yaml - skipPartyLookup: - description: Set to true if supplying an FSPID for the payee party and no party resolution is needed. This may be useful is a previous party resolution has been performed. - type: boolean diff --git a/src/OutboundServer/api_template/components/schemas/transferResponse.yaml b/src/OutboundServer/api_template/components/schemas/transferResponse.yaml deleted file mode 100644 index 398a4eb10..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferResponse.yaml +++ /dev/null @@ -1,84 +0,0 @@ -type: object -required: - - homeTransactionId - - from - - to - - amountType - - currency - - amount - - transactionType -properties: - transferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - homeTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: ./transferParty.yaml - to: - $ref: ./transferParty.yaml - amountType: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/AmountType.yaml - currency: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Currency.yaml - amount: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Amount.yaml - transactionType: - $ref: ./transactionType.yaml - note: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/Note.yaml - currentState: - $ref: ./transferStatus.yaml - quoteId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - getPartiesResponse: - type: object - required: - - body - properties: - body: - type: object - headers: - type: object - quoteResponse: - type: object - required: - - body - properties: - body: - $ref: './quote.yaml' - headers: - type: object - quoteResponseSource: - type: string - description: > - FSPID of the entity that supplied the quote response. This may not be the - same as the FSPID of the entity which owns the end user account in the - case of a FOREX transfer. i.e. it may be a FOREX gateway. - fulfil: - type: object - required: - - body - properties: - body: - $ref: ./transferFulfilment.yaml - headers: - type: object - lastError: - description: > - Object representing the last error to occur during a transfer process. - This may be a Mojaloop API error returned from another entity in the - scheme or an object representing other types of error e.g. exceptions that - may occur inside the scheme adapter. - $ref: ./transferError.yaml - skipPartyLookup: - description: Set to true if supplying an FSPID for the payee party and no party resolution is needed. This may be useful is a previous party resolution has been performed. - type: boolean diff --git a/src/OutboundServer/api_template/components/schemas/transferStatus.yaml b/src/OutboundServer/api_template/components/schemas/transferStatus.yaml deleted file mode 100644 index ded379951..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferStatus.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: string -enum: - - ERROR_OCCURRED - - WAITING_FOR_PARTY_ACCEPTANCE - - WAITING_FOR_QUOTE_ACCEPTANCE - - COMPLETED diff --git a/src/OutboundServer/api_template/components/schemas/transferStatusResponse.yaml b/src/OutboundServer/api_template/components/schemas/transferStatusResponse.yaml deleted file mode 100644 index e850ba875..000000000 --- a/src/OutboundServer/api_template/components/schemas/transferStatusResponse.yaml +++ /dev/null @@ -1,20 +0,0 @@ -type: object -required: - - transferId - - currentState - - fulfil -properties: - transferId: - $ref: >- - ../../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/schemas/CorrelationId.yaml - currentState: - $ref: ./transferStatus.yaml - fulfil: - type: object - required: - - body - properties: - body: - $ref: ./transferFulfilment.yaml - headers: - type: object diff --git a/src/OutboundServer/api_template/health.yaml b/src/OutboundServer/api_template/health.yaml deleted file mode 100644 index a8e5212c8..000000000 --- a/src/OutboundServer/api_template/health.yaml +++ /dev/null @@ -1,12 +0,0 @@ -get: - summary: Health check endpoint - description: >- - This endpoint allows a user of the SDK scheme adapter to check the outbound - transfers service is listening. - tags: - - Health - responses: - '200': - description: >- - Returns empty body if the scheme adapter outbound transfers service is - running. diff --git a/src/OutboundServer/api_template/openapi.yaml b/src/OutboundServer/api_template/openapi.yaml deleted file mode 100644 index cb90edfad..000000000 --- a/src/OutboundServer/api_template/openapi.yaml +++ /dev/null @@ -1,52 +0,0 @@ -openapi: 3.0.1 -info: - title: Mojaloop SDK Outbound Scheme Adapter API - description: > - Specification for the Mojaloop SDK Scheme Adapter Outbound Transfers API - - - This API can be used by DFSP backends to simplify the process of sending - funds to other parties within a Mojaloop scheme. - - - Please see other documentation on - https://github.com/mojaloop/sdk-scheme-adapter for more information. - - - **Note on terminology:** The term "Switch" is equal to the term "Hub", and - the term "FSP" is equal to the term "DFSP". - license: - name: 'Apache License Version 2.0, January 2004' - url: 'http://www.apache.org/licenses/' - version: 1.0.0 -paths: - '/': - $ref: health.yaml - '/transfers': - $ref: paths/transfers.yaml - '/transfers/{transferId}': - $ref: 'paths/transfers_transferId.yaml' - '/bulkTransfers': - $ref: paths/bulkTransfers.yaml - '/bulkTransfers/{bulkTransferId}': - $ref: 'paths/bulkTransfers_bulkTransferId.yaml' - '/bulkQuotes': - $ref: paths/bulkQuotes.yaml - '/bulkQuotes/{bulkQuoteId}': - $ref: 'paths/bulkQuotes_bulkQuoteId.yaml' - '/requestToPay': - $ref: paths/requestToPay.yaml - '/requestToPayTransfer': - $ref: paths/requestToPayTransfer.yaml - '/requestToPayTransfer/{requestToPayTransactionId}': - $ref: 'paths/requestToPayTransfer_requestToPayTransactionId.yaml' - '/accounts': - $ref: paths/accounts.yaml - '/parties/{Type}/{ID}': - $ref: 'paths/parties_Type_ID.yaml' - '/parties/{Type}/{ID}/{SubId}': - $ref: 'paths/parties_Type_ID_SubId.yaml' - '/quotes': - $ref: 'paths/quotes.yaml' - '/simpleTransfers': - $ref: 'paths/simpleTransfers.yaml' diff --git a/src/OutboundServer/api_template/paths/accounts.yaml b/src/OutboundServer/api_template/paths/accounts.yaml deleted file mode 100644 index e7211e94a..000000000 --- a/src/OutboundServer/api_template/paths/accounts.yaml +++ /dev/null @@ -1,26 +0,0 @@ -post: - summary: Create accounts on the Account Lookup Service - description: >- - The HTTP request `POST /accounts` is used to create account information on - the Account Lookup Service (ALS) regarding the provided list of identities. - - - Caller DFSP is used as the account source FSP information - tags: - - Accounts - requestBody: - description: Identities list request body - content: - application/json: - schema: - $ref: ../components/schemas/accountsRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/accountsCreationCompleted.yaml - '400': - $ref: ../components/responses/accountsCreationError.yaml - '500': - $ref: ../components/responses/accountsCreationError.yaml - '504': - $ref: ../components/responses/accountsCreationTimeout.yaml diff --git a/src/OutboundServer/api_template/paths/bulkQuotes.yaml b/src/OutboundServer/api_template/paths/bulkQuotes.yaml deleted file mode 100644 index 7d4de0e6c..000000000 --- a/src/OutboundServer/api_template/paths/bulkQuotes.yaml +++ /dev/null @@ -1,23 +0,0 @@ -post: - summary: Request bulk quotes for the provided financial transactions - description: > - The HTTP request `POST /bulkQuotes` is used to request a bulk quote to - fascilitate funds transfer from payer DFSP to payees' DFSP. - tags: - - BulkQuotes - requestBody: - description: Bulk quote request body - content: - application/json: - schema: - $ref: ../components/schemas/bulkQuoteRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/bulkQuoteSuccess.yaml - '400': - $ref: ../components/responses/bulkQuoteBadRequest.yaml - '500': - $ref: ../components/responses/bulkQuoteServerError.yaml - '504': - $ref: ../components/responses/bulkQuoteTimeout.yaml diff --git a/src/OutboundServer/api_template/paths/bulkQuotes_bulkQuoteId.yaml b/src/OutboundServer/api_template/paths/bulkQuotes_bulkQuoteId.yaml deleted file mode 100644 index 991d5a806..000000000 --- a/src/OutboundServer/api_template/paths/bulkQuotes_bulkQuoteId.yaml +++ /dev/null @@ -1,24 +0,0 @@ -get: - summary: Retrieves information for a specific bulk quote - description: >- - The HTTP request `GET /bulkQuotes/{bulktQuoteId}` is used to get information - regarding a bulk quote created or requested earlier. The `{bulkQuoteId}` in - the URI should contain the `bulkQuoteId` that was used for the creation of - the bulk quote. - tags: - - BulkQuotes - parameters: - - $ref: ../components/parameters/bulkQuoteId.yaml - responses: - '200': - description: Bulk quote information successfully retrieved - content: - application/json: - schema: - $ref: ../components/schemas/bulkQuoteStatusResponse.yaml - '500': - description: An error occurred processing the bulk quote - content: - application/json: - schema: - $ref: ../components/schemas/errorResponse.yaml diff --git a/src/OutboundServer/api_template/paths/bulkTransfers.yaml b/src/OutboundServer/api_template/paths/bulkTransfers.yaml deleted file mode 100644 index d4daa12ce..000000000 --- a/src/OutboundServer/api_template/paths/bulkTransfers.yaml +++ /dev/null @@ -1,23 +0,0 @@ -post: - summary: Sends money from one account to multiple accounts - description: > - The HTTP request `POST /bulkTransfers` is used to request the movement of - funds from payer DFSP to payees' DFSP. - tags: - - BulkTransfers - requestBody: - description: Bulk transfer request body - content: - application/json: - schema: - $ref: ../components/schemas/bulkTransferRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/bulkTransferSuccess.yaml - '400': - $ref: ../components/responses/bulkTransferBadRequest.yaml - '500': - $ref: ../components/responses/bulkTransferServerError.yaml - '504': - $ref: ../components/responses/bulkTransferTimeout.yaml diff --git a/src/OutboundServer/api_template/paths/bulkTransfers_bulkTransferId.yaml b/src/OutboundServer/api_template/paths/bulkTransfers_bulkTransferId.yaml deleted file mode 100644 index e1a9eb7f3..000000000 --- a/src/OutboundServer/api_template/paths/bulkTransfers_bulkTransferId.yaml +++ /dev/null @@ -1,24 +0,0 @@ -get: - summary: Retrieves information for a specific bulk transfer - description: >- - The HTTP request `GET /bulkTransfers/{bulktTransferId}` is used to get - information regarding a bulk transfer created or requested earlier. The - `{bulkTransferId}` in the URI should contain the `bulkTransferId` that was - used for the creation of the bulk transfer. - tags: - - BulkTransfers - parameters: - - $ref: ../components/parameters/bulkTransferId.yaml - responses: - '200': - description: Bulk transfer information successfully retrieved - content: - application/json: - schema: - $ref: ../components/schemas/bulkTransferStatusResponse.yaml - '500': - description: An error occurred processing the bulk transfer - content: - application/json: - schema: - $ref: ../components/schemas/errorResponse.yaml diff --git a/src/OutboundServer/api_template/paths/parties_Type_ID.yaml b/src/OutboundServer/api_template/paths/parties_Type_ID.yaml deleted file mode 100644 index 94df54fd7..000000000 --- a/src/OutboundServer/api_template/paths/parties_Type_ID.yaml +++ /dev/null @@ -1,20 +0,0 @@ -parameters: - - $ref: >- - ../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/parameters/Type.yaml - - $ref: >- - ../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/parameters/ID.yaml -get: - description: >- - The HTTP request GET /parties// (or GET /parties///) is used to lookup - information regarding the requested Party, defined by , and optionally (for - example, GET /parties/MSISDN/123456789, or GET - /parties/BUSINESS/shoecompany/employee1). - summary: PartiesByTypeAndID - tags: - - parties - operationId: PartiesByTypeAndID - responses: - '200': - $ref: ../components/responses/partiesByIdSuccess.yaml - '404': - $ref: ../components/responses/partiesByIdError404.yaml diff --git a/src/OutboundServer/api_template/paths/parties_Type_ID_SubId.yaml b/src/OutboundServer/api_template/paths/parties_Type_ID_SubId.yaml deleted file mode 100644 index 4d62e9cae..000000000 --- a/src/OutboundServer/api_template/paths/parties_Type_ID_SubId.yaml +++ /dev/null @@ -1,22 +0,0 @@ -parameters: - - $ref: >- - ../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/parameters/Type.yaml - - $ref: >- - ../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/parameters/ID.yaml - - $ref: >- - ../../../../node_modules/@mojaloop/api-snippets/fspiop/v1_1/openapi3/components/parameters/SubId.yaml -get: - description: >- - The HTTP request GET /parties// (or GET /parties///) is used to lookup - information regarding the requested Party, defined by , and optionally (for - example, GET /parties/MSISDN/123456789, or GET - /parties/BUSINESS/shoecompany/employee1). - summary: PartiesSubIdByTypeAndID - tags: - - parties - operationId: PartiesSubIdByTypeAndID - responses: - '200': - $ref: ../components/responses/partiesByIdSuccess.yaml - '404': - $ref: ../components/responses/partiesByIdError404.yaml diff --git a/src/OutboundServer/api_template/paths/quotes.yaml b/src/OutboundServer/api_template/paths/quotes.yaml deleted file mode 100644 index 8f5322e28..000000000 --- a/src/OutboundServer/api_template/paths/quotes.yaml +++ /dev/null @@ -1,20 +0,0 @@ -post: - summary: Quotes endpoint - description: >- - is used to request quotes from other DFSP - tags: - - quotes - operationId: QuotesPost - requestBody: - description: Quotes request payload - content: - application/json: - schema: - $ref: ../components/schemas/quotesPostRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/quotesPostSuccess.yaml - '500': - $ref: ../components/responses/quotesServerError.yaml - \ No newline at end of file diff --git a/src/OutboundServer/api_template/paths/requestToPay.yaml b/src/OutboundServer/api_template/paths/requestToPay.yaml deleted file mode 100644 index cbf0a9823..000000000 --- a/src/OutboundServer/api_template/paths/requestToPay.yaml +++ /dev/null @@ -1,22 +0,0 @@ -post: - summary: Receiver requesting funds from Sender - description: > - The HTTP request `POST /requestToPay` is used to support Pull Funds pattern - where in a receiver can request for funds from the Sender. - - The underlying API has two stages: - - 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. - 2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee. - tags: - - RequestToPay - requestBody: - description: RequestToPay request body - content: - application/json: - schema: - $ref: ../components/schemas/requestToPayRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/requestToPaySuccess.yaml diff --git a/src/OutboundServer/api_template/paths/requestToPayTransfer.yaml b/src/OutboundServer/api_template/paths/requestToPayTransfer.yaml deleted file mode 100644 index c3b27bc53..000000000 --- a/src/OutboundServer/api_template/paths/requestToPayTransfer.yaml +++ /dev/null @@ -1,57 +0,0 @@ -post: - summary: >- - Used to trigger funds from customer fsp account to merchant fsp account. - This is a follow-up request to requestToPay. - description: > - The HTTP request `POST /requestToPayTransfer` is used to request the - movement of funds from payer DFSP to payee DFSP. - - The underlying Mojaloop API has three stages for money transfer: - - 1. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. - 2. Authorization. This facilitates getting OTP from payee DFSP. - 3. Transfer. The enactment of the previously agreed "contract" - - This method has several modes of operation. - - - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` - this method will terminate and return the quotation when it has been - received from the payee DFSP. - If the payee wished to proceed with the otp, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - The scheme adapter will then proceed with the transfer state. - - - If the configuration variable `AUTO_ACCEPT_OTP` is set to `"false"` this - method will terminate and return the otp when it has been received from the - payee DFSP. - If the payer wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - The scheme adapter will then proceed with the transfer state. - - If the configuration variables `AUTO_ACCEPT_PARTIES` and - `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block until - all three transfer stages are complete. Upon completion it will return the - entire set of transfer details received during the operation. - - - Combinations of settings for `AUTO_ACCEPT...` configuration variables allow - the scheme adapter user to decide which mode of operation best suits their - use cases. i.e. the scheme adapter can be configured to "break" the three - stage transfer at these points in order to execute backend logic such as - party verification, quoted fees assessments etc... - tags: - - RequestToPayTransfer - requestBody: - description: Request To Pay Transfer request body - content: - application/json: - schema: - $ref: ../components/schemas/requestToPayTransferRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/requestToPayTransferSuccess.yaml - '400': - $ref: ../components/responses/requestToPayTransferBadRequest.yaml - '500': - $ref: ../components/responses/transferServerError.yaml - '504': - $ref: ../components/responses/transferTimeout.yaml diff --git a/src/OutboundServer/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml b/src/OutboundServer/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml deleted file mode 100644 index 2d3147640..000000000 --- a/src/OutboundServer/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml +++ /dev/null @@ -1,34 +0,0 @@ -put: - summary: >- - Continues a transfer that has paused at the otp stage in order to accept or - reject quote - description: > - The HTTP request `PUT /transfers/{transferId}` is used to continue a - transfer initiated via the `POST /transfers` method that has halted after - party lookup and/or quotation stage. - - - The request body should contain either the "acceptOTP" or "acceptQuote" - property set to `true` as required to continue the transfer. - - - See the description of the `POST /requestToPayTransfer` HTTP method for more - information on modes of transfer. - tags: - - RequestToPayTransferID - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: ../components/schemas/transferContinuationAcceptQuote.yaml - - $ref: ../components/schemas/transferContinuationAcceptOTP.yaml - parameters: - - $ref: ../components/parameters/requestToPayTransactionId.yaml - responses: - '200': - $ref: ../components/responses/transferSuccess.yaml - '500': - $ref: ../components/responses/transferServerError.yaml - '504': - $ref: ../components/responses/transferTimeout.yaml diff --git a/src/OutboundServer/api_template/paths/simpleTransfers.yaml b/src/OutboundServer/api_template/paths/simpleTransfers.yaml deleted file mode 100644 index 137da5633..000000000 --- a/src/OutboundServer/api_template/paths/simpleTransfers.yaml +++ /dev/null @@ -1,19 +0,0 @@ -post: - summary: Simple Transfers endpoint - description: >- - is used to request a transfer - tags: - - transfers - operationId: SimpleTransfersPost - requestBody: - description: Simple Transfer request payload - content: - application/json: - schema: - $ref: ../components/schemas/simpleTransfersPostRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/simpleTransfersPostSuccess.yaml - '500': - $ref: ../components/responses/simpleTransfersServerError.yaml diff --git a/src/OutboundServer/api_template/paths/transfers.yaml b/src/OutboundServer/api_template/paths/transfers.yaml deleted file mode 100644 index 07d11a2fd..000000000 --- a/src/OutboundServer/api_template/paths/transfers.yaml +++ /dev/null @@ -1,55 +0,0 @@ -post: - summary: Sends money from one account to another - description: > - The HTTP request `POST /transfers` is used to request the movement of funds - from payer DFSP to payee DFSP. - - The underlying Mojaloop API has three stages for money transfer: - - 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. - 2. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. - 3. Transfer. The enactment of the previously agreed "contract" - - This method has several modes of operation. - - - If the configuration variables `AUTO_ACCEPT_PARTIES` is set to `"false"` - this method will terminate when the payee party has been resolved and return - the payee party details. - If the payee wishes to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the payee party) is required to continue the operation. - The scheme adapter will then proceed with quotation stage... - - - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` - this method will terminate and return the quotation when it has been - received from the payee DFSP. - If the payee wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. - The scheme adapter will then proceed with the transfer state. - - If the configuration variables `AUTO_ACCEPT_PARTIES` and - `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block until - all three transfer stages are complete. Upon completion it will return the - entire set of transfer details received during the operation. - - - Combinations of settings for `AUTO_ACCEPT...` configuration variables allow - the scheme adapter user to decide which mode of operation best suits their - use cases. i.e. the scheme adapter can be configured to "break" the three - stage transfer at these points in order to execute backend logic such as - party verification, quoted fees assessments etc... - tags: - - Transfers - requestBody: - description: Transfer request body - content: - application/json: - schema: - $ref: ../components/schemas/transferRequest.yaml - required: true - responses: - '200': - $ref: ../components/responses/transferSuccess.yaml - '400': - $ref: ../components/responses/transferBadRequest.yaml - '500': - $ref: ../components/responses/transferServerError.yaml - '504': - $ref: ../components/responses/transferTimeout.yaml diff --git a/src/OutboundServer/api_template/paths/transfers_transferId.yaml b/src/OutboundServer/api_template/paths/transfers_transferId.yaml deleted file mode 100644 index 25fc917e2..000000000 --- a/src/OutboundServer/api_template/paths/transfers_transferId.yaml +++ /dev/null @@ -1,58 +0,0 @@ -put: - summary: >- - Continues a transfer that has paused at the quote stage in order to accept - or reject payee party and/or quote - description: > - The HTTP request `PUT /transfers/{transferId}` is used to continue a - transfer initiated via the `POST /transfers` method that has halted after - party lookup and/or quotation stage. - - - The request body should contain either the "acceptParty" or "acceptQuote" - property set to `true` as required to continue the transfer. - - - See the description of the `POST /transfers` HTTP method for more - information on modes of transfer. - tags: - - Transfers - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: ../components/schemas/transferContinuationAcceptParty.yaml - - $ref: ../components/schemas/transferContinuationAcceptQuote.yaml - parameters: - - $ref: ../components/parameters/transferId.yaml - responses: - '200': - $ref: ../components/responses/transferSuccess.yaml - '500': - $ref: ../components/responses/transferServerError.yaml - '504': - $ref: ../components/responses/transferTimeout.yaml -get: - summary: Retrieves information for a specific transfer - description: >- - The HTTP request `GET /transfers/{transferId}` is used to get information - regarding a transfer created or requested earlier. The `{transferId}` in the - URI should contain the `transferId` that was used for the creation of the - transfer. - tags: - - Transfers - parameters: - - $ref: ../components/parameters/transferId.yaml - responses: - '200': - description: Transfer information successfully retrieved - content: - application/json: - schema: - $ref: ../components/schemas/transferStatusResponse.yaml - '500': - description: An error occurred processing the transfer - content: - application/json: - schema: - $ref: ../components/schemas/errorResponse.yaml diff --git a/src/OutboundServer/index.js b/src/OutboundServer/index.js index 6b804b596..7677abb8d 100644 --- a/src/OutboundServer/index.js +++ b/src/OutboundServer/index.js @@ -90,7 +90,7 @@ class OutboundServer extends EventEmitter { async start() { await this._api.start(); - const specPath = path.join(__dirname, 'api.yaml'); + const specPath = path.join(path.dirname(require.resolve('@mojaloop/api-snippets')), '../docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml'); const apiSpecs = yaml.load(fs.readFileSync(specPath)); await this._validator.initialise(apiSpecs); await new Promise((resolve) => this._server.listen(this._conf.outbound.port, resolve)); diff --git a/test/unit/api/utils.js b/test/unit/api/utils.js index f1737ce97..d8bfed597 100644 --- a/test/unit/api/utils.js +++ b/test/unit/api/utils.js @@ -12,11 +12,16 @@ const Cache = require('~/lib/cache'); /** * Get OpenAPI spec and Validator for specified server - * @param serverType String + * @param {('OUTBOUND'|'INBOUND')} serverType * @return {Promise<{apiSpecs: Object, validator: Validator}>} */ const readApiInfo = async (serverType) => { - const specPath = path.join(__dirname, `../../../src/${serverType}/api.yaml`); + let specPath; + if (serverType === 'OUTBOUND') { + specPath = path.join(path.dirname(require.resolve('@mojaloop/api-snippets')), '../docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml'); + } else if (serverType === 'INBOUND') { + specPath = path.join(__dirname, '../../../src/InboundServer/api.yaml'); + } const apiSpecs = yaml.load(fs.readFileSync(specPath)); const validator = new Validate(); await validator.initialise(apiSpecs); @@ -24,11 +29,11 @@ const readApiInfo = async (serverType) => { }; const createValidators = async () => { - const apiInfoOutbound = await readApiInfo('OutboundServer'); + const apiInfoOutbound = await readApiInfo('OUTBOUND'); const apiSpecsOutbound = apiInfoOutbound.apiSpecs; const requestValidatorOutbound = apiInfoOutbound.validator; - const apiInfoInbound = await readApiInfo('InboundServer'); + const apiInfoInbound = await readApiInfo('INBOUND'); const apiSpecsInbound = apiInfoInbound.apiSpecs; const requestValidatorInbound = apiInfoInbound.validator; return { From bd177e29d7ab000955527d6ceee189a8593a83af Mon Sep 17 00:00:00 2001 From: mojaloopci Date: Thu, 28 Jul 2022 14:59:29 +0000 Subject: [PATCH 34/39] chore(release): 19.0.0 [skip ci] --- CHANGELOG.md | 11 +++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 335a27a46..5127ff24b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc) +## [19.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v18.0.2...v19.0.0) (2022-07-28) + + +### ⚠ BREAKING CHANGES + +* use updated outbound OpenAPI specification from api-snippets (#340) + +### Features + +* use updated outbound OpenAPI specification from api-snippets ([#340](https://github.com/mojaloop/sdk-scheme-adapter/issues/340)) ([92eb491](https://github.com/mojaloop/sdk-scheme-adapter/commit/92eb4918fcbebc4532ebd1434aa7c565822e15bd)) + ### [18.0.2](https://github.com/mojaloop/sdk-scheme-adapter/compare/v18.0.1...v18.0.2) (2022-07-27) diff --git a/package-lock.json b/package-lock.json index 0d899ad2b..98bb9f0ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.2", + "version": "19.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.2", + "version": "19.0.0", "license": "Apache-2.0", "dependencies": { "@koa/cors": "^3.3.0", diff --git a/package.json b/package.json index 5f12f39cc..1b31126e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/sdk-scheme-adapter", - "version": "18.0.2", + "version": "19.0.0", "description": "An adapter for connecting to Mojaloop API enabled switches.", "main": "src/index.js", "types": "src/index.d.ts", From 85f308be589b41f0c7281c65163d791b8052accf Mon Sep 17 00:00:00 2001 From: vijayg10 <33152110+vijayg10@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:32:30 +0530 Subject: [PATCH 35/39] fix(mojaloop/2886): fix bulk-quotes and bulk-transfers functionality (#344) fix(mojaloop/2886): fix bulk-quotes and bulk-transfers functionality (#344) * fix: added bulk-quotes to inbound api definition * chore: updated TTK version, updated TTK config files and changed ttk port * fix: bulk quotes callback redis publish channel * fix: fixed bulk quotes and bulk transfers response in outbound api * chore: updated mojaloop sim api in ttk --- audit-ci.jsonc | 3 +- docker-compose.yml | 32 +- .../test_outbound_p2p_and_bulk.json | 125 + .../central_admin_9.3/api_spec.yaml | 2450 ------ .../central_admin_9.3/response_map.json | 96 - .../api_definitions/fspiop_1.0/mockRef.json | 4 - .../api_definitions/fspiop_1.1/api_spec.yaml | 7481 +++++++++-------- .../api_definitions/fspiop_1.1/mockRef.json | 4 - .../api_spec.yaml | 2603 ++++++ .../mockRef.json | 22 + .../response_map.json | 21 + .../mojaloop_simulator_sim_1.4/api_spec.yaml | 1087 +++ .../mojaloop_simulator_sim_1.4/mockRef.json | 75 + .../response_map.json | 55 + .../settlements_1.0/api_spec.yaml | 983 --- .../settlements_1.0/mockRef.json | 38 - .../settlements_1.0/response_map.json | 34 - .../templates/newman/html_template.html | 66 +- .../templates/newman/pdf_template.html | 30 +- .../reports/templates/newman/script.js | 98 - .../testcase_definition/table_view.html | 133 + .../spec_files/rules_callback/default.json | 176 +- .../spec_files/rules_validation/default.json | 2 +- .../spec_files/system_config.json | 60 +- .../spec_files/user_config.json | 27 +- docker/wait4/wait4.config.js | 4 +- package-lock.json | 906 +- package.json | 24 +- src/InboundServer/api.yaml | 103 + src/InboundServer/handlers.js | 4 +- src/lib/model/OutboundBulkQuotesModel.js | 4 +- src/lib/model/OutboundBulkTransfersModel.js | 14 +- src/lib/model/lib/shared.js | 61 +- test/config/integration.env | 6 +- .../lib/Outbound/data/quotesPostRequest.json | 3 +- .../lib/model/OutboundBulkQuotesModel.test.js | 7 +- .../model/OutboundBulkTransfersModel.test.js | 10 +- .../lib/model/data/bulkTransferFulfil.json | 2 +- 38 files changed, 8990 insertions(+), 7863 deletions(-) create mode 100644 docker/ml-testing-toolkit/sample-tests/test_outbound_p2p_and_bulk.json delete mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml delete mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json create mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml create mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json create mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json create mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/api_spec.yaml create mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/mockRef.json create mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/response_map.json delete mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml delete mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json delete mode 100644 docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json delete mode 100644 docker/ml-testing-toolkit/spec_files/reports/templates/newman/script.js create mode 100644 docker/ml-testing-toolkit/spec_files/reports/templates/testcase_definition/table_view.html diff --git a/audit-ci.jsonc b/audit-ci.jsonc index 8b8472af6..ae258d833 100644 --- a/audit-ci.jsonc +++ b/audit-ci.jsonc @@ -11,6 +11,7 @@ "GHSA-mjxr-4v3x-q3m4", "GHSA-rjqq-98f6-6j3r", "GHSA-3cvr-822r-rqcc", - "GHSA-p9pc-299p-vxgp" + "GHSA-p9pc-299p-vxgp", + "GHSA-8qr4-xgw6-wmr3" ] } diff --git a/docker-compose.yml b/docker-compose.yml index d943a6a02..9b466a718 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,14 +30,14 @@ services: ml-testing-toolkit: networks: - mojaloop-net - image: mojaloop/ml-testing-toolkit:v11.7.11 + image: mojaloop/ml-testing-toolkit:v15.0.0 container_name: ml-testing-toolkit volumes: - - "./docker/ml-testing-toolkit/spec_files:/opt/mojaloop-testing-toolkit/spec_files" - - "./docker/ml-testing-toolkit/secrets:/opt/mojaloop-testing-toolkit/secrets" + - "./docker/ml-testing-toolkit/spec_files:/opt/app/spec_files" + - "./docker/ml-testing-toolkit/secrets:/opt/app/secrets" ports: - - "5000:5000" + - "4040:4040" - "5050:5050" environment: - AUTH_ENABLED=FALSE @@ -54,15 +54,15 @@ services: # # for local development we want to have ttk-ui # - # mojaloop-testing-toolkit-ui: - # image: mojaloop/ml-testing-toolkit-ui:v11.8.4 - # ports: - # - "6060:6060" - # networks: - # - mojaloop-net - # environment: - # - API_BASE_URL=http://localhost:5050 - # - AUTH_ENABLED=FALSE - # command: - # - sh - # - /usr/share/nginx/start.sh + mojaloop-testing-toolkit-ui: + image: mojaloop/ml-testing-toolkit-ui:v15.0.0 + ports: + - "6060:6060" + networks: + - mojaloop-net + environment: + - API_BASE_URL=http://localhost:5050 + - AUTH_ENABLED=FALSE + command: + - sh + - /usr/share/nginx/start.sh diff --git a/docker/ml-testing-toolkit/sample-tests/test_outbound_p2p_and_bulk.json b/docker/ml-testing-toolkit/sample-tests/test_outbound_p2p_and_bulk.json new file mode 100644 index 000000000..02ef60d3c --- /dev/null +++ b/docker/ml-testing-toolkit/sample-tests/test_outbound_p2p_and_bulk.json @@ -0,0 +1,125 @@ +{ + "name": "multi", + "test_cases": [ + { + "id": 3, + "name": "outbound-post-bulk-quotes", + "requests": [ + { + "id": 1, + "description": "Post BulkQuotes", + "apiVersion": { + "minorVersion": 0, + "majorVersion": 1, + "type": "scheme_adapter_outbound", + "prefix": "/sdk-out", + "hostnames": [], + "specFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml", + "callbackMapFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/callback_map.json", + "responseMapFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json", + "jsfRefFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json", + "triggerTemplatesFolder": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/trigger_templates" + }, + "operationPath": "/bulkQuotes", + "path": "/bulkQuotes", + "method": "post", + "url": "http://172.17.0.1:4001", + "body": { + "homeTransactionId": "7c5eaec1-5db2-4aca-92dd-0b68071becaa", + "bulkQuoteId": "7106d650-fb27-4a2a-9b70-c9731fc058aa", + "from": { + "idType": "MSISDN", + "idValue": "123456789", + "type": "CONSUMER", + "displayName": "PayerFirst PayerLast", + "firstName": "PayerFirst", + "middleName": "Something", + "lastName": "PayerLast", + "fspId": "ttkpm4mlreceiver" + }, + "individualQuotes": [ + { + "quoteId": "5fdba48f-0388-4a56-94e9-57f1bc4d78fc", + "to": { + "type": "CONSUMER", + "idType": "MSISDN", + "idValue": "48500002222", + "fspId": "ttkpm4mlreceiver" + }, + "amountType": "SEND", + "currency": "USD", + "amount": "10", + "transactionType": "TRANSFER", + "note": "test" + } + ] + } + }, + { + "id": 2, + "description": "bulkTransfers", + "apiVersion": { + "minorVersion": 0, + "majorVersion": 1, + "type": "scheme_adapter_outbound", + "prefix": "/sdk-out", + "hostnames": [], + "specFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml", + "callbackMapFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/callback_map.json", + "responseMapFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json", + "jsfRefFile": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json", + "triggerTemplatesFolder": "spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/trigger_templates" + }, + "operationPath": "/bulkTransfers", + "path": "/bulkTransfers", + "method": "post", + "url": "http://172.17.0.1:4001", + "body": { + "homeTransactionId": "{$prev.1.request.body.homeTransactionId}", + "bulkTransferId": "{$function.generic.generateUUID}", + "bulkQuoteId": "7106d650-fb27-4a2a-9b70-c9731fc058aa", + "from": { + "idType": "MSISDN", + "idValue": "123456789", + "type": "CONSUMER", + "displayName": "PayerFirst PayerLast", + "firstName": "PayerFirst", + "middleName": "Something", + "lastName": "PayerLast", + "fspId": "ttkpm4mlreceiver" + }, + "individualTransfers": [ + { + "transferId": "{$function.generic.generateUUID}", + "to": { + "type": "CONSUMER", + "idType": "MSISDN", + "idValue": "48500002222", + "fspId": "ttkpm4mlreceiver" + }, + "amountType": "SEND", + "currency": "USD", + "amount": "10", + "transactionType": "TRANSFER", + "note": "string", + "ilpPacket": "{$prev.1.response.body.individualQuoteResults[0].ilpPacket}", + "condition": "{$prev.1.response.body.individualQuoteResults[0].condition}" + } + ], + "extensions": { + "extension": [ + { + "key": "string", + "value": "string" + } + ] + } + } + } + ], + "fileInfo": { + "path": "test_sdk1.json" + } + } + ] +} \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml b/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml deleted file mode 100644 index 26774064e..000000000 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml +++ /dev/null @@ -1,2450 +0,0 @@ -openapi: 3.0.1 -info: - title: Central Ledger API Documentation - version: 9.3.0 -servers: -- url: http://127.0.0.1:3001/ -tags: [] -paths: - /enums: - get: - tags: - - enums - operationId: getEnums - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - /health: - get: - tags: - - health - operationId: getHealth - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - /metrics: - get: - tags: - - metrics - summary: Prometheus metrics endpoint - operationId: getMetrics - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - /participants: - get: - tags: - - participants - operationId: getParticipants - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - post: - tags: - - participants - operationId: postParticipants - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%201' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/limits: - get: - tags: - - participants - summary: View limits for all participants - operationId: getParticipantsLimits - parameters: - - name: currency - in: query - description: Currency code - schema: - type: string - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - - name: type - in: query - description: Limit Type - schema: - type: string - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - /participants/{name}: - get: - tags: - - participants - operationId: getParticipantsName - parameters: - - $ref: '#/components/parameters/name' - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - put: - tags: - - participants - operationId: putParticipantsName - parameters: - - name: name - in: path - description: Participant name - required: true - schema: - type: string - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%207' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/{name}/endpoints: - get: - tags: - - participants - summary: View participant endpoints - operationId: getParticipantsNameEndpoints - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - post: - tags: - - participants - summary: Add/Update participant endpoints - operationId: postParticipantsNameEndpoints - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%202' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/{name}/limits: - get: - tags: - - participants - summary: View participant limits - operationId: getParticipantsNameLimits - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - - name: currency - in: query - description: Currency code - schema: - type: string - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - - name: type - in: query - description: Limit Type - schema: - type: string - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - put: - tags: - - participants - summary: Adjust participant limits - operationId: putParticipantsNameLimits - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%209' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/{name}/positions: - get: - tags: - - participants - summary: View participant positions - operationId: getParticipantsNamePositions - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - - name: currency - in: query - description: Currency code - schema: - type: string - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - /participants/{name}/accounts: - get: - tags: - - participants - summary: View participant accounts and balances - operationId: getParticipantsNameAccounts - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - post: - tags: - - participants - summary: Create hub accounts - operationId: postParticipantsNameAccounts - parameters: - - name: name - in: path - description: Participant name - required: true - schema: - type: string - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%204' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/{name}/initialPositionAndLimits: - post: - tags: - - participants - summary: Add initial participant limits and position - operationId: postParticipantsNameInitialpositionandlimits - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%203' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/{name}/accounts/{id}: - put: - tags: - - participants - summary: Update participant accounts - operationId: putParticipantsNameAccountsId - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - - name: id - in: path - required: true - schema: - type: integer - x-constraint: - positive: true - x-constraint: - positive: true - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%2010' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - post: - tags: - - participants - summary: Record Funds In or Out of participant account - operationId: postParticipantsNameAccountsId - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - - name: id - in: path - required: true - schema: - type: integer - x-constraint: - positive: true - x-constraint: - positive: true - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%206' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /participants/{name}/accounts/{id}/transfers/{transferId}: - put: - tags: - - participants - summary: Record Funds In or Out of participant account - operationId: putParticipantsNameAccountsIdTransfersTransferid - parameters: - - name: name - in: path - description: Name of the participant - required: true - schema: - maxLength: 30 - minLength: 2 - type: string - x-format: - alphanum: true - x-format: - alphanum: true - - name: id - in: path - required: true - schema: - type: integer - x-constraint: - positive: true - x-constraint: - positive: true - - name: transferId - in: path - required: true - schema: - type: string - x-format: - guid: true - x-format: - guid: true - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%2011' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /settlementModels: - get: - tags: - - settlementModels - operationId: getSettlementmodels - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - post: - tags: - - settlementModels - operationId: postSettlementmodels - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%2012' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body - /settlementModels/{name}: - get: - tags: - - settlementModels - operationId: getSettlementmodelsName - parameters: - - name: name - in: path - description: SettlementModel name - required: true - schema: - type: string - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - put: - tags: - - settlementModels - operationId: putSettlementmodelsName - parameters: - - name: name - in: path - description: settlementModel name - required: true - schema: - type: string - requestBody: - content: - '*/*': - schema: - $ref: '#/components/schemas/Model%2013' - required: false - responses: - default: - description: Successful - content: - '*/*': - schema: - type: string - x-codegen-request-body-name: body -components: - parameters: - name: - name: name - in: path - required: true - schema: - type: string - schemas: - Model 1: - required: - - name - type: object - properties: - name: - maxLength: 30 - minLength: 2 - type: string - description: Name of the participant - x-format: - alphanum: true - currency: - type: string - description: Currency code - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - Model 2: - required: - - type - - value - type: object - properties: - type: - type: string - description: Endpoint Type - value: - type: string - description: Endpoint Value - limit: - required: - - type - - value - type: object - properties: - type: - type: string - description: Limit Type - value: - type: number - description: Limit Value - x-constraint: - positive: true - description: Participant Limit - Model 3: - required: - - limit - type: object - properties: - currency: - type: string - description: Currency code - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - limit: - $ref: '#/components/schemas/limit' - initialPosition: - type: number - description: Initial Position Value - Model 4: - required: - - type - type: object - properties: - currency: - type: string - description: Currency code - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - type: - type: string - description: Account type - No amount provided: - required: - - amount - type: object - properties: - amount: - type: number - x-constraint: - precision: 4 - positive: true - currency: - type: string - description: Currency code - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - Model 5: - type: object - properties: - key: - type: string - value: - type: string - extension: - type: array - items: - $ref: '#/components/schemas/Model%205' - extensionList: - type: object - properties: - extension: - $ref: '#/components/schemas/extension' - Model 6: - required: - - action - - amount - - externalReference - - reason - - transferId - type: object - properties: - transferId: - type: string - x-format: - guid: true - externalReference: - type: string - action: - type: string - enum: - - recordFundsIn - - recordFundsOutPrepareReserve - reason: - type: string - amount: - $ref: '#/components/schemas/No%20amount%20provided' - extensionList: - $ref: '#/components/schemas/extensionList' - Model 7: - required: - - isActive - type: object - properties: - isActive: - type: boolean - description: Participant isActive boolean - Model 8: - required: - - alarmPercentage - - type - - value - type: object - properties: - type: - type: string - description: Limit Type - value: - type: number - description: Limit Value - alarmPercentage: - type: number - description: limit threshold alarm percentage value - description: Participant Limit - Model 9: - required: - - limit - type: object - properties: - currency: - type: string - description: Currency code - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - limit: - $ref: '#/components/schemas/Model%208' - Model 10: - required: - - isActive - type: object - properties: - isActive: - type: boolean - description: Participant currency isActive boolean - Model 11: - required: - - reason - type: object - properties: - action: - type: string - enum: - - recordFundsOutCommit - - recordFundsOutAbort - reason: - type: string - Model 12: - required: - - autoPositionReset - - ledgerAccountType - - name - - requireLiquidityCheck - - settlementDelay - - settlementGranularity - - settlementInterchange - type: object - properties: - name: - maxLength: 30 - minLength: 2 - type: string - description: Name of the settlement model - x-format: - alphanum: true - settlementGranularity: - type: string - description: Granularity type for the settlement model GROSS or NET - enum: - - GROSS - - NET - settlementInterchange: - type: string - description: Interchange type for the settlement model BILATERAL or MULTILATERAL - enum: - - BILATERAL - - MULTILATERAL - settlementDelay: - type: string - description: Delay type for the settlement model IMMEDIATE or DEFERRED - enum: - - DEFERRED - - IMMEDIATE - currency: - type: string - description: Currency code - enum: - - AED - - AFA - - AFN - - ALL - - AMD - - ANG - - AOA - - AOR - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BOV - - BRL - - BSD - - BTN - - BWP - - BYN - - BYR - - BZD - - CAD - - CDF - - CHE - - CHF - - CHW - - CLF - - CLP - - CNY - - COP - - COU - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EEK - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LTL - - LVL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MXV - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - SSP - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - USN - - UYI - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XAG - - XAU - - XCD - - XDR - - XFO - - XFU - - XOF - - XPD - - XPF - - XPT - - XSU - - XTS - - XUA - - XXX - - YER - - ZAR - - ZMK - - ZMW - - ZWD - - ZWL - - ZWN - - ZWR - requireLiquidityCheck: - type: boolean - description: Liquidity Check boolean - ledgerAccountType: - type: string - description: Account type for the settlement model POSITION, SETTLEMENT - or INTERCHANGE_FEE - enum: - - INTERCHANGE_FEE - - POSITION - autoPositionReset: - type: boolean - description: Automatic position reset setting, which determines whether - to execute the settlement transfer or not - Model 13: - required: - - isActive - type: object - properties: - isActive: - type: boolean - description: settlementModel isActive boolean diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json b/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json deleted file mode 100644 index e04829cd6..000000000 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "/health": { - "get": { - "response": {} - } - }, - "/metrics": { - "get": { - "response": {} - } - }, - "/participants": { - "get": { - "response": {} - }, - "post": { - "response": {} - } - }, - "/participants/limits": { - "get": { - "response": {} - } - }, - "/participants/{name}": { - "get": { - "response": {} - }, - "put": { - "response": {} - } - }, - "/participants/{name}/endpoints": { - "get": { - "response": {} - }, - "post": { - "response": {} - } - }, - "/participants/{name}/limits": { - "get": { - "response": {} - }, - "put": { - "response": {} - } - }, - "/participants/{name}/positions": { - "get": { - "response": {} - } - }, - "/participants/{name}/accounts": { - "get": { - "response": {} - }, - "post": { - "response": {} - } - }, - "/participants/{name}/initialPositionAndLimits": { - "post": { - "response": {} - } - }, - "/participants/{name}/accounts/{id}": { - "put": { - "response": {} - }, - "post": { - "response": {} - } - }, - "/participants/{name}/accounts/{id}/transfers/{transferId}": { - "put": { - "response": {} - } - }, - "/settlementModels": { - "get": { - "response": {} - }, - "post": { - "response": {} - } - }, - "/settlementModels/{name}": { - "get": { - "response": {} - }, - "put": { - "response": {} - } - } -} \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json b/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json index 391811712..77f657ccc 100644 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json @@ -75,9 +75,5 @@ { "id": "errorInformation.errorDescription", "pattern": "This is a mock error description" - }, - { - "id": "Content-Length", - "pattern": "123" } ] \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml b/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml index 2b7630c49..179fbbb94 100644 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml @@ -1,3703 +1,3778 @@ -openapi: "3.0.2" -info: - version: "1.1" - title: Open API for FSP Interoperability (FSPIOP) - description: - Based on [API Definition updated on 2020-05-19 Version 1.1](https://github.com/mojaloop/mojaloop-specification/blob/master/documents/v1.1-document-set/API%20Definition_v1.1.pdf). - - - **Note:** The API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP header. - license: - name: CC BY-ND 4.0 - url: https://github.com/mojaloop/mojaloop-specification/blob/master/LICENSE.md - contact: - name: "Sam Kummary" - url: https://github.com/mojaloop/mojaloop-specification/issues -servers: - - url: "{protocol}://hostname:/switch/" - variables: - protocol: - enum: - - http - - https - default: https - -paths: - #Participants - /participants/{Type}/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - post: - description: The HTTP request `POST /participants/{Type}/{ID}` (or `POST /participants/{Type}/{ID}/{SubId}`) is used to create information in the server regarding the provided identity, defined by `{Type}`, `{ID}`, and optionally `{SubId}` (for example, `POST /participants/MSISDN/123456789` or `POST /participants/BUSINESS/shoecompany/employee1`). An ExtensionList element has been added to this reqeust in version v1.1 - summary: Create participant information - tags: - - participants - operationId: ParticipantsByIDAndType - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Participant information to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ParticipantsTypeIDSubIDPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - get: - description: The HTTP request `GET /participants/{Type}/{ID}` (or `GET /participants/{Type}/{ID}/{SubId}`) is used to find out in which FSP the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}`, is located (for example, `GET /participants/MSISDN/123456789`, or `GET /participants/BUSINESS/shoecompany/employee1`). This HTTP request should support a query string for filtering of currency. To use filtering of currency, the HTTP request `GET /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. - summary: Look up participant information - tags: - - participants - operationId: ParticipantsByTypeAndID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /participants/{Type}/{ID}` (or `PUT /participants/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the lookup, creation, or deletion of the FSP information related to the Party. If the FSP information is deleted, the fspId element should be empty; otherwise the element should include the FSP information for the Party. - summary: Return participant information - tags: - - participants - operationId: ParticipantsByTypeAndID3 - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Participant information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ParticipantsTypeIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - delete: - description: - The HTTP request `DELETE /participants/{Type}/{ID}` (or `DELETE /participants/{Type}/{ID}/{SubId}`) is used to delete information in the server regarding the provided identity, defined by `{Type}` and `{ID}`) (for example, `DELETE /participants/MSISDN/123456789`), and optionally `{SubId}`. This HTTP request should support a query string to delete FSP information regarding a specific currency only. To delete a specific currency only, the HTTP request `DELETE /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. - - - **Note:** The Account Lookup System should verify that it is the Party’s current FSP that is deleting the FSP information. - summary: Delete participant information - tags: - - participants - operationId: ParticipantsByTypeAndID2 - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /participants/{Type}/{ID}/error: - put: - description: If the server is unable to find, create or delete the associated FSP of the provided identity, or another processing error occurred, the error callback `PUT /participants/{Type}/{ID}/error` (or `PUT /participants/{Type}/{ID}/{SubId}/error`) is used. - summary: Return participant information error - tags: - - participants - operationId: ParticipantsErrorByTypeAndID - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /participants/{Type}/{ID}/{SubId}: - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - - $ref: "#/components/parameters/SubId" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - post: - description: The HTTP request `POST /participants/{Type}/{ID}` (or `POST /participants/{Type}/{ID}/{SubId}`) is used to create information in the server regarding the provided identity, defined by `{Type}`, `{ID}`, and optionally `{SubId}` (for example, `POST /participants/MSISDN/123456789` or `POST /participants/BUSINESS/shoecompany/employee1`). An ExtensionList element has been added to this reqeust in version v1.1 - summary: Create participant information - tags: - - participants - operationId: ParticipantsSubIdByTypeAndIDPost - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Participant information to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ParticipantsTypeIDSubIDPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - get: - description: The HTTP request `GET /participants/{Type}/{ID}` (or `GET /participants/{Type}/{ID}/{SubId}`) is used to find out in which FSP the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}`, is located (for example, `GET /participants/MSISDN/123456789`, or `GET /participants/BUSINESS/shoecompany/employee1`). This HTTP request should support a query string for filtering of currency. To use filtering of currency, the HTTP request `GET /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. - summary: Look up participant information - tags: - - participants - operationId: ParticipantsSubIdByTypeAndID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /participants/{Type}/{ID}` (or `PUT /participants/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the lookup, creation, or deletion of the FSP information related to the Party. If the FSP information is deleted, the fspId element should be empty; otherwise the element should include the FSP information for the Party. - summary: Return participant information - tags: - - participants - operationId: ParticipantsSubIdByTypeAndID3 - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Participant information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ParticipantsTypeIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - delete: - description: - The HTTP request `DELETE /participants/{Type}/{ID}` (or `DELETE /participants/{Type}/{ID}/{SubId}`) is used to delete information in the server regarding the provided identity, defined by `{Type}` and `{ID}`) (for example, `DELETE /participants/MSISDN/123456789`), and optionally `{SubId}`. This HTTP request should support a query string to delete FSP information regarding a specific currency only. To delete a specific currency only, the HTTP request `DELETE /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. - - - **Note:** The Account Lookup System should verify that it is the Party’s current FSP that is deleting the FSP information. - summary: Delete participant information - tags: - - participants - operationId: ParticipantsSubIdByTypeAndID2 - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /participants/{Type}/{ID}/{SubId}/error: - put: - description: If the server is unable to find, create or delete the associated FSP of the provided identity, or another processing error occurred, the error callback `PUT /participants/{Type}/{ID}/error` (or `PUT /participants/{Type}/{ID}/{SubId}/error`) is used. - summary: Return participant information error - tags: - - participants - operationId: ParticipantsSubIdErrorByTypeAndID - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - - $ref: "#/components/parameters/SubId" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /participants: - post: - description: The HTTP request `POST /participants` is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency. - summary: Create bulk participant information - tags: - - participants - operationId: Participants1 - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Participant information to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ParticipantsPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /participants/{ID}: - put: - description: The callback `PUT /participants/{ID}` is used to inform the client of the result of the creation of the provided list of identities. - summary: Return bulk participant information - tags: - - participants - operationId: putParticipantsByID - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Participant information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ParticipantsIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /participants/{ID}/error: - put: - description: If there is an error during FSP information creation in the server, the error callback `PUT /participants/{ID}/error` is used. The `{ID}` in the URI should contain the requestId that was used for the creation of the participant information. - summary: Return bulk participant information error - tags: - - participants - operationId: ParticipantsByIDAndError - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Parties - /parties/{Type}/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /parties/{Type}/{ID}` (or `GET /parties/{Type}/{ID}/{SubId}`) is used to look up information regarding the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}` (for example, `GET /parties/MSISDN/123456789`, or `GET /parties/BUSINESS/shoecompany/employee1`). - summary: Look up party information - tags: - - parties - operationId: PartiesByTypeAndID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /parties/{Type}/{ID}` (or `PUT /parties/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the Party information lookup. - summary: Return party information - tags: - - parties - operationId: PartiesByTypeAndID2 - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Party information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/PartiesTypeIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /parties/{Type}/{ID}/error: - put: - description: If the server is unable to find Party information of the provided identity, or another processing error occurred, the error callback `PUT /parties/{Type}/{ID}/error` (or `PUT /parties/{Type}/{ID}/{SubI}/error`) is used. - summary: Return party information error - tags: - - parties - operationId: PartiesErrorByTypeAndID - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /parties/{Type}/{ID}/{SubId}: - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - - $ref: "#/components/parameters/SubId" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /parties/{Type}/{ID}` (or `GET /parties/{Type}/{ID}/{SubId}`) is used to look up information regarding the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}` (for example, `GET /parties/MSISDN/123456789`, or `GET /parties/BUSINESS/shoecompany/employee1`). - summary: Look up party information - tags: - - parties - operationId: PartiesSubIdByTypeAndID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /parties/{Type}/{ID}` (or `PUT /parties/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the Party information lookup. - summary: Return party information - tags: - - parties - operationId: PartiesSubIdByTypeAndIDPut - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Party information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/PartiesTypeIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /parties/{Type}/{ID}/{SubId}/error: - put: - description: If the server is unable to find Party information of the provided identity, or another processing error occurred, the error callback `PUT /parties/{Type}/{ID}/error` (or `PUT /parties/{Type}/{ID}/{SubId}/error`) is used. - summary: Return party information error - tags: - - parties - operationId: PartiesSubIdErrorByTypeAndID - parameters: - #Path - - $ref: "#/components/parameters/Type" - - $ref: "#/components/parameters/ID" - - $ref: "#/components/parameters/SubId" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Transaction requests - /transactionRequests: - post: - description: The HTTP request `POST /transactionRequests` is used to request the creation of a transaction request for the provided financial transaction in the server. - summary: Perform transaction request - tags: - - transactionRequests - operationId: TransactionRequests - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Transaction request to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionRequestsPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /transactionRequests/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /transactionRequests/{ID}` is used to get information regarding a transaction request created or requested earlier. The `{ID}` in the URI should contain the `transactionRequestId` that was used for the creation of the transaction request. - summary: Retrieve transaction request information - tags: - - transactionRequests - operationId: TransactionRequestsByID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /transactionRequests/{ID}` is used to inform the client of a requested or created transaction request. The `{ID}` in the URI should contain the `transactionRequestId` that was used for the creation of the transaction request, or the `{ID}` that was used in the `GET /transactionRequests/{ID}`. - summary: Return transaction request information - tags: - - transactionRequests - operationId: TransactionRequestsByIDPut - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Transaction request information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionRequestsIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /transactionRequests/{ID}/error: - put: - description: If the server is unable to find or create a transaction request, or another processing error occurs, the error callback `PUT /transactionRequests/{ID}/error` is used. The `{ID}` in the URI should contain the `transactionRequestId` that was used for the creation of the transaction request, or the `{ID}` that was used in the `GET /transactionRequests/{ID}`. - summary: Return transaction request information error - tags: - - transactionRequests - operationId: TransactionRequestsErrorByID - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Quotes - /quotes: - post: - description: The HTTP request `POST /quotes` is used to request the creation of a quote for the provided financial transaction in the server. - summary: Calculate quote - tags: - - quotes - operationId: Quotes - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the quote to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/QuotesPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /quotes/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /quotes/{ID}` is used to get information regarding a quote created or requested earlier. The `{ID}` in the URI should contain the `quoteId` that was used for the creation of the quote. - summary: Retrieve quote information - tags: - - quotes - operationId: QuotesByID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /quotes/{ID}` is used to inform the client of a requested or created quote. The `{ID}` in the URI should contain the `quoteId` that was used for the creation of the quote, or the `{ID}` that was used in the `GET /quotes/{ID}` request. - summary: Return quote information - tags: - - quotes - operationId: QuotesByID1 - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Quote information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/QuotesIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /quotes/{ID}/error: - put: - description: If the server is unable to find or create a quote, or some other processing error occurs, the error callback `PUT /quotes/{ID}/error` is used. The `{ID}` in the URI should contain the `quoteId` that was used for the creation of the quote, or the `{ID}` that was used in the `GET /quotes/{ID}` request. - summary: Return quote information error - tags: - - quotes - operationId: QuotesByIDAndError - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Authorizations - '/authorizations/{ID}': - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: - The HTTP request `GET /authorizations/{ID}` is used to request the Payer to enter the applicable credentials in the Payee FSP system. The `{ID}` in the URI should contain the `transactionRequestID`, received from the `POST /transactionRequests` service earlier in the process. This request requires a query string to be included in the URI, with the following key-value pairs*:* - - - - `authenticationType={Type}`, where `{Type}` value is a valid authentication type from the enumeration `AuthenticationType`. - - - - `retriesLeft=={NrOfRetries}`, where `{NrOfRetries}` is the number of retries left before the financial transaction is rejected. `{NrOfRetries}` must be expressed in the form of the data type `Integer`. `retriesLeft=1` means that this is the last retry before the financial transaction is rejected. - - - - `amount={Amount}`, where `{Amount}` is the transaction amount that will be withdrawn from the Payer’s account. `{Amount}` must be expressed in the form of the data type `Amount`. - - - - `currency={Currency}`, where `{Currency}` is the transaction currency for the amount that will be withdrawn from the Payer’s account. The `{Currency}` value must be expressed in the form of the enumeration `CurrencyCode`. - - - The following is an example URI containing all the required key-value pairs in the query string*:* - - - `GET /authorization/3d492671-b7af-4f3f-88de-76169b1bdf88?authenticationType=OTP&retriesLeft=2&amount=102¤cy=USD` - summary: Perform authorization - tags: - - authorizations - operationId: AuthorizationsByIDGet - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /authorizations/{ID}` is used to inform the client of the result of a previously-requested authorization. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /authorizations/{ID}` request. - summary: Return authorization result - tags: - - authorizations - operationId: AuthorizationsByIDPut - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Authorization result returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/AuthorizationsIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /authorizations/{ID}/error: - put: - description: If the server is unable to find the transaction request, or another processing error occurs, the error callback `PUT /authorizations/{ID}/error` is used. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /authorizations/{ID}`. - summary: Return authorization error - tags: - - authorizations - operationId: AuthorizationsByIDAndError - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Transfers - /transfers: - post: - description: The HTTP request `POST /transfers` is used to request the creation of a transfer for the next ledger, and a financial transaction for the Payee FSP. - summary: Perform transfer - tags: - - transfers - operationId: transfers - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the transfer to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransfersPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /transfers/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /transfers/{ID}` is used to get information regarding a transfer created or requested earlier. The `{ID}` in the URI should contain the `transferId` that was used for the creation of the transfer. - summary: Retrieve transfer information - tags: - - transfers - operationId: TransfersByIDGet - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - patch: - description: The HTTP request PATCH /transfers/ is used by a Switch to update the state of a previously reserved transfer, if the Payee FSP has requested a commit notification when the Switch has completed processing of the transfer. The in the URI should contain the transferId that was used for the creation of the transfer. Please note that this request does not generate a callback. - summary: Return transfer information - tags: - - transfers - operationId: TransfersByIDPatch - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Transfer notification upon completion. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransfersIDPatchResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /transfers/{ID}` is used to inform the client of a requested or created transfer. The `{ID}` in the URI should contain the `transferId` that was used for the creation of the transfer, or the `{ID}` that was used in the `GET /transfers/{ID}` request. - summary: Return transfer information - tags: - - transfers - operationId: TransfersByIDPut - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Transfer information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransfersIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /transfers/{ID}/error: - put: - description: If the server is unable to find or create a transfer, or another processing error occurs, the error callback `PUT /transfers/{ID}/error` is used. The `{ID}` in the URI should contain the `transferId` that was used for the creation of the transfer, or the `{ID}` that was used in the `GET /transfers/{ID}`. - summary: Return transfer information error - tags: - - transfers - operationId: TransfersByIDAndError - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Transactions - /transactions/{ID}: - parameters: - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /transactions/{ID}` is used to get transaction information regarding a financial transaction created earlier. The `{ID}` in the URI should contain the `transactionId` that was used for the creation of the quote, as the transaction is created as part of another process (the transfer process). - summary: Retrieve transaction information - tags: - - transactions - operationId: TransactionsByID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /transactions/{ID}` is used to inform the client of a requested transaction. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /transactions/{ID}` request. - summary: Return transaction information - tags: - - transactions - operationId: TransactionsByID1 - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Transaction information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionsIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /transactions/{ID}/error: - put: - description: If the server is unable to find or create a transaction, or another processing error occurs, the error callback `PUT /transactions/{ID}/error` is used. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /transactions/{ID}` request. - summary: Return transaction information error - tags: - - transactions - operationId: TransactionsErrorByID - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Bulk Quotes - /bulkQuotes: - post: - description: The HTTP request `POST /bulkQuotes` is used to request the creation of a bulk quote for the provided financial transactions in the server. - summary: Calculate bulk quote - tags: - - bulkQuotes - operationId: BulkQuotes - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the bulk quote to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/BulkQuotesPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /bulkQuotes/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /bulkQuotes/{ID}` is used to get information regarding a bulk quote created or requested earlier. The `{ID}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote. - summary: Retrieve bulk quote information - tags: - - bulkQuotes - operationId: BulkQuotesByID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /bulkQuotes/{ID}` is used to inform the client of a requested or created bulk quote. The `{ID}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote, or the `{ID}` that was used in the `GET /bulkQuotes/{ID}` request. - summary: Return bulk quote information - tags: - - bulkQuotes - operationId: BulkQuotesByID1 - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Bulk quote information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/BulkQuotesIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /bulkQuotes/{ID}/error: - put: - description: If the server is unable to find or create a bulk quote, or another processing error occurs, the error callback `PUT /bulkQuotes/{ID}/error` is used. The `{ID}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote, or the `{ID}` that was used in the `GET /bulkQuotes/{ID}` request. - summary: Return bulk quote information error - tags: - - bulkQuotes - operationId: BulkQuotesErrorByID - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - - #Bulk transfers - /bulkTransfers: - post: - description: The HTTP request `POST /bulkTransfers` is used to request the creation of a bulk transfer in the server. - summary: Perform bulk transfer - tags: - - bulkTransfers - operationId: BulkTransfers - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the bulk transfer to be created. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/BulkTransfersPostRequest" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /bulkTransfers/{ID}: - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - get: - description: The HTTP request `GET /bulkTransfers/{ID}` is used to get information regarding a bulk transfer created or requested earlier. The `{ID}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer. - summary: Retrieve bulk transfer information - tags: - - bulkTransfers - operationId: BulkTransferByID - parameters: - #Headers - - $ref: "#/components/parameters/Accept" - responses: - 202: - $ref: "#/components/responses/202" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - put: - description: The callback `PUT /bulkTransfers/{ID}` is used to inform the client of a requested or created bulk transfer. The `{ID}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer (`POST /bulkTransfers`), or the `{ID}` that was used in the `GET /bulkTransfers/{ID}` request. - summary: Return bulk transfer information - tags: - - bulkTransfers - operationId: BulkTransfersByIDPut - parameters: - #Headers - - $ref: "#/components/parameters/Content-Length" - requestBody: - description: Bulk transfer information returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/BulkTransfersIDPutResponse" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - /bulkTransfers/{ID}/error: - put: - description: If the server is unable to find or create a bulk transfer, or another processing error occurs, the error callback `PUT /bulkTransfers/{ID}/error` is used. The `{ID}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer (`POST /bulkTransfers`), or the `{ID}` that was used in the `GET /bulkTransfers/{ID}` request. - summary: Return bulk transfer information error - tags: - - bulkTransfers - operationId: BulkTransfersErrorByID - parameters: - #Path - - $ref: "#/components/parameters/ID" - #Headers - - $ref: "#/components/parameters/Content-Length" - - $ref: "#/components/parameters/Content-Type" - - $ref: "#/components/parameters/Date" - - $ref: "#/components/parameters/X-Forwarded-For" - - $ref: "#/components/parameters/FSPIOP-Source" - - $ref: "#/components/parameters/FSPIOP-Destination" - - $ref: "#/components/parameters/FSPIOP-Encryption" - - $ref: "#/components/parameters/FSPIOP-Signature" - - $ref: "#/components/parameters/FSPIOP-URI" - - $ref: "#/components/parameters/FSPIOP-HTTP-Method" - requestBody: - description: Details of the error returned. - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationObject" - responses: - 200: - $ref: "#/components/responses/200" - 400: - $ref: "#/components/responses/400" - 401: - $ref: "#/components/responses/401" - 403: - $ref: "#/components/responses/403" - 404: - $ref: "#/components/responses/404" - 405: - $ref: "#/components/responses/405" - 406: - $ref: "#/components/responses/406" - 501: - $ref: "#/components/responses/501" - 503: - $ref: "#/components/responses/503" - -components: - schemas: - #Element definitions - Amount: - title: Amount - type: string - pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$ - description: The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed. - AmountType: - title: AmountType - type: string - enum: - - SEND - - RECEIVE - description: Below are the allowed values for the enumeration AmountType. - - - SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. - - - RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees. - AuthenticationType: - title: AuthenticationType - type: string - enum: - - OTP - - QRCODE - description: - Below are the allowed values for the enumeration AuthenticationType. - - - OTP - One-time password generated by the Payer FSP. - - - QRCODE - QR code used as One Time Password. - AuthenticationValue: - title: AuthenticationValue - oneOf: - - $ref: "#/components/schemas/OtpValue" - - $ref: "#/components/schemas/QRCODE" - pattern: ^\d{3,10}$|^\S{1,64}$ - description: Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type. - AuthorizationResponse: - title: AuthorizationResponse - type: string - enum: - - ENTERED - - REJECTED - - RESEND - description: Below are the allowed values for the enumeration. - - - ENTERED - Consumer entered the authentication value. - - - REJECTED - Consumer rejected the transaction. - - - RESEND - Consumer requested to resend the authentication value. - BalanceOfPayments: - title: BalanceOfPayments - type: string - pattern: ^[1-9]\d{2}$ - description: (BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. - BinaryString: - type: string - pattern: ^[A-Za-z0-9-_]+[=]{0,2}$ - description: The API data type BinaryString is a JSON String. The string is a base64url encoding of a string of raw bytes, where padding (character ‘=’) is added at the end of the data if needed to ensure that the string is a multiple of 4 characters. The length restriction indicates the allowed number of characters. - BinaryString32: - type: string - pattern: ^[A-Za-z0-9-_]{43}$ - description: The API data type BinaryString32 is a fixed size version of the API data type BinaryString, where the raw underlying data is always of 32 bytes. The data type BinaryString32 should not use a padding character as the size of the underlying data is fixed. - BulkTransferState: - title: BulkTransactionState - type: string - enum: - - RECEIVED - - PENDING - - ACCEPTED - - PROCESSING - - COMPLETED - - REJECTED - description: Below are the allowed values for the enumeration. - - - RECEIVED - Payee FSP has received the bulk transfer from the Payer FSP. - - - PENDING - Payee FSP has validated the bulk transfer. - - - ACCEPTED - Payee FSP has accepted to process the bulk transfer. - - - PROCESSING - Payee FSP has started to transfer fund to the Payees. - - - COMPLETED - Payee FSP has completed transfer of funds to the Payees. - - - REJECTED - Payee FSP has rejected to process the bulk transfer. - Code: - title: Code - type: string - pattern: ^[0-9a-zA-Z]{4,32}$ - description: Any code/token returned by the Payee FSP (TokenCode Type). - CorrelationId: - title: CorrelationId - type: string - pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ - description: Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘). - Currency: - title: Currency - description: The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies. - type: string - minLength: 3 - maxLength: 3 - enum: - - AED - - AFN - - ALL - - AMD - - ANG - - AOA - - ARS - - AUD - - AWG - - AZN - - BAM - - BBD - - BDT - - BGN - - BHD - - BIF - - BMD - - BND - - BOB - - BRL - - BSD - - BTN - - BWP - - BYN - - BZD - - CAD - - CDF - - CHF - - CLP - - CNY - - COP - - CRC - - CUC - - CUP - - CVE - - CZK - - DJF - - DKK - - DOP - - DZD - - EGP - - ERN - - ETB - - EUR - - FJD - - FKP - - GBP - - GEL - - GGP - - GHS - - GIP - - GMD - - GNF - - GTQ - - GYD - - HKD - - HNL - - HRK - - HTG - - HUF - - IDR - - ILS - - IMP - - INR - - IQD - - IRR - - ISK - - JEP - - JMD - - JOD - - JPY - - KES - - KGS - - KHR - - KMF - - KPW - - KRW - - KWD - - KYD - - KZT - - LAK - - LBP - - LKR - - LRD - - LSL - - LYD - - MAD - - MDL - - MGA - - MKD - - MMK - - MNT - - MOP - - MRO - - MUR - - MVR - - MWK - - MXN - - MYR - - MZN - - NAD - - NGN - - NIO - - NOK - - NPR - - NZD - - OMR - - PAB - - PEN - - PGK - - PHP - - PKR - - PLN - - PYG - - QAR - - RON - - RSD - - RUB - - RWF - - SAR - - SBD - - SCR - - SDG - - SEK - - SGD - - SHP - - SLL - - SOS - - SPL - - SRD - - STD - - SVC - - SYP - - SZL - - THB - - TJS - - TMT - - TND - - TOP - - TRY - - TTD - - TVD - - TWD - - TZS - - UAH - - UGX - - USD - - UYU - - UZS - - VEF - - VND - - VUV - - WST - - XAF - - XCD - - XDR - - XOF - - XPF - - YER - - ZAR - - ZMW - - ZWD - Date: - title: Date - type: string - pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ - description: - The API data type Date is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. - This format, as specified in ISO 8601, contains a date only. A more readable version of the format is yyyy-MM-dd. Examples are "1982-05-23", "1987-08-05”. - DateOfBirth: - title: DateofBirth (type Date) - type: string - pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ - description: Date of Birth of the Party. - DateTime: - title: DateTime - type: string - pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$ - description: - The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. - The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z indicates Zulu time zone, same as UTC). - ErrorCode: - title: ErrorCode - type: string - pattern: ^[1-9]\d{3}$ - description: The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error. - ErrorDescription: - title: ErrorDescription - type: string - minLength: 1 - maxLength: 128 - description: Error description string. - ExtensionKey: - title: ExtensionKey - type: string - minLength: 1 - maxLength: 32 - description: Extension key. - ExtensionValue: - title: ExtensionValue - type: string - minLength: 1 - maxLength: 128 - description: Extension value. - FirstName: - title: FirstName - type: string - minLength: 1 - maxLength: 128 - pattern: ^(?!\s*$)[\w .,'-]{1,128}$ - description: First name of the Party (Name Type). - FspId: - title: FspId - type: string - minLength: 1 - maxLength: 32 - description: FSP identifier. - IlpCondition: - title: IlpCondition - type: string - pattern: ^[A-Za-z0-9-_]{43}$ - maxLength: 48 - description: Condition that must be attached to the transfer by the Payer. - IlpFulfilment: - title: IlpFulfilment - type: string - pattern: ^[A-Za-z0-9-_]{43}$ - maxLength: 48 - description: Fulfilment that must be attached to the transfer by the Payee. - IlpPacket: - title: IlpPacket - type: string - pattern: ^[A-Za-z0-9-_]+[=]{0,2}$ - minLength: 1 - maxLength: 32768 - description: Information for recipient (transport layer information). - Integer: - title: Integer - type: string - pattern: ^[1-9]\d*$ - description: The API data type Integer is a JSON String consisting of digits only. Negative numbers and leading zeroes are not allowed. The data type is always limited to a specific number of digits. - LastName: - title: LastName - type: string - minLength: 1 - maxLength: 128 - pattern: ^(?!\s*$)[\w .,'-]{1,128}$ - description: Last name of the Party (Name Type). - Latitude: - title: Latitude - type: string - pattern: ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$ - description: The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. - Longitude: - title: Longitude - type: string - pattern: ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$ - description: The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. - MerchantClassificationCode: - title: MerchantClassificationCode - type: string - pattern: ^[\d]{1,4}$ - description: A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc. - MiddleName: - title: MiddleName - type: string - minLength: 1 - maxLength: 128 - pattern: ^(?!\s*$)[\w .,'-]{1,128}$ - description: Middle name of the Party (Name Type). - Name: - title: Name - type: string - pattern: ^(?!\s*$)[\w .,'-]{1,128}$ - description: - The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name. - - - Regular Expression - The regular expression for restricting the Name type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ). - - - **Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters. - Note: - title: Note - type: string - minLength: 1 - maxLength: 128 - description: Memo assigned to transaction. - OtpValue: - title: OtpValue - type: string - pattern: ^\d{3,10}$ - description: The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more leading zeros are allowed. - PartyIdentifier: - title: PartyIdentifier - type: string - minLength: 1 - maxLength: 128 - description: Identifier of the Party. - PartyIdType: - title: PartyIdType - type: string - enum: - - MSISDN - - EMAIL - - PERSONAL_ID - - BUSINESS - - DEVICE - - ACCOUNT_ID - - IBAN - - ALIAS - description: Below are the allowed values for the enumeration. - - - MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - - - EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696). - - - PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - - - BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - - - DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - - - ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - - - IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - - - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier. - PartyName: - title: PartyName - type: string - minLength: 1 - maxLength: 128 - description: Name of the Party. Could be a real name or a nickname. - PartySubIdOrType: - title: PartySubIdOrType - type: string - minLength: 1 - maxLength: 128 - description: Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType. - PersonalIdentifierType: - title: PersonalIdentifierType - type: string - enum: - - PASSPORT - - NATIONAL_REGISTRATION - - DRIVING_LICENSE - - ALIEN_REGISTRATION - - NATIONAL_ID_CARD - - EMPLOYER_ID - - TAX_ID_NUMBER - - SENIOR_CITIZENS_CARD - - MARRIAGE_CERTIFICATE - - HEALTH_CARD - - VOTERS_ID - - UNITED_NATIONS - - OTHER_ID - description: Below are the allowed values for the enumeration. - - - PASSPORT - A passport number is used as reference to a Party. - - - NATIONAL_REGISTRATION - A national registration number is used as reference to a Party. - - - DRIVING_LICENSE - A driving license is used as reference to a Party. - - - ALIEN_REGISTRATION - An alien registration number is used as reference to a Party. - - - NATIONAL_ID_CARD - A national ID card number is used as reference to a Party. - - - EMPLOYER_ID - A tax identification number is used as reference to a Party. - - - TAX_ID_NUMBER - A tax identification number is used as reference to a Party. - - - SENIOR_CITIZENS_CARD - A senior citizens card number is used as reference to a Party. - - - MARRIAGE_CERTIFICATE - A marriage certificate number is used as reference to a Party. - - - HEALTH_CARD - A health card number is used as reference to a Party. - - - VOTERS_ID - A voter’s identification number is used as reference to a Party. - - - UNITED_NATIONS - An UN (United Nations) number is used as reference to a Party. - - - OTHER_ID - Any other type of identification type number is used as reference to a Party. - QRCODE: - title: QRCODE - type: string - minLength: 1 - maxLength: 64 - description: QR code used as a One Time Password. - RefundReason: - title: RefundReason - type: string - minLength: 1 - maxLength: 128 - description: Reason for the refund. - TokenCode: - title: TokenCode - type: string - pattern: ^[0-9a-zA-Z]{4,32}$ - description: The API data type TokenCode is a JSON String between 4 and 32 characters, consisting of digits or upper- or lowercase characters from a to z. - TransactionInitiator: - title: TransactionInitiator - type: string - enum: - - PAYER - - PAYEE - description: Below are the allowed values for the enumeration. - - - PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way. - - - PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device. - TransactionInitiatorType: - title: TransactionInitiatorType - type: string - enum: - - CONSUMER - - AGENT - - BUSINESS - - DEVICE - description: Below are the allowed values for the enumeration. - - - CONSUMER - Consumer is the initiator of the transaction. - - - AGENT - Agent is the initiator of the transaction. - - - BUSINESS - Business is the initiator of the transaction. - - - DEVICE - Device is the initiator of the transaction. - TransactionRequestState: - title: TransactionRequestState - type: string - enum: - - RECEIVED - - PENDING - - ACCEPTED - - REJECTED - description: Below are the allowed values for the enumeration. - - - RECEIVED - Payer FSP has received the transaction from the Payee FSP. - - - PENDING - Payer FSP has sent the transaction request to the Payer. - - - ACCEPTED - Payer has approved the transaction. - - - REJECTED - Payer has rejected the transaction. - TransactionScenario: - title: TransactionScenario - type: string - enum: - - DEPOSIT - - WITHDRAWAL - - TRANSFER - - PAYMENT - - REFUND - description: Below are the allowed values for the enumeration. - - - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a normal scenario, electronic funds are transferred from a Business account to a Consumer account, and physical cash is given from the Consumer to the Business User. - - - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. In a normal scenario, electronic funds are transferred from a Consumer’s account to a Business account, and physical cash is given from the Business User to the Consumer. - - - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to Consumer) transaction. - - - PAYMENT - Usually used for performing a transaction from a Consumer to a Merchant or Organization, but could also be for a B2B (Business to Business) payment. The transaction could be online for a purchase in an Internet store, in a physical store where both the Consumer and Business User are present, a bill payment, a donation, and so on. - - - REFUND - Used for performing a refund of transaction. - TransactionState: - title: TransactionState - type: string - enum: - - RECEIVED - - PENDING - - COMPLETED - - REJECTED - description: Below are the allowed values for the enumeration. - - - RECEIVED - Payee FSP has received the transaction from the Payer FSP. - - - PENDING - Payee FSP has validated the transaction. - - - COMPLETED - Payee FSP has successfully performed the transaction. - - - REJECTED - Payee FSP has failed to perform the transaction. - TransactionSubScenario: - title: TransactionSubScenario - type: string - pattern: ^[A-Z_]{1,32}$ - description: Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type). - TransferState: - title: TransferState - type: string - enum: - - RECEIVED - - RESERVED - - COMMITTED - - ABORTED - description: Below are the allowed values for the enumeration. - - - RECEIVED - Next ledger has received the transfer. - - - RESERVED - Next ledger has reserved the transfer. - - - COMMITTED - Next ledger has successfully performed the transfer. - - - ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer. - UndefinedEnum: - title: UndefinedEnum - type: string - pattern: ^[A-Z_]{1,32}$ - description: The API data type UndefinedEnum is a JSON String consisting of 1 to 32 uppercase characters including an underscore character (_). - - #Complex Types - AuthenticationInfo: - title: AuthenticationInfo - type: object - description: Data model for the complex type AuthenticationInfo. - properties: - authentication: - $ref: "#/components/schemas/AuthenticationType" - description: Type of authentication. - example: OTP - authenticationValue: - $ref: "#/components/schemas/AuthenticationValue" - description: Authentication value. - example: 1234 - required: - - authentication - - authenticationValue - AuthorizationsIDPutResponse: - title: AuthorizationsIDPutResponse - type: object - description: The object sent in the PUT /authorizations/{ID} callback. - properties: - authenticationInfo: - $ref: "#/components/schemas/AuthenticationInfo" - description: OTP or QR Code if entered, otherwise empty. - example: OTP - responseType: - $ref: "#/components/schemas/AuthorizationResponse" - description: Enum containing response information; if the customer entered the authentication value, rejected the transaction, or requested a resend of the authentication value. - example: ENTERED - required: - - responseType - BulkQuotesIDPutResponse: - title: BulkQuotesIDPutResponse - type: object - description: The object sent in the PUT /bulkQuotes/{ID} callback. - properties: - individualQuoteResults: - type: array - maxItems: 1000 - items: - $ref: "#/components/schemas/IndividualQuoteResult" - description: Fees for each individual transaction, if any of them are charged per transaction. - expiration: - $ref: "#/components/schemas/DateTime" - description: Date and time until when the quotation is valid and can be honored when used in the subsequent transaction request. - example: "2016-05-24T08:38:08.699-04:00" - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - expiration - BulkQuotesPostRequest: - title: BulkQuotesPostRequest - type: object - description: The object sent in the POST /bulkQuotes request. - properties: - bulkQuoteId: - $ref: "#/components/schemas/CorrelationId" - description: Common ID between the FSPs for the bulk quote object, decided by the Payer FSP. The ID should be reused for resends of the same bulk quote. A new ID should be generated for each new bulk quote. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - payer: - $ref: "#/components/schemas/Party" - description: Information about the Payer in the proposed financial transaction. - geoCode: - $ref: "#/components/schemas/GeoCode" - description: Longitude and Latitude of the initiating Party. Can be used to detect fraud. - expiration: - $ref: "#/components/schemas/DateTime" - description: Expiration is optional to let the Payee FSP know when a quote no longer needs to be returned. - example: "2016-05-24T08:38:08.699-04:00" - individualQuotes: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: "#/components/schemas/IndividualQuote" - description: List of quotes elements. - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - bulkQuoteId - - payer - - individualQuotes - BulkTransfersIDPutResponse: - title: BulkTransfersIDPutResponse - type: object - description: The object sent in the PUT /bulkTransfers/{ID} callback. - properties: - completedTimestamp: - $ref: "#/components/schemas/DateTime" - description: Time and date when the bulk transaction was completed. - example: "2016-05-24T08:38:08.699-04:00" - individualTransferResults: - type: array - maxItems: 1000 - items: - $ref: "#/components/schemas/IndividualTransferResult" - description: List of IndividualTransferResult elements. - bulkTransferState: - $ref: "#/components/schemas/BulkTransferState" - description: The state of the bulk transfer. - example: RECEIVED - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - bulkTransferState - BulkTransfersPostRequest: - title: BulkTransfersPostRequest - type: object - description: The object sent in the POST /bulkTransfers request. - properties: - bulkTransferId: - $ref: "#/components/schemas/CorrelationId" - description: Common ID between the FSPs and the optional Switch for the bulk transfer object, decided by the Payer FSP. The ID should be reused for resends of the same bulk transfer. A new ID should be generated for each new bulk transfer. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - bulkQuoteId: - $ref: "#/components/schemas/CorrelationId" - description: ID of the related bulk quote. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - payerFsp: - $ref: "#/components/schemas/FspId" - description: Payer FSP identifier. - example: 5678 - payeeFsp: - $ref: "#/components/schemas/FspId" - description: Payee FSP identifier. - example: 1234 - individualTransfers: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: "#/components/schemas/IndividualTransfer" - description: List of IndividualTransfer elements. - expiration: - $ref: "#/components/schemas/DateTime" - description: Expiration time of the transfers. - example: "2016-05-24T08:38:08.699-04:00" - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - bulkTransferId - - bulkQuoteId - - payerFsp - - payeeFsp - - individualTransfers - - expiration - ErrorInformation: - title: ErrorInformation - type: object - description: Data model for the complex type ErrorInformation. - properties: - errorCode: - $ref: "#/components/schemas/ErrorCode" - description: Specific error number. - example: 5100 - errorDescription: - $ref: "#/components/schemas/ErrorDescription" - description: Error description string. - example: This is an error description. - extensionList: - $ref: "#/components/schemas/ExtensionList" - required: - - errorCode - - errorDescription - ErrorInformationObject: - title: ErrorInformationObject - type: object - description: Data model for the complex type object that contains ErrorInformation. - properties: - errorInformation: - $ref: "#/components/schemas/ErrorInformation" - required: - - errorInformation - ErrorInformationResponse: - title: ErrorInformationResponse - type: object - description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses. - properties: - errorInformation: - $ref: "#/components/schemas/ErrorInformation" - Extension: - title: Extension - type: object - description: Data model for the complex type Extension. - properties: - key: - $ref: "#/components/schemas/ExtensionKey" - description: Extension key. - value: - $ref: "#/components/schemas/ExtensionValue" - description: Extension value. - required: - - key - - value - ExtensionList: - title: ExtensionList - type: object - description: Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment. - properties: - extension: - type: array - items: - $ref: "#/components/schemas/Extension" - minItems: 1 - maxItems: 16 - description: Number of Extension elements. - required: - - extension - GeoCode: - title: GeoCode - type: object - description: Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated. - properties: - latitude: - $ref: "#/components/schemas/Latitude" - description: Latitude of the Party. - example: "+45.4215" - longitude: - $ref: "#/components/schemas/Longitude" - description: Longitude of the Party. - example: "+75.6972" - required: - - latitude - - longitude - IndividualQuote: - title: IndividualQuote - type: object - description: Data model for the complex type IndividualQuote. - properties: - quoteId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies the quote message. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - transactionId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies the transaction message. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - payee: - $ref: "#/components/schemas/Party" - description: Information about the Payee in the proposed financial transaction. - amountType: - $ref: "#/components/schemas/AmountType" - description: SEND for sendAmount, RECEIVE for receiveAmount. - example: RECEIVE - amount: - $ref: "#/components/schemas/Money" - description: Depending on amountType - If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. - If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive of any fees. The amount is not updated by any of the participating entities. - fees: - $ref: "#/components/schemas/Money" - description: The fees in the transaction. - The fees element should be empty if fees should be non-disclosed. - The fees element should be non-empty if fees should be disclosed. - transactionType: - $ref: "#/components/schemas/TransactionType" - description: Type of transaction that the quote is requested for. - note: - $ref: "#/components/schemas/Note" - description: Memo that will be attached to the transaction. - example: Note sent to Payee. - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - quoteId - - transactionId - - payee - - amountType - - amount - - transactionType - IndividualQuoteResult: - title: IndividualQuoteResult - type: object - description: Data model for the complex type IndividualQuoteResult. - properties: - quoteId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies the quote message. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - payee: - $ref: "#/components/schemas/Party" - description: Information about the Payee in the proposed financial transaction. - transferAmount: - $ref: "#/components/schemas/Money" - description: The amount of money that the Payee FSP should receive. - payeeReceiveAmount: - $ref: "#/components/schemas/Money" - description: The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees. - payeeFspFee: - $ref: "#/components/schemas/Money" - description: Payee FSP’s part of the transaction fee. - payeeFspCommission: - $ref: "#/components/schemas/Money" - description: Transaction commission from the Payee FSP. - ilpPacket: - $ref: "#/components/schemas/IlpPacket" - description: The ILP Packet that must be attached to the transfer by the Payer. - example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA - condition: - $ref: "#/components/schemas/IlpCondition" - description: The condition that must be attached to the transfer by the Payer. - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA - errorInformation: - $ref: "#/components/schemas/ErrorInformation" - description: Error code, category description. **Note:** receiveAmount, payeeFspFee, payeeFspCommission, expiration, ilpPacket, condition should not be set if errorInformation is set. - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - quoteId - IndividualTransfer: - title: IndividualTransfer - type: object - description: Data model for the complex type IndividualTransfer. - properties: - transferId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies messages related to the same /transfers sequence. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - transferAmount: - $ref: "#/components/schemas/Money" - description: Transaction amount to be sent. - ilpPacket: - $ref: "#/components/schemas/IlpPacket" - description: ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data. - example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA - condition: - $ref: "#/components/schemas/IlpCondition" - description: Condition that must be fulfilled to commit the transfer. - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transferId - - transferAmount - - ilpPacket - - condition - IndividualTransferResult: - title: IndividualTransferResult - type: object - description: Data model for the complex type IndividualTransferResult. - properties: - transferId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies messages related to the same /transfers sequence. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - fulfilment: - $ref: "#/components/schemas/IlpFulfilment" - description: Fulfilment of the condition specified with the transaction. **Note:** Either fulfilment or errorInformation should be set, not both. - example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8 - errorInformation: - $ref: "#/components/schemas/ErrorInformation" - description: If transfer is REJECTED, error information may be provided. **Note:** Either fulfilment or errorInformation should be set, not both. - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transferId - Money: - title: Money - type: object - description: Data model for the complex type Money. - properties: - currency: - $ref: "#/components/schemas/Currency" - description: Currency of the amount. - example: USD - amount: - $ref: "#/components/schemas/Amount" - description: Amount of Money. - example: "123.45" - required: - - currency - - amount - ParticipantsIDPutResponse: - title: ParticipantsIDPutResponse - type: object - description: The object sent in the PUT /participants/{ID} callback. - properties: - partyList: - type: array - items: - $ref: "#/components/schemas/PartyResult" - minItems: 1 - maxItems: 10000 - description: List of PartyResult elements that were either created or failed to be created. - currency: - $ref: "#/components/schemas/Currency" - description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo. - example: USD - required: - - partyList - ParticipantsPostRequest: - title: ParticipantsPostRequest - type: object - description: The object sent in the POST /participants request. - properties: - requestId: - $ref: "#/components/schemas/CorrelationId" - description: The ID of the request, decided by the client. Used for identification of the callback from the server. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - partyList: - type: array - items: - $ref: "#/components/schemas/PartyIdInfo" - minItems: 1 - maxItems: 10000 - description: List of PartyIdInfo elements that the client would like to update or create FSP information about. - currency: - $ref: "#/components/schemas/Currency" - description: Indicate that the provided Currency is supported by each PartyIdInfo in the list. - example: USD - required: - - requestId - - partyList - ParticipantsTypeIDPutResponse: - title: ParticipantsTypeIDPutResponse - type: object - description: The object sent in the PUT /participants/{Type}/{ID}/{SubId} and /participants/{Type}/{ID} callbacks. - properties: - fspId: - $ref: "#/components/schemas/FspId" - description: FSP Identifier that the Party belongs to. - example: 1234 - ParticipantsTypeIDSubIDPostRequest: - title: ParticipantsTypeIDSubIDPostRequest - type: object - description: The object sent in the POST /participants/{Type}/{ID}/{SubId} and /participants/{Type}/{ID} requests. An additional optional ExtensionList element has been added as part of v1.1 changes. - properties: - fspId: - $ref: "#/components/schemas/FspId" - description: FSP Identifier that the Party belongs to. - example: 1234 - currency: - $ref: "#/components/schemas/Currency" - description: Indicate that the provided Currency is supported by the Party. - example: USD - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - fspId - PartiesTypeIDPutResponse: - title: PartiesTypeIDPutResponse - type: object - description: The object sent in the PUT /parties/{Type}/{ID} callback. - properties: - party: - $ref: "#/components/schemas/Party" - description: Information regarding the requested Party. - required: - - party - Party: - title: Party - type: object - description: Data model for the complex type Party. - properties: - partyIdInfo: - $ref: "#/components/schemas/PartyIdInfo" - description: Party Id type, id, sub ID or type, and FSP Id. - merchantClassificationCode: - $ref: "#/components/schemas/MerchantClassificationCode" - description: Used in the context of Payee Information, where the Payee happens to be a merchant accepting merchant payments. - example: 4321 - name: - $ref: "#/components/schemas/PartyName" - description: Display name of the Party, could be a real name or a nick name. - example: Henrik Karlsson - personalInfo: - $ref: "#/components/schemas/PartyPersonalInfo" - description: Personal information used to verify identity of Party such as first, middle, last name and date of birth. - required: - - partyIdInfo - PartyComplexName: - title: PartyComplexName - type: object - description: Data model for the complex type PartyComplexName. - properties: - firstName: - $ref: "#/components/schemas/FirstName" - description: Party’s first name. - example: Henrik - middleName: - $ref: "#/components/schemas/MiddleName" - description: Party’s middle name. - example: Johannes - lastName: - $ref: "#/components/schemas/LastName" - description: Party’s last name. - example: Karlsson - PartyIdInfo: - title: PartyIdInfo - type: object - description: Data model for the complex type PartyIdInfo. An ExtensionList element has been added to this reqeust in version v1.1 - properties: - partyIdType: - $ref: "#/components/schemas/PartyIdType" - description: Type of the identifier. - example: PERSONAL_ID - partyIdentifier: - $ref: "#/components/schemas/PartyIdentifier" - description: An identifier for the Party. - example: 16135551212 - partySubIdOrType: - $ref: "#/components/schemas/PartySubIdOrType" - description: A sub-identifier or sub-type for the Party. - example: DRIVING_LICENSE - fspId: - $ref: "#/components/schemas/FspId" - description: FSP ID (if known). - example: 1234 - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - partyIdType - - partyIdentifier - PartyPersonalInfo: - title: PartyPersonalInfo - type: object - description: Data model for the complex type PartyPersonalInfo. - properties: - complexName: - $ref: "#/components/schemas/PartyComplexName" - description: First, middle and last name for the Party. - dateOfBirth: - $ref: "#/components/schemas/DateOfBirth" - description: Date of birth for the Party. - example: "1966-06-16" - PartyResult: - title: PartyResult - type: object - description: Data model for the complex type PartyResult. - properties: - partyId: - $ref: "#/components/schemas/PartyIdInfo" - description: Party Id type, id, sub ID or type, and FSP Id. - errorInformation: - $ref: "#/components/schemas/ErrorInformation" - description: If the Party failed to be added, error information should be provided. Otherwise, this parameter should be empty to indicate success. - required: - - partyId - QuotesIDPutResponse: - title: QuotesIDPutResponse - type: object - description: The object sent in the PUT /quotes/{ID} callback. - properties: - transferAmount: - $ref: "#/components/schemas/Money" - description: The amount of money that the Payee FSP should receive. - payeeReceiveAmount: - $ref: "#/components/schemas/Money" - description: The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees. - payeeFspFee: - $ref: "#/components/schemas/Money" - description: Payee FSP’s part of the transaction fee. - payeeFspCommission: - $ref: "#/components/schemas/Money" - description: Transaction commission from the Payee FSP. - expiration: - $ref: "#/components/schemas/DateTime" - description: Date and time until when the quotation is valid and can be honored when used in the subsequent transaction. - example: "2016-05-24T08:38:08.699-04:00" - geoCode: - $ref: "#/components/schemas/GeoCode" - description: Longitude and Latitude of the Payee. Can be used to detect fraud. - ilpPacket: - $ref: "#/components/schemas/IlpPacket" - description: The ILP Packet that must be attached to the transfer by the Payer. - example: “AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA” - condition: - $ref: "#/components/schemas/IlpCondition" - description: The condition that must be attached to the transfer by the Payer. - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transferAmount - - expiration - - ilpPacket - - condition - QuotesPostRequest: - title: QuotesPostRequest - type: object - description: The object sent in the POST /quotes request. - properties: - quoteId: - $ref: "#/components/schemas/CorrelationId" - description: Common ID between the FSPs for the quote object, decided by the Payer FSP. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - transactionId: - $ref: "#/components/schemas/CorrelationId" - description: Common ID (decided by the Payer FSP) between the FSPs for the future transaction object. The actual transaction will be created as part of a successful transfer process. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction. - example: a8323bc6-c228-4df2-ae82-e5a997baf899 - transactionRequestId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies an optional previously-sent transaction request. - example: a8323bc6-c228-4df2-ae82-e5a997baf890 - payee: - $ref: "#/components/schemas/Party" - description: Information about the Payee in the proposed financial transaction. - payer: - $ref: "#/components/schemas/Party" - description: Information about the Payer in the proposed financial transaction. - amountType: - $ref: "#/components/schemas/AmountType" - description: SEND for send amount, RECEIVE for receive amount. - example: SEND - amount: - $ref: "#/components/schemas/Money" - description: Depending on amountType - - If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. - If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities. - fees: - $ref: "#/components/schemas/Money" - description: The fees in the transaction. - The fees element should be empty if fees should be non-disclosed. - The fees element should be non-empty if fees should be disclosed. - transactionType: - $ref: "#/components/schemas/TransactionType" - description: Type of transaction for which the quote is requested. - geoCode: - $ref: "#/components/schemas/GeoCode" - description: Longitude and Latitude of the initiating Party. Can be used to detect fraud. - note: - $ref: "#/components/schemas/Note" - description: A memo that will be attached to the transaction. - example: Free-text memo. - expiration: - $ref: "#/components/schemas/DateTime" - description: Expiration is optional. It can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, and Merchant to know that their request has a time limit. - example: "2016-05-24T08:38:08.699-04:00" - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - quoteId - - transactionId - - payee - - payer - - amountType - - amount - - transactionType - Refund: - title: Refund - type: object - description: Data model for the complex type Refund. - properties: - originalTransactionId: - $ref: "#/components/schemas/CorrelationId" - description: Reference to the original transaction ID that is requested to be refunded. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - refundReason: - $ref: "#/components/schemas/RefundReason" - description: Free text indicating the reason for the refund. - example: Free text indicating reason for the refund. - required: - - originalTransactionId - Transaction: - title: Transaction - type: object - description: Data model for the complex type Transaction. The Transaction type is used to carry end-to-end data between the Payer FSP and the Payee FSP in the ILP Packet. Both the transactionId and the quoteId in the data model are decided by the Payer FSP in the POST /quotes request. - properties: - transactionId: - $ref: "#/components/schemas/CorrelationId" - description: ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote. - quoteId: - $ref: "#/components/schemas/CorrelationId" - description: ID of the quote, the ID is decided by the Payer FSP during the creation of the quote. - payee: - $ref: "#/components/schemas/Party" - description: Information about the Payee in the proposed financial transaction. - payer: - $ref: "#/components/schemas/Party" - description: Information about the Payer in the proposed financial transaction. - amount: - $ref: "#/components/schemas/Money" - description: Transaction amount to be sent. - transactionType: - $ref: "#/components/schemas/TransactionType" - description: Type of the transaction. - note: - $ref: "#/components/schemas/Note" - description: Memo associated to the transaction, intended to the Payee. - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transactionId - - quoteId - - payee - - payer - - amount - - transactionType - TransactionRequestsIDPutResponse: - title: TransactionRequestsIDPutResponse - type: object - description: The object sent in the PUT /transactionRequests/{ID} callback. - properties: - transactionId: - $ref: "#/components/schemas/CorrelationId" - description: Identifies a related transaction (if a transaction has been created). - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - transactionRequestState: - $ref: "#/components/schemas/TransactionRequestState" - description: State of the transaction request. - example: RECEIVED - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transactionRequestState - TransactionRequestsPostRequest: - title: TransactionRequestsPostRequest - type: object - description: The object sent in the POST /transactionRequests request. - properties: - transactionRequestId: - $ref: "#/components/schemas/CorrelationId" - description: Common ID between the FSPs for the transaction request object, decided by the Payee FSP. The ID should be reused for resends of the same transaction request. A new ID should be generated for each new transaction request. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - payee: - $ref: "#/components/schemas/Party" - description: Information about the Payee in the proposed financial transaction. - payer: - $ref: "#/components/schemas/PartyIdInfo" - description: Information about the Payer type, id, sub-type/id, FSP Id in the proposed financial transaction. - amount: - $ref: "#/components/schemas/Money" - description: Requested amount to be transferred from the Payer to Payee. - transactionType: - $ref: "#/components/schemas/TransactionType" - description: Type of transaction. - note: - $ref: "#/components/schemas/Note" - description: Reason for the transaction request, intended to the Payer. - example: Free-text memo. - geoCode: - $ref: "#/components/schemas/GeoCode" - description: Longitude and Latitude of the initiating Party. Can be used to detect fraud. - authenticationType: - $ref: "#/components/schemas/AuthenticationType" - description: OTP or QR Code, otherwise empty. - example: OTP - expiration: - $ref: "#/components/schemas/DateTime" - description: Can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, Merchant to know that their request has a time limit. - example: "2016-05-24T08:38:08.699-04:00" - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transactionRequestId - - payee - - payer - - amount - - transactionType - TransactionsIDPutResponse: - title: TransactionsIDPutResponse - type: object - description: The object sent in the PUT /transactions/{ID} callback. - properties: - completedTimestamp: - $ref: "#/components/schemas/DateTime" - description: Time and date when the transaction was completed. - example: "2016-05-24T08:38:08.699-04:00" - transactionState: - $ref: "#/components/schemas/TransactionState" - description: State of the transaction. - example: RECEIVED - code: - $ref: "#/components/schemas/Code" - description: Optional redemption information provided to Payer after transaction has been completed. - example: Test-Code - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transactionState - TransactionType: - title: TransactionType - type: object - description: Data model for the complex type TransactionType. - properties: - scenario: - $ref: "#/components/schemas/TransactionScenario" - description: Deposit, withdrawal, refund, … - example: DEPOSIT - subScenario: - $ref: "#/components/schemas/TransactionSubScenario" - description: Possible sub-scenario, defined locally within the scheme. - example: Locally defined sub-scenario. - initiator: - $ref: "#/components/schemas/TransactionInitiator" - description: Who is initiating the transaction - Payer or Payee. - example: PAYEE - initiatorType: - $ref: "#/components/schemas/TransactionInitiatorType" - description: Consumer, agent, business, … - example: CONSUMER - refundInfo: - $ref: "#/components/schemas/Refund" - description: Extra information specific to a refund scenario. Should only be populated if scenario is REFUND. - balanceOfPayments: - $ref: "#/components/schemas/BalanceOfPayments" - description: Balance of Payments code. - example: 123 - required: - - scenario - - initiator - - initiatorType - TransfersIDPatchResponse: - title: TransfersIDPatchResponse - type: object - description: PATCH /transfers/{ID} object - properties: - completedTimestamp: - $ref: "#/components/schemas/DateTime" - description: Time and date when the transaction was completed. - example: "2020-05-19T08:38:08.699-04:00" - transferState: - $ref: "#/components/schemas/TransferState" - description: State of the transfer. - example: RESERVED - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - completedTimestamp - - transferState - TransfersIDPutResponse: - title: TransfersIDPutResponse - type: object - description: The object sent in the PUT /transfers/{ID} callback. - properties: - fulfilment: - $ref: "#/components/schemas/IlpFulfilment" - description: Fulfilment of the condition specified with the transaction. Mandatory if transfer has completed successfully. - example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8 - completedTimestamp: - $ref: "#/components/schemas/DateTime" - description: Time and date when the transaction was completed. - example: "2016-05-24T08:38:08.699-04:00" - transferState: - $ref: "#/components/schemas/TransferState" - description: State of the transfer. - example: COMMITTED - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transferState - TransfersPostRequest: - title: TransfersPostRequest - type: object - description: The object sent in the POST /transfers request. - properties: - transferId: - $ref: "#/components/schemas/CorrelationId" - description: The common ID between the FSPs and the optional Switch for the transfer object, decided by the Payer FSP. The ID should be reused for resends of the same transfer. A new ID should be generated for each new transfer. - example: b51ec534-ee48-4575-b6a9-ead2955b8069 - payeeFsp: - $ref: "#/components/schemas/FspId" - description: Payee FSP in the proposed financial transaction. - example: 1234 - payerFsp: - $ref: "#/components/schemas/FspId" - description: Payer FSP in the proposed financial transaction. - example: 5678 - amount: - $ref: "#/components/schemas/Money" - description: The transfer amount to be sent. - ilpPacket: - $ref: "#/components/schemas/IlpPacket" - description: The ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data. - example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA - condition: - $ref: "#/components/schemas/IlpCondition" - description: The condition that must be fulfilled to commit the transfer. - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA - expiration: - $ref: "#/components/schemas/DateTime" - description: Expiration can be set to get a quick failure expiration of the transfer. The transfer should be rolled back if no fulfilment is delivered before this time. - example: "2016-05-24T08:38:08.699-04:00" - extensionList: - $ref: "#/components/schemas/ExtensionList" - description: Optional extension, specific to deployment. - required: - - transferId - - payeeFsp - - payerFsp - - amount - - ilpPacket - - condition - - expiration - - responses: - "200": - description: OK - "202": - description: Accepted - "400": - description: Bad Request - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - description: Content-Length header - $ref: "#/components/parameters/Content-Length" - Content-Type: - description: Content-Length header - $ref: "#/components/parameters/Content-Type" - "401": - description: Unauthorized - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - "403": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - "405": - description: Method Not Allowed - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - "406": - description: Not Acceptable - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - "501": - description: Not Implemented - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - "503": - description: Service Unavailable - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInformationResponse" - headers: - Content-Length: - $ref: "#/components/parameters/Content-Length" - Content-Type: - $ref: "#/components/parameters/Content-Type" - - parameters: - #Header parameters - Accept: - name: Accept - in: header - required: true - schema: - type: string - description: The `Accept` header field indicates the version of the API the client would like the server to use. - Content-Length: - name: Content-Length - in: header - required: false - schema: - type: integer - description: - The `Content-Length` header field indicates the anticipated size of the payload body. Only sent if there is a body. - - - **Note:** The API supports a maximum size of 5242880 bytes (5 Megabytes). - Content-Type: - name: Content-Type - in: header - schema: - type: string - required: true - description: The `Content-Type` header indicates the specific version of the API used to send the payload body. - Date: - name: Date - in: header - schema: - type: string - required: true - description: The `Date` header field indicates the date when the request was sent. - X-Forwarded-For: - name: X-Forwarded-For - in: header - schema: - type: string - required: false - description: - The `X-Forwarded-For` header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple `X-Forwarded-For` values should be expected and supported by implementers of the API. - - - **Note:** An alternative to `X-Forwarded-For` is defined in [RFC 7239](https://tools.ietf.org/html/rfc7239). However, to this point RFC 7239 is less-used and supported than `X-Forwarded-For`. - FSPIOP-Source: - name: FSPIOP-Source - in: header - schema: - type: string - required: true - description: The `FSPIOP-Source` header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field `FSPIOP-Signature`). - FSPIOP-Destination: - name: FSPIOP-Destination - in: header - schema: - type: string - required: false - description: The `FSPIOP-Destination` header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field must be set by the original sender of the request if the destination is known (valid for all services except GET /parties) so that any entities between the client and the server do not need to parse the payload for routing purposes. If the destination is not known (valid for service GET /parties), the field should be left empty. - FSPIOP-Encryption: - name: FSPIOP-Encryption - in: header - schema: - type: string - required: false - description: The `FSPIOP-Encryption` header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. - FSPIOP-Signature: - name: FSPIOP-Signature - in: header - schema: - type: string - required: false - description: The `FSPIOP-Signature` header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. - FSPIOP-URI: - name: FSPIOP-URI - in: header - schema: - type: string - required: false - description: The `FSPIOP-URI` header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information, see [the API Signature document](https://github.com/mojaloop/docs/tree/master/Specification%20Document%20Set). - FSPIOP-HTTP-Method: - name: FSPIOP-HTTP-Method - in: header - schema: - type: string - required: false - description: The `FSPIOP-HTTP-Method` header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information, see [the API Signature document](https://github.com/mojaloop/docs/tree/master/Specification%20Document%20Set). - #Path parameters - ID: - name: ID - in: path - required: true - schema: - type: string - description: The identifier value. - Type: - name: Type - in: path - required: true - schema: - type: string - description: The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. - SubId: - name: SubId - in: path - required: true - schema: - type: string - description: A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. +openapi: "3.0.2" +info: + version: "1.1" + title: Open API for FSP Interoperability (FSPIOP) + description: + Based on [API Definition updated on 2020-05-19 Version 1.1](https://github.com/mojaloop/mojaloop-specification/blob/master/documents/v1.1-document-set/API%20Definition_v1.1.pdf). + + + **Note:** The API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP header. + license: + name: CC BY-ND 4.0 + url: https://github.com/mojaloop/mojaloop-specification/blob/master/LICENSE.md + contact: + name: "Sam Kummary" + url: https://github.com/mojaloop/mojaloop-specification/issues +servers: + - url: "{protocol}://hostname:/switch/" + variables: + protocol: + enum: + - http + - https + default: https + +paths: + #Participants + /participants/{Type}/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + post: + description: The HTTP request `POST /participants/{Type}/{ID}` (or `POST /participants/{Type}/{ID}/{SubId}`) is used to create information in the server regarding the provided identity, defined by `{Type}`, `{ID}`, and optionally `{SubId}` (for example, `POST /participants/MSISDN/123456789` or `POST /participants/BUSINESS/shoecompany/employee1`). An ExtensionList element has been added to this reqeust in version v1.1 + summary: Create participant information + tags: + - participants + operationId: ParticipantsByIDAndType + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Participant information to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ParticipantsTypeIDSubIDPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + get: + description: The HTTP request `GET /participants/{Type}/{ID}` (or `GET /participants/{Type}/{ID}/{SubId}`) is used to find out in which FSP the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}`, is located (for example, `GET /participants/MSISDN/123456789`, or `GET /participants/BUSINESS/shoecompany/employee1`). This HTTP request should support a query string for filtering of currency. To use filtering of currency, the HTTP request `GET /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. + summary: Look up participant information + tags: + - participants + operationId: ParticipantsByTypeAndID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /participants/{Type}/{ID}` (or `PUT /participants/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the lookup, creation, or deletion of the FSP information related to the Party. If the FSP information is deleted, the fspId element should be empty; otherwise the element should include the FSP information for the Party. + summary: Return participant information + tags: + - participants + operationId: ParticipantsByTypeAndID3 + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Participant information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ParticipantsTypeIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + delete: + description: + The HTTP request `DELETE /participants/{Type}/{ID}` (or `DELETE /participants/{Type}/{ID}/{SubId}`) is used to delete information in the server regarding the provided identity, defined by `{Type}` and `{ID}`) (for example, `DELETE /participants/MSISDN/123456789`), and optionally `{SubId}`. This HTTP request should support a query string to delete FSP information regarding a specific currency only. To delete a specific currency only, the HTTP request `DELETE /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. + + + **Note:** The Account Lookup System should verify that it is the Party’s current FSP that is deleting the FSP information. + summary: Delete participant information + tags: + - participants + operationId: ParticipantsByTypeAndID2 + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /participants/{Type}/{ID}/error: + put: + description: If the server is unable to find, create or delete the associated FSP of the provided identity, or another processing error occurred, the error callback `PUT /participants/{Type}/{ID}/error` (or `PUT /participants/{Type}/{ID}/{SubId}/error`) is used. + summary: Return participant information error + tags: + - participants + operationId: ParticipantsErrorByTypeAndID + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /participants/{Type}/{ID}/{SubId}: + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + - $ref: "#/components/parameters/SubId" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + post: + description: The HTTP request `POST /participants/{Type}/{ID}` (or `POST /participants/{Type}/{ID}/{SubId}`) is used to create information in the server regarding the provided identity, defined by `{Type}`, `{ID}`, and optionally `{SubId}` (for example, `POST /participants/MSISDN/123456789` or `POST /participants/BUSINESS/shoecompany/employee1`). An ExtensionList element has been added to this reqeust in version v1.1 + summary: Create participant information + tags: + - participants + operationId: ParticipantsSubIdByTypeAndIDPost + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Participant information to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ParticipantsTypeIDSubIDPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + get: + description: The HTTP request `GET /participants/{Type}/{ID}` (or `GET /participants/{Type}/{ID}/{SubId}`) is used to find out in which FSP the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}`, is located (for example, `GET /participants/MSISDN/123456789`, or `GET /participants/BUSINESS/shoecompany/employee1`). This HTTP request should support a query string for filtering of currency. To use filtering of currency, the HTTP request `GET /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. + summary: Look up participant information + tags: + - participants + operationId: ParticipantsSubIdByTypeAndID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /participants/{Type}/{ID}` (or `PUT /participants/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the lookup, creation, or deletion of the FSP information related to the Party. If the FSP information is deleted, the fspId element should be empty; otherwise the element should include the FSP information for the Party. + summary: Return participant information + tags: + - participants + operationId: ParticipantsSubIdByTypeAndID3 + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Participant information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ParticipantsTypeIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + delete: + description: + The HTTP request `DELETE /participants/{Type}/{ID}` (or `DELETE /participants/{Type}/{ID}/{SubId}`) is used to delete information in the server regarding the provided identity, defined by `{Type}` and `{ID}`) (for example, `DELETE /participants/MSISDN/123456789`), and optionally `{SubId}`. This HTTP request should support a query string to delete FSP information regarding a specific currency only. To delete a specific currency only, the HTTP request `DELETE /participants/{Type}/{ID}?currency=XYZ` should be used, where `XYZ` is the requested currency. + + + **Note:** The Account Lookup System should verify that it is the Party’s current FSP that is deleting the FSP information. + summary: Delete participant information + tags: + - participants + operationId: ParticipantsSubIdByTypeAndID2 + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /participants/{Type}/{ID}/{SubId}/error: + put: + description: If the server is unable to find, create or delete the associated FSP of the provided identity, or another processing error occurred, the error callback `PUT /participants/{Type}/{ID}/error` (or `PUT /participants/{Type}/{ID}/{SubId}/error`) is used. + summary: Return participant information error + tags: + - participants + operationId: ParticipantsSubIdErrorByTypeAndID + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + - $ref: "#/components/parameters/SubId" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /participants: + post: + description: The HTTP request `POST /participants` is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency. + summary: Create bulk participant information + tags: + - participants + operationId: Participants1 + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Participant information to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ParticipantsPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /participants/{ID}: + put: + description: The callback `PUT /participants/{ID}` is used to inform the client of the result of the creation of the provided list of identities. + summary: Return bulk participant information + tags: + - participants + operationId: putParticipantsByID + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Participant information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ParticipantsIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /participants/{ID}/error: + put: + description: If there is an error during FSP information creation in the server, the error callback `PUT /participants/{ID}/error` is used. The `{ID}` in the URI should contain the requestId that was used for the creation of the participant information. + summary: Return bulk participant information error + tags: + - participants + operationId: ParticipantsByIDAndError + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Parties + /parties/{Type}/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /parties/{Type}/{ID}` (or `GET /parties/{Type}/{ID}/{SubId}`) is used to look up information regarding the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}` (for example, `GET /parties/MSISDN/123456789`, or `GET /parties/BUSINESS/shoecompany/employee1`). + summary: Look up party information + tags: + - parties + operationId: PartiesByTypeAndID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /parties/{Type}/{ID}` (or `PUT /parties/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the Party information lookup. + summary: Return party information + tags: + - parties + operationId: PartiesByTypeAndID2 + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Party information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PartiesTypeIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /parties/{Type}/{ID}/error: + put: + description: If the server is unable to find Party information of the provided identity, or another processing error occurred, the error callback `PUT /parties/{Type}/{ID}/error` (or `PUT /parties/{Type}/{ID}/{SubI}/error`) is used. + summary: Return party information error + tags: + - parties + operationId: PartiesErrorByTypeAndID + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /parties/{Type}/{ID}/{SubId}: + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + - $ref: "#/components/parameters/SubId" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /parties/{Type}/{ID}` (or `GET /parties/{Type}/{ID}/{SubId}`) is used to look up information regarding the requested Party, defined by `{Type}`, `{ID}` and optionally `{SubId}` (for example, `GET /parties/MSISDN/123456789`, or `GET /parties/BUSINESS/shoecompany/employee1`). + summary: Look up party information + tags: + - parties + operationId: PartiesSubIdByTypeAndID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /parties/{Type}/{ID}` (or `PUT /parties/{Type}/{ID}/{SubId}`) is used to inform the client of a successful result of the Party information lookup. + summary: Return party information + tags: + - parties + operationId: PartiesSubIdByTypeAndIDPut + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Party information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PartiesTypeIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /parties/{Type}/{ID}/{SubId}/error: + put: + description: If the server is unable to find Party information of the provided identity, or another processing error occurred, the error callback `PUT /parties/{Type}/{ID}/error` (or `PUT /parties/{Type}/{ID}/{SubId}/error`) is used. + summary: Return party information error + tags: + - parties + operationId: PartiesSubIdErrorByTypeAndID + parameters: + #Path + - $ref: "#/components/parameters/Type" + - $ref: "#/components/parameters/ID" + - $ref: "#/components/parameters/SubId" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Transaction requests + /transactionRequests: + post: + description: The HTTP request `POST /transactionRequests` is used to request the creation of a transaction request for the provided financial transaction in the server. + summary: Perform transaction request + tags: + - transactionRequests + operationId: TransactionRequests + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Transaction request to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TransactionRequestsPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /transactionRequests/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /transactionRequests/{ID}` is used to get information regarding a transaction request created or requested earlier. The `{ID}` in the URI should contain the `transactionRequestId` that was used for the creation of the transaction request. + summary: Retrieve transaction request information + tags: + - transactionRequests + operationId: TransactionRequestsByID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /transactionRequests/{ID}` is used to inform the client of a requested or created transaction request. The `{ID}` in the URI should contain the `transactionRequestId` that was used for the creation of the transaction request, or the `{ID}` that was used in the `GET /transactionRequests/{ID}`. + summary: Return transaction request information + tags: + - transactionRequests + operationId: TransactionRequestsByIDPut + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Transaction request information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TransactionRequestsIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /transactionRequests/{ID}/error: + put: + description: If the server is unable to find or create a transaction request, or another processing error occurs, the error callback `PUT /transactionRequests/{ID}/error` is used. The `{ID}` in the URI should contain the `transactionRequestId` that was used for the creation of the transaction request, or the `{ID}` that was used in the `GET /transactionRequests/{ID}`. + summary: Return transaction request information error + tags: + - transactionRequests + operationId: TransactionRequestsErrorByID + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Quotes + /quotes: + post: + description: The HTTP request `POST /quotes` is used to request the creation of a quote for the provided financial transaction in the server. + summary: Calculate quote + tags: + - quotes + operationId: Quotes + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the quote to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/QuotesPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /quotes/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /quotes/{ID}` is used to get information regarding a quote created or requested earlier. The `{ID}` in the URI should contain the `quoteId` that was used for the creation of the quote. + summary: Retrieve quote information + tags: + - quotes + operationId: QuotesByID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /quotes/{ID}` is used to inform the client of a requested or created quote. The `{ID}` in the URI should contain the `quoteId` that was used for the creation of the quote, or the `{ID}` that was used in the `GET /quotes/{ID}` request. + summary: Return quote information + tags: + - quotes + operationId: QuotesByID1 + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Quote information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/QuotesIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /quotes/{ID}/error: + put: + description: If the server is unable to find or create a quote, or some other processing error occurs, the error callback `PUT /quotes/{ID}/error` is used. The `{ID}` in the URI should contain the `quoteId` that was used for the creation of the quote, or the `{ID}` that was used in the `GET /quotes/{ID}` request. + summary: Return quote information error + tags: + - quotes + operationId: QuotesByIDAndError + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Authorizations + /authorizations/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: + The HTTP request `GET /authorizations/{ID}` is used to request the Payer to enter the applicable credentials in the Payee FSP system. The `{ID}` in the URI should contain the `transactionRequestID`, received from the `POST /transactionRequests` service earlier in the process. This request requires a query string to be included in the URI, with the following key-value pairs*:* + + + - `authenticationType={Type}`, where `{Type}` value is a valid authentication type from the enumeration `AuthenticationType`. + + + - `retriesLeft=={NrOfRetries}`, where `{NrOfRetries}` is the number of retries left before the financial transaction is rejected. `{NrOfRetries}` must be expressed in the form of the data type `Integer`. `retriesLeft=1` means that this is the last retry before the financial transaction is rejected. + + + - `amount={Amount}`, where `{Amount}` is the transaction amount that will be withdrawn from the Payer’s account. `{Amount}` must be expressed in the form of the data type `Amount`. + + + - `currency={Currency}`, where `{Currency}` is the transaction currency for the amount that will be withdrawn from the Payer’s account. The `{Currency}` value must be expressed in the form of the enumeration `CurrencyCode`. + + + The following is an example URI containing all the required key-value pairs in the query string*:* + + + `GET /authorization/3d492671-b7af-4f3f-88de-76169b1bdf88?authenticationType=OTP&retriesLeft=2&amount=102¤cy=USD` + summary: Perform authorization + tags: + - authorizations + operationId: AuthorizationsByIDGet + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /authorizations/{ID}` is used to inform the client of the result of a previously-requested authorization. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /authorizations/{ID}` request. + summary: Return authorization result + tags: + - authorizations + operationId: AuthorizationsByIDPut + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Authorization result returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/AuthorizationsIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /authorizations/{ID}/error: + put: + description: If the server is unable to find the transaction request, or another processing error occurs, the error callback `PUT /authorizations/{ID}/error` is used. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /authorizations/{ID}`. + summary: Return authorization error + tags: + - authorizations + operationId: AuthorizationsByIDAndError + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Transfers + /transfers: + post: + description: The HTTP request `POST /transfers` is used to request the creation of a transfer for the next ledger, and a financial transaction for the Payee FSP. + summary: Perform transfer + tags: + - transfers + operationId: transfers + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the transfer to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TransfersPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /transfers/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /transfers/{ID}` is used to get information regarding a transfer created or requested earlier. The `{ID}` in the URI should contain the `transferId` that was used for the creation of the transfer. + summary: Retrieve transfer information + tags: + - transfers + operationId: TransfersByIDGet + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + patch: + description: The HTTP request PATCH /transfers/ is used by a Switch to update the state of a previously reserved transfer, if the Payee FSP has requested a commit notification when the Switch has completed processing of the transfer. The in the URI should contain the transferId that was used for the creation of the transfer. Please note that this request does not generate a callback. + summary: Return transfer information + tags: + - transfers + operationId: TransfersByIDPatch + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Transfer notification upon completion. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TransfersIDPatchResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /transfers/{ID}` is used to inform the client of a requested or created transfer. The `{ID}` in the URI should contain the `transferId` that was used for the creation of the transfer, or the `{ID}` that was used in the `GET /transfers/{ID}` request. + summary: Return transfer information + tags: + - transfers + operationId: TransfersByIDPut + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Transfer information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TransfersIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /transfers/{ID}/error: + put: + description: If the server is unable to find or create a transfer, or another processing error occurs, the error callback `PUT /transfers/{ID}/error` is used. The `{ID}` in the URI should contain the `transferId` that was used for the creation of the transfer, or the `{ID}` that was used in the `GET /transfers/{ID}`. + summary: Return transfer information error + tags: + - transfers + operationId: TransfersByIDAndError + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Transactions + /transactions/{ID}: + parameters: + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /transactions/{ID}` is used to get transaction information regarding a financial transaction created earlier. The `{ID}` in the URI should contain the `transactionId` that was used for the creation of the quote, as the transaction is created as part of another process (the transfer process). + summary: Retrieve transaction information + tags: + - transactions + operationId: TransactionsByID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /transactions/{ID}` is used to inform the client of a requested transaction. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /transactions/{ID}` request. + summary: Return transaction information + tags: + - transactions + operationId: TransactionsByID1 + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Transaction information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TransactionsIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /transactions/{ID}/error: + put: + description: If the server is unable to find or create a transaction, or another processing error occurs, the error callback `PUT /transactions/{ID}/error` is used. The `{ID}` in the URI should contain the `{ID}` that was used in the `GET /transactions/{ID}` request. + summary: Return transaction information error + tags: + - transactions + operationId: TransactionsErrorByID + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Bulk Quotes + /bulkQuotes: + post: + description: The HTTP request `POST /bulkQuotes` is used to request the creation of a bulk quote for the provided financial transactions in the server. + summary: Calculate bulk quote + tags: + - bulkQuotes + operationId: BulkQuotes + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the bulk quote to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BulkQuotesPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /bulkQuotes/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /bulkQuotes/{ID}` is used to get information regarding a bulk quote created or requested earlier. The `{ID}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote. + summary: Retrieve bulk quote information + tags: + - bulkQuotes + operationId: BulkQuotesByID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /bulkQuotes/{ID}` is used to inform the client of a requested or created bulk quote. The `{ID}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote, or the `{ID}` that was used in the `GET /bulkQuotes/{ID}` request. + summary: Return bulk quote information + tags: + - bulkQuotes + operationId: BulkQuotesByID1 + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Bulk quote information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BulkQuotesIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /bulkQuotes/{ID}/error: + put: + description: If the server is unable to find or create a bulk quote, or another processing error occurs, the error callback `PUT /bulkQuotes/{ID}/error` is used. The `{ID}` in the URI should contain the `bulkQuoteId` that was used for the creation of the bulk quote, or the `{ID}` that was used in the `GET /bulkQuotes/{ID}` request. + summary: Return bulk quote information error + tags: + - bulkQuotes + operationId: BulkQuotesErrorByID + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + + #Bulk transfers + /bulkTransfers: + post: + description: The HTTP request `POST /bulkTransfers` is used to request the creation of a bulk transfer in the server. + summary: Perform bulk transfer + tags: + - bulkTransfers + operationId: BulkTransfers + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the bulk transfer to be created. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BulkTransfersPostRequest" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /bulkTransfers/{ID}: + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + get: + description: The HTTP request `GET /bulkTransfers/{ID}` is used to get information regarding a bulk transfer created or requested earlier. The `{ID}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer. + summary: Retrieve bulk transfer information + tags: + - bulkTransfers + operationId: BulkTransferByID + parameters: + #Headers + - $ref: "#/components/parameters/Accept" + responses: + 202: + $ref: "#/components/responses/202" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + put: + description: The callback `PUT /bulkTransfers/{ID}` is used to inform the client of a requested or created bulk transfer. The `{ID}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer (`POST /bulkTransfers`), or the `{ID}` that was used in the `GET /bulkTransfers/{ID}` request. + summary: Return bulk transfer information + tags: + - bulkTransfers + operationId: BulkTransfersByIDPut + parameters: + #Headers + - $ref: "#/components/parameters/Content-Length" + requestBody: + description: Bulk transfer information returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BulkTransfersIDPutResponse" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + /bulkTransfers/{ID}/error: + put: + description: If the server is unable to find or create a bulk transfer, or another processing error occurs, the error callback `PUT /bulkTransfers/{ID}/error` is used. The `{ID}` in the URI should contain the `bulkTransferId` that was used for the creation of the bulk transfer (`POST /bulkTransfers`), or the `{ID}` that was used in the `GET /bulkTransfers/{ID}` request. + summary: Return bulk transfer information error + tags: + - bulkTransfers + operationId: BulkTransfersErrorByID + parameters: + #Path + - $ref: "#/components/parameters/ID" + #Headers + - $ref: "#/components/parameters/Content-Length" + - $ref: "#/components/parameters/Content-Type" + - $ref: "#/components/parameters/Date" + - $ref: "#/components/parameters/X-Forwarded-For" + - $ref: "#/components/parameters/FSPIOP-Source" + - $ref: "#/components/parameters/FSPIOP-Destination" + - $ref: "#/components/parameters/FSPIOP-Encryption" + - $ref: "#/components/parameters/FSPIOP-Signature" + - $ref: "#/components/parameters/FSPIOP-URI" + - $ref: "#/components/parameters/FSPIOP-HTTP-Method" + requestBody: + description: Details of the error returned. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationObject" + responses: + 200: + $ref: "#/components/responses/200" + 400: + $ref: "#/components/responses/400" + 401: + $ref: "#/components/responses/401" + 403: + $ref: "#/components/responses/403" + 404: + $ref: "#/components/responses/404" + 405: + $ref: "#/components/responses/405" + 406: + $ref: "#/components/responses/406" + 501: + $ref: "#/components/responses/501" + 503: + $ref: "#/components/responses/503" + +components: + schemas: + #Element definitions + Amount: + title: Amount + type: string + pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$ + description: The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed. + AmountType: + title: AmountType + type: string + enum: + - SEND + - RECEIVE + description: Below are the allowed values for the enumeration AmountType. + + - SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. + + - RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees. + AuthenticationType: + title: AuthenticationType + type: string + enum: + - OTP + - QRCODE + description: + Below are the allowed values for the enumeration AuthenticationType. + + - OTP - One-time password generated by the Payer FSP. + + - QRCODE - QR code used as One Time Password. + AuthenticationValue: + title: AuthenticationValue + oneOf: + - $ref: "#/components/schemas/OtpValue" + - $ref: "#/components/schemas/QRCODE" + pattern: ^\d{3,10}$|^\S{1,64}$ + description: Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type. + AuthorizationResponse: + title: AuthorizationResponse + type: string + enum: + - ENTERED + - REJECTED + - RESEND + description: Below are the allowed values for the enumeration. + + - ENTERED - Consumer entered the authentication value. + + - REJECTED - Consumer rejected the transaction. + + - RESEND - Consumer requested to resend the authentication value. + BalanceOfPayments: + title: BalanceOfPayments + type: string + pattern: ^[1-9]\d{2}$ + description: (BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. + BulkTransferState: + title: BulkTransactionState + type: string + enum: + - RECEIVED + - PENDING + - ACCEPTED + - PROCESSING + - COMPLETED + - REJECTED + description: Below are the allowed values for the enumeration. + + - RECEIVED - Payee FSP has received the bulk transfer from the Payer FSP. + + - PENDING - Payee FSP has validated the bulk transfer. + + - ACCEPTED - Payee FSP has accepted to process the bulk transfer. + + - PROCESSING - Payee FSP has started to transfer fund to the Payees. + + - COMPLETED - Payee FSP has completed transfer of funds to the Payees. + + - REJECTED - Payee FSP has rejected to process the bulk transfer. + Code: + title: Code + type: string + pattern: ^[0-9a-zA-Z]{4,32}$ + description: Any code/token returned by the Payee FSP (TokenCode Type). + CorrelationId: + title: CorrelationId + type: string + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + description: Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘). + Currency: + title: Currency + description: The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies. + type: string + minLength: 3 + maxLength: 3 + enum: + - AED + - AFN + - ALL + - AMD + - ANG + - AOA + - ARS + - AUD + - AWG + - AZN + - BAM + - BBD + - BDT + - BGN + - BHD + - BIF + - BMD + - BND + - BOB + - BRL + - BSD + - BTN + - BWP + - BYN + - BZD + - CAD + - CDF + - CHF + - CLP + - CNY + - COP + - CRC + - CUC + - CUP + - CVE + - CZK + - DJF + - DKK + - DOP + - DZD + - EGP + - ERN + - ETB + - EUR + - FJD + - FKP + - GBP + - GEL + - GGP + - GHS + - GIP + - GMD + - GNF + - GTQ + - GYD + - HKD + - HNL + - HRK + - HTG + - HUF + - IDR + - ILS + - IMP + - INR + - IQD + - IRR + - ISK + - JEP + - JMD + - JOD + - JPY + - KES + - KGS + - KHR + - KMF + - KPW + - KRW + - KWD + - KYD + - KZT + - LAK + - LBP + - LKR + - LRD + - LSL + - LYD + - MAD + - MDL + - MGA + - MKD + - MMK + - MNT + - MOP + - MRO + - MUR + - MVR + - MWK + - MXN + - MYR + - MZN + - NAD + - NGN + - NIO + - NOK + - NPR + - NZD + - OMR + - PAB + - PEN + - PGK + - PHP + - PKR + - PLN + - PYG + - QAR + - RON + - RSD + - RUB + - RWF + - SAR + - SBD + - SCR + - SDG + - SEK + - SGD + - SHP + - SLL + - SOS + - SPL + - SRD + - STD + - SVC + - SYP + - SZL + - THB + - TJS + - TMT + - TND + - TOP + - TRY + - TTD + - TVD + - TWD + - TZS + - UAH + - UGX + - USD + - UYU + - UZS + - VEF + - VND + - VUV + - WST + - XAF + - XCD + - XDR + - XOF + - XPF + - XTS + - XXX + - YER + - ZAR + - ZMW + - ZWD + DateOfBirth: + title: DateofBirth (type Date) + type: string + pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ + description: Date of Birth of the Party. + DateTime: + title: DateTime + type: string + pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$ + description: + The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. + The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z indicates Zulu time zone, same as UTC). + ErrorCode: + title: ErrorCode + type: string + pattern: ^[1-9]\d{3}$ + description: The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error. + ErrorDescription: + title: ErrorDescription + type: string + minLength: 1 + maxLength: 128 + description: Error description string. + ExtensionKey: + title: ExtensionKey + type: string + minLength: 1 + maxLength: 32 + description: Extension key. + ExtensionValue: + title: ExtensionValue + type: string + minLength: 1 + maxLength: 128 + description: Extension value. + FirstName: + title: FirstName + type: string + minLength: 1 + maxLength: 128 + pattern: '^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$' + description: First name of the Party (Name Type). + FspId: + title: FspId + type: string + minLength: 1 + maxLength: 32 + description: FSP identifier. + IlpCondition: + title: IlpCondition + type: string + pattern: ^[A-Za-z0-9-_]{43}$ + maxLength: 48 + description: Condition that must be attached to the transfer by the Payer. + IlpFulfilment: + title: IlpFulfilment + type: string + pattern: ^[A-Za-z0-9-_]{43}$ + maxLength: 48 + description: Fulfilment that must be attached to the transfer by the Payee. + IlpPacket: + title: IlpPacket + type: string + pattern: ^[A-Za-z0-9-_]+[=]{0,2}$ + minLength: 1 + maxLength: 32768 + description: Information for recipient (transport layer information). + LastName: + title: LastName + type: string + minLength: 1 + maxLength: 128 + pattern: '^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$' + description: Last name of the Party (Name Type). + Latitude: + title: Latitude + type: string + pattern: ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$ + description: The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. + Longitude: + title: Longitude + type: string + pattern: ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$ + description: The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. + MerchantClassificationCode: + title: MerchantClassificationCode + type: string + pattern: ^[\d]{1,4}$ + description: A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc. + MiddleName: + title: MiddleName + type: string + minLength: 1 + maxLength: 128 + pattern: '^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$' + description: Middle name of the Party (Name Type). + Name: + title: Name + type: string + pattern: '^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$' + description: + The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name. + + + Regular Expression - The regular expression for restricting the Name type is '^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$'. The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ). + + + **Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters. + Note: + title: Note + type: string + minLength: 1 + maxLength: 128 + description: Memo assigned to transaction. + OtpValue: + title: OtpValue + type: string + pattern: ^\d{3,10}$ + description: The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more leading zeros are allowed. + PartyIdentifier: + title: PartyIdentifier + type: string + minLength: 1 + maxLength: 128 + description: Identifier of the Party. + PartyIdType: + title: PartyIdType + type: string + enum: + - MSISDN + - EMAIL + - PERSONAL_ID + - BUSINESS + - DEVICE + - ACCOUNT_ID + - IBAN + - ALIAS + description: Below are the allowed values for the enumeration. + + - MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. + + - EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696). + + - PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. + + - BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. + + - DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. + + - ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. + + - IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. + + - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier. + PartyName: + title: PartyName + allOf: + - $ref: "#/components/schemas/Name" + - description: Name of the Party. Could be a real name or a nickname. + PartySubIdOrType: + title: PartySubIdOrType + description: Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType. + oneOf: + - $ref: "#/components/schemas/PersonalIdentifierType" + - $ref: "#/components/schemas/PartyIdentifier" + PersonalIdentifierType: + title: PersonalIdentifierType + type: string + enum: + - PASSPORT + - NATIONAL_REGISTRATION + - DRIVING_LICENSE + - ALIEN_REGISTRATION + - NATIONAL_ID_CARD + - EMPLOYER_ID + - TAX_ID_NUMBER + - SENIOR_CITIZENS_CARD + - MARRIAGE_CERTIFICATE + - HEALTH_CARD + - VOTERS_ID + - UNITED_NATIONS + - OTHER_ID + description: Below are the allowed values for the enumeration. + + - PASSPORT - A passport number is used as reference to a Party. + + - NATIONAL_REGISTRATION - A national registration number is used as reference to a Party. + + - DRIVING_LICENSE - A driving license is used as reference to a Party. + + - ALIEN_REGISTRATION - An alien registration number is used as reference to a Party. + + - NATIONAL_ID_CARD - A national ID card number is used as reference to a Party. + + - EMPLOYER_ID - A tax identification number is used as reference to a Party. + + - TAX_ID_NUMBER - A tax identification number is used as reference to a Party. + + - SENIOR_CITIZENS_CARD - A senior citizens card number is used as reference to a Party. + + - MARRIAGE_CERTIFICATE - A marriage certificate number is used as reference to a Party. + + - HEALTH_CARD - A health card number is used as reference to a Party. + + - VOTERS_ID - A voter’s identification number is used as reference to a Party. + + - UNITED_NATIONS - An UN (United Nations) number is used as reference to a Party. + + - OTHER_ID - Any other type of identification type number is used as reference to a Party. + QRCODE: + title: QRCODE + type: string + minLength: 1 + maxLength: 64 + description: QR code used as a One Time Password. + RefundReason: + title: RefundReason + type: string + minLength: 1 + maxLength: 128 + description: Reason for the refund. + TransactionInitiator: + title: TransactionInitiator + type: string + enum: + - PAYER + - PAYEE + description: Below are the allowed values for the enumeration. + + - PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way. + + - PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device. + TransactionInitiatorType: + title: TransactionInitiatorType + type: string + enum: + - CONSUMER + - AGENT + - BUSINESS + - DEVICE + description: Below are the allowed values for the enumeration. + + - CONSUMER - Consumer is the initiator of the transaction. + + - AGENT - Agent is the initiator of the transaction. + + - BUSINESS - Business is the initiator of the transaction. + + - DEVICE - Device is the initiator of the transaction. + TransactionRequestState: + title: TransactionRequestState + type: string + enum: + - RECEIVED + - PENDING + - ACCEPTED + - REJECTED + description: Below are the allowed values for the enumeration. + + - RECEIVED - Payer FSP has received the transaction from the Payee FSP. + + - PENDING - Payer FSP has sent the transaction request to the Payer. + + - ACCEPTED - Payer has approved the transaction. + + - REJECTED - Payer has rejected the transaction. + TransactionScenario: + title: TransactionScenario + type: string + enum: + - DEPOSIT + - WITHDRAWAL + - TRANSFER + - PAYMENT + - REFUND + description: Below are the allowed values for the enumeration. + + - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a normal scenario, electronic funds are transferred from a Business account to a Consumer account, and physical cash is given from the Consumer to the Business User. + + - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. In a normal scenario, electronic funds are transferred from a Consumer’s account to a Business account, and physical cash is given from the Business User to the Consumer. + + - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to Consumer) transaction. + + - PAYMENT - Usually used for performing a transaction from a Consumer to a Merchant or Organization, but could also be for a B2B (Business to Business) payment. The transaction could be online for a purchase in an Internet store, in a physical store where both the Consumer and Business User are present, a bill payment, a donation, and so on. + + - REFUND - Used for performing a refund of transaction. + TransactionState: + title: TransactionState + type: string + enum: + - RECEIVED + - PENDING + - COMPLETED + - REJECTED + description: Below are the allowed values for the enumeration. + + - RECEIVED - Payee FSP has received the transaction from the Payer FSP. + + - PENDING - Payee FSP has validated the transaction. + + - COMPLETED - Payee FSP has successfully performed the transaction. + + - REJECTED - Payee FSP has failed to perform the transaction. + TransactionSubScenario: + title: TransactionSubScenario + type: string + pattern: ^[A-Z_]{1,32}$ + description: Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type). + TransferState: + title: TransferState + type: string + enum: + - RECEIVED + - RESERVED + - COMMITTED + - ABORTED + description: Below are the allowed values for the enumeration. + + - RECEIVED - Next ledger has received the transfer. + + - RESERVED - Next ledger has reserved the transfer. + + - COMMITTED - Next ledger has successfully performed the transfer. + + - ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer. + + #Complex Types + AuthenticationInfo: + title: AuthenticationInfo + type: object + description: Data model for the complex type AuthenticationInfo. + properties: + authentication: + allOf: + - $ref: "#/components/schemas/AuthenticationType" + - description: Type of authentication. + - example: OTP + authenticationValue: + allOf: + - $ref: "#/components/schemas/AuthenticationValue" + - description: Authentication value. + - example: 1234 + required: + - authentication + - authenticationValue + AuthorizationsIDPutResponse: + title: AuthorizationsIDPutResponse + type: object + description: The object sent in the PUT /authorizations/{ID} callback. + properties: + authenticationInfo: + allOf: + - $ref: "#/components/schemas/AuthenticationInfo" + - description: OTP or QR Code if entered, otherwise empty. + - example: OTP + responseType: + allOf: + - $ref: "#/components/schemas/AuthorizationResponse" + - description: Enum containing response information; if the customer entered the authentication value, rejected the transaction, or requested a resend of the authentication value. + - example: ENTERED + required: + - responseType + BulkQuotesIDPutResponse: + title: BulkQuotesIDPutResponse + type: object + description: The object sent in the PUT /bulkQuotes/{ID} callback. + properties: + individualQuoteResults: + type: array + maxItems: 1000 + items: + $ref: "#/components/schemas/IndividualQuoteResult" + description: Fees for each individual transaction, if any of them are charged per transaction. + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Date and time until when the quotation is valid and can be honored when used in the subsequent transaction request. + - example: "2016-05-24T08:38:08.699-04:00" + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - expiration + BulkQuotesPostRequest: + title: BulkQuotesPostRequest + type: object + description: The object sent in the POST /bulkQuotes request. + properties: + bulkQuoteId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Common ID between the FSPs for the bulk quote object, decided by the Payer FSP. The ID should be reused for resends of the same bulk quote. A new ID should be generated for each new bulk quote. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + payer: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information about the Payer in the proposed financial transaction. + geoCode: + allOf: + - $ref: "#/components/schemas/GeoCode" + - description: Longitude and Latitude of the initiating Party. Can be used to detect fraud. + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Expiration is optional to let the Payee FSP know when a quote no longer needs to be returned. + - example: "2016-05-24T08:38:08.699-04:00" + individualQuotes: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: "#/components/schemas/IndividualQuote" + description: List of quotes elements. + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - bulkQuoteId + - payer + - individualQuotes + BulkTransfersIDPutResponse: + title: BulkTransfersIDPutResponse + type: object + description: The object sent in the PUT /bulkTransfers/{ID} callback. + properties: + completedTimestamp: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Time and date when the bulk transaction was completed. + - example: "2016-05-24T08:38:08.699-04:00" + individualTransferResults: + type: array + maxItems: 1000 + items: + $ref: "#/components/schemas/IndividualTransferResult" + description: List of IndividualTransferResult elements. + bulkTransferState: + allOf: + - $ref: "#/components/schemas/BulkTransferState" + - description: The state of the bulk transfer. + - example: RECEIVED + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - bulkTransferState + BulkTransfersPostRequest: + title: BulkTransfersPostRequest + type: object + description: The object sent in the POST /bulkTransfers request. + properties: + bulkTransferId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Common ID between the FSPs and the optional Switch for the bulk transfer object, decided by the Payer FSP. The ID should be reused for resends of the same bulk transfer. A new ID should be generated for each new bulk transfer. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + bulkQuoteId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: ID of the related bulk quote. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + payerFsp: + allOf: + - $ref: "#/components/schemas/FspId" + - description: Payer FSP identifier. + - example: 5678 + payeeFsp: + allOf: + - $ref: "#/components/schemas/FspId" + - description: Payee FSP identifier. + - example: 1234 + individualTransfers: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: "#/components/schemas/IndividualTransfer" + description: List of IndividualTransfer elements. + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Expiration time of the transfers. + - example: "2016-05-24T08:38:08.699-04:00" + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - bulkTransferId + - bulkQuoteId + - payerFsp + - payeeFsp + - individualTransfers + - expiration + ErrorInformation: + title: ErrorInformation + type: object + description: Data model for the complex type ErrorInformation. + properties: + errorCode: + allOf: + - $ref: "#/components/schemas/ErrorCode" + - description: Specific error number. + - example: 5100 + errorDescription: + allOf: + - $ref: "#/components/schemas/ErrorDescription" + - description: Error description string. + - example: This is an error description. + extensionList: + $ref: "#/components/schemas/ExtensionList" + required: + - errorCode + - errorDescription + ErrorInformationObject: + title: ErrorInformationObject + type: object + description: Data model for the complex type object that contains ErrorInformation. + properties: + errorInformation: + $ref: "#/components/schemas/ErrorInformation" + required: + - errorInformation + ErrorInformationResponse: + title: ErrorInformationResponse + type: object + description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses. + properties: + errorInformation: + $ref: "#/components/schemas/ErrorInformation" + Extension: + title: Extension + type: object + description: Data model for the complex type Extension. + properties: + key: + allOf: + - $ref: "#/components/schemas/ExtensionKey" + - description: Extension key. + value: + allOf: + - $ref: "#/components/schemas/ExtensionValue" + - description: Extension value. + required: + - key + - value + ExtensionList: + title: ExtensionList + type: object + description: Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment. + properties: + extension: + type: array + items: + $ref: "#/components/schemas/Extension" + minItems: 1 + maxItems: 16 + description: Number of Extension elements. + required: + - extension + GeoCode: + title: GeoCode + type: object + description: Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated. + properties: + latitude: + allOf: + - $ref: "#/components/schemas/Latitude" + - description: Latitude of the Party. + - example: "+45.4215" + longitude: + allOf: + - $ref: "#/components/schemas/Longitude" + - description: Longitude of the Party. + - example: "+75.6972" + required: + - latitude + - longitude + IndividualQuote: + title: IndividualQuote + type: object + description: Data model for the complex type IndividualQuote. + properties: + quoteId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies the quote message. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + transactionId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies the transaction message. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + payee: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information about the Payee in the proposed financial transaction. + amountType: + allOf: + - $ref: "#/components/schemas/AmountType" + - description: SEND for sendAmount, RECEIVE for receiveAmount. + - example: RECEIVE + amount: + allOf: + - $ref: "#/components/schemas/Money" + - description: Depending on amountType + If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. + If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive of any fees. The amount is not updated by any of the participating entities. + fees: + allOf: + - $ref: "#/components/schemas/Money" + - description: The fees in the transaction. + The fees element should be empty if fees should be non-disclosed. + The fees element should be non-empty if fees should be disclosed. + transactionType: + allOf: + - $ref: "#/components/schemas/TransactionType" + - description: Type of transaction that the quote is requested for. + note: + allOf: + - $ref: "#/components/schemas/Note" + - description: Memo that will be attached to the transaction. + - example: Note sent to Payee. + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - quoteId + - transactionId + - payee + - amountType + - amount + - transactionType + IndividualQuoteResult: + title: IndividualQuoteResult + type: object + description: Data model for the complex type IndividualQuoteResult. + properties: + quoteId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies the quote message. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + payee: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information about the Payee in the proposed financial transaction. + transferAmount: + allOf: + - $ref: "#/components/schemas/Money" + - description: The amount of money that the Payee FSP should receive. + payeeReceiveAmount: + allOf: + - $ref: "#/components/schemas/Money" + - description: The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees. + payeeFspFee: + allOf: + - $ref: "#/components/schemas/Money" + - description: Payee FSP’s part of the transaction fee. + payeeFspCommission: + allOf: + - $ref: "#/components/schemas/Money" + - description: Transaction commission from the Payee FSP. + ilpPacket: + allOf: + - $ref: "#/components/schemas/IlpPacket" + - description: The ILP Packet that must be attached to the transfer by the Payer. + - example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA + condition: + allOf: + - $ref: "#/components/schemas/IlpCondition" + - description: The condition that must be attached to the transfer by the Payer. + - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA + errorInformation: + allOf: + - $ref: "#/components/schemas/ErrorInformation" + - description: Error code, category description. **Note:** receiveAmount, payeeFspFee, payeeFspCommission, expiration, ilpPacket, condition should not be set if errorInformation is set. + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - quoteId + IndividualTransfer: + title: IndividualTransfer + type: object + description: Data model for the complex type IndividualTransfer. + properties: + transferId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies messages related to the same /transfers sequence. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + transferAmount: + allOf: + - $ref: "#/components/schemas/Money" + - description: Transaction amount to be sent. + ilpPacket: + allOf: + - $ref: "#/components/schemas/IlpPacket" + - description: ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data. + - example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA + condition: + allOf: + - $ref: "#/components/schemas/IlpCondition" + - description: Condition that must be fulfilled to commit the transfer. + - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transferId + - transferAmount + - ilpPacket + - condition + IndividualTransferResult: + title: IndividualTransferResult + type: object + description: Data model for the complex type IndividualTransferResult. + properties: + transferId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies messages related to the same /transfers sequence. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + fulfilment: + allOf: + - $ref: "#/components/schemas/IlpFulfilment" + - description: Fulfilment of the condition specified with the transaction. **Note:** Either fulfilment or errorInformation should be set, not both. + - example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8 + errorInformation: + allOf: + - $ref: "#/components/schemas/ErrorInformation" + - description: If transfer is REJECTED, error information may be provided. **Note:** Either fulfilment or errorInformation should be set, not both. + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transferId + Money: + title: Money + type: object + description: Data model for the complex type Money. + properties: + currency: + allOf: + - $ref: "#/components/schemas/Currency" + - description: Currency of the amount. + - example: USD + amount: + allOf: + - $ref: "#/components/schemas/Amount" + - description: Amount of Money. + - example: "123.45" + required: + - currency + - amount + ParticipantsIDPutResponse: + title: ParticipantsIDPutResponse + type: object + description: The object sent in the PUT /participants/{ID} callback. + properties: + partyList: + type: array + items: + $ref: "#/components/schemas/PartyResult" + minItems: 1 + maxItems: 10000 + description: List of PartyResult elements that were either created or failed to be created. + currency: + allOf: + - $ref: "#/components/schemas/Currency" + - description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo. + - example: USD + required: + - partyList + ParticipantsPostRequest: + title: ParticipantsPostRequest + type: object + description: The object sent in the POST /participants request. + properties: + requestId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: The ID of the request, decided by the client. Used for identification of the callback from the server. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + partyList: + type: array + items: + $ref: "#/components/schemas/PartyIdInfo" + minItems: 1 + maxItems: 10000 + description: List of PartyIdInfo elements that the client would like to update or create FSP information about. + currency: + allOf: + - $ref: "#/components/schemas/Currency" + - description: Indicate that the provided Currency is supported by each PartyIdInfo in the list. + - example: USD + required: + - requestId + - partyList + ParticipantsTypeIDPutResponse: + title: ParticipantsTypeIDPutResponse + type: object + description: The object sent in the PUT /participants/{Type}/{ID}/{SubId} and /participants/{Type}/{ID} callbacks. + properties: + fspId: + allOf: + - $ref: "#/components/schemas/FspId" + - description: FSP Identifier that the Party belongs to. + - example: 1234 + ParticipantsTypeIDSubIDPostRequest: + title: ParticipantsTypeIDSubIDPostRequest + type: object + description: The object sent in the POST /participants/{Type}/{ID}/{SubId} and /participants/{Type}/{ID} requests. An additional optional ExtensionList element has been added as part of v1.1 changes. + properties: + fspId: + allOf: + - $ref: "#/components/schemas/FspId" + - description: FSP Identifier that the Party belongs to. + - example: 1234 + currency: + allOf: + - $ref: "#/components/schemas/Currency" + - description: Indicate that the provided Currency is supported by the Party. + - example: USD + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - fspId + PartiesTypeIDPutResponse: + title: PartiesTypeIDPutResponse + type: object + description: The object sent in the PUT /parties/{Type}/{ID} callback. + properties: + party: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information regarding the requested Party. + required: + - party + Party: + title: Party + type: object + description: Data model for the complex type Party. + properties: + partyIdInfo: + allOf: + - $ref: "#/components/schemas/PartyIdInfo" + - description: Party Id type, id, sub ID or type, and FSP Id. + merchantClassificationCode: + allOf: + - $ref: "#/components/schemas/MerchantClassificationCode" + - description: Used in the context of Payee Information, where the Payee happens to be a merchant accepting merchant payments. + - example: 4321 + name: + allOf: + - $ref: "#/components/schemas/PartyName" + - description: Display name of the Party, could be a real name or a nick name. + - example: Henrik Karlsson + personalInfo: + allOf: + - $ref: "#/components/schemas/PartyPersonalInfo" + - description: Personal information used to verify identity of Party such as first, middle, last name and date of birth. + required: + - partyIdInfo + PartyComplexName: + title: PartyComplexName + type: object + description: Data model for the complex type PartyComplexName. + properties: + firstName: + allOf: + - $ref: "#/components/schemas/FirstName" + - description: Party’s first name. + - example: Henrik + middleName: + allOf: + - $ref: "#/components/schemas/MiddleName" + - description: Party’s middle name. + - example: Johannes + lastName: + allOf: + - $ref: "#/components/schemas/LastName" + - description: Party’s last name. + - example: Karlsson + PartyIdInfo: + title: PartyIdInfo + type: object + description: Data model for the complex type PartyIdInfo. An ExtensionList element has been added to this reqeust in version v1.1 + properties: + partyIdType: + allOf: + - $ref: "#/components/schemas/PartyIdType" + - description: Type of the identifier. + - example: PERSONAL_ID + partyIdentifier: + allOf: + - $ref: "#/components/schemas/PartyIdentifier" + - description: An identifier for the Party. + - example: 16135551212 + partySubIdOrType: + allOf: + - $ref: "#/components/schemas/PartySubIdOrType" + - description: A sub-identifier or sub-type for the Party. + - example: DRIVING_LICENSE + fspId: + allOf: + - $ref: "#/components/schemas/FspId" + - description: FSP ID (if known). + - example: 1234 + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - partyIdType + - partyIdentifier + PartyPersonalInfo: + title: PartyPersonalInfo + type: object + description: Data model for the complex type PartyPersonalInfo. + properties: + complexName: + allOf: + - $ref: "#/components/schemas/PartyComplexName" + - description: First, middle and last name for the Party. + dateOfBirth: + allOf: + - $ref: "#/components/schemas/DateOfBirth" + - description: Date of birth for the Party. + - example: "1966-06-16" + PartyResult: + title: PartyResult + type: object + description: Data model for the complex type PartyResult. + properties: + partyId: + allOf: + - $ref: "#/components/schemas/PartyIdInfo" + - description: Party Id type, id, sub ID or type, and FSP Id. + errorInformation: + allOf: + - $ref: "#/components/schemas/ErrorInformation" + - description: If the Party failed to be added, error information should be provided. Otherwise, this parameter should be empty to indicate success. + required: + - partyId + QuotesIDPutResponse: + title: QuotesIDPutResponse + type: object + description: The object sent in the PUT /quotes/{ID} callback. + properties: + transferAmount: + allOf: + - $ref: "#/components/schemas/Money" + - description: The amount of money that the Payee FSP should receive. + payeeReceiveAmount: + allOf: + - $ref: "#/components/schemas/Money" + - description: The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees. + payeeFspFee: + allOf: + - $ref: "#/components/schemas/Money" + - description: Payee FSP’s part of the transaction fee. + payeeFspCommission: + allOf: + - $ref: "#/components/schemas/Money" + - description: Transaction commission from the Payee FSP. + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Date and time until when the quotation is valid and can be honored when used in the subsequent transaction. + - example: "2016-05-24T08:38:08.699-04:00" + geoCode: + allOf: + - $ref: "#/components/schemas/GeoCode" + - description: Longitude and Latitude of the Payee. Can be used to detect fraud. + ilpPacket: + allOf: + - $ref: "#/components/schemas/IlpPacket" + - description: The ILP Packet that must be attached to the transfer by the Payer. + - example: “AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA” + condition: + allOf: + - $ref: "#/components/schemas/IlpCondition" + - description: The condition that must be attached to the transfer by the Payer. + - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transferAmount + - expiration + - ilpPacket + - condition + QuotesPostRequest: + title: QuotesPostRequest + type: object + description: The object sent in the POST /quotes request. + properties: + quoteId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Common ID between the FSPs for the quote object, decided by the Payer FSP. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + transactionId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Common ID (decided by the Payer FSP) between the FSPs for the future transaction object. The actual transaction will be created as part of a successful transfer process. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction. + - example: a8323bc6-c228-4df2-ae82-e5a997baf899 + transactionRequestId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies an optional previously-sent transaction request. + - example: a8323bc6-c228-4df2-ae82-e5a997baf890 + payee: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information about the Payee in the proposed financial transaction. + payer: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information about the Payer in the proposed financial transaction. + amountType: + allOf: + - $ref: "#/components/schemas/AmountType" + - description: SEND for send amount, RECEIVE for receive amount. + - example: SEND + amount: + allOf: + - $ref: "#/components/schemas/Money" + - description: Depending on amountType - + If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. + If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities. + fees: + allOf: + - $ref: "#/components/schemas/Money" + - description: The fees in the transaction. + The fees element should be empty if fees should be non-disclosed. + The fees element should be non-empty if fees should be disclosed. + transactionType: + allOf: + - $ref: "#/components/schemas/TransactionType" + - description: Type of transaction for which the quote is requested. + geoCode: + allOf: + - $ref: "#/components/schemas/GeoCode" + - description: Longitude and Latitude of the initiating Party. Can be used to detect fraud. + note: + allOf: + - $ref: "#/components/schemas/Note" + - description: A memo that will be attached to the transaction. + - example: Free-text memo. + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Expiration is optional. It can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, and Merchant to know that their request has a time limit. + - example: "2016-05-24T08:38:08.699-04:00" + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - quoteId + - transactionId + - payee + - payer + - amountType + - amount + - transactionType + Refund: + title: Refund + type: object + description: Data model for the complex type Refund. + properties: + originalTransactionId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Reference to the original transaction ID that is requested to be refunded. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + refundReason: + allOf: + - $ref: "#/components/schemas/RefundReason" + - description: Free text indicating the reason for the refund. + - example: Free text indicating reason for the refund. + required: + - originalTransactionId + TransactionRequestsIDPutResponse: + title: TransactionRequestsIDPutResponse + type: object + description: The object sent in the PUT /transactionRequests/{ID} callback. + properties: + transactionId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Identifies a related transaction (if a transaction has been created). + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + transactionRequestState: + allOf: + - $ref: "#/components/schemas/TransactionRequestState" + - description: State of the transaction request. + - example: RECEIVED + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transactionRequestState + TransactionRequestsPostRequest: + title: TransactionRequestsPostRequest + type: object + description: The object sent in the POST /transactionRequests request. + properties: + transactionRequestId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: Common ID between the FSPs for the transaction request object, decided by the Payee FSP. The ID should be reused for resends of the same transaction request. A new ID should be generated for each new transaction request. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + payee: + allOf: + - $ref: "#/components/schemas/Party" + - description: Information about the Payee in the proposed financial transaction. + payer: + allOf: + - $ref: "#/components/schemas/PartyIdInfo" + - description: Information about the Payer type, id, sub-type/id, FSP Id in the proposed financial transaction. + amount: + allOf: + - $ref: "#/components/schemas/Money" + - description: Requested amount to be transferred from the Payer to Payee. + transactionType: + allOf: + - $ref: "#/components/schemas/TransactionType" + - description: Type of transaction. + note: + allOf: + - $ref: "#/components/schemas/Note" + - description: Reason for the transaction request, intended to the Payer. + - example: Free-text memo. + geoCode: + allOf: + - $ref: "#/components/schemas/GeoCode" + - description: Longitude and Latitude of the initiating Party. Can be used to detect fraud. + authenticationType: + allOf: + - $ref: "#/components/schemas/AuthenticationType" + - description: OTP or QR Code, otherwise empty. + - example: OTP + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, Merchant to know that their request has a time limit. + - example: "2016-05-24T08:38:08.699-04:00" + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transactionRequestId + - payee + - payer + - amount + - transactionType + TransactionsIDPutResponse: + title: TransactionsIDPutResponse + type: object + description: The object sent in the PUT /transactions/{ID} callback. + properties: + completedTimestamp: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Time and date when the transaction was completed. + - example: "2016-05-24T08:38:08.699-04:00" + transactionState: + allOf: + - $ref: "#/components/schemas/TransactionState" + - description: State of the transaction. + - example: RECEIVED + code: + allOf: + - $ref: "#/components/schemas/Code" + - description: Optional redemption information provided to Payer after transaction has been completed. + - example: Test-Code + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transactionState + TransactionType: + title: TransactionType + type: object + description: Data model for the complex type TransactionType. + properties: + scenario: + allOf: + - $ref: "#/components/schemas/TransactionScenario" + - description: Deposit, withdrawal, refund, … + - example: DEPOSIT + subScenario: + allOf: + - $ref: "#/components/schemas/TransactionSubScenario" + - description: Possible sub-scenario, defined locally within the scheme. + - example: Locally defined sub-scenario. + initiator: + allOf: + - $ref: "#/components/schemas/TransactionInitiator" + - description: Who is initiating the transaction - Payer or Payee. + - example: PAYEE + initiatorType: + allOf: + - $ref: "#/components/schemas/TransactionInitiatorType" + - description: Consumer, agent, business, … + - example: CONSUMER + refundInfo: + allOf: + - $ref: "#/components/schemas/Refund" + - description: Extra information specific to a refund scenario. Should only be populated if scenario is REFUND. + balanceOfPayments: + allOf: + - $ref: "#/components/schemas/BalanceOfPayments" + - description: Balance of Payments code. + - example: 123 + required: + - scenario + - initiator + - initiatorType + TransfersIDPatchResponse: + title: TransfersIDPatchResponse + type: object + description: PATCH /transfers/{ID} object + properties: + completedTimestamp: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Time and date when the transaction was completed. + - example: "2020-05-19T08:38:08.699-04:00" + transferState: + allOf: + - $ref: "#/components/schemas/TransferState" + - description: State of the transfer. + - example: RESERVED + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - completedTimestamp + - transferState + TransfersIDPutResponse: + title: TransfersIDPutResponse + type: object + description: The object sent in the PUT /transfers/{ID} callback. + properties: + fulfilment: + allOf: + - $ref: "#/components/schemas/IlpFulfilment" + - description: Fulfilment of the condition specified with the transaction. Mandatory if transfer has completed successfully. + - example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8 + completedTimestamp: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Time and date when the transaction was completed. + - example: "2016-05-24T08:38:08.699-04:00" + transferState: + allOf: + - $ref: "#/components/schemas/TransferState" + - description: State of the transfer. + - example: COMMITTED + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transferState + TransfersPostRequest: + title: TransfersPostRequest + type: object + description: The object sent in the POST /transfers request. + properties: + transferId: + allOf: + - $ref: "#/components/schemas/CorrelationId" + - description: The common ID between the FSPs and the optional Switch for the transfer object, decided by the Payer FSP. The ID should be reused for resends of the same transfer. A new ID should be generated for each new transfer. + - example: b51ec534-ee48-4575-b6a9-ead2955b8069 + payeeFsp: + allOf: + - $ref: "#/components/schemas/FspId" + - description: Payee FSP in the proposed financial transaction. + - example: 1234 + payerFsp: + allOf: + - $ref: "#/components/schemas/FspId" + - description: Payer FSP in the proposed financial transaction. + - example: 5678 + amount: + allOf: + - $ref: "#/components/schemas/Money" + - description: The transfer amount to be sent. + ilpPacket: + allOf: + - $ref: "#/components/schemas/IlpPacket" + - description: The ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data. + - example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA + condition: + allOf: + - $ref: "#/components/schemas/IlpCondition" + - description: The condition that must be fulfilled to commit the transfer. + - example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA + expiration: + allOf: + - $ref: "#/components/schemas/DateTime" + - description: Expiration can be set to get a quick failure expiration of the transfer. The transfer should be rolled back if no fulfilment is delivered before this time. + - example: "2016-05-24T08:38:08.699-04:00" + extensionList: + allOf: + - $ref: "#/components/schemas/ExtensionList" + - description: Optional extension, specific to deployment. + required: + - transferId + - payeeFsp + - payerFsp + - amount + - ilpPacket + - condition + - expiration + + responses: + "200": + description: OK + "202": + description: Accepted + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "403": + description: Forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "405": + description: Method Not Allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "406": + description: Not Acceptable + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "501": + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + "503": + description: Service Unavailable + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInformationResponse" + headers: + Content-Length: + $ref: "#/components/parameters/Content-Length" + Content-Type: + $ref: "#/components/parameters/Content-Type" + + parameters: + #Header parameters + Accept: + name: Accept + in: header + required: true + schema: + type: string + description: The `Accept` header field indicates the version of the API the client would like the server to use. + Content-Length: + name: Content-Length + in: header + required: false + schema: + type: integer + description: + The `Content-Length` header field indicates the anticipated size of the payload body. Only sent if there is a body. + + + **Note:** The API supports a maximum size of 5242880 bytes (5 Megabytes). + Content-Type: + name: Content-Type + in: header + schema: + type: string + required: true + description: The `Content-Type` header indicates the specific version of the API used to send the payload body. + Date: + name: Date + in: header + schema: + type: string + required: true + description: The `Date` header field indicates the date when the request was sent. + X-Forwarded-For: + name: X-Forwarded-For + in: header + schema: + type: string + required: false + description: + The `X-Forwarded-For` header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple `X-Forwarded-For` values should be expected and supported by implementers of the API. + + + **Note:** An alternative to `X-Forwarded-For` is defined in [RFC 7239](https://tools.ietf.org/html/rfc7239). However, to this point RFC 7239 is less-used and supported than `X-Forwarded-For`. + FSPIOP-Source: + name: FSPIOP-Source + in: header + schema: + type: string + required: true + description: The `FSPIOP-Source` header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field `FSPIOP-Signature`). + FSPIOP-Destination: + name: FSPIOP-Destination + in: header + schema: + type: string + required: false + description: The `FSPIOP-Destination` header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field must be set by the original sender of the request if the destination is known (valid for all services except GET /parties) so that any entities between the client and the server do not need to parse the payload for routing purposes. If the destination is not known (valid for service GET /parties), the field should be left empty. + FSPIOP-Encryption: + name: FSPIOP-Encryption + in: header + schema: + type: string + required: false + description: The `FSPIOP-Encryption` header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. + FSPIOP-Signature: + name: FSPIOP-Signature + in: header + schema: + type: string + required: false + description: The `FSPIOP-Signature` header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. + FSPIOP-URI: + name: FSPIOP-URI + in: header + schema: + type: string + required: false + description: The `FSPIOP-URI` header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information, see [the API Signature document](https://github.com/mojaloop/docs/tree/master/Specification%20Document%20Set). + FSPIOP-HTTP-Method: + name: FSPIOP-HTTP-Method + in: header + schema: + type: string + required: false + description: The `FSPIOP-HTTP-Method` header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information, see [the API Signature document](https://github.com/mojaloop/docs/tree/master/Specification%20Document%20Set). + #Path parameters + ID: + name: ID + in: path + required: true + schema: + type: string + description: The identifier value. + Type: + name: Type + in: path + required: true + schema: + type: string + description: The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`. + SubId: + name: SubId + in: path + required: true + schema: + type: string + description: A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json b/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json index 391811712..77f657ccc 100644 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json @@ -75,9 +75,5 @@ { "id": "errorInformation.errorDescription", "pattern": "This is a mock error description" - }, - { - "id": "Content-Length", - "pattern": "123" } ] \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml new file mode 100644 index 000000000..63b6243c2 --- /dev/null +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml @@ -0,0 +1,2603 @@ +openapi: 3.0.1 +info: + title: Mojaloop SDK Outbound Scheme Adapter API + description: > + Specification for the Mojaloop SDK Scheme Adapter Outbound Transfers API + + + This API can be used by DFSP backends to simplify the process of sending + funds to other parties within a Mojaloop scheme. + + + Please see other documentation on + https://github.com/mojaloop/sdk-scheme-adapter for more information. + + + **Note on terminology:** The term "Switch" is equal to the term "Hub", and + the term "FSP" is equal to the term "DFSP". + license: + name: 'Apache License Version 2.0, January 2004' + url: 'http://www.apache.org/licenses/' + version: 1.0.0 +paths: + /: + get: + summary: Health check endpoint + description: >- + This endpoint allows a user of the SDK scheme adapter to check the + outbound transfers service is listening. + tags: + - Health + responses: + '200': + description: >- + Returns empty body if the scheme adapter outbound transfers service + is running. + /transfers: + post: + summary: Sends money from one account to another + description: > + The HTTP request `POST /transfers` is used to request the movement of + funds from payer DFSP to payee DFSP. + + The underlying Mojaloop API has three stages for money transfer: + + 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. + 2. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. + 3. Transfer. The enactment of the previously agreed "contract" + + This method has several modes of operation. + + - If the configuration variables `AUTO_ACCEPT_PARTIES` is set to + `"false"` this method will terminate when the payee party has been + resolved and return the payee party details. + If the payee wishes to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the payee party) is required to continue the operation. + The scheme adapter will then proceed with quotation stage... + + - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` + this method will terminate and return the quotation when it has been + received from the payee DFSP. + If the payee wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. + The scheme adapter will then proceed with the transfer state. + + If the configuration variables `AUTO_ACCEPT_PARTIES` and + `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block + until all three transfer stages are complete. Upon completion it will + return the entire set of transfer details received during the operation. + + + Combinations of settings for `AUTO_ACCEPT...` configuration variables + allow the scheme adapter user to decide which mode of operation best + suits their use cases. i.e. the scheme adapter can be configured to + "break" the three stage transfer at these points in order to execute + backend logic such as party verification, quoted fees assessments etc... + tags: + - Transfers + requestBody: + description: Transfer request body + content: + application/json: + schema: + $ref: '#/components/schemas/transferRequest' + required: true + responses: + '200': + $ref: '#/components/responses/transferSuccess' + '400': + $ref: '#/components/responses/transferBadRequest' + '500': + $ref: '#/components/responses/transferServerError' + '504': + $ref: '#/components/responses/transferTimeout' + '/transfers/{transferId}': + put: + summary: >- + Continues a transfer that has paused at the quote stage in order to + accept or reject payee party and/or quote + description: > + The HTTP request `PUT /transfers/{transferId}` is used to continue a + transfer initiated via the `POST /transfers` method that has halted + after party lookup and/or quotation stage. + + + The request body should contain either the "acceptParty" or + "acceptQuote" property set to `true` as required to continue the + transfer. + + + See the description of the `POST /transfers` HTTP method for more + information on modes of transfer. + tags: + - Transfers + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/transferContinuationAcceptParty' + - $ref: '#/components/schemas/transferContinuationAcceptQuote' + parameters: + - $ref: '#/components/parameters/transferId' + responses: + '200': + $ref: '#/components/responses/transferSuccess' + '500': + $ref: '#/components/responses/transferServerError' + '504': + $ref: '#/components/responses/transferTimeout' + get: + summary: Retrieves information for a specific transfer + description: >- + The HTTP request `GET /transfers/{transferId}` is used to get + information regarding a transfer created or requested earlier. The + `{transferId}` in the URI should contain the `transferId` that was used + for the creation of the transfer. + tags: + - Transfers + parameters: + - $ref: '#/components/parameters/transferId' + responses: + '200': + description: Transfer information successfully retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/transferStatusResponse' + '500': + description: An error occurred processing the transfer + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + /bulkTransfers: + post: + summary: Sends money from one account to multiple accounts + description: > + The HTTP request `POST /bulkTransfers` is used to request the movement + of funds from payer DFSP to payees' DFSP. + tags: + - BulkTransfers + requestBody: + description: Bulk transfer request body + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferRequest' + required: true + responses: + '200': + $ref: '#/components/responses/bulkTransferSuccess' + '400': + $ref: '#/components/responses/bulkTransferBadRequest' + '500': + $ref: '#/components/responses/bulkTransferServerError' + '504': + $ref: '#/components/responses/bulkTransferTimeout' + '/bulkTransfers/{bulkTransferId}': + get: + summary: Retrieves information for a specific bulk transfer + description: >- + The HTTP request `GET /bulkTransfers/{bulktTransferId}` is used to get + information regarding a bulk transfer created or requested earlier. The + `{bulkTransferId}` in the URI should contain the `bulkTransferId` that + was used for the creation of the bulk transfer. + tags: + - BulkTransfers + parameters: + - $ref: '#/components/parameters/bulkTransferId' + responses: + '200': + description: Bulk transfer information successfully retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferStatusResponse' + '500': + description: An error occurred processing the bulk transfer + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + /bulkQuotes: + post: + summary: Request bulk quotes for the provided financial transactions + description: > + The HTTP request `POST /bulkQuotes` is used to request a bulk quote to + fascilitate funds transfer from payer DFSP to payees' DFSP. + tags: + - BulkQuotes + requestBody: + description: Bulk quote request body + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteRequest' + required: true + responses: + '200': + $ref: '#/components/responses/bulkQuoteSuccess' + '400': + $ref: '#/components/responses/bulkQuoteBadRequest' + '500': + $ref: '#/components/responses/bulkQuoteServerError' + '504': + $ref: '#/components/responses/bulkQuoteTimeout' + '/bulkQuotes/{bulkQuoteId}': + get: + summary: Retrieves information for a specific bulk quote + description: >- + The HTTP request `GET /bulkQuotes/{bulktQuoteId}` is used to get + information regarding a bulk quote created or requested earlier. The + `{bulkQuoteId}` in the URI should contain the `bulkQuoteId` that was + used for the creation of the bulk quote. + tags: + - BulkQuotes + parameters: + - $ref: '#/components/parameters/bulkQuoteId' + responses: + '200': + description: Bulk quote information successfully retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteStatusResponse' + '500': + description: An error occurred processing the bulk quote + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + /requestToPay: + post: + summary: Receiver requesting funds from Sender + description: > + The HTTP request `POST /requestToPay` is used to support Pull Funds + pattern where in a receiver can request for funds from the Sender. + + The underlying API has two stages: + + 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement. + 2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee. + tags: + - RequestToPay + requestBody: + description: RequestToPay request body + content: + application/json: + schema: + $ref: '#/components/schemas/requestToPayRequest' + required: true + responses: + '200': + $ref: '#/components/responses/requestToPaySuccess' + /requestToPayTransfer: + post: + summary: >- + Used to trigger funds from customer fsp account to merchant fsp account. + This is a follow-up request to requestToPay. + description: > + The HTTP request `POST /requestToPayTransfer` is used to request the + movement of funds from payer DFSP to payee DFSP. + + The underlying Mojaloop API has three stages for money transfer: + + 1. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred. + 2. Authorization. This facilitates getting OTP from payee DFSP. + 3. Transfer. The enactment of the previously agreed "contract" + + This method has several modes of operation. + + - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"` + this method will terminate and return the quotation when it has been + received from the payee DFSP. + If the payee wished to proceed with the otp, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. + The scheme adapter will then proceed with the transfer state. + + - If the configuration variable `AUTO_ACCEPT_OTP` is set to `"false"` + this method will terminate and return the otp when it has been received + from the payee DFSP. + If the payer wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation. + The scheme adapter will then proceed with the transfer state. + + If the configuration variables `AUTO_ACCEPT_PARTIES` and + `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block + until all three transfer stages are complete. Upon completion it will + return the entire set of transfer details received during the operation. + + + Combinations of settings for `AUTO_ACCEPT...` configuration variables + allow the scheme adapter user to decide which mode of operation best + suits their use cases. i.e. the scheme adapter can be configured to + "break" the three stage transfer at these points in order to execute + backend logic such as party verification, quoted fees assessments etc... + tags: + - RequestToPayTransfer + requestBody: + description: Request To Pay Transfer request body + content: + application/json: + schema: + $ref: '#/components/schemas/requestToPayTransferRequest' + required: true + responses: + '200': + $ref: '#/components/responses/requestToPayTransferSuccess' + '400': + $ref: '#/components/responses/requestToPayTransferBadRequest' + '500': + $ref: '#/components/responses/transferServerError' + '504': + $ref: '#/components/responses/transferTimeout' + '/requestToPayTransfer/{requestToPayTransactionId}': + put: + summary: >- + Continues a transfer that has paused at the otp stage in order to accept + or reject quote + description: > + The HTTP request `PUT /transfers/{transferId}` is used to continue a + transfer initiated via the `POST /transfers` method that has halted + after party lookup and/or quotation stage. + + + The request body should contain either the "acceptOTP" or "acceptQuote" + property set to `true` as required to continue the transfer. + + + See the description of the `POST /requestToPayTransfer` HTTP method for + more information on modes of transfer. + tags: + - RequestToPayTransferID + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/transferContinuationAcceptQuote' + - $ref: '#/components/schemas/transferContinuationAcceptOTP' + parameters: + - $ref: '#/components/parameters/requestToPayTransactionId' + responses: + '200': + $ref: '#/components/responses/transferSuccess' + '500': + $ref: '#/components/responses/transferServerError' + '504': + $ref: '#/components/responses/transferTimeout' + /accounts: + post: + summary: Create accounts on the Account Lookup Service + description: >- + The HTTP request `POST /accounts` is used to create account information + on the Account Lookup Service (ALS) regarding the provided list of + identities. + + + Caller DFSP is used as the account source FSP information + tags: + - Accounts + requestBody: + description: Identities list request body + content: + application/json: + schema: + $ref: '#/components/schemas/accountsRequest' + required: true + responses: + '200': + $ref: '#/components/responses/accountsCreationCompleted' + '400': + $ref: '#/components/responses/accountsCreationError' + '500': + $ref: '#/components/responses/accountsCreationError' + '504': + $ref: '#/components/responses/accountsCreationTimeout' + '/parties/{Type}/{ID}': + parameters: + - $ref: '#/components/parameters/Type' + - $ref: '#/components/parameters/ID' + get: + description: >- + The HTTP request GET /parties// (or GET /parties///) is used to lookup + information regarding the requested Party, defined by , and optionally + (for example, GET /parties/MSISDN/123456789, or GET + /parties/BUSINESS/shoecompany/employee1). + summary: PartiesByTypeAndID + tags: + - parties + operationId: PartiesByTypeAndID + responses: + '200': + $ref: '#/components/responses/partiesByIdSuccess' + '404': + $ref: '#/components/responses/partiesByIdError404' + '/parties/{Type}/{ID}/{SubId}': + parameters: + - $ref: '#/components/parameters/Type' + - $ref: '#/components/parameters/ID' + - $ref: '#/components/parameters/SubId' + get: + description: >- + The HTTP request GET /parties// (or GET /parties///) is used to lookup + information regarding the requested Party, defined by , and optionally + (for example, GET /parties/MSISDN/123456789, or GET + /parties/BUSINESS/shoecompany/employee1). + summary: PartiesSubIdByTypeAndID + tags: + - parties + operationId: PartiesSubIdByTypeAndID + responses: + '200': + $ref: '#/components/responses/partiesByIdSuccess' + '404': + $ref: '#/components/responses/partiesByIdError404' + /quotes: + post: + summary: Quotes endpoint + description: is used to request quotes from other DFSP + tags: + - quotes + operationId: QuotesPost + requestBody: + description: Quotes request payload + content: + application/json: + schema: + $ref: '#/components/schemas/quotesPostRequest' + required: true + responses: + '200': + $ref: '#/components/responses/quotesPostSuccess' + '500': + $ref: '#/components/responses/quotesServerError' + /simpleTransfers: + post: + summary: Simple Transfers endpoint + description: is used to request a transfer + tags: + - transfers + operationId: SimpleTransfersPost + requestBody: + description: Simple Transfer request payload + content: + application/json: + schema: + $ref: '#/components/schemas/simpleTransfersPostRequest' + required: true + responses: + '200': + $ref: '#/components/responses/simpleTransfersPostSuccess' + '500': + $ref: '#/components/responses/simpleTransfersServerError' + /authorizations: + post: + description: >- + The HTTP request `POST /authorizations` is used to request the Payer to + enter the applicable credentials in the PISP system. + summary: Authorizations endpoint + operationId: AuthorizationsPost + tags: + - authorizations + requestBody: + description: Perform authorization + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/authorizationsPostRequest' + responses: + '200': + $ref: '#/components/responses/authorizationPostSuccess' + '500': + $ref: '#/components/responses/authorizationsServerError' +components: + schemas: + TransactionInitiatorType: + title: TransactionInitiatorType + type: string + enum: + - CONSUMER + - AGENT + - BUSINESS + - DEVICE + description: |- + Below are the allowed values for the enumeration. + - CONSUMER - Consumer is the initiator of the transaction. + - AGENT - Agent is the initiator of the transaction. + - BUSINESS - Business is the initiator of the transaction. + - DEVICE - Device is the initiator of the transaction. + PartyIdType: + title: PartyIdType + type: string + enum: + - MSISDN + - EMAIL + - PERSONAL_ID + - BUSINESS + - DEVICE + - ACCOUNT_ID + - IBAN + - ALIAS + - CONSENT + - THIRD_PARTY_LINK + description: > + This is a variant based on FSPIOP `PartyIdType` specification. + + Main difference being the CONSENT and THIRD_PARTY_LINK enums. + + + Below are the allowed values for the enumeration. + + - MSISDN - An MSISDN (Mobile Station International Subscriber Directory + + Number, that is, the phone number) is used as reference to a + participant. + + The MSISDN identifier should be in international format according to the + + [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). + + Optionally, the MSISDN may be prefixed by a single plus sign, indicating + the + + international prefix. + + - EMAIL - An email is used as reference to a + + participant. The format of the email should be according to the + informational + + [RFC 3696](https://tools.ietf.org/html/rfc3696). + + - PERSONAL_ID - A personal identifier is used as reference to a + participant. + + Examples of personal identification are passport number, birth + certificate + + number, and national registration number. The identifier number is added + in + + the PartyIdentifier element. The personal identifier type is added in + the + + PartySubIdOrType element. + + - BUSINESS - A specific Business (for example, an organization or a + company) + + is used as reference to a participant. The BUSINESS identifier can be in + any + + format. To make a transaction connected to a specific username or bill + number + + in a Business, the PartySubIdOrType element should be used. + + - DEVICE - A specific device (for example, a POS or ATM) ID connected to + a + + specific business or organization is used as reference to a Party. + + For referencing a specific device under a specific business or + organization, + + use the PartySubIdOrType element. + + - ACCOUNT_ID - A bank account number or FSP account ID should be used as + + reference to a participant. The ACCOUNT_ID identifier can be in any + format, + + as formats can greatly differ depending on country and FSP. + + - IBAN - A bank account number or FSP account ID is used as reference to + a + + participant. The IBAN identifier can consist of up to 34 alphanumeric + + characters and should be entered without whitespace. + + - ALIAS An alias is used as reference to a participant. The alias should + be + + created in the FSP as an alternative reference to an account owner. + + Another example of an alias is a username in the FSP system. + + The ALIAS identifier can be in any format. It is also possible to use + the + + PartySubIdOrType element for identifying an account under an Alias + defined + + by the PartyIdentifier. + + - CONSENT - TBD + + - THIRD_PARTY_LINK - TBD + example: PERSONAL_ID + PartyIdentifier: + title: PartyIdentifier + type: string + minLength: 1 + maxLength: 128 + description: Identifier of the Party. + PartySubIdOrType: + title: PartySubIdOrType + type: string + minLength: 1 + maxLength: 128 + description: >- + Either a sub-identifier of a PartyIdentifier, or a sub-type of the + PartyIdType, normally a PersonalIdentifierType. + Name: + title: Name + type: string + pattern: '^(?!\s*$)[\w .,''-]{1,128}$' + description: >- + The API data type Name is a JSON String, restricted by a regular + expression to avoid characters which are generally not used in a name. + + + Regular Expression - The regular expression for restricting the Name + type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a + string consisting of whitespace only, all Unicode characters are + allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) + and space characters ( ). + + + **Note:** In some programming languages, Unicode support must be + specifically enabled. For example, if Java is used, the flag + UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters. + FirstName: + title: FirstName + type: string + minLength: 1 + maxLength: 128 + pattern: '^(?!\s*$)[\w .,''-]{1,128}$' + description: First name of the Party (Name Type). + MiddleName: + title: MiddleName + type: string + minLength: 1 + maxLength: 128 + pattern: '^(?!\s*$)[\w .,''-]{1,128}$' + description: Middle name of the Party (Name Type). + LastName: + title: LastName + type: string + minLength: 1 + maxLength: 128 + pattern: '^(?!\s*$)[\w .,''-]{1,128}$' + description: Last name of the Party (Name Type). + DateOfBirth: + title: DateofBirth (type Date) + type: string + pattern: >- + ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ + description: Date of Birth of the Party. + MerchantClassificationCode: + title: MerchantClassificationCode + type: string + pattern: '^[\d]{1,4}$' + description: >- + A limited set of pre-defined numbers. This list would be a limited set + of numbers identifying a set of popular merchant types like School Fees, + Pubs and Restaurants, Groceries, etc. + FspId: + title: FspId + type: string + minLength: 1 + maxLength: 32 + description: FSP identifier. + ExtensionKey: + title: ExtensionKey + type: string + minLength: 1 + maxLength: 32 + description: Extension key. + ExtensionValue: + title: ExtensionValue + type: string + minLength: 1 + maxLength: 128 + description: Extension value. + Extension: + title: Extension + type: object + description: Data model for the complex type Extension. + properties: + key: + $ref: '#/components/schemas/ExtensionKey' + value: + $ref: '#/components/schemas/ExtensionValue' + required: + - key + - value + extensionListEmptiable: + type: array + items: + $ref: '#/components/schemas/Extension' + minItems: 0 + maxItems: 16 + transferParty: + type: object + required: + - idType + - idValue + properties: + type: + $ref: '#/components/schemas/TransactionInitiatorType' + idType: + $ref: '#/components/schemas/PartyIdType' + idValue: + $ref: '#/components/schemas/PartyIdentifier' + idSubValue: + $ref: '#/components/schemas/PartySubIdOrType' + displayName: + $ref: '#/components/schemas/Name' + firstName: + $ref: '#/components/schemas/FirstName' + middleName: + $ref: '#/components/schemas/MiddleName' + lastName: + $ref: '#/components/schemas/LastName' + dateOfBirth: + $ref: '#/components/schemas/DateOfBirth' + merchantClassificationCode: + $ref: '#/components/schemas/MerchantClassificationCode' + fspId: + $ref: '#/components/schemas/FspId' + extensionList: + $ref: '#/components/schemas/extensionListEmptiable' + AmountType: + title: AmountType + type: string + enum: + - SEND + - RECEIVE + description: >- + Below are the allowed values for the enumeration AmountType. + + - SEND - Amount the Payer would like to send, that is, the amount that + should be withdrawn from the Payer account including any fees. + + - RECEIVE - Amount the Payer would like the Payee to receive, that is, + the amount that should be sent to the receiver exclusive of any fees. + Currency: + title: Currency + description: >- + The currency codes defined in [ISO + 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter + alphabetic codes are used as the standard naming representation for + currencies. + type: string + minLength: 3 + maxLength: 3 + enum: + - AED + - AFN + - ALL + - AMD + - ANG + - AOA + - ARS + - AUD + - AWG + - AZN + - BAM + - BBD + - BDT + - BGN + - BHD + - BIF + - BMD + - BND + - BOB + - BRL + - BSD + - BTN + - BWP + - BYN + - BZD + - CAD + - CDF + - CHF + - CLP + - CNY + - COP + - CRC + - CUC + - CUP + - CVE + - CZK + - DJF + - DKK + - DOP + - DZD + - EGP + - ERN + - ETB + - EUR + - FJD + - FKP + - GBP + - GEL + - GGP + - GHS + - GIP + - GMD + - GNF + - GTQ + - GYD + - HKD + - HNL + - HRK + - HTG + - HUF + - IDR + - ILS + - IMP + - INR + - IQD + - IRR + - ISK + - JEP + - JMD + - JOD + - JPY + - KES + - KGS + - KHR + - KMF + - KPW + - KRW + - KWD + - KYD + - KZT + - LAK + - LBP + - LKR + - LRD + - LSL + - LYD + - MAD + - MDL + - MGA + - MKD + - MMK + - MNT + - MOP + - MRO + - MUR + - MVR + - MWK + - MXN + - MYR + - MZN + - NAD + - NGN + - NIO + - NOK + - NPR + - NZD + - OMR + - PAB + - PEN + - PGK + - PHP + - PKR + - PLN + - PYG + - QAR + - RON + - RSD + - RUB + - RWF + - SAR + - SBD + - SCR + - SDG + - SEK + - SGD + - SHP + - SLL + - SOS + - SPL + - SRD + - STD + - SVC + - SYP + - SZL + - THB + - TJS + - TMT + - TND + - TOP + - TRY + - TTD + - TVD + - TWD + - TZS + - UAH + - UGX + - USD + - UYU + - UZS + - VEF + - VND + - VUV + - WST + - XAF + - XCD + - XDR + - XOF + - XPF + - XTS + - XXX + - YER + - ZAR + - ZMW + - ZWD + Amount: + title: Amount + type: string + pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$' + description: >- + The API data type Amount is a JSON String in a canonical format that is + restricted by a regular expression for interoperability reasons. This + pattern does not allow any trailing zeroes at all, but allows an amount + without a minor currency unit. It also only allows four digits in the + minor currency unit; a negative value is not allowed. Using more than 18 + digits in the major currency unit is not allowed. + transactionType: + type: string + enum: + - TRANSFER + description: Type of transaction. + Note: + title: Note + type: string + minLength: 1 + maxLength: 128 + description: Memo assigned to transaction. + transferRequest: + type: object + required: + - homeTransactionId + - from + - to + - amountType + - currency + - amount + - transactionType + properties: + homeTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + quoteRequestExtensions: + $ref: '#/components/schemas/extensionListEmptiable' + transferRequestExtensions: + $ref: '#/components/schemas/extensionListEmptiable' + CorrelationId: + title: CorrelationId + type: string + pattern: >- + ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + description: >- + Identifier that correlates all messages of the same sequence. The API + data type UUID (Universally Unique Identifier) is a JSON String in + canonical format, conforming to [RFC + 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a + regular expression for interoperability reasons. A UUID is always 36 + characters long, 32 hexadecimal symbols and 4 dashes (‘-‘). + transferStatus: + type: string + enum: + - ERROR_OCCURRED + - WAITING_FOR_PARTY_ACCEPTANCE + - WAITING_FOR_QUOTE_ACCEPTANCE + - COMPLETED + Money: + title: Money + type: object + description: Data model for the complex type Money. + properties: + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + required: + - currency + - amount + DateTime: + title: DateTime + type: string + pattern: >- + ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$ + description: >- + The API data type DateTime is a JSON String in a lexical format that is + restricted by a regular expression for interoperability reasons. The + format is according to [ISO + 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed + in a combined date, time and time zone format. A more readable version + of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are + "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z + indicates Zulu time zone, same as UTC). + Latitude: + title: Latitude + type: string + pattern: >- + ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$ + description: >- + The API data type Latitude is a JSON String in a lexical format that is + restricted by a regular expression for interoperability reasons. + Longitude: + title: Longitude + type: string + pattern: >- + ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$ + description: >- + The API data type Longitude is a JSON String in a lexical format that is + restricted by a regular expression for interoperability reasons. + GeoCode: + title: GeoCode + type: object + description: >- + Data model for the complex type GeoCode. Indicates the geographic + location from where the transaction was initiated. + properties: + latitude: + $ref: '#/components/schemas/Latitude' + longitude: + $ref: '#/components/schemas/Longitude' + required: + - latitude + - longitude + IlpPacket: + title: IlpPacket + type: string + pattern: '^[A-Za-z0-9-_]+[=]{0,2}$' + minLength: 1 + maxLength: 32768 + description: Information for recipient (transport layer information). + IlpCondition: + title: IlpCondition + type: string + pattern: '^[A-Za-z0-9-_]{43}$' + maxLength: 48 + description: Condition that must be attached to the transfer by the Payer. + ExtensionList: + title: ExtensionList + type: object + description: >- + Data model for the complex type ExtensionList. An optional list of + extensions, specific to deployment. + properties: + extension: + type: array + items: + $ref: '#/components/schemas/Extension' + minItems: 1 + maxItems: 16 + description: Number of Extension elements. + required: + - extension + QuotesIDPutResponse: + title: QuotesIDPutResponse + type: object + description: 'The object sent in the PUT /quotes/{ID} callback.' + properties: + transferAmount: + $ref: '#/components/schemas/Money' + payeeReceiveAmount: + $ref: '#/components/schemas/Money' + payeeFspFee: + $ref: '#/components/schemas/Money' + payeeFspCommission: + $ref: '#/components/schemas/Money' + expiration: + $ref: '#/components/schemas/DateTime' + geoCode: + $ref: '#/components/schemas/GeoCode' + ilpPacket: + $ref: '#/components/schemas/IlpPacket' + condition: + $ref: '#/components/schemas/IlpCondition' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - transferAmount + - expiration + - ilpPacket + - condition + IlpFulfilment: + title: IlpFulfilment + type: string + pattern: '^[A-Za-z0-9-_]{43}$' + maxLength: 48 + description: Fulfilment that must be attached to the transfer by the Payee. + TransferState: + title: TransferState + type: string + enum: + - RECEIVED + - RESERVED + - COMMITTED + - ABORTED + description: >- + Below are the allowed values for the enumeration. + + - RECEIVED - Next ledger has received the transfer. + + - RESERVED - Next ledger has reserved the transfer. + + - COMMITTED - Next ledger has successfully performed the transfer. + + - ABORTED - Next ledger has aborted the transfer due to a rejection or + failure to perform the transfer. + TransfersIDPutResponse: + title: TransfersIDPutResponse + type: object + description: 'The object sent in the PUT /transfers/{ID} callback.' + properties: + fulfilment: + $ref: '#/components/schemas/IlpFulfilment' + completedTimestamp: + $ref: '#/components/schemas/DateTime' + transferState: + $ref: '#/components/schemas/TransferState' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - transferState + ErrorCode: + title: ErrorCode + type: string + pattern: '^[1-9]\d{3}$' + description: >- + The API data type ErrorCode is a JSON String of four characters, + consisting of digits only. Negative numbers are not allowed. A leading + zero is not allowed. Each error code in the API is a four-digit number, + for example, 1234, where the first number (1 in the example) represents + the high-level error category, the second number (2 in the example) + represents the low-level error category, and the last two numbers (34 in + the example) represent the specific error. + ErrorDescription: + title: ErrorDescription + type: string + minLength: 1 + maxLength: 128 + description: Error description string. + ErrorInformation: + title: ErrorInformation + type: object + description: Data model for the complex type ErrorInformation. + properties: + errorCode: + $ref: '#/components/schemas/ErrorCode' + errorDescription: + $ref: '#/components/schemas/ErrorDescription' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - errorCode + - errorDescription + mojaloopError: + type: object + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + transferError: + type: object + description: >- + This object represents a Mojaloop API error received at any time during + the transfer process + properties: + httpStatusCode: + type: integer + description: >- + The HTTP status code returned to the caller. This is the same as the + actual HTTP status code returned with the response. + mojaloopError: + $ref: '#/components/schemas/mojaloopError' + transferResponse: + type: object + required: + - homeTransactionId + - from + - to + - amountType + - currency + - amount + - transactionType + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + homeTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + currentState: + $ref: '#/components/schemas/transferStatus' + quoteId: + $ref: '#/components/schemas/CorrelationId' + quoteResponse: + $ref: '#/components/schemas/QuotesIDPutResponse' + quoteResponseSource: + type: string + description: > + FSPID of the entity that supplied the quote response. This may not + be the same as the FSPID of the entity which owns the end user + account in the case of a FOREX transfer. i.e. it may be a FOREX + gateway. + fulfil: + $ref: '#/components/schemas/TransfersIDPutResponse' + lastError: + $ref: '#/components/schemas/transferError' + errorResponse: + type: object + properties: + statusCode: + type: string + description: Error code as string. + message: + type: string + description: Error message text. + errorTransferResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + required: + - transferState + properties: + transferState: + $ref: '#/components/schemas/transferResponse' + transferStatusResponse: + type: object + required: + - transferId + - currentState + - fulfil + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + currentState: + $ref: '#/components/schemas/transferStatus' + fulfil: + $ref: '#/components/schemas/TransfersIDPutResponse' + transferContinuationAcceptParty: + type: object + required: + - acceptParty + properties: + acceptParty: + type: boolean + enum: + - true + transferContinuationAcceptQuote: + type: object + required: + - acceptQuote + properties: + acceptQuote: + type: boolean + enum: + - true + - false + individualTransfer: + title: IndividualTransfer + type: object + description: Data model for the complex type 'individualTransfer'. + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + extensions: + $ref: '#/components/schemas/ExtensionList' + required: + - transferId + - to + - amountType + - currency + - transactionType + bulkTransferRequest: + type: object + required: + - homeTransactionId + - from + - individualTransfers + properties: + homeTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + bulkTransferId: + $ref: '#/components/schemas/CorrelationId' + from: + $ref: '#/components/schemas/transferParty' + individualTransfers: + description: List of individual transfers in a bulk transfer. + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/individualTransfer' + extensions: + $ref: '#/components/schemas/ExtensionList' + individualTransferResult: + type: object + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + quoteId: + $ref: '#/components/schemas/CorrelationId' + quoteResponse: + $ref: '#/components/schemas/QuotesIDPutResponse' + quoteResponseSource: + type: string + description: > + FSPID of the entity that supplied the quote response. This may not + be the same as the FSPID of the entity which owns the end user + account in the case of a FOREX transfer. i.e. it may be a FOREX + gateway. + fulfil: + $ref: '#/components/schemas/TransfersIDPutResponse' + lastError: + $ref: '#/components/schemas/transferError' + bulkTransferResponse: + type: object + required: + - from + - individualTransferResults + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + from: + $ref: '#/components/schemas/transferParty' + individualTransferResults: + type: array + maxItems: 1000 + items: + $ref: '#/components/schemas/individualTransferResult' + description: List of individual transfer result in a bulk transfer response. + bulkTransferErrorResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + required: + - bulkTansferState + properties: + bulkTransferState: + $ref: '#/components/schemas/bulkTransferResponse' + bulkTransferStatus: + type: string + enum: + - ERROR_OCCURRED + - COMPLETED + individualTransferFulfilment: + type: object + description: >- + A Mojaloop API transfer fulfilment for individual transfers in a bulk + transfer + properties: + fulfilment: + $ref: '#/components/schemas/IlpFulfilment' + extensionList: + $ref: '#/components/schemas/ExtensionList' + bulkTransferStatusResponse: + type: object + required: + - bulkTransferId + - currentState + - fulfils + properties: + bulkTransferId: + $ref: '#/components/schemas/CorrelationId' + currentState: + $ref: '#/components/schemas/bulkTransferStatus' + fulfils: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/individualTransferFulfilment' + individualQuote: + title: IndividualQuote + type: object + description: Data model for the complex type 'individualQuote'. + properties: + quoteId: + $ref: '#/components/schemas/CorrelationId' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + extensions: + $ref: '#/components/schemas/ExtensionList' + required: + - quoteId + - to + - amountType + - currency + - transactionType + bulkQuoteRequest: + type: object + required: + - homeTransactionId + - from + - individualQuotes + properties: + homeTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + bulkQuoteId: + $ref: '#/components/schemas/CorrelationId' + from: + $ref: '#/components/schemas/transferParty' + individualQuotes: + description: List of individual quotes in a bulk quote. + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/individualQuote' + extensions: + $ref: '#/components/schemas/ExtensionList' + quoteError: + type: object + description: >- + This object represents a Mojaloop API error received at any time during + the quote process + properties: + httpStatusCode: + type: integer + description: >- + The HTTP status code returned to the caller. This is the same as the + actual HTTP status code returned with the response. + mojaloopError: + $ref: '#/components/schemas/mojaloopError' + individualQuoteResult: + type: object + properties: + quoteId: + $ref: '#/components/schemas/CorrelationId' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + lastError: + $ref: '#/components/schemas/quoteError' + bulkQuoteResponse: + type: object + required: + - from + - individualQuoteResults + properties: + quoteId: + $ref: '#/components/schemas/CorrelationId' + homeTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + individualQuoteResults: + type: array + maxItems: 1000 + items: + $ref: '#/components/schemas/individualQuoteResult' + description: List of individualQuoteResults in a bulk transfer response. + bulkQuoteErrorResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + required: + - bulkTansferState + properties: + bulkQuoteState: + $ref: '#/components/schemas/bulkQuoteResponse' + bulkQuoteStatus: + type: string + enum: + - ERROR_OCCURRED + - COMPLETED + bulkQuoteStatusResponse: + type: object + required: + - bulkQuoteId + - currentState + - individualQuotes + properties: + bulkQuoteId: + $ref: '#/components/schemas/CorrelationId' + currentState: + $ref: '#/components/schemas/bulkQuoteStatus' + individualQuotes: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/individualQuote' + TransactionScenario: + title: TransactionScenario + type: string + enum: + - DEPOSIT + - WITHDRAWAL + - TRANSFER + - PAYMENT + - REFUND + description: >- + Below are the allowed values for the enumeration. + + - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a + normal scenario, electronic funds are transferred from a Business + account to a Consumer account, and physical cash is given from the + Consumer to the Business User. + + - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. + In a normal scenario, electronic funds are transferred from a Consumer’s + account to a Business account, and physical cash is given from the + Business User to the Consumer. + + - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to + Consumer) transaction. + + - PAYMENT - Usually used for performing a transaction from a Consumer to + a Merchant or Organization, but could also be for a B2B (Business to + Business) payment. The transaction could be online for a purchase in an + Internet store, in a physical store where both the Consumer and Business + User are present, a bill payment, a donation, and so on. + + - REFUND - Used for performing a refund of transaction. + TransactionSubScenario: + title: TransactionSubScenario + type: string + pattern: '^[A-Z_]{1,32}$' + description: >- + Possible sub-scenario, defined locally within the scheme (UndefinedEnum + Type). + TransactionInitiator: + title: TransactionInitiator + type: string + enum: + - PAYER + - PAYEE + description: >- + Below are the allowed values for the enumeration. + + - PAYER - Sender of funds is initiating the transaction. The account to + send from is either owned by the Payer or is connected to the Payer in + some way. + + - PAYEE - Recipient of the funds is initiating the transaction by + sending a transaction request. The Payer must approve the transaction, + either automatically by a pre-generated OTP or by pre-approval of the + Payee, or by manually approving in his or her own Device. + RefundReason: + title: RefundReason + type: string + minLength: 1 + maxLength: 128 + description: Reason for the refund. + Refund: + title: Refund + type: object + description: Data model for the complex type Refund. + properties: + originalTransactionId: + $ref: '#/components/schemas/CorrelationId' + refundReason: + $ref: '#/components/schemas/RefundReason' + required: + - originalTransactionId + BalanceOfPayments: + title: BalanceOfPayments + type: string + pattern: '^[1-9]\d{2}$' + description: >- + (BopCode) The API data type + [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String + of 3 characters, consisting of digits only. Negative numbers are not + allowed. A leading zero is not allowed. + TransactionType: + title: TransactionType + type: object + description: Data model for the complex type TransactionType. + properties: + scenario: + $ref: '#/components/schemas/TransactionScenario' + subScenario: + $ref: '#/components/schemas/TransactionSubScenario' + initiator: + $ref: '#/components/schemas/TransactionInitiator' + initiatorType: + $ref: '#/components/schemas/TransactionInitiatorType' + refundInfo: + $ref: '#/components/schemas/Refund' + balanceOfPayments: + $ref: '#/components/schemas/BalanceOfPayments' + required: + - scenario + - initiator + - initiatorType + requestToPayRequest: + type: object + required: + - homeTransactionId + - from + - to + - amountType + - currency + - amount + - scenario + - initiator + - initiatorType + properties: + homeTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + scenario: + $ref: '#/components/schemas/TransactionType' + initiator: + $ref: '#/components/schemas/TransactionInitiator' + initiatorType: + $ref: '#/components/schemas/TransactionInitiatorType' + AuthenticationType: + title: AuthenticationType + type: string + enum: + - OTP + - QRCODE + - U2F + description: |- + Below are the allowed values for the enumeration AuthenticationType. + - OTP - One-time password generated by the Payer FSP. + - QRCODE - QR code used as One Time Password. + - U2F - U2F is a new addition isolated to Thirdparty stream. + TransactionRequestState: + title: TransactionRequestState + type: string + enum: + - RECEIVED + - PENDING + - ACCEPTED + - REJECTED + description: |- + Below are the allowed values for the enumeration. + - RECEIVED - Payer FSP has received the transaction from the Payee FSP. + - PENDING - Payer FSP has sent the transaction request to the Payer. + - ACCEPTED - Payer has approved the transaction. + - REJECTED - Payer has rejected the transaction. + requestToPayResponse: + type: object + required: + - transactionRequestId + - from + - to + - amountType + - currency + - amount + - transactionType + - requestToPayState + properties: + transactionRequestId: + $ref: '#/components/schemas/CorrelationId' + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + scenario: + $ref: '#/components/schemas/TransactionType' + initiator: + $ref: '#/components/schemas/TransactionInitiator' + initiatorType: + $ref: '#/components/schemas/TransactionInitiatorType' + authenticationType: + $ref: '#/components/schemas/AuthenticationType' + requestToPayState: + $ref: '#/components/schemas/TransactionRequestState' + requestToPayTransferRequest: + type: object + required: + - requestToPayTransactionId + - from + - to + - amountType + - currency + - amount + - scenario + - initiator + - initiatorType + properties: + requestToPayTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + scenario: + $ref: '#/components/schemas/TransactionType' + initiator: + $ref: '#/components/schemas/TransactionInitiator' + initiatorType: + $ref: '#/components/schemas/TransactionInitiatorType' + note: + $ref: '#/components/schemas/Note' + requestToPayTransferResponse: + type: object + required: + - requestToPayTransactionId + - from + - to + - amountType + - currency + - amount + - transactionType + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + requestToPayTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + $ref: '#/components/schemas/Note' + currentState: + $ref: '#/components/schemas/transferStatus' + quoteId: + $ref: '#/components/schemas/CorrelationId' + quoteResponse: + $ref: '#/components/schemas/QuotesIDPutResponse' + quoteResponseSource: + type: string + description: > + FSPID of the entity that supplied the quote response. This may not + be the same as the FSPID of the entity which owns the end user + account in the case of a FOREX transfer. i.e. it may be a FOREX + gateway. + fulfil: + $ref: '#/components/schemas/TransfersIDPutResponse' + lastError: + $ref: '#/components/schemas/transferError' + transferContinuationAcceptOTP: + type: object + required: + - acceptOTP + properties: + acceptOTP: + type: boolean + enum: + - true + - false + accountsRequest: + type: array + items: + type: object + required: + - idType + - idValue + - currency + properties: + idType: + $ref: '#/components/schemas/PartyIdType' + idValue: + $ref: '#/components/schemas/PartyIdentifier' + idSubValue: + $ref: '#/components/schemas/PartySubIdOrType' + currency: + $ref: '#/components/schemas/Currency' + accountCreationStatus: + type: array + items: + type: object + required: + - idType + - idValue + properties: + idType: + $ref: '#/components/schemas/PartyIdType' + idValue: + $ref: '#/components/schemas/PartyIdentifier' + idSubValue: + $ref: '#/components/schemas/PartySubIdOrType' + error: + $ref: '#/components/schemas/errorResponse' + accountsCreationState: + type: string + enum: + - ERROR_OCCURRED + - COMPLETED + accountsResponse: + type: object + required: + - accounts + properties: + modelId: + $ref: '#/components/schemas/CorrelationId' + accounts: + $ref: '#/components/schemas/accountsRequest' + response: + $ref: '#/components/schemas/accountCreationStatus' + currentState: + $ref: '#/components/schemas/accountsCreationState' + lastError: + $ref: '#/components/schemas/transferError' + errorAccountsResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + required: + - executionState + properties: + executionState: + $ref: '#/components/schemas/accountsResponse' + AccountAddress: + title: AccountAddress + type: string + description: > + A long-lived unique account identifier provided by the DFSP. This MUST + NOT + + be Bank Account Number or anything that may expose a User's private bank + + account information. + pattern: '^([0-9A-Za-z_~\-\.]+[0-9A-Za-z_~\-])$' + minLength: 1 + maxLength: 1023 + Account: + title: Account + type: object + description: Data model for the complex type Account. + properties: + address: + $ref: '#/components/schemas/AccountAddress' + currency: + $ref: '#/components/schemas/Currency' + description: + $ref: '#/components/schemas/Name' + required: + - currency + AccountList: + title: AccountList + type: object + description: Data model for the complex type AccountList. + properties: + account: + type: array + items: + $ref: '#/components/schemas/Account' + minItems: 1 + maxItems: 32 + description: Accounts associated with the Party. + required: + - account + PartyIdInfo: + title: PartyIdInfo + type: object + description: Data model for the complex type PartyIdInfo. + properties: + partyIdType: + $ref: '#/components/schemas/PartyIdType' + partyIdentifier: + $ref: '#/components/schemas/PartyIdentifier' + partySubIdOrType: + $ref: '#/components/schemas/PartySubIdOrType' + fspId: + $ref: '#/components/schemas/FspId' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - partyIdType + - partyIdentifier + PartyName: + title: PartyName + type: string + minLength: 1 + maxLength: 128 + description: Name of the Party. Could be a real name or a nickname. + PartyComplexName: + title: PartyComplexName + type: object + description: Data model for the complex type PartyComplexName. + properties: + firstName: + $ref: '#/components/schemas/FirstName' + middleName: + $ref: '#/components/schemas/MiddleName' + lastName: + $ref: '#/components/schemas/LastName' + PartyPersonalInfo: + title: PartyPersonalInfo + type: object + description: Data model for the complex type PartyPersonalInfo. + properties: + complexName: + $ref: '#/components/schemas/PartyComplexName' + dateOfBirth: + $ref: '#/components/schemas/DateOfBirth' + Party: + title: Party + type: object + description: Data model for the complex type Party. + properties: + accounts: + $ref: '#/components/schemas/AccountList' + partyIdInfo: + $ref: '#/components/schemas/PartyIdInfo' + merchantClassificationCode: + $ref: '#/components/schemas/MerchantClassificationCode' + name: + $ref: '#/components/schemas/PartyName' + personalInfo: + $ref: '#/components/schemas/PartyPersonalInfo' + required: + - partyIdInfo + async2SyncCurrentState: + type: string + enum: + - WAITING_FOR_ACTION + - COMPLETED + - ERROR_OCCURRED + partiesByIdResponse: + title: partiesByIdResponse + type: object + description: 'GET /parties/{Type}/{ID} response object' + properties: + party: + $ref: '#/components/schemas/Party' + currentState: + $ref: '#/components/schemas/async2SyncCurrentState' + required: + - party + - currentState + QuotesPostRequest: + title: QuotesPostRequest + type: object + description: The object sent in the POST /quotes request. + properties: + quoteId: + $ref: '#/components/schemas/CorrelationId' + transactionId: + $ref: '#/components/schemas/CorrelationId' + transactionRequestId: + $ref: '#/components/schemas/CorrelationId' + payee: + $ref: '#/components/schemas/Party' + payer: + $ref: '#/components/schemas/Party' + amountType: + $ref: '#/components/schemas/AmountType' + amount: + $ref: '#/components/schemas/Money' + fees: + $ref: '#/components/schemas/Money' + transactionType: + $ref: '#/components/schemas/TransactionType' + geoCode: + $ref: '#/components/schemas/GeoCode' + note: + $ref: '#/components/schemas/Note' + expiration: + $ref: '#/components/schemas/DateTime' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - quoteId + - transactionId + - payee + - payer + - amountType + - amount + - transactionType + quotesPostRequest: + title: QuotesPostRequest + type: object + properties: + fspId: + $ref: '#/components/schemas/FspId' + quotesPostRequest: + $ref: '#/components/schemas/QuotesPostRequest' + required: + - fspId + - quotesPostRequest + quotesPostResponse: + title: QuotesPostResponse + type: object + properties: + quotes: + title: QuotesIDPutResponse + type: object + description: 'The object sent in the PUT /quotes/{ID} callback.' + properties: + transferAmount: + $ref: '#/components/schemas/Money' + payeeReceiveAmount: + $ref: '#/components/schemas/Money' + payeeFspFee: + $ref: '#/components/schemas/Money' + payeeFspCommission: + $ref: '#/components/schemas/Money' + expiration: + type: string + description: >- + Date and time until when the quotation is valid and can be + honored when used in the subsequent transaction. + example: '2016-05-24T08:38:08.699-04:00' + geoCode: + $ref: '#/components/schemas/GeoCode' + ilpPacket: + $ref: '#/components/schemas/IlpPacket' + condition: + $ref: '#/components/schemas/IlpCondition' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - transferAmount + - expiration + - ilpPacket + - condition + currentState: + $ref: '#/components/schemas/async2SyncCurrentState' + required: + - quotes + - currentState + errorQuotesResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + TransfersPostRequest: + title: TransfersPostRequest + type: object + description: The object sent in the POST /transfers request. + properties: + transferId: + $ref: '#/components/schemas/CorrelationId' + payeeFsp: + $ref: '#/components/schemas/FspId' + payerFsp: + $ref: '#/components/schemas/FspId' + amount: + $ref: '#/components/schemas/Money' + ilpPacket: + $ref: '#/components/schemas/IlpPacket' + condition: + $ref: '#/components/schemas/IlpCondition' + expiration: + $ref: '#/components/schemas/DateTime' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - transferId + - payeeFsp + - payerFsp + - amount + - ilpPacket + - condition + - expiration + simpleTransfersPostRequest: + title: SimpleTransfersPostRequest + type: object + properties: + fspId: + $ref: '#/components/schemas/FspId' + transfersPostRequest: + $ref: '#/components/schemas/TransfersPostRequest' + required: + - fspId + - transfersPostRequest + simpleTransfersPostResponse: + title: SimpleTransfersPostResponse + type: object + properties: + transfer: + $ref: '#/components/schemas/TransfersIDPutResponse' + currentState: + $ref: '#/components/schemas/async2SyncCurrentState' + required: + - transfer + - currentState + errorSimpleTransfersResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + AuthorizationChannelType: + title: AuthorizationChannelType + type: string + enum: + - OTP + - QRCODE + - U2F + description: > + Below are the allowed values for the enumeration + AuthorizationChannelType. + + - OTP - One-time password generated by the Payer FSP. + + - QRCODE - QR code used as One Time Password. + + - U2F - U2F is a new addition isolated to Thirdparty stream. + + + This is based on FSPIOP `AuthenticationType` with U2F added. + example: U2F + Integer: + title: Integer + type: string + pattern: '^[1-9]\d*$' + description: >- + The API data type Integer is a JSON String consisting of digits only. + Negative numbers and leading zeroes are not allowed. The data type is + always limited to a specific number of digits. + AuthorizationsPostRequest: + title: AuthorizationsPostRequest + description: POST /authorizations request object. + type: object + properties: + authenticationType: + $ref: '#/components/schemas/AuthorizationChannelType' + retriesLeft: + $ref: '#/components/schemas/Integer' + amount: + $ref: '#/components/schemas/Money' + transactionId: + $ref: '#/components/schemas/CorrelationId' + transactionRequestId: + $ref: '#/components/schemas/CorrelationId' + quote: + $ref: '#/components/schemas/QuotesIDPutResponse' + required: + - authenticationType + - retriesLeft + - amount + - transactionId + - transactionRequestId + - quote + additionalProperties: false + authorizationsPostRequest: + title: AuthorizationsPostRequest + description: POST /authorizations Request object + type: object + properties: + fspId: + $ref: '#/components/schemas/FspId' + authorizationsPostRequest: + $ref: '#/components/schemas/AuthorizationsPostRequest' + required: + - fspId + - authorizationsPostRequest + OtpValue: + title: OtpValue + type: string + pattern: '^\d{3,10}$' + description: >- + The API data type OtpValue is a JSON String of 3 to 10 characters, + consisting of digits only. Negative numbers are not allowed. One or more + leading zeros are allowed. + QRCODE: + title: QRCODE + type: string + minLength: 1 + maxLength: 64 + description: QR code used as a One Time Password. + U2FPIN: + title: U2FPIN + type: string + pattern: '^\S{1,64}$' + minLength: 1 + maxLength: 64 + description: > + U2F challenge-response, where payer FSP verifies if the response + provided by end-user device matches the previously registered key. + U2FPinValue: + title: U2FPinValue + type: object + description: > + U2F challenge-response, where payer FSP verifies if the response + provided by end-user device matches the previously registered key. + properties: + pinValue: + allOf: + - $ref: '#/components/schemas/U2FPIN' + description: U2F challenge-response. + counter: + allOf: + - $ref: '#/components/schemas/Integer' + description: >- + Sequential counter used for cloning detection. Present only for U2F + authentication. + required: + - pinValue + - counter + AuthenticationValue: + title: AuthenticationValue + anyOf: + - $ref: '#/components/schemas/OtpValue' + - $ref: '#/components/schemas/QRCODE' + - $ref: '#/components/schemas/U2FPinValue' + pattern: '^\d{3,10}$|^\S{1,64}$' + description: >- + Contains the authentication value. The format depends on the + authentication type used in the AuthenticationInfo complex type. + AuthenticationInfo: + title: AuthenticationInfo + type: object + description: Data model for the complex type AuthenticationInfo. + properties: + authentication: + $ref: '#/components/schemas/AuthenticationType' + authenticationValue: + $ref: '#/components/schemas/AuthenticationValue' + required: + - authentication + - authenticationValue + AuthorizationResponseType: + title: AuthorizationResponseType + description: | + Enum containing response information; if the customer entered the + authentication value, rejected the transaction, or requested a + resend of the authentication value. + type: string + enum: + - ENTERED + - REJECTED + - RESEND + authorizationsPostResponse: + title: AuthorizationsPostResponse + description: POST /authorizations response object + type: object + properties: + authorizations: + type: object + properties: + authenticationInfo: + $ref: '#/components/schemas/AuthenticationInfo' + responseType: + $ref: '#/components/schemas/AuthorizationResponseType' + required: + - responseType + currentState: + $ref: '#/components/schemas/async2SyncCurrentState' + required: + - authorizations + - currentState + additionalProperties: false + errorAuthorizationsResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + responses: + transferSuccess: + description: Transfer completed successfully + content: + application/json: + schema: + $ref: '#/components/schemas/transferResponse' + transferBadRequest: + description: 'Malformed or missing required body, headers or parameters' + content: + application/json: + schema: + $ref: '#/components/schemas/errorTransferResponse' + transferServerError: + description: An error occurred processing the transfer + content: + application/json: + schema: + $ref: '#/components/schemas/errorTransferResponse' + transferTimeout: + description: Timeout occurred processing the transfer + content: + application/json: + schema: + $ref: '#/components/schemas/errorTransferResponse' + bulkTransferSuccess: + description: Bulk transfer completed successfully + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferResponse' + bulkTransferBadRequest: + description: 'Malformed or missing required body, headers or parameters' + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferErrorResponse' + bulkTransferServerError: + description: An error occurred processing the bulk transfer + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferErrorResponse' + bulkTransferTimeout: + description: Timeout occurred processing the bulk transfer + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferErrorResponse' + bulkQuoteSuccess: + description: Bulk quote completed successfully + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteResponse' + bulkQuoteBadRequest: + description: 'Malformed or missing required body, headers or parameters' + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteErrorResponse' + bulkQuoteServerError: + description: An error occurred processing the bulk quote + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteErrorResponse' + bulkQuoteTimeout: + description: Timeout occurred processing the bulk quote + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteErrorResponse' + requestToPaySuccess: + description: Request to Pay completed successfully + content: + application/json: + schema: + $ref: '#/components/schemas/requestToPayResponse' + requestToPayTransferSuccess: + description: Transfer completed successfully + content: + application/json: + schema: + $ref: '#/components/schemas/requestToPayTransferResponse' + requestToPayTransferBadRequest: + description: 'Malformed or missing required body, headers or parameters' + content: + application/json: + schema: + $ref: '#/components/schemas/errorTransferResponse' + accountsCreationCompleted: + description: Accounts creation completed + content: + application/json: + schema: + $ref: '#/components/schemas/accountsResponse' + accountsCreationError: + description: An error occurred creating accounts + content: + application/json: + schema: + $ref: '#/components/schemas/errorAccountsResponse' + accountsCreationTimeout: + description: Timeout occurred creating accounts + content: + application/json: + schema: + $ref: '#/components/schemas/errorAccountsResponse' + partiesByIdSuccess: + description: PartiesByIdSuccess + content: + application/json: + schema: + $ref: '#/components/schemas/partiesByIdResponse' + partiesByIdError404: + description: PartiesByIdError404 + content: + application/json: + schema: + type: object + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + quotesPostSuccess: + description: sync response from POST /quotes + content: + application/json: + schema: + $ref: '#/components/schemas/quotesPostResponse' + quotesServerError: + description: An error occurred processing the quotes request + content: + application/json: + schema: + $ref: '#/components/schemas/errorQuotesResponse' + simpleTransfersPostSuccess: + description: sync response from POST /simpleTransfers + content: + application/json: + schema: + $ref: '#/components/schemas/simpleTransfersPostResponse' + simpleTransfersServerError: + description: An error occurred processing the simple transfers request + content: + application/json: + schema: + $ref: '#/components/schemas/errorSimpleTransfersResponse' + authorizationPostSuccess: + description: Sync response from POST /authorizations + content: + application/json: + schema: + $ref: '#/components/schemas/authorizationsPostResponse' + authorizationsServerError: + description: An error occurred processing the authorizations request + content: + application/json: + schema: + $ref: '#/components/schemas/errorAuthorizationsResponse' + parameters: + transferId: + name: transferId + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + description: >- + Identifier of the transfer to continue as returned in the response to a + `POST /transfers` request. + bulkTransferId: + name: bulkTransferId + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + description: >- + Identifier of the bulk transfer to continue as returned in the response + to a `POST /bulkTransfers` request. + bulkQuoteId: + name: bulkQuoteId + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + description: >- + Identifier of the bulk transfer to continue as returned in the response + to a `POST /bulkTransfers` request. + requestToPayTransactionId: + name: requestToPayTransactionId + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + description: >- + Identifier of the merchant request to pay transfer to continue as + returned in the response to a `POST /requestToPayTransfer` request. + Type: + name: Type + in: path + required: true + schema: + type: string + description: 'The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`.' + ID: + name: ID + in: path + required: true + schema: + type: string + description: The identifier value. + SubId: + name: SubId + in: path + required: true + schema: + type: string + description: >- + A sub-identifier of the party identifier, or a sub-type of the party + identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json new file mode 100644 index 000000000..f0060c75d --- /dev/null +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json @@ -0,0 +1,22 @@ +[ + { + "id": "party.personalInfo.dateOfBirth", + "pattern": "^(19)\\d\\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|2[0-8])$" + }, + { + "id": "party.name", + "pattern": "Vijay Kumar Guthi" + }, + { + "id": "party.personalInfo.complexName.firstName", + "pattern": "Vijay" + }, + { + "id": "party.personalInfo.complexName.lastName", + "pattern": "Kumar" + }, + { + "id": "party.personalInfo.complexName.middleName", + "pattern": "Guthi" + } +] diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json new file mode 100644 index 000000000..1ad829f38 --- /dev/null +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json @@ -0,0 +1,21 @@ +{ + "/parties/{Type}/{ID}": { + "get": { + "response": { + "bodyOverride": { + "party": { + "partyIdInfo": { + "partyIdType": "{$request.params.Type}", + "partyIdentifier": "{$request.params.ID}", + "fspId": "ttk", + "partySubIdOrType": null, + "extensionList": null + }, + "accounts": null, + "merchantClassificationCode": null + } + } + } + } + } +} \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/api_spec.yaml b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/api_spec.yaml new file mode 100644 index 000000000..b214065b3 --- /dev/null +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/api_spec.yaml @@ -0,0 +1,1087 @@ +openapi: 3.0.1 +info: + title: Mojaloop SDK Inbound Scheme Adapter API + description: Mojaloop SDK Inbound Scheme Adapter API - To be implemented by DFSP backend + license: + name: Open API for FSP Interoperability (FSPIOP) + url: http://www.majaloop.io + version: 1.0.0 + +paths: + /: + get: + summary: Health check endpoint. + operationId: healthCheck + responses: + 200: + description: Returns empty body if the service is running. + /participants/{idType}/{idValue}: + get: + summary: Asks for the FSPID of the scheme participant that can handle transfers for the specified identifier type and value + tags: + - Participants + operationId: ParticipantsGetByTypeAndID + parameters: + - name: idType + in: path + required: true + schema: + $ref: '#/components/schemas/idType' + - name: idValue + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + responses: + 200: + description: Response containing details of the requested party + content: + application/json: + schema: + $ref: '#/components/schemas/participantsResponse' + 404: + description: The party specified by the provided identifier type and value is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /participants/{idType}/{idValue}/{subIdValue}: + get: + summary: Asks for the FSPID of the scheme participant that can handle transfers for the specified identifier type, value and subId value + tags: + - Participants + operationId: ParticipantsGetByTypeIDAndSubId + parameters: + - name: idType + in: path + required: true + schema: + $ref: '#/components/schemas/idType' + - name: idValue + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + - name: subIdValue + in: path + required: true + schema: + $ref: '#/components/schemas/subIdValue' + responses: + 200: + description: Response containing details of the requested party + content: + application/json: + schema: + $ref: '#/components/schemas/participantsResponse' + 404: + description: The party specified by the provided identifier type and value/subId is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /parties/{idType}/{idValue}: + get: + summary: Requests information relating to a transfer party identified by the specified identifier type and value + tags: + - Parties + operationId: PartiesGetByTypeAndID + parameters: + - name: idType + in: path + required: true + schema: + $ref: '#/components/schemas/idType' + - name: idValue + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + responses: + 200: + description: Response containing details of the requested party + content: + application/json: + schema: + $ref: '#/components/schemas/transferParty' + 404: + description: The party specified by the provided identifier type and value is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /parties/{idType}/{idValue}/{subIdValue}: + get: + summary: Requests information relating to a transfer party identified by the specified identifier type, value and subId value + tags: + - Parties + operationId: PartiesGetByTypeIdAndSubId + parameters: + - name: idType + in: path + required: true + schema: + $ref: '#/components/schemas/idType' + - name: idValue + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + - name: subIdValue + in: path + required: true + schema: + $ref: '#/components/schemas/subIdValue' + responses: + 200: + description: Response containing details of the requested party + content: + application/json: + schema: + $ref: '#/components/schemas/transferParty' + 404: + description: The party specified by the provided identifier type and value is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /quoterequests: + post: + summary: Requests a quote for the specified transfer + tags: + - Quotes + operationId: QuoteRequest + requestBody: + description: Request for a transfer quotation + content: + application/json: + schema: + $ref: '#/components/schemas/quoteRequest' + responses: + 200: + description: A response to the transfer quotation request + content: + application/json: + schema: + $ref: '#/components/schemas/quoteResponse' + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /transactionrequests: + post: + summary: transaction request that supports pull based transfers + tags: + - TransactionRequest + operationId: TransactionRequest + requestBody: + description: Request for Transaction Request + content: + application/json: + schema: + $ref: '#/components/schemas/transactionRequest' + responses: + 200: + description: A response to the transfer transaction request + content: + application/json: + schema: + $ref: '#/components/schemas/transactionRequestResponse' + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /transfers: + post: + summary: Transfers funds from an external account to an internal account + tags: + - Transfers + operationId: TransfersPost + requestBody: + description: An incoming transfer request + content: + application/json: + schema: + $ref: '#/components/schemas/transferRequest' + responses: + 200: + description: The transfer was accepted + content: + application/json: + schema: + $ref: '#/components/schemas/transferResponse' + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /transfers/{transferId}: + put: + summary: Receive notification for a specific transfer + description: The HTTP request `PUT /transfers/{transferId}` is used to receive notification for transfer being fulfiled when the FSP is a Payee + parameters: + - name: transferId + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + tags: + - Transfers + operationId: TransfersPut + requestBody: + description: An incoming notification for fulfiled transfer + content: + application/json: + schema: + $ref: '#/components/schemas/fulfilNotification' + responses: + 200: + description: The notification was accepted + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + + /otp/{requestToPayId}: + get: + summary: Requests OTP + tags: + - OTP + operationId: OtpGet + parameters: + - name: requestToPayId + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + responses: + 200: + description: Response containing details of the OTP + content: + application/json: + schema: + $ref: '#/components/schemas/otpDetails' + 404: + description: The party specified by the provided identifier type and value is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /bulkQuotes: + post: + summary: Requests a bulk quote + tags: + - BulkQuotes + operationId: BulkQuotesPost + requestBody: + description: Incoming request for a bulk quotation + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteRequest' + responses: + 200: + description: A response to the bulk quote request + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteResponse' + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /bulkQuotes/{idValue}: + get: + summary: Requests information relating to a bulk quote identified by the specified identifier value + tags: + - BulkQuotes + operationId: BulkQuotesGet + parameters: + - name: idValue + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + responses: + 200: + description: Response containing details of the requested bulk quote + content: + application/json: + schema: + $ref: '#/components/schemas/bulkQuoteResponse' + 404: + description: The bulk quote specified by the provided identifier value is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /bulkTransfers: + post: + summary: Execute bulk transfer of funds from an external account to internal accounts + tags: + - BulkTransfers + operationId: BulkTransfersPost + requestBody: + description: An incoming bulk transfer request + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferRequest' + responses: + 200: + description: The bulk transfer was accepted + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferResponse' + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + + /bulkTransfers/{idValue}: + get: + summary: Requests information relating to a bulk transfer identified by the specified identifier value + tags: + - BulkTransfers + operationId: BulkTransfersGet + parameters: + - name: idValue + in: path + required: true + schema: + $ref: '#/components/schemas/idValue' + responses: + 200: + description: Response containing details of the requested bulk transfer + content: + application/json: + schema: + $ref: '#/components/schemas/bulkTransferResponse' + 404: + description: The bulk transfer specified by the provided identifier value is not known to the server + 400: + description: Malformed or missing required headers or parameters + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + 500: + description: An error occured processing the request + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse' + +components: + schemas: + quoteRequest: + type: object + description: A request for a quote for transfer from the DFSP backend + required: + - quoteId + - transactionId + - to + - from + - amountType + - amount + - currency + - transactionType + - initiator + - initiatorType + properties: + quoteId: + $ref: '#/components/schemas/quoteId' + transactionId: + $ref: '#/components/schemas/transactionId' + to: + $ref: '#/components/schemas/transferParty' + from: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/amountType' + amount: + $ref: '#/components/schemas/money' + currency: + $ref: '#/components/schemas/currency' + feesAmount: + $ref: '#/components/schemas/money' + feesCurrency: + $ref: '#/components/schemas/currency' + transactionType: + $ref: '#/components/schemas/transactionType' + initiator: + $ref: '#/components/schemas/initiator' + initiatorType: + $ref: '#/components/schemas/initiatorType' + geoCode: + $ref: '#/components/schemas/geoCode' + note: + type: string + minLength: 1 + maxLength: 128 + description: An optional note associated with the requested transfer + expiration: + $ref: '#/components/schemas/timestamp' + + transactionRequest: + type: object + description: A request for a pull based transfer + required: + - transactionRequestId + - to + - from + - amount + - currency + - transactionType + - initiator + - initiatorType + properties: + transactionRequestId: + $ref: '#/components/schemas/transactionRequestId' + to: + $ref: '#/components/schemas/transferParty' + from: + $ref: '#/components/schemas/transferParty' + amount: + $ref: '#/components/schemas/money' + currency: + $ref: '#/components/schemas/currency' + transactionType: + $ref: '#/components/schemas/transactionType' + initiator: + $ref: '#/components/schemas/initiator' + initiatorType: + $ref: '#/components/schemas/initiatorType' + geoCode: + $ref: '#/components/schemas/geoCode' + note: + type: string + minLength: 1 + maxLength: 128 + description: An optional note associated with the requested transfer + expiration: + $ref: '#/components/schemas/timestamp' + + timestamp: + type: string + description: An ISO-8601 formatted timestamp + pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$ + + dateOfBirth: + type: string + description: Date of birth in the form YYYY-MM-DD + pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ + + initiator: + type: string + enum: + - PAYER + - PAYEE + + initiatorType: + type: string + enum: + - CONSUMER + - AGENT + - BUSINESS + - DEVICE + + quoteResponse: + type: object + description: A response to a request for a quote + required: + - quoteId + - transactionId + - transferAmount + - transferAmountCurrency + properties: + quoteId: + $ref: '#/components/schemas/quoteId' + transactionId: + $ref: '#/components/schemas/transactionId' + transferAmount: + $ref: '#/components/schemas/money' + transferAmountCurrency: + $ref: '#/components/schemas/currency' + payeeReceiveAmount: + $ref: '#/components/schemas/money' + payeeReceiveAmountCurrency: + $ref: '#/components/schemas/currency' + payeeFspFeeAmount: + $ref: '#/components/schemas/money' + payeeFspFeeAmountCurrency: + $ref: '#/components/schemas/currency' + payeeFspCommissionAmount: + $ref: '#/components/schemas/money' + payeeFspCommissionAmountCurrency: + $ref: '#/components/schemas/currency' + expiration: + $ref: '#/components/schemas/timestamp' + geoCode: + $ref: '#/components/schemas/geoCode' + extensionList: + $ref: '#/components/schemas/extensionList' + + transactionRequestResponse: + type: object + description: A response to a request for a quote + required: + - transactionId + - transactionRequestState + properties: + transactionId: + $ref: '#/components/schemas/transactionId' + transferAmount: + $ref: '#/components/schemas/transactionRequestState' + + participantsResponse: + type: object + properties: + fspId: + $ref: '#/components/schemas/fspId' + + fspId: + type: string + minLength: 1 + maxLength: 32 + + payerType: + type: string + enum: + - CONSUMER + - AGENT + - BUSINESS + - DEVICE + + amountType: + type: string + enum: + - SEND + - RECEIVE + + transactionType: + type: string + enum: + - TRANSFER + - DEPOSIT + - PAYMENT + + transactionRequestState: + type: string + enum: + - RECEIVED + - PENDING + - ACCEPTED + - REJECTED + + transferRequest: + type: object + required: + - transferId + - currency + - amount + properties: + transferId: + $ref: '#/components/schemas/transferId' + quote: + $ref: '#/components/schemas/quoteResponse' + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/amountType' + currency: + $ref: '#/components/schemas/currency' + amount: + $ref: '#/components/schemas/money' + transactionType: + $ref: '#/components/schemas/transactionType' + note: + maxLength: 128 + type: string + + otpDetails: + type: object + required: + - otpValue + properties: + otpValue: + type: string + description: OTP value + + idType: + type: string + enum: + - MSISDN + - ACCOUNT_NO + - EMAIL + - PERSONAL_ID + - BUSINESS + - DEVICE + - ACCOUNT_ID + - IBAN + - ALIAS + + idValue: + type: string + minLength: 1 + maxLength: 128 + + subIdValue: + type: string + minLength: 1 + maxLength: 128 + + money: + pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$ + type: string + + transferResponse: + type: object + required: + - homeTransactionId + properties: + homeTransactionId: + type: string + description: Transaction ID from the DFSP backend, used to reconcile transactions between the switch and DFSP backend systems + + currency: + maxLength: 3 + minLength: 3 + type: string + + transferId: + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + type: string + description: A Mojaloop API transfer identifier (UUID) + + quoteId: + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + type: string + description: A Mojaloop API quote identifier (UUID) + + transactionRequestId: + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + type: string + description: A Mojaloop API transaction request identifier (UUID) + + transactionId: + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + type: string + description: ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote + + transferParty: + type: object + required: + - idType + - idValue + properties: + type: + $ref: '#/components/schemas/payerType' + idType: + $ref: '#/components/schemas/idType' + idValue: + type: string + description: The identifier string used to identify the sender + subIdValue: + type: string + description: The sub identifier string used to identify the sender + displayName: + type: string + description: Display name of the sender if known + firstName: + type: string + description: Party first name + middleName: + type: string + description: Party moddle name + lastName: + type: string + description: Party last name + dateOfBirth: + $ref: '#/components/schemas/dateOfBirth' + merchantClassificationCode: + type: string + description: Up to 4 digits specifying the senders merchant classification, if known and applicable + + bulkQuoteRequest: + type: object + description: A request for a bulk quote + required: + - bulkQuoteId + - from + - individualQuotes + properties: + bulkQuoteId: + $ref: '#/components/schemas/bulkQuoteId' + from: + $ref: '#/components/schemas/transferParty' + geoCode: + $ref: '#/components/schemas/geoCode' + expiration: + $ref: '#/components/schemas/timestamp' + individualQuotes: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/IndividualQuote' + + bulkQuoteResponse: + type: object + description: A response to a request for a bulk quote + required: + - bulkQuoteId + - individualQuoteResults + properties: + bulkQuoteId: + $ref: '#/components/schemas/bulkQuoteId' + expiration: + $ref: '#/components/schemas/timestamp' + individualQuoteResults: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/IndividualQuoteResult' + description: Fees for each individual transaction, if any of them are charged per + transaction. + + IndividualQuote: + type: object + description: Data model for individual quote in a bulk quote request + required: + - quoteId + - transactionId + - to + - amountType + - amount + - currency + - transactionType + - initiator + - initiatorType + properties: + quoteId: + $ref: '#/components/schemas/quoteId' + transactionId: + $ref: '#/components/schemas/transactionId' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/amountType' + amount: + $ref: '#/components/schemas/money' + currency: + $ref: '#/components/schemas/currency' + feesAmount: + $ref: '#/components/schemas/money' + feesCurrency: + $ref: '#/components/schemas/currency' + transactionType: + $ref: '#/components/schemas/transactionType' + initiator: + $ref: '#/components/schemas/initiator' + initiatorType: + $ref: '#/components/schemas/initiatorType' + note: + type: string + minLength: 1 + maxLength: 128 + description: An optional note associated with the quote + + IndividualQuoteResult: + type: object + description: Data model for individual quote in a bulk quote response + properties: + quoteId: + $ref: '#/components/schemas/quoteId' + transferAmount: + $ref: '#/components/schemas/money' + transferAmountCurrency: + $ref: '#/components/schemas/currency' + payeeReceiveAmount: + $ref: '#/components/schemas/money' + payeeReceiveAmountCurrency: + $ref: '#/components/schemas/currency' + payeeFspFeeAmount: + $ref: '#/components/schemas/money' + payeeFspFeeAmountCurrency: + $ref: '#/components/schemas/currency' + payeeFspCommissionAmount: + $ref: '#/components/schemas/money' + payeeFspCommissionAmountCurrency: + $ref: '#/components/schemas/currency' + + bulkQuoteId: + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + type: string + description: A Mojaloop API bulk quote identifier (UUID) + + bulkTransferRequest: + type: object + required: + - bulkTransferId + - individualTransfers + properties: + bulkTransferId: + $ref: '#/components/schemas/bulkTransferId' + bulkQuote: + $ref: '#/components/schemas/bulkQuoteResponse' + from: + $ref: '#/components/schemas/transferParty' + individualTransfers: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/IndividualTransfer' + + IndividualTransfer: + type: object + description: Data model for individual transfer in a bulk transfer request + required: + - transferId + - amount + - currency + properties: + transferId: + $ref: '#/components/schemas/transferId' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/amountType' + amount: + $ref: '#/components/schemas/money' + currency: + $ref: '#/components/schemas/currency' + feesAmount: + $ref: '#/components/schemas/money' + feesCurrency: + $ref: '#/components/schemas/currency' + transactionType: + $ref: '#/components/schemas/transactionType' + initiator: + $ref: '#/components/schemas/initiator' + initiatorType: + $ref: '#/components/schemas/initiatorType' + note: + type: string + minLength: 1 + maxLength: 128 + description: An optional note associated with the quote + + IndividualTransferResult: + type: object + description: Data model for individual transfer in a bulk transfer response + required: + - transferId + properties: + transferId: + $ref: '#/components/schemas/transferId' + extensionList: + $ref: '#/components/schemas/extensionList' + + bulkTransferResponse: + type: object + required: + - homeTransactionId + properties: + bulkTransferId: + $ref: '#/components/schemas/bulkTransferId' + homeTransactionId: + type: string + description: Transaction ID from the DFSP backend, used to reconcile transactions between the switch and DFSP backend systems + individualTransferResults: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/IndividualTransferResult' + + bulkTransferId: + pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + type: string + description: A Mojaloop API transfer identifier (UUID) + + geoCode: + type: object + description: Indicates the geographic location from where the transaction was initiated. + properties: + latitude: + $ref: '#/components/schemas/latitude' + longitude: + $ref: '#/components/schemas/longitude' + required: + - latitude + - longitude + + latitude: + type: string + pattern: ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$ + description: The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. + + longitude: + type: string + pattern: ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$ + description: The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. + + errorResponse: + type: object + properties: + statusCode: + type: string + description: Error code as string + message: + type: string + description: Error message text + + extensionList: + type: array + items: + $ref: '#/components/schemas/extensionItem' + minItems: 0 + maxItems: 16 + + extensionItem: + type: object + properties: + key: + type: string + minLength: 1 + maxLength: 32 + value: + type: string + minLength: 1 + maxLength: 128 + + transferState: + type: string + enum: + - RECEIVED + - RESERVED + - COMMITTED + - ABORTED + description: > + Below are the allowed values for the enumeration + - RECEIVED DFSP has received the transfer. + - RESERVED DFSP has reserved the transfer. + - COMMITTED DFSP has successfully performed the transfer. + - ABORTED DFSP has aborted the transfer due a rejection or failure to perform the transfer. + + fulfilNotification: + title: TransfersIDPatchResponse + type: object + description: PUT /transfers/{transferId} object + properties: + completedTimestamp: + $ref: '#/components/schemas/timestamp' + transferState: + $ref: '#/components/schemas/transferState' + extensionList: + $ref: '#/components/schemas/extensionList' + required: + - completedTimestamp + - transferState + diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/mockRef.json b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/mockRef.json new file mode 100644 index 000000000..a3c81ce8c --- /dev/null +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/mockRef.json @@ -0,0 +1,75 @@ +[ + { + "id": "firstName", + "pattern": "John|David|Michael|Chris|Mike|Mark|Paul|Daniel|James|Maria" + }, + { + "id": "middleName", + "pattern": "G|P|N|S" + }, + { + "id": "lastName", + "pattern": "Smith|Jones|Johnson|Lee|Brown|Williams|Rodriguez|Garcia|Gonzalez|Lopez" + }, + { + "id": "dateOfBirth", + "pattern": "^(19)\\d\\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|2[0-8])$" + }, + { + "id": "transferState", + "pattern": "COMMITTED|RESERVED|ABORTED|RECEIVED" + }, + { + "id": "fulfilment", + "pattern": "[A-Fa-f0-9]{64}" + }, + { + "id": "condition", + "pattern": "[A-Fa-f0-9]{64}" + }, + { + "id": "ilpPacket", + "pattern": "[A-Fa-f0-9]{256}" + }, + { + "id": "transferAmount.currency", + "pattern": "USD" + }, + { + "id": "transferAmount.amount", + "pattern": "123" + }, + { + "id": "payeeReceiveAmountCurrency", + "pattern": "USD" + }, + { + "id": "payeeReceiveAmount", + "pattern": "123" + }, + { + "id": "payeeFspFeeAmountCurrency", + "pattern": "USD" + }, + { + "id": "payeeFspFeeAmount", + "pattern": "2" + }, + { + "id": "payeeFspCommissionAmountCurrency", + "pattern": "USD" + }, + { + "id": "payeeFspCommissionAmount", + "pattern": "3" + }, + + { + "id": "errorInformation.errorCode", + "pattern": "600[1-9]" + }, + { + "id": "errorInformation.errorDescription", + "pattern": "This is a mock error description" + } +] \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/response_map.json b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/response_map.json new file mode 100644 index 000000000..4a22ca3ca --- /dev/null +++ b/docker/ml-testing-toolkit/spec_files/api_definitions/mojaloop_simulator_sim_1.4/response_map.json @@ -0,0 +1,55 @@ +{ + "/parties/{idType}/{idValue}": { + "get": { + "response": { + "bodyOverride": { + "idType": "{$request.params.idType}", + "idValue": "{$request.params.idValue}", + "merchantClassificationCode": null + } + } + } + }, + "/quoterequests": { + "post": { + "response": { + "bodyOverride": { + "quoteId": "{$request.body.quoteId}", + "transactionId": "{$request.body.transactionId}", + "transferAmount": "{$request.body.amount}", + "transferAmountCurrency": "{$request.body.currency}", + "expiration": "{$request.body.expiration}", + "geoCode": null, + "extensionList": null + } + } + } + }, + "/transfers": { + "post": { + "response": { + "bodyOverride": { + "homeTransactionId": "{$request.body.transferId}" + } + } + } + }, + "/bulkQuotes": { + "post": { + "response": { + "bodyOverride": { + "bulkQuoteId": "{$request.body.bulkQuoteId}" + } + } + } + }, + "/bulkTransfers": { + "post": { + "response": { + "bodyOverride": { + "bulkTransferId": "{$request.body.bulkTransferId}" + } + } + } + } +} \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml b/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml deleted file mode 100644 index 3c55eaff2..000000000 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml +++ /dev/null @@ -1,983 +0,0 @@ -openapi: 3.0.1 -info: - title: MOJALOOP Central Settlements - description: Mojaloop API for Settlements. - version: 1.1.0 -servers: -- url: /v1 -paths: - /health: - get: - tags: - - getHealth - summary: getHealth - description: Gets the health of the service and sub-services (i.e. database). - operationId: getHealth - responses: - 200: - description: A valid and health service. - content: {} - 502: - description: API is live, but error connecting to required sub-service. - content: {} - deprecated: false - /settlementWindows/{id}: - get: - tags: - - getSettlementWindowById - summary: getSettlementWindowById - description: Returns a Settlement Window by id. - operationId: getSettlementWindowById - parameters: - - name: id - in: path - description: | - A valid settlement window id to be supplied in the query. - required: true - schema: - type: integer - responses: - 200: - description: A settlement window's data returned. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementWindow' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - post: - tags: - - closeSettlementWindow - summary: closeSettlementWindow - description: If the settlementWindow is open, it can be closed and a new window - is created. If it is already closed, return an error message. Returns the - new settlement window. - operationId: closeSettlementWindow - parameters: - - name: id - in: path - required: true - schema: - type: integer - requestBody: - description: A JSON object containing settlement window closure info. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementWindowClosurePayload' - required: true - responses: - 200: - description: Settlement window closed and new window opened. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementWindow' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - x-codegen-request-body-name: payload - /settlementWindows: - get: - tags: - - getSettlementWindowsByParams - summary: getSettlementWindowsByParams - description: Returns Settlement Windows as per parameter(s). - operationId: getSettlementWindowsByParams - parameters: - - name: participantId - in: query - description: | - A valid participant Id to filter on. - schema: - type: integer - - name: state - in: query - description: | - A settlement window state to filter on. - schema: - type: string - enum: - - OPEN - - CLOSED - - PENDING_SETTLEMENT - - SETTLED - - ABORTED - - name: fromDateTime - in: query - description: | - The start date for query (relates to central-ledger.settlementWindow.createdDate). Can be used together with `toDateTime'. eg 2017-07-20T17:32:28Z - schema: - type: string - format: date-time - - name: toDateTime - in: query - description: | - The end date for query (relates to central-ledger.settlementWindow.createdDate). Can be used together with `fromDateTime'. eg 2017-07-21T17:32:28Z - schema: - type: string - format: date-time - responses: - 200: - description: Settlement window(s) returned by the filtering parameters. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementWindows' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - /settlements: - get: - tags: - - getSettlementsByParams - summary: getSettlementsByParams - description: Returns Settlements as per parameter(s). - operationId: getSettlementsByParams - parameters: - - name: currency - in: query - description: | - A valid currency to filter on. - schema: - type: string - - name: participantId - in: query - description: | - A valid participant Id to filter on. - schema: - type: integer - - name: settlementWindowId - in: query - description: | - A valid Settlement Window Id to filter on. - schema: - type: number - - name: accountId - in: query - description: | - A valid Account Id to filter on. - schema: - type: number - - name: state - in: query - description: "A settlement state to filter on. \n" - schema: - type: string - enum: - - PENDING_SETTLEMENT - - PS_TRANSFERS_RECORDED - - PS_TRANSFERS_RESERVED - - PS_TRANSFERS_COMMITTED - - SETTLING - - SETTLED - - ABORTED - - name: fromDateTime - in: query - description: | - The start date for query (relates to central-ledger.settlement.createdDate). Can be used together with `toDateTime'. eg 2017-07-20T17:32:28Z - schema: - type: string - format: date-time - - name: toDateTime - in: query - description: | - The end date for query (relates to central-ledger.settlement.createdDate). Can be used together with `fromDateTime'. eg 2017-07-21T17:32:28Z - schema: - type: string - format: date-time - - name: fromSettlementWindowDateTime - in: query - description: | - The start date for query (relates to central-ledger.settlementWindow.createdDate). Can be used together with `toDateTime'. eg 2017-07-20T17:32:28Z - schema: - type: string - format: date-time - - name: toSettlementWindowDateTime - in: query - description: | - The end date for query (relates to central-ledger.settlementWindow.createdDate). Can be used together with `fromDateTime'. eg 2017-07-21T17:32:28Z - schema: - type: string - format: date-time - responses: - 200: - description: Settlement window(s) returned by the filtering parameters. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlements' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - post: - tags: - - createSettlement - summary: createSettlement - description: Trigger the creation of a settlement, that does the calculation - of the net settlement position per participant and marks all transfers in - the affected windows as PENDING_SETTLEMENT. Returned dataset is the net settlement - report for the settlementWindow - operationId: createSettlement - requestBody: - description: A JSON object containing settlement windows to be included. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementEventPayload' - required: true - responses: - 200: - description: Created settlement with all windows and accounts. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - x-codegen-request-body-name: payload - /settlements/{id}: - get: - tags: - - getSettlementById - summary: getSettlementById - description: Returns Settlement(s) as per parameters/filter criteria. - operationId: getSettlementById - parameters: - - name: id - in: path - description: | - A valid Settlement Id. - required: true - schema: - type: integer - responses: - 200: - description: Settlement successfully returned by the filtering/Query parameters. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - put: - tags: - - updateSettlementById - summary: updateSettlementById - description: Acknowledgement of settlement by updating with Settlement Id. - operationId: updateSettlementById - parameters: - - name: id - in: path - description: A valid Settlement Id. - required: true - schema: - type: integer - requestBody: - description: A JSON object containing settlement update info. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementUpdateBySettlementIdPayload' - required: true - responses: - 200: - description: Settlements updated. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - x-codegen-request-body-name: payload - /settlements/{settlementId}/participants/{participantId}: - get: - tags: - - getSettlementBySettlementParticipant - summary: getSettlementBySettlementParticipant - description: Returns Settlement(s) as per filter criteria. - operationId: getSettlementBySettlementParticipant - parameters: - - name: settlementId - in: path - description: | - A valid Settlement Id. - required: true - schema: - type: integer - - name: participantId - in: path - description: | - A valid Participant Id. - required: true - schema: - type: integer - responses: - 200: - description: Settlement, settlement windows and settlement accounts returned - by the filtering parameters. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - put: - tags: - - updateSettlementBySettlementParticipant - summary: updateSettlementBySettlementParticipant - description: Acknowledgement of settlement by updating with Settlements Id and - Participant Id. - operationId: updateSettlementBySettlementParticipant - parameters: - - name: settlementId - in: path - description: A valid Settlement Id. - required: true - schema: - type: integer - - name: participantId - in: path - description: A valid Participant Id. - required: true - schema: - type: integer - requestBody: - description: A JSON object containing settlement update info. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementUpdateBySettlementParticipantPayload' - required: true - responses: - 200: - description: Settlements updated. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - x-codegen-request-body-name: payload - /settlements/{settlementId}/participants/{participantId}/accounts/{accountId}: - get: - tags: - - getSettlementBySettlementParticipantAccount - summary: getSettlementBySettlementParticipantAccount - description: Returns Settlement(s) as per filter criteria. - operationId: getSettlementBySettlementParticipantAccount - parameters: - - name: settlementId - in: path - description: | - A valid Settlement Id. - required: true - schema: - type: integer - - name: participantId - in: path - description: | - A valid Participant Id. - required: true - schema: - type: integer - - name: accountId - in: path - description: "A valid Account Id. \n" - required: true - schema: - type: integer - responses: - 200: - description: Settlement, settlement windows and settlement accounts returned - by the filtering parameters. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - put: - tags: - - updateSettlementBySettlementParticipantAccount - summary: updateSettlementBySettlementParticipantAccount - description: Acknowledgement of settlement by updating the reason and state - by Settlements Id, Participant Id and accounts Id. - operationId: updateSettlementBySettlementParticipantAccount - parameters: - - name: settlementId - in: path - description: A valid Settlement Id. - required: true - schema: - type: integer - - name: participantId - in: path - description: A valid Participant Id. - required: true - schema: - type: integer - - name: accountId - in: path - description: A valid Account Id. - required: true - schema: - type: integer - requestBody: - description: A JSON object containing settlement update info. - content: - application/json: - schema: - $ref: '#/components/schemas/SettlementUpdateBySettlementParticipantAccount' - required: true - responses: - 200: - description: Settlements updated. - content: - application/json: - schema: - $ref: '#/components/schemas/Settlement' - 400: - description: Bad request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 401: - description: Authorisation information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 404: - description: No data found. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - 415: - description: Unsupported Media Type. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - deprecated: false - x-codegen-request-body-name: payload -components: - schemas: - Account: - type: object - properties: - id: - type: string - description: Account Id - reason: - type: string - description: TBD - state: - type: string - example: PENDING_SETTLEMENT - netSettlementAmount: - $ref: '#/components/schemas/netSettlementAmount' - SettlementUpdateBySettlementIdPayload: - type: object - properties: - state: - type: string - enum: - - ABORTED - - INVALID - reason: - type: string - externalReference: - type: string - participants: - type: array - items: - $ref: '#/components/schemas/SettlementUpdateBySettlementIDOuterPayload' - SettlementUpdateBySettlementIDOuterPayload: - type: object - properties: - id: - type: integer - description: Participant Id - accounts: - type: array - items: - $ref: '#/components/schemas/SettlementUpdateBySettlementIdInnerPayload' - SettlementUpdateBySettlementIdInnerPayload: - type: object - properties: - id: - type: integer - description: Participant Currency Id - reason: - type: string - example: reason - state: - type: string - example: SETTLED - enum: - - PENDING_SETTLEMENT - - PS_TRANSFERS_RECORDED - - PS_TRANSFERS_RESERVED - - PS_TRANSFERS_COMMITTED - - SETTLED - externalReference: - type: string - example: external-reference-abc123 - SettlementUpdateBySettlementParticipantPayload: - type: object - properties: - accounts: - type: array - items: - $ref: '#/components/schemas/SettlementUpdateBySettlementIdInnerPayload' - Accounts: - type: object - properties: - id: - type: integer - description: Participant Currency Id - reason: - type: string - description: TBD - state: - type: string - example: PENDING_SETTLEMENT - netSettlementAmount: - $ref: '#/components/schemas/netSettlementAmount' - SettlementWindowClosurePayload: - required: - - reason - - state - type: object - properties: - state: - type: string - example: CLOSED - enum: - - CLOSED - reason: - type: string - example: string - SettlementUpdateBySettlementParticipantAccount: - required: - - reason - - state - type: object - properties: - state: - type: string - example: SETTLED - enum: - - PENDING_SETTLEMENT - - PS_TRANSFERS_RECORDED - - PS_TRANSFERS_RESERVED - - PS_TRANSFERS_COMMITTED - - SETTLED - reason: - type: string - example: string - externalReference: - type: string - example: external-reference-abc123 - SettlementEventPayload: - required: - - reason - - settlementWindows - type: object - properties: - reason: - type: string - settlementWindows: - minItems: 1 - uniqueItems: true - type: array - items: - $ref: '#/components/schemas/SettlementWindowId' - SettlementWindowId: - required: - - id - type: object - properties: - id: - type: integer - SettlementWindow: - required: - - createdDate - - id - - state - type: object - properties: - id: - type: integer - reason: - type: string - state: - type: string - createdDate: - type: string - changedDate: - type: string - SettlementWindows: - type: array - items: - $ref: '#/components/schemas/SettlementWindow' - netSettlementAmount: - type: object - properties: - amount: - type: number - currency: - type: string - Participant: - type: object - properties: - id: - type: integer - accounts: - type: array - items: - $ref: '#/components/schemas/Accounts' - Settlements: - type: array - items: - $ref: '#/components/schemas/Settlement' - Settlement: - type: object - properties: - id: - type: integer - state: - type: string - settlementWindows: - type: array - items: - $ref: '#/components/schemas/SettlementWindows' - participants: - type: array - items: - $ref: '#/components/schemas/Participant' - Error: - required: - - errorInformation - type: object - properties: - errorInformation: - type: object - properties: - errorCode: - type: integer - errorDescription: - type: string - extensionList: - type: object - properties: - extension: - type: array - items: - $ref: '#/components/schemas/Extension' - Extension: - required: - - key - - value - type: object - properties: - key: - type: string - value: - type: string diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json b/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json deleted file mode 100644 index 9baecf5df..000000000 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "id": "changedDate", - "pattern": "^(19)\\d\\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|2[0-8])$" - }, - { - "id": "createdDate", - "pattern": "^(19)\\d\\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|2[0-8])$" - }, - { - "id": "state", - "pattern": "OPEN|CLOSED" - }, - { - "id": "settlementWindows.items.items.createdDate", - "pattern": "^(19)\\d\\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|2[0-8])$" - }, - { - "id": "settlementWindows.items.items.changedDate", - "pattern": "^(19)\\d\\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|2[0-8])$" - }, - { - "id": "settlementWindows.items.items.state", - "pattern": "OPEN|CLOSED" - }, - { - "id": "participants.items.accounts.items.state", - "pattern": "OPEN|CLOSED" - }, - { - "id": "participants.items.accounts.items.netSettlementAmount.amount", - "pattern": "123" - }, - { - "id": "participants.items.accounts.items.netSettlementAmount.currency", - "pattern": "USD" - } -] \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json b/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json deleted file mode 100644 index 017282b2e..000000000 --- a/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "/settlementWindows/{id}": { - "post": { - "response": { - "bodyOverride": { - "id": "{$request.params.id}", - "reason": "{$request.body.reason}" - } - } - } - }, - "/settlementWindows": { - "get": { - "response": {} - } - }, - "/settlements": { - "post": { - "response": { - "bodyOverride": { - } - } - } - }, - "/settlements/{id}": { - "get": { - "response": { - "bodyOverride": { - "id": "{$request.params.id}" - } - } - } - } -} \ No newline at end of file diff --git a/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html b/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html index 34bed92c7..e10fc0b1f 100644 --- a/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html +++ b/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html @@ -478,6 +478,12 @@
Runtime Inf {{#if runtimeInformation}} Total run duration: {{runtimeInformation.runDurationMs}} ms
Average response time: {{runtimeInformation.avgResponseTime}}
+ {{/if}} + {{#if extraRuntimeInformation}} + {{#each extraRuntimeInformation}} + {{key}}: {{value}}
+ {{/each}} + {{/if}} @@ -559,10 +565,14 @@
- {{#if (ifAllTestsPassedInRequest request)}} -
+ {{#if (ifSkippedRequest status)}} +
{{else}} -
+ {{#if (ifAllTestsPassedInRequest request)}} +
+ {{else}} +
+ {{/if}} {{/if}}