diff --git a/package-lock.json b/package-lock.json index 59e15941b..b865566ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,7 +80,7 @@ "http-server": "^13.0.1", "i18n-webpack-plugin": "^1.0.0", "istanbul": "^0.4.5", - "jest": "^27.1.0", + "jest": "^27.0.6", "js-beautify": "^1.5.10", "jsdom": "^15.0.0", "jsdom-global": "^3.0.2", @@ -2038,6 +2038,31 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@cypress/request": { "version": "2.88.6", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.6.tgz", @@ -2313,16 +2338,16 @@ } }, "node_modules/@jest/console": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz", - "integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", + "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.1.0", - "jest-util": "^27.1.0", + "jest-message-util": "^27.0.6", + "jest-util": "^27.0.6", "slash": "^3.0.0" }, "engines": { @@ -2403,35 +2428,35 @@ } }, "node_modules/@jest/core": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.1.0.tgz", - "integrity": "sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", + "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", "dev": true, "dependencies": { - "@jest/console": "^27.1.0", - "@jest/reporters": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/reporters": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.1.0", - "jest-config": "^27.1.0", - "jest-haste-map": "^27.1.0", - "jest-message-util": "^27.1.0", + "jest-changed-files": "^27.0.6", + "jest-config": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.1.0", - "jest-resolve-dependencies": "^27.1.0", - "jest-runner": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", - "jest-watcher": "^27.1.0", + "jest-resolve": "^27.0.6", + "jest-resolve-dependencies": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "jest-watcher": "^27.0.6", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -2638,62 +2663,62 @@ } }, "node_modules/@jest/environment": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz", - "integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", + "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", - "jest-mock": "^27.1.0" + "jest-mock": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz", - "integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", + "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.1.0", - "jest-mock": "^27.1.0", - "jest-util": "^27.1.0" + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz", - "integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", + "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", "dev": true, "dependencies": { - "@jest/environment": "^27.1.0", - "@jest/types": "^27.1.0", - "expect": "^27.1.0" + "@jest/environment": "^27.0.6", + "@jest/types": "^27.0.6", + "expect": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.1.0.tgz", - "integrity": "sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", + "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -2704,10 +2729,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.1.0", - "jest-resolve": "^27.1.0", - "jest-util": "^27.1.0", - "jest-worker": "^27.1.0", + "jest-haste-map": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -2852,13 +2877,13 @@ } }, "node_modules/@jest/test-result": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz", - "integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", + "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", "dev": true, "dependencies": { - "@jest/console": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/types": "^27.0.6", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -2867,36 +2892,36 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz", - "integrity": "sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", + "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.1.0", + "@jest/test-result": "^27.0.6", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", - "jest-runtime": "^27.1.0" + "jest-haste-map": "^27.0.6", + "jest-runtime": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz", - "integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", + "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", + "jest-haste-map": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-util": "^27.1.0", + "jest-util": "^27.0.6", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -3048,9 +3073,9 @@ } }, "node_modules/@jest/types": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", - "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -3245,6 +3270,25 @@ "node": ">=4" } }, + "node_modules/@napi-rs/triples": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", + "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@node-rs/helper": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", + "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@napi-rs/triples": "^1.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", @@ -3328,6 +3372,242 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@swc/core": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.84.tgz", + "integrity": "sha512-TEoYuMna8+G1zdtvU4qTVTuJ9AatGLK26WyigwHz56aFBRDiVOZSB506FbU7RIc56oRi33zhPtpxLSqQhLGtJQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@node-rs/helper": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-android-arm64": "^1.2.84", + "@swc/core-darwin-arm64": "^1.2.84", + "@swc/core-darwin-x64": "^1.2.84", + "@swc/core-freebsd-x64": "^1.2.84", + "@swc/core-linux-arm-gnueabihf": "^1.2.84", + "@swc/core-linux-arm64-gnu": "^1.2.84", + "@swc/core-linux-arm64-musl": "^1.2.84", + "@swc/core-linux-x64-gnu": "^1.2.84", + "@swc/core-linux-x64-musl": "^1.2.84", + "@swc/core-win32-arm64-msvc": "^1.2.84", + "@swc/core-win32-ia32-msvc": "^1.2.84", + "@swc/core-win32-x64-msvc": "^1.2.84" + } + }, + "node_modules/@swc/core-android-arm64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.84.tgz", + "integrity": "sha512-GmPFlDXRQmIIdJ5mR2O47ac6EkWPvo5aDFsNYSzu58ZLBO8pBGiK/EZyrCL/agPpYjr9l9ZEdEjPCFynaUxppA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.84.tgz", + "integrity": "sha512-Wr+L3vGTf1MMNgR8UYRZbclPYVIcNnYyh7dm6RrHNS30zsAyjsuDt6O5xcdI+j9+diciBaOqD33wOc22jDI0ZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.84.tgz", + "integrity": "sha512-1gBUEK0sDI+zYoGsNknYSCvD9rrgl89Kaq9IxY6Q55efNFRG5FkmlpHQW3URt0JLCzMEPAqn0KtteTOkZpL0aA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-freebsd-x64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.84.tgz", + "integrity": "sha512-BJdCyJy4hYDuw5wvneNKwONidlOZTd5+iUhic6pCKRTjAsVjzsAX5BvPBnSfR60iQ0Idp9J3fgefVxqgG8rcrw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.84.tgz", + "integrity": "sha512-ZQ1yqcXKoEVQ9Zs3DQ9LOv+fZkl+NbH3lXlJBMmlYf6Mw3L+u1JakU8OZO8UitYelLwzruoM7WsGdpvHSfv1KQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.84.tgz", + "integrity": "sha512-Gocc0Xf8oWVcjcGlWqHODmtKwETzGudpQUtA8XhpjYQCKIo+q6xXdZvP/sEiYm6cqAWOPjLsN0CoQasJL+huDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.84.tgz", + "integrity": "sha512-oFmGUdxfXiJCgclCiKqxNltNj+nIiA9vrf0TV5KAK9d1aUPlhAuVgxHW3uGi1eeNxh/ViY4QbURCK4xOvQuxXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.84.tgz", + "integrity": "sha512-AZWb/DCkHRN1T0a73tDIJrWGBq4tRgCDPsd25a2vtlwykfopFc9UttM5WRhnzrGF20KQN5RG6MosMrkCwGAnxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.84.tgz", + "integrity": "sha512-PydBMAmZcNtRCU+M6kUa4rHo3J80HjGl/Vo+IbEUOL8Ollhozwfuw4c9H7lwigoLwRbLa5dNYipGBGvIZLonkg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.84.tgz", + "integrity": "sha512-RkBqz9/ITnApxTNu3Q4iZEUp8uaqCUyJUL/OH7IBDLrU8q6yYY6/01s8/GsHJQ3AUa1KsR72kB66TO20p5Qe0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.84.tgz", + "integrity": "sha512-N/WPD8z/uaZGq19my9+i0nrW7JyW1oR9fAQFhNHamvDY8iQ66FnejTKMc6J8SEzxhMpT2gXykTOGBXFy0U95UA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.84.tgz", + "integrity": "sha512-EamduVSJSrDEMUhI94OZLrURrPFKRhEsYB7kVl3hruEYTNLjKNqONFIq3qw8yl8iNv8Y9P+FQaWh/UtUzna0cg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/@testing-library/cypress": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.1.tgz", @@ -3437,6 +3717,38 @@ "node": ">= 6" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -4967,13 +5279,13 @@ } }, "node_modules/babel-jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.1.0.tgz", - "integrity": "sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", + "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", "dev": true, "dependencies": { - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", "babel-preset-jest": "^27.0.6", @@ -7094,6 +7406,14 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "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, + "optional": true, + "peer": true + }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -9582,16 +9902,16 @@ } }, "node_modules/expect": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz", - "integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", + "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "ansi-styles": "^5.0.0", "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", "jest-regex-util": "^27.0.6" }, "engines": { @@ -12790,14 +13110,14 @@ "dev": true }, "node_modules/jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", - "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", + "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", "dev": true, "dependencies": { - "@jest/core": "^27.1.0", + "@jest/core": "^27.0.6", "import-local": "^3.0.2", - "jest-cli": "^27.1.0" + "jest-cli": "^27.0.6" }, "bin": { "jest": "bin/jest.js" @@ -12815,12 +13135,12 @@ } }, "node_modules/jest-changed-files": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.0.tgz", - "integrity": "sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", + "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -12947,27 +13267,27 @@ } }, "node_modules/jest-circus": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.1.0.tgz", - "integrity": "sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", + "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", "dev": true, "dependencies": { - "@jest/environment": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.1.0", + "expect": "^27.0.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.1.0", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "pretty-format": "^27.1.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -13050,21 +13370,21 @@ } }, "node_modules/jest-cli": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.1.0.tgz", - "integrity": "sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", + "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", "dev": true, "dependencies": { - "@jest/core": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/core": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-config": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "prompts": "^2.0.1", "yargs": "^16.0.3" }, @@ -13381,32 +13701,32 @@ } }, "node_modules/jest-config": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.1.0.tgz", - "integrity": "sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", + "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.1.0", - "@jest/types": "^27.1.0", - "babel-jest": "^27.1.0", + "@jest/test-sequencer": "^27.0.6", + "@jest/types": "^27.0.6", + "babel-jest": "^27.0.6", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.1.0", - "jest-environment-jsdom": "^27.1.0", - "jest-environment-node": "^27.1.0", + "jest-circus": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.1.0", + "jest-jasmine2": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.1.0", - "jest-runner": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-resolve": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "micromatch": "^4.0.4", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -13563,15 +13883,15 @@ } }, "node_modules/jest-diff": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz", - "integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -13654,16 +13974,16 @@ } }, "node_modules/jest-each": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz", - "integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", + "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "jest-get-type": "^27.0.6", - "jest-util": "^27.1.0", - "pretty-format": "^27.1.0" + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -13734,17 +14054,17 @@ } }, "node_modules/jest-environment-jsdom": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz", - "integrity": "sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", + "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", "dev": true, "dependencies": { - "@jest/environment": "^27.1.0", - "@jest/fake-timers": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", - "jest-mock": "^27.1.0", - "jest-util": "^27.1.0", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6", "jsdom": "^16.6.0" }, "engines": { @@ -14062,9 +14382,9 @@ } }, "node_modules/jest-environment-jsdom/node_modules/ws": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", - "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "dev": true, "engines": { "node": ">=8.3.0" @@ -14089,17 +14409,17 @@ "dev": true }, "node_modules/jest-environment-node": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.1.0.tgz", - "integrity": "sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", + "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", "dev": true, "dependencies": { - "@jest/environment": "^27.1.0", - "@jest/fake-timers": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", - "jest-mock": "^27.1.0", - "jest-util": "^27.1.0" + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -14115,12 +14435,12 @@ } }, "node_modules/jest-haste-map": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz", - "integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", + "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -14128,8 +14448,8 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.6", "jest-serializer": "^27.0.6", - "jest-util": "^27.1.0", - "jest-worker": "^27.1.0", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -14199,28 +14519,28 @@ } }, "node_modules/jest-jasmine2": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz", - "integrity": "sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", + "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", "dev": true, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.1.0", + "@jest/environment": "^27.0.6", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.1.0", + "expect": "^27.0.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.1.0", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "pretty-format": "^27.1.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", "throat": "^6.0.1" }, "engines": { @@ -14292,28 +14612,28 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz", - "integrity": "sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", + "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", "dev": true, "dependencies": { "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz", - "integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", + "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.1.0", + "jest-diff": "^27.0.6", "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -14384,18 +14704,18 @@ } }, "node_modules/jest-message-util": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz", - "integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", + "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.1.0", + "pretty-format": "^27.0.6", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -14535,12 +14855,12 @@ } }, "node_modules/jest-mock": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz", - "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", + "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/node": "*" }, "engines": { @@ -14574,19 +14894,18 @@ } }, "node_modules/jest-resolve": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz", - "integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", + "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "escalade": "^3.1.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "resolve": "^1.20.0", "slash": "^3.0.0" }, @@ -14595,14 +14914,14 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz", - "integrity": "sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", + "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.1.0" + "jest-snapshot": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -14682,31 +15001,31 @@ } }, "node_modules/jest-runner": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.1.0.tgz", - "integrity": "sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", + "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", "dev": true, "dependencies": { - "@jest/console": "^27.1.0", - "@jest/environment": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.1.0", - "jest-environment-node": "^27.1.0", - "jest-haste-map": "^27.1.0", - "jest-leak-detector": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-resolve": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-util": "^27.1.0", - "jest-worker": "^27.1.0", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-leak-detector": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -14779,35 +15098,34 @@ } }, "node_modules/jest-runtime": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz", - "integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", + "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", "dev": true, "dependencies": { - "@jest/console": "^27.1.0", - "@jest/environment": "^27.1.0", - "@jest/fake-timers": "^27.1.0", - "@jest/globals": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/globals": "^27.0.6", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-mock": "^27.1.0", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-resolve": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" @@ -14879,61 +15197,12 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/jest-runtime/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runtime/node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -14972,60 +15241,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15082,21 +15297,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/jest-runtime/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -15164,9 +15364,9 @@ } }, "node_modules/jest-snapshot": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz", - "integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", + "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", @@ -15175,23 +15375,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.1.0", + "expect": "^27.0.6", "graceful-fs": "^4.2.4", - "jest-diff": "^27.1.0", + "jest-diff": "^27.0.6", "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.1.0", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-resolve": "^27.1.0", - "jest-util": "^27.1.0", + "jest-haste-map": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", "natural-compare": "^1.4.0", - "pretty-format": "^27.1.0", + "pretty-format": "^27.0.6", "semver": "^7.3.2" }, "engines": { @@ -15296,12 +15496,12 @@ "dev": true }, "node_modules/jest-util": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz", - "integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -15377,17 +15577,17 @@ } }, "node_modules/jest-validate": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz", - "integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", + "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^27.0.6", "leven": "^3.1.0", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -15470,17 +15670,17 @@ } }, "node_modules/jest-watcher": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.1.0.tgz", - "integrity": "sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", + "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.1.0", + "jest-util": "^27.0.6", "string-length": "^4.0.1" }, "engines": { @@ -15552,9 +15752,9 @@ } }, "node_modules/jest-worker": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz", - "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", "dev": true, "dependencies": { "@types/node": "*", @@ -16816,6 +17016,14 @@ "node": ">=4" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -19694,12 +19902,12 @@ } }, "node_modules/pretty-format": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz", - "integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", "dev": true, "dependencies": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -23826,9 +24034,9 @@ } }, "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, "node_modules/to-arraybuffer": { @@ -23997,6 +24205,71 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ts-node": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", + "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "0.6.1", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tslib": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", @@ -26051,6 +26324,17 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } } }, "dependencies": { @@ -27427,6 +27711,25 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "optional": true, + "peer": true + }, + "@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, "@cypress/request": { "version": "2.88.6", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.6.tgz", @@ -27654,16 +27957,16 @@ "dev": true }, "@jest/console": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz", - "integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", + "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.1.0", - "jest-util": "^27.1.0", + "jest-message-util": "^27.0.6", + "jest-util": "^27.0.6", "slash": "^3.0.0" }, "dependencies": { @@ -27719,35 +28022,35 @@ } }, "@jest/core": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.1.0.tgz", - "integrity": "sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", + "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", "dev": true, "requires": { - "@jest/console": "^27.1.0", - "@jest/reporters": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/reporters": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.1.0", - "jest-config": "^27.1.0", - "jest-haste-map": "^27.1.0", - "jest-message-util": "^27.1.0", + "jest-changed-files": "^27.0.6", + "jest-config": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.1.0", - "jest-resolve-dependencies": "^27.1.0", - "jest-runner": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", - "jest-watcher": "^27.1.0", + "jest-resolve": "^27.0.6", + "jest-resolve-dependencies": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "jest-watcher": "^27.0.6", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -27888,53 +28191,53 @@ } }, "@jest/environment": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz", - "integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", + "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", "dev": true, "requires": { - "@jest/fake-timers": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", - "jest-mock": "^27.1.0" + "jest-mock": "^27.0.6" } }, "@jest/fake-timers": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz", - "integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", + "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.1.0", - "jest-mock": "^27.1.0", - "jest-util": "^27.1.0" + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" } }, "@jest/globals": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz", - "integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", + "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", "dev": true, "requires": { - "@jest/environment": "^27.1.0", - "@jest/types": "^27.1.0", - "expect": "^27.1.0" + "@jest/environment": "^27.0.6", + "@jest/types": "^27.0.6", + "expect": "^27.0.6" } }, "@jest/reporters": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.1.0.tgz", - "integrity": "sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", + "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -27945,10 +28248,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.1.0", - "jest-resolve": "^27.1.0", - "jest-util": "^27.1.0", - "jest-worker": "^27.1.0", + "jest-haste-map": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -28047,45 +28350,45 @@ } }, "@jest/test-result": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz", - "integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", + "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", "dev": true, "requires": { - "@jest/console": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/types": "^27.0.6", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz", - "integrity": "sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", + "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", "dev": true, "requires": { - "@jest/test-result": "^27.1.0", + "@jest/test-result": "^27.0.6", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", - "jest-runtime": "^27.1.0" + "jest-haste-map": "^27.0.6", + "jest-runtime": "^27.0.6" } }, "@jest/transform": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz", - "integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", + "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", + "jest-haste-map": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-util": "^27.1.0", + "jest-util": "^27.0.6", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -28194,9 +28497,9 @@ } }, "@jest/types": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", - "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -28346,6 +28649,25 @@ "glob-to-regexp": "^0.3.0" } }, + "@napi-rs/triples": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", + "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==", + "dev": true, + "optional": true, + "peer": true + }, + "@node-rs/helper": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", + "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@napi-rs/triples": "^1.0.3" + } + }, "@nodelib/fs.scandir": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", @@ -28419,6 +28741,125 @@ "@sinonjs/commons": "^1.7.0" } }, + "@swc/core": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.84.tgz", + "integrity": "sha512-TEoYuMna8+G1zdtvU4qTVTuJ9AatGLK26WyigwHz56aFBRDiVOZSB506FbU7RIc56oRi33zhPtpxLSqQhLGtJQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@node-rs/helper": "^1.0.0", + "@swc/core-android-arm64": "^1.2.84", + "@swc/core-darwin-arm64": "^1.2.84", + "@swc/core-darwin-x64": "^1.2.84", + "@swc/core-freebsd-x64": "^1.2.84", + "@swc/core-linux-arm-gnueabihf": "^1.2.84", + "@swc/core-linux-arm64-gnu": "^1.2.84", + "@swc/core-linux-arm64-musl": "^1.2.84", + "@swc/core-linux-x64-gnu": "^1.2.84", + "@swc/core-linux-x64-musl": "^1.2.84", + "@swc/core-win32-arm64-msvc": "^1.2.84", + "@swc/core-win32-ia32-msvc": "^1.2.84", + "@swc/core-win32-x64-msvc": "^1.2.84" + } + }, + "@swc/core-android-arm64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.84.tgz", + "integrity": "sha512-GmPFlDXRQmIIdJ5mR2O47ac6EkWPvo5aDFsNYSzu58ZLBO8pBGiK/EZyrCL/agPpYjr9l9ZEdEjPCFynaUxppA==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-darwin-arm64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.84.tgz", + "integrity": "sha512-Wr+L3vGTf1MMNgR8UYRZbclPYVIcNnYyh7dm6RrHNS30zsAyjsuDt6O5xcdI+j9+diciBaOqD33wOc22jDI0ZQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-darwin-x64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.84.tgz", + "integrity": "sha512-1gBUEK0sDI+zYoGsNknYSCvD9rrgl89Kaq9IxY6Q55efNFRG5FkmlpHQW3URt0JLCzMEPAqn0KtteTOkZpL0aA==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-freebsd-x64": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.84.tgz", + "integrity": "sha512-BJdCyJy4hYDuw5wvneNKwONidlOZTd5+iUhic6pCKRTjAsVjzsAX5BvPBnSfR60iQ0Idp9J3fgefVxqgG8rcrw==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.84.tgz", + "integrity": "sha512-ZQ1yqcXKoEVQ9Zs3DQ9LOv+fZkl+NbH3lXlJBMmlYf6Mw3L+u1JakU8OZO8UitYelLwzruoM7WsGdpvHSfv1KQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.84.tgz", + "integrity": "sha512-Gocc0Xf8oWVcjcGlWqHODmtKwETzGudpQUtA8XhpjYQCKIo+q6xXdZvP/sEiYm6cqAWOPjLsN0CoQasJL+huDg==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.84.tgz", + "integrity": "sha512-oFmGUdxfXiJCgclCiKqxNltNj+nIiA9vrf0TV5KAK9d1aUPlhAuVgxHW3uGi1eeNxh/ViY4QbURCK4xOvQuxXA==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.84.tgz", + "integrity": "sha512-AZWb/DCkHRN1T0a73tDIJrWGBq4tRgCDPsd25a2vtlwykfopFc9UttM5WRhnzrGF20KQN5RG6MosMrkCwGAnxQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.84.tgz", + "integrity": "sha512-PydBMAmZcNtRCU+M6kUa4rHo3J80HjGl/Vo+IbEUOL8Ollhozwfuw4c9H7lwigoLwRbLa5dNYipGBGvIZLonkg==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.84.tgz", + "integrity": "sha512-RkBqz9/ITnApxTNu3Q4iZEUp8uaqCUyJUL/OH7IBDLrU8q6yYY6/01s8/GsHJQ3AUa1KsR72kB66TO20p5Qe0Q==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.84.tgz", + "integrity": "sha512-N/WPD8z/uaZGq19my9+i0nrW7JyW1oR9fAQFhNHamvDY8iQ66FnejTKMc6J8SEzxhMpT2gXykTOGBXFy0U95UA==", + "dev": true, + "optional": true, + "peer": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.2.84", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.84.tgz", + "integrity": "sha512-EamduVSJSrDEMUhI94OZLrURrPFKRhEsYB7kVl3hruEYTNLjKNqONFIq3qw8yl8iNv8Y9P+FQaWh/UtUzna0cg==", + "dev": true, + "optional": true, + "peer": true + }, "@testing-library/cypress": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.1.tgz", @@ -28496,6 +28937,38 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true, + "optional": true, + "peer": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true, + "optional": true, + "peer": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true, + "optional": true, + "peer": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true, + "optional": true, + "peer": true + }, "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -29800,13 +30273,13 @@ } }, "babel-jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.1.0.tgz", - "integrity": "sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", + "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", "dev": true, "requires": { - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", "babel-preset-jest": "^27.0.6", @@ -31549,6 +32022,14 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "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, + "optional": true, + "peer": true + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -33590,16 +34071,16 @@ } }, "expect": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz", - "integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", + "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "ansi-styles": "^5.0.0", "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", "jest-regex-util": "^27.0.6" }, "dependencies": { @@ -36138,14 +36619,14 @@ } }, "jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", - "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", + "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", "dev": true, "requires": { - "@jest/core": "^27.1.0", + "@jest/core": "^27.0.6", "import-local": "^3.0.2", - "jest-cli": "^27.1.0" + "jest-cli": "^27.0.6" }, "dependencies": { "find-up": { @@ -36234,12 +36715,12 @@ } }, "jest-changed-files": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.0.tgz", - "integrity": "sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", + "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -36326,27 +36807,27 @@ } }, "jest-circus": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.1.0.tgz", - "integrity": "sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", + "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", "dev": true, "requires": { - "@jest/environment": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.1.0", + "expect": "^27.0.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.1.0", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "pretty-format": "^27.1.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -36404,21 +36885,21 @@ } }, "jest-cli": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.1.0.tgz", - "integrity": "sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", + "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", "dev": true, "requires": { - "@jest/core": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/core": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-config": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "prompts": "^2.0.1", "yargs": "^16.0.3" }, @@ -36639,32 +37120,32 @@ } }, "jest-config": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.1.0.tgz", - "integrity": "sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", + "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.1.0", - "@jest/types": "^27.1.0", - "babel-jest": "^27.1.0", + "@jest/test-sequencer": "^27.0.6", + "@jest/types": "^27.0.6", + "babel-jest": "^27.0.6", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.1.0", - "jest-environment-jsdom": "^27.1.0", - "jest-environment-node": "^27.1.0", + "jest-circus": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.1.0", + "jest-jasmine2": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.1.0", - "jest-runner": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-resolve": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "micromatch": "^4.0.4", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "dependencies": { "ansi-styles": { @@ -36770,15 +37251,15 @@ } }, "jest-diff": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz", - "integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "dependencies": { "ansi-styles": { @@ -36836,16 +37317,16 @@ } }, "jest-each": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz", - "integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", + "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "jest-get-type": "^27.0.6", - "jest-util": "^27.1.0", - "pretty-format": "^27.1.0" + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6" }, "dependencies": { "ansi-styles": { @@ -36894,17 +37375,17 @@ } }, "jest-environment-jsdom": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz", - "integrity": "sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", + "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", "dev": true, "requires": { - "@jest/environment": "^27.1.0", - "@jest/fake-timers": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", - "jest-mock": "^27.1.0", - "jest-util": "^27.1.0", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6", "jsdom": "^16.6.0" }, "dependencies": { @@ -37144,9 +37625,9 @@ } }, "ws": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", - "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "dev": true, "requires": {} }, @@ -37159,17 +37640,17 @@ } }, "jest-environment-node": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.1.0.tgz", - "integrity": "sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", + "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", "dev": true, "requires": { - "@jest/environment": "^27.1.0", - "@jest/fake-timers": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", - "jest-mock": "^27.1.0", - "jest-util": "^27.1.0" + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" } }, "jest-get-type": { @@ -37179,12 +37660,12 @@ "dev": true }, "jest-haste-map": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz", - "integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", + "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -37193,8 +37674,8 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.6", "jest-serializer": "^27.0.6", - "jest-util": "^27.1.0", - "jest-worker": "^27.1.0", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -37245,28 +37726,28 @@ } }, "jest-jasmine2": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz", - "integrity": "sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", + "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.1.0", + "@jest/environment": "^27.0.6", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.1.0", + "expect": "^27.0.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.1.0", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "pretty-format": "^27.1.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", "throat": "^6.0.1" }, "dependencies": { @@ -37316,25 +37797,25 @@ } }, "jest-leak-detector": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz", - "integrity": "sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", + "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", "dev": true, "requires": { "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" } }, "jest-matcher-utils": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz", - "integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", + "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.1.0", + "jest-diff": "^27.0.6", "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "dependencies": { "ansi-styles": { @@ -37383,18 +37864,18 @@ } }, "jest-message-util": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz", - "integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", + "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.1.0", + "pretty-format": "^27.0.6", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -37494,12 +37975,12 @@ } }, "jest-mock": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz", - "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", + "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/node": "*" } }, @@ -37517,19 +37998,18 @@ "dev": true }, "jest-resolve": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz", - "integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", + "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "chalk": "^4.0.0", "escalade": "^3.1.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "resolve": "^1.20.0", "slash": "^3.0.0" }, @@ -37586,42 +38066,42 @@ } }, "jest-resolve-dependencies": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz", - "integrity": "sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", + "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.1.0" + "jest-snapshot": "^27.0.6" } }, "jest-runner": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.1.0.tgz", - "integrity": "sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", + "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", "dev": true, "requires": { - "@jest/console": "^27.1.0", - "@jest/environment": "^27.1.0", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.1.0", - "jest-environment-node": "^27.1.0", - "jest-haste-map": "^27.1.0", - "jest-leak-detector": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-resolve": "^27.1.0", - "jest-runtime": "^27.1.0", - "jest-util": "^27.1.0", - "jest-worker": "^27.1.0", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-leak-detector": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -37672,35 +38152,34 @@ } }, "jest-runtime": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz", - "integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", + "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", "dev": true, "requires": { - "@jest/console": "^27.1.0", - "@jest/environment": "^27.1.0", - "@jest/fake-timers": "^27.1.0", - "@jest/globals": "^27.1.0", + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/globals": "^27.0.6", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.1.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-mock": "^27.1.0", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.1.0", - "jest-snapshot": "^27.1.0", - "jest-util": "^27.1.0", - "jest-validate": "^27.1.0", + "jest-resolve": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" @@ -37751,46 +38230,12 @@ "color-name": "~1.1.4" } }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -37817,42 +38262,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -37894,15 +38303,6 @@ "has-flag": "^4.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -37954,9 +38354,9 @@ } }, "jest-snapshot": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz", - "integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", + "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -37965,23 +38365,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.1.0", + "expect": "^27.0.6", "graceful-fs": "^4.2.4", - "jest-diff": "^27.1.0", + "jest-diff": "^27.0.6", "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.1.0", - "jest-matcher-utils": "^27.1.0", - "jest-message-util": "^27.1.0", - "jest-resolve": "^27.1.0", - "jest-util": "^27.1.0", + "jest-haste-map": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", "natural-compare": "^1.4.0", - "pretty-format": "^27.1.0", + "pretty-format": "^27.0.6", "semver": "^7.3.2" }, "dependencies": { @@ -38055,12 +38455,12 @@ } }, "jest-util": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz", - "integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -38114,17 +38514,17 @@ } }, "jest-validate": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz", - "integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", + "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^27.0.6", "leven": "^3.1.0", - "pretty-format": "^27.1.0" + "pretty-format": "^27.0.6" }, "dependencies": { "ansi-styles": { @@ -38179,17 +38579,17 @@ } }, "jest-watcher": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.1.0.tgz", - "integrity": "sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", + "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", "dev": true, "requires": { - "@jest/test-result": "^27.1.0", - "@jest/types": "^27.1.0", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.1.0", + "jest-util": "^27.0.6", "string-length": "^4.0.1" }, "dependencies": { @@ -38239,9 +38639,9 @@ } }, "jest-worker": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz", - "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", "dev": true, "requires": { "@types/node": "*", @@ -39185,6 +39585,14 @@ } } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "optional": true, + "peer": true + }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -41570,12 +41978,12 @@ } }, "pretty-format": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz", - "integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", "dev": true, "requires": { - "@jest/types": "^27.1.0", + "@jest/types": "^27.0.6", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -45014,9 +45422,9 @@ } }, "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, "to-arraybuffer": { @@ -45158,6 +45566,46 @@ } } }, + "ts-node": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", + "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@cspotcode/source-map-support": "0.6.1", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "dependencies": { + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "optional": true, + "peer": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "optional": true, + "peer": true + } + } + }, "tslib": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", @@ -46854,6 +47302,14 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "optional": true, + "peer": true } } } diff --git a/package.json b/package.json index 2c27d70f4..7d72e9804 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "http-server": "^13.0.1", "i18n-webpack-plugin": "^1.0.0", "istanbul": "^0.4.5", - "jest": "^27.1.0", + "jest": "^27.0.6", "js-beautify": "^1.5.10", "jsdom": "^15.0.0", "jsdom-global": "^3.0.2", diff --git a/test/StockMarket.test.ts b/test/StockMarket.test.ts index 7f8341ce1..245218dee 100644 --- a/test/StockMarket.test.ts +++ b/test/StockMarket.test.ts @@ -35,11 +35,10 @@ import { } from "../src/StockMarket/StockMarketHelpers"; import { OrderTypes } from "../src/StockMarket/data/OrderTypes"; import { PositionTypes } from "../src/StockMarket/data/PositionTypes"; -// import { jest } from "jest"; -// jest.mock("../src/ui/React/createPopup.tsx", () => ({ -// createPopup: jest.fn(), -// })); +jest.mock("../src/ui/React/createPopup.tsx", () => ({ + createPopup: jest.fn(), +})); describe("Stock Market Tests", function () { const commission = CONSTANTS.StockMarketCommission; @@ -63,7 +62,7 @@ describe("Stock Market Tests", function () { stock = new Stock(ctorParams); } - expect(construct).not.throw(); + expect(construct).not.toThrow(); }); describe("Stock Class", function () { @@ -72,26 +71,26 @@ describe("Stock Market Tests", function () { function construct(): void { new Stock(); // eslint-disable-line no-new } - expect(construct).not.throw(); + expect(construct).not.toThrow(); const defaultStock = new Stock(); - expect(defaultStock).not.equal(null); - expect(defaultStock.name).equal(""); + expect(defaultStock).not.toEqual(null); + expect(defaultStock.name).toEqual(""); }); it("should properly initialize props from parameters", function () { - expect(stock.name).equal(ctorParams.name); - expect(stock.symbol).equal(ctorParams.symbol); - expect(stock.price).equal(ctorParams.initPrice); - expect(stock.lastPrice).equal(ctorParams.initPrice); - expect(stock.b).equal(ctorParams.b); - expect(stock.mv).equal(ctorParams.mv); - expect(stock.shareTxForMovement).equal(ctorParams.shareTxForMovement); - expect(stock.shareTxUntilMovement).equal(ctorParams.shareTxForMovement); - expect(stock.maxShares).lessThan(stock.totalShares); - expect(stock.spreadPerc).equal(ctorParams.spreadPerc); - expect(stock.otlkMag).equal(ctorParams.otlkMag); - expect(stock.otlkMagForecast).equal(ctorParams.b ? 50 + ctorParams.otlkMag : 50 - ctorParams.otlkMag); + expect(stock.name).toEqual(ctorParams.name); + expect(stock.symbol).toEqual(ctorParams.symbol); + expect(stock.price).toEqual(ctorParams.initPrice); + expect(stock.lastPrice).toEqual(ctorParams.initPrice); + expect(stock.b).toEqual(ctorParams.b); + expect(stock.mv).toEqual(ctorParams.mv); + expect(stock.shareTxForMovement).toEqual(ctorParams.shareTxForMovement); + expect(stock.shareTxUntilMovement).toEqual(ctorParams.shareTxForMovement); + expect(stock.maxShares).toBeLessThan(stock.totalShares); + expect(stock.spreadPerc).toEqual(ctorParams.spreadPerc); + expect(stock.otlkMag).toEqual(ctorParams.otlkMag); + expect(stock.otlkMagForecast).toEqual(ctorParams.b ? 50 + ctorParams.otlkMag : 50 - ctorParams.otlkMag); }); it("should properly initialize props from range-values", function () { @@ -125,38 +124,38 @@ describe("Stock Market Tests", function () { new Stock(params); // eslint-disable-line no-new } - expect(construct).not.throw(); + expect(construct).not.toThrow(); const stock = new Stock(params); - expect(stock).not.equal(null); - expect(stock.price).gte(params.initPrice.min); - expect(stock.price).lte(params.initPrice.max); - expect(stock.mv).gte(params.mv.min / params.mv.divisor); - expect(stock.mv).lte(params.mv.max / params.mv.divisor); - expect(stock.spreadPerc).gte(params.spreadPerc.min / params.spreadPerc.divisor); - expect(stock.spreadPerc).lte(params.spreadPerc.max / params.spreadPerc.divisor); - expect(stock.shareTxForMovement).gte(params.shareTxForMovement.min); - expect(stock.shareTxForMovement).lte(params.shareTxForMovement.max); + expect(stock).not.toEqual(null); + expect(stock.price).toBeGreaterThanOrEqual(params.initPrice.min); + expect(stock.price).toBeLessThanOrEqual(params.initPrice.max); + expect(stock.mv).toBeGreaterThanOrEqual(params.mv.min / params.mv.divisor); + expect(stock.mv).toBeLessThanOrEqual(params.mv.max / params.mv.divisor); + expect(stock.spreadPerc).toBeGreaterThanOrEqual(params.spreadPerc.min / params.spreadPerc.divisor); + expect(stock.spreadPerc).toBeLessThanOrEqual(params.spreadPerc.max / params.spreadPerc.divisor); + expect(stock.shareTxForMovement).toBeGreaterThanOrEqual(params.shareTxForMovement.min); + expect(stock.shareTxForMovement).toBeLessThanOrEqual(params.shareTxForMovement.max); }); it("should round the 'totalShare' prop to the nearest 100k", function () { - expect(stock.totalShares % 100e3).equal(0); + expect(stock.totalShares % 100e3).toEqual(0); }); }); describe("#changeForecastForecast()", function () { it("should get the stock's second-order forecast property", function () { stock.changeForecastForecast(99); - expect(stock.otlkMagForecast).equal(99); + expect(stock.otlkMagForecast).toEqual(99); stock.changeForecastForecast(1); - expect(stock.otlkMagForecast).equal(1); + expect(stock.otlkMagForecast).toEqual(1); }); it("should prevent values outside of 0-100", function () { stock.changeForecastForecast(101); - expect(stock.otlkMagForecast).equal(100); + expect(stock.otlkMagForecast).toEqual(100); stock.changeForecastForecast(-1); - expect(stock.otlkMagForecast).equal(0); + expect(stock.otlkMagForecast).toEqual(0); }); }); @@ -164,8 +163,8 @@ describe("Stock Market Tests", function () { it("should set both the last price and current price properties", function () { const newPrice = 20e3; stock.changePrice(newPrice); - expect(stock.lastPrice).equal(ctorParams.initPrice); - expect(stock.price).equal(newPrice); + expect(stock.lastPrice).toEqual(ctorParams.initPrice); + expect(stock.price).toEqual(newPrice); }); }); @@ -175,13 +174,13 @@ describe("Stock Market Tests", function () { return 1; }; stock.cycleForecast(5); - expect(stock.otlkMag).equal(ctorParams.otlkMag + 5); + expect(stock.otlkMag).toEqual(ctorParams.otlkMag + 5); stock.getForecastIncreaseChance = () => { return 0; }; stock.cycleForecast(10); - expect(stock.otlkMag).equal(ctorParams.otlkMag - 5); + expect(stock.otlkMag).toEqual(ctorParams.otlkMag - 5); }); it("should NOT(!) the stock's 'b' property if it causes 'otlkMag' to go below 0", function () { @@ -189,8 +188,8 @@ describe("Stock Market Tests", function () { return 0; }; stock.cycleForecast(25); - expect(stock.otlkMag).equal(5); - expect(stock.b).equal(false); + expect(stock.otlkMag).toEqual(5); + expect(stock.b).toEqual(false); }); }); @@ -198,7 +197,7 @@ describe("Stock Market Tests", function () { it("should increase the stock's second-order forecast by a given amount", function () { const expected = [65, 75]; stock.cycleForecastForecast(5); - expect(expected).contain(stock.otlkMagForecast); + expect(expected).toContain(stock.otlkMagForecast); }); }); @@ -206,31 +205,31 @@ describe("Stock Market Tests", function () { it("should flip the 'otlkMagForecast' property around 50", function () { stock.otlkMagForecast = 50; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(50); + expect(stock.otlkMagForecast).toEqual(50); stock.otlkMagForecast = 60; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(40); + expect(stock.otlkMagForecast).toEqual(40); stock.otlkMagForecast = 90; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(10); + expect(stock.otlkMagForecast).toEqual(10); stock.otlkMagForecast = 100; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(0); + expect(stock.otlkMagForecast).toEqual(0); stock.otlkMagForecast = 40; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(60); + expect(stock.otlkMagForecast).toEqual(60); stock.otlkMagForecast = 0; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(100); + expect(stock.otlkMagForecast).toEqual(100); stock.otlkMagForecast = 25; stock.flipForecastForecast(); - expect(stock.otlkMagForecast).equal(75); + expect(stock.otlkMagForecast).toEqual(75); }); }); @@ -238,44 +237,44 @@ describe("Stock Market Tests", function () { it("should return the absolute forecast on a 1-100 scale", function () { stock.b = true; stock.otlkMag = 10; - expect(stock.getAbsoluteForecast()).equal(60); + expect(stock.getAbsoluteForecast()).toEqual(60); stock.b = false; - expect(stock.getAbsoluteForecast()).equal(40); + expect(stock.getAbsoluteForecast()).toEqual(40); stock.otlkMag = 30; - expect(stock.getAbsoluteForecast()).equal(20); + expect(stock.getAbsoluteForecast()).toEqual(20); stock.b = true; - expect(stock.getAbsoluteForecast()).equal(80); + expect(stock.getAbsoluteForecast()).toEqual(80); stock.otlkMag = 0; - expect(stock.getAbsoluteForecast()).equal(50); + expect(stock.getAbsoluteForecast()).toEqual(50); stock.b = false; - expect(stock.getAbsoluteForecast()).equal(50); + expect(stock.getAbsoluteForecast()).toEqual(50); }); }); describe("#getAskPrice()", function () { it("should return the price increased by spread percentage", function () { const perc = stock.spreadPerc / 100; - expect(perc).lte(1); - expect(perc).gte(0); + expect(perc).toBeLessThanOrEqual(1); + expect(perc).toBeGreaterThanOrEqual(0); const expected = stock.price * (1 + perc); - expect(stock.getAskPrice()).equal(expected); + expect(stock.getAskPrice()).toEqual(expected); }); }); describe("#getBidPrice()", function () { it("should return the price decreased by spread percentage", function () { const perc = stock.spreadPerc / 100; - expect(perc).lte(1); - expect(perc).gte(0); + expect(perc).toBeLessThanOrEqual(1); + expect(perc).toBeGreaterThanOrEqual(0); const expected = stock.price * (1 - perc); - expect(stock.getBidPrice()).equal(expected); + expect(stock.getBidPrice()).toEqual(expected); }); }); @@ -285,50 +284,50 @@ describe("Stock Market Tests", function () { stock.otlkMagForecast = 90; stock.otlkMag = 20; // Absolute forecast of 70 - expect(stock.getForecastIncreaseChance()).equal(0.7); + expect(stock.getForecastIncreaseChance()).toEqual(0.7); stock.otlkMag = 25; // Absolute forecast of 75 - expect(stock.getForecastIncreaseChance()).equal(0.65); + expect(stock.getForecastIncreaseChance()).toEqual(0.65); stock.otlkMagForecast = 100; stock.otlkMag = 0; // Absolute forecast of 50 - expect(stock.getForecastIncreaseChance()).equal(0.95); + expect(stock.getForecastIncreaseChance()).toEqual(0.95); stock.otlkMagForecast = 60; stock.otlkMag = 25; // Absolute forecast of 75 - expect(stock.getForecastIncreaseChance()).equal(0.35); + expect(stock.getForecastIncreaseChance()).toEqual(0.35); stock.otlkMagForecast = 10; - expect(stock.getForecastIncreaseChance()).equal(0.05); + expect(stock.getForecastIncreaseChance()).toEqual(0.05); stock.b = false; stock.otlkMagForecast = 90; stock.otlkMag = 20; // Absolute forecast of 30 - expect(stock.getForecastIncreaseChance()).equal(0.95); + expect(stock.getForecastIncreaseChance()).toEqual(0.95); stock.otlkMagForecast = 50; stock.otlkMag = 25; // Absolute forecast of 25 - expect(stock.getForecastIncreaseChance()).equal(0.75); + expect(stock.getForecastIncreaseChance()).toEqual(0.75); stock.otlkMagForecast = 100; stock.otlkMag = 0; // Absolute forecast of 50 - expect(stock.getForecastIncreaseChance()).equal(0.95); + expect(stock.getForecastIncreaseChance()).toEqual(0.95); stock.otlkMagForecast = 5; stock.otlkMag = 25; // Absolute forecast of 25 - expect(stock.getForecastIncreaseChance()).equal(0.3); + expect(stock.getForecastIncreaseChance()).toEqual(0.3); stock.otlkMagForecast = 10; - expect(stock.getForecastIncreaseChance()).equal(0.35); + expect(stock.getForecastIncreaseChance()).toEqual(0.35); stock.otlkMagForecast = 50; stock.otlkMag = 0; - expect(stock.getForecastIncreaseChance()).equal(0.5); + expect(stock.getForecastIncreaseChance()).toEqual(0.5); stock.otlkMagForecast = 25; stock.otlkMag = 5; // Asolute forecast of 45 - expect(stock.getForecastIncreaseChance()).equal(0.3); + expect(stock.getForecastIncreaseChance()).toEqual(0.3); }); }); @@ -339,25 +338,25 @@ describe("Stock Market Tests", function () { it("should change the forecast's value towards 50", function () { stock.influenceForecast(2); - expect(stock.otlkMag).equal(8); + expect(stock.otlkMag).toEqual(8); }); it("should not care about whether the stock is in bull or bear mode", function () { stock.b = true; stock.influenceForecast(1); - expect(stock.otlkMag).equal(9); + expect(stock.otlkMag).toEqual(9); stock.b = false; stock.influenceForecast(2); - expect(stock.otlkMag).equal(7); + expect(stock.otlkMag).toEqual(7); }); it("should not influence the forecast beyond the limit", function () { stock.influenceForecast(10); - expect(stock.otlkMag).equal(StockForecastInfluenceLimit); + expect(stock.otlkMag).toEqual(StockForecastInfluenceLimit); stock.influenceForecast(10); - expect(stock.otlkMag).equal(StockForecastInfluenceLimit); + expect(stock.otlkMag).toEqual(StockForecastInfluenceLimit); }); }); @@ -365,21 +364,21 @@ describe("Stock Market Tests", function () { it("should change the second-order forecast's value towards 50", function () { stock.otlkMagForecast = 75; stock.influenceForecastForecast(15); - expect(stock.otlkMagForecast).equal(60); + expect(stock.otlkMagForecast).toEqual(60); stock.otlkMagForecast = 25; stock.influenceForecastForecast(15); - expect(stock.otlkMagForecast).equal(40); + expect(stock.otlkMagForecast).toEqual(40); }); it("should not change the second-order forecast past 50", function () { stock.otlkMagForecast = 40; stock.influenceForecastForecast(20); - expect(stock.otlkMagForecast).equal(50); + expect(stock.otlkMagForecast).toEqual(50); stock.otlkMagForecast = 60; stock.influenceForecastForecast(20); - expect(stock.otlkMagForecast).equal(50); + expect(stock.otlkMagForecast).toEqual(50); }); }); }); @@ -390,8 +389,8 @@ describe("Stock Market Tests", function () { const stocks: string[] = []; beforeEach(function () { - expect(initStockMarket).not.throw(); - expect(initSymbolToStockMap).not.throw(); + expect(initStockMarket).not.toThrow(); + expect(initSymbolToStockMap).not.toThrow(); }); it("should have Stock objects", function () { @@ -403,35 +402,35 @@ describe("Stock Market Tests", function () { } // We'll just check that there are some stocks - expect(stocks.length).gte(1); + expect(stocks.length).toBeGreaterThanOrEqual(1); }); it("should have an order book in the 'Orders' property", function () { - expect(StockMarket).have.property("Orders"); + expect(StockMarket).toHaveProperty("Orders"); const orderbook = StockMarket["Orders"]; for (const symbol of stocks) { const ordersForStock = orderbook[symbol]; - expect(ordersForStock).equal([]); - expect(ordersForStock.length).equal(0); + expect(ordersForStock).toEqual([]); + expect(ordersForStock.length).toEqual(0); } }); it("should have properties for managing game cycles", function () { - expect(StockMarket).have.property("storedCycles"); - expect(StockMarket["storedCycles"]).equal(0); - expect(StockMarket).have.property("lastUpdate"); - expect(StockMarket["lastUpdate"]).equal(0); - expect(StockMarket).have.property("ticksUntilCycle"); - expect(typeof StockMarket["ticksUntilCycle"]).instanceOf("number"); + expect(StockMarket).toHaveProperty("storedCycles"); + expect(StockMarket["storedCycles"]).toEqual(0); + expect(StockMarket).toHaveProperty("lastUpdate"); + expect(StockMarket["lastUpdate"]).toEqual(0); + expect(StockMarket).toHaveProperty("ticksUntilCycle"); + expect(typeof StockMarket["ticksUntilCycle"]).toBe("number"); }); }); describe("Deletion", function () { it("should set StockMarket to be an empty object", function () { - expect(StockMarket).not.equal({}); + expect(StockMarket).not.toEqual({}); deleteStockMarket(); - expect(StockMarket).equal({}); + expect(StockMarket).toEqual({}); }); }); @@ -443,9 +442,9 @@ describe("Stock Market Tests", function () { }); it("should store cycles until it actually processes", function () { - expect(StockMarket["storedCycles"]).equal(0); + expect(StockMarket["storedCycles"]).toEqual(0); processStockPrices(10); - expect(StockMarket["storedCycles"]).equal(10); + expect(StockMarket["storedCycles"]).toEqual(10); }); it("should trigger a price update when it has enough cycles", function () { @@ -474,7 +473,7 @@ describe("Stock Market Tests", function () { continue; } const initValue = initialValues[stock.symbol]; - expect(initValue.price).not.equal(stock.price); + expect(initValue.price).not.toEqual(stock.price); if (initValue.otlkMag === stock.otlkMag && initValue.b === stock.b) { throw new Error("expected either price or otlkMag to be different"); } @@ -497,7 +496,7 @@ describe("Stock Market Tests", function () { continue; } - expect(SymbolToStockMap[stock.symbol]).equal(stock); + expect(SymbolToStockMap[stock.symbol]).toEqual(stock); } }); }); @@ -506,55 +505,55 @@ describe("Stock Market Tests", function () { describe("getBuyTransactionCost()", function () { it("should fail on invalid 'stock' argument", function () { const res = getBuyTransactionCost({} as Stock, 10, PositionTypes.Long); - expect(res).equal(null); + expect(res).toEqual(null); }); it("should fail on invalid 'shares' arg", function () { let res = getBuyTransactionCost(stock, NaN, PositionTypes.Long); - expect(res).equal(null); + expect(res).toEqual(null); res = getBuyTransactionCost(stock, -1, PositionTypes.Long); - expect(res).equal(null); + expect(res).toEqual(null); }); it("should properly evaluate LONG transactions", function () { const shares = ctorParams.shareTxForMovement / 2; const res = getBuyTransactionCost(stock, shares, PositionTypes.Long); - expect(res).equal(shares * stock.getAskPrice() + commission); + expect(res).toEqual(shares * stock.getAskPrice() + commission); }); it("should properly evaluate SHORT transactions", function () { const shares = ctorParams.shareTxForMovement / 2; const res = getBuyTransactionCost(stock, shares, PositionTypes.Short); - expect(res).equal(shares * stock.getBidPrice() + commission); + expect(res).toEqual(shares * stock.getBidPrice() + commission); }); it("should cap the 'shares' argument at the stock's maximum number of shares", function () { const maxRes = getBuyTransactionCost(stock, stock.maxShares, PositionTypes.Long); const exceedRes = getBuyTransactionCost(stock, stock.maxShares * 10, PositionTypes.Long); - expect(maxRes).equal(exceedRes); + expect(maxRes).toEqual(exceedRes); }); }); describe("getSellTransactionGain()", function () { it("should fail on invalid 'stock' argument", function () { const res = getSellTransactionGain({} as Stock, 10, PositionTypes.Long); - expect(res).equal(null); + expect(res).toEqual(null); }); it("should fail on invalid 'shares' arg", function () { let res = getSellTransactionGain(stock, NaN, PositionTypes.Long); - expect(res).equal(null); + expect(res).toEqual(null); res = getSellTransactionGain(stock, -1, PositionTypes.Long); - expect(res).equal(null); + expect(res).toEqual(null); }); it("should properly evaluate LONG transactionst", function () { const shares = ctorParams.shareTxForMovement / 2; const res = getSellTransactionGain(stock, shares, PositionTypes.Long); const expected = shares * stock.getBidPrice() - commission; - expect(res).equal(expected); + expect(res).toEqual(expected); }); it("should properly evaluate SHORT transactions", function () { @@ -565,13 +564,13 @@ describe("Stock Market Tests", function () { const res = getSellTransactionGain(stock, shares, PositionTypes.Short); const expected = shares * stock.playerAvgShortPx + shares * (stock.playerAvgShortPx - stock.getAskPrice()) - commission; - expect(res).equal(expected); + expect(res).toEqual(expected); }); it("should cap the 'shares' argument at the stock's maximum number of shares", function () { const maxRes = getSellTransactionGain(stock, stock.maxShares, PositionTypes.Long); const exceedRes = getSellTransactionGain(stock, stock.maxShares * 10, PositionTypes.Long); - expect(maxRes).equal(exceedRes); + expect(maxRes).toEqual(exceedRes); }); }); }); @@ -602,33 +601,33 @@ describe("Stock Market Tests", function () { const oldTracker = stock.shareTxUntilMovement; processTransactionForecastMovement({} as Stock, mvmtShares); - expect(stock.shareTxUntilMovement).equal(oldTracker); + expect(stock.shareTxUntilMovement).toEqual(oldTracker); }); it("should do nothing on invalid 'shares' arg", function () { const oldTracker = stock.shareTxUntilMovement; processTransactionForecastMovement(stock, NaN); - expect(stock.shareTxUntilMovement).equal(oldTracker); + expect(stock.shareTxUntilMovement).toEqual(oldTracker); processTransactionForecastMovement(stock, -1); - expect(stock.shareTxUntilMovement).equal(oldTracker); + expect(stock.shareTxUntilMovement).toEqual(oldTracker); }); it("should properly evaluate a LONG transaction that doesn't trigger a forecast movement", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, noMvmtShares); - expect(stock.otlkMag).equal(oldForecast); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(oldForecast); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate a SHORT transaction that doesn't trigger a forecast movement", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, noMvmtShares); - expect(stock.otlkMag).equal(oldForecast); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(oldForecast); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate LONG transactions that triggers forecast movements", function () { @@ -636,9 +635,9 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, mvmtShares); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate SHORT transactions that triggers forecast movements", function () { @@ -646,9 +645,9 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, mvmtShares); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate LONG transactions of exactly 'shareTxForMovement' shares", function () { @@ -656,9 +655,9 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate LONG transactions that total to 'shareTxForMovement' shares", function () { @@ -666,11 +665,11 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, Math.round(stock.shareTxForMovement / 2)); - expect(stock.shareTxUntilMovement).lessThan(stock.shareTxForMovement); + expect(stock.shareTxUntilMovement).toBeLessThan(stock.shareTxForMovement); processTransactionForecastMovement(stock, stock.shareTxUntilMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate LONG transactions that are a multiple of 'shareTxForMovement' shares", function () { @@ -678,9 +677,9 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, 3 * stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate SHORT transactions of exactly 'shareTxForMovement' shares", function () { @@ -688,9 +687,9 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate SHORT transactions that total to 'shareTxForMovement' shares", function () { @@ -698,11 +697,11 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, Math.round(stock.shareTxForMovement / 2)); - expect(stock.shareTxUntilMovement).lessThan(stock.shareTxForMovement); + expect(stock.shareTxUntilMovement).toBeLessThan(stock.shareTxForMovement); processTransactionForecastMovement(stock, stock.shareTxUntilMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate SHORT transactions that are a multiple of 'shareTxForMovement' shares", function () { @@ -710,9 +709,9 @@ describe("Stock Market Tests", function () { const oldForecastForecast = stock.otlkMagForecast; processTransactionForecastMovement(stock, 3 * stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.otlkMagForecast).equal(getNthForecastForecast(oldForecastForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.otlkMagForecast).toEqual(getNthForecastForecast(oldForecastForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); }); @@ -724,101 +723,101 @@ describe("Stock Market Tests", function () { const oldTracker = stock.shareTxUntilMovement; processTransactionForecastMovement({} as Stock, mvmtShares); - expect(stock.shareTxUntilMovement).equal(oldTracker); + expect(stock.shareTxUntilMovement).toEqual(oldTracker); }); it("should do nothing on invalid 'shares' arg", function () { const oldTracker = stock.shareTxUntilMovement; processTransactionForecastMovement(stock, NaN); - expect(stock.shareTxUntilMovement).equal(oldTracker); + expect(stock.shareTxUntilMovement).toEqual(oldTracker); processTransactionForecastMovement(stock, -1); - expect(stock.shareTxUntilMovement).equal(oldTracker); + expect(stock.shareTxUntilMovement).toEqual(oldTracker); }); it("should properly evaluate a LONG transaction that doesn't trigger a price movement", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, noMvmtShares); - expect(stock.otlkMag).equal(oldForecast); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(oldForecast); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate a SHORT transaction that doesn't trigger a price movement", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, noMvmtShares); - expect(stock.otlkMag).equal(oldForecast); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(oldForecast); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate LONG transactions that trigger price movements", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, mvmtShares); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate SHORT transactions that trigger price movements", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, mvmtShares); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement - noMvmtShares); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement - noMvmtShares); }); it("should properly evaluate LONG transactions of exactly 'shareTxForMovement' shares", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate LONG transactions that total to 'shareTxForMovement' shares", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, Math.round(stock.shareTxForMovement / 2)); - expect(stock.shareTxUntilMovement).lessThan(stock.shareTxForMovement); + expect(stock.shareTxUntilMovement).toBeLessThan(stock.shareTxForMovement); processTransactionForecastMovement(stock, stock.shareTxUntilMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate LONG transactions that are a multiple of 'shareTxForMovement' shares", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, 3 * stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate SHORT transactions of exactly 'shareTxForMovement' shares", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate SHORT transactions that total to 'shareTxForMovement' shares", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, Math.round(stock.shareTxForMovement / 2)); - expect(stock.shareTxUntilMovement).lessThan(stock.shareTxForMovement); + expect(stock.shareTxUntilMovement).toBeLessThan(stock.shareTxForMovement); processTransactionForecastMovement(stock, stock.shareTxUntilMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 2)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 2)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); it("should properly evaluate SHORT transactions that are a multiple of 'shareTxForMovement' shares", function () { const oldForecast = stock.otlkMag; processTransactionForecastMovement(stock, 3 * stock.shareTxForMovement); - expect(stock.otlkMag).equal(getNthForecast(oldForecast, 4)); - expect(stock.shareTxUntilMovement).equal(stock.shareTxForMovement); + expect(stock.otlkMag).toEqual(getNthForecast(oldForecast, 4)); + expect(stock.shareTxUntilMovement).toEqual(stock.shareTxForMovement); }); }); }); @@ -828,54 +827,54 @@ describe("Stock Market Tests", function () { describe("buyStock()", function () { it("should fail for invalid arguments", function () { - expect(buyStock({} as Stock, 1, null, suppressDialogOpt)).equal(false); - expect(buyStock(stock, 0, null, suppressDialogOpt)).equal(false); - expect(buyStock(stock, -1, null, suppressDialogOpt)).equal(false); - expect(buyStock(stock, NaN, null, suppressDialogOpt)).equal(false); + expect(buyStock({} as Stock, 1, null, suppressDialogOpt)).toEqual(false); + expect(buyStock(stock, 0, null, suppressDialogOpt)).toEqual(false); + expect(buyStock(stock, -1, null, suppressDialogOpt)).toEqual(false); + expect(buyStock(stock, NaN, null, suppressDialogOpt)).toEqual(false); }); it("should fail if player doesn't have enough money", function () { Player.setMoney(0); - expect(buyStock(stock, 1, null, suppressDialogOpt)).equal(false); + expect(buyStock(stock, 1, null, suppressDialogOpt)).toEqual(false); }); it("should not allow for transactions that exceed the maximum shares", function () { const maxShares = stock.maxShares; - expect(buyStock(stock, maxShares + 1, null, suppressDialogOpt)).equal(false); + expect(buyStock(stock, maxShares + 1, null, suppressDialogOpt)).toEqual(false); }); it("should return true and properly update stock properties for successful transactions", function () { const shares = 1e3; const cost = getBuyTransactionCost(stock, shares, PositionTypes.Long); - expect(cost).not.null; + expect(cost).not.toBeNull(); // Checked above // eslint-disable-next-line @typescript-eslint/no-non-null-assertion Player.setMoney(cost!); - expect(buyStock(stock, shares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShares).equal(shares); - expect(stock.playerAvgPx).greaterThan(0); - expect(Player.money.toNumber()).equal(0); + expect(buyStock(stock, shares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShares).toEqual(shares); + expect(stock.playerAvgPx).toBeGreaterThan(0); + expect(Player.money.toNumber()).toEqual(0); }); }); describe("sellStock()", function () { it("should fail for invalid arguments", function () { - expect(sellStock({} as Stock, 1, null, suppressDialogOpt)).equal(false); - expect(sellStock(stock, 0, null, suppressDialogOpt)).equal(false); - expect(sellStock(stock, -1, null, suppressDialogOpt)).equal(false); - expect(sellStock(stock, NaN, null, suppressDialogOpt)).equal(false); + expect(sellStock({} as Stock, 1, null, suppressDialogOpt)).toEqual(false); + expect(sellStock(stock, 0, null, suppressDialogOpt)).toEqual(false); + expect(sellStock(stock, -1, null, suppressDialogOpt)).toEqual(false); + expect(sellStock(stock, NaN, null, suppressDialogOpt)).toEqual(false); }); it("should fail if player doesn't have any shares", function () { Player.setMoney(0); - expect(sellStock(stock, 1, null, suppressDialogOpt)).equal(false); + expect(sellStock(stock, 1, null, suppressDialogOpt)).toEqual(false); }); it("should not allow for transactions that exceed the maximum shares", function () { const maxShares = stock.maxShares; - expect(sellStock(stock, maxShares + 1, null, suppressDialogOpt)).equal(false); + expect(sellStock(stock, maxShares + 1, null, suppressDialogOpt)).toEqual(false); }); it("should return true and properly update stock properties for successful transactions", function () { @@ -885,10 +884,10 @@ describe("Stock Market Tests", function () { const gain = getSellTransactionGain(stock, shares, PositionTypes.Long); Player.setMoney(0); - expect(sellStock(stock, shares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShares).equal(0); - expect(stock.playerAvgPx).equal(0); - expect(Player.money.toNumber()).equal(gain); + expect(sellStock(stock, shares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShares).toEqual(0); + expect(stock.playerAvgPx).toEqual(0); + expect(Player.money.toNumber()).toEqual(gain); }); it("should cap the number of sharse sold to however many the player owns", function () { @@ -899,10 +898,10 @@ describe("Stock Market Tests", function () { const gain = getSellTransactionGain(stock, actualShares, PositionTypes.Long); Player.setMoney(0); - expect(sellStock(stock, attemptedShares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShares).equal(0); - expect(stock.playerAvgPx).equal(0); - expect(Player.money.toNumber()).equal(gain); + expect(sellStock(stock, attemptedShares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShares).toEqual(0); + expect(stock.playerAvgPx).toEqual(0); + expect(Player.money.toNumber()).toEqual(gain); }); it("should properly update stock properties for partial transactions", function () { @@ -913,63 +912,63 @@ describe("Stock Market Tests", function () { const gain = getSellTransactionGain(stock, shares, PositionTypes.Long); Player.setMoney(0); - expect(sellStock(stock, shares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShares).equal(shares); - expect(stock.playerAvgPx).equal(origPrice); - expect(Player.money.toNumber()).equal(gain); + expect(sellStock(stock, shares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShares).toEqual(shares); + expect(stock.playerAvgPx).toEqual(origPrice); + expect(Player.money.toNumber()).toEqual(gain); }); }); describe("shortStock()", function () { it("should fail for invalid arguments", function () { - expect(shortStock({} as Stock, 1, null, suppressDialogOpt)).equal(false); - expect(shortStock(stock, 0, null, suppressDialogOpt)).equal(false); - expect(shortStock(stock, -1, null, suppressDialogOpt)).equal(false); - expect(shortStock(stock, NaN, null, suppressDialogOpt)).equal(false); + expect(shortStock({} as Stock, 1, null, suppressDialogOpt)).toEqual(false); + expect(shortStock(stock, 0, null, suppressDialogOpt)).toEqual(false); + expect(shortStock(stock, -1, null, suppressDialogOpt)).toEqual(false); + expect(shortStock(stock, NaN, null, suppressDialogOpt)).toEqual(false); }); it("should fail if player doesn't have enough money", function () { Player.setMoney(0); - expect(shortStock(stock, 1, null, suppressDialogOpt)).equal(false); + expect(shortStock(stock, 1, null, suppressDialogOpt)).toEqual(false); }); it("should not allow for transactions that exceed the maximum shares", function () { const maxShares = stock.maxShares; - expect(shortStock(stock, maxShares + 1, null, suppressDialogOpt)).equal(false); + expect(shortStock(stock, maxShares + 1, null, suppressDialogOpt)).toEqual(false); }); it("should return true and properly update stock properties for successful transactions", function () { const shares = 1e3; const cost = getBuyTransactionCost(stock, shares, PositionTypes.Short); - expect(cost).not.null; + expect(cost).not.toBeNull(); // Checked above // eslint-disable-next-line @typescript-eslint/no-non-null-assertion Player.setMoney(cost!); - expect(shortStock(stock, shares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShortShares).equal(shares); - expect(stock.playerAvgShortPx).greaterThan(0); - expect(Player.money.toNumber()).equal(0); + expect(shortStock(stock, shares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShortShares).toEqual(shares); + expect(stock.playerAvgShortPx).toBeGreaterThan(0); + expect(Player.money.toNumber()).toEqual(0); }); }); describe("sellShort()", function () { it("should fail for invalid arguments", function () { - expect(sellShort({} as Stock, 1, null, suppressDialogOpt)).equal(false); - expect(sellShort(stock, 0, null, suppressDialogOpt)).equal(false); - expect(sellShort(stock, -1, null, suppressDialogOpt)).equal(false); - expect(sellShort(stock, NaN, null, suppressDialogOpt)).equal(false); + expect(sellShort({} as Stock, 1, null, suppressDialogOpt)).toEqual(false); + expect(sellShort(stock, 0, null, suppressDialogOpt)).toEqual(false); + expect(sellShort(stock, -1, null, suppressDialogOpt)).toEqual(false); + expect(sellShort(stock, NaN, null, suppressDialogOpt)).toEqual(false); }); it("should fail if player doesn't have any shares", function () { Player.setMoney(0); - expect(sellShort(stock, 1, null, suppressDialogOpt)).equal(false); + expect(sellShort(stock, 1, null, suppressDialogOpt)).toEqual(false); }); it("should not allow for transactions that exceed the maximum shares", function () { const maxShares = stock.maxShares; - expect(sellShort(stock, maxShares + 1, null, suppressDialogOpt)).equal(false); + expect(sellShort(stock, maxShares + 1, null, suppressDialogOpt)).toEqual(false); }); it("should return true and properly update stock properties for successful transactions", function () { @@ -979,10 +978,10 @@ describe("Stock Market Tests", function () { const gain = getSellTransactionGain(stock, shares, PositionTypes.Short); Player.setMoney(0); - expect(sellShort(stock, shares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShortShares).equal(0); - expect(stock.playerAvgShortPx).equal(0); - expect(Player.money.toNumber()).equal(gain); + expect(sellShort(stock, shares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShortShares).toEqual(0); + expect(stock.playerAvgShortPx).toEqual(0); + expect(Player.money.toNumber()).toEqual(gain); }); it("should cap the number of sharse sold to however many the player owns", function () { @@ -993,10 +992,10 @@ describe("Stock Market Tests", function () { const gain = getSellTransactionGain(stock, actualShares, PositionTypes.Short); Player.setMoney(0); - expect(sellShort(stock, attemptedShares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShortShares).equal(0); - expect(stock.playerAvgShortPx).equal(0); - expect(Player.money.toNumber()).equal(gain); + expect(sellShort(stock, attemptedShares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShortShares).toEqual(0); + expect(stock.playerAvgShortPx).toEqual(0); + expect(Player.money.toNumber()).toEqual(gain); }); it("should properly update stock properties for partial transactions", function () { @@ -1007,10 +1006,10 @@ describe("Stock Market Tests", function () { const gain = getSellTransactionGain(stock, shares, PositionTypes.Short); Player.setMoney(0); - expect(sellShort(stock, shares, null, suppressDialogOpt)).equal(true); - expect(stock.playerShortShares).equal(shares); - expect(stock.playerAvgShortPx).equal(origPrice); - expect(Player.money.toNumber()).equal(gain); + expect(sellShort(stock, shares, null, suppressDialogOpt)).toEqual(true); + expect(stock.playerShortShares).toEqual(shares); + expect(stock.playerAvgShortPx).toEqual(origPrice); + expect(Player.money.toNumber()).toEqual(gain); }); }); }); @@ -1033,18 +1032,18 @@ describe("Stock Market Tests", function () { return new Order("FOO", NaN, 0, OrderTypes.LimitBuy, PositionTypes.Short); } - expect(invalid1).throw(); - expect(invalid2).throw(); - expect(invalid3).throw(); - expect(invalid4).throw(); - expect(invalid5).throw(); + expect(invalid1).toThrow(); + expect(invalid2).toThrow(); + expect(invalid3).toThrow(); + expect(invalid4).toThrow(); + expect(invalid5).toThrow(); }); }); describe("Order Placing & Processing", function () { beforeEach(function () { - expect(initStockMarket).not.throw(); - expect(initSymbolToStockMap).not.throw(); + expect(initStockMarket).not.toThrow(); + expect(initSymbolToStockMap).not.toThrow(); // Create an order book for our mock stock StockMarket["Orders"][stock.symbol] = []; @@ -1056,25 +1055,25 @@ describe("Stock Market Tests", function () { const invalid2 = placeOrder(stock, "foo" as any as number, 2, OrderTypes.LimitBuy, PositionTypes.Long); const invalid3 = placeOrder(stock, 1, "foo" as any as number, OrderTypes.LimitBuy, PositionTypes.Long); - expect(invalid1).equal(false); - expect(invalid2).equal(false); - expect(invalid3).equal(false); + expect(invalid1).toEqual(false); + expect(invalid2).toEqual(false); + expect(invalid3).toEqual(false); - expect(StockMarket["Orders"][stock.symbol]).equal([]); + expect(StockMarket["Orders"][stock.symbol]).toEqual([]); }); it("should return true and update the order book for valid arguments", function () { const res = placeOrder(stock, 1e3, 9e3, OrderTypes.LimitBuy, PositionTypes.Long); - expect(res).equal(true); + expect(res).toEqual(true); - expect(StockMarket["Orders"][stock.symbol]).length(1); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(1); const order = StockMarket["Orders"][stock.symbol][0]; - expect(order).instanceOf(Order); - expect(order.stockSymbol).equal(ctorParams.symbol); - expect(order.shares).equal(1e3); - expect(order.price).equal(9e3); - expect(order.type).equal(OrderTypes.LimitBuy); - expect(order.pos).equal(PositionTypes.Long); + expect(order).toBeInstanceOf(Order); + expect(order.stockSymbol).toEqual(ctorParams.symbol); + expect(order.shares).toEqual(1e3); + expect(order.price).toEqual(9e3); + expect(order.type).toEqual(OrderTypes.LimitBuy); + expect(order.pos).toEqual(PositionTypes.Long); }); }); @@ -1083,15 +1082,15 @@ describe("Stock Market Tests", function () { StockMarket["Orders"][stock.symbol] = []; const res = placeOrder(stock, 1e3, 9e3, OrderTypes.LimitBuy, PositionTypes.Long); - expect(res).equal(true); - expect(StockMarket["Orders"][stock.symbol]).length(1); + expect(res).toEqual(true); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(1); }); it("returns true & removes an Order from the order book", function () { const order = StockMarket["Orders"][stock.symbol][0]; const res = cancelOrder({ order }); - expect(res).equal(true); - expect(StockMarket["Orders"][stock.symbol]).length(0); + expect(res).toEqual(true); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(0); }); it("should also work when passing in order parameters separately", function () { @@ -1102,16 +1101,16 @@ describe("Stock Market Tests", function () { type: OrderTypes.LimitBuy, pos: PositionTypes.Long, }); - expect(res).equal(true); - expect(StockMarket["Orders"][stock.symbol]).length(0); + expect(res).toEqual(true); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(0); }); it("should return false and do nothing when the specified order doesn't exist", function () { // Same parameters, but its a different object const order = new Order(stock.symbol, 1e3, 9e3, OrderTypes.LimitBuy, PositionTypes.Long); const res = cancelOrder({ order }); - expect(res).equal(false); - expect(StockMarket["Orders"][stock.symbol]).length(1); + expect(res).toEqual(false); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(1); const res2 = cancelOrder({ stock, @@ -1120,8 +1119,8 @@ describe("Stock Market Tests", function () { type: OrderTypes.LimitBuy, pos: PositionTypes.Long, }); - expect(res2).equal(false); - expect(StockMarket["Orders"][stock.symbol]).length(1); + expect(res2).toEqual(false); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(1); }); }); @@ -1129,8 +1128,8 @@ describe("Stock Market Tests", function () { let processOrdersRefs: IProcessOrderRefs; beforeEach(function () { - expect(initStockMarket).not.throw(); - expect(initSymbolToStockMap).not.throw(); + expect(initStockMarket).not.toThrow(); + expect(initSymbolToStockMap).not.toThrow(); StockMarket[stock.name] = stock; SymbolToStockMap[stock.symbol] = stock; @@ -1149,13 +1148,13 @@ describe("Stock Market Tests", function () { function checkThatOrderExists(placeOrderRes?: boolean): void { if (typeof placeOrderRes === "boolean") { - expect(placeOrderRes).equal(true); + expect(placeOrderRes).toEqual(true); } - expect(StockMarket["Orders"][stock.symbol]).length(1); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(1); } function checkThatOrderExecuted(): void { - expect(StockMarket["Orders"][stock.symbol]).length(0); + expect(StockMarket["Orders"][stock.symbol]).toHaveLength(0); } it("should execute LONG Limit Buy orders when price <= order price", function () { @@ -1165,7 +1164,7 @@ describe("Stock Market Tests", function () { stock.changePrice(9e3); processOrders(stock, OrderTypes.LimitBuy, PositionTypes.Long, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShares).equal(2e3); + expect(stock.playerShares).toEqual(2e3); }); it("should execute SHORT Limit Buy Orders when price >= order price", function () { @@ -1175,7 +1174,7 @@ describe("Stock Market Tests", function () { stock.changePrice(11e3); processOrders(stock, OrderTypes.LimitBuy, PositionTypes.Short, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShortShares).equal(2e3); + expect(stock.playerShortShares).toEqual(2e3); }); it("should execute LONG Limit Sell Orders when price >= order price", function () { @@ -1185,7 +1184,7 @@ describe("Stock Market Tests", function () { stock.changePrice(11e3); processOrders(stock, OrderTypes.LimitSell, PositionTypes.Long, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShares).equal(0); + expect(stock.playerShares).toEqual(0); }); it("should execute SHORT Limit Sell Orders when price <= order price", function () { @@ -1195,7 +1194,7 @@ describe("Stock Market Tests", function () { stock.changePrice(9e3); processOrders(stock, OrderTypes.LimitSell, PositionTypes.Short, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShortShares).equal(0); + expect(stock.playerShortShares).toEqual(0); }); it("should execute LONG Stop Buy Orders when price >= order price", function () { @@ -1205,7 +1204,7 @@ describe("Stock Market Tests", function () { stock.changePrice(11e3); processOrders(stock, OrderTypes.StopBuy, PositionTypes.Long, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShares).equal(2e3); + expect(stock.playerShares).toEqual(2e3); }); it("should execute SHORT Stop Buy Orders when price <= order price", function () { @@ -1215,7 +1214,7 @@ describe("Stock Market Tests", function () { stock.changePrice(9e3); processOrders(stock, OrderTypes.StopBuy, PositionTypes.Short, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShortShares).equal(2e3); + expect(stock.playerShortShares).toEqual(2e3); }); it("should execute LONG Stop Sell Orders when price <= order price", function () { @@ -1225,7 +1224,7 @@ describe("Stock Market Tests", function () { stock.changePrice(9e3); processOrders(stock, OrderTypes.StopSell, PositionTypes.Long, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShares).equal(0); + expect(stock.playerShares).toEqual(0); }); it("should execute SHORT Stop Sell Orders when price >= order price", function () { @@ -1235,13 +1234,13 @@ describe("Stock Market Tests", function () { stock.changePrice(11e3); processOrders(stock, OrderTypes.StopSell, PositionTypes.Short, processOrdersRefs); checkThatOrderExecuted(); - expect(stock.playerShortShares).equal(0); + expect(stock.playerShortShares).toEqual(0); }); it("should execute immediately if their conditions are satisfied", function () { placeOrder(stock, 1e3, 11e3, OrderTypes.LimitBuy, PositionTypes.Long); checkThatOrderExecuted(); - expect(stock.playerShares).equal(2e3); + expect(stock.playerShares).toEqual(2e3); }); }); }); @@ -1264,8 +1263,8 @@ describe("Stock Market Tests", function () { }); beforeEach(function () { - expect(initStockMarket).not.throw(); - expect(initSymbolToStockMap).not.throw(); + expect(initStockMarket).not.toThrow(); + expect(initSymbolToStockMap).not.toThrow(); StockMarket[stock.name] = stock; }); @@ -1274,13 +1273,13 @@ describe("Stock Market Tests", function () { it("should decrease a stock's second-order forecast when all of its money is hacked", function () { const oldSecondOrderForecast = stock.otlkMagForecast; influenceStockThroughServerHack(server, server.moneyMax); - expect(stock.otlkMagForecast).equal(oldSecondOrderForecast - forecastForecastChangeFromHack); + expect(stock.otlkMagForecast).toEqual(oldSecondOrderForecast - forecastForecastChangeFromHack); }); it("should not decrease the stock's second-order forecast when no money is stolen", function () { const oldSecondOrderForecast = stock.otlkMagForecast; influenceStockThroughServerHack(server, 0); - expect(stock.otlkMagForecast).equal(oldSecondOrderForecast); + expect(stock.otlkMagForecast).toEqual(oldSecondOrderForecast); }); }); @@ -1288,13 +1287,13 @@ describe("Stock Market Tests", function () { it("should increase a stock's second-order forecast when all of its money is grown", function () { const oldSecondOrderForecast = stock.otlkMagForecast; influenceStockThroughServerGrow(server, server.moneyMax); - expect(stock.otlkMagForecast).equal(oldSecondOrderForecast + forecastForecastChangeFromHack); + expect(stock.otlkMagForecast).toEqual(oldSecondOrderForecast + forecastForecastChangeFromHack); }); it("should not increase the stock's second-order forecast when no money is grown", function () { const oldSecondOrderForecast = stock.otlkMagForecast; influenceStockThroughServerGrow(server, 0); - expect(stock.otlkMagForecast).equal(oldSecondOrderForecast); + expect(stock.otlkMagForecast).toEqual(oldSecondOrderForecast); }); }); @@ -1305,7 +1304,7 @@ describe("Stock Market Tests", function () { // Use 1e3 for numCycles to force a change // (This may break later if numbers are rebalanced); influenceStockThroughCompanyWork(company, 1, 500); - expect(stock.otlkMagForecast).equal(oldSecondOrderForecast + forecastForecastChangeFromCompanyWork); + expect(stock.otlkMagForecast).toEqual(oldSecondOrderForecast + forecastForecastChangeFromCompanyWork); }); it("should be affected by performanceMult", function () { @@ -1314,7 +1313,7 @@ describe("Stock Market Tests", function () { // Use 1e3 for numCycles to force a change // (This may break later if numbers are rebalanced); influenceStockThroughCompanyWork(company, 4, 1e3); - expect(stock.otlkMagForecast).equal(oldSecondOrderForecast + 4 * forecastForecastChangeFromCompanyWork); + expect(stock.otlkMagForecast).toEqual(oldSecondOrderForecast + 4 * forecastForecastChangeFromCompanyWork); }); }); }); diff --git a/test/StringHelperFunctions.test.ts b/test/StringHelperFunctions.test.ts index 80ccdbdcd..57bdad6d0 100644 --- a/test/StringHelperFunctions.test.ts +++ b/test/StringHelperFunctions.test.ts @@ -2,19 +2,19 @@ import { convertTimeMsToTimeElapsedString } from "../utils/StringHelperFunctions describe("StringHelperFunctions Tests", function () { it("transforms strings", () => { - expect(convertTimeMsToTimeElapsedString(1000)).equal("1 seconds"); - expect(convertTimeMsToTimeElapsedString(5 * 60 * 1000 + 34 * 1000)).equal("5 minutes 34 seconds"); - expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000)).equal( + expect(convertTimeMsToTimeElapsedString(1000)).toEqual("1 seconds"); + expect(convertTimeMsToTimeElapsedString(5 * 60 * 1000 + 34 * 1000)).toEqual("5 minutes 34 seconds"); + expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000)).toEqual( "2 days 5 minutes 34 seconds", ); - expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000, true)).equal( + expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000, true)).toEqual( "2 days 5 minutes 34.000 seconds", ); - expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000 + 123, true)).equal( - "2 days 5 minutes 34.123 seconds", - ); - expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000 + 123.888, true)).equal( + expect(convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000 + 123, true)).toEqual( "2 days 5 minutes 34.123 seconds", ); + expect( + convertTimeMsToTimeElapsedString(2 * 60 * 60 * 24 * 1000 + 5 * 60 * 1000 + 34 * 1000 + 123.888, true), + ).toEqual("2 days 5 minutes 34.123 seconds"); }); }); diff --git a/test/Terminal/determineAllPossibilitiesForTabCompletion.test.ts b/test/Terminal/determineAllPossibilitiesForTabCompletion.test.ts index b75bdda21..9d70b9b6e 100644 --- a/test/Terminal/determineAllPossibilitiesForTabCompletion.test.ts +++ b/test/Terminal/determineAllPossibilitiesForTabCompletion.test.ts @@ -44,12 +44,12 @@ describe("determineAllPossibilitiesForTabCompletion", function () { it("completes the connect command", () => { const options = determineAllPossibilitiesForTabCompletion(Player, "connect ", 0); - expect(options).equal(["8.8.8.8", "near"]); + expect(options).toEqual(["8.8.8.8", "near"]); }); it("completes the buy command", () => { const options = determineAllPossibilitiesForTabCompletion(Player, "buy ", 0); - expect(options).equal([ + expect(options).toEqual([ "BruteSSH.exe", "FTPCrack.exe", "relaySMTP.exe", @@ -67,23 +67,23 @@ describe("determineAllPossibilitiesForTabCompletion", function () { Player.getHomeComputer().messages.push("af.lit"); Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); const options1 = determineAllPossibilitiesForTabCompletion(Player, "scp ", 0); - expect(options1).equal(["/www/script.js", "af.lit", "note.txt", "www/"]); + expect(options1).toEqual(["/www/script.js", "af.lit", "note.txt", "www/"]); const options2 = determineAllPossibilitiesForTabCompletion(Player, "scp note.txt ", 1); - expect(options2).equal([Player.getHomeComputer().ip, "home", "8.8.8.8", "near", "4.4.4.4", "far"]); + expect(options2).toEqual([Player.getHomeComputer().ip, "home", "8.8.8.8", "near", "4.4.4.4", "far"]); }); it("completes the kill, tail, mem, and check commands", () => { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); for (const command of ["kill", "tail", "mem", "check"]) { - expect(determineAllPossibilitiesForTabCompletion(Player, `${command} `, 0)).equal(["/www/script.js", "www/"]); + expect(determineAllPossibilitiesForTabCompletion(Player, `${command} `, 0)).toEqual(["/www/script.js", "www/"]); } }); it("completes the nano commands", () => { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); Player.getHomeComputer().writeToTextFile("note.txt", "oh hai mark"); - expect(determineAllPossibilitiesForTabCompletion(Player, "nano ", 0)).equal([ + expect(determineAllPossibilitiesForTabCompletion(Player, "nano ", 0)).toEqual([ "/www/script.js", "note.txt", ".fconf", @@ -97,7 +97,7 @@ describe("determineAllPossibilitiesForTabCompletion", function () { Player.getHomeComputer().contracts.push(new CodingContract("linklist.cct")); Player.getHomeComputer().messages.push(new Message("asl.msg")); Player.getHomeComputer().messages.push("af.lit"); - expect(determineAllPossibilitiesForTabCompletion(Player, "rm ", 0)).equal([ + expect(determineAllPossibilitiesForTabCompletion(Player, "rm ", 0)).toEqual([ "/www/script.js", "NUKE.exe", "af.lit", @@ -110,7 +110,7 @@ describe("determineAllPossibilitiesForTabCompletion", function () { it("completes the run command", () => { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); Player.getHomeComputer().contracts.push(new CodingContract("linklist.cct")); - expect(determineAllPossibilitiesForTabCompletion(Player, "run ", 0)).equal([ + expect(determineAllPossibilitiesForTabCompletion(Player, "run ", 0)).toEqual([ "/www/script.js", "NUKE.exe", "linklist.cct", @@ -122,7 +122,7 @@ describe("determineAllPossibilitiesForTabCompletion", function () { Player.getHomeComputer().writeToTextFile("/www/note.txt", "oh hai mark"); Player.getHomeComputer().messages.push(new Message("asl.msg")); Player.getHomeComputer().messages.push("af.lit"); - expect(determineAllPossibilitiesForTabCompletion(Player, "cat ", 0)).equal([ + expect(determineAllPossibilitiesForTabCompletion(Player, "cat ", 0)).toEqual([ "asl.msg", "af.lit", "/www/note.txt", @@ -134,7 +134,7 @@ describe("determineAllPossibilitiesForTabCompletion", function () { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); Player.getHomeComputer().writeToTextFile("note.txt", "oh hai mark"); for (const command of ["download", "mv"]) { - expect(determineAllPossibilitiesForTabCompletion(Player, `${command} `, 0)).equal([ + expect(determineAllPossibilitiesForTabCompletion(Player, `${command} `, 0)).toEqual([ "/www/script.js", "note.txt", "www/", @@ -144,19 +144,19 @@ describe("determineAllPossibilitiesForTabCompletion", function () { it("completes the cd command", () => { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); - expect(determineAllPossibilitiesForTabCompletion(Player, "cd ", 0)).equal(["www/"]); + expect(determineAllPossibilitiesForTabCompletion(Player, "cd ", 0)).toEqual(["www/"]); }); it("completes the ls and cd commands", () => { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); for (const command of ["ls", "cd"]) { - expect(determineAllPossibilitiesForTabCompletion(Player, `${command} `, 0)).equal(["www/"]); + expect(determineAllPossibilitiesForTabCompletion(Player, `${command} `, 0)).toEqual(["www/"]); } }); it("completes commands starting with ./", () => { Player.getHomeComputer().writeToScriptFile("/www/script.js", "oh hai mark"); - expect(determineAllPossibilitiesForTabCompletion(Player, "run ./", 0)).equal([ + expect(determineAllPossibilitiesForTabCompletion(Player, "run ./", 0)).toEqual([ ".//www/script.js", "NUKE.exe", "./www/",