diff --git a/hd-glasses-app/deployHD.js b/hd-glasses-app/deployHD.js new file mode 100644 index 0000000..ce86d52 --- /dev/null +++ b/hd-glasses-app/deployHD.js @@ -0,0 +1,20 @@ +const client = require('scp2'); +const ora = require('ora'); +const chalk = require('chalk'); +const spinner = ora(chalk.green('正在发布到服务器...')); +spinner.start(); + +client.scp('./dist/', { // 本地打包文件的位置 + "host": '172.16.3.19', // IP地址 + "port": '22', // 服务器端口 + "username": 'root', // 用户名 + "password": 'Huawei@123', // 密码 + "path": '/home/workplace/im/hd-glasses-app' // 项目路径 +}, err =>{ + spinner.stop(); + if (!err) { + console.log(chalk.green("服务器部署完毕。")) + } else { + console.log("err", err) + } +}) diff --git a/hd-glasses-app/package-lock.json b/hd-glasses-app/package-lock.json index c775cc2..16aa955 100644 --- a/hd-glasses-app/package-lock.json +++ b/hd-glasses-app/package-lock.json @@ -39,6 +39,19 @@ "requires": { "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "@babel/compat-data": { @@ -334,6 +347,19 @@ "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "@babel/parser": { @@ -2038,29 +2064,6 @@ "webpack-merge": "^5.7.3", "webpack-virtual-modules": "^0.4.2", "whatwg-fetch": "^3.6.2" - }, - "dependencies": { - "@vue/vue-loader-v15": { - "version": "npm:vue-loader@15.10.2", - "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.2.tgz", - "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - } - } - } } }, "@vue/cli-shared-utils": { @@ -2092,6 +2095,27 @@ "color-convert": "^2.0.1" } }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", @@ -2102,6 +2126,15 @@ "supports-color": "^7.1.0" } }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", @@ -2123,6 +2156,28 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2132,6 +2187,33 @@ "yallist": "^4.0.0" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", @@ -2225,6 +2307,27 @@ } } }, + "@vue/vue-loader-v15": { + "version": "npm:vue-loader@15.11.1", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz", + "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + } + } + }, "@vue/web-component-wrapper": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", @@ -2502,14 +2605,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -2557,6 +2658,14 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", @@ -2680,8 +2789,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base64-js": { "version": "1.5.1", @@ -2707,17 +2815,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", @@ -2789,7 +2886,6 @@ "version": "1.1.11", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2816,16 +2912,6 @@ "update-browserslist-db": "^1.0.13" } }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2895,14 +2981,48 @@ "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "chokidar": { @@ -2957,7 +3077,6 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "requires": { "restore-cursor": "^3.1.0" } @@ -3030,8 +3149,7 @@ "cli-spinners": { "version": "2.9.1", "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "dev": true + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==" }, "clipboardy": { "version": "2.3.0", @@ -3058,8 +3176,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" }, "clone-deep": { "version": "4.0.1", @@ -3087,7 +3204,6 @@ "version": "1.9.3", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -3095,8 +3211,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "colord": { "version": "2.9.3", @@ -3180,8 +3295,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "connect-history-api-fallback": { "version": "2.0.0", @@ -3283,8 +3397,7 @@ "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cosmiconfig": { "version": "7.1.0", @@ -3670,7 +3783,6 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, "requires": { "clone": "^1.0.2" } @@ -3965,8 +4077,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { "version": "7.32.0", @@ -4734,8 +4845,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.3", @@ -4907,8 +5017,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.0", @@ -5158,7 +5267,6 @@ "version": "1.0.6", "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5167,8 +5275,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ipaddr.js": { "version": "2.1.0", @@ -5248,8 +5355,7 @@ "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, "is-number": { "version": "7.0.0", @@ -5275,12 +5381,6 @@ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, "is-what": { "version": "3.14.1", "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", @@ -5674,62 +5774,21 @@ "dev": true }, "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "chalk": "^2.4.2" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } } } @@ -5934,8 +5993,7 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mini-css-extract-plugin": { "version": "2.7.6", @@ -5997,7 +6055,6 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6061,6 +6118,11 @@ "thunky": "^1.0.2" } }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", @@ -6291,7 +6353,6 @@ "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -6300,7 +6361,6 @@ "version": "5.1.2", "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -6337,71 +6397,18 @@ } }, "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-4.1.1.tgz", + "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", + "cli-spinners": "^2.2.0", "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "p-finally": { @@ -6538,8 +6545,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "2.0.1", @@ -7131,6 +7137,19 @@ "chalk": "^2.1.0", "figures": "^2.0.0", "log-update": "^2.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "protocol-buffers-schema": { @@ -7563,7 +7582,6 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -7627,6 +7645,42 @@ "ajv-keywords": "^3.5.2" } }, + "scp2": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/scp2/-/scp2-0.5.0.tgz", + "integrity": "sha512-HzPWuOHM/qVjVYhjmgfBKyUXQsI+9+SdI5l+5E0S98bUHirf1NoTynfrAPb0kr0oJKg/JFdFSlZwq7FnqLttvw==", + "requires": { + "async": "~0.9.0", + "glob": "~7.0.3", + "lodash": "~4.11.1", + "ssh2": "~0.4.10" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/async/-/async-0.9.2.tgz", + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.0.6.tgz", + "integrity": "sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lodash": { + "version": "4.11.2", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.11.2.tgz", + "integrity": "sha512-kzYAjjUS0vKRLVcNZgK2k7NJOT5cQoFO3w8ddED6mDBdgu3AIL9xhAktXJ5Dm6GD1x+eqqyu1wKAzEt8Uq77NQ==" + } + } + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", @@ -7833,8 +7887,7 @@ "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "sirv": { "version": "2.0.3", @@ -8005,6 +8058,71 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "ssh2": { + "version": "0.4.15", + "resolved": "https://registry.npmmirror.com/ssh2/-/ssh2-0.4.15.tgz", + "integrity": "sha512-/KEtwbNly4LtP92bBfgY4RCj8YAvKaXg89nLaCINNMu1X5d++W5DOZz+yX2xwjlSmdw8we7AC9LYnAzBkA4OwA==", + "requires": { + "readable-stream": "~1.0.0", + "ssh2-streams": "~0.0.22" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, + "ssh2-streams": { + "version": "0.0.23", + "resolved": "https://registry.npmmirror.com/ssh2-streams/-/ssh2-streams-0.0.23.tgz", + "integrity": "sha512-llhegJ0WOuEZQoWvh+ZB/ZQpJNjuDVPVAh+UjIsi0YLM7GeKPX7xMnh5LJtjOBAChumuUg7hNfIUfKjrxfNNYg==", + "requires": { + "asn1": "~0.2.0", + "readable-stream": "~1.0.0", + "streamsearch": "~0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, "ssr-window": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-2.0.0.tgz", @@ -8037,6 +8155,11 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==" + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", @@ -8061,7 +8184,6 @@ "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -8104,7 +8226,6 @@ "version": "5.5.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -8715,7 +8836,6 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, "requires": { "defaults": "^1.0.3" } @@ -9074,8 +9194,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { "version": "7.5.9", diff --git a/hd-glasses-app/package.json b/hd-glasses-app/package.json index 7e3e7c3..5022337 100644 --- a/hd-glasses-app/package.json +++ b/hd-glasses-app/package.json @@ -6,13 +6,16 @@ "local-server": "vue-cli-service serve --mode local", "serve": "vue-cli-service serve --mode dev", "prod-serve": "vue-cli-service serve --mode hd", - "build:hd": "vue-cli-service build --mode hd", + "build:hd": "vue-cli-service build --mode hd && node deployHD.js", "build:online": "vue-cli-service build --mode dev", "lint": "vue-cli-service lint" }, "dependencies": { "amfe-flexible": "^2.2.1", "axios": "^1.5.1", + "scp2": "^0.5.0", + "ora": "^4.0.0", + "chalk": "^3.0.0", "core-js": "^3.8.3", "dayjs": "^1.11.10", "less": "^4.2.0", diff --git a/hd-glasses-app/public/srs/srs.sdk.js b/hd-glasses-app/public/srs/srs.sdk.js index a457ca6..ebe04fb 100644 --- a/hd-glasses-app/public/srs/srs.sdk.js +++ b/hd-glasses-app/public/srs/srs.sdk.js @@ -28,18 +28,25 @@ function SrsRtcPublisherAsync() { var self = {}; - self.cameraIndex=0 + self.cameraIndex = 0 self.cameraDevices = [] - self.url="" + self.url = "" + + self.turn = { + iceServers: [{ + urls: 'turns:172.16.3.19:3478', 'credential': 'huashiai', + 'username': 'huashiai' + }] + }; // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia self.constraints = { audio: true, video: { - deviceId:{ - exact:"136e115ef37b7ec8361207a61d42cd39818381aa0e99728e35eb9746bedce6b4" + deviceId: { + exact: "136e115ef37b7ec8361207a61d42cd39818381aa0e99728e35eb9746bedce6b4" }, width: {ideal: 320, max: 576} } @@ -74,15 +81,15 @@ function SrsRtcPublisherAsync() { console.log('navigator.getUserMedia error: ', error); } - self.changeCamera = async function(){ + self.changeCamera = async function () { // console.log('navigator.getUserMedia') // console.log(self.cameraDevices) - self.cameraIndex=self.cameraIndex+1==self.cameraDevices.length?0:self.cameraIndex+1 - let deviceId={ - exact:"" + self.cameraIndex = self.cameraIndex + 1 == self.cameraDevices.length ? 0 : self.cameraIndex + 1 + let deviceId = { + exact: "" } - deviceId.exact=self.cameraDevices[self.cameraIndex].deviceId - self.constraints.video.deviceId=deviceId + deviceId.exact = self.cameraDevices[self.cameraIndex].deviceId + self.constraints.video.deviceId = deviceId self.publish(self.url) @@ -110,16 +117,15 @@ function SrsRtcPublisherAsync() { // or any other information, will pass-by in the query: // webrtc://r.ossrs.net/live/livestream?vhost=xxx // webrtc://r.ossrs.net/live/livestream?token=xxx - self.publish = async function (url,constraints={}) { + self.publish = async function (url, constraints = {}) { - self.url=url; + self.url = url; var conf = self.__internal.prepareUrl(url); self.pc.addTransceiver("audio", {direction: "sendonly"}); self.pc.addTransceiver("video", {direction: "sendonly"}); - var stream = await navigator.mediaDevices.getUserMedia(constraints); // @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack @@ -319,7 +325,7 @@ function SrsRtcPublisherAsync() { } }; - self.pc = new RTCPeerConnection(null); + self.pc = new RTCPeerConnection(self.turn); // To keep api consistent between player and publisher. // @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack diff --git a/hd-glasses-app/src/pages/call_room.vue b/hd-glasses-app/src/pages/call_room.vue index 5300b80..0bce2c0 100644 --- a/hd-glasses-app/src/pages/call_room.vue +++ b/hd-glasses-app/src/pages/call_room.vue @@ -46,8 +46,8 @@ import axios from "axios"; import Swiper from 'swiper'; // 注意引入的是Swiper import 'swiper/css/swiper.min.css' // 注意这里的引入 import {Notify, Dialog} from 'vant'; - -import {getStatisFileUrl} from '../utils/publicFun' +import service from "@/utils/service"; +import {getStatisFileUrl, getUrlParam} from '../utils/publicFun' /* eslint-disable */ export default { @@ -93,21 +93,30 @@ export default { console.log(location.href) console.log(location.href) - this.isPublish = this.$route.query.isPublish; - this.isPlayer = this.$route.query.isPlayer; - this.uid = this.$route.query.uid; - this.roomId = this.$route.query.room; - this.inviteName = this.$route.query.inviteName || ''; - this.topVideo = this.uid; - this.showConfirmDialog = this.$route.query.showConfirmDialog; - this.showInviteConfirmDialog = this.$route.query.showInviteConfirmDialog; - + this.isPublish = getUrlParam("isPublish"); + this.isPlayer = getUrlParam("isPlayer"); + this.uid = getUrlParam("uid"); + this.uname = getUrlParam("uname"); + this.roomId = getUrlParam("room"); + this.inviteName = getUrlParam("inviteName"); + console.log("this.inviteName" + this.inviteName) + this.topVideo = getUrlParam("uid"); + this.showConfirmDialog = getUrlParam("showConfirmDialog"); + this.showInviteConfirmDialog = getUrlParam("showInviteConfirmDialog"); this.voiceImg = getStatisFileUrl("/media/voice_open.png") this.cameraImg = getStatisFileUrl("/media/camera_open.png") this.switchCameraImg = getStatisFileUrl("/media/switch.png") this.callDwonImg = getStatisFileUrl("/media/call_down.png") + if (getUrlParam("hasVideo") != 1) { + // hasVideo + this.constraints.video = false + this.isCloseCamera = true + this.cameraImg = getStatisFileUrl("/media/camera_close.png") + + } + this.token = this.$route.query.token || ""; if (this.token > 10) { localStorage.setItem("hd_token", this.token) @@ -130,12 +139,17 @@ export default { Dialog.confirm({ title: '提示', message: `确认是否发起视频聊天?`, + }).then(() => { + console.log("确认") + try { + this.init(); + } catch (e) { + console.log(e) + } + // on confirm }) - .then(() => { - this.init(); - // on confirm - }) .catch(() => { + console.log("取消") window.history.go(-1); // on cancel }); @@ -190,6 +204,7 @@ export default { this.beginPublish() }, closeCamera() { + this.constraints.video = false; //如果视频是开启状态 if (!this.isCloseCamera) { @@ -198,7 +213,7 @@ export default { this.cameraImg = getStatisFileUrl("/media/camera_close.png") } else { let deviceId = { - exact: "" + exact: this.cameraDevices[this.cameraIndex].deviceId } deviceId.exact = this.cameraDevices[this.cameraIndex].deviceId this.constraints.video = {} @@ -206,6 +221,8 @@ export default { this.isCloseCamera = false this.cameraImg = getStatisFileUrl("/media/camera_open.png") } + console.log(this.constraints) + // return; this.beginPublish() }, switchCamera() { @@ -327,7 +344,7 @@ export default { video.onloadedmetadata = function (e) { if (publishId == _this.uid) video.volume = 0 - video.play(); + video.play(); }; // $('#rtc_media_player').prop('srcObject', sdk.stream); @@ -444,14 +461,40 @@ export default { }, videoDownAction() { - location.href = "uniwebview://action?function=restartCamera"; - this.publishSdk.close(); - if (this.showConfirmDialog == 1) { - console.log("挂断视频") - location.href = "uniwebview://action?function=refuseVideoInvite"; - } else { - window.history.go(-1); + const roomInfo = { + roomId: this.roomId } + + console.log("============videoDownAction") + console.log("============videoDownAction") + console.log("============videoDownAction") + + service.post(`/api/im/app/wsMsg`, { + msgType: "10000", + msgId: JSON.stringify(roomInfo), + cmd: "hangUp", + msgTxt: this.uname || "" + }).then((res) => { + if (res.status == 200) { + + } + }) + + try { + // location.href = "uniwebview://action?function=restartCamera"; + // location.href = "uniwebview://action?function=refuseVideoInvite"; + // + // this.publishSdk.close(); + // if (this.showConfirmDialog == 1) { + // console.log("挂断视频") + // location.href = "uniwebview://action?function=refuseVideoInvite"; + // } else { + // window.history.go(-1); + // } + } catch (e) { + console.log(e) + } + } } } diff --git a/hd-glasses-app/src/pages/hd_map.vue b/hd-glasses-app/src/pages/hd_map.vue index 3ebf9f5..f173465 100644 --- a/hd-glasses-app/src/pages/hd_map.vue +++ b/hd-glasses-app/src/pages/hd_map.vue @@ -59,7 +59,7 @@ import * as interaction from 'ol/interaction'; // 交互 import {OL as ol} from "plot-ol/plottingol"; import GeoJSON from 'ol/format/GeoJSON' import service from "@/utils/service"; -import {appInit, getStatisFileUrl} from "../utils/publicFun"; +import {appInit, getStatisFileUrl, getUrlParam} from "../utils/publicFun"; export default { @@ -131,12 +131,11 @@ export default { this.page = this.$route.query.page; this.pageType = this.$route.query.type; - this.token = this.$route.query.token || ""; - if (this.token > 10) { + this.token = getUrlParam("token") + if (this.token !=null) { localStorage.setItem("hd_token", this.token) } - setInterval(() => { let hd_gps_location = localStorage.getItem("hd_gps_location") if (hd_gps_location) { @@ -580,6 +579,7 @@ export default { pageNo: 1, pageSize: 50 } + }).then((res) => { if (res.status == 200) { this.map.removeLayer(this.equipmentLayer) @@ -739,11 +739,19 @@ export default { // anchor: [0.5, 0.5], scale: 0.4, }), + text: new Text({ + testAlign: 'center', + text: [record.equipmentName, 'bold 16px sans-serif', '\n',''], + font: 'bold 20px 微软雅黑', + fill: new Fill({ + color: 'rgb(155, 155, 155)', + }), + offsetY: 36 + }) }) ); } - if (record.isOnline == "true") { // 未接受告警数量为0,全部都接受 绿色 if(alarmNum==0){ @@ -755,6 +763,14 @@ export default { // anchor: [0.5, 0.5], scale: 0.4, }), + text: new Text({ + testAlign: 'center', + text: [record.equipmentName, 'bold 16px sans-serif', '\n',''], + font: 'bold 20px 微软雅黑', + fill: new Fill({ + color: 'rgb(22, 206, 129)', + }) + }) }) ); } @@ -769,10 +785,10 @@ export default { }), text:new Text({ testAlign: 'center', - text: `${alarmNum}条告警未接受`, + text: [record.equipmentName, 'bold 16px sans-serif', '\n','',`${alarmNum}条告警未接受`, 'bold 16px sans-serif',], font: 'bold 16px 微软雅黑', fill: new Fill({ - color: '#369FFF', + color: 'rgb(54, 159, 255)', }), // offsetX: 40, offsetY: 26 diff --git a/hd-glasses-app/src/pages/hd_show_patrolTmp_history.vue b/hd-glasses-app/src/pages/hd_show_patrolTmp_history.vue index f07cf4c..cd4ddf0 100644 --- a/hd-glasses-app/src/pages/hd_show_patrolTmp_history.vue +++ b/hd-glasses-app/src/pages/hd_show_patrolTmp_history.vue @@ -158,8 +158,14 @@ export default { this.moveUserId = this.$route.query.uerId||getUrlParam("uerId"); this.workOrderNo = this.$route.query.workOrderNo||getUrlParam("workOrderNo"); - this.token = this.$route.query.token ||getUrlParam("page"); - localStorage.setItem("hd_token", this.token) + if(this.token!=null){ + if (this.token.length > 16) { + console.log("获取到token") + localStorage.setItem("hd_token", this.token) + }else { + console.log("未获取到token") + } + } setInterval(() => { diff --git a/hd-glasses-app/src/pages/hd_show_patrol_history.vue b/hd-glasses-app/src/pages/hd_show_patrol_history.vue index b6d6b02..bcc4945 100644 --- a/hd-glasses-app/src/pages/hd_show_patrol_history.vue +++ b/hd-glasses-app/src/pages/hd_show_patrol_history.vue @@ -177,8 +177,8 @@ export default { this.token = getUrlParam("token") - if(this.token){ - if (this.token.length > 10) { + if(this.token!=null){ + if (this.token.length > 16) { console.log("获取到token") localStorage.setItem("hd_token", this.token) }else { diff --git a/hd-glasses-app/src/utils/publicFun.js b/hd-glasses-app/src/utils/publicFun.js index 8d180e9..40b314c 100644 --- a/hd-glasses-app/src/utils/publicFun.js +++ b/hd-glasses-app/src/utils/publicFun.js @@ -17,11 +17,10 @@ export function getUrlParam(name) { if (search) { var r = search.substr(0).match(reg); if (r !== null) { - return unescape(r[2]); + return decodeURIComponent(r[2]); } return null; } else return null; - } diff --git a/hs-im-server/build/im-service-1.0.0-SNAPSHOT.jar b/hs-im-server/build/im-service-1.0.0-SNAPSHOT.jar index 27fdab7..c21291e 100644 Binary files a/hs-im-server/build/im-service-1.0.0-SNAPSHOT.jar and b/hs-im-server/build/im-service-1.0.0-SNAPSHOT.jar differ diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/file/FileController.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/file/FileController.java index 8c40c5d..14de227 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/file/FileController.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/file/FileController.java @@ -30,7 +30,13 @@ public class FileController { @PostMapping("/upload") public ResponseVO PostMapping(@RequestParam("file") MultipartFile file) { - final String upload = MinioUtil.upload(file, "/test"); + String upload = MinioUtil.upload(file, "/test"); + log.info("====================Upload=================="); + log.info("====================Upload=================="); + log.info("====================Upload=================="); + + upload = upload.replaceAll("http://172.16.2.1:9000","https://172.16.2.3:19443"); + return ResponseVO.successResponse(upload); } diff --git a/im-uniapp/App.vue b/im-uniapp/App.vue index 3fa5df6..48374f2 100644 --- a/im-uniapp/App.vue +++ b/im-uniapp/App.vue @@ -15,107 +15,29 @@ export default { onLaunch: function() { localStorage.setItem("appId",10000) + appInit(500).then((res)=>{ console.log("获取到token,创建长链接") this.$store.dispatch('getAddressList'); setTimeout(()=>{ this.$socketTask.connectSocket() - },2500) + uni.setStorageSync("initReady",1) + },1000) }).then((error)=>{ console.log("未获取到IM的token") + console.log(error) }) - // #ifdef H5 - console.log( - `%c 考拉Team ${name} %c v${version} `, - 'background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff', - 'background:#007aff ;padding: 1px; border-radius: 0 3px 3px 0; color: #fff; font-weight: bold;' - ) + console.log(consoleImgs.fz) // todo 下列两行 uni.setStorageSync('device', 'H5'); uni.setStorageSync('version', versionName); - // #endif - console.log('App Launch') - let token= uni.getStorageSync('imUserSign'); - if (!token) { - //不存在则跳转至登录页 - // #ifdef APP-PLUS - plus.navigator.closeSplashscreen(); - // #endif - } else { - // #ifdef H5 - this.$socketTask.connectSocket() - // #endif - this.$store.dispatch('get_UserInfo').then(res=>{ - // #ifdef APP-PLUS - var nickName=res.nickName - var portrait=res.portrait - this.$http.request({ - url: '/trtc/getSign', - success: (res) => { - var sdkAppID=res.data.data.appId - var userID=res.data.data.userId - var userSig=res.data.data.sign - TUICalling.login({//登录音视频 - sdkAppID: sdkAppID, - userID: userID, - userSig: userSig - },(res) => { - console.log('音视频登录成功') - TUICalling.setUserNickname({ - nickName: nickName - }) - TUICalling.setUserAvatar({ - avatar: portrait - }) - plus.io.requestFileSystem(plus.io.PRIVATE_WWW, function(fs) { - fs.root.getFile('/static/longcall.mp3', { - create: false - }, function(fileEntry) { - fileEntry.file(function(file) { - TUICalling.setCallingBell({ - ringtone: file.fullPath - },(res) => { - console.log(JSON.stringify(res)) - }) - }); - }); - }); - - }) - } - }); - var nowCid=plus.push.getClientInfo().clientid - this.$http.request({ - url: '/my/bindCid/'+nowCid, - success: (res) => { - console.log('新cid'+nowCid) - uni.setStorageSync('cid', nowCid); - } - }); - // #endif - }) - uni.reLaunch({ - url: "wx/tabbar1/index", - }).then(res=>{ - // #ifdef APP-PLUS - plus.navigator.closeSplashscreen(); - // #endif - }) - } - // #ifdef APP-PLUS - - uni.onNetworkStatusChange( (res)=> { - if(res.isConnected){ - this.$store.dispatch('get_UserInfo') - } - }); - // #endif }, onShow: function() { console.log('App Show') + uni.getStorage({ key: 'call', success: (res) => { diff --git a/im-uniapp/common/config.js b/im-uniapp/common/config.js index 097202b..82c9d00 100644 --- a/im-uniapp/common/config.js +++ b/im-uniapp/common/config.js @@ -11,6 +11,7 @@ export default class config{ } } } + static getBaseApiUrl(){ //return process.env.NODE_ENV === 'development' ? 'http://119.45.242.222:8989' :'http://172.16.2.3:8989'; return process.env.NODE_ENV === 'development' ? 'http://119.45.242.222:8989' :'/base_api'; @@ -22,14 +23,14 @@ export default class config{ static getImAppId(){ return 10000; } - static getVideoRoomUrl(room,userid,isPublish=0,isPlayer=1){ + static getVideoRoomUrl(room,userid,isPublish=0,isPlayer=1,hasVideo=1){ if(process.env.NODE_ENV === 'development' ){ - return `http://localhost:8080/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}` + return `http://localhost:8080/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}&hasVideo=${hasVideo}` }else{ if(this.prod=="online"){ - return `https://119.45.242.222/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}` + return `https://119.45.242.222/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}&hasVideo=${hasVideo}` }else{ - return `https://172.16.3.19/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}` + return `https://172.16.3.19/hd-glasses-app/#/call_room?showInviteConfirmDialog=1&isPublish=${isPublish}&isPlayer=${isPlayer}&uid=${userid}&room=${room}&hasVideo=${hasVideo}` } } } diff --git a/im-uniapp/common/socketTask.js b/im-uniapp/common/socketTask.js index 635ab64..7e243b2 100644 --- a/im-uniapp/common/socketTask.js +++ b/im-uniapp/common/socketTask.js @@ -73,6 +73,7 @@ export default { const userId = uni.getStorageSync("userId") + const imUserSign = uni.getStorageSync("imUserSign") var listeners = {}; @@ -95,6 +96,16 @@ export default { console.log(this.socketTask) console.log('sdk 成功连接的回调, 可以使用 sdk 请求数据了.'); + + + sdk.getSingleUserInfo(userId).then(res=>{ + console.log("获取到自己的用户信息") + console.log(res) + if(res.code==200){ + uni.setStorageSync('userInfo', res.data); + } + }) + // sdk.getAllFriend().then(res => { // console.warn(res) // }) @@ -106,9 +117,7 @@ export default { console.warn(res) }) - return uni.switchTab({ - url: "/pages/tabbar/index/index" - }) + } else { console.log('sdk 初始化失败.'); } diff --git a/im-uniapp/common/utils.js b/im-uniapp/common/utils.js index b28f111..ad7ee42 100644 --- a/im-uniapp/common/utils.js +++ b/im-uniapp/common/utils.js @@ -1,22 +1,3 @@ -/** - * getUrlKey 截取地址栏参数 - * @param value - * @returns {String} - */ -export function getUrlParam(name) { - var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); - let url = window.location.href.split('#')[0]; - let search = url.split('?')[1]; - console.log(search); - if (search) { - var r = search.substr(0).match(reg); - if (r !== null) { - return unescape(r[2]); - } - return null; - } else return null; - -} export function appInit(ms) { return new Promise((resolve, reject) => { @@ -26,6 +7,7 @@ export function appInit(ms) { var hd_userId = uni.getStorageSync("hd_userid") if(hd_userId){ uni.setStorageSync("userId",hd_userId) + }else{ console.log("============未获取到hd_userid") } @@ -46,9 +28,29 @@ export function appInit(ms) { resolve("ok") } - } + }else{ + uni.setStorageSync("initReady",null) + } }, ms); }) } +/** + * getUrlKey 截取地址栏参数 + * @param value + * @returns {String} + */ +export function getUrlParam(name) { + var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); + let url = window.location.href + let search = url.split('?')[1]; + console.log(search); + if (search) { + var r = search.substr(0).match(reg); + if (r !== null) { + return unescape(r[2]); + } + return null; + } else return null; +} \ No newline at end of file diff --git a/im-uniapp/wx/chatWindow/index.vue b/im-uniapp/wx/chatWindow/index.vue index 00e60e1..04fd82d 100644 --- a/im-uniapp/wx/chatWindow/index.vue +++ b/im-uniapp/wx/chatWindow/index.vue @@ -436,56 +436,74 @@ } }); }, - sendVideoCall() { + sendVideoCall(hasVideo = 1) { //发起视频 uni.showLoading({ - title: '发起视频通话' + title: '发起通话' }); - var formdata = { - userId: this.talkTo.userId, - msgType: 'TRTC_VIDEO_START', - content: 'TRTC_VIDEO_START' - }; - // this.sendMsg(formdata,formdata.msgType) + var formdata = null; - const userId=localStorage.getItem("userId") - - const roomId=userId - - const roomInfo={ - roomId:userId,//后面改成发起人的手机号或者id - roomName:`${userId}发起的视频聊天`, - creatorId:userId, - creatorName:userId, - publishId:userId, - publishName:userId, - isOver:0, - webrtcUrl:config.getSRSUrl()+`/${roomId}/${userId}`, - type:"webrtc", - offline:0, - invitedUserList:[this.talkTo.userId] + if (hasVideo == 1) { + formdata = { + userId: this.talkTo.userId, + msgType: 'TRTC_VIDEO_START', + content: 'TRTC_VIDEO_START' + } + } else if (hasVideo == 0) { + formdata = { + userId: this.talkTo.userId, + msgType: 'TRTC_VOICE_START', + content: 'TRTC_VOICE_START' + } } + + + // this.sendMsg(formdata,formdata.msgType) + + const userId = localStorage.getItem("userId") + + const roomId = userId + + const userInfo = uni.getStorageSync("userInfo") + const roomInfo = { + roomId: userId, //后面改成发起人的手机号或者id + roomName: `${userInfo.nickName}发起的视频聊天`, + creatorId: userId, + creatorName: userInfo.nickName, + publishId: userId, + publishName: userInfo.nickName, + isOver: 0, + webrtcUrl: config.getSRSUrl() + `/${roomId}/${userId}`, + type: "webrtc", + offline: 0, + invitedUserList: [this.talkTo.userId], + hasVideo:hasVideo, + isForce:0 + } + this.$store .dispatch('createRoom', roomInfo) .then(res => { - customHttp.customHttp.post("/api/im/app/wsMsg",{ - msgType:"10000", - msgId:JSON.stringify(roomInfo), - cmd:"", - msgTxt:"" - },{ + customHttp.customHttp.post("/api/im/app/wsMsg", { + msgType: "10000", + msgId: JSON.stringify(roomInfo), + cmd: "", + msgTxt: "" + }, { dataType: 'json', - custom: {target: "znzq"} , - }).then((res1)=>{ - location.href=config.getVideoRoomUrl(roomInfo.roomId,roomInfo.creatorId,1,1) + custom: { + target: "znzq" + }, + }).then((res1) => { + location.href = config.getVideoRoomUrl(roomInfo.roomId, roomInfo.creatorId, 1, 1,hasVideo) }) }) - if(1>0){ - return false; - } - this.$http.request({ + if (1 > 0) { + return false; + } + this.$http.request({ url: '/chat/sendMsg', method: 'POST', data: JSON.stringify(formdata), @@ -540,22 +558,21 @@ this.open(); break; case '音视频': - this.sendVideoCall(); - // uni.showActionSheet({ - // itemList: ['视频通话', '语音通话'], - // success: res => { - // switch (res.tapIndex) { - // case 0: - // this.sendVideoCall(); - // break; - // case 1: - // this.sendVoiceCall(); - // break; - // default: - // break; - // } - // } - // }); + uni.showActionSheet({ + itemList: ['视频通话', '语音通话'], + success: res => { + switch (res.tapIndex) { + case 0: + this.sendVideoCall(1); + break; + case 1: + this.sendVideoCall(0); + break; + default: + break; + } + } + }); break; case '收藏': this.openpopup('popupfavorites'); @@ -703,44 +720,46 @@ function sendPhoto(filePath) { //TODO //发送图片 - customHttp.upload(config.getImApiUrl() + '/file/upload', { - params: {}, /* 会加在url上 */ - // #ifdef APP-PLUS || H5 - files: [], // 需要上传的文件列表。使用 files 时,filePath 和 name 不生效。App、H5( 2.6.15+) - // #endif - // #ifdef MP-ALIPAY - fileType: 'image/video/audio', // 仅支付宝小程序,且必填。 - // #endif - filePath: filePath, // 要上传文件资源的路径。 - // 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部) - name: 'file', // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 - // #ifdef H5 || APP-PLUS - timeout: 60000, // H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+) - // #endif - header: {}, /* 会与全局header合并,如有同名属性,局部覆盖全局 */ - formData: {}, // HTTP 请求中其他额外的 form data - // 返回当前请求的task, options。请勿在此处修改options。非必填 - getTask: (task, options) => { - // task.onProgressUpdate((res) => { - // console.log('上传进度' + res.progress); - // console.log('已经上传的数据长度' + res.totalBytesSent); - // console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend); - // - // // 测试条件,取消上传任务。 - // if (res.progress > 50) { - // uploadTask.abort(); - // } - // }); - }, - //validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置。演示,非必填选项 - // return statusCode >= 200 && statusCode < 300 - //} - }).then(res => { - // 返回的res.data 已经进行JSON.parse - }).catch(err => { - - }) - + customHttp.upload(config.getImApiUrl() + '/file/upload', { + params: {}, + /* 会加在url上 */ + // #ifdef APP-PLUS || H5 + files: [], // 需要上传的文件列表。使用 files 时,filePath 和 name 不生效。App、H5( 2.6.15+) + // #endif + // #ifdef MP-ALIPAY + fileType: 'image/video/audio', // 仅支付宝小程序,且必填。 + // #endif + filePath: filePath, // 要上传文件资源的路径。 + // 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部) + name: 'file', // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 + // #ifdef H5 || APP-PLUS + timeout: 60000, // H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+) + // #endif + header: {}, + /* 会与全局header合并,如有同名属性,局部覆盖全局 */ + formData: {}, // HTTP 请求中其他额外的 form data + // 返回当前请求的task, options。请勿在此处修改options。非必填 + getTask: (task, options) => { + // task.onProgressUpdate((res) => { + // console.log('上传进度' + res.progress); + // console.log('已经上传的数据长度' + res.totalBytesSent); + // console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend); + // + // // 测试条件,取消上传任务。 + // if (res.progress > 50) { + // uploadTask.abort(); + // } + // }); + }, + //validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置。演示,非必填选项 + // return statusCode >= 200 && statusCode < 300 + //} + }).then(res => { + // 返回的res.data 已经进行JSON.parse + }).catch(err => { + + }) + _this.$http.uploadFile({ url: config.getImApiUrl() + '/file/upload', filePath: filePath, @@ -787,8 +806,8 @@ } }, sendMsg(e, msgType) { - - + + if (!e) { return; } @@ -1078,4 +1097,4 @@ justify-content: center; align-items: center; } - + \ No newline at end of file diff --git a/im-uniapp/wx/login/index.vue b/im-uniapp/wx/login/index.vue index b3f1a16..6fc1bf5 100644 --- a/im-uniapp/wx/login/index.vue +++ b/im-uniapp/wx/login/index.vue @@ -179,6 +179,7 @@ }, loginDone(data) { uni.setStorageSync('appId', data.appId); + uni.setStorageSync('im_userId', data.id); uni.setStorageSync('userId', data.id); uni.setStorageSync('im_userCSign', data.userSign); diff --git a/im-uniapp/wx/tabbar1/index.vue b/im-uniapp/wx/tabbar1/index.vue index 949df40..49aa1a0 100644 --- a/im-uniapp/wx/tabbar1/index.vue +++ b/im-uniapp/wx/tabbar1/index.vue @@ -21,7 +21,9 @@