diff --git a/mining-pool/package-lock.json b/mining-pool/package-lock.json index 31a77b9..c455b9a 100644 --- a/mining-pool/package-lock.json +++ b/mining-pool/package-lock.json @@ -1328,6 +1328,64 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -1472,6 +1530,11 @@ } } }, + "@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==" + }, "@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -1639,6 +1702,12 @@ "dev": true, "optional": true }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@polka/url": { "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", @@ -2929,6 +2998,11 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3910,7 +3984,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -3918,8 +3991,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colord": { "version": "2.9.3", @@ -4061,6 +4133,15 @@ "typedarray": "^0.0.6" } }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", @@ -4789,6 +4870,11 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "easy-stack": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", @@ -4804,6 +4890,45 @@ "zrender": "5.6.1" } }, + "editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "requires": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==" + } + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4831,8 +4956,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -5932,6 +6056,58 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" }, + "foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "requires": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "form-data": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", @@ -6552,6 +6728,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -6665,8 +6846,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", @@ -6780,14 +6960,22 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -6829,6 +7017,59 @@ "@sideway/pinpoint": "^2.0.0" } }, + "js-beautify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", + "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + } + } + }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, "js-message": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", @@ -7740,6 +7981,14 @@ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, + "nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "requires": { + "abbrev": "^2.0.0" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -8067,6 +8316,11 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + }, "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -8193,6 +8447,27 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + } + } + }, "path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", @@ -8732,6 +9007,11 @@ "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==" }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -10051,7 +10331,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10061,14 +10340,37 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -10098,6 +10400,21 @@ "ansi-regex": "^2.0.0" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + } + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -11464,6 +11781,39 @@ } } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/mining-pool/package.json b/mining-pool/package.json index c3922f0..3c7def3 100644 --- a/mining-pool/package.json +++ b/mining-pool/package.json @@ -19,6 +19,7 @@ "core-js": "^3.8.3", "echarts": "^5.5.1", "element-ui": "^2.15.14", + "js-beautify": "^1.15.4", "jsencrypt": "^3.3.2", "quill": "^2.0.3", "vue": "^2.6.14", diff --git a/mining-pool/src/api/documentManagement.js b/mining-pool/src/api/documentManagement.js index c5fd12c..2a91a03 100644 --- a/mining-pool/src/api/documentManagement.js +++ b/mining-pool/src/api/documentManagement.js @@ -1,6 +1,6 @@ import request from '../utils/request' -//查询文档列表 +//查询文档列表 及根据关键搜素接口 export function getListDataByPage(data) { return request({ url: `manage/documents/getListDataByPage`, diff --git a/mining-pool/src/components/content.vue b/mining-pool/src/components/content.vue index 2bea413..2a48bc5 100644 --- a/mining-pool/src/components/content.vue +++ b/mining-pool/src/components/content.vue @@ -292,10 +292,11 @@ export default { const coin = this.currencyList.find(item => item.value === this.activeItemCoin.value); if (!coin) return; let jumpName = coin.path.charAt(0).toUpperCase() + coin.path.slice(1) //name跳转 首字母大写 - + console.log(jumpName,1366565,coin); + let url = `/${lang}/AccessMiningPool` // 使用 name 进行导航,避免重复的路由参数 this.$router.push({ - name:jumpName, + path:url, params: { lang: lang, coin: this.activeItemCoin.value, @@ -307,8 +308,9 @@ export default { } else { // 移除开头的斜杠,统一处理路径格式 - const cleanPath = path.startsWith('/') ? path.slice(1) : path; - this.$router.push(`/${lang}/${cleanPath}`); + // const cleanPath = path.startsWith('/') ? path.slice(1) : path; + let cleanPath = `/${lang}/AccessMiningPool` + this.$router.push(cleanPath); } @@ -511,6 +513,7 @@ export default { // overflow-y: scroll; position: relative; overflow-x: hidden; + overflow-y: auto; } // .headerBox{ diff --git a/mining-pool/src/i18n/backendSystem.js b/mining-pool/src/i18n/backendSystem.js index 849cf7e..b29847e 100644 --- a/mining-pool/src/i18n/backendSystem.js +++ b/mining-pool/src/i18n/backendSystem.js @@ -101,6 +101,13 @@ export const backendSystem_zh = { transferAmount:"转账金额", updateSuccess:"修改成功", publishArticle:"发布文章", + pleaseInputKeyword:"请输入搜索内容", + pleaseInputType:"请选择文档类型", + pleaseSelect:"请选择", + miningTutorial:"挖矿教程", + commonProblems:"常见问题", + other:"其他", + announcementCenter:"公告中心", } } @@ -208,6 +215,13 @@ export const backendSystem_en = { transferAmount:"Transfer Amount", updateSuccess:"Update Success", publishArticle:"Publish Article", + pleaseInputKeyword:"Please input search content", + pleaseInputType:"Please select document type", + pleaseSelect:"Please select", + miningTutorial:"Mining Tutorial", + commonProblems:"Common Problems", + other:"Other", + announcementCenter:"Announcement Center", } } diff --git a/mining-pool/src/layout/index.vue b/mining-pool/src/layout/index.vue index 94610ac..c80e6c7 100644 --- a/mining-pool/src/layout/index.vue +++ b/mining-pool/src/layout/index.vue @@ -6,7 +6,7 @@ - + diff --git a/mining-pool/src/router/index.js b/mining-pool/src/router/index.js index 1ed321c..60edd7b 100644 --- a/mining-pool/src/router/index.js +++ b/mining-pool/src/router/index.js @@ -559,6 +559,49 @@ const childrenRoutes = [ } } }, + {//公告详情 + path: 'announcementDetails', + name: 'AnnouncementDetails', + component: () => import('../views/announcementDetails/index.vue'), + meta: { + title: '公告详情', + // description: i18n.t(`seo.announcements`) || 'M2Pool 矿池公告中心,提供最新的公告、通知和重要信息,让用户及时了解矿池的最新动态和服务变更。', + allAuthority: [`all`], + // keywords: { + // en: 'Announcement Center,Latest Announcements,Mining Pool News,Service Updates,Important Notices', + // zh: 'M2Pool 矿池,公告中心,最新公告,矿池动态,服务更新,重要通知' + // } + } + }, + {//常见问题 + path: 'commonProblem', + name: 'CommonProblem', + component: () => import('../views/commonProblem/index.vue'), + meta: { + title: '常见问题', + // description: i18n.t(`seo.announcements`) || 'M2Pool 矿池公告中心,提供最新的公告、通知和重要信息,让用户及时了解矿池的最新动态和服务变更。', + allAuthority: [`all`], + // keywords: { + // en: 'Announcement Center,Latest Announcements,Mining Pool News,Service Updates,Important Notices', + // zh: 'M2Pool 矿池,公告中心,最新公告,矿池动态,服务更新,重要通知' + // } + } + }, + {//搜索结果页面 + path: 'searchResult', + name: 'SearchResult', + component: () => import('../views/searchResult/index.vue'), + meta: { + title: '搜索结果', + // description: i18n.t(`seo.announcements`) || 'M2Pool 矿池公告中心,提供最新的公告、通知和重要信息,让用户及时了解矿池的最新动态和服务变更。', + allAuthority: [`all`], + // keywords: { + // en: 'Announcement Center,Latest Announcements,Mining Pool News,Service Updates,Important Notices', + // zh: 'M2Pool 矿池,公告中心,最新公告,矿池动态,服务更新,重要通知' + // } + } + }, + {//警报通知 path: 'alerts', name: 'Alerts', @@ -827,13 +870,28 @@ const router = new VueRouter({ base: process.env.BASE_URL, routes, strict: true, // 启用严格模式,不允许尾部斜杠 - + scrollBehavior(to, from, savedPosition) { //每次路由跳转时,滚动到顶部 + // 如果有保存的滚动位置(比如浏览器前进后退),就用它 + if (savedPosition) { + return savedPosition; + } else { + // 否则滚动到顶部,并使用平滑滚动 + return { x: 0, y: 0, behavior: 'smooth' }; + } + } }) - - - - +router.afterEach(() => { + Vue.nextTick(() => { + // 滚动主内容区 + const contentMain = document.querySelector('.el-main'); + if (contentMain) { + contentMain.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); + } + // 兼容其它页面(如登录页等) + window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); + }); +}); router.beforeEach((to, from, next) => { const lang = to.params.lang || (localStorage.getItem('lang') || 'en'); diff --git a/mining-pool/src/views/AccessMiningPool/index.js b/mining-pool/src/views/AccessMiningPool/index.js index 41e2e3a..b414504 100644 --- a/mining-pool/src/views/AccessMiningPool/index.js +++ b/mining-pool/src/views/AccessMiningPool/index.js @@ -1,5 +1,4 @@ - - +import { findDataInfo ,documentsList} from '../../api/documentManagement' export default { data() { return { @@ -257,6 +256,21 @@ export default { imgUrl: `${this.$baseApi}img/nexa.png`, activeName: "1", currentRoutePath:"", + + listParams:{ + type:"1",//挖矿教程 + lang:this.$i18n.locale, + pageNum:1, + pageSize:50 + }, + tutorialLoading:false, + navList:[], + DetailsParams:{ + id:"", + lang:this.$i18n.locale, + }, + info:"", + activeId:"" } }, @@ -280,9 +294,9 @@ export default { mounted() { - if (this.$route.name =="AccessMiningPool" ) { - this.$router.go(-1); - } + // if (this.$route.name =="AccessMiningPool" ) { + // this.$router.go(-1); + // } @@ -358,11 +372,47 @@ export default { this.activeItem = this.currencyList[0]; } + + + this.fetchAllList(this.listParams) + }, methods: { + async fetchAllList(params){ + this.setLoading('tutorialLoading', true); + const res = await documentsList(params) + console.log(res,"res"); + + if (res.code === 200) { + this.navList = res.rows + + if (this.$route.query.id) { + this.DetailsParams.id = this.$route.query.id + + }else{ + this.DetailsParams.id = this.navList[0].id; + } + this.fetchProblemDetails(this.DetailsParams) + } + + }, + + async fetchProblemDetails(params) { + this.setLoading('tutorialLoading', true); + const res = await findDataInfo(params) + if(res && res.code === 200){ + + this.info = res.data.content || "" + this.activeId = res.data.id + } + this.setLoading('tutorialLoading', false); + }, + + + // isActiveRoute(item) { // // 直接使用完整的路径进行比较 // return this.currentRoutePath.includes(`AccessMiningPool/${item.path}`); @@ -413,18 +463,21 @@ export default { clickJump(item) { - if (!item.path) return; // 添加路径检查 - this.activeCoin = item.value - this.pageTitle = item.name - this.imgUrl = item.imgUrl - this.$addStorageEvent(1, `activeCoin`, JSON.stringify(item.value)) - // this.$router.push(item.url) - const lang = this.$i18n.locale; - this.$router.push(`/${lang}/AccessMiningPool/${item.path}`).catch(err => { - if (err.name !== 'NavigationDuplicated') { - console.error('Navigation failed:', err); - } - }); + + this.DetailsParams.id = item.id + this.fetchProblemDetails(this.DetailsParams) + // if (!item.path) return; // 添加路径检查 + // this.activeCoin = item.value + // this.pageTitle = item.name + // this.imgUrl = item.imgUrl + // this.$addStorageEvent(1, `activeCoin`, JSON.stringify(item.value)) + // // this.$router.push(item.url) + // const lang = this.$i18n.locale; + // this.$router.push(`/${lang}/AccessMiningPool/${item.path}`).catch(err => { + // if (err.name !== 'NavigationDuplicated') { + // console.error('Navigation failed:', err); + // } + // }); diff --git a/mining-pool/src/views/AccessMiningPool/index.vue b/mining-pool/src/views/AccessMiningPool/index.vue index d0887ff..6818475 100644 --- a/mining-pool/src/views/AccessMiningPool/index.vue +++ b/mining-pool/src/views/AccessMiningPool/index.vue @@ -1,5 +1,5 @@ diff --git a/mining-pool/src/views/home/index.js b/mining-pool/src/views/home/index.js index a704fa5..e488081 100644 --- a/mining-pool/src/views/home/index.js +++ b/mining-pool/src/views/home/index.js @@ -1563,10 +1563,12 @@ export default { if (url === '/AccessMiningPool') { const coin = this.currencyList.find(item => item.value === this.params.coin); if (!coin) return; - let jumpName = coin.path.charAt(0).toUpperCase() + coin.path.slice(1) //name跳转 首字母大写 + // let jumpName = coin.path.charAt(0).toUpperCase() + coin.path.slice(1) //name跳转 首字母大写 + + let url = `/${this.lang}/AccessMiningPool` // 使用 name 进行导航,避免重复的路由参数 this.$router.push({ - name: jumpName, + path:url, params: { lang: this.lang, coin: this.params.coin, @@ -1578,8 +1580,9 @@ export default { } else { // 移除开头的斜杠,统一处理路径格式 - const cleanPath = url.startsWith('/') ? url.slice(1) : url; - this.$router.push(`/${this.lang}/${cleanPath}`); + // const cleanPath = url.startsWith('/') ? url.slice(1) : url; + let cleanPath = `/${this.lang}/AccessMiningPool` + this.$router.push(cleanPath); } }, diff --git a/mining-pool/src/views/searchResult/index.js b/mining-pool/src/views/searchResult/index.js new file mode 100644 index 0000000..d6ee218 --- /dev/null +++ b/mining-pool/src/views/searchResult/index.js @@ -0,0 +1,176 @@ +import { getListDataByPage } from "../../api/documentManagement"; + +export default { + data() { + return { + searchKeyword: '', + searchResults: [], + currentPage: 1, + pageSize: 10, + totalCount: 0, + previewVisible: false, + previewData: null, + pageNum:1, + + // 文档类型映射 + documentTypes: { + // '1': '服务条款', + // '2': 'API文档', + // '3': '挖矿教程', + // '0': '其他' + }, + searchLoading:false + } + }, + mounted() { + try { + this.documentTypes= JSON.parse(localStorage.getItem("TypeList")) || {} + } catch (error) { + console.log(error,"error"); + } + + // 从URL参数获取搜索关键词和结果数据 + this.searchKeyword = this.$route.query.keyword || ''; + + // 如果有搜索结果数据,直接使用 + if (this.$route.query.results) { + try { + const results = JSON.parse(decodeURIComponent(this.$route.query.results)); + this.searchResults = results.rows || []; + this.totalCount =results.total || 0; + } catch (error) { + console.error('解析搜索结果数据失败:', error); + } + } else if (this.searchKeyword) { + // 如果没有结果数据但有关键词,则重新搜索 + this.fetchSearchResults(); + } + }, + methods: { + /** + * 获取搜索结果 + */ + async fetchSearchResults() { + this.setLoading('searchLoading', true); + try { + const response = await getListDataByPage({ + keyword: this.searchKeyword, + pageNum: this.pageNum, + pageSize: this.pageSize, + lang: this.$i18n.locale + }); + + if (response && response.code === 200) { + this.searchResults = response.rows || []; + this.totalCount = response.total || 0; + } + } catch (error) { + console.error('获取搜索结果失败:', error); + this.$message.error('获取搜索结果失败'); + } + this.setLoading('searchLoading', false); + }, + + /** + * 高亮关键词 + */ + highlightKeyword(text) { + if (!this.searchKeyword || !text) return text; + const regex = new RegExp(`(${this.searchKeyword})`, 'gi'); + return text.replace(regex, '$1'); + }, + + /** + * 获取内容预览 + */ + getContentPreview(content) { + if (!content) return ''; + // 移除HTML标签,获取纯文本 + const text = content.replace(/<[^>]*>/g, ''); + return text.length > 100 ? text.substring(0, 100) + '...' : text; + }, + + /** + * 格式化日期 + */ + formatDate(dateString) { + if (!dateString) return ''; + const date = new Date(dateString); + return date.toLocaleDateString('zh-CN', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit' + }); + }, + + /** + * 获取文档类型名称 + */ + getDocumentTypeName(type) { + try { + let label = this.documentTypes.find(item => item.value == type)?.label + return this.$t(label) + } catch (error) { + console.log(error,"error"); + return '未知类型'; + } + + }, + + /** + * 处理分页变化 + */ + handlePageChange(page) { + this.currentPage = page; + this.fetchSearchResults(); + }, + + /** + * 处理搜索结果项点击 + */ + handleItemClick(item) { + // this.handlePreview(item); + let url + if (item.articleUrl) { + url = `/${this.$i18n.locale}/${item.articleUrl}` + } + + this.$router.push({ + path:url, + query:{ + id:item.id + } + }) + }, + + /** + * 预览文档 + */ + handlePreview(item) { + this.previewData = item; + this.previewVisible = true; + }, + + + + /** + * 关闭预览对话框 + */ + handlePreviewClose() { + this.previewVisible = false; + this.previewData = null; + }, + handleCurrentChange(page){ + this.pageNum = page + this.fetchSearchResults() + }, + handleSizeChange(size){ + this.pageSize = size + this.currentPage = 1 + this.pageNum = 1 + this.fetchSearchResults() + } + } +} \ No newline at end of file diff --git a/mining-pool/src/views/searchResult/index.vue b/mining-pool/src/views/searchResult/index.vue new file mode 100644 index 0000000..af41994 --- /dev/null +++ b/mining-pool/src/views/searchResult/index.vue @@ -0,0 +1,463 @@ + + + + + \ No newline at end of file