From 5519abbdb2b97d074b3f68578eb8d9b729c05f0f Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Tue, 10 Dec 2024 23:08:35 +0800 Subject: [PATCH 1/8] fix: fix --- package-lock.json | 240 ++++++++++++++++-- .../TradeParameters/Barrier/barrier-input.tsx | 114 +++++---- .../TradeParameters/Barrier/barrier.tsx | 12 +- .../TradeParameters/Duration/day.tsx | 20 +- .../TradeParameters/Duration/duration.tsx | 14 +- 5 files changed, 305 insertions(+), 95 deletions(-) diff --git a/package-lock.json b/package-lock.json index 247659456c4b..9f6cc4e375d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3738,7 +3738,8 @@ "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@gilbarbara/deep-equal": { "version": "0.3.1", @@ -3909,7 +3910,8 @@ "node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -5529,6 +5531,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -5543,12 +5546,14 @@ "node_modules/@npmcli/agent/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/@npmcli/arborist": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.5.4.tgz", "integrity": "sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==", + "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.1", @@ -5597,6 +5602,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -5608,6 +5614,7 @@ "version": "18.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -5630,6 +5637,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5640,12 +5648,14 @@ "node_modules/@npmcli/arborist/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/@npmcli/arborist/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5660,6 +5670,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -5668,6 +5679,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5679,6 +5691,7 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -5693,6 +5706,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -5704,6 +5718,7 @@ "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5715,6 +5730,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, "dependencies": { "unique-slug": "^4.0.0" }, @@ -5726,6 +5742,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -5737,6 +5754,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -5746,6 +5764,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -5757,6 +5776,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "dev": true, "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "ini": "^4.1.3", @@ -5776,6 +5796,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -5784,6 +5805,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, "engines": { "node": ">=16" } @@ -5791,12 +5813,14 @@ "node_modules/@npmcli/git/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/@npmcli/git/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -5808,6 +5832,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, "dependencies": { "isexe": "^3.1.1" }, @@ -5822,6 +5847,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dev": true, "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -5837,6 +5863,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", + "dev": true, "dependencies": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", @@ -5851,6 +5878,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz", "integrity": "sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==", + "dev": true, "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", @@ -5866,6 +5894,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -5877,6 +5906,7 @@ "version": "18.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -5899,6 +5929,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5909,12 +5940,14 @@ "node_modules/@npmcli/metavuln-calculator/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/@npmcli/metavuln-calculator/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -5923,6 +5956,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5934,6 +5968,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -5945,6 +5980,7 @@ "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5956,6 +5992,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, "dependencies": { "unique-slug": "^4.0.0" }, @@ -5967,6 +6004,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -5979,6 +6017,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -5991,6 +6030,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -5999,6 +6039,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -6007,6 +6048,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "dev": true, "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", @@ -6024,6 +6066,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -6035,6 +6078,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, "dependencies": { "which": "^4.0.0" }, @@ -6046,6 +6090,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, "engines": { "node": ">=16" } @@ -6054,6 +6099,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, "dependencies": { "isexe": "^3.1.1" }, @@ -6068,6 +6114,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz", "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -6079,6 +6126,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", + "dev": true, "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -6087,6 +6135,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "dev": true, "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", @@ -6103,6 +6152,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, "engines": { "node": ">=16" } @@ -6111,6 +6161,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, "dependencies": { "isexe": "^3.1.1" }, @@ -7700,6 +7751,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "dev": true, "dependencies": { "@sigstore/protobuf-specs": "^0.3.2" }, @@ -7711,6 +7763,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true, "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -7719,6 +7772,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "dev": true, "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -7727,6 +7781,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "dev": true, "dependencies": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", @@ -7743,6 +7798,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "dev": true, "dependencies": { "@sigstore/protobuf-specs": "^0.3.2", "tuf-js": "^2.2.1" @@ -7755,6 +7811,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "dev": true, "dependencies": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.1.0", @@ -11773,6 +11830,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -11781,6 +11839,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dev": true, "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.4" @@ -11793,6 +11852,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13602,6 +13662,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -14926,6 +14987,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz", "integrity": "sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==", + "dev": true, "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -14940,6 +15002,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -15423,6 +15486,7 @@ "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -15451,6 +15515,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15461,6 +15526,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15480,6 +15546,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -15491,6 +15558,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -15501,7 +15569,8 @@ "node_modules/cacache/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/cache-base": { "version": "1.0.1", @@ -15799,6 +15868,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, "engines": { "node": ">=10" } @@ -16251,6 +16321,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz", "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -16425,7 +16496,8 @@ "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true }, "node_modules/common-path-prefix": { "version": "3.0.0", @@ -19256,6 +19328,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -20598,6 +20671,7 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -20607,6 +20681,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -20885,7 +20960,8 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/errno": { "version": "0.1.8", @@ -23221,7 +23297,8 @@ "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true }, "node_modules/express": { "version": "4.21.1", @@ -24402,6 +24479,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -26371,7 +26449,8 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -26619,6 +26698,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dev": true, "dependencies": { "minimatch": "^9.0.0" }, @@ -26826,7 +26906,8 @@ "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", @@ -26847,6 +26928,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -26855,6 +26937,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-6.0.3.tgz", "integrity": "sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==", + "dev": true, "dependencies": { "@npmcli/package-json": "^5.0.0", "npm-package-arg": "^11.0.0", @@ -26872,6 +26955,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -27076,6 +27160,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -27087,7 +27172,8 @@ "node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/ipaddr.js": { "version": "1.9.1", @@ -27510,7 +27596,8 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-lite": { "version": "1.2.1", @@ -30166,7 +30253,8 @@ "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.1.0", @@ -30305,6 +30393,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -30347,6 +30436,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -30462,12 +30552,14 @@ "node_modules/just-diff": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", - "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==" + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", + "dev": true }, "node_modules/just-diff-apply": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", - "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==" + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", + "dev": true }, "node_modules/just-extend": { "version": "6.2.0", @@ -31363,6 +31455,7 @@ "version": "8.0.6", "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.6.tgz", "integrity": "sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==", + "dev": true, "dependencies": { "npm-package-arg": "^11.0.2", "npm-registry-fetch": "^17.0.1" @@ -31375,6 +31468,7 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -31389,6 +31483,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -31400,6 +31495,7 @@ "version": "9.0.9", "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.9.tgz", "integrity": "sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==", + "dev": true, "dependencies": { "ci-info": "^4.0.0", "normalize-package-data": "^6.0.1", @@ -31418,6 +31514,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "dev": true, "funding": [ { "type": "github", @@ -31432,6 +31529,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -31440,6 +31538,7 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -31454,6 +31553,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -31465,6 +31565,7 @@ "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -32221,6 +32322,7 @@ "version": "13.0.1", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", @@ -32243,6 +32345,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -32254,6 +32357,7 @@ "version": "18.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -32276,6 +32380,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -32286,12 +32391,14 @@ "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/make-fetch-happen/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -32300,6 +32407,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -32311,6 +32419,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -32322,6 +32431,7 @@ "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -32333,6 +32443,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, "dependencies": { "unique-slug": "^4.0.0" }, @@ -32344,6 +32455,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -32906,6 +33018,7 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -32960,6 +33073,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -32971,6 +33085,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -32982,6 +33097,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -32998,6 +33114,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -33006,6 +33123,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -33017,6 +33135,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -33028,6 +33147,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -33038,12 +33158,14 @@ "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -33055,7 +33177,8 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mississippi": { "version": "3.0.0", @@ -33116,6 +33239,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -33478,6 +33602,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -33628,6 +33753,7 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", + "dev": true, "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -33651,6 +33777,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, "engines": { "node": ">=16" } @@ -33659,6 +33786,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -33670,6 +33798,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, "dependencies": { "isexe": "^3.1.1" }, @@ -33775,6 +33904,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, "dependencies": { "abbrev": "^2.0.0" }, @@ -34006,6 +34136,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dev": true, "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -34017,6 +34148,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, "dependencies": { "semver": "^7.1.1" }, @@ -34028,6 +34160,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -34039,6 +34172,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -34047,6 +34181,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", @@ -34061,6 +34196,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -34069,6 +34205,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -34080,6 +34217,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, "dependencies": { "ignore-walk": "^6.0.4" }, @@ -34091,6 +34229,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", + "dev": true, "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -34105,6 +34244,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -34116,6 +34256,7 @@ "version": "17.1.0", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "dev": true, "dependencies": { "@npmcli/redact": "^2.0.0", "jsonparse": "^1.3.1", @@ -34134,6 +34275,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -37497,6 +37639,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -37623,6 +37766,7 @@ "version": "18.0.6", "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "dev": true, "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -37653,6 +37797,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -37664,6 +37809,7 @@ "version": "18.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -37686,6 +37832,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -37696,12 +37843,14 @@ "node_modules/pacote/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/pacote/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -37710,6 +37859,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -37721,6 +37871,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -37732,6 +37883,7 @@ "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, "dependencies": { "minipass": "^7.0.3" }, @@ -37743,6 +37895,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, "dependencies": { "unique-slug": "^4.0.0" }, @@ -37754,6 +37907,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -37819,6 +37973,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", + "dev": true, "dependencies": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", @@ -39821,6 +39976,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -40170,6 +40326,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -40192,6 +40349,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/proggy/-/proggy-2.0.0.tgz", "integrity": "sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -40200,6 +40358,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -40208,6 +40367,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.2.tgz", "integrity": "sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==", + "dev": true, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -40215,7 +40375,8 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-polyfill": { "version": "8.3.0", @@ -40226,6 +40387,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -40290,6 +40452,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/promzard/-/promzard-1.0.2.tgz", "integrity": "sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==", + "dev": true, "dependencies": { "read": "^3.0.1" }, @@ -41597,6 +41760,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/read/-/read-3.0.1.tgz", "integrity": "sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==", + "dev": true, "dependencies": { "mute-stream": "^1.0.0" }, @@ -41608,6 +41772,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -41616,6 +41781,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -41728,6 +41894,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -42365,6 +42532,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, "engines": { "node": ">= 4" } @@ -42411,6 +42579,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -42425,6 +42594,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -42435,6 +42605,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -42454,6 +42625,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -43881,6 +44053,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "dev": true, "dependencies": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", @@ -44023,6 +44196,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -44191,6 +44365,7 @@ "version": "2.8.3", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -44204,6 +44379,7 @@ "version": "8.0.4", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", @@ -44517,6 +44693,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, "dependencies": { "minipass": "^3.1.1" }, @@ -45971,6 +46148,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -46563,6 +46741,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -46609,6 +46788,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -46616,7 +46796,8 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/telejson": { "version": "6.0.8", @@ -46906,7 +47087,9 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "peer": true }, "node_modules/thenify": { "version": "3.3.1", @@ -47197,6 +47380,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -47443,6 +47627,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "dev": true, "dependencies": { "@tufjs/models": "2.0.1", "debug": "^4.3.4", @@ -47806,6 +47991,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, "dependencies": { "unique-slug": "^2.0.0" } @@ -47814,6 +48000,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" } @@ -48223,6 +48410,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -48321,7 +48509,8 @@ "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", - "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true }, "node_modules/walker": { "version": "1.0.8", @@ -49290,6 +49479,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx index 90c6bb1c8a23..9a1e25d0a89b 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx @@ -1,9 +1,12 @@ -import React from 'react'; +import React, { useState } from 'react'; import { ActionSheet, Chip, Text, TextField, TextFieldAddon } from '@deriv-com/quill-ui'; import { localize, Localize } from '@deriv/translations'; import { observer } from 'mobx-react'; import { useTraderStore } from 'Stores/useTraderStores'; +import { getProposalRequestObject } from 'AppV2/Utils/trade-params-utils'; +import { useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; +import { ProposalResponse } from 'Stores/Modules/Trading/trade-store'; const chips_options = [ { @@ -17,27 +20,38 @@ const chips_options = [ }, ]; const BarrierInput = observer( - ({ - setInitialBarrierValue, - isDays, - onClose, - }: { - setInitialBarrierValue: (val: string) => void; - isDays: boolean; - onClose: (val: boolean) => void; - }) => { - const { barrier_1, onChange, validation_errors, tick_data, setV2ParamsInitialValues } = useTraderStore(); + ({ isDays, onClose, is_open }: { isDays: boolean; onClose: () => void; is_open: boolean }) => { + const trade_store = useTraderStore(); + const { barrier_1, onChange, tick_data, trade_types } = trade_store; + const [value, setValue] = useState(String(barrier_1.replace(/[+-]/g, ''))); const [option, setOption] = React.useState(0); const [should_show_error, setShouldShowError] = React.useState(false); - const [previous_value, setPreviousValue] = React.useState(barrier_1); const [is_focused, setIsFocused] = React.useState(false); const { pip_size } = tick_data ?? {}; const barrier_ref = React.useRef(null); - const show_hidden_error = validation_errors?.barrier_1.length > 0 && (barrier_1 || should_show_error); + const prefix = (option === 0 && '+') || (option === 1 && '-'); + const new_values = { barrier: `${prefix || ''}${value}` }; + + const proposal_req = getProposalRequestObject({ + new_values, + trade_store, + trade_type: Object.keys(trade_types)[0], + }); + + const { data: response } = useDtraderQuery( + ['proposal', `${prefix || ''}${value}`], + { + ...proposal_req, + ...new_values, + }, + { + enabled: is_open && barrier_1 !== '', + } + ); + + const show_hidden_error = Boolean(value && response?.error?.message); React.useEffect(() => { - setInitialBarrierValue(barrier_1); - setV2ParamsInitialValues({ name: 'barrier_1', value: barrier_1 }); if (barrier_1.includes('-')) { setOption(1); } else if (barrier_1.includes('+')) { @@ -45,7 +59,6 @@ const BarrierInput = observer( } else { setOption(2); } - onChange({ target: { name: 'barrier_1', value: barrier_1 } }); }, []); React.useEffect(() => { @@ -69,35 +82,47 @@ const BarrierInput = observer( }, [is_focused]); const handleChipSelect = (index: number) => { + // On each change have to check if its =,- as per the barrier_1. If yes , then set the value or else just don't + // and make it empty + setOption(index); - const current_value = barrier_1.replace(/^[+-]/, ''); - let newValue = previous_value.replace(/^[+-]/, ''); - - if (index === 0) { - newValue = `+${newValue}`; - } else if (index === 1) { - newValue = `-${newValue}`; - } else if (index === 2) { - newValue = ''; - setPreviousValue(current_value); - } + const sign = barrier_1[0]; - if ((newValue.startsWith('+') || newValue.startsWith('-')) && newValue.charAt(1) === '.') { - newValue = `${newValue.charAt(0)}0${newValue.slice(1)}`; - } else if (newValue.startsWith('.')) { - newValue = `0${newValue}`; + if (sign == '+' && index == 0) { + setValue(barrier_1.replace(/[+-]/g, '')); + } else if (sign === '-' && index == 1) { + setValue(barrier_1.replace(/[+-]/g, '')); + } else if (index == 2 && !['+', '-'].includes(sign)) { + setValue(barrier_1); + } else { + setValue(''); } - onChange({ target: { name: 'barrier_1', value: newValue } }); + // const current_value = barrier_1.replace(/^[+-]/, ''); + // let newValue = previous_value.replace(/^[+-]/, ''); + + // if (index === 0) { + // newValue = `+${newValue}`; + // } else if (index === 1) { + // newValue = `-${newValue}`; + // } else if (index === 2) { + // newValue = ''; + // setPreviousValue(current_value); + // } + + // if ((newValue.startsWith('+') || newValue.startsWith('-')) && newValue.charAt(1) === '.') { + // newValue = `${newValue.charAt(0)}0${newValue.slice(1)}`; + // } else if (newValue.startsWith('.')) { + // newValue = `0${newValue}`; + // } + // onChange({ target: { name: 'barrier_1', value: newValue } }); }; const handleOnChange = (e: { target: { name: string; value: string } }) => { let value = e.target.value; if (option === 0) value = `+${value}`; if (option === 1) value = `-${value}`; - onChange({ target: { name: 'barrier_1', value } }); - setV2ParamsInitialValues({ name: 'barrier_1', value }); - setPreviousValue(value); + setValue(value.replace(/[+-]/g, '')); }; return ( @@ -126,7 +151,7 @@ const BarrierInput = observer( noStatusIcon status={show_hidden_error ? 'error' : 'neutral'} shouldRound={false} - value={barrier_1} + value={value} allowDecimals decimals={pip_size} allowSign={false} @@ -136,7 +161,7 @@ const BarrierInput = observer( onChange={handleOnChange} placeholder={localize('Price')} variant='fill' - message={show_hidden_error ? validation_errors?.barrier_1[0] : ''} + message={show_hidden_error ? response?.error?.message : ''} ref={barrier_ref} /> ) : ( @@ -147,7 +172,7 @@ const BarrierInput = observer( noStatusIcon addonLabel={option == 0 ? '+' : '-'} decimals={pip_size} - value={barrier_1.replace(/[+-]/g, '')} + value={value} allowDecimals inputMode='decimal' allowSign={false} @@ -157,13 +182,11 @@ const BarrierInput = observer( placeholder={localize('Distance to spot')} regex={/[^0-9.,]/g} variant='fill' - message={show_hidden_error ? validation_errors?.barrier_1[0] : ''} + message={show_hidden_error ? response?.error?.message : ''} ref={barrier_ref} /> )} - {(validation_errors?.barrier_1.length == 0 || !show_hidden_error) && ( -
- )} + {!show_hidden_error &&
}
@@ -179,10 +202,9 @@ const BarrierInput = observer( primaryAction={{ content: , onAction: () => { - if (validation_errors.barrier_1.length === 0) { - onClose(true); - } else { - setShouldShowError(true); + if (!show_hidden_error && value !== '') { + onChange({ target: { name: 'barrier_1', value: `${prefix || ''}${value}` } }); + onClose(); } }, }} diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx index 8fb754275b3b..5883801edb2e 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx @@ -13,10 +13,8 @@ import { TTradeParametersProps } from '../trade-parameters'; const Barrier = observer(({ is_minimized }: TTradeParametersProps) => { const { barrier_1, - onChange, duration_unit, is_market_closed, - setV2ParamsInitialValues, v2_params_initial_values, validation_errors, proposal_info, @@ -32,12 +30,8 @@ const Barrier = observer(({ is_minimized }: TTradeParametersProps) => { const [barrier_error_shown, setBarrierErrorShown] = React.useState(false); const onClose = React.useCallback( - (is_saved = false) => { + () => { if (is_open) { - if (!is_saved) { - onChange({ target: { name: 'barrier_1', value: initialBarrierValue } }); - } - setV2ParamsInitialValues({ value: '', name: 'barrier_1' }); setIsOpen(false); } }, @@ -70,9 +64,7 @@ const Barrier = observer(({ is_minimized }: TTradeParametersProps) => { const barrier_carousel_pages = [ { id: 1, - component: ( - - ), + component: , }, { id: 2, diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx index ec6827239e99..0cf8e2ceb558 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx @@ -1,21 +1,23 @@ -import { ActionSheet, Text, TextField, useSnackbar } from '@deriv-com/quill-ui'; -import { LabelPairedCalendarSmRegularIcon, LabelPairedClockThreeSmRegularIcon } from '@deriv/quill-icons'; -import { Localize } from '@deriv/translations'; import React, { useEffect, useState } from 'react'; -import DaysDatepicker from './datepicker'; -import EndTimePicker from './timepicker'; -import { useStore } from '@deriv/stores'; -import { useTraderStore } from 'Stores/useTraderStores'; +import { LabelPairedCalendarSmRegularIcon, LabelPairedClockThreeSmRegularIcon } from '@deriv/quill-icons'; import { hasIntradayDurationUnit, setTime, toMoment } from '@deriv/shared'; -import { getBoundaries } from 'Stores/Modules/Trading/Helpers/end-time'; +import { useStore } from '@deriv/stores'; +import { Localize } from '@deriv/translations'; +import { ActionSheet, Text, TextField, useSnackbar } from '@deriv-com/quill-ui'; + +import { invalidateDTraderCache, useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; import { getClosestTimeToCurrentGMT, getDatePickerStartDate, getProposalRequestObject, } from 'AppV2/Utils/trade-params-utils'; -import { invalidateDTraderCache, useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; +import { getBoundaries } from 'Stores/Modules/Trading/Helpers/end-time'; import { ProposalResponse } from 'Stores/Modules/Trading/trade-store'; +import { useTraderStore } from 'Stores/useTraderStores'; + +import DaysDatepicker from './datepicker'; +import EndTimePicker from './timepicker'; const timeToMinutes = (time: string) => { const [hours, minutes] = time.split(':').map(Number); diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx index 82ee839ba267..b0d61599e915 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx @@ -1,16 +1,20 @@ import React, { useEffect, useRef, useState } from 'react'; import clsx from 'clsx'; import { observer } from 'mobx-react'; -import { ActionSheet, TextField, useSnackbar } from '@deriv-com/quill-ui'; + import { getUnitMap } from '@deriv/shared'; +import { useStore } from '@deriv/stores'; import { Localize, localize } from '@deriv/translations'; -import { useTraderStore } from 'Stores/useTraderStores'; -import DurationActionSheetContainer from './container'; -import { getDisplayedContractTypes } from 'AppV2/Utils/trade-types-utils'; +import { ActionSheet, TextField, useSnackbar } from '@deriv-com/quill-ui'; + import { getDatePickerStartDate, getSmallestDuration } from 'AppV2/Utils/trade-params-utils'; -import { useStore } from '@deriv/stores'; +import { getDisplayedContractTypes } from 'AppV2/Utils/trade-types-utils'; +import { useTraderStore } from 'Stores/useTraderStores'; + import { TTradeParametersProps } from '../trade-parameters'; +import DurationActionSheetContainer from './container'; + const Duration = observer(({ is_minimized }: TTradeParametersProps) => { const { duration, From 5c7fccbb0b97f40c89c9ded2aa36e61fec28ed6b Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:31:29 +0800 Subject: [PATCH 2/8] chore: removing irrelevant file --- .../Barrier/__tests__/barrier-input.spec.tsx | 3 +-- .../TradeParameters/Barrier/barrier-input.tsx | 20 ------------------- .../TradeParameters/Duration/day.tsx | 20 +++++++++---------- .../TradeParameters/Duration/duration.tsx | 14 +++++-------- 4 files changed, 15 insertions(+), 42 deletions(-) diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx index 70bd281b2bb2..47cf9f47f3c1 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx @@ -22,12 +22,11 @@ describe('BarrierInput', () => { }, }, }; - const mockBarrierInput = (mocked_store: TCoreStores) => { render( - + ); diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx index 9a1e25d0a89b..8d7fba9fca6f 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx @@ -84,7 +84,6 @@ const BarrierInput = observer( const handleChipSelect = (index: number) => { // On each change have to check if its =,- as per the barrier_1. If yes , then set the value or else just don't // and make it empty - setOption(index); const sign = barrier_1[0]; @@ -97,25 +96,6 @@ const BarrierInput = observer( } else { setValue(''); } - - // const current_value = barrier_1.replace(/^[+-]/, ''); - // let newValue = previous_value.replace(/^[+-]/, ''); - - // if (index === 0) { - // newValue = `+${newValue}`; - // } else if (index === 1) { - // newValue = `-${newValue}`; - // } else if (index === 2) { - // newValue = ''; - // setPreviousValue(current_value); - // } - - // if ((newValue.startsWith('+') || newValue.startsWith('-')) && newValue.charAt(1) === '.') { - // newValue = `${newValue.charAt(0)}0${newValue.slice(1)}`; - // } else if (newValue.startsWith('.')) { - // newValue = `0${newValue}`; - // } - // onChange({ target: { name: 'barrier_1', value: newValue } }); }; const handleOnChange = (e: { target: { name: string; value: string } }) => { diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx index 0cf8e2ceb558..ec6827239e99 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Duration/day.tsx @@ -1,23 +1,21 @@ -import React, { useEffect, useState } from 'react'; - +import { ActionSheet, Text, TextField, useSnackbar } from '@deriv-com/quill-ui'; import { LabelPairedCalendarSmRegularIcon, LabelPairedClockThreeSmRegularIcon } from '@deriv/quill-icons'; -import { hasIntradayDurationUnit, setTime, toMoment } from '@deriv/shared'; -import { useStore } from '@deriv/stores'; import { Localize } from '@deriv/translations'; -import { ActionSheet, Text, TextField, useSnackbar } from '@deriv-com/quill-ui'; +import React, { useEffect, useState } from 'react'; -import { invalidateDTraderCache, useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; +import DaysDatepicker from './datepicker'; +import EndTimePicker from './timepicker'; +import { useStore } from '@deriv/stores'; +import { useTraderStore } from 'Stores/useTraderStores'; +import { hasIntradayDurationUnit, setTime, toMoment } from '@deriv/shared'; +import { getBoundaries } from 'Stores/Modules/Trading/Helpers/end-time'; import { getClosestTimeToCurrentGMT, getDatePickerStartDate, getProposalRequestObject, } from 'AppV2/Utils/trade-params-utils'; -import { getBoundaries } from 'Stores/Modules/Trading/Helpers/end-time'; +import { invalidateDTraderCache, useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; import { ProposalResponse } from 'Stores/Modules/Trading/trade-store'; -import { useTraderStore } from 'Stores/useTraderStores'; - -import DaysDatepicker from './datepicker'; -import EndTimePicker from './timepicker'; const timeToMinutes = (time: string) => { const [hours, minutes] = time.split(':').map(Number); diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx index b0d61599e915..82ee839ba267 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Duration/duration.tsx @@ -1,19 +1,15 @@ import React, { useEffect, useRef, useState } from 'react'; import clsx from 'clsx'; import { observer } from 'mobx-react'; - +import { ActionSheet, TextField, useSnackbar } from '@deriv-com/quill-ui'; import { getUnitMap } from '@deriv/shared'; -import { useStore } from '@deriv/stores'; import { Localize, localize } from '@deriv/translations'; -import { ActionSheet, TextField, useSnackbar } from '@deriv-com/quill-ui'; - -import { getDatePickerStartDate, getSmallestDuration } from 'AppV2/Utils/trade-params-utils'; -import { getDisplayedContractTypes } from 'AppV2/Utils/trade-types-utils'; import { useTraderStore } from 'Stores/useTraderStores'; - -import { TTradeParametersProps } from '../trade-parameters'; - import DurationActionSheetContainer from './container'; +import { getDisplayedContractTypes } from 'AppV2/Utils/trade-types-utils'; +import { getDatePickerStartDate, getSmallestDuration } from 'AppV2/Utils/trade-params-utils'; +import { useStore } from '@deriv/stores'; +import { TTradeParametersProps } from '../trade-parameters'; const Duration = observer(({ is_minimized }: TTradeParametersProps) => { const { From e09e4d229f660435ffdede39ffb88937b103c3e6 Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:43:43 +0800 Subject: [PATCH 3/8] chore: fixing test case --- .../Barrier/__tests__/barrier-input.spec.tsx | 176 +++++++++--------- .../TradeParameters/Barrier/barrier-input.tsx | 22 --- 2 files changed, 85 insertions(+), 113 deletions(-) diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx index 47cf9f47f3c1..f7a9bd0cf555 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/__tests__/barrier-input.spec.tsx @@ -6,9 +6,21 @@ import TraderProviders from '../../../../../trader-providers'; import { mockStore } from '@deriv/stores'; import ModulesProvider from 'Stores/Providers/modules-providers'; import { TCoreStores } from '@deriv/stores/types'; +import { useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; + +jest.mock('AppV2/Hooks/useDtraderQuery', () => ({ + ...jest.requireActual('AppV2/Hooks/useDtraderQuery'), + useDtraderQuery: jest.fn(), +})); describe('BarrierInput', () => { - const setInitialBarrierValue = jest.fn(); + let mockUseDtraderQuery: jest.Mock; + + beforeEach(() => { + mockUseDtraderQuery = useDtraderQuery as jest.Mock; + mockUseDtraderQuery.mockReset(); + }); + const onChange = jest.fn(); const onClose = jest.fn(); const default_trade_store = { @@ -22,17 +34,25 @@ describe('BarrierInput', () => { }, }, }; - const mockBarrierInput = (mocked_store: TCoreStores) => { + const mockBarrierInput = (mocked_store: TCoreStores, is_open = true) => { render( - + ); }; it('renders BarrierInput component correctly', () => { + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: +10 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: {}, + }, + }); + mockBarrierInput(mockStore(default_trade_store)); expect(screen.getByText('Above spot')).toBeInTheDocument(); expect(screen.getByText('Below spot')).toBeInTheDocument(); @@ -42,118 +62,92 @@ describe('BarrierInput', () => { }); it('closes ActionSheet on pressing primary action when on first page', async () => { - mockBarrierInput(mockStore(default_trade_store)); + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: +10 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: {}, + }, + }); + mockBarrierInput(mockStore(default_trade_store), false); await userEvent.click(screen.getByRole('textbox')); await userEvent.click(screen.getByText(/Save/)); await waitFor(() => { - expect(onClose).toBeCalledWith(true); + expect(onClose).toHaveBeenCalled(); }); }); - it('calls setInitialBarrierValue and onChange on component mount', () => { - mockBarrierInput(mockStore(default_trade_store)); - expect(setInitialBarrierValue).toHaveBeenCalledWith('+10'); - }); - - it('handles chip selection correctly', async () => { - mockBarrierInput(mockStore(default_trade_store)); - const aboveSpotChip = screen.getByText('Above spot'); - const belowSpotChip = screen.getByText('Below spot'); - const fixedPriceChip = screen.getByText('Fixed barrier'); - - await userEvent.click(belowSpotChip); - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '-10' } }); - - await userEvent.click(fixedPriceChip); - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '' } }); - - await userEvent.click(aboveSpotChip); - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '+10' } }); - }); - it('handles input change correctly', async () => { + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: -101 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: {}, + }, + }); mockBarrierInput(mockStore(default_trade_store)); const input = screen.getByPlaceholderText('Distance to spot'); - - fireEvent.change(input, { target: { value: '20' } }); - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '+20' } }); - - const belowSpotChip = screen.getByText('Below spot'); - await userEvent.click(belowSpotChip); - fireEvent.change(input, { target: { value: '15' } }); - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '-15' } }); - }); - - it('sets initial barrier value and option correctly for a positive barrier', () => { - mockBarrierInput(mockStore(default_trade_store)); - expect(setInitialBarrierValue).toHaveBeenCalledWith('+10'); - expect(screen.getAllByRole('button')[0]).toHaveAttribute('data-state', 'selected'); - }); - - it('sets initial barrier value and option correctly for a negative barrier', () => { - default_trade_store.modules.trade.barrier_1 = '-10'; - mockBarrierInput(mockStore(default_trade_store)); - expect(setInitialBarrierValue).toHaveBeenCalledWith('-10'); - expect(screen.getAllByRole('button')[1]).toHaveAttribute('data-state', 'selected'); - }); - - it('sets initial barrier value and option correctly for a fixed price barrier', () => { - default_trade_store.modules.trade.barrier_1 = '30'; - mockBarrierInput(mockStore(default_trade_store)); - expect(setInitialBarrierValue).toHaveBeenCalledWith('30'); - expect(screen.getAllByRole('button')[2]).toHaveAttribute('data-state', 'selected'); + fireEvent.change(input, { target: { value: '10' } }); + const inputElement = screen.getByPlaceholderText('Distance to spot'); + expect(inputElement).toHaveValue('10'); }); it('shows error when a validation error comes', () => { - default_trade_store.modules.trade.validation_errors.barrier_1 = ['Something went wrong'] as never; - mockBarrierInput(mockStore(default_trade_store)); - expect(screen.getByText('Something went wrong')).toBeInTheDocument(); - }); - - it('shows error when a validation error comes for fixed price as well', () => { - default_trade_store.modules.trade.validation_errors.barrier_1 = ['Something went wrong'] as never; - default_trade_store.modules.trade.barrier_1 = '10'; - mockBarrierInput(mockStore(default_trade_store)); - expect(screen.getByText('Something went wrong')).toBeInTheDocument(); - }); - - it('handles chip selection correctly for Above spot when initial barrier is negative', async () => { - default_trade_store.modules.trade.barrier_1 = '-10'; + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: -0.6 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: { + message: 'Barrier is out of acceptable range.', + }, + }, + }); mockBarrierInput(mockStore(default_trade_store)); - - const aboveSpotChip = screen.getByText('Above spot'); - await userEvent.click(aboveSpotChip); - - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '+10' } }); + expect(screen.getByText('Barrier is out of acceptable range.')).toBeInTheDocument(); }); - it('handles chip selection correctly for Below spot when initial barrier is positive', async () => { - default_trade_store.modules.trade.barrier_1 = '+.6'; + it('show value correctly for Below spot', async () => { + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: -0.6 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: {}, + }, + }); + default_trade_store.modules.trade.barrier_1 = '-0.6'; mockBarrierInput(mockStore(default_trade_store)); - const belowSpotChip = screen.getByText('Below spot'); - await userEvent.click(belowSpotChip); - - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '-0.6' } }); + const inputElement = screen.getByPlaceholderText('Distance to spot'); + expect(inputElement).toHaveValue('0.6'); }); - it('handles chip selection correctly for Fixed barrier', async () => { - default_trade_store.modules.trade.barrier_1 = '+.6'; + it('show value correctly for above spot', async () => { + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: +0.6 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: {}, + }, + }); + default_trade_store.modules.trade.barrier_1 = '+0.6'; mockBarrierInput(mockStore(default_trade_store)); - const fixedPriceChip = screen.getByText('Fixed barrier'); - await userEvent.click(fixedPriceChip); - - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '' } }); + const inputElement = screen.getByPlaceholderText('Distance to spot'); + expect(inputElement).toHaveValue('0.6'); }); - it('handles chip selection correctly for Above spot when initial barrier is fixed price', async () => { - default_trade_store.modules.trade.barrier_1 = '.6'; + it('show value correctly when initial barrier is fixed price', async () => { + default_trade_store.modules.trade.barrier_1 = '60'; + mockUseDtraderQuery.mockReturnValue({ + data: { + proposal: { barrier: 60 }, + echo_req: { contract_type: 'TURBOSSHORT', authorized: true }, + error: {}, + }, + }); mockBarrierInput(mockStore(default_trade_store)); - const aboveSpotChip = screen.getByText('Above spot'); - await userEvent.click(aboveSpotChip); - - expect(onChange).toHaveBeenCalledWith({ target: { name: 'barrier_1', value: '+0.6' } }); + const inputElement = screen.getByPlaceholderText('Price'); + expect(inputElement).toHaveValue('60'); }); }); diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx index 8d7fba9fca6f..a69539c4c816 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx @@ -25,8 +25,6 @@ const BarrierInput = observer( const { barrier_1, onChange, tick_data, trade_types } = trade_store; const [value, setValue] = useState(String(barrier_1.replace(/[+-]/g, ''))); const [option, setOption] = React.useState(0); - const [should_show_error, setShouldShowError] = React.useState(false); - const [is_focused, setIsFocused] = React.useState(false); const { pip_size } = tick_data ?? {}; const barrier_ref = React.useRef(null); const prefix = (option === 0 && '+') || (option === 1 && '-'); @@ -61,26 +59,6 @@ const BarrierInput = observer( } }, []); - React.useEffect(() => { - const barrier_element = barrier_ref.current; - const checkFocus = () => { - setIsFocused(!!(barrier_element && barrier_element.contains(document.activeElement))); - }; - document.addEventListener('focusin', checkFocus); - document.addEventListener('focusout', checkFocus); - - return () => { - document.removeEventListener('focusin', checkFocus); - document.removeEventListener('focusout', checkFocus); - }; - }); - - React.useEffect(() => { - if (is_focused) { - setShouldShowError(false); - } - }, [is_focused]); - const handleChipSelect = (index: number) => { // On each change have to check if its =,- as per the barrier_1. If yes , then set the value or else just don't // and make it empty From ed0304afb3204b5ce5b5ac95cba8f9ab54d7056a Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:34:10 +0800 Subject: [PATCH 4/8] fix: show error on empty field --- .../TradeParameters/Barrier/barrier-input.tsx | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx index a69539c4c816..6c879446e7f2 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx @@ -25,10 +25,13 @@ const BarrierInput = observer( const { barrier_1, onChange, tick_data, trade_types } = trade_store; const [value, setValue] = useState(String(barrier_1.replace(/[+-]/g, ''))); const [option, setOption] = React.useState(0); + const [should_show_error, setShouldShowError] = React.useState(false); + const [is_focused, setIsFocused] = React.useState(false); const { pip_size } = tick_data ?? {}; const barrier_ref = React.useRef(null); const prefix = (option === 0 && '+') || (option === 1 && '-'); const new_values = { barrier: `${prefix || ''}${value}` }; + const required_error = localize('Barrier is a required field.'); const proposal_req = getProposalRequestObject({ new_values, @@ -59,10 +62,31 @@ const BarrierInput = observer( } }, []); + React.useEffect(() => { + const barrier_element = barrier_ref.current; + const checkFocus = () => { + setIsFocused(!!(barrier_element && barrier_element.contains(document.activeElement))); + }; + document.addEventListener('focusin', checkFocus); + document.addEventListener('focusout', checkFocus); + + return () => { + document.removeEventListener('focusin', checkFocus); + document.removeEventListener('focusout', checkFocus); + }; + }); + + React.useEffect(() => { + if (is_focused) { + setShouldShowError(false); + } + }, [is_focused]); + const handleChipSelect = (index: number) => { // On each change have to check if its =,- as per the barrier_1. If yes , then set the value or else just don't // and make it empty setOption(index); + setShouldShowError(false); const sign = barrier_1[0]; if (sign == '+' && index == 0) { @@ -76,6 +100,16 @@ const BarrierInput = observer( } }; + const getErrorMessage = () => { + if (should_show_error) { + return required_error; + } + if (show_hidden_error) { + return response?.error?.message; + } + return ''; + }; + const handleOnChange = (e: { target: { name: string; value: string } }) => { let value = e.target.value; if (option === 0) value = `+${value}`; @@ -107,7 +141,7 @@ const BarrierInput = observer( customType='commaRemoval' name='barrier_1' noStatusIcon - status={show_hidden_error ? 'error' : 'neutral'} + status={show_hidden_error || should_show_error ? 'error' : 'neutral'} shouldRound={false} value={value} allowDecimals @@ -119,7 +153,7 @@ const BarrierInput = observer( onChange={handleOnChange} placeholder={localize('Price')} variant='fill' - message={show_hidden_error ? response?.error?.message : ''} + message={getErrorMessage()} ref={barrier_ref} /> ) : ( @@ -134,17 +168,19 @@ const BarrierInput = observer( allowDecimals inputMode='decimal' allowSign={false} - status={show_hidden_error ? 'error' : 'neutral'} + status={show_hidden_error || should_show_error ? 'error' : 'neutral'} shouldRound={false} onChange={handleOnChange} placeholder={localize('Distance to spot')} regex={/[^0-9.,]/g} variant='fill' - message={show_hidden_error ? response?.error?.message : ''} + message={getErrorMessage()} ref={barrier_ref} /> )} - {!show_hidden_error &&
} + {!(show_hidden_error || should_show_error) && ( +
+ )}
@@ -163,6 +199,8 @@ const BarrierInput = observer( if (!show_hidden_error && value !== '') { onChange({ target: { name: 'barrier_1', value: `${prefix || ''}${value}` } }); onClose(); + } else { + setShouldShowError(true); } }, }} From 1db8d1744f9e38ff22c4ba368728c08c04bc40ea Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:49:16 +0800 Subject: [PATCH 5/8] chore: remove unused state --- .../src/AppV2/Components/TradeParameters/Barrier/barrier.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx index 5883801edb2e..1799f02503a9 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier.tsx @@ -21,7 +21,6 @@ const Barrier = observer(({ is_minimized }: TTradeParametersProps) => { trade_type_tab, } = useTraderStore(); const [is_open, setIsOpen] = React.useState(false); - const [initialBarrierValue, setInitialBarrierValue] = React.useState(''); const isDays = duration_unit == 'd'; const has_error = validation_errors.barrier_1.length > 0 || @@ -36,7 +35,7 @@ const Barrier = observer(({ is_minimized }: TTradeParametersProps) => { } }, // eslint-disable-next-line react-hooks/exhaustive-deps - [initialBarrierValue, is_open] + [is_open] ); React.useEffect(() => { From c6f416c7b36caa75b8a7f772d4e441d77082a251 Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:42:03 +0800 Subject: [PATCH 6/8] chore: fix subtasks --- .../TradeParameters/Barrier/barrier-input.tsx | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx index 07b8c6059a5b..6141a6b9a9b1 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx @@ -1,12 +1,13 @@ import React, { useState } from 'react'; +import { observer } from 'mobx-react-lite'; + +import { Localize, localize } from '@deriv/translations'; import { ActionSheet, Chip, Text, TextField, TextFieldAddon } from '@deriv-com/quill-ui'; -import { localize, Localize } from '@deriv/translations'; -import { observer } from 'mobx-react-lite'; -import { useTraderStore } from 'Stores/useTraderStores'; -import { getProposalRequestObject } from 'AppV2/Utils/trade-params-utils'; import { useDtraderQuery } from 'AppV2/Hooks/useDtraderQuery'; +import { getProposalRequestObject } from 'AppV2/Utils/trade-params-utils'; import { ProposalResponse } from 'Stores/Modules/Trading/trade-store'; +import { useTraderStore } from 'Stores/useTraderStores'; const chips_options = [ { @@ -24,9 +25,11 @@ const BarrierInput = observer( const trade_store = useTraderStore(); const { barrier_1, onChange, tick_data, trade_types } = trade_store; const [value, setValue] = useState(String(barrier_1.replace(/[+-]/g, ''))); + const [input_value, setInputValue] = useState<{ [key: string]: string }>({}); const [option, setOption] = React.useState(0); const [should_show_error, setShouldShowError] = React.useState(false); const [is_focused, setIsFocused] = React.useState(false); + const [is_processing, setIsProcessing] = React.useState(false); const { pip_size } = tick_data ?? {}; const barrier_ref = React.useRef(null); const prefix = (option === 0 && '+') || (option === 1 && '-'); @@ -46,7 +49,7 @@ const BarrierInput = observer( ...new_values, }, { - enabled: is_open && barrier_1 !== '', + enabled: (is_open && barrier_1 !== '') || is_processing, } ); @@ -83,13 +86,16 @@ const BarrierInput = observer( }, [is_focused]); const handleChipSelect = (index: number) => { + const input = { ...input_value, ...{ [option]: value } }; + setInputValue(input); // On each change have to check if its =,- as per the barrier_1. If yes , then set the value or else just don't // and make it empty setOption(index); setShouldShowError(false); const sign = barrier_1[0]; - - if (sign === '+' && index === 0) { + if (input_value[index]) { + setValue(input_value[index]); + } else if (sign === '+' && index === 0) { setValue(barrier_1.replace(/[+-]/g, '')); } else if (sign === '-' && index === 1) { setValue(barrier_1.replace(/[+-]/g, '')); @@ -98,15 +104,21 @@ const BarrierInput = observer( } else { setValue(''); } + setTimeout(() => { + setIsProcessing(false); + }, 0); }; const getErrorMessage = () => { - if (should_show_error) { - return required_error; + if (is_processing) { + return ''; } if (show_hidden_error) { return response?.error?.message; } + if (should_show_error) { + return required_error; + } return ''; }; @@ -126,7 +138,10 @@ const BarrierInput = observer( {chips_options.map((item, index) => ( handleChipSelect(index)} + onClick={() => { + setIsProcessing(true); + handleChipSelect(index); + }} selected={index == option} > {item.name} @@ -199,13 +214,6 @@ const BarrierInput = observer( if (!show_hidden_error && value !== '') { onChange({ target: { name: 'barrier_1', value: `${prefix || ''}${value}` } }); onClose(); - // if (validation_errors.barrier_1.length === 0) { - // onClose(true); - - // // This is a workaround to re-trigger any validation errors that were hidden behind the action sheet - // handleOnChange({ - // target: { name: 'barrier_1', value: barrier_1.replace(/[+-]/g, '') }, - // }); } else { setShouldShowError(true); } From f9ab8694b491ab055e7cf8d9cdf7f9bc228f76bc Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:56:47 +0800 Subject: [PATCH 7/8] chore: stop calling ws for empty value --- .../TradeParameters/Barrier/barrier-input.tsx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx index 6141a6b9a9b1..955106968e96 100644 --- a/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx +++ b/packages/trader/src/AppV2/Components/TradeParameters/Barrier/barrier-input.tsx @@ -29,7 +29,6 @@ const BarrierInput = observer( const [option, setOption] = React.useState(0); const [should_show_error, setShouldShowError] = React.useState(false); const [is_focused, setIsFocused] = React.useState(false); - const [is_processing, setIsProcessing] = React.useState(false); const { pip_size } = tick_data ?? {}; const barrier_ref = React.useRef(null); const prefix = (option === 0 && '+') || (option === 1 && '-'); @@ -49,7 +48,7 @@ const BarrierInput = observer( ...new_values, }, { - enabled: (is_open && barrier_1 !== '') || is_processing, + enabled: is_open && barrier_1 !== '' && value !== '', } ); @@ -104,15 +103,9 @@ const BarrierInput = observer( } else { setValue(''); } - setTimeout(() => { - setIsProcessing(false); - }, 0); }; const getErrorMessage = () => { - if (is_processing) { - return ''; - } if (show_hidden_error) { return response?.error?.message; } @@ -139,7 +132,6 @@ const BarrierInput = observer( { - setIsProcessing(true); handleChipSelect(index); }} selected={index == option} From ca501785c2898c40b96050775cecf2234da0d03f Mon Sep 17 00:00:00 2001 From: ahmadtaimoor-deriv <129935294+ahmadtaimoor-deriv@users.noreply.github.com> Date: Tue, 14 Jan 2025 16:04:55 +0800 Subject: [PATCH 8/8] chore: trigger